更新时间:2025-07-29 GMT+08:00
分享

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

步骤一:准备工作

  1. 完成准备工作内容,生成ascendfactory-cli工具。
  2. 创建test-benchmark目录,该目录存放训练生成的权重文件及训练日志。
    # 任意目录创建
    mkdir test-benchmark
  3. 修改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文件仅展示常用实验配置,如需其他配置需根据样例自行添加,样例截图如下:

步骤二:执行训练任务

  1. 进入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配置文件参数配置说明
  2. 训练完成后,test-benchmark目录下会生成训练日志及NPU利用率日志,如qwen2.5-7b日志
    • qwen2.5-7b-sft-4096-lora-313T-20241028_164746-0.txt,打印吞吐值及训练参数

    • qwen2.5-7b-sft-4096-lora-313T-20241028_164746-npu_info-0.txt,打印训练过程中AICORE利用率

  • 本章节主要介绍训练性能训练任务流程,如需执行训练精度任务可参考训练精度测试
  • 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>  

相关文档