文档
注册

Ascend PyTorch Profiler接口采集

Ascend PyTorch Profiler接口工具当前支持如下性能数据采集方式:

前提条件

采集并解析性能数据(torch_npu.profiler.profile)

  1. 在训练脚本(如train_*.py文件)内添加如下示例代码进行性能数据采集参数配置,之后启动训练。下列示例代码中,加粗字段为需要配置的参数、方法、类和函数。

    以下示例代码中的torch_npu.profiler.profile接口详细介绍请参见Ascend PyTorch Profiler接口说明

    import torch
    import torch_npu
    
    ...
    
    experimental_config = torch_npu.profiler._ExperimentalConfig(
           aic_metrics=torch_npu.profiler.AiCMetrics.PipeUtilization,
           profiler_level=torch_npu.profiler.ProfilerLevel.Level0,
           l2_cache=False,
           data_simplification=False
           )
    with torch_npu.profiler.profile(
            activities=[
                    torch_npu.profiler.ProfilerActivity.CPU,
                    torch_npu.profiler.ProfilerActivity.NPU
                    ],
            schedule=torch_npu.profiler.schedule(wait=0, warmup=0, active=1, repeat=1, skip_first=1),
            on_trace_ready=torch_npu.profiler.tensorboard_trace_handler("./result"),
            record_shapes=False,
            profile_memory=False,
            with_stack=False,
            with_flops=False,
            experimental_config=experimental_config) as prof:
                    for step in range(steps):
                           train_one_step(step, steps, train_loader, model, optimizer, criterion)
                           prof.step()

    import torch
    import torch_npu
    ...
    experimental_config = torch_npu.profiler._ExperimentalConfig(
            aic_metrics=torch_npu.profiler.AiCMetrics.ArithmeticUtilization,
            profiler_level=torch_npu.profiler.ProfilerLevel.Level0
             )
    prof = torch_npu.profiler.profile(
            activities=[
                    torch_npu.profiler.ProfilerActivity.CPU,
                    torch_npu.profiler.ProfilerActivity.NPU
                    ],
            schedule=torch_npu.profiler.schedule(wait=0, warmup=0, active=1, repeat=1, skip_first=1),
            on_trace_ready=torch_npu.profiler.tensorboard_trace_handler("./result"),
            experimental_config=experimental_config)
    prof.start()
    for step in range(steps):
             train_one_step()
             prof.step()
    prof.stop()
    除了使用tensorboard_trace_handler导出性能数据外,还可以使用以下方式导出:
    import torch
    import torch_npu
    
    ...
    
    with torch_npu.profiler.profile() as prof:
            for step in range(steps):
                    train_one_step(step, steps, train_loader, model, optimizer, criterion)
    prof.export_chrome_trace('./chrome_trace_14.json')
  2. 性能数据解析。

    支持自动解析(参照以上示例代码中tensorboard_trace_handlerprof.export_chrome_trace)和离线解析

  3. 查看采集到的PyTorch训练性能数据结果文件和性能数据分析。

    性能数据结果文件详细介绍请参见Ascend PyTorch Profiler接口采集数据,性能数据分析请参见MindStudio Insight 用户指南将解析后的性能数据文件进行可视化展示和分析。

采集并解析性能数据(dynamic_profile)

dynamic_profile主要功能是在执行模型训练过程中可以随时开启采集进程。

  1. 修改用户训练脚本(如train_*.py文件),添加dynamic_profile接口。
    如下示例代码加粗部分:
    # 加载dynamic_profile模块
    from torch_npu.profiler import dynamic_profile as dp
    # 设置模型训练时Profiling配置文件的路径
    dp.init("profiler_config_path")
    …
    for step in steps:
           train_one_step()
            # 划分训练step
           dp.step()

    init时,dynamic_profile会在profiler_config_path下自动创建模板文件profiler_config.json,用户可基于模板文件自定义修改配置项。

    profiler_config_path路径格式仅支持由字母、数字和下划线组成的字符串,不支持软链接。

  2. 启动训练任务。
  3. 重新开启一个命令行窗口,修改profiler_config.json配置文件用以使能Profiling任务。
    配置文件中包含Profiler的性能数据采集参数,用户可以参考profiler_config.json文件说明修改配置文件参数来执行不同的Profiling任务。
    • dynamic_profile通过识别profiler_config.json文件的状态判断文件是否被修改,若感知到profiler_config.json文件被修改,dynamic_profile会在下一个step时开启Profiling任务。
    • profiler_config_path目录下会自动记录dynamic_profile的维测日志。
  4. 性能数据解析。

    支持自动解析和手动解析,请参见表5中的analyse参数。

  5. 查看采集到的PyTorch训练性能数据结果文件和性能数据分析。

    性能数据结果文件详细介绍请参见Ascend PyTorch Profiler接口采集数据,性能数据分析请参见MindStudio Insight 用户指南将解析后的性能数据文件进行可视化展示和分析。

