版本信息最后核对:2026-10-24
vLLM 多 LoRA 服务:一个基座模型动态挂载多个适配器,按请求路由
vLLM 支持在同一个基座模型上加载多个 LoRA 适配器,按请求里的 model 字段路由到不同适配器。它解决“多个微调版本共用一个基座、又不想每个版本单独起一个完整模型”的问题,适合多租户、A/B 测试和按客户定制。LoRA 只训练低秩适配器,不改变基座权重;推理时适配器权重会额外占用显存。
vLLM 的 LoRA 支持有上限:--max-loras 控制同时加载的适配器数量,--max-lora-rank 控制最大秩。vLLM 0.12 起已移除 LoRA 额外词表支持(原 --lora-extra-vocab-size)。适配器需要是 PEFT 格式,并与基座模型架构、隐藏维度匹配。
# 启动基座模型,加载两个 LoRA 适配器
vllm serve Qwen/Qwen2.5-7B-Instruct \
--enable-lora \
--max-loras 4 --max-lora-rank 64 \
--lora-modules customer-a=/models/lora/customer-a \
customer-b=/models/lora/customer-b \
--host 0.0.0.0 --port 8000
# 请求时用 model 字段选择适配器
curl http://localhost:8000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"customer-a","messages":[{"role":"user","content":"你好"}]}'
# 不指定适配器时使用基座模型
curl http://localhost:8000/v1/models
运行时动态加载/卸载(需要开启对应开关,按 vLLM 版本确认):
VLLM_ALLOW_RUNTIME_LORA_UPDATING=1 vllm serve Qwen/Qwen2.5-7B-Instruct \
--enable-lora --max-loras 8 --max-lora-rank 64
curl -X POST http://localhost:8000/v1/load_lora_adapter \
-H 'Content-Type: application/json' \
-d '{"lora_name":"customer-c","lora_path":"/models/lora/customer-c"}'
--max-loras 不看显存:每个适配器都占显存,长上下文和高并发会放大占用;先压测再定上限。model 字段写基座名:请求会走基座而不是适配器;用 /v1/models 确认暴露的名称,名称要和 --lora-modules 一致。adapter_config.json;按 vLLM 文档转换。--lora-extra-vocab-size 加载;应改用不扩展词表的适配器。/v1/load_lora_adapter 等于允许加载任意路径;生产环境要限制来源、路径和调用方权限。合上页面,先回答,再展开对照。
--max-loras 和 --max-lora-rank 分别限制什么?为什么不能只调大?model 字段填写适配器名称,vLLM 按 --lora-modules 注册的名称路由;基座模型用基座名称。--max-loras 限制同时加载的适配器数量,--max-lora-rank 限制适配器秩;每个适配器都占显存,调大要结合显存和并发压测。
小程序版
微信扫码,随时查命令