torch._logging¶
PyTorch 拥有可配置的日志系统,其中不同组件可以设置不同的日志级别。例如,可以完全禁用某个组件的日志消息,而将另一个组件的日志消息设置为最大详细程度。
警告
此功能目前处于测试版,未来可能存在兼容性破坏性更改。
警告
此功能尚未扩展到控制 PyTorch 中所有组件的日志消息。
配置日志系统有两种方式:通过环境变量 TORCH_LOGS 或使用 python API torch._logging.set_logs。
设置单个组件的日志级别并切换单个日志信息类型。 |
环境变量 TORCH_LOGS 是一个由逗号分隔的 [+-]<component> 对列表,其中 <component> 是以下指定的组件。 + 前缀将降低组件的日志级别,显示更多日志信息,而 - 前缀将提高组件的日志级别并显示较少的日志信息。默认设置是在 TORCH_LOGS 中未指定组件时的行为。除了组件外,还有工件。工件是与组件关联的特定调试信息片段,可以是显示或不显示,因此使用 + 或 - 前缀将不会产生任何效果。由于它们与组件相关联,通常启用该组件也会启用该工件,除非该工件被指定为 off_by_default。此选项在_registrations.py 中指定,对于如此多的垃圾信息,它们应该仅在显式启用时显示。以下组件和工件可以通过 TORCH_LOGS 环境变量进行配置(请参阅 torch._logging.set_logs 的 Python API):
- 组件:
all特殊组件,用于配置所有组件的默认日志级别。默认值:
logging.WARNdynamoTorchDynamo 组件的日志级别。默认值:
logging.WARNaotAOTAutograd 组件的日志级别。默认值:
logging.WARNinductorTorchInductor 组件的日志级别。默认值:
logging.WARNyour.custom.module任意未注册模块的日志级别。提供完全限定的名称,模块将被启用。默认:
logging.WARN
- 艺术品:
bytecode是否从 TorchDynamo 输出原始和生成的字节码。默认:
Falseaot_graphs是否输出 AOTAutograd 生成的图。默认:
Falseaot_joint_graph是否输出由 AOTAutograd 生成的联合前向-后向图。默认:
Falsecompiled_autograd是否输出 compiled_autograd 的日志。默认:
Falseddp_graphs是否输出由 DDPOptimizer 生成的图。默认:
Falsegraph是否以表格格式输出 TorchDynamo 捕获的图。默认:
Falsegraph_code是否输出由 TorchDynamo 捕获的图的 Python 源代码。默认:
Falsegraph_breaks是否在 TorchDynamo 追踪过程中遇到唯一的图断点时输出消息。默认:
Falseguards是否输出 TorchDynamo 为每个编译函数生成的守卫。默认:
Falserecompiles是否在 TorchDynamo 每次重新编译函数时输出守卫失败的原因和消息。默认:
Falseoutput_code是否输出 TorchInductor 的输出代码。默认:
Falseschedule是否输出 TorchInductor 的调度。默认:
False
- 示例:
TORCH_LOGS="+dynamo,aot"将设置 TorchDynamo 的日志级别为logging.DEBUG,AOT 为logging.INFOTORCH_LOGS="-dynamo,+inductor"将设置 TorchDynamo 的日志级别为logging.ERROR并将 TorchInductor 设置为logging.DEBUGTORCH_LOGS="aot_graphs"将启用aot_graphs工件TORCH_LOGS="+dynamo,schedule"将启用并设置 TorchDynamo 的日志级别为logging.DEBUG并启用schedule工件TORCH_LOGS="+some.random.module,schedule"将设置 some.random.module 的日志级别为logging.DEBUG并启用schedule工件