执行摘要
抽取 elastic-EP 活跃 rank 发布为独立私有方法
PR body 明确指出将 run_batch 末尾的条件块抽取为私有辅助方法,使得 run_batch 方法更聚焦于主流程,便于后续维护和扩展。
该 PR 属于小型重构,逻辑简单,无测试覆盖,建议快速合入。对于关注代码结构整洁性的开发者值得一读。
PR 无 review 评论,仅有自动检测时的一条警告。
PR body 明确指出将 run_batch 末尾的条件块抽取为私有辅助方法,使得 run_batch 方法更聚焦于主流程,便于后续维护和扩展。
该 PR 属于小型重构,逻辑简单,无测试覆盖,建议快速合入。对于关注代码结构整洁性的开发者值得一读。
PR 无 review 评论,仅有自动检测时的一条警告。
python/sglang/srt/managers/scheduler.py 的 run_batch 方法中,将原来位于 return ret 之前的条件判断块(检查 enable_dp_attention 和 elastic_ep_backend 并发布 ActiveRanksOutput)整体移除。run_batch 方法中 return ret 之前插入 self._maybe_report_active_ranks() 调用。run_batch 方法之后(launch_batch_sample_if_needed 之前)定义新的私有方法 _maybe_report_active_ranks,该方法内容完全复制原来的内联逻辑,仅将条件改为 early return 风格(if not ...: return)。| 文件 | 模块 | 状态 | 重要度 |
|---|---|---|---|
python/sglang/srt/managers/scheduler.py |
调度器 | modified | 6.15 |
python/sglang/srt/managers/scheduler.py
core-logic
唯一变更文件,将 `run_batch` 中的内联代码抽取为私有方法 `_maybe_report_active_ranks`,涉及调度器核心类的代码组织优化。
// python/sglang/srt/managers/scheduler.py
class Scheduler:
...
def run_batch(self, batch) -> GenerationBatchResult:
# ... 前面是 run_batch 的主逻辑 ...
# 返回结果前,调用新抽取的私有方法发布弹性 EP 活跃 rank 信息
self._maybe_report_active_ranks()
return ret
def _maybe_report_active_ranks(self) -> None:
/* 如果未启用 dp_attention 或未配置 elastic_ep_backend,则无需发布 */
if not (
self.server_args.enable_dp_attention
and self.server_args.elastic_ep_backend is not None
):
return
# 获取当前 TP 组的活跃 rank 信息(GPU 张量),拷贝到 CPU
tp_active_ranks = self.tp_group.active_ranks.detach().cpu().numpy()
tp_active_ranks_cpu = self.tp_group.active_ranks_cpu.detach().numpy()
# 合并两部分活跃信息
tp_active_ranks &= tp_active_ranks_cpu
# 按 DP 维度 reshape 并取每一组的 and 结果,得到每个 DP rank 是否活跃
dp_active_ranks = tp_active_ranks.reshape(self.ps.dp_size, -1).prod(axis=1)
# 通过 IPC 通道将活跃 rank 列表发送给 tokenizer 进程
self.ipc_channels.send_to_tokenizer.send_output(
ActiveRanksOutput(status=dp_active_ranks.tolist())
)
当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。
低风险。逻辑完全不变,仅代码重组。但需确保 _maybe_report_active_ranks 在 run_batch 中被正确调用(位置在 return ret 之前),且原内联代码的 early return 转换(从 if ...: block 到 if not ...: return)语义等价。
影响范围小,仅涉及 Scheduler 类的一个私有方法重构。对用户无感知,对系统行为无影响。未来需要调整 elastic-EP 活跃 rank 发布逻辑时,只需修改 _maybe_report_active_ranks,维护成本降低。
当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。
参与讨论