如何将HuggingFace微调得到的model.safetensor转换为pytorch.bin?
将Safetensors模型转换为PyTorch .bin格式的方法
方法一:使用HuggingFace Transformers库(推荐)
这是最稳妥的方案,官方工具能保证参数映射的准确性,适配大多数Transformer模型场景。
- 安装依赖(未安装时执行):
pip install transformers safetensors torch - 编写转换脚本:
执行脚本后,目标目录会生成from transformers import AutoModel, AutoTokenizer # 替换为你的safetensors模型所在目录 model_path = "你的模型目录" # 加载模型(指定use_safetensors=True确保加载safetensors格式文件) model = AutoModel.from_pretrained(model_path, use_safetensors=True) tokenizer = AutoTokenizer.from_pretrained(model_path) # 替换为转换后模型的保存目录,safe_serialization=False会生成pytorch_model.bin save_path = "转换后的模型目录" model.save_pretrained(save_path, safe_serialization=False) tokenizer.save_pretrained(save_path)pytorch_model.bin文件,同时保留tokenizer配置,适配旧框架的常规需求。
方法二:手动加载Safetensors并保存为PyTorch格式
若不想依赖Transformers库,可直接通过safetensors和torch完成底层转换:
- 安装依赖:
pip install safetensors torch - 转换脚本:
注意:如果模型存在多个分片safetensors文件,需要手动加载所有分片并合并字典后再保存;若旧框架对参数命名有特殊要求,可能需要手动调整字典中的键名。import safetensors.torch import torch # 加载单个safetensors文件 tensors = safetensors.torch.load_file("你的模型目录/model.safetensors") # 保存为pytorch.bin格式 torch.save(tensors, "转换后的模型目录/pytorch_model.bin")
关键注意事项
- 转换前确认模型结构与旧框架兼容:如果旧框架基于更早版本的Transformer结构开发,加载模型时可能需要指定兼容的模型类或调整加载参数。
- 多分片模型处理:方法一会自动合并所有分片为单个
pytorch_model.bin,方法二需自行遍历分片文件合并参数字典。
内容的提问来源于stack exchange,提问作者FewKey
相关产品推荐
相关产品推荐

