Repository navigation
fix: query physical KV capacity on the pool's GPU - #589
JasperChan929 wants to merge 1 commit into
Conversation
|
Could you provide a runnable repro starting vLLM or SGLang normally, with the launch command, The current test constructs a native pool and starts a query thread directly. It demonstrates the low-level device behavior, but bypasses the engine's initialization and execution order. We need to establish whether a supported serving setup actually reaches the same failure. With only one GPU visible per process, the pool uses logical GPU 0, so that setup doesn't demonstrate this particular mismatch. Please share the failing output from the original code through the normal engine entry points, without changing internal state or manually substituting the call sequence. That will help us judge the real impact before reviewing the fix. |
|
@JasperChan929 This applies to both this PR and #587, and to future bug reports and fixes: provide a runnable reproduction that triggers through the normal execution flow in a real, supported environment, including the launch configuration and exact steps. An invasive test that bypasses the engine's execution order or manually creates an internal call sequence is not acceptable as evidence that normal usage is broken. Calling internal methods in an arbitrary order can produce failures that the engine's own orchestration prevents. Regression tests do not replace a valid reproduction of the reported problem. Please meet this requirement before submitting further bug-fix PRs. If this happens again, I will close the PR without another reminder. I do not want to keep repeating this requirement. |
shipiyouniao
left a comment
There was a problem hiding this comment.
LGTM from my side. Let's wait for #487 to land, then rebase this and verify the combined path before merging.
7cac014 to
1a09801
Compare
|
@JasperChan929 I asked for a real, runnable reproduction in the description of issue #588, not a new document and a one-off GPU-memory pressure script committed to this repository. |
|
@shipiyouniao First, I want to apologize and thank you for the time and care you’ve put into reviewing my PRs. You’ve been quick to respond and detailed in your feedback, and I really appreciate that. I’m sorry I made you repeat clear requirements and spend more time on avoidable rework. I really enjoy contributing to this project. I find the direction interesting and promising. When I have an idea or find a bug, I’ve been too eager to get a PR out quickly. In doing so, I haven’t given enough attention to the quality of what I submit or the extra work it creates for you. You had already asked me to leave documentation out of these PRs, and I still included it. I used AI assistance without reviewing the final changes carefully enough. It was my responsibility to understand and check what I was submitting. I would still like to contribute to the project, and I want those contributions to help rather than create more work. I’ll slow down, review the existing feedback, and make sure I understand and verify my changes before submitting them. Thank you again for the time you’ve already given me. |
- Preserve device context and physical budget limits in capacity queries. - Cover existing groups, standalone allocators and native budget integration. Fixes ovg-project#588 Co-authored-by: 石皮幼鸟 <2960474346@qq.com>
1a09801 to
30e4203
Compare
|
/ci run weekly |
|
GPU CI (weekly) on 30e4203, requested by @shipiyouniao: run |
Weekly correctness · 2026-10-23 · PASSRun · kvcached 30e4203 (merged into main at 3170a0a) All 26 cases passed. Setup of every caseOn request in a pull request (gpu-pr.yml) on 2x NVIDIA L4 (23034 MiB, driver 580.178.04). kvcached is installed from the pull request merged into main into each engine's official image; each case starts one server in it.
CasesEach kvcached case is compared with the native case of the same engine and model.
Each case:
Elastic tests
Logs: artifact, kept 30 days: serve.log and cmd.txt per case, summary.json with every request's tokens, setup.json, run.log, GPU state at the end. |
shipiyouniao
left a comment
There was a problem hiding this comment.
LGTM at 30e4203. Capacity queries now use the initialized pool's GPU, restore the caller's device, and preserve mainline physical budget limits without creating missing allocators.
Validation on this head: Python 3.10 through 3.13 each had 1536 tests pass; the single-T4 native run had 79 pass. CPU CI, pre-commit CI, and weekly GPU CI passed; weekly covered 26 cases on two L4s. Codex review with xhigh reasoning and fast mode found no actionable regressions.
The eight new dual-GPU native pressure/query/preallocation cases remain unexecuted: the T4 host has one GPU, and weekly does not run these native tests. They were among 11 two-GPU skips in the T4 run. @RixinLiu, please take a look at this remaining coverage gap.
Fixes #588
Background capacity queries can use GPU 0 for an FTensor backend initialized on GPU 1. In the normal SGLang startup reported in #588, this leaves null-block initialization waiting while GPU 1 has available memory.
Resolve an implicit CUDA device at initialization, query the backend's device and restore the caller's device afterward. Standalone IPC allocators without a local backend retain their current-device behavior.
The complete launch configuration, inline pressure helper, original output and controls are in #588. On SGLang 0.5.20 / Torch cu130 with two RTX 4090s, the fixed version and all controls complete; all 15 requests' full output token arrays match native. This serving validation is TP=1. Combined-path verification remains pending #487 landing and rebasing this change onto it.