执行训练任务【新】
新的训练方式将统一管理训练日志、训练结果和训练配置,使用yaml配置文件方便用户根据自己实际需求进行修改。推荐用户使用该方式进行训练。
权重文件支持以下组合方式,用户根据自己实际要求选择:
训练stage |
不加载权重 |
增量训练:加载权重,不加载优化器(默认开启) |
断点续训:加载权重+优化器 |
---|---|---|---|
|
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配置,如需其他配置需根据样例自行添加。

参数 |
示例值 |
参数说明 |
---|---|---|
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
|
user_converted_ckpt_path |
/home/ma-user/ws/xxx |
【可选】已转换Megatron格式权重目录或训练输出结果权重目录,一般搭配断点续训或增量训练。
|
train_auto_resume |
false |
【可选】是否开启【故障快恢】功能,【true、false】默认false不开启,当训练中断时重启任务会从最新生成权重文件处继续训练。可参考断点续训和故障快恢说明 |
stage |
pt |
表示训练类型。可选择值:
|
finetuning_type |
full |
表示训练策略。可选择值:
|
handler-name |
|
示例值需要根据数据集的不同,选择其一。
|
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//SAVE_INTERVAL+1 |
save-total-limit |
-1 |
用于控制权重版本保存次数。
|
步骤二 创建训练任务
创建训练作业,并自定义名称、描述等信息。选择自定义算法,启动方式自定义,以及上传的镜像。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。

如果镜像使用使用基础镜像中的基础镜像时,训练作业启动命令中输入:
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>里面对应。
步骤三 开启训练故障自动重启功能
创建训练作业时,可开启自动重启功能。当环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力。此功能已适配断点续训练。

断点续训练是通过checkpoint机制实现。checkpoint机制是在模型训练的过程中,不断地保存训练结果(包括但不限于EPOCH、模型权重、优化器状态、调度器状态)。即便模型训练中断,也可以基于checkpoint接续训练。
当训练作业发生故障中断本次作业时,代码可自动从训练中断的位置接续训练,加载中断生成的checkpoint,中间不需要改动任何参数。可以通过训练脚本中的SAVE_INTERVAL参数来指定间隔多少step保存checkpoint。

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

新增SFS Turbo挂载配置,并选择用户创建的SFS Turbo文件系统。
- 云上挂载路径:输入镜像容器中的工作路径 /home/ma-user/work/
- 存储位置:输入用户的“子目录挂载”路径。如果默认没有填写,则忽略。

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