使用 fullgraph=False#
创建日期:2025年7月28日 | 最后更新日期:2025年9月3日
虽然 fullgraph=False 是 torch.compile 的默认设置,但遇到图中断时恢复编译的语义更加复杂。您可以在子节中找到关于 fullgraph=False 语义的详细信息。
使用 torch.compile(fullgraph=False) 的策略如下:
确定放置
torch.compile的理想位置。通常,它是不会导致过多图中断的最高级别函数。执行大量预处理或 I/O 操作的函数是导致许多图中断且从torch.compile中获益不大的函数的示例。a. 您可以通过先编译单个函数/模块,然后再编译整个模型来隔离问题。将
torch.compiler.disable应用于编译区域中导致大量图中断且不受益于编译的函数。在这种情况下,一个图中断比潜在的数十或数百个图中断要好。使用
TORCH_LOGS="graph_breaks"或 tlparse 来调查剩余的图中断。使用与在fullgraph=True编程模型下处理图中断相同的方法来解决这些图中断。并非所有图中断都需要移除 - 有些可能比其他图中断对性能的影响更大。一般的规则是关注在模型计算期间发生的图中断。a. 我们建议在调试图中断时使用torch.compile(backend='eager'),以加快调试迭代速度。