torch._logging¶
PyTorch 具有一个可配置的日志系统,其中不同的组件可以设置不同的日志级别。例如,一个组件的日志消息可以完全禁用,而另一个组件的日志消息则可以设置为最大详细程度。
警告
此功能处于测试阶段,未来可能会出现影响兼容性的更改。
警告
此功能尚未扩展以控制 PyTorch 中所有组件的日志消息。
有两种方法可以配置日志系统:通过环境变量 TORCH_LOGS
或 Python API torch._logging.set_logs。
为各个组件设置日志级别,并切换各个日志工件类型。 |
环境变量 TORCH_LOGS 是一个由逗号分隔的
[+-]<component> 对列表,其中 <component> 是下面指定的组件。前缀 +
将降低组件的日志级别,显示更多的日志信息,而前缀 -
将提高组件的日志级别,并显示更少的日志信息。默认设置
是在 TORCH_LOGS 中未指定组件时的行为。除了组件之外,还有
工件(artifacts)。工件是与组件相关联的特定调试信息,它们要么显示要么不显示,
因此用 + 或 - 前缀来修饰工件将是无效操作。由于它们与组件相关联,启用该组件通常也会启用该工件,
除非该工件被指定为 off_by_default。此选项在 _registrations.py 中为那些过于频繁以至于只应在显式启用时才显示的工件进行设置。
以下组件和工件可以通过 TORCH_LOGS 环境
变量进行配置(有关 python API,请参见 torch._logging.set_logs):
- Components:
all特殊组件,用于配置所有组件的默认日志级别。默认值:
logging.WARNdynamoTorchDynamo 组件的日志级别。默认值:
logging.WARNaotAOTAutograd 组件的日志级别。默认值:
logging.WARNinductorTorchInductor组件的日志级别。默认值:
logging.WARNyour.custom.module任意未注册模块的日志级别。提供完全限定名称,该模块将被启用。默认值:
logging.WARN
- Artifacts:
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
- Examples:
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工件