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

LoRA微调训练

前提条件

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

Step1 创建训练任务

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

代码目录选择:OBS桶路径下的 llm_train/AscendSpeed 代码目录。
图1 创建训练作业

若镜像使用使用基础镜像(二选一)中的基础镜像时,训练作业启动命令中输入:

cd /home/ma-user/modelarts/user-job-dir/AscendSpeed;
sh ./scripts/install.sh;
sh ./scripts/obs_pipeline.sh

若镜像使用ECS中构建新镜像(二选一)构建的新镜像时,训练作业启动命令中输入:

cd /home/ma-user/modelarts/user-job-dir/AscendSpeed;
sh ./scripts/obs_pipeline.sh

Step2 配置数据输入和输出

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

  1. 在“输入”的输入框内设置变量:ORIGINAL_TRAIN_DATA_PATH、ORIGINAL_HF_WEIGHT。
    • ORIGINAL_TRAIN_DATA_PATH:训练时指定的输入数据集路径。
    • ORIGINAL_HF_WEIGHT:加载tokenizer与Hugging Face权重时,对应的存放地址。
  2. 在“输出”的输入框内设置变量:OUTPUT_SAVE_DIR、HF_SAVE_DIR。
    • OUTPUT_SAVE_DIR:训练完成后指定的输出模型路径。
    • HF_SAVE_DIR:训练完成的权重文件自动转换为Hugging Face格式权重输出的路径(确保添加CONVERT_MG2HF环境变量并设置为True)。
  3. 分别点击“输入”和“输出”的数据存储位置,如图所示,选择OBS桶中指定的目录。ORIGINAL_TRAIN_DATA_PATH中则直接选中数据集文件。
  4. “输入”和“输出”中的获取方式全部选择为:环境变量。
  5. “输出”中的预下载至本地目标选择:下载,此时输出路径中的数据则会下载至OBS中。

Step3 配置环境变量

点击“增加环境变量”,在增加的环境变量填写框中,按照表1表格中的配置进行填写。

表1 需要填写的环境变量

环境变量

示例值

参数说明

MOUNT

OBS

默认必须填写。表示代码根据OBS存储方式运行。

MODEL_NAME

llama2-13b

输入选择训练的模型名称。

RUN_TYPE

lora

表示训练类型。可选择值:[pretrain, sft, lora]。

DATA_TYPE

GeneralInstructionHandler

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

  • GeneralPretrainHandler:使用预训练的alpaca数据集。
  • GeneralInstructionHandler:使用微调的alpaca数据集。
  • MOSSMultiTurnHandler:使用微调的moss数据集。

MBS

4

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

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

GBS

512

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

TP

8

表示张量并行。

PP

1

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

LR

2.5e-5

学习率设置。

MIN_LR

2.5e-6

最小学习率设置。

SEQ_LEN

4096

要处理的最大序列长度。

MAX_PE

8192

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

SN

5120

用户指定的输入数据集中数据的总数量。更换数据集时,需要修改。

EPOCH

1

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

TRAIN_ITERS

SN / GBS * EPOCH

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

SAVE_INTERVAL

10

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

SEED

1234

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

CONVERT_MG2HF

True

表示训练完成的权重文件会自动转换为Hugging Face格式权重。若不需要自动转换,则删除该环境变量。

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

Step4 其他配置

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

图2 选择资源池规格

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

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

相关文档