焦点速讯:使用PyTorch 2.0 加速Hugging Face和TIMM库的模型
点蓝色字关注“机器学习算法工程师”
设为星标,干货直达!
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/
标签:
-
2022-12-25 19:05:42
焦点速讯:使用PyTorch 2.0 加速Hugging Face和TIMM库的模型<
点蓝色字关注“机器学习算法工程师”设为星标,干货直达!PyTorch2 0引入了**torch compile()**来加速模型,这篇文章我们将介绍如何使用
-
2022-12-25 01:46:02
环球快资讯:还呗网贷逾期暂时还不起会被起诉吗<
可能会。如果用户使用网贷消费之后出现了逾期,并且经过网贷机构和第三方的催收人员催缴欠款无果之后,网贷公司可能就会向法院提起诉讼。网贷
-
2022-12-24 07:57:34
洛阳玻璃(600876)12月23日主力资金净卖出1672.31万元 全球新视野<
截至2022年12月23日收盘,洛阳玻璃(600876)报收于19 09元,下跌3 15%,换手率0 92%,成交量3 52万手,成交额6724 76万元。
-
2022-12-23 17:41:40
【播资讯】金证股份:公司暂未开展跨境支付相关业务<
同花顺(300033)金融研究中心12月23日讯,有投资者向金证股份(600446)提问,董秘,你好。公司有涉及跨境支付业务吗。感谢您的关注
-
2022-12-23 13:16:48
青春不过几场世界杯|天天快消息<
卡塔尔世界杯结束了,阿根廷夺冠,梅西封王,圆满了。我想说青春结束了,却又怕显得矫情。第一次看世界杯,还是在20年前的2002年。那时候还小
-
2022-12-25 19:05:42
焦点速讯:使用PyTorch 2.0 加速Hugging Face和TIMM库的模型
点蓝色字关注“机器学习算法工程师”设为星标,干货直达!PyTorch2 0引入了**torch compile()**来加速模型,这篇文章我们将介绍如何使用
-
2022-12-25 01:46:02
环球快资讯:还呗网贷逾期暂时还不起会被起诉吗
可能会。如果用户使用网贷消费之后出现了逾期,并且经过网贷机构和第三方的催收人员催缴欠款无果之后,网贷公司可能就会向法院提起诉讼。网贷
-
2022-12-24 07:57:34
洛阳玻璃(600876)12月23日主力资金净卖出1672.31万元 全球新视野
截至2022年12月23日收盘,洛阳玻璃(600876)报收于19 09元,下跌3 15%,换手率0 92%,成交量3 52万手,成交额6724 76万元。
-
2022-12-23 17:41:40
【播资讯】金证股份:公司暂未开展跨境支付相关业务
同花顺(300033)金融研究中心12月23日讯,有投资者向金证股份(600446)提问,董秘,你好。公司有涉及跨境支付业务吗。感谢您的关注
-
2022-12-23 13:16:48
青春不过几场世界杯|天天快消息
卡塔尔世界杯结束了,阿根廷夺冠,梅西封王,圆满了。我想说青春结束了,却又怕显得矫情。第一次看世界杯,还是在20年前的2002年。那时候还小
-
2022-12-23 07:42:58
“生死速递”!意大利警察开兰博基尼送肾救命
【环球时报综合报道】意大利警方近日使用一辆兰博基尼超跑完成了一项特殊的任务——为急需移植手术的病人“快递”了两个肾脏
-
2022-12-22 18:16:56
航宇科技: 航宇科技关于竞拍取得土地使用权暨项目投资进展公告
证券代码:688239 证券简称:航宇科技 公告编号:2022-115 贵州航宇科技发展股份有限
-
2022-12-22 12:24:14
创维将推出户外电视Clarus 搭载Mini LED屏幕
12月22号消息,创维官宣将推出户外电视——Clarus,搭载MiniLED屏幕、8扬声器音频系统、运行GoogleTV、支持IP66防护。
-
2022-12-22 05:46:46
协程这么好,它能完全代替线程么?
好多问题呀,开始回答或者提问前,其实可以看看问题本身是不是有问题,像黄执中一样。------这个问题首先前提就有问题,谁说协程那么好的?任
-
2022-12-21 16:40:22
世界观速讯丨道氏技术:公司青岛基地和恩平基地合计浆料产能4万吨
同花顺(300033)金融研究中心12月21日讯,有投资者向道氏技术(300409)提问,前面一条回答说公司已形成“青岛江门(古井和恩平)龙南兰州”
-
2022-12-21 10:39:22
港股异动 | 微创机器人-B(02252)升6% 鸿鹄手术机器人成功获得欧洲CE认证 机构指手术机器人22H2起将贡献主要收入
微创机器人(300024)-B(02252)早盘回暖,升约6%。旗下鸿鹄骨科手术机器人成功获得欧洲CE认证,至此,顺利实现在中国、美国、欧盟三地获批上市。西南证
-
2022-12-21 01:20:36
12月20日基金净值:中银信用增利债券(LOF)A最新净值1.0169,跌0.05%-每日速讯
12月20日,中银信用增利债券(LOF)A最新单位净值为1 0169元,累计净值为1 6706元,较前一交易日下跌0 05%。历史数据显示该基金近1个月下跌1 04%
-
2022-12-20 15:46:26
【天天新要闻】七丰精工(873169)12月20日游资资金净卖出65.53万元
截至2022年12月20日收盘,七丰精工(873169)报收于6 06元,下跌0 49%,换手率0 88%,成交量0 24万手,成交额145 25万元。12月2
-
2022-12-20 10:51:15
世界观速讯丨阿根廷球迷欢呼:“一切苦难都值得了”
参考消息网12月20日报道热血沸腾的阿根廷球迷表示,看见梅西率领国家队夺冠,终结阿根廷36年世界杯冠军荒,“一切苦难都值(@参考消息)
-
2022-12-19 21:23:53
天天速读:招商蛇口: 关于子公司为招商安业提供担保的公告
证券代码:001979 证券简称:招商蛇口 公告编号:【CMSK】2022-157 招商局蛇口工业区控股股份有限公司
-
2022-12-19 15:37:25
世界时讯:硅烷科技(838402)12月19日主力资金净卖出1078.67万元
截至2022年12月19日收盘,硅烷科技(838402)报收于13 5元,下跌4 59%,换手率3 82%,成交量2 59万手,成交额3545 61万元。
-
2022-12-19 09:34:19
全球热文:骑行60公里,横跨北京城,他为老人送药上门
近日,因新冠疫情影响北京的外卖配送量激增大街小巷随处可见骑手在寒风中奔波赶路的身影央视新闻《相对论》记者庄胜春跟随配送小哥李军召感受
-
2022-12-19 00:08:02
魏都区委书记调研督导魏都区疫情防控指挥部“一办五部”常态化疫情防控工作 每日消息
近日,魏都区委书记李朝锋到魏都区疫情防控指挥部“一办五部”调研督导我区常态化疫情防控工作,看望慰问坚守岗位的干部职工。魏都区副区长...
-
2022-12-18 11:35:41
穆雷32+10+15马刺轻取老鹰 约翰逊26+5+5吹杨18+11
穆雷32+10+15马刺轻取老鹰约翰逊26+5+5吹杨18+11,安迪·穆雷,约翰逊,马刺队,老鹰队,达尼罗·加里纳利,克林特·卡佩拉
-
2022-12-17 12:37:27
世界观点:广州资本市场金融科技创新试点首批13个试点项目启动
中新社广州12月15日电(记者许青青)广州资本市场金融科技创新试点第一批13个试点项目15日正式启动。广州市地方金融监督管理局介绍,近年来,广
-
2022-12-16 21:49:03
参加acca考试多久能考完?有什么免考条件? 头条焦点
参加acca考试通常要2年-3年才能考完,但能力比较好的考生可能1年内就能考完,具体考试时间和个人因素有关,考生是否有基础,学习能力的强弱都
-
2022-12-16 15:22:11
本周盘点(12.12-12.16):海正药业周涨1.37%,主力资金合计净流出4335.13万元|当前看点
截至2022年12月16日收盘,海正药业(600267)报收于11 8元,较上周的11 64元上涨1 37%。本周,海正药业12月12日盘中最高价报11 92元
-
2022-12-16 09:13:54
巨力索具(002342)12月15日主力资金净卖出224.06万元 世界今热点
截至2022年12月15日收盘,巨力索具(002342)报收于4 36元,下跌2 46%,换手率3 03%,成交量26 63万手,成交额1 17亿元。12月15
-
2022-12-15 20:20:52
热点评!厦工股份: 厦工股份独立董事关于第十届董事会第三次会议部分议案的独立意见
厦门厦工机械股份有限公司独立董事关于 第十届董事会第三次会议部分议案的独立意见 根据中国证监会《上市公司治理准则》《上市公司
-
2022-12-15 14:51:35
郏县:自制捆烟机 省时又省力
近日,郏县茨芭镇齐村胡国定家的烟叶分拣棚里,一台自制烟叶打捆机正在工作。只见胡国定把分拣完的烟叶放在打捆机下的方形铁匣里,按下开关,
-
2022-12-15 09:09:11
绿岛风董秘回复:在新风系统领域,参与企业可根据规模划分为三个梯队,其中第一梯队年销售额在1亿元以上-环球观热点
绿岛风(301043)12月15日在投资者关系平台上答复了投资者关心的问题。投资者:贵公司在通风领域行业内,综合实力排名第几,现已申请专利多少项
-
2022-12-14 19:16:10
智飞生物(300122.SZ):重组B群脑膜炎球菌疫苗(大肠杆菌)获批临床_每日精选
格隆汇12月14日丨智飞生物(300122)(300122 SZ)公布,公司近日收到全资子公司北京智飞绿竹生物制药有限公司(简称“智飞绿竹”)报告,由智飞绿竹自
-
2022-12-14 14:52:28
热头条丨均胜电子启动新一轮800V高压平台能量管理系统研发
均胜电子旗下宁波普瑞均胜汽车电子有限公司牵头、宁波均胜新能源研究院重点参与的“宁波市汽车电子智能化创新联合体”传来消息,其第一阶段...
-
2022-12-14 07:39:45
中文传媒(600373)12月13日主力资金净卖出592.60万元_每日报道
截至2022年12月13日收盘,中文传媒(600373)报收于9 63元,上涨1 8%,换手率0 68%,成交量9 22万手,成交额8863 91万元。12月1
-
2022-12-13 16:17:01
当前要闻:网贷逾期十一万还不起会怎么样
1、产生罚息这是金钱上的损失。如果信用贷款出现逾期,贷款机构会先电话催收贷款,提醒借款人还款,同时利率还会上浮,作为每天的罚息。虽然每