调度性能采集与分析

  1. 参见Ascend PyTorch Profiler完成数据采集,并使用Chrome浏览器的Tracing页面(chrome://tracing/)打开trace_view.json文件。
  2. 在Tracing页面上选定需要分析的一个step端到端的时间,计算调度时间=端到端时间-计算和通信时间,如果计算和通信间有overlap则需要单独分析。

    此处以示例模型的单step为例,进行调度耗时的分析,由于大模型的timeline数据较冗余,故在分析时将整体的一个step切分为前8段前反向计算结果、中16段前反向计算结果、后8段前反向计算结果三段,进行分段式分析。

    1. 根据profiling数据查看step端到端时间为13.78s。
      图1 查看step端到端时间
    2. 计算流上的任务耗时13.06s。
      图2 查看计算流耗时
    3. profiling中调度耗时的部分为下图中的Free Time所示。
      图3 查看调度耗时

  3. 观察Host与Device侧调度产生的空白间隙。

    1. 观察Device侧流水上的调度间隙,寻找对应时段的事件。
      图4 查看调度间隙
    2. 观察Host下发与Device执行的调度曲线,如果多数调度曲线垂直,则说明模型存在下发瓶颈,需要联系华为工程师进行处理。下图为正常下发示例。
      图5 正常调度展示

      host侧profiling统计本身也会引入较大开销,打开host profiling获取到的端到端时延比实际时延大很多,因此在统计调度时延时关闭host profiling,只打开device侧profiling,这样才能获取准确的调度开销。