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

SFT全参微调训练任务

步骤1 上传训练权重文件和数据集

如果在准备代码和数据阶段已经上传权重文件和数据集到容器中,可以忽略此步骤。

如果未上传训练权重文件和数据集到容器中,具体参考上传代码和权重文件到工作环境上传数据到指定目录章节完成。训练脚本中会自动执行训练前的权重转换操作和数据处理操作。

如果想详细了解脚本执行训练权重转换操作和数据集预处理操作说明请分别参见训练中的权重转换说明训练的数据集预处理说明

步骤2 修改训练超参配置

Llama2-70b和Llama2-13b的SFT微调为例,执行脚本为0_pl_sft_70b.sh0_pl_sft_13b.sh

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

表1 必须修改的训练超参配置

参数

示例值

参数说明

ORIGINAL_TRAIN_DATA_PATH

/home/ma-user/ws/llm_train/AscendSpeed/training_data/alpaca_gpt4_data.json

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

ORIGINAL_HF_WEIGHT

/home/ma-user/ws/llm_train/AscendSpeed/model/llama2-70B

必须修改。加载tokenizer与Hugging Face权重时,对应的存放地址。请根据实际规划修改。

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

步骤3 启动训练脚本

修改超参值后,再启动训练脚本。其中 Llama2-70b建议为4机32卡训练。

多机启动

Llama2-70b为例,多台机器执行训练启动命令如下。进入代码目录 /home/ma-user/ws/llm_train/AscendSpeed 下执行启动脚本。

多机执行命令为:sh scripts/llama2/0_pl_sft_70b.sh <MASTER_ADDR=xx.xx.xx.xx> <NNODES=4> <NODE_RANK=0>
示例:
#第一台节点
sh scripts/llama2/0_pl_sft_70b.sh  xx.xx.xx.xx  4  0
# 第二台节点 
sh scripts/llama2/0_pl_sft_70b.sh  xx.xx.xx.xx  4  1
# 第三台节点 
sh scripts/llama2/0_pl_sft_70b.sh  xx.xx.xx.xx  4  2
# 第四台节点 
sh scripts/llama2/0_pl_sft_70b.sh  xx.xx.xx.xx  4  3

以上命令多台机器执行时,只有${NODE_RANK}的节点ID值不同,其他参数都保持一致。其中MASTER_ADDR、 NNODES、 NODE_RANK为必填。

单机启动

对于Llama2-7b和Llama2-13b,操作过程与Llama2-70b相同,只需修改对应参数即可,可以选用单机启动,以Llama2-13b为例。

进入代码目录 /home/ma-user/ws/llm_train/AscendSpeed 下执行启动脚本,先修改以下命令中的参数,再复制执行。

# 单机执行命令为:sh scripts/llama2/0_pl_sft_13b.sh <MASTER_ADDR=localhost> <NNODES=1> <NODE_RANK=0>
sh scripts/llama2/0_pl_sft_13b.sh localhost 1 0

训练完成后,生成的权重文件保存路径为:/home/ma-user/ws/llm_train/saved_dir_for_output/llama2-13b/saved_models/

训练完成后,请参考查看日志和性能章节查看SFT微调的日志和性能。

相关文档