Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

陈萍编辑

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 发布了!


  • 完整文档地址: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 可以显着提高推理工作负载的速度,同时保持安全并确保永远不会计算出不正确的梯度。

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

工程边缘设备PyTorch
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

语音识别技术

自动语音识别是一种将口头语音转换为实时可读文本的技术。自动语音识别也称为语音识别(Speech Recognition)或计算机语音识别(Computer Speech Recognition)。自动语音识别是一个多学科交叉的领域,它与声学、语音学、语言学、数字信号处理理论、信息论、计算机科学等众多学科紧密相连。由于语音信号的多样性和复杂性,目前的语音识别系统只能在一定的限制条件下获得满意的性能,或者说只能应用于某些特定的场合。自动语音识别在人工智能领域占据着极其重要的位置。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

线性代数技术

线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。向量空间是现代数学的一个重要课题;因而,线性代数被广泛地应用于抽象代数和泛函分析中;通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。

AMD机构

超威半导体(中国)有限公司专门为计算机、通信和消费电子行业设计和制造各种创新的微处理器(CPU、GPU、主板芯片组、电视卡芯片等),以及提供闪存和低功率处理器解决方案,公司成立于1969年。AMD致力为技术用户——从企业、政府机构到个人消费者——提供基于标准的、以客户为中心的解决方案。

https://www.amd.com/zh-hans
推荐文章
暂无评论
暂无评论~