Prhub

#30088 [DSA] Disable indexer fusion by default to restore DeepSeek-V3.2 accuracy

原始 PR 作者 ch-wan 合并时间 2026-07-04 11:50 文件变更 1 提交数 1 评论 3 代码增减 +1 / -1

执行摘要

默认禁用 DSA indexer fusion 修复 DeepSeek-V3.2 精度回归

根据 PR body,CI 定时全量运行中 test/registered/8-gpu-models/test_deepseek_v32_indexcache.py::TestDeepseekV32IndexTopkPattern 测试失败:gsm8k 精度为 0.9295 / 0.9249,低于阈值 0.93。根因是 DSA indexer Q/K fusion(#27705)导致 DeepSeek-V3.2 精度退化。此前 #30018 已禁用该 fusion,但 #30025 在合并时误将默认值改回 False,导致回归。

该 PR 值得合并,以快速修复 CI 回归。建议在修复 fusion 精度问题后重新评估是否默认启用。相关精度修复工作可参见后续 PR #30342。

讨论亮点

暂无 review 讨论。

实现拆解

变更仅在 python/sglang/srt/environ.py 中一行修改:

  1. SGLANG_DISABLE_DSA_INDEXER_FUSION 的默认值由 EnvBool(False) 改为 EnvBool(True)
  2. 该环境变量控制 DSA indexer 路径中 Q/K fusion 的启用状态:True 表示禁用 fusion,False 表示启用。
  3. 变更后,所有使用该环境变量的模块(如 dsa_indexer.py)将在默认配置下跳过 fusion 路径,恢复原始精度。
文件 模块 状态 重要度
python/sglang/srt/environ.py 环境配置 modified 5.29

关键源码片段

python/sglang/srt/environ.py core-logic

唯一变更文件,修改了 `SGLANG_DISABLE_DSA_INDEXER_FUSION` 的默认值,直接影响 DSA indexer 的行为。

# python/sglang/srt/environ.py
class Envs:
    # ... 前面的配置省略 ...
​
    # DSA Backend (canonical names; fall back to SGLANG_NSA_* with deprecation warning)
    SGLANG_DSA_FUSE_TOPK = EnvBoolWithAlias(True, deprecated_name="SGLANG_NSA_FUSE_TOPK")
    SGLANG_DSA_TOPK_FLASHINFER_DETERMINISTIC = EnvBool(False)
    # ... 其他 DSA 配置 ...
​
    # 🔽 本次变更:默认禁用 DSA indexer fusion,以修复 DeepSeek-V3.2 精度回归
    SGLANG_DISABLE_DSA_INDEXER_FUSION = EnvBool(True)
​
    # sgl-kernel
    SGLANG_SKIP_SGL_KERNEL_VERSION_CHECK = EnvBool(False)
    # ... 后续配置 ...

评论区精华

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

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

风险与影响

风险较低。变更仅涉及默认值切换,且提供了充分的本机验证数据(8×H200,5 轮运行):fusion 关闭时平均精度 0.9553,方差极小;fusion 开启时平均精度 0.9306,且存在跨阈值波动。两组数据范围无重叠,确认精度回归确实由 fusion 导致。副作用是关闭 fusion 可能略微增加 stream 数量(#30025 修复后仍可接受),但精度收益远超此代价。

影响范围较窄。仅影响使用 DSA indexer fusion 的场景(主要是 DeepSeek-V3.2 等模型在特定评测配置下的推理)。默认禁用后:

  • 用户无需手动设置环境变量即可获得稳定精度。
  • 性能上可能略逊于 fusion 开启版本,但根据 #30025 的 benchmark,对 TPOT 影响在噪声范围内(+1.96%,t=-1.48)。
  • 需要 fusion 的用户仍可通过设置 SGLANG_DISABLE_DSA_INDEXER_FUSION=0 手动启用。
配置默认值变更 精度修复

关联 Issue

#30018 [Fix] Turn off dsa indexer fusion by default
#30025 fix: reorder DSA indexer dual-stream ops to avoid CUDA graph stream explosion

完整报告

参与讨论