当前位置: 首页 > 科技观察

Torch7开源PyTorch:Python优先的深度学习框架

时间:2023-03-15 13:45:42 科技观察

PyTorch是一个Python包,它提供了两个高级功能:使用强大的GPU加速Tensor计算(类似于numpy)来构建基于磁带的深度学习。autograd系统如果需要,您还可以通过重用您最喜欢的Python包(例如numpy、scipy和Cython)来扩展PyTorch。此版本目前是早期测试版,我们很快就会添加更多功能。PyTorch简介在粒度级别,PyTorch库由以下组件组成:PyTorch通常用于两个原因:作为numpy的替代品,以便使用强大的GPU;一个追求速度的深度学习研究平台。进一步阐述:ATensorlibrarywithGPUsupport如果你使用numpy,那么你已经使用了Tensor(即ndarray)。PyTorch提供了同时支持CPU和GPU的Tensors,可以极大地加速计算。我们提供多种张量加速例程,可以满足您各种科学计算需求,如切片、索引、数学运算、线性代数、归约。而且他们的速度非常快!动态神经网络:基于磁带的autogradPyTorch有一种构建神经网络的独特方式:使用和重放录音机。TensorFlow、Theano、Caffe和CNTK等大多数框架都具有静态世界观,迫使人们构建神经网络,然后一遍又一遍地使用相同的结构;改变网络的行为需要完全从头开始。但是使用PyTorch,通过我们称为“反向模式自动微分”的技术,您可以零延迟或零成本任意更改网络的行为。我们受到许多关于该主题的研究论文以及当前和过去的研究成果的启发,例如autograd、autograd、Chainer等。autograd:https://github.com/twitter/torch-autogradautograd:https://github.com/HIPS/autogradChainer:http://chainer.org/虽然这个技术不是PyTorch独有的,但它仍然是最快的实施至今。您的疯狂研究将获得无与伦比的速度和灵活性。Python优先的PyTorch并不是简单地将Python绑定到整个C++框架之上。它深深地建立在Python之上。您可以像使用numpy/scipy/scikit-learn一样轻松地使用PyTorch。您可以使用您喜欢的库和包(例如Cython和Numba)在Python中编写新的神经网络层。我们的目标是尽可能避免您重新发明轮子。命令式体验PyTorch被设计为线性、直观且易于使用。当你需要执行一行代码时,它会忠实地执行它。PyTorch没有异步世界观。当您打开调试器或收到错误代码和堆栈跟踪时,您会发现很容易理解这些消息。堆栈跟踪点将直接指向代码定义的确切位置。我们不希望您因为错误的指针或异步和不透明引擎而浪费时间进行调试。FastLeanPyTorch有一个轻量级的框架。我们集成了IntelMKL、NVIDIA的CuDNN、NCCL等各种加速库来优化速度。在其核心,其CPU和GPU张量以及神经网络后端(TH、THC、THNN、THCUNN)是使用C99API作为单独的库编写的。这个配置很成熟,我们已经用了很多年了。因此,PyTorch非常高效——无论你需要运行什么规模的神经网络。在PyTorch中,内存使用比在Torch或其他地方更有效。我们为GPU编写了自定义内存分配器,以确保深度学习模型在运行时具有最佳内存效率,这意味着使用相同的硬件,您可以训练比以前更复杂的深度学习模型。轻松扩展和编写新的神经网络模块,或者与PyTorch的TensorAPI连接的设计非常简单,也不会太抽象。您可以使用TorchAPI或您最喜欢的基于numpy的库(例如Scipy)在Python中编写新的神经网络层。如果你想用C++编写网络层,我们提供了一个基于cffi(http://cffi.readthedocs.io/en/latest/)的扩展API,它非常高效并且样板更少。无需编写任何包装代码。这里有一个例子:https://github.com/pytorch/extension-ffi安装二进制Anacondacondainstallpytorchtorchvision-csoumithInstructionsfromsourceAnacondaenvironment如果你想编译支持CUDA,安装:NVIDIACUDA7.5orabove的版本NVIDIACuDNNv5.x安装可选依赖包exportCMAKE_PREFIX_PATH=[anacondarootdirectory]condainstallnumpymklsetuptoolscmakegcccfficondainstall-csoumithmagma-cuda75#ormagma-cuda80ifCUDA8.0安装PyTorchexportMACOSX_DEPLOYMENT_TARGET=10.9#ifOSXpipinstall-rrequirements.txtpythonsetup.pyinstall开始使用从以下三点开始学习使用PyTorch:教程:PyTorch入门教程(https://github.com/pytorch/tutorials)。示例:易于理解跨所有域的PyTorch代码(https://github.com/pytorch/examples)。API参考:http://pytorch.org/docs/交流论坛:讨论实施、研究等(http://discuss.pytorch.org)GitHub问题反馈:错误通知、功能请求、安装问题、RFC、想法等Slack:平时聊天、在线讨论、协作等(https://pytorch.slack.com/)。邮件订阅没有骚扰信件,单向邮件推送PyTorch重要通知。订阅:http://eepurl.com/cbG0rv。发布和贡献PyTorch的发布周期(主要版本)为90天。当前版本是v0.1.6Beta,我们希望在发布前尽量减少错误。如果您发现Bug,请提交给我们:https://github.com/pytorch/pytorch/issues如果您愿意为PyTorch贡献新特性、实用功能或核心扩展,请打开一个问题与大家讨论.请注意:未经讨论而提交的PR可能会导致退回,因为我们可能会以不同的方式解决它们。在下一个版本中,我们计划引入三个新特性:分布式PyTorch(这里已经是一个初步的实现:https://github.com/apaszke/pytorch-dist)反逆向(BackwardofBackward):进行流程优化在反向传播期间。一些过去和最近的研究,如DoubleBackprop和UnrolledGANs将需要这个属性。autograd的惰性执行引擎:这将使我们能够通过引入缓存和JIT编译器来优化autograd代码。开发团队PyTorch是由经验丰富的工程师和研究人员开发的社区驱动项目。目前,PyTorch由AdamPaszke、SamGross和SoumithChintala领导。其他主要贡献者包括SergeyZagoruyko、AdamLerer、FranciscoMassa、AndreasKopf、JamesBradbury、ZemingLin、TianYuandong、GuillaumeLample、MaratDukhan、NataliaGimelshein等。