欢迎光临散文网 会员登陆 & 注册

PyTorch 1.9发布&pytorch库更新,这次的亮点在移动端

2021-06-22 19:37 作者:深度之眼官方账号  | 我要投稿

PyTorch因自身易上手的特性,近些年被研究人员,深度学习爱好者,以及刚入门人工智能的同学广泛使用。如果你想快速上手pytorch会比TensorFlow更适合你。

本月15号pytorch团队发布了PyTorch 1.9,该版本由 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 效率

(PS:从 PyTorch 1.6 版本开始,PyTorch 版本中的功能特性分为稳定版、测试版和原型版。)


简单介绍PyTorch 1.9

前端 API

torch.linalg

在PyTorch 1.9中,torch.linalg模块正在转向稳定版本。

线性代数对于深度学习和科学计算非常重要,torch.linalg模块扩展了 PyTorch 对线性代数的支持,实现了NumPy的线性代数模块(现在支持加速器和 autograd)中的每个函数等等。

比如:torch.linalg.matrix_norm和torch.linalg.householder_product。这使得使用过NumPy的用户能够快速熟悉该模块。

Complex Autograd

Complex Autograd 功能在 PyTorch 1.8 中作为测试版发布,现已稳定。

自beta版发布以来,PyTorch 1.9中为超过98%的运算符扩展了对 Complex Autograd 的支持,通过添加更多 OpInfos 改进了对复杂运算符的测试,并通过 TorchAudio 迁移到本机复杂张量增加了更好的验证。

此功能为用户提供了计算复杂梯度和使用复杂变量优化实值损失函数的功能。这是 PyTorch 中复数的多个当前和下游潜在用户(如 TorchAudio、ESPNet、Asteroid 和 FastMRI)所必需的功能。

PyTorch 1.9 有torch.use_determinstic_algorithms这个选项,这个选项是用来帮助调试和编写程序的。启用此设置后,如果可能,操作将具有确定性的行为,或者如果它们的行为具有不确定性,则会引发运行时错误。


来看几个例子:




PyTorch 移动版

Mobile Interpreter

pytorch团队正在研发beta版的Mobile Interpreter,用来作为PyTorch 运行时的简化版本,Interpreter将在边缘设备中执行 PyTorch 程序,减少二进制文件大小的占用空间。


TorchVision 库

从1.9开始,用户可以在他们的iOS/Android应用程序上使用TorchVision库。Torchvision 库包含C++ TorchVision操作,需要与iOS的主PyTorch库链接在一起,对于Android,它可以作为一个gradle依赖项添加。这允许使用TorchVision预构建的MaskRCNN操作符进行对象检测和分割。


Demo apps (演示应用)

PyTorch团队将发布基于PyTorch视频库的新视频应用程序和基于最新的 torchaudio、wave2vec模型的更新语音识别应用程序,两者均可在iOS和Android上使用。

此外,PyTorch Mobile v1.9更新了7个计算机视觉和3个自然语言处理演示应用程序,包括 HuggingFace DistilBERT和DeiT视觉转换器模型。通过添加这两个应用程序,PyTorch团队给用户提供一整套涵盖了图像、文本、音频和视频的演示应用程序。


Distributed Training(分布式训练)

TorchElastic一年多前在pytorch/elastic github 存储库中开源,是 PyTorch 工作进程的运行器和协调器,现在它是 PyTorch 核心的一部分。TorchElastic可以让 PyTorch 分布式训练具备弹性伸缩与自动容错的能力。

一个显著的弹性推论是,对等点发现和等级分配内置于 TorchElastic 中,使用户能够在可抢占式实例上运行分布式训练,而不需要组调度器。


Performance Optimization and Tooling (性能优化和工具)

Freezing API(冻结API)

Module Freezing是将模块参数和属性值作为常量内联到 TorchScript 内部表示中的过程。这允许进一步优化和专业化程序,包括 TorchScript 优化和降低到其他后端。它被optimize_for_mobile API、ONNX 等使用。

建议冻结模型部署,它有助于 TorchScript JIT 优化,优化训练、调整或调试 PyTorch 模型所需的开销和簿记。它支持在非冻结图上语义无效的图融合 - 例如融合 Conv-BN。


PyTorch 分析器

新的 PyTorch Profiler 已升级到测试版,并利用Kineto进行GPU分析,利用TensorBoard 进行可视化,现在已成为PyTorch使用教程和文档中的标准。

PyTorch 1.9 将对新的torch.profiler API的支持扩展到更多版本,包括Windows和Mac,并且建议替代以前的torch.autograd.profiler API使用。新的API支持现有的分析器功能,与 CUPTI 库(仅限 Linux)集成以跟踪设备上的 CUDA 内核并为长时间运行的作业提供支持,例如:





PyTorch Profiler Tensorboard 插件具有以下新功能:

  • 带有 NCCL 通信概览的分布式培训摘要视图

  • 跟踪视图和 GPU 操作员视图中的 GPU 利用率和 SM 效率

  • 内存分析视图

  • 从 Microsoft VSCode 启动时跳转到源代码

  • 能够从云对象存储系统中进行负载跟踪

本次pytorch团队还发布了pytorch库的更新

这次更新包括域库的新版本,还有TorchVision、TorchText和TorchAudio。

来看一下本次pytorch库更新的一些亮点:

  • TorchVision添加了新的SSD和SSDLite模型、用于对象检测的量化内核、GPU Jpeg解码和iOS 支持。

  • TorchAudio添加了可在非Python 环境(包括C++、Android和iOS)中部署的wAV2vec 2.0模型。lfilter、频谱操作、重采样方面的许多性能改进。添加了采样质量控制选项(即Kaiser窗口支持)。启动了复杂张量操作的迁移。改进的autograd 支持。

  • TorchText添加了一个新的高性能Vocab模块,为NLP工作流提供通用的功能API。


详细内容可以查阅官方文档了解!

PyTorch 1.9更新文档地址:https://pytorch.org/blog/pytorch-1.9-released/

PyTorch 库更新地址:https://pytorch.org/blog/pytorch-1.9-new-library-releases/


关注【学姐带你玩AI】公众号,获取人工智能相关专业知识!



PyTorch 1.9发布&pytorch库更新,这次的亮点在移动端的评论 (共 条)

分享到微博请遵守国家法律