您现在的位置: 首页> 观点 > 正文
每日快讯!使用PyTorch 2.0 加速Hugging Face和TIMM库的模型
发布时间:2022-12-27 15:37:15

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

设为星标,干货直达!


(资料图片仅供参考)

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()**来加...

微速讯:伟星新材获64家机构调研:今年公司产品原材料的价格总体上呈现“前高后低”的趋势,目前处于相对低位(附调研问答)

伟星新材12月26日发布投资者关系活动记录表,公司于2022年12月23日接受64家机构单位调研,机构类型为QFI...

今日热文:个人养老金启动首月:开户超千万 缴存意愿待激活

1000多万人开户、589只产品上架,个人养老金制度启动首月战绩公布。近期,商业银行打响个人养老金开户争...

【当前热闻】知网发布15项整改措施 包括解除独家合作协议、大幅降低数据库服务价格

12月26日,“CNKI知网”微信公众号发布整改公告,回应《国家市场监督管理总局行政处罚决定书》,知网称...

焦点速读:烽火电子(000561):陕西烽火电子股份有限公司控股股东及其一致行动人增持股份的专项核查意见

2022年12月26日公告发布

当前短讯!2023年春风行动即将启动

本报北京12月25日电(记者李心萍)日前,人社部会同工信部、民政部、交通运输部等11个部门部署开展“202...

天天播报:股市存在“大规模恐慌”的风险?马斯克对保证金债务发出警告

(原标题:股市存在“大规模恐慌”的风险?马斯克对保证金债务发出警告)财联社12月25日讯(编辑潇湘)...

环球今热点:广发e秒贷网贷4000逾期会被起诉吗

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

今亮点!新疆举办2022年“高校毕业生就业再攻坚”专场招聘会

中新网乌鲁木齐12月23日电(记者王小军)12月23日,2022年新疆“高校毕业生就业再攻坚”专场招聘会在乌鲁...

环球快播:冰川网络董秘回复:您的问题我们将反馈给公司相关部门,感谢您为公司提出宝贵的意见及建议

冰川网络(300533)12月23日在投资者关系平台上答复了投资者关心的问题。

每日热点:青海华鼎:截止2022年12月20日公司股东人数为35799名

青海华鼎(600243)12月23日在投资者关系平台上答复了投资者关心的问题。

全球焦点!30个产品、10个品牌入选!天府好货·农博会最受欢迎农产品和区域公共品牌正在公示

12月22日,第八届四川农业博览会组委会发布天府好货农博会最受欢迎农产品和区域公共品牌公示名单。

每日讯息!生物谷(833266)12月22日游资资金净卖出12.59万元

截至2022年12月22日收盘,生物谷(833266)报收于7 48元,下跌0 27%,换手率0 1%,成交量1001 77手,成交额74 93万元。12月22

快资讯:因为男方吃醋,所以官宣恋情了?

现在内娱明星谈恋爱,已经很少有“官宣恋情”的操作了。即便如白敬亭宋轶般收获了全网祝福,白敬亭收获...

讯息:众合科技(000925.SZ)及子公司获政府补助合计4438.03万元

智通财经APP讯,众合科技发布公告,自2022年1月份至本公告披露日,公司及子公司累计收到与收益相关的政府...

当前快播:招商证券(香港):维持石四药集团(02005.HK)“增持”评级 目标价升至5.6港元

招商证券(香港)发布研究报告称,维持石四药集团(02005 HK)“增持”评级,预计2021-23财年利润年复合增...

环球快播:中航西飞董秘回复:截至2022年12月20日,公司的股东人数是171,538户

中航西飞(000768)12月21日在投资者关系平台上答复了投资者关心的问题。

全球热推荐:蔚来回应数据被窃取:对此事给用户造成的损失承担责任

20日,蔚来公司发布关于数据安全事件的声明。事件发生后,蔚来对公司网络信息安全进行了排查与强化,以...

当前速递!中海达董秘回复:公司在收到德清联创的告知函后,已就相关问题召开会议讨论并初步了解情况

中海达(300177)12月20日在投资者关系平台上答复了投资者关心的问题。

环球微速讯:《国际科技创新中心指数2022》发布

本报北京12月19日电(记者王昊男)19日,施普林格 自然集团、清华大学产业发展与环境治理研究中心面向全...

观热点:安徽师范大学:在“舞鱼灯”中上一堂文化自信思政课

不久前,在安徽师范大学第51届校运会开幕式上,一幅幅活灵活现的鱼灯“国画”惊艳全场。伴随着悦耳动听...

每日热门:3小时!开发ChatGPT微信小程序

导读|上周OpenAI发布了对话语言模型ChatGPT,相关讨论引爆全网。你是否也迫不及待体验一番?本文特邀作...

