本文记录了在使用LoRA微调后的Qwen模型时的两种启动方式,一种是原始模型+LoRA模型,一种是将两个模型合并保存后再调用的方式。
LoRA模型的启动方式
LoRA模型可以通过peft包中的AutoPeftModelForCausalLM进行加载:
from peft import AutoPeftModelForCausalLM
# 设置LoRA微调后的模型存储路径(checkpoint)
model = AutoPeftModelForCausalLM.from_pretrained("/home/<用户名>/nlp/Qwen/finetune/output_qwen_medical/checkpoint-1000/", device_map='auto',trust_remote_code=True).eval()
LoRA模型加载完毕还是需要transformers里面的AutoTokenizer:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("/home/<用户名>/nlp/Qwen/model/qwen/Qwen-1_8B-Chat", trust_remote_code=True)
然后再调model的chat方法即可:
# 第一轮对话
response, history = model.chat(tokenizer, "....", history =None)
print(response)
以合并LoRA模型与原始模型的参数方式加载
保存模型参数:
# 可以将LoRA参数与原始参数