巨奢网 首页 名表图片鉴赏 积家 查看内容

PyTorch 2.0正式版发布!一行代码提速2倍,100%向后兼容

2023-3-30 17:03| 发布者: fuwanbiao| 查看: 78| 评论: 0

摘要: 来源:公众号 新智元受权【导读】PyTorch 2.0正式发布。 PyTorch 2.0正式版终于来了!去年12月,PyTorch基金会在PyTorch Conference 2022上发布了PyTorch 2.0的第一个预览版本。跟先前1.0版原形比,2.0有了推翻式的 ...

PyTorch 2.0正式版发布!一行代码提速2倍,100%向后兼容


来源:公众号 新智元受权


【导读】PyTorch 2.0正式发布。


PyTorch 2.0正式版终于来了!


去年12月,PyTorch基金会在PyTorch Conference 2022上发布了PyTorch 2.0的第一个预览版本。


跟先前1.0版原形比,2.0有了推翻式的变更。在PyTorch 2.0中,最大的改进是torch.compile。


新的编译器比以前PyTorch 1.0中默许的「eager mode」所提供的即时生成代码的速度快得多,让PyTorch性能进一步提升。

PyTorch 2.0正式版发布!一行代码提速2倍,100%向后兼容


除了2.0之外,还发布了一系列PyTorch域库的beta更新,包含那些在树中的库,以及包含 TorchAudio、TorchVision和TorchText在内的独立库。TorchX的更新也同时发布,能够提供社区支持方式。


亮点总结


-torch.compile是PyTorch 2.0的主要API,它包装并返回编译后的模型,torch.compile是一个完整附加(和可选)的特性,因而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的C7g实例上的PyTorch CPU推理。与之前的版原形比,PyTorch 2.0进步了Graviton的推理性能,包含对Resnet50和Bert的改进。


-跨TensorParallel、DTensor、2D parallel、TorchDynamo、AOTAutograd、PrimTorch和TorchInductor的新原型功用和技术。

PyTorch 2.0正式版发布!一行代码提速2倍,100%向后兼容


编译,还是编译!


PyTorch 2.0的最新编译器技术包含:TorchDynamo、AOTAutograd、PrimTorch和TorchInductor。一切这些都是用Python开发的,而不是C++(Python与之兼容)。


并且还支持dynamic shape,无需重新编译就能发送不同大小的向量,灵活且易学。


  1. TorchDynamo


它能够借助Python Frame Evaluation Hooks,保险地获取PyTorch程序,这项严重创新是PyTorch过去 5 年来在保险图结构捕获 (safe graph capture) 方面的研发成果汇总。


  1. AOTAutograd


重载PyTorch autograd engine,作为一个 tracing autodiff,用于生成超前的backward trace。


  1. PrimTorch


将 2000+ PyTorch 算子归结为约 250 个 primitive operator 闭集 (closed set),开发者能够针对这些算子构建一个完好的 PyTorch 后端。PrimTorch 大大简化了编写 PyTorch 功用或后端的流程。


4. TorchInductor


TorchInductor一个深度学习编译器,能够为多个加速器和后端生成 fast code。关于 NVIDIA GPU,它运用 OpenAI Triton 作为关键构建模块。


PyTorch基金会称,2.0的推出会推进「从C++回到Python」,并弥补说这是PyTorch的一个实质性的新方向。


「从第一天起,我们就知道「eager execution」的性能限制。2017年7月,我们开端了第一个研讨项目,为PyTorch开发一个编译器。编译器需求使PyTorch程序快速运转,但不能以PyTorch的体验为代价,还要保存灵活易用性,这样的话能够支持研讨人员在不同探求阶段运用动态的模型和程序。」


当然了,非编译的「eager mode」运用动态即时期码生成器,在2.0中依旧可用。开发者能够运用porch.compile命令疾速升级到编译方式,只需求增加一行代码。


用户能够看到2.0的编译时间比1.0进步43%。


这个数据来自PyTorch基金会在Nvidia A100 GPU上运用PyTorch 2.0对163个开源模型中止的基准测试,其中包含包含图像分类、目的检测、图像生成等任务,以及各种 NLP 任务。


这些Benchmark分为三类:HuggingFace Tranformers、TIMM和TorchBench。

PyTorch 2.0正式版发布!一行代码提速2倍,100%向后兼容


NVIDIA A100 GPU eager mode torch.compile 针对不同模型的提速表示


据PyTorch基金会称,新编译器在运用Float32精度方式时运转速度进步了21%,在运用自动混合精度(AMP)方式时运转速度进步了51%。


在这163个模型中,torch.compile能够在93%模型上正常运转。


