首页 > 资讯 > > 内容页

天天观点:使用PyTorch 2.0 加速Hugging Face和TIMM库的模型

2022-12-24 01:39:34

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

设为星标,干货直达!


(资料图片仅供参考)

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/

x 广告
最近更新

天天观点:使用PyTorch 2.0 加速Hugging Face和TIMM库的模型

2022-12-24

保费高、基础病多......老人的健康究竟如何守护

2022-12-23

炖牛腩隔水炖多久能烂熟 炖牛腩隔水炖多长时间能烂熟呢-今日精选

2022-12-23

第一顺序继承人该如何继承 天天头条

2022-12-23

每日信息:康恩贝(600572.SH):黄蜀葵花总黄酮提取物及口腔贴片获批上市

2022-12-22

黄金1838今天可以到达吗?

2022-12-22

简讯:李书福旗下亿咖通纳斯达克上市:作价38亿美元 路演PPT曝光

2022-12-21

近拍“眉毛明显疤痕”引发外界猜测,小S:好后悔

2022-12-21

天天时讯:紧跟国家需求做科研

2022-12-21

焦点速看:大众CEO公布最新产品计划,全面改革试图挽救明年低迷预期

2022-12-20

南京第五批供地落幕:14宗地收金49亿元 1宗地流拍

2022-12-20

【机构调研记录】德邦基金调研昌红科技、稳健医疗

2022-12-20

牧原股份(002714.SZ)将全额赎回“牧原优01” 总规模24.76亿元

2022-12-19

2021年度中国医药工业百强发布 好医生再度荣登百强榜

2022-12-19

从北京奥运到卡塔尔决赛,迪马利亚还是阿根廷的“天使”-全球热资讯

2022-12-19

北京:将“复方氨酚烷胺胶囊”等6个药品临时纳入医保报销范围-天天滚动

2022-12-18

干鱿鱼须怎么做好吃 干煸鱿鱼须的做法_当前视讯

2022-12-18

云南铜业:海通证券、博时基金等多家机构于12月15日调研我司|每日动态

2022-12-17

全球焦点!福建老字号拥抱即时零售新业态

2022-12-16

2022青海轻微工伤赔偿标准是什么

2022-12-16

大地熊(688077)12月15日主力资金净卖出652.60万元

2022-12-16

做事凭良心 甘当“冤大头”-世界今日报

2022-12-15

环球速递!物联网卡管理平台如何组建?采购物联卡需要考虑哪些问题

2022-12-15

百联股份(600827)12月14日主力资金净买入1337.61万元 关注

2022-12-15

天天热头条丨誉衡药业(002437.SZ):598.05万股限售股12月19日解禁

2022-12-14

中国足球和日韩的巨大差距,也同样是中国文艺和日韩的巨大差距-动态焦点

2022-12-14

你“双十二”买的东西发货了吗?

2022-12-14

场所码历史数据引发隐私担忧,特殊的防疫数据该如何处理? 热点评

2022-12-13

【机构调研记录】中加基金调研埃斯顿、三维天地等3只个股(附名单)

2022-12-13

故意损毁文物罪判刑标准是什么? 要闻速递

2022-12-12

天天热推荐:森霸传感:目前在军工方面暂无应用

2022-12-12

环球简讯:锦州港: 锦州港股份有限公司2022年第三次临时股东大会的法律意见

2022-12-09

罗山县自来水公司:防范于未“燃” 开展冬季消防安全演练_天天快资讯

2022-12-08

昆船智能(301311)新增【央企改革】概念|前沿热点

2022-12-07

华域汽车:公司目前生产、经营情况整体平稳

2022-12-06

企业竞争制胜的关键,是商业的本质

2022-08-17

秦皇岛市总探索新就业形态劳动者建会入会新路径

2022-03-18

国家卫健委:家庭医生签约服务“最后一公里”有望打通

2022-03-18

截至2021年底 全国乘用车产能利用率仅为52.47%

2022-03-18

教培机构如何合理处理与员工的劳动关系?

2022-03-18

夫妻二人用工业硫磺熏制竹笋 查获20余吨

2022-03-18

虚假宣传等老问题占比较大 车主权益如何保障?

2022-03-18

有人不解,有人转型……多地发布建筑业清退令

