Prhub

#47154 [Bugfix] compressed-tensors: allow int8 grouped WNA16 MoE on Marlin

原始 PR 作者 joerowell 合并时间 2026-07-01 03:50 文件变更 1 提交数 2 评论 1 代码增减 +0 / -1

执行摘要

移除 int8 分组量化断言限制

PR body 指出:num_bits==8 分支断言 group_size==-1,拒绝了使用 group_size(如 128)的 int8 专家权重,但 Marlin 内核实际上支持 uint8b128 量化类型,且 MARLIN_SUPPORTED_GROUP_SIZES 包含 128。该断言冗余且阻碍了混合精度模型(如 poolside/Laguna-XS.2-INT4,同时包含 INT4 和 INT8 层)的正常使用。

变更简单明确,值得所有使用 compressed-tensors + Marlin MoE 的团队立即合入。建议补充一个针对 group_size=128 的 int8 MoE 正确性测试,防止未来重构时再次引入类似约束。

讨论亮点

讨论较少:mgoin 和 yewentao256 直接批准,claude[bot] 因来自 fork 未执行自动审查。Mergify 提醒了 pre-commit 检查失败,但后续提交已修复。

实现拆解

仅有一处变更:

  1. vllm/model_executor/layers/quantization/compressed_tensors/compressed_tensors_moe/compressed_tensors_moe_wna16_marlin.py__init__ 方法中,num_bits==8 分支下删除了 assert self.group_size == -1 这一行。
  2. 删除后,scale 直接赋值为 kInt8StaticGroupScale(原本只有在通过断言后才会执行),这与 Marlin 内核实际支持的 group_size 范围(-1,32,64,128)一致。
文件 模块 状态 重要度
vllm/model_executor/layers/quantization/compressed_tensors/compressed_tensors_moe/compressed_tensors_moe_wna16_marlin.py 量化层 modified 4.39

关键符号

CompressedTensorsWNA16MarlinMoEMethod.__init__

关键源码片段

vllm/model_executor/layers/quantization/compressed_tensors/compressed_tensors_moe/compressed_tensors_moe_wna16_marlin.py data-contract

删除导致 int8 分组量化被拒绝的断言,是变更的唯一文件

# compressed_tensors_moe_wna16_marlin.py ( 修改后 )
# 原 __init__ 方法中 num_bits==8 分支的 assert 被移除
if self.num_bits == 4:
    if self.group_size == 32:
        scale = kInt4Static32GroupScale
    else:
        scale = kInt4StaticGroupScale
elif self.num_bits == 8:
    # 移除了 assert self.group_size == -1
    # Marlin 内核实际支持 group_size = -1, 32, 64, 128
    scale = kInt8StaticGroupScale
else:
    raise ValueError(
        "CompressedTensorsWNA16MarlinMoEMethod only supports int4 and int8 now."
    )

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低:仅删除一个冗余断言,不影响其他分支逻辑。原有断言拒绝的合法配置(如 group_size=128)现在会被正确接受,不会造成回归。但需注意缺失对应测试覆盖:本次变更没有新增或修改测试文件来验证分组 int8 MoE 场景。

影响范围有限,但对使用 compressed-tensors 量化且包含 int8 分组 MoE 层的用户是直接阻塞修复。特别是 poolside/Laguna-XS.2-INT4 等混合精度模型现在可以正常加载。不影响 int4 或其他量化格式。

缺少测试覆盖

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论