Prhub

#31145 Clean up ModelRunner by renaming effective-token property and remove dead code

原始 PR 作者 fzyzcjy 合并时间 2026-07-14 15:50 文件变更 3 提交数 4 评论 0 代码增减 +4 / -47

执行摘要

清理 ModelRunner 中的死代码并重命名属性

根据 PR body,MLA_ATTENTION_BACKENDSadd_mla_attention_backend 在 python/sglang/srt 下没有任何读取方,属于死代码。RankZeroFilter 未被引用。alloc_memory_pool 末尾的六个 None 默认值是旧 disable_cuda_graph 提前跳过路径的遗留物,现在 init_model_worker 无条件调用 init_attention_backendsinit_cuda_graphs,这些默认值不再需要。属性重命名是为了更准确地表达语义(考虑混合 SWA 设置)。

值得快速合并。作为大型重构链(ModelRunner 拆分)的一部分,保持代码整洁。建议确认是否有外部依赖引用旧属性名。

讨论亮点

该 PR 没有 review 评论。由于是机械性清理且讨论为零,无明显技术争议。

实现拆解

  1. 移除 MLA_ATTENTION_BACKENDSadd_mla_attention_backend:在 model_runner.py 中删除了整个列表定义和函数定义,因为没有任何消费者。
  2. 删除 RankZeroFilter:移除了该日志过滤器类及其 __init__filter 方法,因为未被使用。
  3. 删除 alloc_memory_pool 中的遗留默认值:移除了六个字段的 None 赋值(attn_backenddecode_attn_backenddecode_attn_backend_groupdecode_cuda_graph_runnergraph_mem_usageprefill_cuda_graph_runner),因为这些现在由后续调用保证。
  4. 重命名属性 max_token_pool_sizeeffective_max_total_num_tokens:在 model_runner.py 中将 property 重命名,更新注释以反映混合 SWA 场景。然后在 tp_worker.py(两处)和 disaggregation/prefill.py(一处)中更新所有引用。
文件 模块 状态 重要度
python/sglang/srt/model_executor/model_runner.py 模型执行器 modified 8.43
python/sglang/srt/managers/tp_worker.py TP 工作器 modified 4.83
python/sglang/srt/disaggregation/prefill.py 解耦预填充 modified 4.54

关键符号

add_mla_attention_backend RankZeroFilter.__init__ RankZeroFilter.filter effective_max_total_num_tokens max_token_pool_size

关键源码片段

python/sglang/srt/model_executor/model_runner.py data-contract

核心变更文件:删除 MLA_ATTENTION_BACKENDS、add_mla_attention_backend、RankZeroFilter 和 alloc_memory_pool 中的遗留默认值;重命名属性 effective_max_total_num_tokens。

# python/sglang/srt/model_executor/model_runner.py# 删除前:
# MLA_ATTENTION_BACKENDS = [
# "aiter", "flashinfer", "fa3", "fa4", "triton", "flashmla",
# "cutedsl_mla", "cutlass_mla", "trtllm_mla", "tokenspeed_mla",
# "ascend", "dsa", "nsa", "intel_xpu",
# ]
# def add_mla_attention_backend(backend_name):
# if backend_name not in MLA_ATTENTION_BACKENDS:
# MLA_ATTENTION_BACKENDS.append(backend_name)
# logger.info(f"Added {backend_name} to MLA_ATTENTION_BACKENDS.")# 删除前:
# class RankZeroFilter(logging.Filter):
# def __init__(self, is_rank_zero):
# super().__init__()
# self.is_rank_zero = is_rank_zero
# def filter(self, record):
# if record.levelno == logging.INFO:
# return self.is_rank_zero
# return True# 重命名后:
@property
def effective_max_total_num_tokens(self):
    """Return the max token pool size considering hybrid swa settings."""
    if self.is_hybrid_swa:
        return self.full_max_total_num_tokens or self.swa_max_total_num_tokens
    # ... 其余逻辑保持不变
python/sglang/srt/managers/tp_worker.py core-logic

两处引用 `max_token_pool_size` 更新为 `effective_max_total_num_tokens`。

# python/sglang/srt/managers/tp_worker.py# 在 alloc_memory_pool 中(约第 345 行):
max_req_len = min(
    self.model_config.context_len - 1,
    self.model_runner.effective_max_total_num_tokens - 1, # 原为 max_token_pool_size
)# 在 get_worker_info 中(约第 457 行):
max_req_len = min(
    self.model_config.context_len - 1,
    self.model_runner.effective_max_total_num_tokens - 1, # 原为 max_token_pool_size
)

评论区精华

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

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

风险与影响

低风险。变更主要是删除死代码和属性重命名,不涉及逻辑修改。属性重命名可能影响外部插件或未发现的内部引用,但搜索显示 srt 目录内所有使用均已更新。遗留默认值删除安全,因为调用链保证这些字段会被赋值。

正面:减少代码量(-47 行),提高可读性。无功能影响。对用户透明;对开发者,需注意未来引用新属性名。

属性重命名可能导致外部引用断裂

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论