Repository navigation
[CI] Bake hash-locked KV connectors into the CI image and re-enable their jobs - #65145
Conversation
…heir jobs Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.
Tip: disable this comment in your organization's Code Review settings.
|
Claude Code here (AI assistant working with @khluu). Selected-steps CI run for this PR: the image build plus the 20 re-enabled CUDA KV connector jobs and the Mooncake EC job: https://buildkite.com/vllm/ci/builds/99153 |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
|
Claude Code here (AI assistant working with @khluu). Build 99153 failed at image build: the image pins NCCL 2.31.2 through a global |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
|
Claude Code here (AI assistant working with @khluu). Status of selected-steps build https://buildkite.com/vllm/ci/builds/99176:
|
The FlashInfer MLA DCP fix merged while this job was disabled, so the strict xfail now reports XPASS on all four dcp2 *-dspark cases. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
|
Claude Code here (AI assistant working with @khluu). Full triage of https://buildkite.com/vllm/ci/builds/99176. None of the failures is install-related; all of them landed on main while these jobs were disabled (Oct 25 to now):
These need the respective owners to decide whether the code or the test is right. I haven't touched them here. |
Fixed in #64993. |
…mage Signed-off-by: khluu <khluu000@gmail.com>
|
Claude Code here (on behalf of @khluu). Thanks @orozery. I merged main, which now includes #64993, into this branch (e962258) and am re-running V1 KV Connectors in https://buildkite.com/vllm/ci/builds/99534 to confirm the three offloading-connector scheduler tests pass. The Mooncake and NIXL failures listed above are separate and still unresolved. 🤖 Addressed by Claude Code |
|
Claude Code here (on behalf of @khluu). V1 KV Connectors results after merging main, from https://buildkite.com/vllm/ci/builds/99534:
None of these are caused by this PR, so I haven't patched them here. 🤖 Addressed by Claude Code |
The test image skipped every lock entry whose name was already installed, whatever its version, so a stale preinstalled package passed silently. tools/kv_connector_lock.py now: - plan: installs only missing entries and fails if a preinstalled package differs from the lock (one explicit exception: cuda-pathfinder, upgraded by the EP kernel libraries); - verify: checks every locked package's requirements against the installed environment, with two named exceptions (nixl -> nixl-cu12, torch -> image-pinned NCCL). Runs at image build and in check-kv-connectors.sh; - align: pre-commit check that the CI lock still satisfies requirements/kv_connectors.txt. This caught nvtx: the lock had 0.2.16 while vllm pins 0.2.15, so the lock is now also constrained by requirements/cuda.txt. Also drop the AMD fault-tolerance mirror that duplicated the standalone MoRI job, and untether test_epd_correctness.py from the allowlist. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
|
Claude Code here (on behalf of @khluu). I addressed all three review points in 3fa8954 and 697d171.
I also removed 🤖 Addressed by Claude Code |
The KV connector layer runs before the vLLM and EP kernel wheels, which re-resolve cuda-python (13.4.4 -> 13.0.3) and cuda-pathfinder (1.3.3 -> 1.8.5). A strict check there would fail on cuda-python even though the finished image matches the lock, and could not see changes made later. plan now only reports preinstalled mismatches, and verify runs as the last install step of the test stage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
|
Claude Code here (on behalf of @khluu). Selected-steps run to test the rebuilt image at 697d171: the image build, which now runs 🤖 Generated with Claude Code |
|
Claude Code here (on behalf of @khluu). Results so far from https://buildkite.com/vllm/ci/builds/100048 at 697d171:
None of these is caused by this PR, so I haven't patched them here. 🤖 Generated with Claude Code |
|
Should we modify a bit rocm docker file too? Or did I miss the mods there? |
|
Claude Code here (on behalf of @khluu). @AndreasKaratzas The ROCm Dockerfile doesn't need changes. It already does what this PR adds on the CUDA side:
One caveat: none of the re-enabled AMD jobs have run on this PR yet. They are MI355 V1 KV Connectors, MoRIIO unit, MoRIIO WRITE E2E and the Torchrun mirror. I'll start a selected-steps run for them to confirm. 🤖 Addressed by Claude Code |
|
Claude Code here (on behalf of @khluu). AMD results from https://buildkite.com/vllm/ci/builds/100125 at 697d171:
None of these involve the image or dependency changes in this PR. 🤖 Generated with Claude Code |
…mage Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
…t xfail The V1 KV Connectors job has been disabled since #63609, and 9 test IDs broke on main in the meantime. Mark them strict xfail so the rest of the job (about 2,100 tests on CUDA, 2,400 on ROCm) can run again. Each marker names its fix; strict means the fix PR must remove it. - NIXL packed DSv4 MLA region, v41-aliased-groups (#64661) - Mooncake register_worker retry and max-attempts (#63122) - Mooncake expired request counter (no _kv_lease_duration; no fix yet) - HiSparse draft layer rows, both CUDA graph modes (#64240 for ROCm; stub lacks max_swap_rows) - Mooncake store HMA round trip, MLA BLHNC/BLNHC, ROCm only (no fix yet) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
|
Claude Code here (on behalf of @khluu). Pushed 0c3e9b1 so V1 KV Connectors can be re-enabled with the rest of this PR. It marks the 9 test IDs that broke on main while the job was disabled as
The rest of the job is about 2,100 tests on CUDA and 2,400 on ROCm, all passing in builds 100048 and 100125. Selected-steps re-run of V1 KV Connectors on both platforms: https://buildkite.com/vllm/ci/builds/100485 |
#63988 added the test with a 16-token offload block while the V1 KV Connectors job was disabled; #63231 then raised the default GPU block size to 64, which the offload block must divide. Pin block_size=16 as #63231 did for test_example_connector.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
…mage Take main's test_offloading_connector.py: #66019 pins the same block_size. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
KV connectors are now baked into the CI image hash-locked (upstream vllm-project#65145); follow the check-kv-connectors.sh convention and run the test with the image's Python directly. Co-authored-by: Kimi Code <noreply@moonshot.cn> Signed-off-by: Isotr0py <Isotr0py@outlook.com>
…heir jobs (vllm-project#65145) Signed-off-by: khluu <khluu000@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Resolve the disaggregated.yaml conflict with vllm-project#65145, which bakes the hash-locked KV connectors into the CI image and re-enables the file's steps. Enable the four P2P steps, still optional and [Nightly], and run check-kv-connectors.sh instead of the removed install-kv-connectors.sh. Signed-off-by: Liran Schour <lirans@il.ibm.com>
The kv-connectors pip-compile hook (vllm-project#65145) came in from main with --torch-backend cu130, which cannot resolve against this branch's torch==2.14.0+cu132 pin. Switch it to cu132 and regenerate requirements/test/kv_connectors_cuda.txt (torch and the nvidia-* libs move to their CUDA 13.2 builds). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: khluu <khluu000@gmail.com>
Overview
Re-enable the KV connector CI jobs disabled in #63609 (follow-up to #63608 and #64010). Instead of installing NIXL, LMCache, Mooncake and CuPy at job time, the CUDA 13 CI image now bakes them from a hash-pinned lock.
Claims
test-depsstage withuv pip install --require-hashes --no-depsfromrequirements/test/kv_connectors_cuda.txt. That lock is compiled againstrequirements/cuda.txtandrequirements/test/cuda.txtand regenerated by a newpip-compile-kv-connectorspre-commit hook; acheck-kv-connector-lockhook fails if it stops satisfyingrequirements/kv_connectors.txt. At build time it adds 16 packages and changes none already in the image.install-kv-connectors.shbecomescheck-kv-connectors.sh. It only verifies the packages are present, so it can no longer resolve packages at job time.kv_connectors_rocm.txt(tblib,lm_eval[api]) is fully covered byrequirements/test/rocm.txt, so the runtime installs were no-ops. They and the file are removed.uv pip install mooncake-transfer-engine>=0.3.12into a venv. It now uses the image's Mooncake through--system-site-packages.Validation
pre-commit runon all changed files passed: pip-compile-kv-connectors, shellcheck, step keys, test tethering (--allreports nothing stale) and Dockerfile graph.nixl/nixl-cu131.5.2 (PyPI Oct 29). Main already pins it inrequirements/kv_connectors.txtsince [NIXL][CI/Build] Bump NIXL to 1.5.2 and drop source build for Rubin #64585. Please don't merge before Nov 5 if we hold to the 7-day rule.Details
--require-hashes --no-deps. It fails the build if the install changed any preinstalled package. After the vLLM and EP kernel wheels are installed,tools/kv_connector_lock.py verifyfails the build if any locked package differs from its locked version or has unmet requirements. Its exceptions are named in the script:cuda-pathfinder, which the vLLM install upgrades;nixl→nixl-cu12; andtorch→ the image-pinned NCCL.check-kv-connectors.shreruns the sameverifyat job start. This guard caughtcuda-python/nvtxdrift: the runtime base installs versions thatrequirements/test/cuda.txtdoesn't pin. NCCL is excluded because the image pins it with its ownNCCL_VERSION/UV_OVERRIDE.check-kv-connectors.shfails fast there with a clear message. The KV jobs only run on x86 L4/H100/H200/B200 pools.pip install -r requirements/kv_connectors.txton the XPU image. They need an Intel image change.INSTALL_KV_CONNECTORS=true) are unchanged.Pull Request Checklist
I used vLLM's
/pr-checklistskill. (Mandatory for agents, optional for humans).AI assistance was used during the creation of this PR.
Design Fit: Minimizes impact on core components, reuses existing functionality, and justifies added complexity.
Testing and Validation: Validates the change and ensures any added tests are meaningful and reliable, with CI coverage or documented CI resource constraints and validation performed outside CI.
Code Quality and Style: Keeps code and comments clear and concise, and updates relevant documentation and examples.
Pull Request Contents: Includes a brief summary and relevant links, supports claims with evidence, explains root causes and implementation trade-offs, and follows the contributing guide.
🤖 Generated with Claude Code