Prhub

#34356 Add bit-exact hicache logprob-consistency test

原始 PR 作者 ispobock 合并时间 2026-08-12 01:54 文件变更 1 提交数 2 评论 4 代码增减 +131 / -1

执行摘要

新增 HiCache 位精确多轮 logprob 一致性测试

PR body 明确指出:HiCache 把 Mamba 状态搬到 host 内存再搬回,这一往返不允许改变任何 bit,所以正确门槛是位精确而非容差;KL_DIV_THRESHOLD = 1e-9 只是防 stray ulp 的地板,松阈值会掩盖这类缺陷。当前 main 在该配置下测不到 0,两个独立状态层缺陷叠在一个数字下:#34184 已合入修复前 96%,剩余部分由 #29792 覆盖,而这个测试的作用就是让第二个缺陷可见。

值得精读,重点学习其测试设计:用多轮分支 harness 让 cache hit 落在多种前缀长度,再用 write_through、紧 pool、跨 track decode 的组合把隐蔽状态层缺陷放大到 KL=0 可观测。后续改动 HiCache 状态结构或 Mamba track 记账时,应保留该用例并保持其位精确语义。

讨论亮点

PR 本身没有 review 评论,核心讨论集中在 PR body 和 Issue 重跑记录。作者强调 KL_DIV_THRESHOLD = 1e-9 是防单个 ULP 的地板而非容差,并明确该用例依赖 #29792,合入前会保持红色;评论区两次 /rerun-test 第一次失败、第二次通过,最终转绿。

实现拆解

  1. 引入多轮 harness:从 sglang.test.kl_multiturn_utils 导入 assert_multiturn_decode_cache_hitmake_mamba_decode_assert,从 kl_test_utils 导入 get_input_ids,并保持 test_ 前缀别名避免被 pytest 收集。
  2. 新增确定性数据生成:_random_suffixes 用固定 seed 生成可复现的随机后缀;KL_HICACHE_TRACK_INTERVAL = 128 与页大小对齐,保证 decode 在单轮内跨过 track 边界。
  3. 新增测试类 TestInklingSmallNvfp4HiCacheDeterministicsetUpClass--enable-hierarchical-cache--hicache-write-policy write_through--hicache-io-backend direct--hicache-mem-layout page_first_direct 启动专用 server,并用 --mamba-track-interval 128、紧 pool、--enable-deterministic-inference 等配置放大缺陷可观测性。
  4. 核心用例 test_multiturn_decode_cache_hit_over_hicache:3 组 × 3 分支共享 512 token 前缀后分叉,跨两轮追加随机后缀,使 cache hit 落在多种前缀长度;同时用 make_mamba_decode_assert 断言每次 hit 都落在 track 边界上,logprob 对比与结构断言覆盖不同失败模式。
  5. CI 配套:register_cuda_ciest_time 从 1200 提升到 1700,因为多启动一个 server;无 schema、配置或部署改动。
文件 模块 状态 重要度
test/registered/models_e2e/test_inkling_small_nvfp4.py 模型测试 modified 7.2

关键符号

_random_suffixes TestInklingSmallNvfp4HiCacheDeterministic.setUpClass TestInklingSmallNvfp4HiCacheDeterministic.tearDownClass TestInklingSmallNvfp4HiCacheDeterministic.test_multiturn_decode_cache_hit_over_hicache

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

评论区精华

CI 首次重跑失败与依赖转绿 other

PR 没有 review 评论;Issue 评论区作者两次发起 /rerun-test,第一次在 4-gpu-b200 上失败,第二次通过。PR body 同时标注 Depends on #29792,合入前该测试会保持红色。

结论:第二次重跑通过后合入;首次失败与目标缺陷或 CI 环境有关,未能单独定位。 · 已解决

风险与影响

纯测试变更,对运行时无回归风险,但有三点值得注意:一是位精确断言(KL 阈值 1e-9)对无关 ULP 抖动敏感,任何浮点环境差异都可能让 extra-b 变红;二是 est_time 从 1200 提升到 1700,4-gpu-b200 上的 CI 时长与资源占用增加;三是首次 rerun 失败、第二次通过,说明用例对服务器启动或环境状态存在一定敏感性,后续可能 flaky。另外该用例依赖 #29792,合入顺序错乱时会持续红色。

影响范围集中在 CI 测试矩阵 extra-b 阶段和 HiCache/Mamba 状态一致性防线:为 #34184、#29792 修复的两个缺陷建立回归保护,并对后续 HiCache 状态迁移、Mamba track 记账改动施加位精确约束。用户的推理路径、API 行为、部署配置均不受影响。

依赖 #29792 合入 位精确断言对 ULP 敏感 CI 时长增加 500 秒 首次重跑失败后通过

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论