更新时间:2024-12-17 GMT+08:00
分享

SFT全参微调训练

前提条件

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

Step1 修改训练超参配置

llama2-13b SFT微调为例,执行脚本 0_pl_sft_13b.sh

修改模型训练脚本中的超参配置,必须修改的参数如表1所示。其他超参均有默认值,可以参考表1按照实际需求修改。

表1 训练超参配置说明

参数

示例值

参数说明

ORIGINAL_TRAIN_DATA_PATH

/home/ma-user/work/training_data/alpaca_gpt4_data.json

必须修改。训练时指定的输入数据路径。请根据实际规划修改。

ORIGINAL_HF_WEIGHT

/home/ma-user/work/models/llama-2-13b-chat-hf

必须修改。加载Hugging Face权重(可与tokenizer相同文件夹)时,对应的存放地址。请根据实际规划修改。

TOKENIZER_PATH

/home/ma-user/work/tokenizers/llama-2-13b-chat-hf

该参数为tokenizer文件的存放地址。默认与ORIGINAL_HF_WEIGHT路径相同。如果用户需要将Hugging Face权重与tokenizer文件分开存放时,则需要修改参数。

INPUT_PROCESSED_DIR

/home/ma-user/work/AscendSpeed/processed_for_input/llama2-13b

该路径下保存“数据转换”和“权重转换”的结果。示例中,默认生成在“processed_for_input”文件夹下。如果用户需要修改,可添加并自定义该变量。

OUTPUT_SAVE_DIR

/home/ma-user/work/AscendSpeed/saved_dir_for_output/

该路径下统一保存生成的 CKPT、PLOG、LOG 文件。示例中,默认统一保存在“saved_dir_for_output”文件夹下。如果用户需要修改,可添加并自定义该变量。

CKPT_SAVE_PATH

/home/ma-user/work/AscendSpeed/saved_dir_for_output/saved_models/llama2-13b

保存训练生成的模型 CKPT 文件。示例中,默认保存在“saved_dir_for_output/saved_models”文件夹下。如果用户需要修改,可添加并自定义该变量。

LOG_SAVE_PATH

/home/ma-user/work/AscendSpeed/saved_dir_for_output/saved_models/llama2-13b/log

保存训练过程记录的日志 LOG 文件。示例中,默认保存在“saved_models/llama2-13b/log”文件夹下。如果用户需要修改,可添加并自定义该变量。

ASCEND_PROCESS_LOG_PATH

/home/ma-user/work/AscendSpeed/saved_dir_for_output/plog

保存训练过程中记录的程序堆栈信息日志 PLOG 文件。示例中,默认保存在“saved_dir_for_output/plog”文件夹下。如果用户需要修改,可添加并自定义该变量。

SAVE_INTERVAL

10

表示训练间隔多少step,则会保存一次权重文件。

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

Step2 创建SFT全参微调训练任务

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

图1 选择镜像

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

cd /home/ma-user/work/llm_train/AscendSpeed;
sh ./scripts/install.sh;
sh ./scripts/llama2/0_pl_sft_13b.sh

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

cd /home/ma-user/work/llm_train/AscendSpeed;
sh ./scripts/llama2/0_pl_sft_13b.sh

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

图2 开启故障重启

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

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

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

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

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

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

图3 选择资源池规格

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

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

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

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

相关文档