套件集成了昇腾profiling采集工具,以提供对模型运行情况的分析。内置模型均已适配,只需修改tools.json文件即可生效。
- 若新增模型,请先适配如下设置:
from mindspeed_mm.tools.profiler import Profiler
prof = Profiler(prof_config)
prof.start()
while train:
train_one_step
prof.step()
prof.stop()- 通用的模型config设置:
--enable # 指开启profiling采集
--profile_type # 指动态或静态的profiling采集类型,static / dynamic
--ranks # 指profiling采集的rank,default为-1,指采集全部rankStatic Profile静态采集功能为执行模型训练过程中,针对指定的steps区间进行采集,操作步骤如下:
-
在模型config设置里开启
enable采集开关,设置profile_type为 static, 设置ranks。 -
配置静态采集的相关参数。
静态采集的
static_param参数具体设置如下:--level # profiling采集的level选择: level0, level1, level2 --with_stack # 采集时是否采集算子调用栈 --with_memory # 采集时是否采集内存占用情况 --record_shapes # 采集时是否采集算子的InputShapes和InputTypes --with_cpu # 采集时是否采集CPU信息 --save_path # profiling的保存路径 --start_step # 设置启动采集的步数 --end_step # 设置结束采集的步数 --data_simplification # 采集时是否采用简化数据 --aic_metrics_type # 采集模式,目前支持PipeUtilization和ArithmeticUtilization两种,默认采用PipeUtilization --analyse_flag # 是否启用在线解析
-
运行模型并采集profiling文件。
-
解析profiling文件。
-
analyse_flag为true时,将在模型运行过程中自动执行解析。 -
analyse_flag为false时,生成的profiling文件位于save_path路径下,需要搭配如下命令触发离线解析:python mindspeed_mm/tools/profiler.py
-
Dynamic Profile动态采集功能可在执行模型训练过程中随时开启采集进程,操作步骤如下:
-
在模型config设置里开启
enable采集开关,设置profile_type为 dynamic, 设置ranks。 -
配置动态采集的相关参数。
动态采集的
dynamic_param参数具体设置如下:--config_path # config与log文件的路径config_path指向空文件夹并自动生成profiler_config.json文件config_path指已有动态配置文件profiler_config.json的路径
-
运行模型。
-
在模型运行过程中,随时修改
profiler_config.json文件配置,profiling采集会在下一个step生效并开启:- 动态采集通过识别
profiler_config.json文件的状态判断文件是否被修改,若感知到profiler_config.json文件被修改,dynamic_profile会在下一个step时开启Profiling任务 config_path目录下会自动记录dynamic_profile的维测日志
- 动态采集通过识别
动态采集的具体参数、入参表、及具体操作步骤等请参考《CANN性能调优工具用户指南》的“Ascend PyTorch Profiler接口采集”章节。
--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| 参数类型 | 参数名 | 参数说明 | 默认值 |
|---|---|---|---|
| path | --mm-tool | MM工具配置文件路径 | ./mindspeed_mm/tools/tools.json |
| path | --profiler-path | Profiler数据目录路径 | 从配置文件中读取 |
| number | --max-process-number | 分析的最大进程数 | CPU核心数/2 |
| type | --export-type | 分析结果的导出类型,支持:text、db,可多次指定 | text |
示例:
# 使用配置文件中的路径进行离线解析
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数据,具体可参考《CANN性能调优工具用户指南》的“离线解析”章节。
对超长序列、超大模型、强化学习等profiling文件较大的场景,使用离线解析可以节约训练时资源占用。
feature_extraction目录下工具可用于提取视频和文本特征并保存,目前支持单batch静态数据集特征提取。
-
按需修改视频、文本特征和数据存储路径的相关配置tools.json文件。
--extract_video_feature # 是否提取视频特征 --extract_text_feature # 是否提取文本特征 --save_path # 特征数据存储路径
-
使用前按需修改feature_extraction_t2v.sh文件中对应模型数据集和配置文件(VAE、T5)路径。
--MM_DATA # 数据配置文件路径(.json) --MM_MODEL # 模型配置文件路径(.json)
-
配置完成后,调用feature_extraction_t2v.sh即可提取数据特征。
套件集成了昇腾内存快照采集工具,以提供对模型运行情况的分析。内置模型均已适配,只需修改tools.json文件即可生效。
- 对复用训练流程的模型,同样仅需修改配置。支持的配置项如下。
{
"memory_profile": {
"enable": false, // 内存采集功能开关
"start_step": 0, // 开始录制的步数。数值为训练步数的起始点,0代表开始采集的步数
"end_step": 2, // 结束录制的步数。数值为训练步数的终止点点,2代表结束采集的步数
"save_path": "./memory_snapshot", // 快照文件保存路径
"dump_ranks": [ // 录制快照的rank列表,从0开始
0
],
"stacks": "all", // 堆栈信息录制。可选项:python/all
"max_entries": null, // 最大记录数,null则无限制
"mem_info": false // 是否记录内存信息
}
}- 对独立的训练流程,可参考下列代码,对训练脚本做适配以使用profiler特性。参数配置同上。
from megatron.training import get_args
from mindspeed_mm.tools.mem_profiler import memory_profiler
args = get_args() # 获取配置
memory_profiler.reset(args.mm.tool.memory_profile) # 使用配置刷新profiler状态
training_preparation() # 运行训练准备代码
while iteration < args.train_iters: # 训练主循环
memory_profiler.step() # 调用profiler记录一个迭代
train_one_step() # 训练一个迭代
memory_profiler.stop() # 停止采集- 对于不具备典型训练结构的脚本,或者局部的手动调试,可直接调用基础函数,根据自定义需求修改。
code_not_record()
from mindspeed_mm.tools.mem_profiler import _record
_record()
code_to_record()- dump与开始录制可以在不同文件内。
code_to_record()
from mindspeed_mm.tools.mem_profiler import _dump, _stop
_dump()
_stop()dump执行完成后,会在输出目录生成snapshot_开头的pickle文件,可以在交互式查看器可视化查看内存快照。
-
若使用Tensorboard,需进行安装:
pip install tensorboard
-
设置Tensorboard的保存路径
TENSORBOARD_LOGS_PATH,然后在运行脚本中的OUTPUT_ARGS中添加--tensorboard-dir从而进行使能:TENSORBOARD_LOGS_PATH="./tensorboard_dir/" # tensorboard保存路径 # 在args里添加 --tensorboard-dir OUTPUT_ARGS=" --log-interval 1 \ --save-interval 10000 \ --eval-interval 10000 \ --eval-iters 10 \ --load $LOAD_PATH \ --save $SAVE_PATH \ --ckpt-format torch \ --tensorboard-dir $TENSORBOARD_LOGS_PATH \ "
-
打开Tensorboard进行查看,
./tensorboard_dir/为step2中的保存路径,按需修改:tensorboard --logdir ./tensorboard_dir/