品牌 资讯 搭配 材料 时尚 热点 行业 首饰 玉石 行情

使用PyTorch 2.0 加速Hugging Face和TIMM库的模型:当前快播

2022-12-24 13:08:53 来源:

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


(资料图)

设为星标,干货直达!

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()**来加速模型,这篇文章我们将介绍如何使用

2022-12-24 13:08:53

全球视讯!民政部:多举措保障养老机构、社会福利机构的老年人和儿童就医用药

​民政部昨天(22日)召开全国养老机构、社会福利机构疫情防控工作视频会议,全力推动养老机构、社会福利机构疫情防控就医用药及时保障工作。尽快

2022-12-23 20:48:12

公司前线|中京电子新增“粤港澳大湾区”概念

​同花顺F10数据显示,2022年12月23日中京电子(002579)新增“粤港澳大湾区”概念。    入选理由是:公司位于广东省惠州市惠城区仲恺高新区

2022-12-23 15:36:47

12.23 恒指、HHI、DJI 、黃金 期貨 實|天天报资讯

​12 23恒指、HHI、DJI、黃金期貨實戰技術交易策略分析+++++++++++++++++++12 22恆指期貨市況對應之前的技術重點應用:

2022-12-23 09:26:49

筠诚和瑞已收到第二轮审核问询函:工信部专精特新小巨人,助力农业农村“双碳”目标实现

​筠诚和瑞环境科技集团股份有限公司于12月22日更新上市申请审核动态,该公司已收到第二轮审核问询函。  同壁财经了解到,筠诚和瑞是服务三农

2022-12-22 21:02:40

【科学的温度】AI换脸火爆的背后:如何防止人工智能技术被“恶用”?

​中新网12月22日电 (记者 李金磊)数字化3 0时代,人类生活越来越离

2022-12-22 15:22:05

标榜股份(301181)12月21日主力资金净卖出371.10万元

​截至2022年12月21日收盘,标榜股份(301181)报收于35 66元,下跌3 2%,换手率6 39%,成交量1 44万手,成交额5136 43万元。12月

2022-12-22 08:57:58

挂牌价24万/平重现,一线城市首现二手房参考价“隐退”:当前动态

​12月21日,有市场消息称广州取消二手房参考价,不过《每日经济新闻》记者从贝壳、链家等平台获悉,原本清一色标有二手房参考价的小区,目前已

2022-12-21 19:18:06

H5开屏从龟速到闪电,企微是如何做到的

​导读|H5开屏龟速常是令开发者头疼的问题。腾讯企业微信团队对该现象进行分析优化,最终H5开屏耗时130ms,达到秒开效果!企微前端开发工程师陈

2022-12-21 14:13:51

【手慢无】23.8英寸144Hz电竞显示器到手666元

​创维F24G3显示器目前在京东的售价699元,本身已经是同类产品中较低的价格了,但还参加满699减33元的优惠,因此最终到手价666元,数字相当吉利

2022-12-21 07:55:00

当前信息:一拖股份: 一拖股份关于与采埃孚一拖(洛阳)车桥有限公司2023年日常关联交易的公告

​证券代码:601038       证券简称:一拖股份        公告编号:临 2022-57              第一拖拉机股份有限公

2022-12-20 18:36:48

严为民:破位趋势,注意减仓!

​说回盘面,今天这个突如其来的大阴线太匪夷所思了,本来预计是一根大阳线,因为上周四的地量以及上周五的地价以后的转折,全市场对于重要会议

2022-12-20 11:40:25

今头条!建立学习分享平台 灯塔工厂激励中小企业数字化转型

​编者按:党的二十大报告明确提出,“加快建设制造强国”“推动制造业高端化、智能化、绿色化发展”,为中国制造业高质量发展指明了方向。灯...

2022-12-20 04:52:58

压垮庞麦郎的最后一根稻草究竟是啥?多维度解析精神病人庞麦郎

​3月11日晚,庞麦郎经纪人白晓发布视频称庞麦郎因患有严重的精神分裂症,被强制送进精神病院,还称庞麦郎犯病时一度想要杀了他。对于经纪人小白

2022-12-19 17:32:31

承德露露董秘回复:公司充分调动员工积极性,激发全体员工活力,强化绩效考核管理,增强执行力及团队凝聚力:环球热资讯

​承德露露(000848)12月19日在投资者关系平台上答复了投资者关心的问题。

2022-12-19 11:56:14

