更新时间:2024-06-29 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/ 目录下查看转换后的权重文件。

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

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

表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

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

相关文档