Shortcuts

torch._logging

PyTorch 有一个可配置的日志系统,其中不同的组件可以设置不同的日志级别。例如,一个组件的日志消息可以完全禁用,而另一个组件的日志消息可以设置为最大详细程度。

警告

此功能目前处于测试阶段,未来可能会出现不兼容的更改。

警告

此功能尚未扩展到控制 PyTorch 中所有组件的日志消息。

配置日志系统有两种方式:通过环境变量 TORCH_LOGS 或 Python API torch._logging.set_logs。

设置日志

设置各个组件的日志级别并切换各个日志工件类型。

环境变量 TORCH_LOGS 是一个逗号分隔的列表,包含 [+-] 对,其中 是下面指定的组件。+ 前缀将降低组件的日志级别,显示更多日志消息,而 - 前缀将提高组件的日志级别,显示更少的日志消息。默认设置是在 TORCH_LOGS 中未指定组件时的行为。除了组件之外,还有工件。工件是与组件关联的特定调试信息,这些信息要么显示,要么不显示,因此使用 +- 前缀标记工件将不会产生任何操作。由于它们与组件关联,启用该组件通常也会启用该工件,除非该工件被指定为 off_by_default。此选项在 _registrations.py 中指定,适用于那些过于冗长以至于只有在明确启用时才应显示的工件。以下组件和工件可以通过 TORCH_LOGS 环境变量进行配置(参见 torch._logging.set_logs 的 Python API):

Components:
all

特殊组件,用于配置所有组件的默认日志级别。默认值:logging.WARN

dynamo

TorchDynamo 组件的日志级别。默认值:logging.WARN

aot

AOTAutograd 组件的日志级别。默认值:logging.WARN

inductor

TorchInductor 组件的日志级别。默认值:logging.WARN

your.custom.module

任意未注册模块的日志级别。提供完全限定的名称,模块将被启用。默认值:logging.WARN

Artifacts:
bytecode

是否从TorchDynamo中发出原始和生成的字节码。 默认值: False

aot_graphs

是否发出由AOTAutograd生成的图表。默认值:False

aot_joint_graph

是否发出由 AOTAutograd 生成的联合前向-后向图。默认值:False

compiled_autograd

是否从compiled_autograd发出日志。默认值:False

ddp_graphs

是否发出由 DDPOptimizer 生成的图表。默认值:False

graph

是否以表格格式输出TorchDynamo捕获的图形。 默认值: False

graph_code

是否发出由 TorchDynamo 捕获的图的 Python 源代码。 默认值: False

graph_breaks

在TorchDynamo跟踪过程中遇到唯一图断点时是否发出消息。默认值:False

guards

是否发出由 TorchDynamo 为每个编译函数生成的守卫。默认值:False

recompiles

是否在每次TorchDynamo重新编译函数时发出保护失败的原因和消息。默认值:False

output_code

是否输出 TorchInductor 的输出代码。默认值:False

schedule

是否发出 TorchInductor 调度。默认值:False

Examples:

TORCH_LOGS="+dynamo,aot" 将设置 TorchDynamo 的日志级别为 logging.DEBUG 并将 AOT 设置为 logging.INFO

TORCH_LOGS="-dynamo,+inductor" 将设置 TorchDynamo 的日志级别为 logging.ERROR 并将 TorchInductor 设置为 logging.DEBUG

TORCH_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 工件