2022-03-18

避坑越来越难?安心消费呼唤监管亮出科技之剑

2022-03-18

政策春风“吹暖”市场预期 A股港股双双走强

2022-03-18

用人单位用“盲盒岗位”招聘引发公众热议

2022-03-18

金稳委重磅发声 共同维护资本市场稳定发展

2022-03-18

三部门: 加快推动城市货运配送体系 绿色低碳发展

2022-03-18

露天滑雪场运动员怎么上厕所?马桶藏着黑科技

2022-02-15

安徽16岁弟弟捐献造血干细胞救24岁哥哥

2022-02-15

广州一大型商场因疫情防控需求暂时封闭

2022-02-15

江苏苏州一地调整为中风险地区

2022-02-15

辽宁调派移动方舱检测车10台、496人支援葫芦岛疫情防控

2022-02-15

【新春走基层】田坎上来了乡村振兴工作队

2022-02-15

七旬养猪老汉系外省命案逃犯 持刀杀人潜逃13年后宿迁落网

2022-02-15

驻哈中企员工的“别样团圆”

2022-02-15

1月中国各种自然灾害造成42.2万人次受灾

2022-02-15

中国空间站、首次火星探测等入选2021年度十大科普事件

2022-02-15

广西百色疫情社区传播链基本阻断 社会面基本实现清零

2022-02-15

上海:禁止企业采用“最严算法”考核、遏制“以罚代管”

2022-02-15

上班时间向招聘网站投简历被裁 媒体:职场数字化管理别

2022-02-15

甘肃高校数百名大学生“云支教” “打卡”互动零距离育人

2022-02-15

广西百色:社会面基本清零 健康码转码工作有序开展

2022-02-15

广西贺州“碰瓷女王”重操旧业 再度入狱

2022-02-15

外卖小哥热汤圆吃出幸福感 生活不易愿被社会温柔以待

2022-02-15

冬奥邂逅元宵:外籍主播侨乡浙江文成“闹元宵”

2022-02-15

青岛检察机关开展学生安全保护专项监督活动

2022-02-15

等待两年,只为8分钟的相见

2022-02-15

运用数字技术打造劳模工匠服务管理新模式

2022-02-15

预制菜“大热”元宵餐桌 中国 “Z世代”成掌勺主力

2022-02-15

辽宁推进法院审级职能定位改革

2022-02-15

杭州西湖景区旅游法庭揭牌

2022-02-15

拓展乡村振兴的数字蓝海

2022-02-15

山东泰安:提升执法司法质效 让执法监督长出“牙齿”

2022-02-15

农机助力 种地省心

2022-02-15

监狱人民警察用言行诠释忠诚

2022-02-15

扎根中国大地 办出中国特色 争创世界一流

2022-02-15

守护海陀之巅 走近国内第一支专业高山救援队

2022-02-15

内蒙古满洲里:2月1日以来到过满洲里人员全部落实管控措施

2022-02-15

“0蔗糖”就是无糖、不渴不用喝水等谣言入选2021年度十大

2022-02-15

广西:监督推动乡村振兴政策项目资金落地见效

2022-02-15

把算法开关交给消费者 以保障消费者权益

2022-02-15

二七厂蝶变:科技自立自强

2022-02-15

从货担郎到日售数千斤 兰州手艺人40余载“滚”元宵留年

2022-02-15

大陆学生在台度春节:不一样的年味与团圆

2022-02-15

广东惠州全市全部封控管控解除

2022-02-15

为人民健康提供可靠保障

2022-02-15

青海藏族女孩小拉毛春节“重生记”

2022-02-15

让群众遇事不烦办事不难

2022-02-15

河南晒出2021年交通“成绩单”:村村通、户户通 农村公

2022-02-15

芥末味、芽菜臊子味……“怪味”汤圆求上桌,你会相中谁

2022-02-15

山东青岛:楼宇经济体劳动争议预防调解联盟成立

2022-02-15

电力巡线工“偏向虎山行”

2022-02-15

身边小商铺 连着千万家

2022-02-15

听!城市的脉动

2022-02-15

每一度温暖的背后

2022-02-15

一男子地铁站晕倒休克 路过女护士出手相救

2022-02-15

