使用PyTorch 2.0 加速Hugging Face和TIMM库的模型 - 行业资讯 -

当前位置:首页  >  行业资讯  > 正文

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

使用PyTorch 2.0 加速Hugging Face和TIMM库的模型
2022-12-29 16:34:50

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


(相关资料图)

设为星标,干货直达!

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/

标签: 绝大多数 基准测试 的目标是

(责任编辑:news01)
动态:益通股份副董事长贺艳丽辞职席飞飞接任2022上半年公司净利752.38万

动态:益通股份副董事长贺艳丽辞职席飞飞接任2022上半年公司净利752.38万

挖贝网12月21日,益通股份(832357)发公告称,公司董事会于2022年12月21日收到副董事长贺艳丽递交的辞...
12-21 21:41:48
热资讯!永清环保董秘回复:截止至2022年12月20日,公司股东总户数约为2.63万户

热资讯!永清环保董秘回复:截止至2022年12月20日,公司股东总户数约为2.63万户

永清环保(300187)12月21日在投资者关系平台上答复了投资者关心的问题。投资者:您好,请问,贵公司截止1...
12-21 15:09:13
第一运程 2023年4月1日十二生肖运势解析

第一运程 2023年4月1日十二生肖运势解析

属鼠综合:82爱情:80财运:84事业:83感情运势:异地对彼此是一种考验,只要能够扛得住这段分开的时间...
12-21 09:18:50
央行:保险业机构今年三季度末总资产为26.71万亿元 同比增长9.8% 全球要闻

央行:保险业机构今年三季度末总资产为26.71万亿元 同比增长9.8% 全球要闻

12月20日,中国人民银行网站发布消息,初步统计,2022年三季度末,我国金融业机构总资产为413 46万亿元...
12-20 20:26:15
元隆雅图董秘回复:关于产品销售情况及对业绩的影响请关注公司后续公告

元隆雅图董秘回复:关于产品销售情况及对业绩的影响请关注公司后续公告

元隆雅图(002878)12月20日在投资者关系平台上答复了投资者关心的问题。投资者:阿根廷夺冠对贵公司产品...
12-20 13:46:58
天天观点:苹果App Store被法国罚款100万美元:Epic CEO、扎克伯格都曾痛批

天天观点:苹果App Store被法国罚款100万美元:Epic CEO、扎克伯格都曾痛批

苹果的AppStore一直都是各国重点整治对象,因为其有太多不合理的霸王条款,且抽成比例巨大,开发者苦不...
12-20 07:52:37
好的领域模型应该是什么样子?

好的领域模型应该是什么样子?

​好的领域模型应该长什么样子?DDD说,领域模型应该是可以准确表达业务需求的模型。模型和领域模型是两...
12-19 18:43:43
金宏气体董秘回复:工业气体通常作为下游客户生产关键原材料,被称为“工业的味精”,应用领域广泛|全球观热点

金宏气体董秘回复:工业气体通常作为下游客户生产关键原材料,被称为“工业的味精”,应用领域广泛|全球观热点

金宏气体(688106)12月19日在投资者关系平台上答复了投资者关心的问题。投资者:近四年来公司的前五大客...
12-19 13:54:27
5 年的前端成长计划 - 仅剩 300 名额 - 打破职业发展壁垒

5 年的前端成长计划 - 仅剩 300 名额 - 打破职业发展壁垒

早早聊5年天使票预售倒计时,还剩300名额~这次我们拿出了最大的诚意,对大会服务做了全面升级。天使年...
12-19 07:47:41
观速讯丨理想全面向矩阵式组织升级

观速讯丨理想全面向矩阵式组织升级

​李想和沈亚楠的内部信,说了两点:1 沈亚楠逐渐淡出;2 理想从过去的从垂直职能式组织进化到全面矩...
12-18 21:21:05
希望“魔笛”再战一届!莫德里奇:暂不会退出国家队,踢完欧国联比赛再考虑下一步

希望“魔笛”再战一届!莫德里奇:暂不会退出国家队,踢完欧国联比赛再考虑下一步

北京时间12月18日,克罗地亚2-1战胜摩洛哥,克罗地亚24年后再夺世界杯季军!莫德里奇带领克罗地亚队站上...
12-18 02:20:03
光山县气象局发布大风蓝色预警「IV级/一般」「2022-12-17」 环球热议

光山县气象局发布大风蓝色预警「IV级/一般」「2022-12-17」 环球热议

【来源:光山县气象局】光山县气象台2022年12月17日07时25分继续发布大风蓝色预警信号:预计未来24小时...
12-17 09:06:11
出台工作机制和指南,福建推动噪声污染联防联控长效长治

出台工作机制和指南,福建推动噪声污染联防联控长效长治

针对群众反映最为突出的建筑施工噪声扰民问题,省生态环境厅联合省住建厅制定印发《施工噪声防控工作机...
12-16 19:16:57
科华数据:创新产品入选国家节能技术装备推荐目录-世界消息

科华数据:创新产品入选国家节能技术装备推荐目录-世界消息

(原标题:科华数据:创新产品入选国家节能技术装备推荐目录)证券时报e公司讯,据科华数据消息,工信部...
12-16 13:31:53
钢琴入门指法教程:钢琴弹奏技巧和方法详解

