使用PyTorch 2.0 加速Hugging Face和TIMM库的模型

2022-12-25 22:39:30

点蓝色字关注“机器学习算法工程师”


【资料图】

设为星标,干货直达!

PyTorch 2.0引入了**torch.compile()**来加速模型,这篇文章我们将介绍如何使用**torch.compile()**来加速Hugging Face和TIMM库的模型。

torch.compile() 使得尝试不同的编译器后端变得容易,从而使用单行装饰器 torch.compile() 使 PyTorch 代码更快。它可以直接在 nn.Module 上工作,作为 torch.jit.script() 的直接替代品,但不需要您进行任何源代码更改。我们希望这一行代码更改能够为您已经运行的绝大多数模型提供 30%-2 倍的训练时间加速。

opt_module=torch.compile(module)

torch.compile 支持任意 PyTorch 代码、控制流、变异,并带有对动态形状的实验性支持。我们对这一发展感到非常兴奋,我们将其称为 PyTorch 2.0。

这个版本对我们来说不同的是,我们已经对一些最流行的开源 PyTorch 模型进行了基准测试,并获得了 30% 到 2 倍的大幅加速(见https://github.com/pytorch/torchdynamo/issues/681) 。

这里没有技巧,我们已经 pip 安装了流行的库,比如https://github.com/huggingface/transformers, https://github.com/huggingface/accelerate 和 https://github.com/rwightman/pytorch-image-models等流行的库,然后对它们运行 torch.compile() 就可以了。

很难同时获得性能和便利性,但这就是核心团队发现 PyTorch 2.0 如此令人兴奋的原因。Hugging Face 团队也很兴奋,用他们的话说:

TIMM 的主要维护者 Ross Wightman:“PT 2.0 开箱即用,适用于推理和训练工作负载的大多数 timm 模型,无需更改代码。”

Sylvain Gugger 是 transformers 和 accelerate 的主要维护者:“只需添加一行代码,PyTorch 2.0 就可以在训练 Transformers 模型时提供 1.5 到 2.x 的加速。这是引入混合精度训练以来最激动人心的事情!”

本教程将向您展示如何使用这些加速,这样您就可以像我们一样对 PyTorch 2.0 感到兴奋。

安装教程

对于 GPU(新一代 GPU 的性能会大大提高):

pip3installnumpy--pretorch--force-reinstall--extra-index-urlhttps://download.pytorch.org/whl/nightly/cu117

对于CPU:

pip3install--pretorch--extra-index-urlhttps://download.pytorch.org/whl/nightly/cpu

当安装好后,你可以通过以下方式来进行验证:

gitclonehttps://github.com/pytorch/pytorchcdtools/dynamopythonverify_dynamo.py

另外一种安装方式是采用docker,我们还在 PyTorch nightly 二进制文件中提供了所有必需的依赖项,您可以使用它们下载:

dockerpullghcr.io/pytorch/pytorch-nightly

对于临时实验,只需确保您的容器可以访问所有 GPU:

dockerrun--gpusall-itghcr.io/pytorch/pytorch-nightly:latest/bin/bash

使用教程

让我们从一个简单的例子开始,一步步把事情复杂化。请注意,您的 GPU 越新,您可能会看到更显着的加速。

importtorchdeffn(x,y):a=torch.sin(x).cuda()b=torch.sin(y).cuda()returna+bnew_fn=torch.compile(fn,backend="inductor")input_tensor=torch.randn(10000).to(device="cuda:0")a=new_fn()

这个例子实际上不会运行得更快,但它具有教育意义。

以 torch.cos() 和 torch.sin() 为特色的示例,它们是逐点操作的示例,因为它们在向量上逐个元素地进行操作。你可能真正想要使用的一个更著名的逐点运算是类似 torch.relu() 的东西。eager模式下的逐点操作不是最优的,因为每个操作都需要从内存中读取一个张量,进行一些更改,然后写回这些更改。

PyTorch 2.0 为您所做的最重要的优化是融合。

回到我们的示例,我们可以将 2 次读取和 2 次写入变成 1 次读取和 1 次写入,这对于较新的 GPU 来说尤其重要,因为瓶颈是内存带宽(您可以多快地向 GPU 发送数据)而不是计算(您的速度有多快) GPU 可以处理浮点运算)。

