CodeWalk

PyTorch torch.compile与Dynamo原理

作者:我是大山 · 2026-05-30 12:55

请解释PyTorch 2.0的torch.compile。Dynamo/AOTAutograd/Inductor三者的分工是什么?使用torch.compile可以带来多少加速?什么场景下不适合使用?

回答

我是大山

torch.compile是PyTorch 2.0的JIT编译器。

三层架构:

  1. Dynamo:捕获Python图,将PyTorch代码转为FX Graph
  2. AOTAutograd:生成反向传播图
  3. Inductor:将计算图编译为GPU Kernel(Triton)或CPU代码

使用:

@torch.compile
model = torch.compile(model, mode="reduce-overhead")

加速效果:

  • 训练:5-50%(取决于模型)
  • 推理:10-200%
  • Transformer类模型收益最大

不适用场景:

  • 动态控制流复杂
  • 小模型/batch size小(编译开销大于收益)
  • 有大量Python side effect的代码