Prhub

#24858 multi_layer_eagle: add tracing hooks

原始 PR 作者 hnyls2002 合并时间 2026-05-14 06:29 文件变更 1 提交数 3 评论 5 代码增减 +26 / -0

执行摘要

multi-layer eagle 添加追踪钩子

为 multi_layer_eagle_worker.py 添加与 V1 EAGLE 相同的可观测性钩子,使 multi-layer eagle 的追踪能力与 V1 对齐,便于调试和性能分析。

值得合并,改动明确、风险低,提升了 multi-layer eagle 的可观测性。

讨论亮点

无 review 讨论。

实现拆解

  1. multi_layer_eagle_worker.py 中导入 set_time_batchget_global_tracing_enabled
  2. forward_batch_generation 方法的 decode 分支中,在 draft/verify 前后插入 set_time_batch 调用以记录各阶段时间。
  3. 在 verify 完成后,若追踪启用,遍历 batch.reqs 并调用 req.time_stats.set_spec_verify_end_time 记录每个请求的正确 draft 数量。
  4. 在返回的 GenerationBatchResult 中新增 num_correct_drafts_per_req_cpu 字段,透传 verify_output 中的对应数组。
文件 模块 状态 重要度
python/sglang/srt/speculative/multi_layer_eagle_worker.py 投机解码 modified 6.58

关键符号

forward_batch_generation

关键源码片段

python/sglang/srt/speculative/multi_layer_eagle_worker.py dependency-wiring

唯一变更文件,添加了追踪钩子和透传字段。

# 新增导入
from sglang.srt.observability.req_time_stats import set_time_batch
from sglang.srt.observability.trace import get_global_tracing_enabled# 在 forward_batch_generation 的 decode 分支中
# 设置 draft 开始时间(只用于 trace)
set_time_batch(batch.reqs, "set_spec_draft_start_time", trace_only=True)with (
    self.draft_tp_context(self.mtp_model_runner(0).tp_group),
    speculative_moe_backend_context(),
):
    verify_input = self.draft(batch)# 记录 draft 结束和 verify 开始时间
set_time_batch(batch.reqs, "set_spec_draft_end_time", trace_only=True)
set_time_batch(batch.reqs, "set_spec_verify_start_time", trace_only=True)batch.spec_info = verify_input
logits_output, verify_output, can_run_cuda_graph = self.verify(batch)# 若全局追踪启用,逐个请求记录 verify 结束时间和正确 draft 数
if get_global_tracing_enabled():
    for idx, req in enumerate(batch.reqs):
        num_correct_drafts = verify_output.num_correct_drafts_per_req_cpu[idx]
        req.time_stats.set_spec_verify_end_time(
            num_correct_drafts=num_correct_drafts
        )# 记录 draft extend 开始时间
set_time_batch(
    batch.reqs, "set_spec_draft_extend_start_time", trace_only=True
)

评论区精华

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

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

风险与影响

较低的回归风险:仅添加可观测性钩子和透传字段,不修改原有逻辑。但需确保 set_time_batch 和 get_global_tracing_enabled 在调用上下文中正确可用。

对用户透明,无接口变化。对开发者有益:multi-layer eagle 的时间追踪和 draft 统计现在与 V1 EAGLE 一致,便于调试和性能分析。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论