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

极市平台

共 3553字,需浏览 8分钟

 · 2021-06-18

↑ 点击蓝字 关注极市平台

来源丨机器之心
编辑丨极市平台

极市导读

 

PyTorch 团队发布了 PyTorch 1.9 版本。该版本整合了 1.8 版本发布以来的 3,400 多次 commit,398 名贡献者参与更新。提供了包括支持科学计算、前端 API、大规模分布式训练等主要改进和新特性。 >>加入极市CV技术交流群,走在计算机视觉的最前沿

近年来,深度学习框架 PyTorch 凭借着其对初学者的友好性和灵活性,发展迅猛。不久之前,PyTorch 官方博客发布 1.8 版本,此版本由 1.7 发布以来的 3000 多个 commit 组成,重要更新内容包括在编译、代码优化和科学计算前端 API 方面的优化和改进,以及通过 pytorch.org 提供的二进制文件来支持 AMD ROCm。

现在 PyTorch 官方宣布 PyTorch 1.9 发布了!


  • 完整文档地址: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 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。随着这两个应用程序的加入,现在提供了一整套演示应用程序,包括图像、文本、音频和视频。


分布式训练

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 内核,并支持长期运行作业,例如:


推理模式 API 可以显着提高推理工作负载的速度,同时保持安全并确保永远不会计算出不正确的梯度。

了解更多内容,请参考官方文档。


如果觉得有用,就请分享到朋友圈吧!

△点击卡片关注极市平台,获取最新CV干货

公众号后台回复“长尾”获取长尾特征学习资源~


极市干货
YOLO教程:一文读懂YOLO V5 与 YOLO V4大盘点|YOLO 系目标检测算法总览全面解析YOLO V4网络结构
实操教程:PyTorch vs LibTorch:网络推理速度谁更快?只用两行代码,我让Transformer推理加速了50倍PyTorch AutoGrad C++层实现
算法技巧(trick):深度学习训练tricks总结(有实验支撑)深度强化学习调参Tricks合集长尾识别中的Tricks汇总(AAAI2021
最新CV竞赛:2021 高通人工智能应用创新大赛CVPR 2021 | Short-video Face Parsing Challenge3D人体目标检测与行为分析竞赛开赛,奖池7万+,数据集达16671张!


CV技术社群邀请函 #

△长按添加极市小助手
添加极市小助手微信(ID : cvmart2)

备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳)


即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群


每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~



觉得有用麻烦给个在看啦~  
浏览 24
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报