ConvertWeight

基本介绍

ConvertWeight支持对torch权重和mindspore权重的格式互转

支持模型

name
llama llama
glm glm
glm-n glm2、glm3
qwen qwen、qwen2
internlm internlm
baichuan baichuan、baichuan2
gpt gpt2
bloom bloom
wizardcoder wizardcoder
skywork skywork
mixtral mixtral
mae mae
vit vit
swin swin
knowlm knowlm
telechat telechat_7b、telechat_12b
codegeex2 codegeex2
deepseek deepseek、deepseek1_5

使用方式

启动权重转换脚本

脚本:

根目录下convert_weight.py

主要参数;

args required
model 模型名称
reversed mindspore格式转torch格式
input_path 输入权重文件路径,如果模型存在多个权重文件,选择模型目录下其中一个即可,根据目录自动加载全部权重
output_path 输出权重文件路径
dtype 输出的权重数据类型,默认为原始权重数据类型
n_head bloom权重转换所需额外参数,根据bloom模型实际情况配置
hidden_size bloom权重转换所需额外参数,根据bloom模型实际情况配置
layers gpt2和wizardcoder的torch权重转mindspore权重时所需的额外参数,转换的权重层数
is_pretrain swin权重转换所需额外参数,输入权重是否为预训练权重
telechat_type telechat权重转换所需额外参数,模型版本

执行:

python convert_weight.py --model model_name --input_path ./hf/input.bin --output_path ./ms/output.ckpt --otherargs
python convert_weight.py --model model_name --input_path ./ms/output.ckpt --output_path ./hf/input.bin --reversed --otherargs
# Example for llama:
# python convert_weight.py --model llama --input_path open_llama_7b.ckpt --output_path llama_7b.bin --reversed

扩展

  1. 在扩展模型目录下新增convert_weight.pyconvert_reversed.py文件,
  2. 在文件中分别编写conver_ms_to_pt及conver_pt_to_ms权重转换函数,函数参数为input_pathoutput_pathdtype及额外参数**kwargs
  3. 在mindformers根目录下convert_weight.py文件中的convert_map和reversed_convert_map字典中加入扩展模型名称及转换函数引入路径
  4. 额外参数在main函数中通过parser.add_argument('--arg_name',default=,type=,required=,help=)新增