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

2022-12-30 02:40:58

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


(相关资料图)

设为星标,干货直达!

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-30 02:40:58

今日快看!豫园股份:80亿元定增化解债务难题

依靠不断收购,豫园股份盈利维持增长,收购放缓盈利迅速变脸,因收购带来的负债却难以化解。  杨现华...

12-29 19:20:29

《回来的女儿》程威父母_当前聚焦

《回来的女儿》中的程威和陈佑希一起在寻找小秀的下落,而从已经播出的剧情我们可以发现,当年程威的父...

12-29 17:32:09

电魂网络(603258)12月29日主力资金净买入278.94万元:全球快报

截至2022年12月29日收盘,电魂网络(603258)报收于21 0元,下跌2 78%,换手率1 47%,成交量3 6万手,...

12-29 15:27:28

中原消费金融贷款逾期36年不还会上征信吗_热讯

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

12-29 13:22:04

广信材料投资成立光能科技新公司

(原标题:广信材料投资成立光能科技新公司)企查查APP显示,近日,江苏莱特光能科技有限公司成立,法定...

12-29 11:44:15

山西今年煤炭产量超13亿吨 连续两年增产1亿吨以上

记者近日从山西省能源局获悉:截至12月27日,山西今年煤炭产量已超13亿吨,占全国产量近1 3。近年来,...

12-29 09:50:21

民事法律上的婚前财产的纠纷:全球视点

婚前财产产生纠纷的可以通过调解或向法院起诉解决,注意保留相关证据。其次看两人关系是不是夫妻,以及...

12-28 16:59:49

民法典这样规定了侵权责任的成立条件是什么

侵权责任的成立条件如下:1、行为:违法行为是指公民或者法人违反法定义务、违反法律禁止性规定而实施的...

12-28 14:15:57

巨人网络:12月27日获融资买入701.95万元,占当日流入资金比例20.35%:热头条

同花顺数据中心显示,巨人网络12月27日获融资买入701 95万元,占当日买入金额的20 35%,当前融资余额5...

12-28 10:25:54

每日热门:成都武侯区新冠疫苗加强针到苗消息(持续更新)

