![[Bug]: MoE base model requests may be affected by LoRA deltas when LoRA adapters are loaded](https://www.chat-gpts.plus/wp-content/uploads/2026/06/42008-b2a1e60a.jpg)
[Bug]: MoE base model requests may be affected by LoRA deltas when LoRA adapters are loaded
快速结论:该问题发生在 vLLM 0.20.0 中加载了 LoRA adapter 后,后续对 MoE 基座模型的请求(base-model-only batch)可能会被残留的 LoRA delta 污染输出。优先排查是否使用了 MoE 基座模型(如 DeepSeek-V3、Mixtral 等)并同时加载了 LoRA adapter。
问题场景
用户在 vLLM 服务中配置了 LoRA adapter,随后发送针对基座模型(不应用 LoRA)的推理请求。在 MoE 架构的基座模型上,部分请求的输出被错误地叠加了 LoRA 的 delta 权重,导致推理结果出现偏差。
报错原文
该问题不触发显式报错,而是表现为推理结果有隐秘偏差——
用户观察到的现象是“visible corruption in the output is unlikely - only observed in tandem with #42007 or a truly garbage/random LoRA adapter”,
开发者通过日志和单次测试验证了“a delta stemming from LoRA in base-model-only batches”。
核心错误逻辑可见于代码路径中 token_lora_mapping 的脏数据传播。
原因分析
开发者在 main 分支上复现时确认根因:当 LoRA adapter 被加载后,token_lora_mapping 中残留了旧的 LoRA token ID。在后续仅处理基座模型请求(base-model-only batch)时,调度器错误地通过此映射将 LoRA delta 应用到中间激活层,导致结果被污染。虽然部分代码路径已改用 active_lora_ids(更新及时、不会残留)来提前判断退出条件,但 MoE 模型中仍存在未被覆盖的路径。
该 Bug 属于逻辑残留问题,而非配置异常。在非 MoE 模型(如 LLaMA)上不易被触发。
环境排查
- vLLM 版本:0.20.0(问题在 main 分支最新代码中仍部分存在,直到 PR #42120 修复)
- 模型架构:MoE 类型(如 DeepSeek-V3、Mixtral 等)
- 服务负载:同时接收 LoRA adapter 请求与 base-model-only 请求,或接替发送
- PyTorch / CUDA:不影响修复,但确认版本与对应 vLLM 兼容
解决步骤
- 升级 vLLM 到已包含修复的版本
该 Bug 由 PR #42120 修复,建议升级到该 PR 合入后的版本(> 0.20.0-next 或后续正式版)。 - 若暂时无法升级,可尝试在生产环境隔离 LoRA adapter 和 base-model-only 两条推理路径(不同 vLLM 实例),避免调度器共用
token_lora_mapping。 - 临时缓解观察:如果仅遇到此 Bug 而未遇到 #42007,输出的差异通常微小(开发者称“visible corruption unlikely”),可在风险可控前提下继续使用,但建议尽快修复。
验证方法
执行如下验证:
- 加载至少一个 LoRA adapter。
- 连续发送多个 base-model-only 请求(不指定 LoRA adapter 或使用空 adapter)。
- 对比升级前后两次相同请求的输出 logits 或采样结果,确认无系统性偏差。
- 若使用 MoE 模型,建议同时测试与 LoRA 请求混合的并发场景。
开发者已通过添加日志并单次运行验证修复前后存在于 base-model-only batch 中的 delta 被消除。



