网易首页 > 网易号 > 正文 申请入驻

torch.compile 加速原理:kernel 融合与缓冲区复用

0
分享至

PyTorch 的即时执行模式在原型开发阶段很方便,但在推理性能上存在明显短板。每个张量操作独立启动 kernel、独立访问显存,导致内存带宽成为瓶颈GPU 算力无法充分利用。

torch.compile 通过提前构建计算图来解决这个问题。它的核心策略是操作融合和缓冲区复用:第一次调用需要编译而之后的推理会快很多。在 PyTorch 官方的基准测试中,各种模型平均获得了 20%-36% 的加速。

即时执行意味着每个操作独立运行。一个 32 层、每层 100 个操作的模型,前向传播一次就要触发3200 次 kernel 启动,这些开销全部叠加到推理延迟里。



延迟飙升的根本原因是什么?内存才是即时执行成为瓶颈。Nvidia H100 能跑到 300+ TFLOPs但内存带宽只有约 3 TB/s。所以内存搬运的代价太高了,即时执行模式在规模化场景下根本撑不住。每个操作至少要做三次内存访问:从 VRAM 读输入张量、把中间结果写回 VRAM、再从 VRAM 读权重。

比如说这个简单的表达式 x = torch.relu(torch.matmul(a, b) + c) ,即时执行模式下至少要六次内存传输:分别读 a、b、c,写矩阵乘法结果,读这个结果,写最终输出。内存带宽很快就被打满了,GPU 核心反而闲着。



所以问题的本质在于:独立的操作没法融合内存传输,造成大量冗余的 VRAM 访问。

生产环境下情况更糟。CPU 要处理成千上万的并发请求,花在 PyTorch 调度器上的时间可能比真正计算还多,吞吐量被严重拖累。

计算图

torch.compile 要解决的就是这种逐操作的开销。它会提前捕获整个计算图,核心靠两个组件:TorchDynamo 是一个 Python JIT 编译器,负责拦截字节码执行;TorchInductor 是后端,为 GPU 生成优化过的 Triton kernel,为 CPU 生成 C++ 代码。





PyTorch 里这个计算图叫 FX Graph,把操作表示成有向无环图(DAG)的节点。调用 torch.compile 时,TorchDynamo 分析 Python 字节码,生成 FX 图:节点是张量操作,边是数据依赖。

TorchInductor 拿到 FX 图后会做三件事:操作融合、内存规划、Triton 自动调优。

操作融合

还是前面那个例子 x = torch.relu(torch.matmul(a, b) + c)。即时执行要六次 VRAM 传输,TorchInductor 把它们融合成一个 Triton kernel:先把 a、b、c 的分块加载到片上 SRAM(共享内存),在寄存器里算矩阵乘法,加法和 ReLU 也在寄存器里做完,最后只把结果写回 VRAM。

内存传输从 6 次降到 2 次,减少了 3 倍。

内存规划

TorchInductor 不会给每个中间结果都分配新内存,而是让生命周期不重叠的缓冲区共用同一块空间——和编译器复用寄存器是一个思路。这相当于在整个计算图上做全局缓冲区复用,对激活模式不规则的 Transformer 模型特别有效。另一个好处是压低峰值内存占用,能跑更大的 batch。

Triton 自动调优

Triton 自动调优会针对具体硬件和输入 shape,自动搜索最优的 kernel 配置:tile 大小、线程块维度、流水线深度这些参数都不用手动调。

结果

第一次调用时,大模型的编译可能要几分钟。但后续调用只需要几毫秒加载预编译好的 kernel。初始开销会在后续推理中摊销掉,特别适合生产场景下模型持续运行的情况。冷启动慢一点,后面每个请求都快很多。

PyTorch 官方在 165 种模型(Transformer、CNN、扩散模型都有)上做了基准测试,torch.compile 在 float32 精度下平均加速 20%,开启自动混合精度(AMP)后加速 36%。

用起来也很简单:

import torch
# For a model
model = YourModel()
compiled_model = torch.compile(model)
# Or for a function, also enables Triton autotuning
@torch.compile(backend="inductor")
def forward_pass(x, weights):
return torch.relu(torch.matmul(x, weights))
output = compiled_model(input_tensor)

这就是 torch.compile 的大致原理:不再为每个操作单独启动 kernel、单独搬运数据,而是用一个 kernel 处理多个操作,共享内存缓冲区。内存瓶颈的影响被大幅削减,GPU 算力利用率上去了。

总结

这种加速具有普适性,不只对大语言模型有效,CNN、扩散模型等架构同样适用。torch.compile 的价值在于:它把原本需要手写 CUDA 或 Triton 才能实现的优化,封装成了一行代码的事情。对于生产环境下的推理服务,这是目前性价比最高的优化手段之一。

https://avoid.overfit.cn/post/271bbf42f4a946c3a92b8a9745e223db

作者:Aryan Keluskar

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
深圳正式发布!2026春节,全市禁止!

深圳正式发布!2026春节,全市禁止!

深圳梦
2026-02-03 23:09:00
萝莉岛的肮脏超乎想象,克林顿喜欢年轻女孩,科学家霍金竟是常客

萝莉岛的肮脏超乎想象,克林顿喜欢年轻女孩,科学家霍金竟是常客

