Prhub

sgl-project/sglang · 标签视图

标签列表

聚合结果

speculative-decoding 相关 PR

2026-09-16
缺陷修复 重要性 7.18 洞察度 6.00

合并 autotune 缓存并修复 MXFP4 TP 对齐等六项杂项

值得精读,但只需重点看三个文件:`mxfp4_flashinfer_trtllm_moe.py` 的 `_pad_intermediate_size`(补齐布局与 scale 填充值的选择)、`flashinfer_autotune.py` 的 `flashinfer_autotune_context`(对 FlashInfer `AutoTuner` load/save 语义的绕过方式)、`fp8_utils.py` 的 `block_supported` 守卫(tuple/list 比较这种容易写错的细节)。`scheduler.py`、`fp8.py`、`weight_updater.py` 三处属于清理项,浏览即可。若你是 SM100 MXFP4 TP 配置的使用者,建议按 `print_warning_once` 的提示实测补齐后的吞吐,并与 TP/EP 组合对比;若你是维护者,建议把被删掉的 MXFP4 TP padding 回归用例以更轻量的形式补回,并在文档里明确“补齐只发生在权重加载后、形状契约以 `intermediate_size_per_partition` 为准”。

性能优化 重要性 8.96 洞察度 8.00

GLM-5.2 草稿专家层转逐通道 FP8,修复 Quark AITER 路径不可达

值得精读,尤其是量化/推理性能方向的工程师。建议重点看三处设计决策:(1)`should_apply_glm_nextn_moe_ptpc` 这一“同一判定服务权重转换与模块构建”的模式,以及提交 64c44144 为何要专门对齐两侧门控——这是静默数值错误的高发点;(2)`_resolve_nextn_quant_config` 从直接改动共享 `QuarkConfig` 改为 copy + deepcopy 的过程,以及配套的 `test_flag_on_does_not_mutate_caller_config`;(3)`QuarkW8A8FP8MoE` 的 runner 选择从死标志 `apply_router_weight_on_input` 改为 kernel 前置条件,并用 `print_info_once` 让回退可观测。若你负责 ROCm 上其它 quark FP8 MoE 模型的线上服务,建议在升级后对比 AITER 与 `--moe-runner-backend triton` 的表现与数值一致性和显存形态。此外,PR body 与最终实现存在文件位置不一致(body 仍写 `deepseek_weight_loader.py`),阅读时应以 `glm4_moe.py` 的 `GlmMoeDsaForCausalLMNextN` 为准。

缺陷修复 重要性 8.45 洞察度 8.00

修复 ROCm 上 EAGLE verify 静默贪心采样,HIP 接入 Triton 采样链

值得精读。核心价值不只是那个 `_verify_uses_greedy` 门控,而是整套“默认行为变更 + 数据链打通 + 底层 kernel 守卫”的联动修复。建议重点关注:`_verify_uses_greedy` 如何做到非 HIP 平台字节等价、`speculative_hook.py` 中 `cfg` 与 `resolved_view` 的读写契约差异、以及 `reject_sampling.py` 中 q 守卫的两次迭代(residual 与 accept test 分别加固)——后三者都是一般 review 容易漏掉的隐蔽点。

2026-09-15
重构 重要性 6.01 洞察度 4.00

为 profiler step span 加 DRAFT/VERIFY 阶段标签

值得精读,但不必投入大量时间:这是约 30 行的可观测性改进,重点看两个设计选择——一是用「worker 身份」而非「forward mode」作为标签的第一判据,二是用强制关键字参数 + 默认值实现向后兼容。若你维护 profiler、trace 解析脚本或性能报告,请顺手把 `TARGET_VERIFY` 的匹配规则更新为 `VERIFY` 并补上 `DRAFT`,同时评估是否要为 draft 的 EXTEND 形态单独保留一个更可读的 `DRAFT_EXTEND` 标签;若你只是关注推理正确性,可以跳过本 PR。

缺陷修复 重要性 5.68 洞察度 5.00

删除 DSpark 重复方法定义,恢复 NPU 共享专家融合守卫

值得精读,但重点不在改动量(只删 6 行),而在于三点:一是“类体内同名方法后定义者生效”这种极易被多 PR 合并掩盖的静默 bug 模式,值得作为代码审阅与静态检查的检查项;二是 `shared_experts_fusion_disable_reason` 这一层“模型类向框架暴露契约”的设计——单个 classmethod 返回值就能左右 `num_fused_shared_experts` 与权重加载路径,任何改动都需要按契约级变更对待;三是作者主动暴露的验证空白与 CI 维护模式叠加,提示这类“恢复被遮蔽逻辑”的修复最好附带一个纯 Python 层面的单测(例如 monkeypatch `_is_npu` 后断言返回值非空,或断言类上只存在一份定义),而不是依赖 NPU 实机。若团队内有 NPU 环境,建议在合并后补跑 `test/registered/unit/models/test_deepseek_v4_shared_expert_fusion.py` 并做一次 DSpark draft 的精度/吞吐确认。

功能 重要性 9.18 洞察度 7.00

fused KDA verify 内核支持 ReplaySSM ring 写入,解锁组合优化

值得精读。核心看三点:一是位级一致性的论证方式——为什么必须存 pre-mutation 的操作数、为什么 ring 值(elementwise,位于所有 `tl.sum` 上游)能保证 bit-exact 而输出不能;二是测试设计——共享垃圾模板做全张量比较以捕捉越界写,以及独立 snapshot oracle 防止两个 ring 分支共享同一错误;三是 dispatch 门控的数据驱动决策——用 sweep 实测数据决定启用范围,而不是凭直觉放开。对于后续要做 batch-aware dispatch 或重调 `KDA_VERIFY_BLOCK_V` 的开发者,这份 PR 提供了完整工具链。

缺陷修复 重要性 5.08 洞察度 6.00

reland QSA 压缩 gather 越界修复,extend 行号夹紧

值得精读但不必逐行推敲——它只有一行代码,重点是理解取舍而非实现。建议关注三点:第一,阅读 `update_key_state_and_compress` 的 extend 与 paged eager 两个分支,确认 clamp 只作用于“有界性缺失”的那一条路径;第二,向作者确认未填满 group 的池化结果是否会被后续完整 group 覆盖,若不会,则应改为 mask/重算而非重复最后一行;第三,建议补一个构造“chunk 行数非 compress_ratio 整数倍”的单测,并说明 Extra、AMD ROCm 10 两条 CI 的失败是否为已知问题。若团队正在安排 #33426、#39061、#39219 的 reland,本 PR 可作为“回退后如何最小化恢复”的参考样例。

功能 重要性 6.67 洞察度 6.50

为投机解码 worker 新增 prefill 共享读 staging 回调,默认关闭不改变上游行为

值得精读,尤其是负责投机解码、prefill 调度与 KV 生命周期的人。关注三点设计决策:(1) 用「worker 自证返回 bool 的 opt-in 回调」而不是框架内启发式判断来放开 EAGLE/MTP,把风险显式外移到实现方,这是本 PR 最核心的取舍;(2) 把 `shared_read_ends` 后端声明检查提到 spec 检查之前,保证 staging 只发生在后端已声明 `PRE_REPLAY` 的路径上,是正确的最小权限做法;(3) 单测用 `calls.mock_calls == [call.stage(batch)] + ([call.Event()] if staged else [])` 锁定调用顺序,而不是只断言最终状态,这种「顺序即契约」的测试写法值得复用。阅读时应同步确认:任何后续启用该 hook 的 worker PR 必须带上精度与性能验证,并在 code review 中明确 `stage()` 返回 `True` 的语义证明。