采集并解析性能数据(torch_npu.profiler._KinetoProfile)

  1. 在训练脚本(如train_*.py文件)内添加如下示例代码进行性能数据采集参数配置,之后启动训练。下列示例代码中,加粗字段为需要配置的参数、方法、类和函数。

    以下示例代码中的torch_npu.profiler._KinetoProfile接口详细介绍请参见Ascend PyTorch Profiler接口说明

    import torch
    import torch_npu
    
    ...
    
    prof = torch_npu.profiler._KinetoProfile(activities, record_shape, profile_memory, with_stack, experimental_config)
    for epoch in range(epochs):
            trian_model_step()
            if epoch == 0:
                    prof.start()
            if epoch == 1:
                    prof.stop()
    prof.export_chrome_trace("result_dir/trace.json")

    该方式不支持使用scheduletensorboard_trace_handler导出性能数据。

  2. 性能数据解析。

    支持自动解析(参照以上示例代码中prof.export_chrome_trace)。

  3. 查看采集到的PyTorch训练性能数据结果文件和性能数据分析。

    性能数据结果文件详细介绍请参见Ascend PyTorch Profiler接口采集数据,性能数据分析请参见MindStudio Insight 用户指南将解析后的性能数据文件进行可视化展示和分析。

采集并解析msprof_tx数据(可选)

针对大集群场景传统Profiling数据量大、分析流程复杂的现象,通过experimental_configmsprof_tx参数开启自定义打点功能,自定义采集时间段或者关键函数的开始和结束时间点,识别关键函数或训练迭代等信息,对性能问题快速定界。使用方式及示例代码如下:

  1. 使能torch_npu.profiler,打开msprof_tx开关,搭配profiler_level开关设置为Level_none(可根据实际采集需要,配置对应的level),采集打点数据。
  2. 在PyTorch脚本中对于想采集的事件调用torch_npu.npu.mstx的打点mark接口实现打点,对于时间段或者关键函数等,可在前后分别调用mark接口。
import torch
import torch_npu

mstx = torch_npu.npu.mstx()     # 创建mstx对象

train_one_step(...):
    mstx.mark("forward_start")
    forward()
    mstx.mark("forward_stop")
    mstx.mark("backward_start")
    backward()
    mstx.mark("backward_stop")
    mstx.mark("optimizer_start")
    optimizer()
    mstx.mark("optimizer_stop")
    ...
    
experimental_config = torch_npu.profiler._ExperimentalConfig(
       profiler_level=torch_npu.profiler.ProfilerLevel.Level0,
       msprof_tx=True,
       export_type=torch_npu.profiler.ExportType.Text
       )
with torch_npu.profiler.profile(
       activities=[
               torch_npu.profiler.ProfilerActivity.CPU,
               torch_npu.profiler.ProfilerActivity.NPU
               ],
       schedule=torch_npu.profiler.schedule(wait=1, warmup=1, active=2, repeat=2, skip_first=1),
       on_trace_ready=torch_npu.profiler.tensorboard_trace_handler("./result"),
       experimental_config=experimental_config) as prof:
       
      for epoch in range(epochs):
          mstx.mark("train epoch start")    # 打点的消息
          for step in range(steps):
                   train_one_step(step, steps, train_loader, model, optimizer, criterion)
                   prof.step()

打点数据使用MindStudio Insight工具打开,可视化效果如下:

图1 打点结果示例

可以通过该功能查看用户自定义打点从框架侧到CANN层再到NPU侧的执行调度情况,进而帮助识别用户想观察的关键函数或者事件,定界性能问题。

以自定义字符串键和字符串值的形式标记性能数据采集过程(可选)

  • 示例一
    with torch_npu.profiler.profile(…)  as prof:
        prof.add_metadata(key, value)
  • 示例二
    with torch_npu.profiler._KinetoProfile(…)  as prof:
        prof.add_metadata_json(key, value)

