如何加载本地保存的LoRA权重用于模型推理?
本地加载LoRA适配器进行推理的正确方法
你之前的代码问题在于,get_peft_model是用来初始化新的LoRA训练配置的,不会加载你已保存的训练好的权重。要加载本地的LoRA适配器文件,应该用PEFT库的PeftModel.from_pretrained方法,具体操作如下:
操作步骤
- 先加载训练LoRA时使用的基础预训练模型
- 再通过
PeftModel.from_pretrained将基础模型与本地LoRA适配器的权重绑定
完整代码示例
from peft import PeftModel from transformers import AutoModelForCausalLM, AutoTokenizer # 加载基础模型(替换为你训练时用的模型名称或本地路径) base_model = AutoModelForCausalLM.from_pretrained( "原模型名称或本地路径", device_map="auto" # 根据硬件调整,比如指定"cuda"或"cpu" ) tokenizer = AutoTokenizer.from_pretrained("原模型名称或本地路径") # 加载本地LoRA适配器(传入适配器文件所在的文件夹路径) model = PeftModel.from_pretrained(base_model, "/path/to/adapter") # 推理示例 inputs = tokenizer("你的输入文本", return_tensors="pt").to("cuda") outputs = model.generate(**inputs, max_new_tokens=100) print(tokenizer.decode(outputs[0], skip_special_tokens=True))
关键注意事项
- 确保
/path/to/adapter文件夹下包含adapter_model.bin和adapter_config.json文件(文件名需符合PEFT默认命名,若自定义过文件名需手动指定) - 基础模型必须和训练LoRA时使用的模型完全一致,否则会出现权重不匹配问题
- 若训练的是其他任务类型(如序列分类),替换对应的
AutoModelForXXX类即可
内容的提问来源于stack exchange,提问作者ASierra
相关产品推荐
相关产品推荐