全球快资讯丨星光农机:12月16日获融资买入614.13万元

同花顺数据中心显示,星光农机12月16日获融资买入614 13万元,占当日买入金额的19 25%,当前融资余额1...

环球热点!【手慢无】骑行也能充电!永久折叠新国标电动车秒杀低至1538元,送12重豪礼

文|黄晶总编|唐迪永久(FOREVER)代驾折叠新国标电动自行车在京东热卖中,售价低至1888元,超级秒杀领大...

焦点简讯:中金岭南:公司目前已形成铅锌采选年产金属量30万吨生产能力

12月14日,中金岭南(000060 SZ)在接受机构调研时表示,公司目前已形成铅锌采选年产金属量30万吨生产能...

最新消息:益丰药房(603939)12月16日主力资金净买入44.69万元

天天最新:注册会计师百天可以备考吗

每日快报!能源更多市场化仍需多领域改革

热消息:买房贷款十年怎么算了,房价计算器房贷计算器

世界简讯:太阳纸业: 太阳纸业关于吸收合并全资子公司的公告

全球聚焦:信阳市平桥区:电商直播助销售 白菜、萝卜成了“俏巴菜”

热资讯!安债权转让是怎么的

天天信息:跃岭股份:浙江莱达传感科技有限公司尚未投入生产

焦点热议:康力电梯:携手青岛轨交将为6号线一期提供电扶梯及轮椅升降平台

每日看点!安奈儿: 独立董事关于公司第三届董事会第二十四次会议相关事项的独立意见

【焦点热闻】鹏翎股份董秘回复:公司全资子公司河北新欧生产经营正常

今日观点!玻璃钢水箱1立多少钱(玻璃钢水箱厂家多少钱)

天天快播:突出整治重点实现三大提升

世界速递!66岁“鸠摩智”自曝曾陷桃色官司,为还债捱足三年,却获妻子原谅

世界热点!华光环能: 无锡华光环保能源集团股份有限公司2022年第三次临时股东大会的通知

世界资讯:秉扬科技(836675)12月8日游资资金净买入2.41万元

环球即时:九丰能源:公司与中石油、中石化、中海油等开展购销业务

聚焦“智慧无锡·滨纷世界”第五届江苏人工智能大会在无锡闭幕

重庆:到2025年25个重点领域企业能效全部达到基准水平

重磅!2021“发现重庆之美”获奖名单揭晓

去年重庆回收废弃农膜1.4万吨 农膜回收率达89.31%

申报分两批!今年国家级博士后科研工作站新设站工作启动

浙江鄞州:“水、电、气、数”通办专窗实现城乡公共服务均等化

打开“浙里办” 浙江1000家农贸市场农产品可线上比价

浙江鉴湖国家湿地公园规划发布 打造乡村数字旅游

总投资超10亿元!6个石化装备运维项目在岱山签约

如何避免成为“买而不做”的“装备党”祝 杰

山西临汾:率先在全省建起农村集体经济开发区

广东肇庆“毒驾连撞5车致1死”肇事司机被批捕

一线工作近22年的缉毒警:我知道坏的是毒品不是人性

青海保障门源地震后生活必需品应急物资

江西最大文物倒卖案宣判:倒卖国家二级文物 9人获刑

呼和浩特:寒假期间有条件的学校要开展校内托管服务

广西东兴口岸恢复通关 入境需网上预约

天津米面油存量由20天提高至30天 超市菜市场进货量翻倍

天津市委市政府致全市父老乡亲的慰问信:我们一定能够打赢

北京市十五届人大五次会议胜利闭幕

“中国最后一个原始部落”翁丁老寨火灾原因公布

天津:划定封控区 全市开展全员核酸检测

重庆姐弟被生父扔下坠亡案上诉期结束 一审法院暂未收到两被告人上诉状

子夜直击,天津寒天战“疫”

兰州名师话“美育”:“尚乐立人”分层培优 以“美”润教

中国边疆“北方第一所”:9名民警守护“生命禁区”

江歌母亲江秋莲:尊重法院判决,法律认定在我意料之中

河南安阳9日12时至24时新增11例本土确诊病例

辟谣!网传“封控区管控区相继解封”通知并非西安

铁路公安以110幅优秀书画作品庆祝人民警察节

老人5折环卫工8折生活困难免费 这家面馆背后有个暖心事

河南新增本土确诊病例60例

本周中东部冷空气频繁 东北等地有降雪

x 广告
x 广告

Copyright ©  2015-2022 纵横自然网版权所有  备案号:浙ICP备2022016517号-12   联系邮箱:51 46 76 11 3 @qq.com