钢琴入门指法教程:钢琴弹奏技巧和方法详解

钢琴演奏技巧是所有钢琴家和学习者最关心的话题之一。因此,掌握和运用钢琴演奏技巧是揭示音乐内涵、形...
12-16 07:02:57
全球微速讯:首次以声光疗法治疗阿尔茨海默病的人体试验已有初步结果

全球微速讯:首次以声光疗法治疗阿尔茨海默病的人体试验已有初步结果

发表在《PLoSONE》杂志上的一项新研究报告了利用声光治疗阿尔茨海默病(AD)的实验性疗法的首次人体测试...
12-15 18:29:53
好原料造就好味道,良品铺子助力夏威夷果漂洋过海实现“中国造”

好原料造就好味道,良品铺子助力夏威夷果漂洋过海实现“中国造”

在云南,年味添了一份多彩的民族特色。  云南德宏傣族景颇族自治州,位于云贵高原西南的盈江县,则是...
12-15 13:08:25
重温《新白娘子传奇》,看到她的婚姻,才觉得结局并不圆满

重温《新白娘子传奇》,看到她的婚姻,才觉得结局并不圆满

想了解更多精彩内容,快来关注:老伴儿风停夜泊情感话题解读,带您走进更多的正向情感世界!我是你的情...
12-15 06:42:38
焦点日报:新疆累计外送电量超6000亿千瓦时 可供14亿人用188天

焦点日报:新疆累计外送电量超6000亿千瓦时 可供14亿人用188天

新疆具有丰富的风能、太阳能、水能等可再生能源资源,以及沙漠、戈壁、荒漠等土地资源优势。尤其是风能...
12-14 16:25:37
每日观察!公司前线|秋田微新增“人机交互”概念

每日观察!公司前线|秋田微新增“人机交互”概念

同花顺F10数据显示,2022年12月14日秋田微(300939)新增“人机交互”概念。    入选理由是:2022年...
12-14 11:06:07
销售单价等于什么|视点

销售单价等于什么|视点

例如,公式中一件商品的成本价是35元,1、材料的成本,一般能占到60-70,而1+12%的利润目标是,2。企业...
12-13 22:45:46
养女不履行赡养义务继承遗产有份吗

养女不履行赡养义务继承遗产有份吗

养女一样具有继承权。没有赡养老人也可以继承遗产,但是由于继承人没有履行自己应尽的义务,所以在遗产...
12-13 14:09:18
中油工程(600339)12月12日主力资金净卖出3683.29万元

中油工程(600339)12月12日主力资金净卖出3683.29万元

截至2022年12月12日收盘,中油工程(600339)报收于3 18元,下跌3 93%,换手率1 85%,成交量103 52万手,成交额3 34亿元。
12-13 07:35:33
2021-2022年度科技与制造投资竞争力研究案例发布

2021-2022年度科技与制造投资竞争力研究案例发布

在以科技与制造投资作为重点关注方向的诸多投资机构中,21世纪经济报道、21世纪创投研究院通过对数百家...
12-12 17:15:33
全球实时:考取CPA证书能找哪些工作?发展前景如何?

全球实时:考取CPA证书能找哪些工作?发展前景如何?

CPA处于财会类证书金字塔的顶尖位置,考试科目多,难度大,如果能顺利考取下来,无疑会对日后的职业发展...
12-12 13:16:07
*ST紫晶: 关于公司股票可能被实施重大违法强制退市的第四次风险提示公告-环球速读

*ST紫晶: 关于公司股票可能被实施重大违法强制退市的第四次风险提示公告-环球速读

证券代码:688086     证券简称:*ST 紫晶       公告编号:2022-157        广东...
12-09 18:39:17
罗山:首宗“不动产转移+抵押”合并业务成功办理|世界快播

罗山:首宗“不动产转移+抵押”合并业务成功办理|世界快播

10月25日,信阳市罗山县首宗“不动产转移+抵押”合并办理业务在该县不动产登记中心窗口成功办理,标志着...
12-08 17:57:20
12月7日特宝生物涨5.56%,大成科创主题混合(LOF)A基金重仓该股

12月7日特宝生物涨5.56%,大成科创主题混合(LOF)A基金重仓该股

12月7日特宝生物(688278)涨5 56%,收盘报39 12元,换手率1 37%,成交量3 05万手,成交额1 19亿元...
12-07 15:20:59
世界简讯:异动快报:绿康生化(002868)12月6日14点26分触及涨停板

世界简讯:异动快报:绿康生化(002868)12月6日14点26分触及涨停板

12月6日盘中消息,14点26分绿康生化(002868)触及涨停板。目前价格51 1,上涨10 01%。其所属行业动物...
12-06 14:07:53
鞍山市“我要开便利店”一件事系统正式上线 进一步方便营业便捷度

鞍山市“我要开便利店”一件事系统正式上线 进一步方便营业便捷度

记者从鞍山市市场监督管理局获悉,我要开便利店一件事系统近日正式上线,在鞍山开便利店,可通过该系统...
07-06 14:50:53

为您推荐

精彩推送