vLLM 0.6.3 用 --enable-lora 起服务,运行时调 /v1/load_lora_adapter 加载新适配器,报 adapter already exists,换个名字后显存涨了 8GB。
一开始怀疑是「max-loras 和 max-lora-rank 配置偏小」,查了一圈,方向不对。
这类报错背后常见的原因有几处,逐个排除就行。适配器名字与已加载的冲突。另一种情况是旧适配器没有卸载就加载新的。
另外,适配器的 base 模型与服务不一致。
上来先查当前已加载的适配器列表
curl -s http://localhost:8000/v1/models | python -m json.tool
卸载旧适配器再加载新的
curl -s -X POST http://localhost:8000/v1/unload_lora_adapter -H 'Content-Type: application/json' -d '{"lora_name":"invoice_v1"}'
调大并发的 LoRA 数量和 rank 上限
python -m vllm.entrypoints.openai.api_server --model Qwen2.5-7B-Instruct --enable-lora --max-loras 4 --max-lora-rank 64
等前面都确认过,再核对适配器声明的 base 模型路径
python -c "import json;print(json.load(open('adapter_config.json'))['base_model_name_or_path'])"
隔了一天再看,现象没变,说明不是偶发。
那几天正好在做别的变更,先把时间线对齐才敢动手。
恢复的判定其实很直接。新适配器加载成功,显存占用稳定在预期范围,请求能在不同适配器之间正常切换。
这里还有个坑。LoRA 不会自动回收,反复加载不卸载会持续占显存,热更新流程里要成对设计 load 和 unload。这类问题最好一次改到位,反复小改反而容易把原因搅混。
