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

PyTorch 2.0正式版终于来了!

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

图片

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

跟先前1.0版本相比,2.0有了颠覆式的变化。在PyTorch 2.0中,最大的改进是torch.compile。

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

图片

除了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的最新编译器技术包括:TorchDynamo、AOTAutograd、PrimTorch和TorchInductor。所有这些都是用Python开发的,而不是C++(Python与之兼容)。

代码小浣熊 代码小浣熊

代码小浣熊是基于商汤大语言模型的软件智能研发助手,覆盖软件需求分析、架构设计、代码编写、软件测试等环节

代码小浣熊 51 查看详情 代码小浣熊

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

TorchDynamo​

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

AOTAutograd​

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

PrimTorch​

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

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。

图片

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

据PyTorch基金会称,新编译器在使用Float32精度模式时运行速度提高了21%,在使用自动混合精度(AMP)模式时运行速度提高了51%。

在这163个模型中,torch.compile可以在93%模型上正常运行。

「在PyTorch 2.x的路线图中,我们希望在性能和可扩展性方面让编译模式越走越远。有一些工作还没有开始。有些工作因为带宽不够而办法落地。」

图片

训练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 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的大型语言模型方面取得实质性加速提升。

图片

使用自定义内核和 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://www.php.cn/link/d6f84c02e2a54908d96f410083beb6e0​​

​​https://www.php.cn/link/89b9e0a6f6d1505fe13dea0f18a2dcfa​​

​​https://www.php.cn/link/3b2acfe2e38102074656ed938abf4ac3​​​

以上就是PyTorch 2.0正式版发布!一行代码提速2倍,100%向后兼容的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/564737.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月10日 02:41:55
下一篇 2025年11月10日 02:47:15

