【PyTorch】使用Torch自带的工具进行性能分析

I. 常见工具介绍

1.1 Torch API

Torch.utils.bottleneck:脚本瓶颈分析工具

正如Torch官方文档说到:torch.utils.bottleneck is a tool that can be used as an initial step for debugging bottlenecks in your program. It summarizes runs of your script with the Python profiler and PyTorch’s autograd profiler.”

Torch.profiler:性能分析新版API

Torch.profiler是替代torch.autograd.profiler的新版性能分析工具,可以结合FlameGraph和TensorBoard来可视化分析结果;

Torch.autograd.profiler (legacy)

关于之前使用torch.autograd.profiler常见的测试方法,请参考《pytorch中分析时间开销的方法》

1.2 Profile Visualization

Flame Graphs

Speedscope: an interactive FlameGraph visualizer

II. 性能分析步骤

PyTorch官方教程:《PYTORCH PROFILER》

7. 查看性能分析记录

导出性能分析的堆栈信息(.txt文件),

prof.export_stacks("/tmp/profiler_stacks.txt", "self_cuda_time_total")

8. 分析运行时间长的任务

8.1 常用组件

def trace_handler(p):
    output = p.key_averages().table(sort_by="self_cuda_time_total", row_limit=10)
    print(output)
    p.export_chrome_trace("/tmp/trace_" + str(p.step_num) + ".json")

with profile(
    activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA],
    # 设置记录时间表
    schedule=torch.profiler.schedule(
        wait=1,
        warmup=1,
        active=2),
    on_trace_ready=trace_handler
) as p:
    for idx in range(iters):
        model(inputs)
        p.step()

8.2 在TensorBoard中可视化堆栈信息

官方教程:《PYTORCH PROFILER WITH TENSORBOARD》

with torch.profiler.profile(
        schedule=torch.profiler.schedule(wait=1, warmup=1, active=3, repeat=2),
        on_trace_ready=torch.profiler.tensorboard_trace_handler('./log/resnet18'),
        record_shapes=True,
        profile_memory=True,
        with_stack=True
) as prof:
    for step, batch_data in enumerate(train_loader):
        if step >= (1 + 1 + 3) * 2:
            break
        train(batch_data)
        prof.step()  # Call this at the end of each step to notify profiler of steps' boundary.
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值