执行摘要
- 一句话:投机解码字段重命名收尾
- 推荐动作:该 PR 可以作为团队命名规范执行的范例,展示了如何系统性地推进代码一致性。虽然不包含功能变更,但对于参与投机解码模块的开发者,了解这些命名规则有助于理解代码结构。
功能与动机
本次变更是 #25014 命名规范统一的最后一波,PR 描述明确说明 Last batch of spec-naming follow-ups missed during #25014,目的是保持投机解码相关标识符的一致性,遵循内部命名规则(Rule 1 去掉 -ed、Rule 5 对 tensor/list 去掉 _token_id 后缀)。
实现拆解
- 在
scheduler_output_processor_mixin.py 中将私有方法 _resolve_spec_overlap_token_ids 重命名为 _resolve_spec_overlap_tokens,并更新内部所有调用。
- 在
ngram_info.py 中将实例属性 accepted_indices 统一替换为 accept_indices,涉及 _fill_requests、_free_cache、_greedy_verify 等方法。
- 在
eagle_worker.py 和 multi_layer_eagle_worker.py 中,将验证结果对象 res.accepted_indices 替换为 res.accept_indices,并同步更新注释。
- 在
dflash_worker.py 中将函数内局部变量 out_token_ids 重命名为 out_tokens,去掉 _token_id 后缀。
- 在
eagle_info.py 中将 EagleVerifyOutput 数据类字段 accepted_indices 重命名为 accept_indices,并调整构造调用。
- 在
logprob.py 和 frozen_kv_mtp_worker.py 中做对应调用点调整。
第二个提交中保留了 curr_token_id 标量不变,因为 Rule 5 只适用于 tensor/list。
关键文件:
python/sglang/srt/managers/scheduler_output_processor_mixin.py(模块 调度器;类别 source;类型 core-logic;符号 _resolve_spec_overlap_token_ids, _resolve_spec_overlap_tokens): 核心调度器 Mixin,定义了关键的 _resolve_spec_overlap_tokens 方法,负责投机解码重叠 token 的解析。
python/sglang/srt/speculative/ngram_info.py(模块 投机解码;类别 source;类型 core-logic;符号 _fill_requests, _free_cache, _greedy_verify, accept_indices): N-gram 投机解码核心实现,大量使用 accepted_indices 属性,重命名涉及多个方法。
python/sglang/srt/speculative/eagle_worker.py(模块 投机解码;类别 source;类型 core-logic;符号 verify, _mamba_verify_update, accepted_indices, accept_indices): Eagle 投机解码工作线程,验证后处理中大量使用 res.accepted_indices。
python/sglang/srt/speculative/multi_layer_eagle_worker.py(模块 投机解码;类别 source;类型 core-logic;符号 verify, accepted_indices, accept_indices): 多层 Eagle 工作线程,与 eagle_worker.py 逻辑相同,同步重命名。
python/sglang/srt/speculative/dflash_worker.py(模块 投机解码;类别 source;类型 core-logic;符号 _greedy_sample_from_vocab_parallel_head, out_token_ids, out_tokens): Dflash 投机解码工作线程,局部变量 out_token_ids 重命名。
python/sglang/srt/speculative/eagle_info.py(模块 投机解码;类别 source;类型 core-logic;符号 EagleVerifyOutput, verify, accepted_indices, accept_indices): 定义 EagleVerifyOutput 数据类,字段名变更影响整个投机解码链路。
python/sglang/srt/layers/utils/logprob.py(模块 logprob;类别 source;类型 core-logic): Logprob 处理层,引用投机解码验证输出,需同步重命名。
python/sglang/srt/speculative/frozen_kv_mtp_worker.py(模块 投机解码;类别 source;类型 core-logic): Frozen KV MTP 工作线程,引用投机解码验证输出,需同步重命名。
关键符号:_resolve_spec_overlap_tokens, _fill_requests, _free_cache, _greedy_verify, verify, _mamba_verify_update, _greedy_sample_from_vocab_parallel_head
评论区精华
无 review 评论。第二个提交体现了作者对命名规则的精细化理解:curr_token_id 作为标量不符合 Rule 5(仅 tensor/list)的适用范围,因此保持原名不变。
风险与影响
- 风险:变更纯属标识符重命名,无运行时行为变化。主要风险在于可能遗漏未修改的引用,但作者仔细检查了所有调用点,且 CI 测试通过,风险极低。
- 影响:对用户无影响(无 API 或配置变化)。对内部开发者,提高了投机解码模块命名一致性,降低未来阅读混淆。变更涉及 8 个文件,51 行增删,但都是 1:1 替换。
- 风险标记:纯重命名无功能影响
关联脉络
- PR #25014 [Spec] Internal rename per N2 v2 naming rule: 本 PR 是 #25014 遗漏的最后一波重命名,确保命名规则全面覆盖。
参与讨论