vLLM 0.6.3 启动时加了 --enable-lora,用 /v1/load_lora_adapter 加载本地 adapter 目录,返回 400,原文 LoRA adapter path is not allowed,目录权限正常。

一开始怀疑是「adapter 的基座模型与当前加载的模型不一致」,查了一圈,方向不对。

把日志和配置对完,能解释这个现象的基本就这几处。服务启动时没有把该目录加进允许列表。也可能是adapter 目录里缺 adapter_config.json。

还有一种情况,路径用了相对路径,服务工作目录不同。

第一件事是确认 adapter 目录内容完整

ls adapter/

再往下启动时显式声明允许的 adapter 路径

python -m vllm.entrypoints.openai.api_server --model Qwen/Qwen2.5-7B-Instruct --enable-lora --lora-modules myadapter=/abs/path/adapter

接着用接口查询已加载的 adapter

curl -s http://127.0.0.1:8000/v1/models | jq -r '.data[].id'

发一次带 adapter 名的请求验证

curl -s http://127.0.0.1:8000/v1/chat/completions -d '{"model":"myadapter","messages":[{"role":"user","content":"hi"}]}'

白天有业务在跑,能验证的部分都压到了晚上做。

当时还开着另一个排查窗口,两边日志对照着看才定位到。

改完先别撤,确认这几项。模型列表里出现 myadapter,用该名字请求返回 200,输出风格与微调前有明显差异。

容易忽略的是,热加载的路径校验是按白名单做的,相对路径和多层软链都容易被判成不合法。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189