工具配置
==========
工具包括 性能profiler, 显存快照, SoRA模型特征提取工具, 以下分别介绍:
配置文件路径: ``mindspeed_mm/tools/tools.json``
性能profiler
----------------
通用设置
^^^^^^^^^^^
.. code:: json
{
"profile": {
"enable": false, // 是否开启profiling采集
"profile_type": "static", // 动态或静态的profiling采集类型, static / dynamic
"ranks": [0, 1, 2, 3], // profiling采集的rank, -1 为采集全部rank
},
......
}
静态采集
^^^^^^^^^^
Static Profile静态采集功能为执行模型训练过程中的指定的steps区间进行采集, 操作步骤如下:
在模型config设置里开启enable采集开关,设置profile_type 为 static, 设置 ranks
配置静态采集的相关参数
.. code:: json
{
"profile": {
......
"static_param": {
"level": "level1", // profiling采集的level选择: level0, level1, level2
"with_stack": false, // 是否采集算子调用栈
"with_memory": false, // 是否采集内存占用情况
"record_shapes": false, // 是否采集算子的InputShapes和InputTypes
"with_cpu": true, // 是否采集CPU信息
"save_path": "./npu_profiling", // profiling的保存路径
"start_step": 10, // 启动采集的步数
"end_step": 11, // 结束采集的步数
"data_simplification": false, // 是否采用简化数据
"aic_metrics_type": "PipeUtilization", // 采集模式,目前支持PipeUtilization和ArithmeticUtilization两种,默认采用PipeUtilization
"analyse_flag": true // 是否启用在线解析
},
......
},
......
}
analyse_flag为false时,生成的profiling文件位于save_path路径下,需要搭配如下命令进行profiling文件的离线解析:
.. code-block::
python mindspeed_mm/tools/profiler.py
.. note::
离线解析命令支持以下参数:
.. code-block::
--mm-tool <path> # MM工具配置文件路径,默认为./mindspeed_mm/tools/tools.json
--profiler-path <path> # Profiler数据目录路径(可选,若不指定则从配置文件中读取)
--max-process-number <number> # 分析的最大进程数(可选,默认:CPU核心数/2)
--export-type <type> # 分析结果的导出类型,支持:text、db,可多次指定,默认:text
**示例:**
.. code-block::
# 使用配置文件中的路径进行离线解析
python mindspeed_mm/tools/profiler.py --mm-tool mindspeed_mm/tools/tools.json
# 指定Profiler数据目录路径
python mindspeed_mm/tools/profiler.py --profiler-path ./npu_profiling
# 导出多种格式的分析结果(多次指定--export-type参数)
python mindspeed_mm/tools/profiler.py --mm-tool mindspeed_mm/tools/tools.json --export-type text --export-type db
此命令将解析指定路径下的所有profiling数据。参考 `离线解析 <https://www.hiascend.com/document/detail/zh/canncommercial/850/devaids/Profiling/atlasprofiling_16_0034.html>`_ 。
对超长序列、超大模型、强化学习等profiling文件较大的场景,使用离线解析可以节约训练时资源占用。
动态采集
^^^^^^^^^^
Dynamic Profile动态采集功能可在执行模型训练过程中随时开启采集进程,操作步骤如下:
在模型config设置里开启enable采集开关,设置profile_type 为 dynamic, 设置 ranks
配置动态采集的相关参数
.. code:: json
{
"profile": {
......
"dynamic_param": {
"config_path": "path to dynamic config folder" # config与log文件的路径
}
},
......
}
.. note::
当config_path指向空文件夹会自动生成profiler_config.json文件, 在模型运行过程中,随时修改profiler_config.json文件配置,profiling采集会在下一个step生效并开启
profiler_config.json 配置当时可以参考: `采集并解析性能数据(dynamic_profile) <https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/800alpha001/devaids/devtools/profiling/atlasprofiling_16_0033.html#ZH-CN_TOPIC_0000002046667974__section17272160135118>`_
内存快照
----------------------
.. code:: json
{
......
"memory_profile": {
"enable": false, // 是否开启内存采集
"start_step": 0, // 开始录制的步数。训练步数的起始点,0代表初始化过程
"end_step": 2, // 结束录制的步数。数值为训练步数的起始点,0代表初始化过程
"save_path": "./memory_snapshot", // 快照文件保存路径
"dump_ranks": [0], // 录制快照的rank列表,从0开始
"stacks": "all", // 堆栈信息录制。可选项:python/all
"max_entries": null, // 最大记录数,null则无限制
"mem_info": false
},
......
}
SoRA类模型特征提取
----------------------
.. code:: json
{
......
"sorafeature":{
"save_path": "./sora_features", // 保存路径
"extract_video_feature": false, // 是否提取视频特征
"extract_text_feature": false // 是否提取文本特征
}
}