执行摘要
重命名 PD 指标并提取设备计时器安装方法
PR body 明确指出需要重命名 prefill_prealloc 为 prefill_bootstrap 并提取设备计时器安装逻辑,以提升代码可读性和维护性。
该 PR 是适度的重构,值得学习其提取惯用法和统一命名的实践。可观测性相关开发者应关注指标名称变更,及时更新仪表盘。
无 review 讨论或评论。
PR body 明确指出需要重命名 prefill_prealloc 为 prefill_bootstrap 并提取设备计时器安装逻辑,以提升代码可读性和维护性。
该 PR 是适度的重构,值得学习其提取惯用法和统一命名的实践。可观测性相关开发者应关注指标名称变更,及时更新仪表盘。
无 review 讨论或评论。
SchedulerMetricsMixin 中新增 install_device_timer_on_runners 方法:该方法检查 self.forward_pass_device_timer 是否存在,若存在则将其赋值给 tp_worker.model_runner 以及草稿模型的所有运行器(draft_runner 和 draft_runner_list),集中管理设备计时器的挂载。scheduler.py 的 __init__ 中替换内联逻辑:调用 init_model_worker() 后立即调用 self.install_device_timer_on_runners(),并删除原先位于 init_model_worker 末尾的 12 行内联代码,消除重复。prefill_prealloc 为 prefill_bootstrap:在 io_struct.py、metrics_collector.py、scheduler_metrics_mixin.py、scheduler_runtime_checker_mixin.py 中同步替换所有 prefill_prealloc 引用(包括字段名、Gauge 名称、日志消息、文档注释)。| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
python/sglang/srt/observability/scheduler_metrics_mixin.py |
调度指标 | modified | 7.1 |
python/sglang/srt/managers/scheduler.py |
调度器 | modified | 6.2 |
python/sglang/srt/observability/metrics_collector.py |
指标收集 | modified | 5.37 |
python/sglang/srt/managers/scheduler_runtime_checker_mixin.py |
运行时检查 | modified | 4.7 |
python/sglang/srt/managers/io_struct.py |
I/O 结构 | modified | 4.67 |
python/sglang/srt/observability/scheduler_metrics_mixin.py
core-logic
新增 `install_device_timer_on_runners` 方法,并统一重命名指标字段和日志。
# python/sglang/srt/observability/scheduler_metrics_mixin.py
# 在 __init__ 中完成 DeviceTimer 初始化后,新增此方法用于安装计时器到运行器
def install_device_timer_on_runners(self: Scheduler):
if not hasattr(self, "forward_pass_device_timer"):
return
timer = self.forward_pass_device_timer
# 安装到主模型运行器
self.tp_worker.model_runner.device_timer = timer
# 安装到草稿模型运行器(如果存在)
if self.draft_worker is not None:
dw = getattr(self.draft_worker, "draft_worker", None)
if dw is not None:
if hasattr(dw, "draft_runner"):
dw.draft_runner.device_timer = timer
# 处理多草稿运行器列表
for r in getattr(dw, "draft_runner_list", []):
r.device_timer = timer
# 在 report_prefill_stats 中,日志消息从 "#prealloc-req" 改为 "#bootstrap-req"
# 同时统计字段从 num_prefill_prealloc_queue_reqs 改为 num_prefill_bootstrap_queue_reqs
python/sglang/srt/managers/scheduler.py
core-logic
移除内联设备计时器安装逻辑,改为统一调用新方法,简化 `init_model_worker`。
# python/sglang/srt/managers/scheduler.py
# 在 __init__ 的初始化方法链中,init_model_worker 后紧跟安装设备计时器
self.init_model_worker()
self.install_device_timer_on_runners() # 新增:集中安装设备计时器
# 同时删除了 init_model_worker 末尾的以下内联代码(不再重复):
# if hasattr(self, "forward_pass_device_timer"):
# timer = self.forward_pass_device_timer
# self.tp_worker.model_runner.device_timer = timer
# ...
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
sglang:num_prefill_prealloc_queue_reqs 改为 sglang:num_prefill_bootstrap_queue_reqs,如果外部监控或告警依赖旧名称,会短暂失效。draft_worker_list 等边缘情况。num_prefill_prealloc_queue_reqs 指标,需要更新查询语句。日志中 #prealloc-req 变为 #bootstrap-req,不影响程序功能。bootstrap 比 prealloc 更贴切)。当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论