PROFILING_OPTIONS
功能描述
训练或在线推理场景下,开发者可通过PROFILING_OPTIONS环境变量配置Profiling配置选项。
- output:Profiling采集结果文件保存路径。支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。路径中不能包含特殊字符:"\n"、"\f"、"\r"、"\b"、"\t"、"\v"、"\u007F"。
- 绝对路径配置以“/”开头,例如:/home/HwHiAiUser/output。
- 相对路径配置直接以目录名开始,例如:output。
- 该参数优先级高于ASCEND_WORK_PATH。
- 该路径无需用户提前创建,采集过程中会自动创建。
- storage_limit:指定落盘目录允许存放的最大文件容量。当Profiling数据文件在磁盘中即将占满本参数设置的最大存储空间或剩余磁盘总空间即将被占满时(总空间剩余<=20MB),则将磁盘内最早的文件进行老化删除处理。
取值范围为[200, 4294967295],单位为MB,例如--storage-limit=200MB,默认未配置本参数。
未配置本参数时,默认取值为Profiling数据文件存放目录所在磁盘可用空间的90%。
- training_trace:采集迭代轨迹数据开关,即训练任务及AI软件栈的软件信息,实现对训练任务的性能分析,重点关注前后向计算和梯度聚合更新等相关数据。当采集正向和反向算子数据时该参数必须配置为on。
- task_trace、task_time:控制采集算子下发耗时和算子执行耗时的开关。涉及在task_time、op_summary、op_statistic等文件中输出相关耗时数据。配置值:
- on:开启,默认值,和配置为l1的效果一样。
- off:关闭。
- l0:采集算子下发耗时、算子执行耗时数据。与l1相比,由于不采集算子基本信息数据,采集时性能开销较小,可更精准统计相关耗时数据。
- l1:采集算子下发耗时、算子执行耗时数据以及算子基本信息数据,提供更全面的性能分析数据。
当训练profiling mode开启即采集训练Profiling数据时,配置task_trace为on的同时training_trace也必须配置为on。
- hccl:控制hccl数据采集开关,可选on或off,默认为off。
此开关后续版本会废弃,请使用task_trace、task_time开关控制相关数据采集。
- aicpu:采集AICPU算子的详细信息,如:算子执行时间、数据拷贝时间等。取值on/off,默认为off。如果将该参数配置为“on”和“off”之外的任意值,则按配置为“off”处理。
- fp_point:指定训练网络迭代轨迹正向算子的开始位置,用于记录前向计算开始时间戳。配置值为指定的正向第一个算子名字。用户可以在训练脚本中,通过tf.io.write_graph将graph保存成.pbtxt文件,并获取文件中的name名称填入;也可直接配置为空,由系统自动识别正向算子的开始位置,例如"fp_point":""。
- bp_point:指定训练网络迭代轨迹反向算子的结束位置,记录后向计算结束时间戳,BP_POINT和FP_POINT可以计算出正反向时间。配置值为指定的反向最后一个算子名字。用户可以在训练脚本中,通过tf.io.write_graph将graph保存成.pbtxt文件,并获取文件中的name名称填入;也可直接配置为空,由系统自动识别反向算子的结束位置,例如"bp_point":""。
- aic_metrics:AI Core和AI Vector Core的硬件信息,取值如下:
- ArithmeticUtilization:各种计算类指标占比统计。
- PipeUtilization: 计算单元和搬运单元耗时占比,该项为默认值。
- Memory:外部内存读写类指令占比。
- MemoryL0:内部内存读写类指令占比。
- MemoryUB:内部内存读写指令占比。
- ResourceConflictRatio:流水线队列类指令占比。
- L2Cache:读写L2 Cache命中次数和缺失后重新分配次数。
Atlas 训练系列产品:支持AI Core采集,不支持AI Vector Core,不支持L2 Cache参数。
Atlas A2 训练系列产品:支持AI Core和AI Vector Core采集。
支持自定义需要采集的寄存器,例如:"aic_metrics":"Custom:0x49,0x8,0x15,0x1b,0x64,0x10"。- Custom字段表示自定义类型,配置为具体的寄存器值,取值范围为[0x1, 0x6E]。
- 配置的寄存器数最多不能超过8个,寄存器通过“,”区分开。
- 寄存器的值支持十六进制或十进制。
- l2:控制L2 Cache采样数据的开关,可选on或off,默认为off。
- msproftx:控制msproftx用户和上层框架程序输出性能数据的开关,可选on或off,默认值为off。
- runtime_api:控制runtime api性能数据采集开关,可选on或off,默认为off。可采集runtime-api性能数据,包括Host与Device之间、Device间的同步异步内存复制时延等。
- sys_hardware_mem_freq:片上内存、QoS带宽及内存信息采集频率、LLC的读写带宽数据采集频率、Acc PMU数据和SOC传输带宽信息采集频率、组件内存采集频率,取值范围为[1,100],单位hz。
- llc_profiling:LLC Profiling采集事件,可以设置为:
- Atlas 训练系列产品,可选read(读事件,三级缓存读速率)或write(写事件,三级缓存写速率),默认为read。
- Atlas A2 训练系列产品,可选read(读事件,三级缓存读速率)或write(写事件,三级缓存写速率),默认为read。
- sys_io_sampling_freq:NIC、ROCE采集频率。取值范围为[1,100],单位hz。
- Atlas 训练系列产品:支持采集NIC和ROCE。
- Atlas A2 训练系列产品:支持采集NIC和ROCE。
- sys_interconnection_freq:集合通信带宽数据(HCCS)、PCIe数据采集频率以及片间传输带宽信息采集频率。取值范围为[1,50],单位hz。
- Atlas 训练系列产品:支持采集HCCS、PCIe数据。
- Atlas A2 训练系列产品:支持采集HCCS、PCIe数据、片间传输带宽信息。
- dvpp_freq:DVPP采集频率。取值范围为[1,100],单位hz。
- instr_profiling_freq:AI Core和AI Vector的带宽和延时采集频率。取值范围[300,30000],单位cycle。(Atlas A2 训练系列产品)
instr_profiling_freq与training_trace、task_trace、hccl、aicpu、fp_point、bp_point、aic_metrics、l2、task_time、runtime_api互斥,无法同时执行。
- host_sys:Host侧性能数据采集开关。取值如下,可选其中的一项或多项,选多项时用英文逗号隔开,例如"host_sys": "cpu,mem"。
- cpu:进程级别的CPU利用率。
- mem:进程级别的内存利用率。
- host_sys_usage:采集Host侧系统及所有进程的CPU和内存数据。取值包括cpu和mem,可选其中的一项或多项,选多项时用英文逗号隔开。
- host_sys_usage_freq:配置Host侧系统和所有进程CPU、内存数据的采集频率。取值范围为[1,50],默认值50,单位hz。
- 除动态shape场景外的其他场景,fp_point、bp_point为自动配置项,无需用户手动配置。动态shape场景不支持自动配置fp/bp,需要用户手动设置。
- 在线推理支持task_trace和aicpu,不支持training_trace。
配置示例
export PROFILING_OPTIONS='{"output":"/tmp/profiling","training_trace":"on","task_trace":"on","fp_point":"","bp_point":"","aic_metrics":"PipeUtilization"}'
使用约束
此环境变量仅适用于TensorFlow训练或在线推理场景。
支持的型号
Atlas 训练系列产品
Atlas 推理系列产品
Atlas A2 训练系列产品
父主题: 性能数据采集