训练的权重转换说明
以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/目录下查看转换后的权重文件。
用户自定义执行权重转换参数修改说明
同样以 llama2 为例,用户可在Notebook直接编辑scripts/llama2/2_convert_mg_hf.sh脚本,自定义环境变量的值,并在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 |
训练完成后保存的权重路径。 |