带有调度器的Pytorch分析器在步骤中打印不需要的消息

cygmwpex  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(117)

我正在尝试学习如何使用Pytorch profiler API来测量使用不同方法训练模型时的性能差异。在专用的tutorial中,有一个部分展示了如何使用分析器的“schedule”参数来执行此操作。
我的问题是,当我想在代码中使用它时,第一次调用step“wait”时会打印一条消息
[W kineto_shim.cpp:337]分析器未初始化:跳过step()调用
由于我希望我的分析器在大部分时间都处于睡眠状态,所以我的“等待”值相当高,所以它会用一堆这样的行污染我的终端,直到分析器第一次真正执行
我怎么才能摆脱它?
下面是重现该问题的最小代码示例

import torch
from torch.profiler import profile, record_function, ProfilerActivity

with profile(
        activities=[torch.profiler.ProfilerActivity.CUDA],
        schedule=torch.profiler.schedule(wait=15, warmup=1, active=4),        
        profile_memory=False,
        record_shapes=True,
        with_stack=True,
    ) as prof:
        for _ in range(20):
            y = torch.randn(1).cuda() + torch.randn(1).cuda()
            prof.step()
            

print(prof.key_averages())
b4lqfgs4

b4lqfgs41#

这是最近在pull request中修复/添加的
现在你可以设置环境变量KINETO_LOG_LEVEL。例如在bash脚本中:export KINETO_LOG_LEVEL=3
根据源代码的级别是:

enum LoggerOutputType {
  VERBOSE = 0,
  INFO = 1,
  WARNING = 2,
  ERROR = 3,
  STAGE = 4,
  ENUM_COUNT = 5
};

这至少是它应该如何工作的,根据this issue,日志级别的更改尚未合并。

相关问题