更新时间:2024-05-08 GMT+08:00
SFT全参微调权重转换
增量训练前需将HuggingFace格式权重转换为Megatron格式后再进行SFT全参微调。
本章节主要介绍如何将HuggingFace权重转换为Megatron格式。此处的HuggingFace权重文件和转换操作结果同时适用于SFT全参微调和LoRA微调训练。
HuggingFace权重转换操作
- 下载GLM3-6B的预训练权重和词表文件,并上传到/home/ma-user/ws/tokenizers/GLM3-6B目录下。具体下载地址请参见表1。如果已下载,忽略此步骤。
- 创建权重转换后的输出目录/home/ma-user/ws/processed_for_ma_input/GLM3-6B/converted_weights/。
cd /home/ma-user/ws/ #进入/home/ma-user/ws/目录 mkdir -p processed_for_ma_input/GLM3-6B/converted_weights
- 进入代码目录/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink,在此代码目录下执行2_convert_mg_hf.sh脚本。xxx-Ascend请根据实际目录替换。
#进入ModelLink目录下 cd /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink # 执行权重格式转换脚本 TP=2 PP=4 LOAD_DIR=/home/ma-user/ws/tokenizers/GLM3-6B SAVE_DIR=/home/ma-user/ws/processed_for_ma_input/GLM3-6B/converted_weights TOKENIZER_PATH=/home/ma-user/ws/tokenizers/GLM3-6B CONVERT_HFtoMG=True sh ../scripts/glm3/2_convert_mg_hf.sh
其脚本2_convert_mg_hf.sh参数说明:
- --model-type:模型类型。
- --loader:权重转换要加载检查点的模型名称。
- --tensor-model-parallel-size:${TP} 张量并行数,需要与训练脚本中的配置一样。
- --pipeline-model-parallel-size:${PP} 流水线并行数,需要与训练脚本中的配置一样。
- --saver:检查模型保存名称。
- --load-dir:${LOAD_DIR} 加载转换模型权重路径。
- --save-dir : ${SAVE_DIR} 权重转换完成之后保存路径。
- --tokenizer-model : ${TOKENIZER_PATH} tokenizer路径。
- --add-qkv-bias : 为qkv这样的键和值添加偏差。
- CONVERT_HFtoMG:权重转换类型是否为HuggingFace权重转换为Megatron格式,True表示HuggingFace权重转换为Megatron,反之False为Megatron格式转换HuggingFace格式。
- 权重转换完成后,在/home/ma-user/ws/processed_for_ma_input/GLM3-6B/converted_weights目录下查看转换后的权重文件。
图1 转换后的权重文件
父主题: SFT全参微调训练