河南中小学将迎开学季 多地要求返校师生须核酸检测

2022-02-15

安徽新增1例无症状感染者 系境外输入

2022-02-15

冰墩墩设计者给北京四中学生回信:祝福可爱奋进的中国少

2022-02-15

江苏南通发现1人检测结果呈阳性 系外地返通人员

2022-02-15

湖南郴州报告2例香港返湘人员新冠肺炎确诊病例

2022-02-15

广西百色疫情社区传播链基本阻断

2022-02-15

广西新增1例本土确诊病例 本轮本土疫情累计报告确诊病例

2022-02-15

葫芦岛市两医院不再收治非绥中地区患者 就医患者闭环管理

2022-02-15

苏州14日新增本土确诊1例,无症状感染者3例 详情及轨迹公布

2022-02-15

2021年北京空气质量创历史最优 首次全面达标

2022-02-15

化屋村火起来了

2022-02-15

质量问题、精装修变“惊装修”......买房坑有多深?

2022-02-15

心安之处便是“家”——深圳水尾村见闻

2022-02-15

江苏发现一处面积约1475平方米唐代建筑基址

2022-02-15

青海共和县:发电放牧两相宜

2022-02-15

应急管理部:截至1月底查出烟花爆竹问题隐患28052项

2022-02-15

福建蕉城:古建筑里古韵悠长 琴筝齐鸣庆元宵

2022-02-15

单日新增28例 辽宁省葫芦岛市本轮疫情累计确诊89例

2022-02-15

一言不合放火烧家 任性女子被判刑

2022-02-15

新疆阿克苏地区库车市发生3.4级地震 震源深度7千米

2022-02-15

应急管理部:1月全国接报生产安全事故死亡超1100人

2022-02-15

畲乡少年小雷的团圆年

2022-02-15

心安之处便是“家”——深圳水尾村见闻

2022-02-15

江苏发现一处面积约1475平方米唐代建筑基址

2022-02-15

青海共和县:发电放牧两相宜

2022-02-15

应急管理部:截至1月底查出烟花爆竹问题隐患28052项

2022-02-15

福建蕉城:古建筑里古韵悠长 琴筝齐鸣庆元宵

2022-02-15

单日新增28例 辽宁省葫芦岛市本轮疫情累计确诊89例

2022-02-15

一言不合放火烧家 任性女子被判刑

2022-02-15

新疆阿克苏地区库车市发生3.4级地震 震源深度7千米

2022-02-15

应急管理部:1月全国接报生产安全事故死亡超1100人

2022-02-15

江苏省省长:苏州市要把疫情防控作为头等大事、第一要务

2022-02-15

广西新增确诊病例降至1例 百色市有序解除管控

2022-02-15

江苏:采取更加坚决果断措施迅速打赢苏州疫情防控战

2022-02-15

深圳调整跨境货车内地接驳司机核酸检测为每日一检

2022-02-15

绥芬河市15日起全域转为低风险地区

2022-02-15

黑龙江省新增境外输入确诊病例1例

2022-02-15

黑龙江绥芬河市全域调整为低风险地区

2022-02-15

广西百色疫情外溢风险已得到有效控制 社区传播基本阻断

2022-02-15

多名和尚尼姑聚餐并分钱?五台山佛协:非本地僧众 已报警

2022-02-15

江苏新增本土确诊8例、本土无症状感染者4例 均在苏州

2022-02-15

甘肃“真金白银”助中小微企业稳岗扩岗

2022-02-15

满洲里发现5例核酸阳性人员 所有居民开展全员核酸检测

2022-02-15

广西新增本土确诊病例1例 百色市报告

2022-02-15

辽宁省新增18例本土确诊病例 其中葫芦岛市报告17例

2022-02-15

广东新增本土确诊病例2例 为深圳市报告

2022-02-15

吉林黑龙江新疆等地仍有降雪 中东部将再有大范围雨雪

2022-02-15

元宵节北京多云山区有零星小雪 最高气温仅零下1℃

2022-02-15

广西靖西市两地调整为中风险地区

2022-02-15

苏州市多地调整为中风险地区

2022-02-15

云南2月14日新增无症状感染者6例

2022-02-15

实体书店为什么接二连三遭遇危机?生存之道在哪

2022-02-15

