设备|PyTorch 1.9发布,支持新API,可在边缘设备中执行

机器之心报道
编辑:陈萍

PyTorch 团队发布了 PyTorch 1.9 版本 。 该版本整合了 1.8 版本发布以来的 3,400 多次 commit , 398 名贡献者参与更新 。 提供了包括支持科学计算、前端 API、大规模分布式训练等主要改进和新特性 。
近年来 , 深度学习框架 PyTorch 凭借着其对初学者的友好性和灵活性 , 发展迅猛 。 不久之前 , PyTorch 官方博客发布 1.8 版本 , 此版本由 1.7 发布以来的 3000 多个 commit 组成 , 重要更新内容包括在编译、代码优化和科学计算前端 API 方面的优化和改进 , 以及通过 pytorch.org 提供的二进制文件来支持 AMD ROCm 。
现在 PyTorch 官方宣布 PyTorch 1.9 发布了!

设备|PyTorch 1.9发布,支持新API,可在边缘设备中执行
文章图片

完整文档地址:
https://pytorch.org/blog/pytorch-1.9-released/
GitHub 地址:
https://github.com/pytorch/pytorch/releases
自 PyTorch 1.8 版本发布以来 , 本次新版本的发布包含了 3,400 多个 commit , 398 名贡献者参与更新 。 本次新版的更新 , 主要包含以下亮点:
  • 支持科学计算方面的重大改进 , 现已支持 torch.linalg、torch.special 以及 Complex Autograd;
  • 使用 Mobile Interpreter 对设备上的二进制大小进行重大改进;
  • 通过 TorchElastic 向 PyTorch Core 上游提供对弹性容错训练的本地支持;
  • PyTorch RPC 框架的更新 , 以支持 GPU 的大规模分布式训练;
  • 为模型推理部署优化性能和封装的新 API;
  • 支持 PyTorch Profiler 中的分布式训练、GPU 利用率和 SM efficiency 。
(注:从 PyTorch 1.6 版本开始 , PyTorch 特性分为 Stable(稳定版)、Beta(测试版)和 Prototype(原型版) 。
此外 , 除了 PyTorch 1.9 的发布 , 该团队还发布了 PyTorch 库的主要更新 。
PyTorch 库更新地址:
https://pytorch.org/blog/pytorch-1.9-new-library-releases/
PyTorch 1.9 新特性
前端 API
torch.linalg:在 PyTorch 1.9 中 ,torch.linalg 模块正在向稳定版本靠近 。 线性代数对深度学习和科学计算至关重要 , torch.linalg 模块扩展了 PyTorch 对线性代数的支持 , 实现了 NumPy 的线性代数模块(现在支持 accelerators 和 autograd)中的每一个函数等等 。
为了帮助调试和编写程序 , PyTorch 1.9 包含了
torch.use_determinstic_algorithms option 。 启用此设置后 , 如果可能 , 操作的行为将是确定性的;如果操作的行为不可确定 , 则抛出运行时错误 。 以下是几个例子:

设备|PyTorch 1.9发布,支持新API,可在边缘设备中执行
文章图片

PyTorch Mobile
PyTorch 团队正在发布 Mobile Interpreter , 一个 PyTorch 运行时的简化版本 , beta 版 。 Interpreter 将在边缘设备中执行 PyTorch 程序 , 减少二进制大小的占用 。
TorchVision 库:从 PyTorch 1.9 开始 , 用户可以在 iOS/Android 应用程序上使用 TorchVision 库 。 Torchvision 库包含了 C++ 的 Torchvision 操作 , 需要与 iOS 的主 PyTorch 库链接在一起 , 对于 Android , 可以将其作为一个 gradle 依赖添加 。 这允许使用 TorchVision 预先构建的 MaskRCNN 操作符进行对象检测和分割 。
PyTorch 团队正在发布一个基于 PyTorch Video 库的新视频应用程序和一个基于最新 torchaudio、wave2vec 模型的更新语音识别应用程序 。 这两个版本都可以在 iOS 和 Android 上使用 。 此外 , 研究团队还更新了 7 个计算机视觉和 3 个自然语言处理演示应用程序 , 包括 HuggingFace DistilBERT 和 DeiT Vision transformer 模型 , 以及 PyTorch Mobile v1.9 。 随着这两个应用程序的加入 , 现在提供了一整套演示应用程序 , 包括图像、文本、音频和视频 。

设备|PyTorch 1.9发布,支持新API,可在边缘设备中执行
文章图片

分布式训练
TorchElastic 现在是 PyTorch 核心的一部分 。 可以让 PyTorch 分布式训练具备弹性伸缩与自动容错的能力 。
当分布式训练中某个 worker 发生异常错误 (如机器宕机)、高优先级任务抢占资源等情况时 , 支持 worker 重启或转移而不需要停止训练 。 可以先运行在最小资源集合下 , 当有更多空闲资源时 , 可以动态扩容 worker 数运行在更多的资源上以便提升训练效率;当部分资源因某些原因要释放时 , 也可以动态缩容 worker 数释放占用的部分资源 。
弹性 (Elastic): 可以先运行在最小资源集合下 , 当有更多空闲资源时 , 可以动态扩容 worker 数运行在更多的资源上以便提升训练效率;当部分资源因某些原因要释放时 , 也可以动态缩容 worker 数释放占用的部分资源 。
性能优化以及工具
Freezing API:模块冻结是将模块参数和属性值作为常量内联到 TorchScript 内部表示中的过程 。 这允许进一步优化和专门化程序 , 包括 TorchScript 优化 , optimize_for_mobile API 、ONNX 和其他工具都使用它 。
在模型部署时推荐 Freezing 。 这是训练、调优或调试 PyTorch 模型所必需的 。 它支持在非冻结图形上语义无效的图形融合 , 例如 fusing Conv-BN 。
PyToch 1.9 对 torch.profiler API 的支持扩展到更多版本 , 包括 Windows 和 Mac , 而不是以前的 torch.autograd.profiler API 。 新 API 支持现有的 profiler 功能 , 与 CUPTI 库(仅限 Linux)集成 , 跟踪设备 CUDA 内核 , 并支持长期运行作业 , 例如:

设备|PyTorch 1.9发布,支持新API,可在边缘设备中执行
文章图片

推理模式 API 可以显着提高推理工作负载的速度 , 同时保持安全并确保永远不会计算出不正确的梯度 。
【设备|PyTorch 1.9发布,支持新API,可在边缘设备中执行】了解更多内容 , 请参考官方文档 。

    推荐阅读