【模型手术室】第十篇:落地部署 —— 权重合并、vLLM 加速与生产环境的最后一步
专栏进度:10 / 10 (微调实战专题 · 大结局)
在实验室里,我们习惯用 peft 加载模型;但在生产环境,我们需要的是一个各部分融合为一、响应极快、显存占用极低的单体模型。
一、 权重合并:从“插件”到“一体化”
LoRA 训练产生的是增量权重。为了推理性能,我们需要将 A 和 B 矩阵的乘积直接加回原始权重 W 中。
- Python 实战:一键合并脚本
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base_model_path = "./base_models/qwen2.5-7b"
lora_model_path = "./saves/security_agent_lora"
export_path = "./final_model/security_expert_v1"
- 加载基座和插件
base_model = AutoModelForCausalLM.from_pretrained(base_model_path, torch_dtype="auto", device_map="cpu")
model = PeftModel.from_pretrained(base_model, lora_model_path)
- 合并并卸载 (Merge and Unload)
这一步会将 LoRA 权重永久注入基座模型
final_model = model.merge_and_unload()
- 保存完整模型
final_model.save_pretrained(export_path)
tokenizer = AutoTokenizer.from_pretrained(base_model_path)
tokenizer.save_pretrained(export_path)
print("权重合并完成!现在你可以像调用普通模型一样调用它了。")
二、 推理加速:引入 vLLM 引擎
合并后的模型如果直接用 transformers 库跑,并发能力极弱。在工业界,vLLM 是目前的王者,它利用 PagedAttention 技术,能将推理吞吐量提升 10 倍以上。
- 部署你的行业专家 API
只需一行命令,即可开启一个兼容 OpenAI 接口标准的模型服务:
Bash
python -m vllm.entrypoints.openai.api_server
–model ./final_model/security_expert_v1
–trust-remote-code
–port 8000
–gpu-memory-utilization 0.9
–max-model-len 4096
三、 生产环境的“三道保险”
动态批处理 (Continuous Batching):vLLM 会自动把不同用户的请求拼在一起算,极大提升 GPU 利用率。
多卡并行 (Tensor Parallelism):如果模型太大(如 70B),可以使用 --tensor-parallel-size 2 将模型切分到两张显卡上运行。
健康检查与监控:配合 Prometheus 和 Grafana,实时监控你的行业模型是否出现了“推理超时”或“显存溢出”。
四、 避坑指南:部署后的“最后一道雷”
Tokenizer 不一致:合并权重时,务必检查 tokenizer_config.json 是否被覆盖。如果分词器版本不对,模型会满嘴胡言。
显存碎片化:在高并发场景下,KV Cache 会迅速占满显存。对策:根据业务需求调整 max_num_seqs 参数。
精度退化:如果你在第七篇做了量化,部署时请确保推理框架(如 vLLM)支持该量化格式(GPTQ/AWQ/GGUF)。
更多推荐


所有评论(0)