卜卦、占星、看手相…… 为什么有的年轻人总想算一卦

2022-02-15

开学倒计时 如何帮助孩子克服“开学综合征”

2022-02-15

十赌十输,为何还有人铤而走险?

2022-02-15

网络赌博花样百出难逃警方天罗地网

2022-02-15

上海“最严动迁”迁出最暖“母子情”的背后

2022-02-15

《狙击手》原型邹习祥:比电影更传奇的“冷枪英雄”

2022-02-15

苏州市多地调整为中风险地区

2022-02-15

打造“无废城市”,深圳的固体废物都去哪了?

2022-02-15

北京冬奥会开幕式滑雪萌宝:在旅途中烂漫长大

2022-02-15

快判冰墩墩盗版案,用法治为冬奥护航

2022-02-15

“雪道的尽头是骨科”?不必夸大冰雪运动的风险

2022-02-15

疫情外溢风险有效控制 广西百色局部解封

2022-02-15

“萌妹子班组”深夜守护中老铁路“绿巨人大脑”

2022-02-15

知乎否认安装和使用过“行为感知系统”

2022-02-15

福建漳州一货车撞人 致3死9伤

2022-02-15

深圳新增2例本土确诊病例 为入境旅客隔离酒店工作人员

2022-02-15

广西百色宣布解除“不进不出”管控措施

2022-02-15

2月15日零时起 苏州市关闭15个高速公路入口

2022-02-15

“95后”羌族货运员的春运:为中欧班列尽一份力

2022-02-15

养牛场里的“春节时光”

2022-02-15

赏非遗、玩游戏、看展演、触彩蛋......广府元宇宙首亮相

2022-02-15

松山湖隧道内的“青春舞者”

2022-02-15

消费者购买预售商品房权益受侵害问题突出

2022-02-15

铁道部退票最新通知:旅客列车车票免费退票

2022-02-15

浙江农民大学生的“共富经”:打造“瓜果王国” 年产值

2022-02-15

踏雪闹元宵 北京市属公园推出14项元宵节文化活动

2022-02-15

北京冬奥会张家口赛区公交调度员是怎样工作的?

2022-02-15

铁路人的春运时刻:在列车里过年 在站台上过节

2022-02-15

福州长乐机场海关连续查获人体胎盘素注射液400支

2022-02-15

山西民间艺人巧手剪纸贺元宵 盼传承传统技艺

2022-02-15

京津冀迎强降雪天气 交通运输部门护航平安春运

2022-02-15

纸短情长!来自北京冬奥会志愿者的一封家书

2022-02-15

看皮影、写春联、扭秧歌:内蒙古小镇年味浓

2022-02-15

山西小城一名下岗职工的人生逆袭:“弹棉花”弹出千万身

2022-02-15

开学首日 广东多地海事部门贴心护航“学生渡”

2022-02-15

福州:弘扬福文化 传承好家风

2022-02-15

长春七旬“国旗奶奶”带领居民升旗十年

2022-02-15

云南麻栗坡县新增病例均为集中隔离点发现

2022-02-15

云南临沧:“双警”家庭为爱守边

2022-02-15

深圳口岸又检测出12名跨境货车司机核酸阳性

2022-02-15

辽宁疫情持续一周 本土确诊连续五天超10例

2022-02-15

琼浙一对珍稀长臂猿情人节喜结良“猿”

2022-02-15

苏州新增8例新冠病毒阳性感染者 病毒溯源为奥密克戎变异株

2022-02-15

辽宁葫芦岛市成立74个监督检查组 发现并纠正问题71个

2022-02-15

广西百色疫情呈下降趋势 医护人员哽咽讲述艰辛经历

2022-02-15

“双减”落地后首个寒假 内蒙古各地学生这样过

2022-02-15

数码摄影时代 广西“胶片迷”的别样坚持

2022-02-15

山东听障漫画师执笔为冰雪健儿加油 以“奥运长卷”献礼

2022-02-15

浙江金华侨领张磊:拳拳赤子心 浓浓家乡情

2022-02-15

杭州西湖残荷开始收割清理 150亩荷花4月可见小荷尖角

2022-02-15

2021年浙江电信网络诈骗立案6.5万起、损失38.97亿元

2022-02-15