Repository navigation
Conversation
|
Caution The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased. |
a9ba312 to
8fe5652
Compare
|
测试方法 注:当前代码在prefill阶段抛出异常,首token 丢失,原因正在排查(已修复,原因为request.async_tokens_to_discard状态刷新错误) |
44d419d to
cf191da
Compare
Review: fork PR #260 — [Bugfix] Evict and zero contaminated KV blocks on fault retryPR: #260 一句话结论问题是真的、方向是对的,但现在的实现"宁可错杀一千"——把所有 running 请求的所有 KV block 都从 prefix cache 里删了,导致 resume 后全部从头重算,resume 省 KV 的意义没了。另外 PR 标题说有 zero,代码里没有;还顺手删了一行与标题无关的代码,没解释。 背景:这个 PR 在修什么fault 发生时, 问题在于:失败的那个 step,schedule 阶段就把刚写满的 block 登记进了 prefix cache,但 forward 还没跑(或跑了一半写了垃圾)。这些 block 里的 KV 是脏的,但 resume 后会被当成好 block 命中。这个 PR 就是要把它们从 cache 里删掉。 逐条问题1. 驱逐范围太大(最主要的问题)现在驱逐的是所有 running 请求的全部 block。但真正脏的只有失败 step 写的那一段——每个请求最多尾部 1 个 full block。前面的 block 都是之前成功 step 写的,是干净的。 后果:resume 之后每个请求都从头 prefill,一点 KV 都复用不了。那 resume 相比直接 abort 就只剩"client 不报错"这一个区别了,性能收益归零。还会误删其他请求(已完成的)贡献的共享 prefix block。 精确的写法是只驱逐"还没确认的尾部": 2. 标题说 "zero",代码里没有 zeroPR 标题是 "Evict and zero",但 diff 里只有 evict。两种处理方式:
3. 删掉的
|
| 50283 (NaN FT) | 本 PR (fault retry) | |
|---|---|---|
| 触发源 | logits 里检测到 NaN | DP/EP 通信异常 |
| 处理 | abort 单个请求 | preempt 全部 running 请求 |
| 清理手段 | evict 该请求的 block + 重分配时 zero(force_zeroing) |
evict 全部 running 请求的 block,无 zero |
- 两者的 evict 用的是同一个现成原语(KV-load-failure 路径的
evict_blocks),概念也是同一件事:脏 block 不能留在 prefix cache 里被后面的请求命中。 - 50283 的
force_zeroing(重分配时清零)正好就是本 PR 标题里声称、但代码里没做的那个 zero。如果两个 PR 都要往上游推,应该抽一个共用的"脏 block 清理"helper(evict + record-for-zeroing),别各写一套。 - 互不覆盖:50283 管不了 fault-retry 的 schedule-time-commit 污染,本 PR 也不做 NaN 检测。是互补关系,不是重复。
fangyuchu
left a comment
There was a problem hiding this comment.
清除evict当前请求的最后一个block的逻辑写成一个函数吧,不要在on_fault里实现
daabdbd to
df409fe
Compare
| dirty_block_ids: set[int] = set() | ||
|
|
||
| for request in engine.scheduler.running: | ||
| if not resume_requests: |
There was a problem hiding this comment.
就算是abort的情况,也只evict脏的kv就行吧,不需要清理所有的kv吧
Signed-off-by: TianZhuo <2770730562@qq.com>
df409fe to
c13c096
Compare
a59a2b5
into
fangyuchu:feature/request_resume
Signed-off-by: TianZhuo <2770730562@qq.com>
Signed-off-by: TianZhuo <2770730562@qq.com>
PLEASE FILL IN THE PR DESCRIPTION HERE ENSURING ALL CHECKLIST ITEMS (AT THE BOTTOM) HAVE BEEN CONSIDERED.
Purpose
Test Plan
Test Result
Essential Elements of an Effective PR Description Checklist
supported_models.mdandexamplesfor a new model.BEFORE SUBMITTING, PLEASE READ https://docs.vllm.ai/en/latest/contributing (anything written below this line will be removed by GitHub Actions)