Prhub

#30397 [Cherry pick to release/v0.5.15] Fix NVFP4 online quantization

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

执行摘要

修复 NVFP4 在线量化配置缺少 dequant_fp4_to_fp8 属性

修复 CI 测试 test/registered/backends/test_flashinfer_trtllm_gen_moe_backend.py 因 #27867 引入的 AttributeError: 'NvFp4OnlineConfig' object has no attribute 'dequant_fp4_to_fp8' 错误,对齐主干的配置定义。

值得快速合入以解除 CI 阻塞,但无精读必要。后续应关注 PR#27867 中是否还有其他遗漏的属性初始化。

讨论亮点

无实质性技术讨论。bot 自动回复了 /rerun-test 指令,验证 CI 通过;审核者 Fridge003 直接批准。

实现拆解

  1. python/sglang/srt/layers/quantization/nvfp4_online.pyNvFp4OnlineConfig.__init__ 方法中,于 self.is_fp4_experts = False 之后、self.activation_scheme = activation_scheme 之前新增一行 self.dequant_fp4_to_fp8 = False
  2. 该配置项默认关闭 online dequantization(FP4 → FP8),保持与原有 FP4 行为一致。
  3. 无其他文件或测试变更,改动仅 1 行。
文件 模块 状态 重要度
python/sglang/srt/layers/quantization/nvfp4_online.py 量化配置 modified 4.35

关键符号

NvFp4OnlineConfig.__init__

关键源码片段

python/sglang/srt/layers/quantization/nvfp4_online.py core-logic

唯一变更文件,在 NvFp4OnlineConfig 初始化中添加 dequant_fp4_to_fp8 属性,修复属性缺失导致的 AttributeError。

    # python/sglang/srt/layers/quantization/nvfp4_online.py
    # NvFp4OnlineConfig.__init__ 中新增的属性初始化
    def __init__(
        self,
        exclude_modules: Optional[List[str]] = None,
        packed_modules_mapping: Optional[Dict[str, List[str]]] = None,
        is_checkpoint_fp8_serialized: bool = False,
        activation_scheme: str = "dynamic",
        weight_block_size: Optional[List[int]] = None,
        use_mxfp8: bool = False,
    ) -> None:
        # ... 前面代码省略 ...
        self.use_per_token_activation = True
        self.is_checkpoint_fp8_serialized = is_checkpoint_fp8_serialized
        self.is_fp4_experts = False
        # 新增行:确保 dequant_fp4_to_fp8 属性存在,默认关闭 FP4 → FP8 反量化
        # 防止下游代码(如 flashinfer/trtllm backend)访问时抛出 AttributeError
        self.dequant_fp4_to_fp8 = False
        self.activation_scheme = activation_scheme
        self.weight_block_size = weight_block_size
        self.use_mxfp8 = use_mxfp8

评论区精华

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

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

风险与影响

风险极低。仅新增一个初始化属性,且默认值为 False,不影响现有 FP4 推理路径。但若其他代码路径仅在非默认情况下访问该属性,需确保后续逻辑正确处理 True 分支(本 PR 不涉及)。

影响范围局限:修复 test_flashinfer_trtllm_gen_moe_backend.py 中的 AttributeError,恢复 B200 trunk 测试 CI。对用户无功能性影响,仅在 release/v0.5.15 分支确保一致性。

极低风险 单行修复

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论