Prhub

#21662 [Fix] Fix weight_loader property assignment for qwen3-next FP8 models

原始 PR 作者 Fridge003 合并时间 2026-03-30 16:35 文件变更 1 提交数 2 评论 13 代码增减 +17 / -4

执行摘要

修复 Qwen3-Next FP8 模型权重加载时的属性赋值错误。

在加载Qwen/Qwen3-Coder-Next-FP8权重时出现AttributeError,错误信息为'property "weight_loader" of "ModelWeightParameter" object has no setter',原因是BasevLLMParameter.weight_loader为只读属性(无setter),直接赋值失败。Issue #21638详细描述了此bug。

建议快速浏览以了解权重加载机制的细微调整,重点关注_override_weight_loader函数的设计,学习如何处理属性与只读属性的差异。

讨论亮点

Issue评论中,ranjiewen提出如何处理'weight_scale_inv'参数的问题,但PR未直接回应,可能为未解决疑虑。

实现拆解

在qwen3_next.py中,将__init__方法中的直接赋值self.in_proj_qkvz.weight.weight_loader = ...替换为调用静态方法_override_weight_loader;新增_override_weight_loader方法,该方法检测参数是否有_weight_loader属性(量化模型使用ModelWeightParameter)或weight_loader属性(非量化模型),并相应赋值以处理只读属性问题。

文件 模块 状态 重要度
python/sglang/srt/models/qwen3_next.py srt/models modified 5.0

关键符号

_override_weight_loader __init__

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

评论区精华

处理 weight_scale_inv 参数问题 question

在 Issue #21638 评论中,ranjiewen 询问如何对待 'weight_scale_inv' 参数,可能与权重加载相关

结论:未在 PR 中直接解决或讨论,状态未决 · 待处理

风险与影响

风险较低:助手函数需准确区分量化与非量化参数,否则可能导致其他使用ModelWeightParameter的模型加载失败;但测试覆盖良好(包括test_qwen3_next_models.py),回归风险小。

影响范围有限:用户可正常加载Qwen3-Coder-Next-FP8量化模型,解决了特定bug;系统层面修复了权重加载逻辑,不影响其他功能模块;团队解决了模型部署障碍,提升了量化模型支持。

量化兼容性问题 属性处理复杂性

关联 Issue

#21638 [Bug] Not able to load weights for qwen3-next-coder fp8 weight

完整报告

参与讨论