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

训练中的权重转换说明

以 llama2-13b 举例,运行 0_pl_pretrain_13b.sh 脚本。脚本同样还会检查是否已经完成权重转换的过程。

如果已完成权重转换,则直接执行预训练任务。如果未进行权重转换,则会自动执行 scripts/llama2/2_convert_mg_hf.sh 。脚本具体参数如下:

HuggingFace转Megatron参数说明

  • --model-type:模型类型。
  • --loader:选择对应加载模型脚本的名称。
  • --saver:选择模型保存脚本的名称。
  • --tensor-model-parallel-size:${TP}张量并行数,需要与训练脚本中的TP值配置一样。
  • --pipeline-model-parallel-size:${PP}流水线并行数,需要与训练脚本中的PP值配置一样。
  • --load-dir:加载转换模型权重路径。
  • --save-dir : 权重转换完成之后保存路径。
  • --tokenizer-model : tokenizer路径。

输出转换后权重文件保存路径:

权重转换完成后,在 /home/ma-user/ws/processed_for_ma_input/llama2-13b/converted_weights_TP${TP}PP${PP} 目录下查看转换后的权重文件。

Megatron转HuggingFace参数说明

训练完成的权重文件默认不会自动转换为Hugging Face格式权重如果用户需要自动转换,则在运行脚本,例如0_pl_pretrain_13b.sh中,添加变量CONVERT_MG2HF并赋值TRUE。如果用户后续不需要自动转换,则在运行脚本中必须删除CONVERT_MG2HF变量。

Megatron转HuggingFace脚本具体参数如下:

  • --model-type:模型类型。
  • --save-model-type:输出后权重格式。
  • --load-dir:训练完成后保存的权重路径。
  • --save-dir:需要填入原始HF模型路径,新权重会存于../Llama2-13B/mg2hg下。
  • --target-tensor-parallel-size:任务不同调整参数target-tensor-parallel-size,默认为1。
  • --target-pipeline-parallel-size :任务不同调整参数target-pipeline-parallel-size,默认为1。

输出转换后权重文件保存路径:

权重转换完成后,在 /home/ma-user/ws/saved_dir_for_output/llama2-13b/saved_models/pretrain_hf/ 目录下查看转换后的权重文件。

权重转换完成后,需要将例如saved_models/pretrain_hf中的文件与原始Hugging Face模型中的文件进行对比,查看是否缺少如tokenizers.json、tokenizer_config.json、special_tokens_map.json等tokenizer文件或者其他json文件。如果缺少则需要直接复制至权重转换后的文件夹中,否则不能直接用于推理。

用户自定义执行权重转换参数修改说明

同样以 llama2 为例,用户可直接编辑 scripts/llama2/2_convert_mg_hf.sh 脚本,自定义环境变量的值,并运行该脚本。其中环境变量详细介绍如下:

如果用户要自定义数据处理脚本并且单独执行,同样以 llama2 为例。注意脚本中的python命令分别有Hugging Face 转 Megatron格式,以及Megatron 转 Hugging Face格式,而脚本使用hf2hg、mg2hf参数传递来区分。

  • 方法一:用户可打开scripts/llama2/2_convert_mg_hf.sh脚本,将执行的python命令复制下来,修改环境变量的值。进入到 /home/ma-user/ws/llm_train/AscendSpeed/ModelLink 路径中,再执行python命令。
  • 方法二:用户直接编辑scripts/llama2/2_convert_mg_hf.sh脚本,自定义环境变量的值,并在脚本的首行中添加 cd /home/ma-user/ws/llm_train/AscendSpeed/ModelLink 命令,随后运行该脚本。

其中环境变量详细介绍如下:

表1 权重转换脚本中的环境变量

参数

示例

参数说明

$1

hf2hg、mg2hf

运行 2_convert_mg_hf.sh 时,需要附加的参数值。如下:

hf2hg:用于Hugging Face 转 Megatron

mg2hf:用于Megatron 转 Hugging Face

TP

8

张量并行数,一般等于单机卡数

PP

1

流水线并行数,一般等于节点数量

ORIGINAL_HF_WEIGHT

/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/tokenizers/Llama2-13B

原始Hugging Face模型路径

CONVERT_MODEL_PATH

/home/ma-user/ws/processed_for_ma_input/llama2-13b/converted_weights_TP8PP1

权重转换完成之后保存路径

TOKENIZER_PATH

/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/tokenizers/Llama2-13B

tokenizer路径,即:原始Hugging Face模型路径

MODEL_SAVE_PATH

/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/saved_dir_for_output/llama2-13b

训练完成后保存的权重路径。

相关文档