ascendfactory-cli方式启动(推荐)
相对于之前demo.sh方式启动(历史版本)的启动方式,本章节新增了通过benchmark工具启动训练的方式。此方式训练完成后json日志或打屏日志直接打印性能结果,免于计算,方便用户验证发布模型的质量。并且新的训练方式将统一管理训练日志、训练结果和训练配置,使用yaml配置文件方便用户根据自己实际需求进行修改。
权重文件支持以下组合方式,用户根据自己实际要求选择:
训练stage |
不加载权重 |
增量训练:加载权重,不加载优化器 |
断点续训:加载权重+优化器 |
---|---|---|---|
sft、dpo |
model_name_or_path=xxx train_from_scratch=true |
model_name_or_path=xxx 【lora】adapter_name_or_path=xxx |
model_name_or_path=xxx 【lora】adapter_name_or_path=xxx resume_from_checkpoint=xxx 或者:overwrite_output_dir=false |
rm, ppo |
model_name_or_path=xxx train_from_scratch=true |
model_name_or_path=xxx 【lora】adapter_name_or_path=xxx |
xxx |
步骤一:准备工作
- 完成准备工作内容,生成ascendfactory-cli工具。
- 创建test-benchmark目录,该目录存放训练生成的权重文件及训练日志。
# 任意目录创建 mkdir test-benchmark
- 修改config目录下yaml文件中model_name_or_path、dataset_dir和dataset或eval_dataset参数或其它内容,根据实际情况选择yaml文件;参数详解可参考表1。
config目录结构,请根据实际要求选择、修改文件:
|──AscendFactory/examples/config/ # config配置文件 |──performance_cfgs.yaml # 微调性能配置yaml文件 |──llama_factory_performance_cfgs_VL.yaml # qwen2vl微调yaml配置文件 |──accuracy_cfgs.yaml # 训练精度配置yaml文件 |──llama_factory_cfgs_posttrain.yaml # RM、PPO、DPO训练阶段样例yaml文件 |──llama_factory_performance_baseline.yaml # 性能基线配置 |──llama_factory_accuracy_baseline.yaml # 精度基线配置
修改样例如下,根据自己实际要求修改相应yaml文件:# 默认参数;根据自己实际要求修改 dataset_dir: /xxxx/benchmark/data/dataset dataset: gsm8k_train_alpaca model_name_or_path: /data/wulan1/model/qwen2.5-7b ## accuracy_cfgs.yaml eval_dataset: gsm8k_test
样例yaml配置文件结构分为
- base块:基础配置块。
- ModelName块:该模型所需配置的参数,如qwen2.5-7b块。
- exp_name:实验块,训练策略-序列长度所需参数配置。
样例yaml文件仅展示常用实验配置,如需其他配置需根据样例自行添加,样例截图如下:
步骤二:执行训练任务
- 进入test-benchmark目录执行训练命令,可以多次执行,卡数及其它配置参考NPU卡数取值表按自己实际情况决定
单机<可选>:
# 默认8卡 ascendfactory-cli train <cfgs_yaml_file> <model_name> <exp_name> # 指定设备卡数,如2卡 ASCEND_RT_VISIBLE_DEVICES=0,1 ascendfactory-cli train <cfgs_yaml_file> <model_name> <exp_name> # 指定修改yaml中某个参数内容,如save_steps等值,使用超参命令传递形式: ASCEND_RT_VISIBLE_DEVICES=0,1 ascendfactory-cli train <cfgs_yaml_file> <model_name> <exp_name> --save_steps=5 --max_steps 100
多机<可选>多机同时执行:
# 默认yaml值 ascendfactory-cli train <cfgs_yaml_file> <model_name> <exp_name> --master_addr <master_addr> --num_nodes <nodes> --rank <rank> # 指定修改yaml中某个参数内容,如save_steps等值,使用超参命令传递形式: ascendfactory-cli train <cfgs_yaml_file> <model_name> <exp_name> --master_addr <master_addr> --num_nodes <nodes> --rank <rank> --save_steps=5 --max_steps 100
- <cfgs_yaml_file>:性能或精度测试配置的yaml文件地址,如代码目录中performance_cfgs.yaml、accuracy_cfgs.yaml相对或绝对路径,根据自己要求执行
- <model_name>:训练模型名,如qwen2-7b
- <exp_name>:实验名称:具体可以设置的值参考<cfgs_yaml_file>
- --master_addr <master_addr>:主master节点IP,一般选rank0为主master。
- --num_nodes <nodes>:训练节点总个数
- --rank <rank>:节点ID,从0开始,一般选rank0为主master。
- --超参<key>:参数key可参考Yaml配置文件参数配置说明
- 训练完成后,test-benchmark目录下会生成训练日志及NPU利用率日志,如qwen2.5-7b日志

- 本章节主要介绍训练性能训练任务流程,如需执行训练精度任务可参考训练精度测试
- PPO强化训练时必须关闭共享内存,启动任务命令需设置PYTORCH_NPU_ALLOC_CONF值为False,具体命令如下:
PYTORCH_NPU_ALLOC_CONF = expandable_segments:False ascendfactory-cli train <cfgs_yaml_file> <model_name> <exp_name> --master_addr <master_addr> --num_nodes <nodes> --rank <rank>