Prhub

#24865 speculative: drop dead params/returns/no-ops

原始 PR 作者 hnyls2002 合并时间 2026-05-10 06:53 文件变更 7 提交数 4 评论 4 代码增减 +15 / -24

执行摘要

清理推测解码模块死代码

干净代码是长期可维护性的基础。PR body明确说明『Pure dead-code cleanup in speculative decoding workers and forward_batch_info: 4 atomic commits, no behavior change』,旨在通过消除死参数、未使用返回值和空操作来提升代码可读性并降低后续重构成本。

推荐合入。此类死代码清理具有正向价值——降低认知负担、减少 Linter/Type Checker 误报、便于未来重构。可以快速 review 后合并。

讨论亮点

该PR无实质性 review 讨论(0条 review 评论),PR body 和提交信息已清晰说明每步变更的目的。仅有的4条 Issue 评论均为 CI 自动回复和 /rerun-test 命令。

实现拆解

变更由4个原子提交组成,每个提交聚焦单一清理目标:

  1. 移除冗余赋值 (eagle_draft_extend_cuda_graph_runner.py):删除了 spec_info.positions = None,该赋值已被前面逻辑覆盖,属于 no-op。

  2. 删除 verify() 未使用的返回值 (eagle_worker.py, multi_layer_eagle_worker.py, frozen_kv_mtp_worker.py):验证方法 verify() 原本返回四元组 (logits_output, res, model_worker_batch, can_run_cuda_graph),但 model_worker_batch 在所有调用点均被忽略(赋值给 _)。PR 将其改为返回三元组,并同步更新了所有调用处。

  3. 简化 enable_num_token_non_padded 函数签名 (forward_batch_info.py, cuda_graph_runner.py, cpu_graph_runner.py):该函数原接受 server_args 参数但实际只使用了全局变量 get_moe_expert_parallel_world_size(),参数完全多余。PR 移除了参数并更新了所有调用处(包括两个 CUDA Graph runner 中的 3 处引用)。

  4. 简化 check_forward_draft_extend_after_decode 方法签名 (eagle_worker.py, multi_layer_eagle_worker.py):该方法原接受 batchverify_output 两个参数,但方法体内只用到了 verify_outputself.server_argsbatch 参数未被使用。PR 移除了 batch 参数并更新调用处。

无测试或配置变更,因为作者声明『no behavior change』,属于纯重构。

文件 模块 状态 重要度
python/sglang/srt/speculative/eagle_worker.py 推测解码 modified 5.57
python/sglang/srt/speculative/multi_layer_eagle_worker.py 推测解码 modified 5.57
python/sglang/srt/model_executor/forward_batch_info.py 前向批处理 modified 5.27
python/sglang/srt/model_executor/cuda_graph_runner.py CUDA Graph modified 4.92
python/sglang/srt/model_executor/cpu_graph_runner.py CUDA Graph modified 4.3
python/sglang/srt/speculative/frozen_kv_mtp_worker.py 推测解码 modified 4.22
python/sglang/srt/speculative/eagle_draft_extend_cuda_graph_runner.py 推测解码 modified 3.86

关键符号

enable_num_token_non_padded check_forward_draft_extend_after_decode verify forward_batch_generation

关键源码片段

python/sglang/srt/speculative/eagle_worker.py core-logic

核心推测解码 worker,清理了 verify() 返回值中的 model_worker_batch 和 check_forward_draft_extend_after_decode 方法中多余的 batch 参数

# eagle_worker.py 变更摘要(关键符号:verify, check_forward_draft_extend_after_decode)# 1. verify() 返回值从四元组简化为三元组,移除了未使用的 model_worker_batch
# 旧 : return logits_output, res, model_worker_batch, can_run_cuda_graph
# 新 : return logits_output, res, can_run_cuda_graph# 2. check_forward_draft_extend_after_decode 移除未使用的 batch 参数
# 旧 : def check_forward_draft_extend_after_decode(self, batch: ScheduleBatch, verify_output: EagleVerifyOutput):
# 新 : def check_forward_draft_extend_after_decode(self, verify_output: EagleVerifyOutput):# 3. 调用 verify() 处同步解包
# 旧 : logits_output, verify_output, model_worker_batch, can_run_cuda_graph = self.verify(batch, spec_info)
# 新 : logits_output, verify_output, can_run_cuda_graph = self.verify(batch, spec_info)
python/sglang/srt/model_executor/forward_batch_info.py data-contract

定义 enable_num_token_non_padded 函数并本 PR 移除了其 server_args 参数

# forward_batch_info.py 中 enable_num_token_non_padded 函数签名变更
# 旧 : def enable_num_token_non_padded(server_args):
# return get_moe_expert_parallel_world_size() > 1
# 新 : def enable_num_token_non_padded():
# return get_moe_expert_parallel_world_size() > 1
# 注 : server_args 参数实际未被使用,作为死参数移除。

评论区精华

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

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

风险与影响

风险极低。所有变更均是删除未使用的代码(参数、返回值、赋值),不影响运行时行为。关键风险点:

  • model_worker_batch 将来被需要,需重新添加,但可通过 git revert 轻松恢复。
  • 若其他分支或未合入的 PR 引用了这些被删除的参数,可能产生合并冲突。

影响面窄但正面:仅影响推测解码模块(EagleWorker、MultiLayerEagleWorker、FrozenKvMtpWorker)及前向批处理信息模块(ForwardBatchInfo)。对用户无感知,对开发者则降低了阅读和维护成本。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论