Prhub

#38927 [Bugfix][LoRA] Fix missing in_proj_z in Qwen3_5ForConditionalGenerati…

原始 PR 作者 elenalil-aws 合并时间 2026-04-04 07:30 文件变更 1 提交数 2 评论 2 代码增减 +1 / -0

执行摘要

修复 Qwen3.5 模型在 LoRA 启用且 TP>1 时加载适配器报 IndexError 的 bug。

修复Qwen3.5模型在启用LoRA且张量并行(TP>1)时加载适配器会抛出IndexError: list index out of range的问题。PR body明确指出:当LoRA启用时,GDN层使用分离的in_proj_qkv和in_proj_z投影而不是合并的in_proj_qkvz,但update_packed_mapping方法只正确移除了in_proj_qkvz并添加了in_proj_qkv,却遗漏了in_proj_z条目。这导致slice_lora_b在TP>1时引发索引错误。

该PR值得快速浏览以理解Qwen3.5模型在LoRA下的模块映射机制。关注点:

1) 了解GDN层在LoRA启用时从合并投影到分离投影的转换逻辑;
2) 注意update_packed_mapping方法在模型初始化中的作用;
3) 可结合PR #36069和#36603了解问题的演进和workaround方案。

讨论亮点

review讨论较少,主要关注点:

1) vadiklyutiy要求修复DCO签名问题,作者elenalil-aws随后执行了修复;
2) gemini-code-assist[bot]的自动评论指出没有review评论可评估。没有出现技术争议或设计权衡讨论,因为这是一个明确的单行bug修复。

实现拆解

在vllm/model_executor/models/qwen3_5.py文件的update_packed_mapping方法中添加一行代码:self.packed_modules_mapping["in_proj_z"] = ["in_proj_z"]。该方法在LoRA启用时负责更新模型模块映射,原本已正确处理了in_proj_qkvz到in_proj_qkv的转换,但遗漏了对应的in_proj_z映射。

文件 模块 状态 重要度
vllm/model_executor/models/qwen3_5.py model_executor/models modified 8.0

关键符号

update_packed_mapping

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

DCO 签名修复 other

vadiklyutiy 要求修复 DCO 签名,作者 elenalil-aws 随后执行了修复。

结论:DCO 问题已解决,PR 被合并。 · 已解决

风险与影响

风险极低:

1) 变更仅添加一行映射代码,不涉及核心逻辑修改;
2) 修复针对特定条件(LoRA启用且TP>1)下的错误,不会影响其他场景;
3) 已有PR #36069通过边界检查缓解了症状,但本PR修复了根本原因,因此风险可控。潜在风险:如果其他模型有类似映射问题可能未被发现,但本变更范围明确限定于Qwen3.5模型。

影响范围:

1) 用户:修复了Qwen3.5模型在LoRA启用且TP>1时无法加载适配器的问题,提升了模型兼容性和用户体验;
2) 系统:确保GDN层在LoRA下的正确投影映射,避免运行时异常;
3) 团队:解决了之前通过workaround(PR #36069)缓解但未根治的问题,减少了技术债务。影响程度:中等,针对特定模型和配置,但解决了关键功能阻塞。

特定配置触发 映射一致性风险

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论