PyTorch 1.9 版本包括移动、科学计算和分布式训练更新

1,245 阅读3分钟

PyTorch, Facebook的开源深度学习框架,宣布发布1.9版, 其中包括对科学计算、移动支持和分布式训练的改进。总体而言,自 1.8 版本以来,新版本包含超过 3,400 次提交。

PyTorch 团队在最近的一篇博文中强调了该版本的主要功能。新版本移动了 Complex Autograd 功能(音频处理的关键组件)和 torch.linalg 模块,其中包括 NumPy 的线性代数模块,稳定状态。 Beta 状态中有几个新功能,包括基于 SciPy的特殊模块 的 torch.special 模块,以及分布式训练的改进,包括 TorchElastic、ZeroRedundancyOptimizer 和 CUDA 在 RPC 中的支持。该版本包括移动应用程序的多项更新,包括测试版移动解释器、PyTorch 运行时的轻量级版本,以及新的 推理模式API,它在使用模型进行推理时提供了“显着的加速”。

PyTorch 的 linalg 模块 旨在作为 NumPy 的线性代数模块的“直接”替代品,但具有 PyTorch 的加速和 autograd 支持。该模块具有 26 个复制 NumPy API 的运算符,以及现有 PyTorch 运算符的“更快、更易于使用”版本。由于 NumPy 是 Python 中矩阵计算的“事实上的标准”,使用现有科学计算代码的开发人员可以利用 PyTorch 实现,共同由 NVIDIA 开发,利用 CUDA 和 GPU 来更快地执行矩阵代数。新的 special 模块同样实现了流行的科学计算 API,即 SciPy 的特殊模块,其中包括许多高级数学函数的实现,例如贝塞尔函数和椭圆函数,以及几种常见的概率分布。

新的 Mobile Interpreter 是该框架的“最受欢迎的功能之一”。解释器减少了部署到资源有限平台(例如移动和边缘设备)的深度学习模型的大小。模型尺寸最多可减少 75%;例如,PyTorch 团队将包含数百万个参数的 MobileNetV2 模型压缩到 2.6 MB。 1.9 版本为 iOS 和 Android 提供了预构建的解释器库,简化了与应用程序的集成。该版本还包括用于移动设备的 TorchVision 库以及用于iOSAndroid的几个演示app的demo)。

用于管理分布式 PyTorch 工作进程的 TorchElastic 库已从独立项目移至 PyTorch 核心。 TorchElastic 已经在多个大规模 PyTorch 项目中使用,包括 DeepSpeedPyTorch Lightning。新版本还引入了 Microsoft 的 ZeroRedundancyOptimizer 的测试版实现,它减少了大型模型的内存需求和 CUDA RPC,分布式集群中工作人员之间更有效的通信渠道。

在关于 Reddit 发布的讨论中,一位用户对新的推理模式表示失望,指出,

我真的希望推理模式类似于 TensorRT,但它看起来不是,并且暂时仅限于 C++。 .. 我真的很欣赏一种更简单的方法来获得 TensorRT 能够实现的那种加速,也许将 Torch2TRT 之类的东西移动到 Torch 本身中。

PyTorch 代码和版本 1.9 发行说明 可在 GitHub 上找到。