使用Torch Inductor进行推理的经验教训

使用Torch Inductor进行推理的经验教训

💡 原文英文,约2600词,阅读约需10分钟。
📝

内容提要

本文介绍了Torch Inductor编译模型的基本知识和最佳实践。Torch Inductor通过即时编译优化PyTorch模型,支持动态形状和多后端选择,但存在无法保存优化模型和推理启动慢的缺点。AOTInductor可提前编译,显著降低延迟。建议使用torch.Tensor类型作为输入,简化前向传递逻辑,以提高编译效率。

🎯

关键要点

  • 本文介绍了Torch Inductor编译模型的基本知识和最佳实践。
  • Torch Inductor通过即时编译优化PyTorch模型,支持动态形状和多后端选择。
  • Torch Inductor的缺点包括无法保存优化模型和推理启动慢。
  • AOTInductor可提前编译,显著降低延迟。
  • 建议使用torch.Tensor类型作为输入,简化前向传递逻辑,以提高编译效率。
  • torch.compile()的优点在于易用性,适合初学者使用。
  • 即时编译的优点包括更宽容的编译、动态形状支持和与权重解耦。
  • 缺点包括无法保存优化模型、推理启动慢和重编译引入延迟。
  • AOTInductor通过追踪Python代码并生成Torch FX图来实现提前编译。
  • 使用AOTInductor可以显著降低推理延迟,并支持自动化构建流程。
  • 最佳实践包括仅使用torch.Tensor类型作为输入,避免使用可选参数和复杂的Python代码。
  • 前向传递应为纯函数,避免状态改变和复杂分支。
  • 使用包分发服务来分发编译后的工件,并使用绝对路径写出编译工件。
  • 测试编译模型的数值差异,并在编译时开启跟踪日志以了解编译决策。
  • 使用带调试器的IDE来处理编译错误,便于追踪问题。
➡️

继续阅读