写点什么

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:003790

评论

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

叮咚!参与微服务免费试用,有机会获得腾讯内推资格!

InfoQ写作社区官方

腾讯云 微服务 热门活动

从二十年开源经历出发,70 后大龄程序员谈成长、困境与突围

TDengine

数据库 tdengine 开源

教你VUE中的filters过滤器2种用法

华为云开发者联盟

Vue 过滤器 filters过滤器 组件过滤器 全局过滤器

OpenHarmony标准设备应用开发(三)——分布式数据管理

OpenHarmony开发者

OpenHarmony 分布式数据

春暖花开,等你而来!4月月更挑战开始啦!

InfoQ写作社区官方

热门活动 4月月更

如何快速实现持续交付

阿里云云效

云计算 阿里云 软件开发 CI/CD 持续交付

向工程腐化开炮 | 治理思路全解

阿里巴巴终端技术

Java android 腐化治理 工程腐化

产品FAQ(常见问题)文档模版

小炮

产品 FAQ

昇思MindSpore行至2022,开源社区成就生态共赢

这不科技

华为 昇思MindSpore

下拉推荐在 Shopee Chatbot 中的探索和实践

Shopee技术团队

算法 chatbot 推荐算法

深入垂直业务场景,SaaS版供应商业务协同管理系统促进企业与供应商高效协同

数商云

数字化转型 供应链系统

华为云GaussDB专家走进课堂,跟莘莘学子聊聊数据库

华为云数据库小助手

GaussDB GaussDB(for openGauss) GaussDB(for MySQL)

软件定义存储厂商大道云行加入龙蜥社区

OpenAnolis小助手

生态 存储技术 龙蜥社区 大道云行 CLA

汉化版postman

Liam

Jmeter Postman 接口测试 API swagger

小程序开发入门教程

CRMEB

Git教程-帮助开发人员更好的运用Git | 云效

阿里云云效

git 云计算 阿里云 DevOps 开发者

明天直播:如何测试硬件设备与龙蜥操作系统的兼容性?

OpenAnolis小助手

硬件 直播 开源社区 sig 兼容性

异构注册中心机制在中国工商银行的探索实践

SOFAStack

GitHub 开源 分布式架构 注册中心 工商银行

Facebook 开源 Golang 实体框架 Ent 现已支持 TiDB

Geek_2d6073

云时代,租电脑还是初创型企业最好的选择吗?

阿里云弹性计算

远程办公 无影云电脑 初创型企业

VuePress 博客搭建系列 33 篇正式完结!

冴羽

JavaScript Vue 前端 vuepress 博客搭建

利用 IoTDB 替换 OpenTSDB,服务大唐集团60家电厂,减少95%运维成本

Apache IoTDB

Apache IoTDB

适合 Kubernetes 初学者的一些实战练习 (三)

汪子熙

云原生 集群 Kubernetes 集群 Kubernetes, 云原生, eBPF 3月月更

外部数据的合规引入助力银行用户营销系统冷启动

易观分析

隐私计算

《LeetCode 刷题报告》题解内容Ⅱ

謓泽

3月月更

墨天轮访谈 | 华为云温云博:从客户视角出发,GaussDB(for Redis)究竟“香”在哪里?

墨天轮

数据库 redis 华为云 国产数据库 键值数据库

后端开发—一文详解网络IO模型

Linux服务器开发

reactor 后端开发 Linux服务器开发 网络io 网络模型

Tapdata 肖贝贝:实时数据引擎系列(六)-从 PostgreSQL 实时数据集成看增量数据缓存层的必要性

tapdata

数据库 实时数据

Rust Cell 与RefCell,有啥区别?

非凸科技

一文带你了解 Python 中的迭代器

踏雪痕

Python 3月程序媛福利 3月月更

week4作业

Asha

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