更新时间:2024-04-30 GMT+08:00
分享

SFT微调权重转换

微调训练前需将HuggingFace格式权重转换为Megatron格式后再进行SFT微调训练。

本章节主要介绍如何将HuggingFace权重转换为Megatron格式。此处的HuggingFace权重文件和转换操作结果同时适用于SFT微调和LoRA微调训练。

HuggingFace权重转换操作

这里以Qwen-14B为例,Qwen-7B和Qwen-72B只需按照实际情况修改环境变量参数即可。

  1. 下载Qwen-14B的预训练权重和词表文件,并上传到/home/ma-user/ws/tokenizers/Qwen-14B目录下。具体下载地址请参见表1。如果已下载,忽略此步骤。
  2. 创建权重转换后的输出目录/home/ma-user/ws/processed_for_ma_input/Qwen-14B/converted_weights/。
    cd /home/ma-user/ws/  #进入/home/ma-user/ws/目录
    mkdir -p processed_for_ma_input/Qwen-14B/converted_weights
  3. 进入代码目录/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink,在代码目录中执行util.py脚本。
    #加载ascendspeed及megatron模型:
    export PYTHONPATH=$PYTHONPATH:/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/AscendSpeed
    export PYTHONPATH=$PYTHONPATH:/home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink
    #进入到ModelLink目录下:
    cd /home/ma-user/ws/xxx-Ascend/llm_train/AscendSpeed/ModelLink 
    # 权重格式转换
    python tools/checkpoint/util.py --model-type GPT \
            --loader qwen_hf \
            --saver megatron \
            --target-tensor-parallel-size 8 \   #与微调TP值保持一致
            --target-pipeline-parallel-size 1 \ #与微调PP值保持一致
            --load-dir /home/ma-user/ws/tokenizers/Qwen-14B \
            --save-dir /home/ma-user/ws/processed_for_ma_input/Qwen-14B/converted_weights \
            --tokenizer-model /home/ma-user/ws/tokenizers/Qwen-14B/qwen.tiktoken \
            --add-qkv-bias

    参数说明:

    • --model-type:模型类型。
    • --loader:权重转换要加载检查点的模型名称。
    • --tensor-model-parallel-size:张量并行数,需要与训练脚本中的配置一样。
    • --pipeline-model-parallel-size:流水线并行数,需要与训练脚本中的配置一样。
    • --saver:检查模型保存名称。
    • --load-dir:加载转换模型权重路径。
    • --save-dir:权重转换完成之后保存路径。
    • --tokenizer-model:tokenizer 路径。
    • --add-qkv-bias:为qkv这样的键和值添加偏差。
  4. 权重转换完成后,在/home/ma-user/ws/processed_for_ma_input/Qwen-14B/converted_weights目录下查看转换后的权重文件。
    图1 转换后的权重文件
分享:

    相关文档

    相关产品