add_metadata和add_metadata_json可以配置在torch_npu.profiler.profile和torch_npu.profiler._KinetoProfile下,须添加在profiler初始化后,finalize之前,即性能数据采集过程的代码中。

表1 add_metadata接口说明

类、函数名

含义

add_metadata

添加字符串标记,可取值:

  • key:字符串键。
  • value:字符串值。

示例:

prof.add_metadata("test_key1", "test_value1")

add_metadata_json

添加json格式字符串标记,可取值:

  • key:字符串键。
  • value:字符串值,json格式。

示例:

prof.add_metadata_json("test_key2", [1, 2, 3])

调用此接口传入的metadata数据写入到Ascend PyTorch Profiler接口的采集结果根目录下的profiler_metadata.json文件中。

Ascend PyTorch Profiler接口说明

表2 torch_npu.profiler.profile和torch_npu.profiler._KinetoProfile配置参数说明

参数名称

参数含义

是否必选

activities

CPU、NPU事件采集列表,Enum类型。取值为:

  • torch_npu.profiler.ProfilerActivity.CPU:框架侧数据采集的开关。
  • torch_npu.profiler.ProfilerActivity.NPU:CANN软件栈及NPU数据采集的开关。

默认情况下两个开关同时开启。

schedule

设置不同step的行为,Callable类型,由schedule类控制。默认不执行任何操作。

torch_npu.profiler._KinetoProfile不支持该参数。

on_trace_ready

采集结束时自动执行操作,Callable类型。当前仅支持执行tensorboard_trace_handler函数的操作,默认不执行任何操作。当采集的数据量过大时,在当前环境下不适合直接解析性能数据,或者采集过程中中断了训练进程,只采集了部分性能数据,可以采用离线解析

torch_npu.profiler._KinetoProfile不支持该参数。

record_shapes

算子的InputShapes和InputTypes,Bool类型。取值为:

  • True:开启。
  • False:关闭。默认值。

开启torch_npu.profiler.ProfilerActivity.CPU时生效。

profile_memory

算子的内存占用情况,Bool类型。取值为:

  • True:开启。
  • False:关闭。默认值。

with_stack

算子调用栈,Bool类型。包括框架层及CPU算子层的调用信息。取值为:

  • True:开启。
  • False:关闭。默认值。

开启torch_npu.profiler.ProfilerActivity.CPU时生效。

with_modules

modules层级的Python调用栈,即框架层的调用信息,Bool类型。取值为:

  • True:开启。
  • False:关闭。默认值。

开启torch_npu.profiler.ProfilerActivity.CPU时生效。

with_flops

算子浮点操作,Bool类型(该参数暂不支持解析性能数据)。取值为:

  • True:开启。
  • False:关闭。默认值。

开启torch_npu.profiler.ProfilerActivity.CPU时生效。

experimental_config

扩展参数,通过扩展配置性能分析工具常用的采集项。支持采集项和详细介绍请参见experimental_config参数说明

use_cuda

昇腾环境不支持。开启采集cuda性能数据开关,Bool类型。取值为:

  • True:开启。
  • False:关闭。默认值。

torch_npu.profiler._KinetoProfile不支持该参数。

表3 torch_npu.profiler.profile和torch_npu.profiler._KinetoProfile方法说明

方法名

含义

step

划分不同迭代。

torch_npu.profiler._KinetoProfile不支持该方法。

export_chrome_trace

导出trace。在指定的.json文件里写入trace数据。Trace为Ascend PyTorch Profiler接口整合框架侧CANN软件栈及NPU数据后展示的各算子和接口的运行时间及关联关系。包含参数:

  • path:trace文件(.json)路径。指定文件所在的路径格式仅支持由字母、数字和下划线组成的字符串,不支持软链接。

在设置了torch_npu.profiler.tensorboard_trace_handler的情况下,export_chrome_trace不生效。

多卡场景下需要将不同卡设置不同的文件名,示例代码:

pid = os.getpid()
prof.export_chrome_trace(f'./chrome_trace_{pid}.json')

export_stacks

