step_trace(迭代轨迹信息)
迭代轨迹数据timeline信息在step_trace_*.json文件展示,summary信息在step_trace_*.csv文件汇总,用于判断耗时长的迭代。
单算子场景(如PyTorch场景)下无此性能数据文件。
step_trace_*.json文件说明
迭代轨迹数据step_trace_*.json,根据Iteration的长短,判断哪个迭代耗时最长。
step_trace_*.json文件内容格式示例如下:

迭代轨迹数据即训练任务及AI软件栈的软件信息,实现对训练任务的性能分析。以默认的两段式梯度切分为例,通过打印出训练任务中关键节点fp_start/bp_end/Reduce Start/Reduce Duration(us)的时间,达到把一个迭代的执行情况描述清楚的目的。
离线推理场景下不采集FP(训练网络迭代轨迹正向算子的开始位置)和BP(训练网络迭代轨迹反向算子的结束位置),采集结果将显示FP Start、BP End为NA且不存在timeline。

如上图,如果需要确定梯度切分策略,则需要计算图中bp_end - allreduce1_end的大小。根据已获取的迭代轨迹数据,我们需要使用第一组集合通信时间来计算,具体公式如:(BP End – Reduce End)/ freq。
| 
          字段名  | 
        
          字段含义  | 
       
|---|---|
| 
          Title  | 
        
          选择某个组件的接口名称。  | 
       
| 
          Start  | 
        
          显示界面中时间轴上的时刻点,chrome trace自动对齐,单位ms。  | 
       
| 
          Wall Duration  | 
        
          表示当前接口调用耗时,单位ms。  | 
       
| 
          Iteration ID  | 
        
          以Graph为粒度统计的迭代ID,每个Graph执行一次,Iteration ID加1,当一个脚本被编译为多个Graph时,该ID与脚本层面的Step ID不一致。  | 
       
| 
          FP Start  | 
        
          FP开始时间,单位ns。  | 
       
| 
          Iteration End  | 
        
          每轮迭代结束时间,单位ns。  | 
       
| 
          Iteration Time(ns)  | 
        
          迭代时长,单位ns。  | 
       
| 
          BP End  | 
        
          BP结束时间,单位ns。  | 
       
| 
          FP_BP Time  | 
        
          FP/BP计算时间(BP End - FP Start),单位ns。  | 
       
| 
          Iteration Refresh  | 
        
          迭代更新拖尾(Iteration End - BP End)。  | 
       
| 
          Data_aug Bound  | 
        
          数据增强拖尾(本轮迭代FP Start - 上一个迭代Iteration End)。如果计算第一轮数据增强拖尾时没有上一轮迭代的Iteration End数据,那么第一轮迭代的数据增强拖尾数据值默认为N/A。  | 
       
| 
          Reduce  | 
        
          集合通信时间,可能存在多组集合通信时间(ph:B 表示某一组的开始时间,ph:E表示该组的结束时间);如果非多P环境,则没有Reduce数据。  | 
       
数据读取时间分析
对于前一个迭代结束到后一个迭代开始之间的迭代间隙,若因数据读取耗时较长导致间隙过大,可以通过GetNext时间片,判断是否由于迭代的数据读取时间较长导致间隙过大。如图1所示。
仅TensorFlow框架支持。
| 
          字段名  | 
        
          字段含义  | 
       
|---|---|
| 
          GetNext Start  | 
        
          数据读取开始时间,单位ns。  | 
       
| 
          GetNext End  | 
        
          数据读取结束时间,单位ns。  | 
       
| 
          GetNext Time(ns)  | 
        
          数据读取耗时,单位ns。  | 
       
step_trace_*.csv文件说明
step_trace_*.csv文件内容格式示例如下:

根据step_trace_*.json文件的判断,可以对照step_trace_*.csv文件的信息得到印证。
| 
          字段名  | 
        
          字段含义  | 
       
|---|---|
| 
          Device_id  | 
        
          设备ID。  | 
       
| 
          Iteration ID  | 
        
          以Graph为粒度统计的迭代ID,每个Graph执行一次,Iteration ID加1,当一个脚本被编译为多个Graph时,该ID与脚本层面的Step ID不一致。  | 
       
| 
          FP Start(us)  | 
        
          FP开始时间,单位us。  | 
       
| 
          BP End(us)  | 
        
          BP结束时间,单位us。  | 
       
| 
          Iteration End(us)  | 
        
          每轮迭代结束的时间,单位us。  | 
       
| 
          Iteration Time(us)  | 
        
          迭代时长,单位us。  | 
       
| 
          FP to BP Time(us)  | 
        
          FP/BP计算时间(BP End - FP Start),单位us。  | 
       
| 
          Iteration Refresh(us)  | 
        
          迭代更新拖尾(Iteration End - BP End),单位us。  | 
       
| 
          Data Aug Bound(us)  | 
        
          数据增强拖尾(本轮迭代FP Start - 上一个迭代Iteration End),单位us。如果计算第一轮数据增强拖尾时没有上一轮迭代的Iteration End数据,那么第一轮迭代的数据增强拖尾数据值默认为N/A。  | 
       
| 
          Model ID  | 
        
          某轮迭代的模型中的图ID。  | 
       
| 
          Reduce Start(us)  | 
        
          集合通信开始时间,单位us。  | 
       
| 
          Reduce Duration(us)  | 
        
          集合通信时间,可能存在多组集合通信时间,本示例按照系统默认切分策略是分为两段集合通信时间,Reduce Start表示开始时间,Reduce Duration表示由开始到结束时间,单位us。如果非多P环境,则没有Reduce数据。  | 
       