PyTorch 2.0 为您做的第二个最重要的优化是 CUDA graphs。CUDA graphs有助于消除从 python 程序启动单个内核的开销。

torch.compile() 支持许多不同的后端,但我们特别兴奋的一个是生成 Triton 内核(https://github.com/openai/triton,用 Python 编写的,但性能优于绝大多数手写的 CUDA 内核)的 Inductor。假设我们上面的示例名为 trig.py,我们实际上可以通过运行来检查代码生成的 triton 内核:

TORCHINDUCTOR_TRACE=1pythontrig.py

@pointwise(size_hints=[16384],filename=__file__,meta={"signature":{0:"*fp32",1:"*fp32",2:"i32"},"device":0,"constants":{},"configs":[instance_descriptor(divisible_by_16=(0,1,2),equal_to_1=())]})@triton.jitdefkernel(in_ptr0,out_ptr0,xnumel,XBLOCK:tl.constexpr):xnumel=10000xoffset=tl.program_id(0)*XBLOCKxindex=xoffset+tl.reshape(tl.arange(0,XBLOCK),[XBLOCK])xmask=xindex

你可以验证融合这两个 sins 确实发生了,因为这两个 sin 操作发生在一个单一的 Triton 内核中,并且临时变量保存在寄存器中,可以非常快速地访问。

下一步,让我们尝试一个真实的模型,比如来自 PyTorch hub 的 resnet50。

importtorchmodel=torch.hub.load("pytorch/vision:v0.10.0","resnet18",pretrained=True)opt_model=torch.compile(model,backend="inductor")model(torch.randn(1,3,64,64))

如果您实际运行,您可能会惊讶于第一次运行很慢,那是因为正在编译模型。后续运行会更快,因此在开始对模型进行基准测试之前预热模型是常见的做法。

您可能已经注意到我们如何在此处使用“inductor”显式传递编译器的名称,但它不是唯一可用的后端,您可以在 torch._dynamo.list_backends() 中运行以查看可用后端的完整列表。为了好玩,您应该尝试 aot_cudagraphs 或 nvfuser。

现在让我们做一些更有趣的事情,我们的社区经常使用来自 transformers (https://github.com/huggingface/transformers) 或 TIMM (https://github.com/rwightman/pytorch-image-models)的预训练模型和我们的设计之一PyTorch 2.0 的目标是任何新的编译器堆栈都需要开箱即用,可以与人们实际运行的绝大多数模型一起工作。因此,我们将直接从 Hugging Face hub 下载预训练模型并对其进行优化。

importtorchfromtransformersimportBertTokenizer,BertModel#Copypastedfromherehttps://huggingface.co/bert-base-uncasedtokenizer=BertTokenizer.from_pretrained("bert-base-uncased")model=BertModel.from_pretrained("bert-base-uncased").to(device="cuda:0")model=torch.compile(model)#Thisistheonlylineofcodethatwechangedtext="Replacemebyanytextyou"dlike."encoded_input=tokenizer(text,return_tensors="pt").to(device="cuda:0")output=model(**encoded_input)

如果您从模型和 encoded_input 中删除 to(device="cuda:0") ,那么 PyTorch 2.0 将生成 C++ 内核,这些内核将针对在您的 CPU 上运行进行优化。你可以检查 Triton 或 C++ 内核的 BERT,它们显然比我们上面的三角函数示例更复杂,但如果你了解 PyTorch,你也可以类似地浏览它并理解。

相同的代码也可以https://github.com/huggingface/accelerate 和 DDP 一起使用。

同样让我们尝试一个 TIMM 示例:

importtimmimporttorchmodel=timm.create_model("resnext101_32x8d",pretrained=True,num_classes=2)opt_model=torch.compile(model,backend="inductor")opt_model(torch.randn(64,3,7,7))

我们使用 PyTorch 的目标是构建一个广度优先的编译器,该编译器将加速人们在开源中运行的绝大多数实际模型。Hugging Face Hub 最终成为我们非常有价值的基准测试工具,确保我们所做的任何优化实际上都有助于加速人们想要运行的模型。

本文翻译自https://pytorch.org/blog/Accelerating-Hugging-Face-and-TIMM-models/

标签:

上一篇 :

下一篇 :

使用PyTorch 2.0 加速Hugging Face和TIMM库的模型

点蓝色字关注“机器学习算法工程师”设为星标,干货直达!​PyTorch2 0引入了**torch compile()**来加...

12-25 22:39:30

世界快看:青春不过几场世界杯

卡塔尔世界杯结束了,阿根廷夺冠,梅西封王,圆满了。我想说青春结束了,却又怕显得矫情。第一次看世界...

12-25 07:44:14

天天头条:美媒:泽连斯基从美返乌后首次公开露面,解释其“罕见的美国之行”

【环球网报道记者索炎琦】当地时间21日,乌克兰总统泽连斯基“突访”华盛顿,与美国总统拜登举行会谈,...

12-24 09:54:57

世界信息:助力经济实现“开门稳” 上交所进一步扩大降费范围

中新网上海12月23日电(高志苗)23日,记者从上海证券交易所获悉,为切实支持实体经济发展、降低市场主体...

12-23 19:08:21

微动态丨延边州天河县交通违章处理要带什么东西

1、车辆行驶证原件或复印件;2、车辆驾驶人驾驶证原件;3、车辆驾驶人身份证原件;4、现金和银行卡。5、如...

12-23 14:28:27

当前看点!华厦眼科(301267)12月22日主力资金净买入1839.55万元

截至2022年12月22日收盘,华厦眼科(301267)报收于70 21元,上涨5 9%,换手率8 09%,成交量4 56万手...

12-23 08:38:59

天天讯息:东易日盛: 简式权益变动报告书(二)

东易日盛:简式权益变动报告书(二)

12-22 19:29:19

【天天新要闻】独家资金:主力进散户逃前10股

12月22日大单净量前十名个股如下:dde大单净量=dde大单净流入量 流通股本股票简称DDE大单净量DDE大单金...

12-22 14:06:00

博瑞医药(688166)12月21日主力资金净买入165.51万元|世界今热点

截至2022年12月21日收盘,博瑞医药(688166)报收于21 08元,下跌2 68%,换手率0 6%,成交量2 46万手...

12-22 07:43:40

鹤壁征地拆迁纠纷律师要给多少钱|全球新动态

1、按件收费收取(1)无财产争议:6000元-20000元之间;(2)法律文书:600元-2000元之间;(3)律师见...

12-21 17:57:58

叶一良:美联储降息就在眼前?油市寡头局面已破,大跌将始

叶一良:美联储降息就在眼前?油市寡头局面已破,大跌将始

12-21 11:57:32

基于.NetCore开发博客项目 StarBlog - (21) 开始开发RESTFul接口_每日速递

1前言最近电脑坏了,开源项目的进度也受到一些影响这篇酝酿很久了,作为本系列第二部分(API接口开发)...

12-21 05:29:51

常润股份: 常熟通润汽车零部件股份有限公司关于使用部分暂时闲置募集资金进行现金管理到期赎回的公告|天天精选

证券代码:603201   证券简称:常润股份       公告编号:2022-027  常熟通润汽车零部件股...

12-20 16:55:33

中航光电(002179)12月19日主力资金净买入7098.17万元-全球速讯

截至2022年12月19日收盘,中航光电报收于58 67元,上涨0 89%,换手率0 33%,成交量5 07万手,成交额...

12-20 10:59:26

环球简讯:还呗网贷逾期暂时还不起有起诉的风险吗

可能会。如果用户使用网贷消费之后出现了逾期,并且经过网贷机构和第三方的催收人员催缴欠款无果之后,...

12-20 00:07:33

快消息!隧道股份: 上海隧道工程股份有限公司第十届监事会第六次会议决议公告

证券代码:600820   股票简称:隧道股份         编号:临 2022-048债券代码:185752  ...

12-19 16:20:13

奕东电子:公司有空气净化消毒机产品 全球要闻

(原标题:奕东电子:公司有空气净化消毒机产品)同花顺(300033)金融研究中心12月19日讯,有投资者向...

12-19 10:38:03

今日视点:鹿邑县:“三举措”积极推进乡镇管理体制机制改革

为深入贯彻落实省委市委关于深化乡镇管理体制机制改革精神,扎实做好乡镇机构改革“后半篇文章”,鹿邑...

12-19 01:22:23

提钱花逾期5个月会不会上征信

网贷逾期一般会上征信,有些借贷机构在用户逾期后一天后就会上报给征信机构,而有些借贷机构则是会在几天...

12-18 13:34:53

【经纬晚班车】皮尔巴拉锂精矿拍卖价年内第二次下跌,全球锂价下行开始?

欢迎来到中新经纬《经纬晚班车》,这里有重要的新闻资讯、财经热点

12-17 15:36:21

12月16日基金净值:汇添富价值领先混合最新净值0.8131,涨0.1% 今日快看

12月16日,汇添富价值领先混合最新单位净值为0 8131元,累计净值为0 8131元,较前一交易日上涨0 1%。...

12-17 01:17:19

瑞松科技(688090.SH):厦门恒兴拟转让5%的股份予自然人赵伟_天天微速讯

格隆汇12月16日丨瑞松科技(688090 SH)公布,公司持股5%以上股东厦门恒兴集团有限公司(“厦门恒兴”)与...

12-16 16:35:34

惠企纾困“拼服务”加速经济回归常态运行

据光明日报报导,在日前召开的企业家座谈会上,广西柳州释放了惠企纾困拼服务、全力加快经济回归常态运...

12-16 10:24:12

*ST紫晶: 独立董事提名人声明

查看原文公告

12-15 22:29:48

浙江将确保医疗和防疫物资不低于3个月用量|全球快看

省市县三级协同,加强药物、口罩、抗原等防疫物资生产和储备,同时做好呼吸机等重症救治资源储备,确保...

12-15 15:22:56

旭辉控股与中国建设银行上海市分行达成银企战略合作

旭辉控股与中国建设银行上海市分行达成银企战略合作2022年12月15日10:11中国网财经

12-15 10:18:48

每日动态!大悦城(000031.SZ):拟公开发行不超15亿元公司债券

格隆汇12月14日丨大悦城(000031)(000031 SZ)发布大悦城控股集团股份有限公司2022年面向专业投资者公开...

12-14 21:24:23

偃师区人民检察院召开提升业务数据质量培训会 天天速看

大河网讯为进一步加强检察业务数据质量,提升工作人员专业技能和业务素养,1月20日下午,偃师区检察院组...

12-14 15:14:29

盘前有料丨阿根廷率先晋级;北京恢复跨省团队游业务…重要消息还有这些

(原标题:盘前有料丨阿根廷率先晋级;北京恢复跨省团队游业务…重要消息还有这些)重要的消息有哪些今...

12-14 08:45:40

光洋股份: 董事会议事规则(修订稿) 当前速讯

常州光洋轴承股份有限公司董事会议事规则(经 2022 年 12 月 13 日召开的公司第四届董事会第二十...

12-13 18:00:12

三门峡集团犯罪律师怎么收费_环球百事通

(一)不涉及财产关系的:2000元-30000元 件。上下浮动幅度:20%但收费额不足2000元的按2000元收取。(二)...

12-13 10:56:58

【环球新要闻】中国一重: 公告2022-032(中国第一重型机械股份公司关于召开2022年第一次临时股东大会的公告)

证券代码:601106     证券简称:中国一重      公告编号:2022--032           ...

12-12 22:09:33

怡达股份(300721)12月12日主力资金净买入159.92万元 天天观热点

截至2022年12月12日收盘,怡达股份(300721)报收于47 83元,下跌3 37%,换手率0 86%,成交量0 61万手...

12-12 15:17:28

热门看点:情感作

书中的主人公是到东北讨生活的南方女人、渡江去俄罗斯闯荡的小舅、孤身一人漂洋过海的豆腐状元、追随恋...

12-12 07:17:20

山东路桥董秘回复:公司在京津冀、长三角、粤港澳大湾区、成渝地区均有承接项目,并通过成立区域总部的方式

山东路桥(000498)12月09日在投资者关系平台上答复了投资者关心的问题。投资者:科技部、住建部印发《“...

12-09 10:28:28

异动快报:南化股份(600301)12月8日9点32分触及涨停板_当前最新

12月8日盘中消息,9点32分南化股份(600301)触及涨停板。目前价格13 15,上涨10 04%。其所属行业工程...

12-08 09:26:18

12月6日基金净值:广发趋势优选灵活配置混合A最新净值1.6736,跌0.1%

12月6日,广发趋势优选灵活配置混合A最新单位净值为1 6736元,累计净值为2 0726元,较前一交易日下跌0...

12-07 01:31:35

适合家养几款植物推荐 好养轻松开出花海

随着夏天的到来,迎来了碗莲的开花期,它喜欢高温的天气,圆圆的叶子,美丽的花朵有很高的观赏价值,在...

09-16 14:23:40

发挥企业自治能动性 武进首个工业园自管会成立

日前,武进国家高新区贺北社区以贺北第一工业园为试点,整合园区资源,优化内部机制,牵头成立了武进首...

08-22 13:32:00

一名本土确诊病例系厦门大学教职工 校方已排查93人均阴性

  中新网11月26日电 据厦门大学微信公众号消息,11月25日18:00,上海市召开新冠肺炎疫情防控新闻发布...

11-26 14:15:17

江西本轮疫情新冠肺炎住院确诊病例“清零”

  (抗击新冠肺炎) 江西本轮疫情新冠肺炎住院确诊病例“清零”  中新网南昌11月26日电 (记者 吴鹏...

11-26 14:15:17

江苏徐州:封控区隔离人员1304人核酸检测均为阴性

  中新网11月26日电 据“徐州发布”微博消息,江苏省徐州市疫情防控应急指挥部发布疫情防控工作进展...

11-26 14:15:16

上海逾5万名筛查对象核酸检测阴性

  (抗击新冠肺炎)上海逾5万名筛查对象核酸检测阴性  中新社上海11月26日电 (记者 陈静)上海25日新...

11-26 14:15:16

“90后”波兰姑娘在中国:想做“小小平民外交官”

  中新网湖州11月26日电(记者 施紫楠)今年是波兰姑娘杰西卡在中国乡村生活的第9年。对于她来说,中国...

11-26 14:15:16

浙大不眠夜:罕见亮起“灿烂星辰”灯 守护师生前行

  中新网杭州11月26日电 题:浙大不眠夜:罕见亮起“灿烂星辰”灯 守护师生前行  作者 谢盼盼 ...

11-26 14:15:16

聚焦2021中国网络媒体论坛展示会 “宝鸡元素”备受追捧

  【聚焦2021中国网络媒体论坛展示会】 “宝鸡元素”备受追捧  11月24日—26日,2021中国网络媒体...

11-26 14:15:15

杭州两名无症状感染者的767名密切接触者核酸为阴性

  中新网杭州11月26日电(张煜欢)25日,杭州市新增两例无症状感染者。26日,杭州市新冠肺炎疫情防控指...

11-26 14:15:15

杭州通报2例无症状感染者处置工作:密接767人核酸均阴性

  中新网11月26日电 据“杭州发布”微信公众号消息,在通报杭州2例无症状感染者后,杭州市加快推进流...

11-26 14:15:14

兰州大学帮扶甘肃山区建“山泉水包”解旱季用水难

  中新网兰州11月26日电 (陈强)“终于有稳定的水源供应了。”看着水管里流出的清澈山泉水,甘肃省平...

11-26 14:15:14

妈妈患病不能自理 女孩休学一年伴其度过最后时光

  这两天,来自单亲家庭的山东青岛女孩刘郦微休学一年陪伴患病妈妈的视频感动无数网友。然而不幸的是...

11-26 14:15:13

世界快看:青春不过几场世界杯
天天头条:美媒:泽连斯基从美返乌后首次公开露面,解释其“罕见的美国之行”
世界信息:助力经济实现“开门稳” 上交所进一步扩大降费范围
微动态丨延边州天河县交通违章处理要带什么东西
当前看点!华厦眼科(301267)12月22日主力资金净买入1839.55万元
天天讯息:东易日盛: 简式权益变动报告书(二)
【天天新要闻】独家资金:主力进散户逃前10股
博瑞医药(688166)12月21日主力资金净买入165.51万元|世界今热点
鹤壁征地拆迁纠纷律师要给多少钱|全球新动态
叶一良:美联储降息就在眼前?油市寡头局面已破,大跌将始
基于.NetCore开发博客项目 StarBlog - (21) 开始开发RESTFul接口_每日速递
常润股份: 常熟通润汽车零部件股份有限公司关于使用部分暂时闲置募集资金进行现金管理到期赎回的公告|天天精选
中航光电(002179)12月19日主力资金净买入7098.17万元-全球速讯
环球简讯:还呗网贷逾期暂时还不起有起诉的风险吗
快消息!隧道股份: 上海隧道工程股份有限公司第十届监事会第六次会议决议公告
奕东电子:公司有空气净化消毒机产品 全球要闻
今日视点:鹿邑县:“三举措”积极推进乡镇管理体制机制改革
提钱花逾期5个月会不会上征信
【经纬晚班车】皮尔巴拉锂精矿拍卖价年内第二次下跌,全球锂价下行开始?
12月16日基金净值:汇添富价值领先混合最新净值0.8131,涨0.1% 今日快看
瑞松科技(688090.SH):厦门恒兴拟转让5%的股份予自然人赵伟_天天微速讯
惠企纾困“拼服务”加速经济回归常态运行
*ST紫晶: 独立董事提名人声明
浙江将确保医疗和防疫物资不低于3个月用量|全球快看
旭辉控股与中国建设银行上海市分行达成银企战略合作
每日动态!大悦城(000031.SZ):拟公开发行不超15亿元公司债券
偃师区人民检察院召开提升业务数据质量培训会 天天速看
盘前有料丨阿根廷率先晋级;北京恢复跨省团队游业务…重要消息还有这些
光洋股份: 董事会议事规则(修订稿) 当前速讯
三门峡集团犯罪律师怎么收费_环球百事通
【环球新要闻】中国一重: 公告2022-032(中国第一重型机械股份公司关于召开2022年第一次临时股东大会的公告)
怡达股份(300721)12月12日主力资金净买入159.92万元 天天观热点
热门看点:情感作
山东路桥董秘回复:公司在京津冀、长三角、粤港澳大湾区、成渝地区均有承接项目,并通过成立区域总部的方式
异动快报:南化股份(600301)12月8日9点32分触及涨停板_当前最新
12月6日基金净值:广发趋势优选灵活配置混合A最新净值1.6736,跌0.1%
适合家养几款植物推荐 好养轻松开出花海
发挥企业自治能动性 武进首个工业园自管会成立
一名本土确诊病例系厦门大学教职工 校方已排查93人均阴性
江西本轮疫情新冠肺炎住院确诊病例“清零”
江苏徐州:封控区隔离人员1304人核酸检测均为阴性
上海逾5万名筛查对象核酸检测阴性
“90后”波兰姑娘在中国:想做“小小平民外交官”
浙大不眠夜:罕见亮起“灿烂星辰”灯 守护师生前行
聚焦2021中国网络媒体论坛展示会 “宝鸡元素”备受追捧
杭州两名无症状感染者的767名密切接触者核酸为阴性
杭州通报2例无症状感染者处置工作:密接767人核酸均阴性
兰州大学帮扶甘肃山区建“山泉水包”解旱季用水难
妈妈患病不能自理 女孩休学一年伴其度过最后时光
辽宁大连新增1例本土确诊病例 系庄河市某小学学生
X 广告
行业动态
X 广告

Copyright ©  2015-2022 人人植物网版权所有  备案号:粤ICP备18023326号-36   联系邮箱:8557298@qq.com