PyTorch 1.10正式版上线:Android NNAPI支撑来了

广受人们欢迎的深度学习框架 PyTorch 刚刚革新了 1.10 正式版,在 CUDA Graphs API 等方面进行了诸多改进。

PyTorch 是一个开源的 Python 机器学习库,基于 Torch,底层由 C++ 实现,主要应用于人工智能领域,如自然语言处理,它最初由 Facebook 的人工智能研究团队开发。由于 PyTorch 定义网络结构简单等特点,自发布以来便受到众多研究人的青睐。经过研究者的不断努力,现在, PyTorch 革新到 PyTorch 1.10 版本。此版本由 1.9 版本以来的 3,400 多次 commits 组成,由 426 位贡献者完成。 

PyTorch 1.10正式版上线:Android NNAPI支撑来了

此次PyTorch 1.10 的革新侧重于改进 PyTorch 的训练和本能以及开发人员的可用性。亮点包括以下:

集成了 CUDA Graphs API 以缩小 CUDA 任务负载的 CPU 开消;

FX、torch.special 和 nn.ModuleParametrization 等几个前端 API 已从测试版变为稳定版;

除了 GPU 之外,JIT Compiler 中对自动交融的支撑扩展到 CPU;

Android NNAPI 支撑现已推出测试版。

:从 PyTorch 1.6 版本开始,PyTorch 特性分为 Stable(稳定版)、Beta(测试版)和 Prototype(原型版)。PyTorch 1.10 最新特性

PyTorch 1.10正式版上线:Android NNAPI支撑来了

前端 API运用 FX 进行 Python 代码转换(稳定版):FX 提供了一个用于转换和降低 PyTorch 程序的 python 化平台,它是一个工具包,在 1.10 版本中,FX 趋于稳定,用户可以运用 torch.fx 实现程序转换。torch.special(稳定版):torch.special 模块,类似于 SciPy 的特殊模块,现在稳定版可用。该模块有 30 种运算,包括 gamma、Bessel 和(高斯)误差函数。nn.Module 参数化(稳定版):允许用户在不修改 nn.Module 本身的情况下参数化任何参数等,在稳定版中可用。此版本增加了权重归一化 (weight_norm)、正交参数化(矩阵约束和部分剪枝),用户在创建自己的参数化时更加灵活。CUDA Graphs API 集成(测试版):PyTorch 现在集成了 CUDA Graphs API 以缩小 CUDA 任务负载的 CPU 开消。CUDA Graphs 大大降低了 CPU 绑定 cuda(CPU-bound cuda)任务负载的 CPU 开消,从而通过提高 GPU 利用率来提高本能。对于分布式任务负载,CUDA Graphs 还可以缩小抖动,并且由于并行任务负载必须等待最慢的任务负载,因此缩小抖动可以提高整体并行效率。分布式训练在 1.10 版本中,有许多特性在分布式包中从测试版过渡到稳定版,具体包括:

Remote Module(稳定版):此功用允许用户远程操作模块,就像运用本地模块一样,其中 RPC 对用户是透明的;

DDP Communication Hook(稳定版):此功用允许用户覆盖 DDP 如何跨进程同步梯度;

ZeroRedundancyOptimizer(稳定版):此功用可与 DistributedDataParallel 结合运用,以缩小每个进程优化器状态的大小。

本能优化以及工具(测试版)TorchScript 严格要求源代码具有类型注释才能成功编译。长期以来,用户只能通过反复试验来添加缺失或不正确的类型注解,效率低下,耗时长。现在,PyTorch 1.10 利用 MonkeyType 等现有工具为 torch.jit.script 启用了配置文件定向输入,这使得该过程变得更容易、更快和更高效。(测试版)CPU 交融:PyTorch 1.10 为 CPU 添加了一个基于 LLVM 的 JIT 编译器,可以将 Torch 库调用序列交融在一起以提高本能。虽然此前的版本在 GPU 上拥有此功用已有一段时间了,但 1.10 版本是第一次将编译引入 CPU。PyTorch Profiler(测试版)PyTorch Profiler 的目标是针对时间或内存成本最高的执行步骤,并可视化 GPU 和 CPU 之间的任务负载分布。PyTorch 1.10 包括以下主要功用:

增强型内存视图:这有助于用户更好地了解内存运用;

增强型内核视图:附加列显示网格和块大小以及每个线程共享内存运用和寄存器的情况;

分布式训练:Gloo 现在支撑分布式训练任务;

TensorCore:该工具显示 Tensor Core(TC) 的运用,并为数据科学家和框架开发人员提供建议;

NVTX:对 NVTX markers 的支撑是从旧版 autograd profiler 移植过来的;

支撑移动设备分析:PyTorch profiler 现在与 TorchScript 、移动后端能够更好的集成,支撑移动任务负载的跟踪收集。

支撑 Android NNAPI去年,PyTorch 官方发布了对 Android Neural Networks API (NNAPI) 的原型支撑。PyTorch1.10 版本增加了更多的操作,包括在加载时对形状的支撑,以及在主机上运行模型进行测试的能力。此外,迁移学习已经添加到对象检测示例中。对于此次 PyTorch 的革新,网友也不仅赞叹:「PyTorch 团队的出色任务,交融和 profiler 任务,非常酷!」

PyTorch 1.10正式版上线:Android NNAPI支撑来了

关于 PyTorch1.10 版本的革新,更多信息请参考:Github: https://github.com/pytorch/pytorch/releases/tag/v1.10.0参考链接:https://pytorch.org/blog/pytorch-1.10-released/https://www.marktechpost.com/2021/10/21/pytorch-releases-version-1-10-with-updates-on-cuda-graphs-apis/

原创文章,作者:机器之心,如若转载,请注明出处:https://www.iaiol.com/news/34184

(0)
上一篇 2021年10月21日 下午4:19
下一篇 2021年10月24日 下午1:24

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注