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

执行训练任务【新】

新的训练方式将统一管理训练日志、训练结果和训练配置,使用yaml配置文件方便用户根据自己实际需求进行修改。推荐用户使用该方式进行训练。

权重文件支持以下组合方式,用户根据自己实际要求选择:

训练stage

不加载权重

增量训练:加载权重,不加载优化器(默认开启)

断点续训:加载权重+优化器

  • pt
  • sft

ckpt_load_type=0

ckpt_load_type=1

user_converted_ckpt_path=xxx,

ckpt_load_type=2

user_converted_ckpt_path=xxx

前提条件

已上传训练代码、训练权重文件和数据集到SFS Turbo中。

步骤一 修改训练Yaml配置文件

修改或添加代码目录下modellink_performance_cfgs.yaml文件参数内容,参数详解可查看表1

样例yaml配置文件结构分为:

  • base块:基础配置块,主要为公共配置参数
  • ModelName块:该模型所需配置的参数,如qwen2.5-7b块
    • exp_name:实验块;训练策略-序列长度所需参数配置

样例yaml文件仅展示qwen1.5-7b-4096-sft-full配置,如需其他配置需根据样例自行添加。

图1 yaml文件样例
表1 模型训练参数

参数

示例值

参数说明

dataset

【预训练:pt】预训练数据集相对或绝对地址

【微调:sft】微调数据集相对或绝对地址

【必修改】训练时指定的输入数据路径。请根据实际规划修改。用户根据训练情况二选一;

processed_data_dir

/home/ma-user/ws/xxx

已处理好数据路径目录,如有处理完成数据可设置此参数

scirpts_dir

/home/ma-user/ws/llm_train/AscendFactory/scripts_modellink

必修改】ModelLink脚本相对或绝对路径,用于方便加载脚本

model_name_or_path

/home/ma-user/work/llm_train/AscendFactory/model/llama2-70B

【必修改】加载tokenizer与Hugging Face权重时,对应的存放地址。请根据实际规划修改。

output_dir

/home/ma-user/work/save_dir

【必修改】训练任务结束生成日志及权重文件目录

ckpt_load_type

1

【可选】默认为1

  • 0,不加载权重
  • 1,加载权重不加载优化器状态【增量训练
  • 2,加载权重且加载优化器状态【

    断点续训】详见断点续训和故障快恢说明

user_converted_ckpt_path

/home/ma-user/ws/xxx

可选】已转换Megatron格式权重目录或训练输出结果权重目录,一般搭配断点续训或增量训练。

  • 增量训练:转换Megatron权重,如不指定默认为${output_dir}/converted_hf2mg_weight_TP{tp}PP{pp}目录。
  • 断点续训:训练过程中保存的某个权重,可参考断点续训和故障快恢说明

train_auto_resume

false

可选】是否开启【故障快恢】功能,【true、false】默认false不开启,当训练中断时重启任务会从最新生成权重文件处继续训练。可参考断点续训和故障快恢说明

stage

pt

表示训练类型。可选择值:

  • pt:预训练
  • sft:指令微调

finetuning_type

full

表示训练策略。可选择值:

  • full:全参微调
  • lora:lora微调

handler-name

  • GeneralPretrainHandler
  • GeneralInstructionHandler
  • MOSSInstructionHandler
  • AlpacaStyleInstructionHandler
  • SharegptStyleInstructionHandler

示例值需要根据数据集的不同,选择其一。

  • GeneralPretrainHandler:使用预训练的alpaca数据集。
  • GeneralInstructionHandler:使用微调的alpaca数据集。
  • MOSSInstructionHandler:使用微调的moss数据集。
  • AlpacaStyleInstructionHandler:使用LLama-Factory模板Alpaca数据集
  • SharegptStyleInstructionHandler:使用LLama-Factory模板Sharegpt数据集

micro-batch-size

1

表示流水线并行中一个micro batch所处理的样本量。在流水线并行中,为了减少气泡时间,会将一个step的数据切分成多个micro batch。

该值与TP和PP以及模型大小相关,可根据实际情况进行调整。

global-batch-size

128

表示训练中所有机器一个step所处理的样本量。影响每一次训练迭代的时长。

tensor-model-parallel-size

8

表示张量并行。

pipeline-model-parallel-size

4

表示流水线并行。一般此值与训练节点数相等,与权重转换时设置的值相等。

context-parallel-size

1

表示context并行,默认为1。应用于训练长序列文本的模型。如果训练时SEQ_LEN超过32768长度,则推荐增加此值(≥ 2)。

