Prhub

#21884 revert: remove TTL-based hard pin from HiRadixCache

原始 PR 作者 ishandhanani 合并时间 2026-04-02 07:51 文件变更 7 提交数 1 评论 2 代码增减 +1 / -223

执行摘要

移除 HiRadixCache 中基于 TTL 的硬钉功能及相关代码。

PR body中提到“Will approach this a different way in follow up PRs”,表明原有基于TTL的硬钉实现可能存在问题或设计不佳,因此先移除以准备新的方案。

建议关注此revert的原因,理解原有TTL-based硬钉设计的不足,并跟踪后续PR以学习新的实现方案。对于涉及缓存管理或admin接口的开发者,需注意API变更和配置调整。

讨论亮点

无review讨论,PR由作者直接合并,未经过代码评审。

实现拆解

删除所有与pin_prefix功能相关的代码:在http_server.py中移除API端点;在environ.py中删除环境变量SGLANG_HICACHE_MAX_PINNED_RATIO;在io_struct.py中删除PinPrefixReqInput和PinPrefixReqOutput数据结构;在scheduler.py中移除pin_prefix_wrapped方法和相关导入;在tokenizer_communicator_mixin.py中删除pin_prefix_communicator和相关方法;在hiradix_cache.py中删除pin_prefix方法、pin状态管理、预算初始化等;在radix_cache.py中移除TreeNode的pin_expiry和pin_ttl字段。

文件 模块 状态 重要度
python/sglang/srt/mem_cache/hiradix_cache.py mem_cache/hicache modified 8.0
python/sglang/srt/entrypoints/http_server.py entrypoints/http_server modified 6.0
python/sglang/srt/managers/scheduler.py managers/scheduler modified 6.0
python/sglang/srt/mem_cache/radix_cache.py mem_cache/hicache modified 5.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

关键符号

pin_prefix pin_prefix_wrapped pin_prefix_communicator PinPrefixReqInput PinPrefixReqOutput

评论区精华

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

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

风险与影响

风险包括:1) 暂时移除了前缀钉住功能,依赖此功能的用户或客户端(如通过admin API)可能无法使用;2) 移除环境变量SGLANG_HICACHE_MAX_PINNED_RATIO可能影响系统配置,需更新相关文档;3) 代码删除可能引入回归,如果其他模块错误地引用了被移除的代码(如通过导入或反射),但变更集中,风险可控。

影响范围:admin API失去pin_prefix端点,高级用户无法手动钉住前缀以抵抗缓存淘汰;缓存管理逻辑不再支持硬钉,可能影响特定优化场景。影响程度:中等,主要影响管理员和高级缓存配置,不影响正常推理流程和核心性能。

功能移除 临时功能缺失 配置变更

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

  • 一句话:移除HiRadixCache中基于TTL的硬钉功能及相关代码。
  • 推荐动作:建议关注此revert的原因,理解原有TTL-based硬钉设计的不足,并跟踪后续PR以学习新的实现方案。对于涉及缓存管理或admin接口的开发者,需注意API变更和配置调整。

功能与动机

PR body中提到“Will approach this a different way in follow up PRs”,表明原有基于TTL的硬钉实现可能存在问题或设计不佳,因此先移除以准备新的方案。

实现拆解

删除所有与pin_prefix功能相关的代码:在http_server.py中移除API端点;在environ.py中删除环境变量SGLANG_HICACHE_MAX_PINNED_RATIO;在io_struct.py中删除PinPrefixReqInput和PinPrefixReqOutput数据结构;在scheduler.py中移除pin_prefix_wrapped方法和相关导入;在tokenizer_communicator_mixin.py中删除pin_prefix_communicator和相关方法;在hiradix_cache.py中删除pin_prefix方法、pin状态管理、预算初始化等;在radix_cache.py中移除TreeNode的pin_expiry和pin_ttl字段。

关键文件:

  • python/sglang/srt/mem_cache/hiradix_cache.py(模块 mem_cache/hicache): 移除了pin_prefix方法、pin状态管理(如_is_pinned、_clear_pin)和预算初始化,是核心缓存逻辑的关键变更。
  • python/sglang/srt/entrypoints/http_server.py(模块 entrypoints/http_server): 删除了pin_prefix API端点(/hicache/pin_prefix),影响admin接口的可访问性。
  • python/sglang/srt/managers/scheduler.py(模块 managers/scheduler): 移除了pin_prefix_wrapped方法和相关调度器处理,影响请求分发和缓存管理集成。
  • python/sglang/srt/mem_cache/radix_cache.py(模块 mem_cache/hicache): 移除了TreeNode的pin_expiry和pin_ttl字段,影响缓存节点数据结构和状态跟踪。

关键符号:pin_prefix, pin_prefix_wrapped, pin_prefix_communicator, PinPrefixReqInput, PinPrefixReqOutput

评论区精华

无review讨论,PR由作者直接合并,未经过代码评审。

  • 暂无高价值评论线程

风险与影响

  • 风险:风险包括:1) 暂时移除了前缀钉住功能,依赖此功能的用户或客户端(如通过admin API)可能无法使用;2) 移除环境变量SGLANG_HICACHE_MAX_PINNED_RATIO可能影响系统配置,需更新相关文档;3) 代码删除可能引入回归,如果其他模块错误地引用了被移除的代码(如通过导入或反射),但变更集中,风险可控。
  • 影响:影响范围:admin API失去pin_prefix端点,高级用户无法手动钉住前缀以抵抗缓存淘汰;缓存管理逻辑不再支持硬钉,可能影响特定优化场景。影响程度:中等,主要影响管理员和高级缓存配置,不影响正常推理流程和核心性能。
  • 风险标记:功能移除, 临时功能缺失, 配置变更

关联脉络

  • PR #18941 推测为引入TTL-based硬钉的PR: 此PR reverts了PR 18941(基于head_ref 'ishan/revert-pr-18941'),移除了其中引入的TTL-based硬钉功能。

参与讨论