前语 在PyTorch Conference 2022上,研制团队介绍了 PyTorch 2.0,并宣布安稳版别将在本年 3 月正式发布,现在 PyTorch 2.0 正式版如期而至。
本文转载自机器之心
仅用于学术共享,若侵权请联系删除
欢迎重视大众号CV技能攻略,专心于计算机视觉的技能总结、最新技能盯梢、经典论文解读、CV招聘信息。
CV各大方向专栏与各个布置框架最全教程整理
计算机视觉入门1v3辅导班
GitHub地址:github.com/pytorch/pyt…
PyTorch 2.0 连续了之前的 eager 模式,一起从根本上改进了 PyTorch 在编译器级别的运转方法。PyTorch 2.0 能为「Dynamic Shapes」和分布式运转供给更快的功用和更好的支撑。
PyTorch 2.0 的安稳功用包含 Accelerated Transformers(曾经称为 Better Transformers)。Beta 功用包含:
- 运用 torch.compile 作为 PyTorch 2.0 的首要 API;
- scaled_dot_product_attention 函数作为 torch.nn.functional 的一部分;
- MPS 后端;
- torch.func 模块中的 functorch API。
别的,PyTorch 2.0 还供给了一些关于 GPU 和 CPU 上推理、功用和练习的 Beta/Prototype 改进。
除了 2.0,研制团队这次还发布了 PyTorch 域库的一系列 beta 更新,包含 in-tree 的库和 TorchAudio、TorchVision、TorchText 等独立库。此外,TorchX 转向社区支撑模式。
具体来说,PyTorch 2.0 的功用包含:
- torch.compile 是 PyTorch 2.0 的首要 API,它能包装并返回编译后的模型。这个是一个彻底附加(和可选)的功用,PyTorch 2.0 依据定义是 100% 向后兼容的。
- 作为 torch.compile 的基础技能,带有 Nvidia 和 AMD GPU 的 TorchInductor 将依靠 OpenAI Triton 深度学习编译器来生成高功用代码并躲藏低级硬件细节。OpenAI Triton 生成内核完成了与手写内核和 cublas 等专用 cuda 库相当的功用。
- Accelerated Transformers 引入了对练习和推理的高功用支撑,运用自定义内核架构完成缩放点积注意力 (SPDA)。API 与 torch.compile () 集成,模型开发人员也能够经过调用新的 scaled_dot_product_attention () 运算符直接运用缩放点积注意力内核。
- Metal Performance Shaders (MPS) 后端能在 Mac 平台上供给 GPU 加快的 PyTorch 练习,并增加了对前 60 个最常用运算符的支撑,掩盖 300 多个运算符。
- Amazon AWS 优化了 AWS Graviton3 上的 PyTorch CPU 推理。与之前的版别比较,PyTorch 2.0 进步了 Graviton 的推理功用,包含针对 ResNet-50 和 BERT 的改进。
- 其他一些跨 TensorParallel、DTensor、2D parallel、TorchDynamo、AOTAutograd、PrimTorch 和 TorchInductor 的新 prototype 功用和方法。
安稳功用
PyTorch 2.0 版别包含 PyTorch Transformer API 新的高功用完成,曾经称为「Better Transformer API」,现在更名为 「Accelerated PyTorch 2 Transformers」。研制团队表明他们希望整个职业都能负担得起练习和布置 SOTA Transformer 模型的成本。新版别引入了对练习和推理的高功用支撑,运用自定义内核架构完成缩放点积注意力 (SPDA)。
与「快速途径(fastpath)」架构相似,自定义内核彻底集成到 PyTorch Transformer API 中 —— 因此,运用 Transformer 和 MultiHeadAttention API 将运用户能够:
- 明显进步模型速度;
- 支撑更多用例,包含运用交叉注意力模型、Transformer 解码器,而且能够用于练习模型;
- 持续对固定和可变的序列长度 Transformer 编码器和自注意力用例运用 fastpath 推理。
为了充分使用不同的硬件模型和 Transformer 用例,PyTorch 2.0 支撑多个 SDPA 自定义内核,自定义内核挑选逻辑是为给定模型和硬件类型挑选最高功用的内核。除了现有的 Transformer API 之外,模型开发人员还能够经过调用新的 scaled_dot_product_attention () 运算来直接运用缩放点积注意力内核。
将缩放点积注意力与自定义内核和 torch.compile 结合运用可为练习大型言语模型(上图以 nanoGPT 为例)供给明显加快。
Beta 功用
torch.compile
torch.compile 是 PyTorch 2.0 的首要 API,它包装并返回编译后的模型。torch.compile 的背后是 PyTorch 团队研制的新技能 ——TorchDynamo、AOTAutograd、PrimTorch 和 TorchInductor。
凭借这些新技能,torch.compile 能够在 165 个开源模型上运转,而且在 float32 精度下平均运转速度进步 20%,在 AMP 精度下平均运转速度进步 36%。
PyTorch MPS 后端
MPS 后端在 Mac 平台上供给 GPU 加快的 PyTorch 练习。PyTorch 2.0 在正确性、安稳性和运算符掩盖率方面比之前的版别有所改进。
缩放点积注意力 2.0
PyTorch 2.0 引入了一个强大的缩放点积注意力函数。该函数包含多种完成,能够依据运用的输入和硬件无缝使用。
functorch → torch.func
functorch API 现在能够在 torch.func 模块中运用。其间,函数转化 API 与曾经相同,但与 NN 模块交互的方法有所改动。
此外,PyTorch 2.0 还添加了对 torch.autograd.Function 的支撑:现在能够在 torch.autograd.Function 上使用函数转化。
Dispatchable Collectives
Dispatchable Collectives 是对之前 init_process_group () API 的改进,其间将后端更改为可选参数。关于用户来说,这个特性的首要优势在于,它将允许用户编写能够在 GPU 和 CPU 机器上运转的代码,而无需更改后端规范。
PyTorch 2.0 还将 torch.set_default_device 和 torch.device 作为语境管理器(context manager),将「X86」作为 x86 CPU 的新默认量化后端。
新的 X86 量化后端使用 FBGEMM 和 oneDNN 内核库,供给比原始 FBGEMM 后端更高的 INT8 推理功用。新后端在功用上与原始 FBGEMM 后端兼容。
此外,PyTorch 2.0 还包含多项要害优化,以进步 CPU 上 GNN 推理和练习的功用,并使用 oneDNN Graph 加快推理。
最后,PyTorch 2.0 还包含一些 Prototype 功用,包含:
-
[Prototype] DTensor
-
[Prototype] TensorParallel
-
[Prototype] 2D Parallel
-
[Prototype] torch.compile (dynamic=True)
参阅链接:deploy-preview-1313–pytorch-dot-org-preview.netlify.app/blog/pytorc…
欢迎重视大众号CV技能攻略,专心于计算机视觉的技能总结、最新技能盯梢、经典论文解读、CV招聘信息。
计算机视觉入门1v3辅导班
【技能文档】《从零搭建pytorch模型教程》122页PDF下载
QQ沟通群:444129970。群内有大佬担任解答我们的日常学习、科研、代码问题。
其它文章
CVPR2023最新Backbone | FasterNet远超ShuffleNet、MobileNet、MobileViT等模型
CVPR2023 | 集成预练习金字塔结构的Transformer模型
AAAI 2023 | 一种通用的粗-细视觉Transformer加快方案
大核分解与注意力机制的奇妙结合,图画超分多标准注意网络MAN已开源!
MIRNetV2 更快、更强、更轻量!
AI布置与算法/自动驾驶/深度学习资料汇总!
点云模型专栏(一)概述、特性、存储格式、数据集
计算机视觉各个方向沟通群与常识星球
【免费送书活动】 全新轻量化模型 | 轻量化沙漏网络助力视觉感知涨点
目标盯梢专栏(一)基本任务、常用方法
CV各大方向专栏与各个布置框架最全教程整理
一文尽览 | 自动驾驶中光流的使用、挑战和改进
目标检测、实例切割、旋转框样样精通!详解高功用检测算法 RTMDet
CV算法工程师卷得要死,布置工程师却成为了香饽饽
大卷积模型 + 大数据集 + 有监督练习!探寻ViT的前身:Big Transfer (BiT)
高效轻量级语义切割总述
超快语义切割 | PP-LiteSeg集速度快、精度高、易布置等长处于一身,必会模型!!!
数据集+插件,一把子处理遮挡下目标检测难题
AAAI | Panini-Net | 基于GAN先验的退化感知特征插值人脸修
一文带你掌握轻量化模型规划原则和练习技巧!
图画增强新思路:DeepLPF
LCCL网络:相互指导博弈来进步目标检测精度(附源代码)
与SENet互补进步,华为诺亚提出自注意力新机制:Weight Excitation
最新FPN | CFPNet即插即用,助力检测涨点,YOLOX/YOLOv5均有效
DeepLSD:基于深度图画梯度的线段检测和细化
CVPR 2023 | 基础模型推进语义切割的弱增量学习
消费级显卡的春天,GTX 3090 YOLOv5s单卡完好练习COCO数据集缩短11.35个小时
BOE告知你:一层卷积能够做超分!
卫星图画揭露数据集资源汇总
DiffusionDet:用于目标检测的分散模型
CV小常识评论与剖析(7) 寻觅论文创新点的新方法
CV小常识剖析与评论(6)论文创新的一点误区
计算机视觉入门1v3辅导班
计算机视觉沟通群
聊聊计算机视觉入门