(此参数目前仅适用于Llama3系列模型长序列训练)

lr

2.5e-5

学习率设置。

min-lr

2.5e-6

最小学习率设置。

seq-length

4096

要处理的最大序列长度。

convert_mg2hf_at_last

1

Megatron格式权重转换为HuggingFace格式权重。

num_train_epochs

5

表示训练轮次,根据实际需要修改。一个Epoch是将所有训练样本训练一次的过程。

train-iters

10

非必填。表示训练step迭代次数。默认值为10

seed

1234

随机种子数。每次数据采样时,保持一致。

save-interval

1000

用于模型中间版本地保存。

  • 当参数值>=TRAIN_ITERS时,生成模型仅保存经过TRAIN_ITERS次训练后的最后一个版本。
  • 当参数值<TRAIN_ITERS时,生成模型会每经过SAVE_INTERVAL次,保存一次模型版本。

模型版本保存次数=TRAIN_ITERS//SAVE_INTERVAL+1

save-total-limit

-1

用于控制权重版本保存次数。

  • 当参数不设置或<=0时,不会触发效果。
  • 参数值需<=TRAIN_ITERS//SAVE_INTERVAL+1
  • 当参数值>1时,保存模型版本次数与SAVE_TOTAL_LIMIT的值一致。

步骤二 创建训练任务

创建训练作业,并自定义名称、描述等信息。选择自定义算法,启动方式自定义,以及上传的镜像。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。

图2 选择镜像

如果镜像使用使用基础镜像中的基础镜像时,训练作业启动命令中输入:

cd /home/ma-user/work/llm_train/AscendFactory;
sh install.sh modellink; 
source /usr/local/Ascend/ascend-toolkit/set_env.sh;
ascendfactory-cli train <cfgs_yaml_file> <model_name> <exp_name>

如果镜像使用ECS中构建新镜像构建的新镜像时,训练作业启动命令中输入:

cd /home/ma-user/work/llm_train/AscendFactory;
ascendfactory-cli train <cfgs_yaml_file> <model_name> <exp_name>

--命令参数详解如下:

  • <cfgs_yaml_file>:ModelLink配置yaml文件地址,如代码目录中modellink_performance_cfgs.yaml相对或绝对路径,根据自己要求执行
  • <model_name>:训练模型名,如qwen1.5-7b,需与<cfgs_yaml_file>里面对应
  • <exp_name>:实验名称:指定本次实验的具体配置,还包括数据配置等,比如full, lora等,该名称需要和<cfgs_yaml_file>里面对应。
如单独修改某个参数值,也可单击“增加超参”,在增加的超参填写框中,按照表1表格中的配置进行填写。
图3 超参

步骤三 开启训练故障自动重启功能

创建训练作业时,可开启自动重启功能。当环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力。此功能已适配断点续训练。

图4 开启故障重启

断点续训练是通过checkpoint机制实现。checkpoint机制是在模型训练的过程中,不断地保存训练结果(包括但不限于EPOCH、模型权重、优化器状态、调度器状态)。即便模型训练中断,也可以基于checkpoint接续训练。

当训练作业发生故障中断本次作业时,代码可自动从训练中断的位置接续训练,加载中断生成的checkpoint,中间不需要改动任何参数。可以通过训练脚本中的SAVE_INTERVAL参数来指定间隔多少step保存checkpoint。

如果要使用自动重启功能,资源规格必须选择八卡规格。

训练作业中的训练故障自动恢复功能包括:

  • 训练容错检查(自动重启),帮助用户隔离故障节点,优化用户训练体验。详细可了解:训练容错检查
  • 无条件自动重启,不管什么原因系统都会自动重启训练作业,提高训练成功率和提升作业的稳定性。详细可了解:无条件自动重启

选择用户自己的专属资源池,以及规格与节点数。防止训练过程中出现内存溢出的情况,用户可参考表2进行配置。

图5 选择资源池规格

新增SFS Turbo挂载配置,并选择用户创建的SFS Turbo文件系统。

  • 云上挂载路径:输入镜像容器中的工作路径 /home/ma-user/work/
  • 存储位置:输入用户的“子目录挂载”路径。如果默认没有填写,则忽略。
图6 选择SFS Turbo

作业日志选择OBS中的路径,ModelArts的训练作业的日志信息则保存该路径下。

最后,请参考查看日志和性能章节查看LoRA微调的日志和性能。了解更多ModelArts训练功能,可查看模型开发简介

相关文档