武侯区开打新冠疫苗第二剂加强针啦!武侯区12月26日--2023年1月1日新冠疫苗接种安排来了!(包括第一针、第...

12-28 04:28:10

重庆42批公租房申请指南(网上申请+现场申请)-天天时讯

一、42批公租房详细情况申请开始时间:即日起;申请截止时间:暂未公布,预计在2023年3月中下旬,凡在申...

12-27 18:37:42

我国有哪些法定传染病?“乙类甲管”和“乙类乙管”有何不同?专家解读→_环球滚动

26日,国家卫生健康委员会办公厅印发《关于对新型冠状病毒感染实施“乙类乙管”的总体方案》。方案指出...

12-27 14:50:46

马斯克被曝架子大:访客等1个小时才能见人 还不能先开口

作为全球首富,马斯克要是没有android点架子,听上去也不够真实。不过,架子太大的话,也分分钟得罪一圈...

12-27 09:45:08

冬笋要煮多久才能吃 冬笋要煮多长时间才能吃

1、冬笋煮10-15分钟能吃。2、冬笋既可以生炒,又可炖汤,其味鲜美爽脆。食用时最好先用清水煮滚,放到冷...

12-26 22:28:58

百事通!中伟股份(300919.SZ)子公司湖南中伟新能源拟增资扩股引入交银投资等投资者

智通财经APP讯,中伟股份发布公告,公司全资子公司湖南中伟新能源科技有限公司(“湖南中伟新能源”)拟通...

12-26 15:54:16

平安双季增享6个月持有债券增聘俞瑶 年内下跌11%:天天看热讯

平安双季增享6个月持有债券增聘俞瑶年内下跌11%

12-26 10:20:36

超越ConvNeXt!Transformer 风格的卷积网络视觉基线模型Conv2Former

↑点击蓝字关注极市平台作者丨科技猛兽编辑丨极市平台极市导读本文提出一种卷积调制模块,利用卷积来建...

12-25 23:45:55

个人养老金试点满月:个人选择自主投资 保险业务加速拓展:全球播报

个人养老金试点满月:个人选择自主投资保险业务加速拓展2022年12月25日08:18央视新闻来源:央视新闻客户...

12-25 08:20:46

广西乐望高速大坪子隧道顺利贯通_精彩看点

大坪子隧道贯通。12月23日,由中铁一局承建的乐业至望谟高速公路大坪子隧道右洞顺利贯通。这是全线首座...

12-24 10:18:25

耀皮玻璃拟3.05亿元收购艾杰旭100%股权

北京商报讯(记者马换换)12月23日晚间,耀皮玻璃(600819)披露公告称,公司拟投资3 05亿元收购艾杰旭特...

12-23 19:17:30

过期芝麻用途 过期芝麻还有哪些用途-天天速递

1、过期的黑芝麻可以直接放在花盆里面加水腐烂给盆栽增加养分。2、如果是已经炒好了的黑芝麻过期,通常...

12-23 14:29:59

日经225股指期货 (OSE) (H3) 当日内交易策略: 在 26290.00 之下 目标价位为 25900.00(20221223)

在26290 00之下,看跌,目标价位为25900 00,然后为25720 00。转折点:26290 00交易策略:在26290 00...

12-23 09:06:54

环球即时看!福建鼓励台湾青年来闽实习实训就业创业 2022年度申报即将截止

中新网福州12月22日电(叶秋云叶艺琳)凡注册地在福建省,持续经营2年以上,且企业从业人员50人以上的各企...

12-22 19:44:52

博彩公司遭黑客攻击,67000账户被窃,损失超30万!公司称登录信息由第三方泄露

大数据文摘出品作者:Caleb12月19日,卡塔尔世界杯落幕,总决赛可以说是让观众一直紧绷神经。梅西带领的...

12-22 14:10:13

数字人民币扩围提升金融普惠性_新动态

数字人民币试点地区近期再度扩围。据数字人民币APP显示,除了最早开展试点的深圳、苏州、雄安、成都四地...

12-22 07:49:31

上证50股指期权怎么开户?交易规则是什么?-每日速讯

上证50股指期权怎么开户?交易规则是什么?

12-21 17:58:15

苗检提当选无效之诉 锺东锦轰为政党服务

针对无党籍苗栗县长当选人、议长锺东锦遭苗栗地检署提起当选无效之诉,锺东锦上午召开记者会反击,批评...

12-21 12:08:29

天天热资讯!圆通速递国际(06123.HK)拟更名为“圆通国际快递”

格隆汇12月21日丨圆通速递(600233)国际(06123 HK)发布公告,公司英文名称已由“YTOExpress(International)Hold

12-21 06:06:59

汇成股份(688403.SH)拟向子公司江苏汇成增资3亿元并投资3.23亿元建设12吋晶圆金凸块封测项目

智通财经APP讯,汇成股份发布公告,为实现公司优化产业布局和适度扩大12吋晶圆金凸块封测产能规模的目标...

12-20 17:04:28

XM外汇:怎样正确利用外汇资讯的信息

XM外汇:怎样正确利用外汇资讯的信息

12-20 10:57:14

天天新消息丨12月16日基金净值:朱雀企业优选A最新净值1.0495,跌0.8%

12月16日,朱雀企业优选A最新单位净值为1 0495元,累计净值为1 0495元,较前一交易日下跌0 8%。历史...

12-20 00:12:05

每日报道:当心火灾隐患!北京市应急局发布10条消毒剂使用提醒

北京日报客户端|记者任珊疫情期间,酒精消毒液、酒精湿巾等消毒物品的使用量增大,酒精易挥发,若是使用...

12-19 16:18:52

【港股通】瑞声科技(02018)跌逾2% 决定推迟分拆诚瑞光学于上交所上市 即时看

瑞声科技盘中股价反复走低,最新报17 24港元,跌2 16%,成交额1421 98万港元。瑞声科技发布公告,公...

12-19 11:00:23

*ST尤夫迎国资入主 重整计划推进有望挽救危局:世界报道

12月17日,*ST尤夫发布公告称,重整产业投资人的股份过户登记已完成,公司控股股东变更为共青城胜帮凯米...

12-19 01:36:22

《花木兰》令人惊悚的化妆,郑佩佩的让人忍无可忍

由迪斯尼投拍的电影《花木兰》将于9月11日上映。这里对影片的剧情不做评论,只对角色的化妆风格吐吐槽。...

12-18 14:23:47

苏新消费冬季购物节启动 苏宁易购联合百大品牌发放10亿补贴|热门

为营造消费氛围、提振消费信心、释放消费需求,进一步推动消费回升,政企促消费举措持续加码。12月16日...

12-17 16:01:19

转租如何签订合同?-世界时快讯

房屋转租的话需要注意以下几个问题:第一,转租的期限不成超过出租人与原房东签订的租赁合同剩余的期限...

12-17 01:40:05

今日讯!安正时尚: 安正时尚集团股份有限公司关于持股5%以上股东办理股票质押式回购交易提前购回的公告

安正时尚:安正时尚集团股份有限公司关于持股5%以上股东办理股票质押式回购交易提前购回的公告

12-16 16:49:11

大摩CIO:明年上半年标普500或跌25% 企业利润率将承受重压-全球报资讯

(原标题:大摩CIO:明年上半年标普500或跌25%企业利润率将承受重压)财联社12月16日讯(编辑周子意)摩...

12-16 10:37:19

今日观点!火龙果多少钱一斤2020,今日火龙果多少钱一斤

在湖南长沙,白心6块多,季节性和区域性在5-10元之间。这个便宜,沙糖橙,又名火龙果,红龙果。5块钱3点...

12-15 22:55:33

方大新材(838163)12月15日散户资金净卖出1990.00元-全球滚动

截至2022年12月15日收盘,方大新材(838163)报收于5 53元,上涨0 18%,换手率0 03%,成交量0 02万手...

12-15 15:48:33

环球热消息:俄媒:西方寻求摆脱乌克兰危机出路

参考消息网12月11日报道俄罗斯《生意人报》网站12月5日刊登题为《协商乌克兰的胜利——美国及其盟友寻找...

12-15 10:36:45

疫情过渡期,阳性居家工资如何发放?:每日快讯

疫情防控政策优化调整后,新冠阳性感染者从集中隔离转为以居家隔离为主。上海对外经贸大学法学院数字法...

12-14 21:38:43

上海港湾(605598)12月14日主力资金净卖出408.17万元

截至2022年12月14日收盘,上海港湾(605598)报收于29 43元,下跌3 38%,换手率4 93%,成交量2 59万手...

12-14 14:55:21

全球即时看!天弘中证800指数A基金经理变动:张子法不再担任该基金基金经理

2022年12月14日,天弘中证800(001588)发布公告,张子法不再担任该基金基金经理,离任日期为2022年12月...

12-14 09:06:08

上海至南京至合肥高铁崇启公铁长江大桥首根钻孔桩正式开钻

记者12月13日从中国铁路上海局集团有限公司获悉,12月12日14时58分,在长江北岸江苏省启东市北新镇安联...

12-13 18:19:32

辽宁昨日新增本土确诊病例14例、本土无症状感染者36例-世界讯息

辽宁发布微信公众号12月12日0-24时,辽宁省新增本土阳性感染者50例(29例为隔离医学观察场所检出人员)...

12-13 11:07:34

天天观焦点:南微医学: 南京证券股份有限公司关于南微医学部分募投项目延期之核查意见

南京证券股份有限公司           关于南微医学科技股份有限公司            部...

12-12 22:49:46

【天天速看料】天源迪科董秘回复:公司将持续专注业务,提升业绩表现

天源迪科(300047)12月12日在投资者关系平台上答复了投资者关心的问题。投资者:近期,“中字头”概念股...

12-12 15:32:06

今日快看!豫园股份:80亿元定增化解债务难题
《回来的女儿》程威父母_当前聚焦
电魂网络(603258)12月29日主力资金净买入278.94万元:全球快报
中原消费金融贷款逾期36年不还会上征信吗_热讯
广信材料投资成立光能科技新公司
山西今年煤炭产量超13亿吨 连续两年增产1亿吨以上
民事法律上的婚前财产的纠纷:全球视点
民法典这样规定了侵权责任的成立条件是什么
巨人网络:12月27日获融资买入701.95万元,占当日流入资金比例20.35%:热头条
每日热门:成都武侯区新冠疫苗加强针到苗消息(持续更新)
重庆42批公租房申请指南(网上申请+现场申请)-天天时讯
我国有哪些法定传染病?“乙类甲管”和“乙类乙管”有何不同?专家解读→_环球滚动
马斯克被曝架子大:访客等1个小时才能见人 还不能先开口
冬笋要煮多久才能吃 冬笋要煮多长时间才能吃
百事通!中伟股份(300919.SZ)子公司湖南中伟新能源拟增资扩股引入交银投资等投资者
平安双季增享6个月持有债券增聘俞瑶 年内下跌11%:天天看热讯
超越ConvNeXt!Transformer 风格的卷积网络视觉基线模型Conv2Former
个人养老金试点满月:个人选择自主投资 保险业务加速拓展:全球播报
广西乐望高速大坪子隧道顺利贯通_精彩看点
耀皮玻璃拟3.05亿元收购艾杰旭100%股权
过期芝麻用途 过期芝麻还有哪些用途-天天速递
日经225股指期货 (OSE) (H3) 当日内交易策略: 在 26290.00 之下 目标价位为 25900.00(20221223)
环球即时看!福建鼓励台湾青年来闽实习实训就业创业 2022年度申报即将截止
博彩公司遭黑客攻击,67000账户被窃,损失超30万!公司称登录信息由第三方泄露
数字人民币扩围提升金融普惠性_新动态
上证50股指期权怎么开户?交易规则是什么?-每日速讯
苗检提当选无效之诉 锺东锦轰为政党服务
天天热资讯!圆通速递国际(06123.HK)拟更名为“圆通国际快递”
汇成股份(688403.SH)拟向子公司江苏汇成增资3亿元并投资3.23亿元建设12吋晶圆金凸块封测项目
XM外汇:怎样正确利用外汇资讯的信息
天天新消息丨12月16日基金净值:朱雀企业优选A最新净值1.0495,跌0.8%
每日报道:当心火灾隐患!北京市应急局发布10条消毒剂使用提醒
【港股通】瑞声科技(02018)跌逾2% 决定推迟分拆诚瑞光学于上交所上市 即时看
*ST尤夫迎国资入主 重整计划推进有望挽救危局:世界报道
《花木兰》令人惊悚的化妆,郑佩佩的让人忍无可忍
苏新消费冬季购物节启动 苏宁易购联合百大品牌发放10亿补贴|热门
转租如何签订合同?-世界时快讯
今日讯!安正时尚: 安正时尚集团股份有限公司关于持股5%以上股东办理股票质押式回购交易提前购回的公告
大摩CIO:明年上半年标普500或跌25% 企业利润率将承受重压-全球报资讯
今日观点!火龙果多少钱一斤2020,今日火龙果多少钱一斤
方大新材(838163)12月15日散户资金净卖出1990.00元-全球滚动
环球热消息:俄媒:西方寻求摆脱乌克兰危机出路
疫情过渡期,阳性居家工资如何发放?:每日快讯
上海港湾(605598)12月14日主力资金净卖出408.17万元
全球即时看!天弘中证800指数A基金经理变动:张子法不再担任该基金基金经理
上海至南京至合肥高铁崇启公铁长江大桥首根钻孔桩正式开钻
辽宁昨日新增本土确诊病例14例、本土无症状感染者36例-世界讯息
天天观焦点:南微医学: 南京证券股份有限公司关于南微医学部分募投项目延期之核查意见
【天天速看料】天源迪科董秘回复:公司将持续专注业务,提升业绩表现
嘉华股份董秘回复:ADM是公司主要的国际市场竞争对手之一
X 广告
资讯
X 广告

Copyright ©  2015-2022 世界畜牧网版权所有  备案号:琼ICP备2022009675号-1   联系邮箱:435 227 67@qq.com