理解 PyTorch 编译过程与时序 | AI生成和翻译

Home 2026.04

幕后正在发生什么:

torch.compile() — 它做了什么

torch.compile() 通过 TorchInductor 将您的模型转换为优化的 CUDA kernels。它不仅仅是简单意义上的 just-in-time —— 它经历了多个阶段:

阶段 1:Graph Tracing(您在 iter 0 看到的)

阶段 2:Kernel Compilation(现在正在发生)

阶段 3:Code Generation & Optimization

为什么现在很慢

compile workers 仍在后台构建 kernels。您的 GPU 利用率为 100%,因为它在运行未优化的模型 + 同时编译新 kernels。这就是为什么:

何时会变快

一旦所有 workers 完成(对于 1.5B 模型,通常在训练开始后 2-10 分钟),您将看到:

您的当前状态

GPU: 100% Util ✓ — 正在工作,不是空闲
Power: 691W ✓ — 负载下
Memory: 77GB ✓ — model 已正确加载
Workers: 24 compile workers 正在运行 — 等待完成

一切看起来都正确。21s/step 是临时的 compilation overhead。到 iter 100-200,您很可能就会看到真实速度。

还有一件事

如果 compile = True 但您宁愿跳过等待并直接运行(较慢但立即可用),您可以设置 compile = False。但由于您还有 4-5 小时的训练时间,compile 等待(5-10 分钟)是值得的 —— 它将后续每个 step 加速 5-10 倍。🦞


Back Donate