更新时间: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

前提条件

已上传训练代码、训练权重文件和数据集到OBS中,具体参考代码上传至OBS

Step1 创建训练任务

创建训练作业,并自定义名称、描述等信息。选择自定义算法,启动方式自定义,以及选择上传的镜像。

代码目录选择:OBS桶路径obs://<bucket_name>llm_train/AscendFactory代码目录。

图1 创建训练作业

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

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

cd /home/ma-user/modelarts/user-job-dir/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/modelarts/user-job-dir/AscendFactory;
source /usr/local/Ascend/ascend-toolkit/set_env.sh;
ascendfactory-cli train <cfgs_yaml_file> <model_name> <exp_name>

命令详解如下:

  • <cfgs_yaml_file>:性能配置的yaml文件地址,如代码目录modellink_performance_cfgs.yaml相对或绝对路径。
  • <model_name>:训练模型名,如qwen2-7b
  • <exp_name>:实验名称,具体可以设置的值参考<cfgs_yaml_file>

样例配置截图如下:

Step2 配置数据输入和输出

单击“增加训练输入”和“增加训练输出”,用于配置训练作业开始时需要输入数据的路径和训练结束后输出数据的路径。

输入指定的目录在训练开始时,平台会自动将指定的OBS路径下的文件copy到容器内

输出指定的目录在训练过程中,平台会自动将容器内的文件copy到指定的OBS路径下

  1. 在“输入”框内设置超参配置:dataset、processed_data_dir、user_converted_ckpt_path、model_name_or_path根据实际要求选择,示例如下。

    输入数据集参数:是否使用已处理好数据集;

    • 是,设置以下超参
      • processed_data_dir:已处理好数据路径目录
    • 否,使用原始数据集,设置以下超参
      • dataset:训练时指定的输入原始数据集路径。

    输入权重词表超参:是否使用已转换Megatron格式权重或训练输出结果权重目录;

    • 是,设置以下超参
      • user_converted_ckpt_path:已转换Megatron格式权重目录或训练输出结果权重目录,一般搭配断点续训或增量训练。详见断点续训和故障快恢说明
      • model_name_or_path:加载tokenizer与Hugging Face权重对应存放目录地址。
    • 否,设置以下超参
      • model_name_or_path:加载tokenizer与Hugging Face权重对应的存放地址
  2. 在“输出”的输入框内设置超参:output_dir、hf_save_dir,根据实际要求选择,示例如下;
    • output_dir:训练完成后指定的输出模型路径。
    • hf_save_dir:训练完成的权重文件自动转换为Hugging Face格式权重输出的路径(确保convert_mg2hf_at_last设置为True,默认为True)。
  3. 分别单击“输入”和“输出”的数据存储位置,如图所示,选择OBS桶中指定的目录。超参:dataset中则直接选中数据集文件,超参:processed_data_dir则需选中存放已处理好数据集的目录文件夹。
  4. “输入”和“输出”中的获取方式全部选择为:超参。
  5. “输出”中的预下载至本地目标选择:下载,此时输出路径中的数据则会下载至OBS中。

Step3 配置超参

单击“增加超参”,在增加的超参填写框中,按照表1表格中的配置进行填写。

图2 超参
表1 需要填写的超参

超参

示例值

参数说明

mount_type

OBS

【必填】。表示代码根据OBS存储方式运行。

scirpts_dir

/home/ma-user/modelarts/user-job-dir/AscendFactory/scripts_modellink

必填】模型转换数据、转换权重、训练脚本路径,scripts_modellink目录路径

train_auto_resume

False

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

stage

sft

必填】表示当前的训练阶段。可选择值:【pt,sft】,默认sft

  • sft:代表监督微调;
  • pt:代表预训练;

ckpt_load_type

1

可选【0、1、2】,默认为1

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

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

handler-name

GeneralInstructionHandler

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

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

micro-batch-size

4

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

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

global-batch-size

512

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

tensor-model-parallel-size

8

表示张量并行。

pipeline-model-parallel-size

1

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

context_parallel_size

1

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

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

lr

2.5e-5

学习率设置。

min-lr

2.5e-6

最小学习率设置。

SEQ_LEN

4096

要处理的最大序列长度。

MAX_PE

8192

设置模型能够处理的最大序列长度。

train-iters

100

表示训练step迭代次数,根据实际需要修改。

save-interval

1000

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

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

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

save-total-limit

0

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

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

seed

1234

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

convert_mg2hf_at_last

true

表示训练完成的权重文件会自动转换为Hugging Face格式权重。【true、false】默认为true

对于ChatGLMv3-6B、GLMv4-9B和Qwen系列模型,还需要手动修改tokenizer文件,具体请参见训练tokenizer文件说明

模型参数设置规定:

  • TP张量并行 、PP流水线并行、CP context并行的参数设置:TP×PP×CP的值要被NPU数量(word_size)整除。
  • TP×CP的值要被模型参数中 num_attention_heads 整除。
  • MBS(micro-batch-size)、GBS(global-batch-size)的设置:需要遵循GBS/MBS的值能够被NPU/(TP×PP×CP)的值进行整除。

Step4 开启训练故障自动重启功能

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

图3 开启故障重启

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

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

如果要使用自动重启功能,资源规格必须选择八卡规格,设置超参train_auto_resume为True的前提下,默认为Fasle。

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

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

Step5 其他配置

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

图4 选择资源池规格

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

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

相关文档