热推荐:《萌探》第四期来袭,预告却“惹怒”观众,粉丝怒斥导演太不走心

​《萌探探探案》是当下比较热门的综艺,节目邀请到了孙红雷、那英、杨紫、黄子韬的助阵,还没开播就备受粉丝期待,不过这样的期待并没有持续太

2022-12-19 06:04:57

马思纯的妈妈看起来好有气质,怪不得是蒋雯丽的亲姐姐! 环球快看

​马思纯的妈妈看起来好有气质啊,怪不得是蒋雯丽的亲姐姐,这姐俩长的还挺像,一看就是很有文化的人!近日,马思纯妈妈参加了亲友的婚礼,现场

2022-12-18 17:34:50

北京双奥背包频繁出镜,塞尔维亚老记:“14年前曾背着它见证梅西夺冠”

​大河报·豫视频特派卡塔尔记者王玮皓在卡塔尔采访世界杯,各国记者们每天带着笔记本电脑穿梭于赛场之间,第一时间发布赛事消息。一个背包,...

2022-12-17 19:26:56

纽约金价小幅上涨

​证券时报e公司讯,纽约商品交易所黄金期货市场交投最活跃的2023年2月黄金期价16日收于每盎司1800 2美元,涨幅为0 69%。市场分析人士认为,当天

2022-12-17 07:21:06

热门-通源环境(688679):独立董事关于第三届董事会第十一次会议相关事项的独立意见

​安徽省通源环境节能股份有限公司独立董事关于第三届董事会第十一次会议相关事项的独立意见根据《上海证券交易所科创板股票上市规则》《关于在

2022-12-16 18:59:05

世界单站容量最大柔性交流输电设备群投运

​世界单站容量最大柔性交流输电设备群投运,7月19日,750千伏沙州变电站2组180兆乏静止无功补偿装置(SVC)完成各项试验验证及试运行,与

2022-12-16 11:48:31

12月15日基金净值:东方红创新趋势混合最新净值0.7132,跌0.1%:焦点短讯

​12月15日,东方红创新趋势混合最新单位净值为0 7132元,累计净值为0 7132元,较前一交易日下跌0 1%。历史数据显示该基金近1个月上涨0 15%,近3

2022-12-16 02:05:51

*ST尤夫: 关于公司股票可能被终止上市的风险提示公告-今热点

​证券代码:002427      证券简称:*ST 尤夫     公告编号:2022-118              浙江尤夫高新纤维股份有限公司 

2022-12-15 17:01:46

涨停雷达:物流个股异动 音飞储存触及涨停

​(原标题:涨停雷达:物流个股异动音飞储存触及涨停)今日走势:音飞储存(603066)今日触及涨停板,该股近一年涨停6次。异动原因揭秘:1、近

2022-12-15 11:22:05

怎样处理民事纠纷啊?有什么具体的法律规定?-世界实时

​你问的调解根据主持调解的第三人身份的不同,可分为民间调解、人民调解、行政调解等。民间调解一般不要求主持调解的第三人具有特殊的身份。比

2022-12-15 01:30:42

淅川县公共资源交易中心:强化信息公开 提高交易透明度

​今年以来,淅川县公共资源交易中心以信息化建设为抓手,通过推行招标计划提前发布制度、招标文件全面公开、交易流程“一屏统揽”等措施,持...

2022-12-14 15:25:24

《釜山行2》:不折不扣的“烂片”,到底“烂”在哪里?

​不知道各位有没有看过前几年由韩国拍摄的《釜山行》。这一部电影刚上映的时候就可谓是掀起一波关于人性的讨论热潮。在东南亚地区可谓是火的一

2022-12-14 09:43:37

环球要闻:网贷逾期104万还不起产生什么后果

​1、产生罚息这是金钱上的损失。如果信用贷款出现逾期,贷款机构会先电话催收贷款,提醒借款人还款,同时利率还会上浮,作为每天的罚息。虽然每

2022-12-13 20:21:23

环球速递!广汇汽车:全国各店面现均已复工复产 经营逐步恢复常态

​根据公司最新数据显示,12月11日新增订单3245台,基本恢复至正常水平

2022-12-13 12:19:58

环球今日报丨斛珠夫人:方诸解毒成功,与帝旭解除柏溪,与方海市隐居海边

​方海市醒来去见方诸,问找她何事?方诸说有话说,随后将方卓英寄来的信给她看,方卓英打败夺洛,瀚洲再无战争,昶王伏法,方海市以为师父又想

2022-12-13 04:27:36