导出堆栈信息到文件。包含参数:

  • path:堆栈文件保存路径,需要配置文件名为“*.log”,可以指定路径,例如:/home/*.log,直接配置文件名时,文件保存在当前目录。路径格式仅支持由字母、数字和下划线组成的字符串,不支持软链接。
  • metric:保存的芯片类型可选择CPU或NPU,配置为“self_cpu_time_total”或“self_npu_time_total”。

与export_chrome_trace方法在训练脚本中的位置相同,示例如下:

export_stacks('resule_dir/stack.log', metric='self_npu_time_total')

导出的结果文件可使用FlameGraph工具进行查看,操作方法如下:

git clone https://github.com/brendangregg/FlameGraph
cd FlameGraph
./flamegraph.pl –title "NPU time" –countname "us." profiler.stacks > perf_viz.svg

start

设置采集开始的位置。可参考如下样例,在需要采集性能数据的训练代码前后添加start和stop:

prof = torch_npu.profiler.profile(
on_trace_ready=torch_npu.profiler.tensorboard_trace_handler('./result'))
for step in range(steps):
    if step == 5:
        prof.start()
    train_one_step()
    if step == 5:
        prof.stop()

stop

设置采集结束的位置,需要先执行start。

表4 torch_npu.profiler类、函数说明

类、函数名

含义

torch_npu.profiler.schedule

设置不同step的行为。取值为:

  • skip_first:采集前先跳过的step轮数,int类型。默认为值0。动态Shape场景建议跳过前10轮保证性能数据稳定;对于其他场景,可以根据实际情况自行配置。可选。
  • wait:每次重复执行采集跳过的step轮数,int类型。必选。
  • warmup:预热的step轮数,int类型,默认值为0。建议设置1轮预热。可选。
  • active:采集的step轮数,int类型。必选。
  • repeat:重复执行wait+warmup+active的次数,int类型。默认为值0,表示重复执行repeat不停止,建议配置为大于0的整数。可选。

建议根据此公式配置schedule:step总数 >= skip_first+(wait+warmup+active)*repeat

默认不执行该操作。

torch_npu.profiler.tensorboard_trace_handler

将采集到的性能数据导出为TensorBoard工具支持的格式。取值为:

  • dir_name:string类型,采集的性能数据的输出目录。路径格式仅支持由字母、数字和下划线组成的字符串,不支持软链接。可选。若配置tensorboard_trace_handler函数后未指定具体路径,性能数据默认落盘在当前目录。

    若代码中未使用on_trace_ready=torch_npu.profiler.tensorboard_trace_handler,那么落盘的性能数据为原始数据,需要使用离线解析

    该函数优先级高于ASCEND_WORK_PATH,具体请参见环境变量参考

  • worker_name:string类型,用于区分唯一的工作线程,默认为{hostname}_{pid}。路径格式仅支持由字母、数字和下划线组成的字符串,不支持软链接。可选。
  • analyse_flag:bool类型,性能数据自动解析开关,可取值True(开启自动解析,默认值)、False(关闭自动解析,采集完后的性能数据可以使用离线解析)。

torch_npu.profiler._KinetoProfile不支持该函数。

torch_npu.profiler.ProfilerAction

Profiler状态,Enum类型。取值为:

  • NONE:无任何行为。
  • WARMUP:性能数据采集预热。
  • RECORD:性能数据采集。
  • RECORD_AND_SAVE:性能数据采集并保存。

torch_npu.profiler._ExperimentalConfig

性能数据采集扩展,Enum类型。通过torch_npu.profiler.profile的experimental_config调用,详细介绍请参见experimental_config参数说明

torch_npu.profiler.supported_activities

查询当前支持采集的activities参数的CPU、NPU事件。

torch_npu.profiler.supported_profiler_level

查询当前支持的experimental_config参数的profiler_level级别。

torch_npu.profiler.supported_ai_core_metrics

查询当前支持的experimental_config参数的AI Core性能指标采集项。

torch_npu.profiler.supported_export_type

查询当前支持的torch_npu.profiler.ExportType的性能数据结果文件类型。

性能数据会占据一定的磁盘空间,可能存在磁盘写满导致服务器不可用的风险。性能数据所需空间跟模型的参数、采集开关配置、采集的迭代数量有较大关系,须用户自行保证落盘目录下的可用磁盘空间。

profiler_config.json文件说明

profiler_config.json文件内容如下,以默认配置为例:

{
    "activities": ["CPU", "NPU"],
    "prof_dir": "./",
    "analyse": false,
    "record_shapes": false,
    "profile_memory": false,
    "with_stack": false,
    "with_flops": false,
    "with_modules": false,
    "active": 1,
    "experimental_config": {
        "profiler_level": "Level0",
        "aic_metrics": "AiCoreNone",
        "l2_cache": false,
        "op_attr": false,
        "data_simplification": true,
        "record_op_args": false,
        "export_type": "text",
        "msprof_tx": false
    }
}
表5 参数说明

参数名称

参数含义

是否必选

activities

CPU、NPU事件采集列表。取值为:

  • CPU:框架侧数据采集的开关。
  • NPU:CANN软件栈及NPU数据采集的开关。

默认情况下两个开关同时开启。

prof_dir

采集的性能数据的输出目录。默认路径为:./。路径格式仅支持由字母、数字和下划线组成的字符串,不支持软链接。

analyse

性能数据自动解析开关,可取值:

  • true:开启自动解析。
  • false:关闭自动解析,即手动解析,采集完后的性能数据可以使用离线解析,默认值。

record_shapes

算子的InputShapes和InputTypes。取值为:

  • true:开启。
  • false:关闭,默认值。

activities配置为CPU时生效。

profile_memory

算子的内存占用情况。取值为:

  • true:开启。
  • false:关闭,默认值。

with_stack

算子调用栈。包括框架层及CPU算子层的调用信息。取值为:

  • true:开启。
  • false:关闭,默认值。

activities配置为CPU时生效。

with_flops

算子浮点操作(该参数暂不支持解析性能数据)。取值为:

  • true:开启。
  • false:关闭,默认值。

activities配置为CPU时生效。

with_modules

modules层级的Python调用栈,即框架层的调用信息。取值为:

  • true:开启。
  • false:关闭,默认值。

activities配置为CPU时生效。

experimental_config

扩展参数,通过扩展配置性能分析工具常用的采集项。详见experimental_config参数说明(dynamic_profile动态采集场景)

active

配置采集的迭代数,取值为正整数,默认值为1。

experimental_config参数说明(dynamic_profile动态采集场景)

experimental_config参数均为可选参数,支持扩展的采集项如下:

表6 experimental_config

参数

描述

export_type

设置导出的性能数据结果文件格式。可取值:

  • text:表示解析为.json和.csv格式的timeline和summary文件,详见Ascend PyTorch Profiler接口采集数据
  • db:表示解析为一个汇总所有性能数据的.db格式文件(ascend_pytorch.db、analysis.db),使用MindStudio Insight工具展示。仅支持on_trace_ready接口导出和离线解析导出,需配套安装支持导出db格式的Ascend-cann-toolkit开发套件包,即CANN 8.0.RC1及以上版本。

设置无效值或未配置均取默认值Text。

profiler_level

采集的Level等级。可取值如下:
  • Level_none:不采集所有Level层级控制的数据,即关闭profiler_level。
  • Level0:采集上层应用数据、底层NPU数据以及NPU上执行的算子信息。默认值。配置该参数时,仅采集部分数据,其中部分算子信息不采集,详细情况请参见op_summary(算子详细信息)
  • Level1:在Level0的基础上多采集CANN层AscendCL数据和NPU上执行的AI Core性能指标信息、开启aic_metrics=torch_npu.profiler.AiCMetrics.PipeUtilization、生成HCCL的communication.json和communication_matrix.json以及api_statistic.csv文件。
  • Level2:在Level1的基础上多采集CANN层Runtime数据以及AI CPU(data_preprocess.csv文件)数据。

msprof_tx

打点控制开关,通过开关开启自定义打点功能。可取值true(开启)或false(关闭),默认关闭。该参数使用请参见采集并解析msprof_tx数据(可选)

data_simplification

数据精简模式,开启后将在导出性能数据后删除FRAMEWORK目录数据以及删除多余数据,仅保留ASCEND_PROFILER_OUTPUT目录和PROF_XXX目录下的原始性能数据,以节省存储空间。可取值true(开启)或false(关闭),默认开启。

aic_metrics

AI Core的性能指标采集项。可取值如下:

以下采集项的结果数据含义可参见op_summary(算子详细信息),但具体采集结果请以实际情况为准。
  • AiCoreNone:关闭AI Core的性能指标采集,默认值。
  • PipeUtilization:计算单元和搬运单元耗时占比,包括采集项vec_ratio、mac_ratio、scalar_ratio、mte1_ratio、mte2_ratio、mte3_ratio、icache_miss_rate、fixpipe_ratio。
  • ArithmeticUtilization:各种计算类指标占比统计,包括采集项mac_fp16_ratio、mac_int8_ratio、vec_fp32_ratio、vec_fp16_ratio、vec_int32_ratio、vec_misc_ratio。
  • Memory:外部内存读写类指令占比,包括采集项ub_read_bw、ub_write_bw、l1_read_bw、l1_write_bw、l2_read_bw、l2_write_bw、main_mem_read_bw、main_mem_write_bw。
  • MemoryL0:内部内存读写类指令占比,包括采集项scalar_ld_ratio、scalar_st_ratio、l0a_read_bw、l0a_write_bw、l0b_read_bw、l0b_write_bw、l0c_read_bw、l0c_write_bw、l0c_read_bw_cube、l0c_write_bw_cube。
  • ResourceConflictRatio:流水线队列类指令占比,包括采集项vec_bankgroup_cflt_ratio、vec_bank_cflt_ratio、vec_resc_cflt_ratio、mte1_iq_full_ratio、mte2_iq_full_ratio、mte3_iq_full_ratio、cube_iq_full_ratio、vec_iq_full_ratio、iq_full_ratio。
  • MemoryUB:内部内存读写指令占比,包括采集项vec_bankgroup_cflt_ratio、vec_bank_cflt_ratio、vec_resc_cflt_ratio、mte1_iq_full_ratio、mte2_iq_full_ratio、mte3_iq_full_ratio、cube_iq_full_ratio、vec_iq_full_ratio、iq_full_ratio。
  • L2Cache:读写cache命中次数和缺失后重新分配次数, 包括采集项ai*_write_cache_hit、ai*_write_cache_miss_allocate、ai*_r*_read_cache_hit、ai*_r*_read_cache_miss_allocate。

l2_cache

控制L2 Cache数据采集开关。可取值true(开启)或false(关闭),默认关闭。该采集项在ASCEND_PROFILER_OUTPUT生成l2_cache.csv文件,结果字段介绍请参见l2_cache(L2 Cache命中率)

op_attr

控制采集算子的属性信息开关,当前仅支持采集aclnn算子,bool类型。可取值True(开启)或False(关闭),默认关闭。该参数采集的性能数据仅支持export_type=torch_npu.profiler.ExportType.Db时解析的db格式文件。torch_npu.profiler.ProfilerLevel.Level_none时,该参数不生效。

record_op_args

控制算子信息统计功能开关。可取值true(开启)或false(关闭),默认关闭。开启后会在{worker_name}_{时间戳}_ascend_pt_op_args目录输出采集到算子信息文件。

说明:

该参数在AOE工具执行PyTorch训练场景下调优时使用,且不建议与其他性能数据采集接口同时开启。详见AOE工具使用指南

experimental_config参数说明

experimental_config参数均为可选参数,支持扩展的采集项如下:

表7 experimental_config

参数

描述

export_type

设置导出的性能数据结果文件格式,Enum类型。可取值:

  • torch_npu.profiler.ExportType.Text:表示解析为.json和.csv格式的timeline和summary文件,详见Ascend PyTorch Profiler接口采集数据
  • torch_npu.profiler.ExportType.Db:表示解析为一个汇总所有性能数据的.db格式文件(ascend_pytorch.db、analysis.db),使用MindStudio Insight工具展示。仅支持on_trace_ready接口导出和离线解析导出,需配套安装支持导出db格式的Ascend-cann-toolkit开发套件包,即CANN 8.0.RC1及以上版本。

设置无效值或未配置均取默认值torch_npu.profiler.ExportType.Text。

profiler_level

采集的Level等级,Enum类型。可取值如下:
  • torch_npu.profiler.ProfilerLevel.Level_none:不采集所有Level层级控制的数据,即关闭profiler_level。
  • torch_npu.profiler.ProfilerLevel.Level0:采集上层应用数据、底层NPU数据以及NPU上执行的算子信息。默认值。配置该参数时,仅采集部分数据,其中部分算子信息不采集,详细情况请参见op_summary(算子详细信息)
  • torch_npu.profiler.ProfilerLevel.Level1:在Level0的基础上多采集CANN层AscendCL数据和NPU上执行的AI Core性能指标信息、开启aic_metrics=torch_npu.profiler.AiCMetrics.PipeUtilization、生成HCCL的communication.json和communication_matrix.json以及api_statistic.csv文件。
  • torch_npu.profiler.ProfilerLevel.Level2:在Level1的基础上多采集CANN层Runtime数据以及AI CPU(data_preprocess.csv文件)数据。

msprof_tx

打点控制开关,通过开关开启自定义打点功能,bool类型。可取值True(开启)或False(关闭),默认关闭。该参数使用请参见采集并解析msprof_tx数据(可选)

开启此功能时,不能同时配置torch_npu.profiler.ExportType.Db和torch_npu.profiler.ProfilerLevel.Level_none。

data_simplification

数据精简模式,开启后将在导出性能数据后删除FRAMEWORK目录数据以及删除多余数据,仅保留ASCEND_PROFILER_OUTPUT目录和PROF_XXX目录下的原始性能数据,以节省存储空间,bool类型。可取值True(开启)或False(关闭),默认开启。

aic_metrics

AI Core的性能指标采集项,Enum类型。可取值如下:

以下采集项的结果数据含义可参见op_summary(算子详细信息),但具体采集结果请以实际情况为准。
  • torch_npu.profiler.AiCMetrics.AiCoreNone:关闭AI Core的性能指标采集,默认值。
  • torch_npu.profiler.AiCMetrics.PipeUtilization:计算单元和搬运单元耗时占比,包括采集项vec_ratio、mac_ratio、scalar_ratio、mte1_ratio、mte2_ratio、mte3_ratio、icache_miss_rate、fixpipe_ratio。默认值。
  • torch_npu.profiler.AiCMetrics.ArithmeticUtilization:各种计算类指标占比统计,包括采集项mac_fp16_ratio、mac_int8_ratio、vec_fp32_ratio、vec_fp16_ratio、vec_int32_ratio、vec_misc_ratio。
  • torch_npu.profiler.AiCMetrics.Memory:外部内存读写类指令占比,包括采集项ub_read_bw、ub_write_bw、l1_read_bw、l1_write_bw、l2_read_bw、l2_write_bw、main_mem_read_bw、main_mem_write_bw。
  • torch_npu.profiler.AiCMetrics.MemoryL0:内部内存读写类指令占比,包括采集项scalar_ld_ratio、scalar_st_ratio、l0a_read_bw、l0a_write_bw、l0b_read_bw、l0b_write_bw、l0c_read_bw、l0c_write_bw、l0c_read_bw_cube、l0c_write_bw_cube。
  • torch_npu.profiler.AiCMetrics.ResourceConflictRatio:流水线队列类指令占比,包括采集项vec_bankgroup_cflt_ratio、vec_bank_cflt_ratio、vec_resc_cflt_ratio、mte1_iq_full_ratio、mte2_iq_full_ratio、mte3_iq_full_ratio、cube_iq_full_ratio、vec_iq_full_ratio、iq_full_ratio。
  • torch_npu.profiler.AiCMetrics.MemoryUB:内部内存读写指令占比,包括采集项vec_bankgroup_cflt_ratio、vec_bank_cflt_ratio、vec_resc_cflt_ratio、mte1_iq_full_ratio、mte2_iq_full_ratio、mte3_iq_full_ratio、cube_iq_full_ratio、vec_iq_full_ratio、iq_full_ratio。
  • torch_npu.profiler.AiCMetrics.L2Cache:读写cache命中次数和缺失后重新分配次数, 包括采集项ai*_write_cache_hit、ai*_write_cache_miss_allocate、ai*_r*_read_cache_hit、ai*_r*_read_cache_miss_allocate。

l2_cache

控制L2 Cache数据采集开关,bool类型。可取值True(开启)或False(关闭),默认关闭。该采集项在ASCEND_PROFILER_OUTPUT生成l2_cache.csv文件,结果字段介绍请参见l2_cache(L2 Cache命中率)

op_attr

控制采集算子的属性信息开关,当前仅支持采集aclnn算子,bool类型。可取值True(开启)或False(关闭),默认关闭。该参数采集的性能数据仅支持export_type=torch_npu.profiler.ExportType.Db时解析的db格式文件。torch_npu.profiler.ProfilerLevel.Level_none时,该参数不生效。

record_op_args

控制算子信息统计功能开关,bool类型。可取值True(开启)或False(关闭),默认关闭。开启后会在{worker_name}_{时间戳}_ascend_pt_op_args目录输出采集到算子信息文件。

说明:

该参数在AOE工具执行PyTorch训练场景下调优时使用,且不建议与其他性能数据采集接口同时开启。详见AOE工具使用指南

搜索结果
找到“0”个结果

当前产品无相关内容

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