AI开发平台MODELARTS-推理前的权重合并转换:权重文件格式转换

时间:2024-11-05 09:54:17

权重文件格式转换

任意并行切分策略的Megatron权重格式转化为HuggingFace权重(该场景一般用于将训练好的megatron模型:预训练、lora、sft 重新转回HuggingFace格式),为下一步推理使用准备,无推理任务忽略此章节。一般训练都是多卡分布式训练权重结果文件为多个且文件为Megatron格式,因此需要合并多个文件转换为huggingface格式。

转换脚本的执行需要在/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink目录下执行。具体执行步骤如下:

以lora微调训练权重结果Megatron权重格式转化为HuggingFace权重为例。

#进入ModelLink目录下:
cd /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink
# 执行权重格式转换脚本:2_convert_mg_hf.sh
LOAD_DIR=/home/ma-user/ws/saved_dir_for_ma_output/GLM3-6B/lora SAVE_DIR=/home/ma-user/ws/tokenizers/GLM3-6B CONVERT_HFTOMG=False  sh ../scripts/glm3/2_convert_mg_hf.sh

其脚本2_convert_mg_hf.sh参数说明:

  • save-model-type:输出后权重格式如(save_huggingface_qwen、save_huggingface_llama等)。
  • megatron-path:megatron模型路径,在代码xxx-Ascend/llm_train/AscendSpeed/ModelLink目录下
  • load-dir:${LOAD_DIR} 训练完成后保存的权重路径.如lora微调、sft、预训练生成的权重结果。
  • save-dir:${SAVE_DIR} 需要填入原始HF模型路径,新权重会存于../GLM3-6B/mg2hg下。
  • target-tensor-parallel-size:任务不同调整参数target-tensor-parallel-size。默认为1
  • target-pipeline-parallel-size :任务不同调整参数target-pipeline-parallel-size。默认为1
  • add-qkv-bias:为像qkv这样的键和值添加偏差。
  • loader:权重转换时要加载检查点的模型名称。
  • saver:权重转换时加载检查模型保存名称。
  • CONVERT_HFtoMG:权重转换类型是否为HuggingFace权重转换为Megatron格式,True :HuggingFace权重转换为Megatron,反之False为Megatron格式转换HuggingFace格式

# 转换后的权重文件结构

├── config.json
├── configuration_chatglm.py
├── generation_config.json
├── model-00001-of-00003.safetensors
├── model-00002-of-00003.safetensors
├── model-00003-of-00003.safetensors
├── model.safetensors.index.json
├── modeling_chatglm.py
├── quantization.py
support.huaweicloud.com/bestpractice-modelarts/modelarts_10_1686.html