LoRA微调训练
前提条件
已上传训练代码、训练权重文件和数据集到SFS Turbo中。
Step1 在Notebook中修改训练超参配置
以llama2-13b LORA微调为例,执行脚本0_pl_lora_13b.sh 。
修改模型训练脚本中的超参配置,必须修改的参数如表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”文件夹下。若用户需要修改,可添加并自定义该变量。 |
对于Yi系列模型、ChatGLMv3-6B和Qwen系列模型,还需要手动修改训练参数和tokenizer文件,具体请参见训练tokenizer文件说明。
Step2 创建LoRA微调训练任务
创建训练作业,并自定义名称、描述等信息。选择自定义算法,启动方式自定义,以及上传的镜像。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。
若镜像使用使用基础镜像中的基础镜像时,训练作业启动命令中输入:
cd /home/ma-user/work/llm_train/AscendSpeed; sh ./scripts/install.sh; sh ./scripts/llama2/0_pl_lora_13b.sh
若镜像使用ECS中构建新镜像和Notebook中构建新镜像构建的新镜像时,训练作业启动命令中输入:
cd /home/ma-user/work/llm_train/AscendSpeed; sh ./scripts/llama2/0_pl_lora_13b.sh
创建训练作业时,可开启自动重启功能。当环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力。此功能已适配断点续训练。
断点续训练是通过checkpoint机制实现。checkpoint机制是在模型训练的过程中,不断地保存训练结果(包括但不限于EPOCH、模型权重、优化器状态、调度器状态)。即便模型训练中断,也可以基于checkpoint继续训练。
当训练作业发生故障中断本次作业时,代码可自动从训练中断的位置继续训练,加载中断生成的checkpoint,中间不需要改动任何参数。
选择用户自己的专属资源池,以及规格与节点数。防止训练过程中出现内存溢出的情况,用户可参考表2进行配置。
新增SFS Turbo挂载配置,并选择用户创建的SFS Turbo文件系统。
- 云上挂载路径:输入镜像容器中的工作路径 /home/ma-user/work/
- 存储位置:输入用户在创建Notebook的“子目录挂载”路径。若默认没有填写,则忽略。
作业日志选择OBS中的路径,ModelArts的训练作业的日志信息则保存该路径下。