训练前配置检查
简介
该工具主要适用于对比两个环境下可能影响训练精度的配置差异,包括:
- 环境变量
- 第三方库版本
- 训练超参
- 权重
- 数据集
- 随机操作
工具使用流程
-
准备两台训练服务器。
-
安装msProbe工具。
-
在两台服务器上分别执行数据采集。
可选择静态或动态两种采集方式:
- 静态数据采集:通过命令行启动采集,仅支持环境变量,第三方库版本及训练超参采集。
- 动态数据采集:通过在训练脚本添加接口启动采集,支持环境变量,第三方库版本、训练超参、权重、数据集和随机操作采集。
-
数据比对。
-
结果分析。
根据输出结果文件说明判断比对结果所比对的属性是否都通过检查。
使用前准备
环境准备
安装msProbe工具,详情请参见《msProbe安装指南》。
约束
支持PyTorch和MindSpore框架。
数据采集
静态数据采集
功能说明
通过命令行启动采集,仅支持环境变量、第三方库版本及训练超参采集。
其中环境变量、第三方库版本默认采集,训练超参采集需要用户传入启动训练的shell脚本或yaml配置文件。
注意事项
静态数据采集功能只能获取到系统中的环境变量,shell脚本中解析的超参不支持复杂运算的数据还原,有类似问题时建议使用动态采集方式。
命令格式
msprobe config_check -d [<*.sh> <*.yaml>] [-o <output_file_path>]
参数说明
| 参数 | 可选/必选 | 说明 |
|---|---|---|
| -d或--dump | 必选 | 数据采集模式,可选择是否传入启动训练的用户shell脚本路径或yaml配置文件路径。支持同时传入shell脚本和yaml配置文件,表示采集训练超参、环境变量和第三方库版本,默认都不传入,表示只采集环境变量和第三方库信息。shell脚本和yaml配置文件均可采集训练超参,取决于训练超参所在文件的位置。 |
| -o或--output | 可选 | 采集结果文件输出路径,默认输出结果文件名为config_check_pack.zip的压缩包,可自定义配置文件名,配置路径末尾直接添加结果文件名,但必须以.zip后缀结尾。 |
使用示例
-
默认场景
msprobe config_check -d -
传入shell脚本
msprobe config_check -d train.sh -o /xx/output_file_path/config_check_pack.zip -
传入shell脚本和yaml配置文件
msprobe config_check -d train.sh config.yaml -o /xx/output_file_path/config_check_pack.zip
输出说明
执行成功后,两个环境均输出采集结果文件config_check_pack.zip的保存路径。该结果文件用于后续数据比对。
动态数据采集
功能说明
通过在训练脚本添加接口启动采集,支持环境变量,第三方库版本、训练超参、权重、数据集和随机操作采集。
注意事项
在使用MindSpeed-LLM进行数据采集时,需要注意动态数据采集中的apply_patches函数需要在MindSpeed-LLM 框架pretrain_gpt.py的megatron_adaptor函数导入之后执行。
使用示例
-
在训练流程执行到的第一个Python脚本开始处添加如下代码:
from msprobe.core.config_check import ConfigChecker ConfigChecker.apply_patches(fmk)apply_patches:启动数据采集所需的各项patch,参数如下:
- fmk (string):可选参数,训练框架,string类型。可选"pytorch"和"mindspore",默认未配置,表示传入"pytorch"。
-
在模型初始化好之后添加如下代码:
from msprobe.core.config_check import ConfigChecker ConfigChecker(model=model, shell_path="", output_zip_path="", fmk="")ConfigChecker对模型挂上数据采集所需的hook,会在每次模型前向将要被执行的一刻进行数据采集,参数如下:
- model (Model):可选参数,初始化好的模型,默认不会采集权重和数据集。
- shell_path (list[]):可选参数,动态采集模式下支持megatron训练超参自动捕获,使用megatron时推荐不传入,其他情况下可选择是否传入启动训练的用户shell脚本路径或yaml配置文件路径。支持同时传入shell脚本和yaml配置文件,表示采集训练超参,默认都不传入,表示不采集训练超参。shell脚本和yaml配置文件均可采集训练超参,取决于训练超参所在文件的位置。
- output_zip_path (string):可选参数,采集结果文件输出路径,默认输出结果文件名为config_check_pack.zip的压缩包,可自定义配置文件名,配置路径末尾直接添加结果文件名,但必须以
.zip后缀结尾。 - fmk (string):可选参数,训练框架,string类型。可选"pytorch"和"mindspore",默认未配置,表示传入"pytorch"。
采集完成后会得到一个zip包,里面包括各项影响精度的配置。会分rank和step存储,其中step为micro_step。
-
在另一个环境上执行上述操作,得到另一个zip包。
输出说明
执行成功后,两个环境均输出采集结果文件config_check_pack.zip的保存路径。该结果文件用于后续数据比对。
数据比对
功能说明
将数据采集在两个训练环境下分别采集的zip包作为输入,执行数据比对操作。
注意事项
无
命令格式
msprobe config_check -c bench_zip_path cmp_zip_path [-o <output_path>]
参数说明
| 参数 | 可选/必选 | 说明 |
|---|---|---|
| -c或--compare | 必选 | 数据比对。须同时配置bench_zip_path和cmp_zip_path两个参数,其中bench_zip_path为标杆环境采集到的数据,cmp_zip_path为待对比环境采集到的数据。 |
| -o或--output | 可选 | 比对结果输出路径,默认为config_check_result。若重复执行比对,输出路径里原有的比对结果会被覆盖。 |
使用示例
将两个zip包拷贝到同一个环境下,执行如下命令进行比对:
msprobe config_check -c bench_zip_path cmp_zip_path
输出说明
比对命令执行完成后生成比对结果文件,详细介绍请参见输出结果文件说明。
输出结果文件说明
比对结果输出路径会生成2个目录和1个文件:
- bench:bench_zip_path里打包的数据。
- cmp:cmp_zip_path里打包的数据。
- result.xlsx:比对结果。里面会有多个sheet页,其中summary总览通过情况,其余页是具体检查项的详情。其中step为micro_step。
| file_name | pass_check |
|---|---|
| env | pass |
| pip | pass |
| dataset | pass |
| weights | pass |
| hyperparameters | pass |
| random | pass |
以上六项分别对应环境变量,第三方库版本,数据集,权重,训练超参,随机函数检查。
pass_check表示检查是否通过,pass为通过,error为不通过,warning表示存在对msProbe后续操作无影响的非关键第三方库版本不一致,建议用户查看详细信息分析。
前五项检查在精度比对前必须保证pass。