训练的权重转换说明
以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/work/llm_train/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/work/llm_train/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 为例。注意脚本中的python命令分别有Hugging Face 转 Megatron格式,以及Megatron 转 Hugging Face格式,而脚本使用hf2hg、mg2hf参数传递来区分。
- 方法一:用户可打开scripts/llama2/2_convert_mg_hf.sh脚本,将执行的python命令复制下来,修改环境变量的值。在Notebook进入到 /home/ma-user/work/llm_train/AscendSpeed/ModelLink 路径中,再执行python命令。
- 方法二:用户在Notebook直接编辑scripts/llama2/2_convert_mg_hf.sh脚本,自定义环境变量的值,并在脚本的首行中添加 cd /home/ma-user/work/llm_train/AscendSpeed/ModelLink 命令,随后在Notebook中运行该脚本。
其中环境变量详细介绍如下:
参数 |
示例 |
参数说明 |
---|---|---|
$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/work/model/Llama2-13B |
原始Hugging Face模型路径 |
CONVERT_MODEL_PATH |
/home/ma-user/work/llm_train/processed_for_ma_input/llama2-13b/converted_weights_TP8PP1 |
权重转换完成之后保存路径 |
TOKENIZER_PATH |
/home/ma-user/work/model/llama-2-13b-chat-hf |
tokenizer路径,即:原始Hugging Face模型路径 |
MODEL_SAVE_PATH |
/home/ma-user/work/llm_train/saved_dir_for_output/llama2-13b |
训练完成后保存的权重路径。 |