硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

PyTorch 2.0 编译器提高了模型训练速度

  • 2023-05-02
    北京
  • 本文字数:1235 字

    阅读完需:约 4 分钟

PyTorch 2.0编译器提高了模型训练速度

PyTorch基金会最近发布了PyTorch 2.0版本,这是一个 100%向后兼容的更新。该版本的主要 API 贡献是为深度学习模型提供了一个编译函数,可以加快训练速度。163 个开源人工智能项目的内部基准测试显示,在训练期间,这些模型平均运行速度提高了 43%。

 

PyTorch 2.0 的发布计划于 2022 年 12 月在PyTorch大会上宣布。除了新的编译特性外,该版本还包括通过缩放点积注意力(SDPA)的新实现来提高 Transformer-based 模型(如大语言模型和扩散模型)的性能。通过改进的Metal Performance Shaders(MPS)加快了在 Apple Silicon 上的训练,目前在 MPS 中实施了 300 项操作。除了核心版本外,包括 TorchAudio、TorchVision 和 TorchText 在内的域库也更新了新的测试版功能。总体而言,自 1.13.1 版本发布以来,2.0 版本包含了来自 428 名开发人员的 4500 多次提交。PyTorch 基金会的博客上写到:

 

能宣布 PyTorch®2.0 的发布,我们很激动,我们在 2022 年 12 月 2 日的 PyTorch 大会上强调了这一点!PyTorch 2.0 提供了相同的动态图模式(eager-mode)开发和用户体验,同时从根本上改变并加强了 PyTorch 在编译器级别的操作方式,提供了更快的性能和对动态形状和分布式的支持。

 

在 2022 年 PyTorch 大会的主题演讲中,PyTorch 联合创始人Soumith Chintala指出,由于 GPU 计算能力的增加,许多现有的 PyTorch 工作负载受到了内存带宽或 PyTorch 框架开销的限制。此前,PyTorch 团队通过用 C++编写一些核心组件来解决性能问题;Chintala 将 PyTorch 描述为“基本上是一个 C++代码库”,并表示他“讨厌”为 C++组件做出贡献。

 

新的编译特性基于四个用 Python 编写的底层组件:

 

  • TorchDynamo——通过将表示深度学习模型的 Python 代码重写为计算图块来执行图的获取

  • AOTAutograd ——为后退步骤执行“提前”自动微分

  • PrimTorch——将超过 2k 个 PyTorch 操作符规范化为固定的约 250 个原始操作符

  • TorchInductor——为加速器生成特定于硬件的快速后端代码

 

为了演示编译函数的性能改进和易用性,PyTorch 团队确定了 163 个开源深度学习项目进行基准测试。其中包括各种任务的实现,包括计算机视觉、自然语言处理和强化学习。除了对编译函数的单行调用外,该团队没有对代码进行任何更改。这一单一改动在 93%的项目中有效,在NVIDIA A100 GPU 上训练时,编译后的模型的运行速度提高了 43%。

 

在黑客新闻(Hacker News)关于此次发布的讨论中,一位用户指出

 

通过与其他框架相比,我从 PyTorch 中学到的一条重要教训是,生产力胜过增量的性能改进。Caffe 和 MXNet 都以速度快为卖点的,但显然在此处或这里的速度都快了一些,但这并不重要。另一方面,一旦我们让一个系统运行并流行起来,社区将会以比竞争对手预期更快地缩小性能差距。另一个教训可能是老生常谈的但同样值得重复:对开源项目的投资和专业打磨很重要。

 

PyTorch的代码2.0版本的发布说明可在 GitHub 上获得。

 

原文链接:

https://www.infoq.com/news/2023/03/pytorch-release-compile/


相关阅读:

里程碑!PyTorch 正式加入 Linux 基金会,社区治理这一核心将不会改变

深度学习为什么要选择 PyTorch

2023-05-02 08:004134

评论

发布
暂无评论
发现更多内容

IDC:阿里云位居2021年中国关系型数据库市场第一

Lily

招生报名小程序开发笔记二:功能需求设计

CC同学

袋鼠云数栈基于CBO在Spark SQL优化上的探索

袋鼠云数栈

金融信创爆发年!袋鼠云数栈DTinsight全线产品通过信通院信创专项测试

袋鼠云数栈

在小程序中SVG的打开方式

Geek_99967b

小程序 SVG

一步一图带你深入剖析 JDK NIO ByteBuffer 在不同字节序下的设计与实现

bin的技术小屋

网络编程 Netty nio Java Concurrency java nio

开源一夏 | jQuery scroll() 滚动加载列表 获取腾讯云图片像素信息

六月的雨在InfoQ

开源 COS ​jQuery 8月月更

云图说丨初识云速建站服务

华为云开发者联盟

云计算 网站 华为云 搭建网站

2022年了,你还不会手撕轮播图?

知心宝贝

JavaScript 算法 前端 可视化 签约计划第三季

2022-08微软漏洞通告

火绒安全

microsoft 终端安全 安全漏洞

武汉链(基于ETH)BSN官方DDC链上数据解析

BSN研习社

区块链

一张图,理清微服务架构路线(收藏)

C++后台开发

微服务 微服务架构 Linux服务器开发 C/C++后台开发 C/C++开发

招生报名小程序开发笔记三:数据库设计

CC同学

直播预告 | Authing 如何打造云原生 SaaS 产品架构?

Authing

走好数据中台最后一公里,为什么说数据服务API是数据中台的标配?

袋鼠云数栈

PHP 项目对接视频号原来如此简单,小白也能轻松完成【带附件】

CRMEB

离线数仓建设,企业大数据的业务驱动与技术实现丨03期直播回顾

袋鼠云数栈

元宇宙|高阶音频处理能力,让声音「声临其境」

融云 RongCloud

音视频技术

编译器优化:何为SLP矢量化

华为云开发者联盟

开发 编译器 SLP

DTMO直播预告|Taier的Web前端架构解析

袋鼠云数栈

实时开发平台建设实践,深入释放实时数据价值丨04期直播回顾

袋鼠云数栈

招生报名小程序开发笔记一:开发背景和技术方案的选型确定

CC同学

黄东旭,TiDB的灵魂骑手,和他的叛逆“问答”

B Impact

【接入指南 之 云云接入】快速接入HONOR Connect平台(上)

荣耀开发者服务平台

IoT 新手指南 万物互联 荣耀 honor

Apache APISIX 在微软云 ARM 和 x86 服务器上的性能测试对比

API7.ai 技术团队

API网关 APISIX 微软云

你的数据是如何泄露的?企业和个人应该这样做……

火绒安全

安全漏洞 数据泄露 黑客攻击

阿里内部流出的绝密文档JDK源码学习笔记(2022版)限时分享

Java工程师

Java 源码 jdk

基于SpringBoot的OnlineMusicPlayer项目

bug郭

签约计划第三季 8月月更

实时云渲染——让元宇宙从科幻走入现实

Finovy Cloud

云渲染 GPU渲染

如何读取redis的手机号验证码数据,实现自动化登录测试

Liam

程序员 测试 自动化测试 测试开发 测试自动化

当科学家决定搞点“花里胡哨”的东西

图灵教育

PyTorch 2.0编译器提高了模型训练速度_AI&大模型_Anthony Alford_InfoQ精选文章