「在PyTorch 2.x的道路图中,我们希望在性能和可扩展性方面让编译方式越走越远。有一些工作还没有开端。有些工作由于带宽不够而措施落地。」

PyTorch 2.0正式版发布!一行代码提速2倍,100%向后兼容


锻炼LLM提速2倍


此外,性能是PyTorch 2.0的另一个主要重点,也是开发人员不时不吝于宣传的一个重点。


事实上,新功用的亮点之一是Accelerated Transformers,之前被称为Better Transformers。


另外,PyTorch 2.0正式版包含了一个新的高性能PyTorch TransformAPI完成。


PyTorch项目的一个目的,是让最先进的transformer模型的锻炼和部署愈加容易、快速。


Transformers是辅佐完成现代生成式人工智能时期的基础技术,包含GPT-3以及GPT-4这样的OpenAI模型。

PyTorch 2.0正式版发布!一行代码提速2倍,100%向后兼容


在PyTorch 2.0 Accelerated Transformers中,运用了自定义内核架构的措施(也被称为缩放点积留意力SDPA),为锻炼和推理提供高性能的支持。


由于有多种类型的硬件能够支持Transformers,PyTorch 2.0能够支持多个SDPA定制内核。更进一步,PyTorch集成了自定义内核选择逻辑,将为给定的模型和硬件类型选择最高性能的内核。


加速的影响非同小可,由于它有助于使开发人员比以前的PyTorch迭代更快地锻炼模型。


新版本能够完成对锻炼和推理的高性能支持,运用定制的内核架构来处置缩放点积留意力(SPDA) ,扩展了推理的快速途径架构。


与fastpath架构相似,定制内核完整集成到PyTorch TransformerAPI中--因而,运用本地Transformer和MultiHeadAttention API将运用户能够:


-看到速度明显提升;


-支持更多的用例,包含运用交叉留意的模型、Transformer解码器和锻炼模型;


-继续将快速途径推理用于固定和可变序列长度的变形器编码器和自留意力机制的用例。


为了充沛应用不同的硬件模型和Transformer用例,支持多个SDPA自定义内核,自定义内核选择逻辑将为特定模型和硬件类型选择最高性能的内核。


除了现有的Transformer API,开发者还能够经过调用新的scaled_dot_product_attention操作符直接运用缩放点积留意力关注内核,加速PyTorch 2 Transformers与torch.compile集成。


为了在运用模型的同时,还能取得PT2编译的额外加速(用于推理或锻炼),能够运用model = torch.compile(model)对模型中止预处置。


目前,曾经运用自定义内核和torch.compile的组合,在锻炼Transformer模型,特别是运用加速的PyTorch 2 Transformer的大型言语模型方面取得实质性加速提升。

PyTorch 2.0正式版发布!一行代码提速2倍,100%向后兼容


运用自定义内核和 torch.compile来提供对大型言语模型锻炼显著加速


HuggingFace Transformers的主要维护者Sylvain Gugger在PyTorch项目发表的一份声明中写道「只需添加一行代码,PyTorch 2.0就能在锻炼Transformers模型时提供1.5倍至2.0倍的速度。这是自混合精度锻炼推出以来最令人兴奋的事情!」


PyTorch和谷歌的TensorFlow是两个最盛行的深度学习框架。世界上有数千家机构正在运用PyTorch开发深度学习应用程序,而且它的运用量正在不时增加。


PyTorch 2.0的推出将有助于加速深度学习和人工智能应用的展开,Lightning AI的首席技术官和PyTorch Lightning的主要维护者之一Luca Antiga表示:


「PyTorch 2.0 表示了深度学习框架的未来。不需求用户干预即可捕获PyTorch 程序,开箱即用的程序生成,以及庞大的设备加速,这种可能性为人工智能开发人员翻开了一个全新的维度。」


参考资料:


https://pytorch.org/blog/pytorch-2.0-release/


https://venturebeat.com/ai/pytorch-2-0-brings-new-fire-to-open-source-machine-learning/


https://www.datanami.com/2023/03/15/new-pytorch-2-0-compiler-promises-big-speedup-for-ai-developers/



路过

雷人

握手

鲜花

鸡蛋
已有 0 人参与

会员评论

 名表回收网手机版

官网微博:名表回收网服务平台

今日头条二维码 1 微信公众号二维码 1 抖音小程序二维码 1
浙江速典奢贸易有限公司 网站经营许可证 备案号:浙ICP备19051835号2012-2022
名表回收网主要专注于手表回收,二手名表回收/销售业务,可免费鉴定(手表真假),评估手表回收价格,正规手表回收公司,浙江实体店,支持全国范围上门回收手表
返回顶部