PyTorch profiling数据采集

  1. 采集性能数据。
    进行PyTorch profiling数据采集,需要使用Profiling接口对原始代码的loss计算和优化过程进行改造。修改代码如下:
    # 使用ascend-pytorch适配的profiling接口,推荐先运行10个step,再profiling1个step
    with torch.autograd.profiler.profile(use_npu=True) as prof:
        out = model(input_tensor)     
        loss=loss_func(out)
        loss.backward()  
        optimizer.zero_grad()   
        optimizer.step() 
    
    # 打印Profiling结果信息
    print(prof) 
    
    # 导出chrome_trace文件到指定路径
    output_path = '/home/HwHiAiUser/profile_data.json'
    prof.export_chrome_trace(output_path)
  1. 查看profiling数据。
    在Chrome浏览器中输入“chrome://tracing”地址,将profile_data.json文件拖到空白处打开,通过键盘上的快捷键(w:放大,s:缩小,a:左移,d:右移)进行查看,如下图所示:
    图1 PyTorch profiling结果文件

    具体性能数据分析步骤如下:

    1. 单击图片中①所示按钮。
    2. 框选图片中②(用户所需数据)所示timeline数据。
    3. 单击图片中③所示按钮,详细数据信息如④所示。
    4. 根据④中selftime数据从大到小排序,可找出TopN耗时算子信息,分析模型中存在的性能问题。

PyTorch profiling更多内容请参见CANN 开发工具指南》(开放态)中的“性能分析工具使用指南”章节"高级功能>性能数据采集(AI框架方式)>PyTorch Profiling"章节。