相关推荐

  • html搜索框如何跳转_实现HTML搜索框跳转搜索结果【结果】

    HTML搜索框跳转失败多因表单action或参数错误,可通过五种方法解决:一、百度用form提交至https://www.baidu.com/s?q=关键词;二、Google类似,action为https://www.google.com/search;三、JavaScript拼接必应URL并loc…

    2025年12月23日
    200
  • 从OpenAI API JSON响应中高效提取生成文本内容

    本教程详细指导开发者如何从openai api返回的json格式响应中准确提取生成的文本。通过利用`json.parse()`方法解析响应字符串,并访问`choices[0].text`属性,可以安全、高效地获取核心文本内容,从而避免直接字符串操作的潜在问题,确保api数据处理的健壮性。 OpenA…

    2025年12月23日
    000
  • HTML语义化未来趋势有哪些_HTML语义化在Web发展中的趋势与展望

    HTML语义化正朝着智能、高效、包容发展,深度融合结构化数据与ARIA属性,提升机器理解;2. 组件化趋势推动可复用语义结构普及,Web Components实现自定义语义标签;3. 语义化助力性能优化与可访问性,支持懒加载与内容优先级划分;4. AI工具将自动生成语义化代码并辅助检测,降低实践门槛…

    2025年12月23日
    000
  • 如何用HTML插入标签云组件_HTML CSS3变换与随机颜色生成算法

    使用HTML构建标签结构,CSS3添加旋转与过渡效果,JavaScript生成随机HSL颜色并设置字体大小,实现动态交互的标签云组件。 要在网页中实现一个动态的标签云组件,结合 HTML、CSS3 变换和随机颜色生成算法,可以按照以下步骤操作。这个组件不仅能提升页面视觉效果,还能通过色彩和旋转增加交…

    2025年12月23日
    000
  • 如何在Go Gin应用中集成前端JavaScript模块(如Sentry)

    本文探讨了在Go Gin框架下,通过HTML模板服务前端页面时,如何有效集成JavaScript模块(如Sentry)。针对浏览器不直接支持Node.js模块导入语法的问题,文章详细阐述了利用CDN引入Sentry SDK的解决方案,并提供了具体的代码示例,帮助开发者实现前端错误监控功能,避免了复杂…

    2025年12月23日
    000
  • HTML数据如何实现数据智能 HTML数据智能分析的技术架构

    实现HTML数据智能分析需构建包含采集、解析、存储、分析与可视化的闭环系统,首先通过爬虫技术获取网页数据并进行清洗标准化,接着利用DOM树分析与NLP技术提取结构化信息,随后将数据存入合适数据库或数据仓库并建立元数据管理机制,进而应用AI模型开展分类、情感分析、趋势预测与知识图谱构建等智能分析,最终…

    2025年12月23日
    000
  • html官网浏览入口_html网站设计免费平台

    html官网浏览入口在https://www.codepen.io,该平台支持实时预览代码、创建Pen项目、Fork开源示例,可添加外部资源,具备点赞评论收藏等社区互动功能,设有挑战活动与作品集分类,开放API接口,界面简洁适合初学者,在线编写无需配置环境,支持多种预处理器和响应式测试。 html官…

    2025年12月23日
    000
  • HTML5 section怎么用_HTML5内容分区标签应用场景说明

    在HTML5中,标签用于定义文档中具有明确主题的独立内容区块,需包含标题以体现其结构性与语义性,常用于文章章节、产品模块等场景,区别于无语义的和可独立分发的。 在HTML5中,section 标签用于定义文档中的一个独立内容区块。它不是简单的容器,而是有语义的结构化标签,表示文档中一个主题性的分区,…

    2025年12月23日
    000
  • htm算法 前景如何_分析HTM算法应用前景

    HTM算法在实时异常检测、预测性维护等时序数据场景中具备应用价值,其无需大量标注数据的特性适合工业监控、网络安防等领域;但受限于生态薄弱、性能不及主流模型及工程实现难度,短期内难以成为主流,更可能作为边缘计算或AI系统补充技术,在特定专业领域持续发展。 HTM(Hierarchical Tempor…

    2025年12月23日
    000
  • HTML结构化数据怎么添加_Schema标记添加教程

    Schema标记通过结构化数据帮助搜索引擎理解网页内容,提升搜索结果展示效果,如添加星级评分、价格等富文本信息。使用JSON-LD或Microdata格式将符合Schema.org标准的类型(如Article、Product)嵌入HTML中,可增强SEO,需通过Google Rich Results…

    2025年12月22日
    000
  • 如何实现自定义提示

    掌握自定义提示需构建迭代工作流,通过明确目标、设定角色、提供上下文、结构化输出、示例引导、迭代优化、负面提示和链式思考,实现AI输出的精准控制与高效协同。 实现自定义提示,核心在于理解与AI模型交互的本质,并将其从“提问”升级为“引导”。它不是简单的抛出问题,而是通过精心设计的语言结构、上下文信息、…

    2025年12月22日
    000
  • 程序设计中的隐式类型转换的类型及重要性

    隐式类型转换的种类及其在程序设计中的重要性 在程序设计中,类型转换是一种常见的操作,用于改变变量或对象的数据类型。无论是显式类型转换还是隐式类型转换,都是为了满足某些特定的需求。在本文中,我们将重点讨论隐式类型转换的种类以及它在程序设计中的重要性。 隐式类型转换是指在特定条件下,编译器自动将一种数据…

    2025年12月21日
    000
  • html如何修改日期样式

    在html中,可以使用“::-webkit-datetime-edit”伪元素选择器来修改日期格式,只需要用该选择器选中元素,在设置具体样式即可,具体语法为“::-webkit-datetime-edit{属性:属性值}”。 本教程操作环境:windows7系统、CSS3&&HTML…

    2025年12月21日
    100
  • 单选框的type属性值为什么

    单选框的type属性值为“radio”。html type属性可以规定要显示的输入框“”元素的类型;值为“radio”时显示为单选框、“checkbox”时显示为复选框、“select”时显示为下拉式选框等等。 本教程操作环境:windows7系统、HTML5版、Dell G3电脑。 在HTML中,…

    2025年12月21日
    000
  • HTML中type是什么意思

    在HTML中,type是类型的意思,是一个标签属性,主要用于定义标签元素的类型或文档(脚本)的MIME类型;例在input标签中type属性可以规定input元素的类型,在script标签中type属性可以规定脚本的MIME类型。 本教程操作环境:windows7系统、html5版、Dell G3电…

    2025年12月21日
    000
  • HTML中ul标签如何去掉点?HTML无序列表的样式实例解析

    本篇文章主要讲述的是关于html中的ul标签的默认小点给取消掉,还有关于html的无序列表ul标签的样式解释,给出了ul标签中的type属性三种值的介绍。现在就让我们一起来看本篇文章吧 首先这篇文章一开始我们就开始介绍在html中是怎么把ul标签的点给去掉的: 大家应该都使用过ul无序列表标签,ul…

    2025年12月21日 好文分享
    000
  • html中的ol标签如何去掉标号呢?标签的使用方法总结

    本篇文章介绍了html的ol标签是怎么去掉序号标号的,这里还有代码的详细解释,还有介绍了关于html ol有序列表标签如何更改序号,下文介绍了三种序号,大家也可以自己去想填写怎样的序号。现在来看这篇文章吧 一、我们先看看html中的ol标签是如何去掉标号的呢: 我们都知道html的ol标签是个有序列…

    2025年12月21日 好文分享
    000
  • HTML ul标签的什么意思?HTML ul标签的作用详解

    本篇文章主要的为大家讲解了关于html ul标签的三种重要的用法,还有关于html ul标签的解释,包含li标签的还有type属性对ul标签的使用情况,好了,下面大家一起来看文章吧 首先让我们先来解释一下HTML ul标签的意思: ul标签定义的是表格当中无序列表,表格当中的无序列表都是在 标签之中…

    2025年12月21日
    000
  • javascript框架和库是什么_如何选择React、Vue或Angular?

    JavaScript框架与库分别提供按需调用的功能集合和约束性开发结构;React是UI组件库,生态灵活但需自行整合工具;Vue渐进式易上手,兼顾原型与工程化;Angular是全功能TypeScript框架,适合强规范企业级项目。 JavaScript框架和库是封装好的代码集合,用来简化前端开发——…

    2025年12月21日
    000
  • React应用生产环境环境变量配置深度指南

    本文针对react应用在生产环境中无法读取`.env`文件配置的环境变量问题,深入剖析其工作原理、常见原因及排查方法。通过详细的步骤和示例代码,指导开发者正确配置和使用环境变量,解决api调用层面的`null`响应问题,确保应用在生产环境下的稳定运行。 在React应用开发中,环境变量(如API密钥…

    2025年12月21日
    000

发表回复

登录后才能评论
关注微信