基于LoRA的模型部署流程踩坑记录
最近在实践LoRA微调后的模型部署,踩了不少坑,分享一下完整的部署流程。
环境准备
pip install transformers accelerate peft
核心代码实现
from peft import PeftModel, LoraConfig
from transformers import AutoModelForCausalLM, AutoTokenizer
# 加载基础模型和tokenizer
base_model = AutoModelForCausalLM.from_pretrained(
"path/to/base/model",
torch_dtype=torch.float16,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("path/to/base/model")
# 加载LoRA权重
model = PeftModel.from_pretrained(base_model, "path/to/lora/weights")
model.eval()
关键问题记录
- 显存溢出:使用
torch_dtype=torch.float16和device_map="auto"避免OOM - 推理速度慢:部署时需要使用
model.merge_and_unload()合并权重后推理 - tokenizer不兼容:确保基础模型和LoRA权重使用相同的tokenizer
部署建议
推荐使用FastAPI封装接口,配合Docker容器化部署,避免环境依赖问题。

讨论