文档
注册

ProfilingConfig构造函数

函数原型

def __init__(self,
enable_profiling=False,
profiling_options=None
)

功能说明

ProfilingConfig类的构造函数,用于配置Profiling功能。

约束说明

无。

参数说明

参数名

输入/输出

描述

enable_profiling

输入

是否开启Profiling功能。

  • True:开启Profiling功能,从profiling_options读取Profiling的采集选项。
  • False:关闭Profiling功能,默认关闭。

profiling_options

输入

Profiling配置选项。

  • output:Profiling采集结果文件保存路径。该参数指定的目录需要在启动训练的环境上(容器或Host侧)提前创建且确保安装时配置的运行用户具有读写权限,支持配置绝对路径或相对路径(相对执行命令行时的当前路径)。路径中不能包含特殊字符:"\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。

    Profiling开启msproftx功能之前,需要在程序内调用msproftx相关接口来开启程序的Profiling数据流的输出,详细操作请参见Profiling性能数据采集

  • runtime_api:控制runtime api性能数据采集开关,可选on或off,默认为off。可采集runtime-api性能数据,包括Host与Device之间、Device间的同步异步内存复制时延等。
  • sys_hardware_mem_freq:DDR、QoS、HBM带宽及内存信息采集频率、LLC的读写带宽数据采集频率、Acc PMU数据和SOC传输带宽信息采集频率、组件内存采集频率,取值范围为[1,100],单位hz。
    • Atlas 推理系列产品(Ascend 310P处理器):支持采集DDR、LLC、组件内存。
    • Atlas 训练系列产品:支持采集DDR、HBM、LLC、组件内存。
    • Atlas A2 训练系列产品:支持采集HBM、LLC、Acc PMU数据、SoC传输带宽信息、组件内存。
  • llc_profiling:LLC Profiling采集事件,可以设置为:
    • Atlas 推理系列产品(Ascend 310P处理器),可选read(读事件,三级缓存读速率)或write(写事件,三级缓存写速率),默认为read。
    • Atlas 训练系列产品,可选read(读事件,三级缓存读速率)或write(写事件,三级缓存写速率),默认为read。
    • Atlas A2 训练系列产品,可选read(读事件,三级缓存读速率)或write(写事件,三级缓存写速率),默认为read。
  • sys_io_sampling_freq:NIC、ROCE采集频率。取值范围为[1,100],单位hz。
    • Atlas 推理系列产品(Ascend 310P处理器):不支持该参数。
    • Atlas 训练系列产品:支持采集NIC和ROCE。
    • Atlas A2 训练系列产品:支持采集NIC和ROCE。
  • sys_interconnection_freq:集合通信带宽数据(HCCS)、PCIe数据采集频率以及片间传输带宽信息采集频率。取值范围为[1,50],单位hz。
    • Atlas 推理系列产品(Ascend 310P处理器):支持采集PCIe数据。
    • 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侧性能数据采集开关。取值包括cpu和mem,可选其中的一项或多项,选多项时用英文逗号隔开,例如"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。
配置示例:
profiling_options = 
'{"output":"/tmp/profiling","training_trace":"on",task_trace":"on","fp_point":"","bp_point":"","aic_metrics":"PipeUtilization"}'

返回值

返回ProfilingConfig类对象,作为NPURunConfig的参数传入。

调用示例

1
2
3
4
5
6
from npu_bridge.npu_init import *
...
profiling_options = '{"output":"/home/HwHiAiUser/output","task_trace":"on"}'
profiling_config = ProfilingConfig(enable_profiling=True, profiling_options= profiling_options)
session_config=tf.ConfigProto(allow_soft_placement=True)
config = NPURunConfig(profiling_config=profiling_config, session_config=session_config)
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词