离离言几许
2025-12-26 10:05:08
田永明杀人案再审披露案件细节,见义勇为被害人儿子:辛酸苦楚在这一刻释怀

田永明杀人案再审披露案件细节,见义勇为被害人儿子:辛酸苦楚在这一刻释怀

澎湃新闻
2026-02-04 08:25:05
勇士追字母失败?森林狼已成扬尼斯首选 金州4首轮+追梦小库无用

勇士追字母失败?森林狼已成扬尼斯首选 金州4首轮+追梦小库无用

颜小白的篮球梦
2026-02-04 11:09:37
一想到孩子将来还要接受这样的教育,就惆怅

一想到孩子将来还要接受这样的教育,就惆怅

观人随笔
2026-02-03 15:49:56
库里大帝缺席!勇士难阻76人8人上双豪取5连胜 探花25+7+7

库里大帝缺席!勇士难阻76人8人上双豪取5连胜 探花25+7+7

醉卧浮生
2026-02-04 13:19:13
当别人在参数里狂飙,有人却在“舒服躺赢”?

当别人在参数里狂飙,有人却在“舒服躺赢”?

Report汽车
2026-01-16 16:19:30
成都个别领导的风险,比刘虎的要大得多

成都个别领导的风险,比刘虎的要大得多

不主流讲话
2026-02-03 15:18:01
程序员高广辉猝死后续!他早逝有原因,父亲一直不赞成他的婚姻

程序员高广辉猝死后续!他早逝有原因,父亲一直不赞成他的婚姻

细品名人
2026-02-03 07:48:27
小米SU7 Ultra专属销售团队“解散”

小米SU7 Ultra专属销售团队“解散”

大象新闻
2026-02-04 09:13:03
法官问为何不交物业费,业主反问:不交税违法,不交费违法吗

法官问为何不交物业费,业主反问:不交税违法,不交费违法吗

蜉蝣说
2026-02-03 16:31:54
外交部:强烈谴责瓜达尔港袭击事件,中方坚决反对一切形式的恐怖主义

外交部:强烈谴责瓜达尔港袭击事件,中方坚决反对一切形式的恐怖主义

每日经济新闻
2026-02-03 20:28:42
爱泼斯坦死亡疑云再添关键爆料人,其身份被证实为狱警,曾发帖暗指爱泼斯坦并非自杀而是被 “调包”,此后其再未就该事件公开发声

爱泼斯坦死亡疑云再添关键爆料人,其身份被证实为狱警,曾发帖暗指爱泼斯坦并非自杀而是被 “调包”,此后其再未就该事件公开发声

扬子晚报
2026-02-03 22:32:13
今年29省区市将全面开展二轮土地延包试点

今年29省区市将全面开展二轮土地延包试点

极目新闻
2026-02-04 12:05:59
40胜联盟首队!雷霆36分狂胜魔术 亚历山大连121场20+哈腾三双

40胜联盟首队!雷霆36分狂胜魔术 亚历山大连121场20+哈腾三双

醉卧浮生
2026-02-04 11:29:16
新京报立了大功!卧底襄阳,把那个烂透的精神病院黑幕全给掀开了

新京报立了大功!卧底襄阳,把那个烂透的精神病院黑幕全给掀开了

火山诗话
2026-02-03 15:40:31
金价创下2009年以来最大单日涨幅

金价创下2009年以来最大单日涨幅

看看新闻Knews
2026-02-04 11:27:02
小车直接断成两截,司机雷某某(女,60岁)抢救无效死亡

小车直接断成两截,司机雷某某(女,60岁)抢救无效死亡

南方都市报
2026-02-03 16:20:06
英国美女狱警,与重刑犯多次发生不正当关系

英国美女狱警,与重刑犯多次发生不正当关系

中国新闻周刊
2026-02-03 22:45:09
央视马年春晚第三次大联排,刘涛苏有朋周传雄等现身

央视马年春晚第三次大联排,刘涛苏有朋周传雄等现身

红星新闻
2026-01-31 19:13:28
2026-02-04 13:59:00
deephub incentive-icons
deephub
CV NLP和数据挖掘知识
1910文章数 1446关注度
往期回顾 全部

科技要闻

太烦人遭投诉!元宝红包链接被微信屏蔽

头条要闻

月销暴跌至不到50辆 小米SU7 Ultra专属销售团队解散

头条要闻

月销暴跌至不到50辆 小米SU7 Ultra专属销售团队解散

体育要闻

“也许我的一小步,会成为中国足球的一大步”

娱乐要闻

姜元来在大S墓碑前哭泣,与具俊晔拥抱

财经要闻

35岁入行,先被考证“割韭菜”

汽车要闻

全伪装雪地现身 一汽-大众纯电车型线索曝光

态度原创

教育
时尚
旅游
艺术
游戏

教育要闻

教育部调研重庆高校就业工作

状态比10年前更好,她到底做对了什么?

旅游要闻

白天鹅宾馆“故乡水”新春换“新装”

艺术要闻

一篇文章看懂“传统吉祥图案”的寓意

老牌MMO迎第二春?《激战2》这次更新为何诚意拉满?

无障碍浏览 进入关怀版