reasoning 结束判定统一由语法派生,删除多模型 override
值得精读,尤其推荐 parser / structured-output 方向的 owner 逐段读 `ParserEngine.is_reasoning_end` 的新实现与两条新测试。三个最值得关注的设计决策:一是把「无标记尾部」语义显式提为 config 字段而不是继续散落在模型分支里;二是用「从初始状态出发的 `THINK_START` 迁移是否进入 REASONING」来区分惰性 `<think>` 与真正打开 reasoning,这一条同时支撑了 thinking off 的行为修正;三是用 `turn_boundary_tokens` 而非更长的手写分支来限定回合。阅读时请一并记住作者自曝的三处未解决项(`extract_content_ids` 分歧、未声明边界的 latch、gemma4 惰性 `<|tool_response>`),若后续要动这些模型的 `continue_final_message` 或多轮工具调用,应优先补上边界声明与针对性用例。
DeepGEMM pin 迁至 vLLM fork 2.8.0,并更新 Mega MoE 调用约定
值得精读,尤其是维护 MoE 后端、DeepGEMM 集成或 CI 镜像的同学:本案是「小 diff、大范围」依赖迁移的典型样本。
三个值得关注的设计决策:一是用单一 fork pin 取代「按特性挑分支」,把 SM120 / SM90 / SiTU 三个能力收敛到一条可复现的 commit 上;二是只在 DeepGEMM 调用边界做参数别名映射,vLLM 内部配置名与其它后端(TRT-LLM / CuteDSL / AITER)保持不变,避免配置契约外溢;三是 `getattr(..., None)` 这类「静默 None」模式在依赖升级中极易造成功能性静默失败,本 PR 用「规范名 + 旧拼写 fallback」兼容两种 pin,这种双向兼容写法值得复用到其它外部内核绑定。
后续建议:把 SiTU 的 alpha/beta 映射固化为自动化数值回归(现在只有一次性脚本与 GSM8K A/B);把 cmake / install script / build_deepgemm_C.py 中的 repo、tag、子模块信息收敛成单一来源;与 #56266 / #56255 合流时确认 `elfutils-devel` 与 `deep_jit` 的最终结论一致;持续跟踪 fork 与上游 2.8.x 的分叉成本。
修复 KDA 中段 checkpoint 挤占 prefix cache 淘汰热前缀
值得精读,但重点不在改动规模,而在三处设计取舍:
1. 看 `MambaManager._cache_partial_tail_block` 的必填参数设计——把 retention 策略从隐式状态提升为强制显式契约,是这类“静默退化”问题值得复用的防回归模式;
2. 看短路分支为何要在 `return None` 之前调用 `_maybe_evict_cached_block`——理解“slot 被 checkpoint state 覆盖前必须摘掉旧 hash”这一不变量,以及用私有 API 替代 `evict_blocks` 的取舍;
3. 看 `test_transient_checkpoint_evicts_retained_boundary_hash` 如何把 checkpoint slot 与 shared-prefix 边界块强行重合,这是一个容易被漏掉的交叉场景。
审阅建议:如果所在团队使用 Mamba/KDA 混合模型并配置了 latest-only 保留,建议在本 PR 之后补一轮模型级 hybrid KDA 工作负载的前缀命中率与 ITL 回归;对 `num_tokens` 语义敏感的 chunked prefill / resume 路径,建议额外构造 sibling 复用用例确认例外条件覆盖充分。