Skip to content

wip(vllm-tensorizer): pre-fetch FlashKDA + llm-multimodal for Kimi K3 (vllm-project/vllm#50000) - #195

Draft
nehashah-eng wants to merge 3 commits into
mainfrom
neha/kimi-k3-flashkda-support
Draft

wip(vllm-tensorizer): pre-fetch FlashKDA + llm-multimodal for Kimi K3 (vllm-project/vllm#50000)#195
nehashah-eng wants to merge 3 commits into
mainfrom
neha/kimi-k3-flashkda-support

Conversation

@nehashah-eng

@nehashah-eng nehashah-eng commented Jul 27, 2026

Copy link
Copy Markdown

Why

Was going to add Kimi K3 support to vllm-tensorizer off vllm-project/vllm#50000. That PR's description says "this branch has some private dependencies" — turns out that's not literal (verified FlashKDA, llm-multimodal, the DSpark HF model, and the kimi-k3 Docker tag are all public), but it does introduce two dependencies that are fetched live over the network from inside the actual compile stage, rather than through this repo's usual pinned-commit *-downloader stage pattern:

  • cmake/external_projects/flashkda.cmake (new file) does FetchContent_Declare(flashkda GIT_REPOSITORY https://github.com/vllm-project/FlashKDA.git ...) — fired from inside vllm-builder's CMake configure step.
  • rust/Cargo.toml adds llm-multimodal as a git dependency on github.com/smg-project — fetched by cargo inside vllm-rust-builder's build_rust.sh.

Every other external source in this Dockerfile (flashinfer, LMCache, InfiniStore, DeepGEMM, NIXL) is instead cloned in its own dedicated alpine/git-based downloader stage with an explicit pinned ARG *_COMMIT, then bind-mounted into the compile stage. This PR brings FlashKDA and llm-multimodal into that same pattern.

What

  • New flashkda-downloader stage; vllm-builder now bind-mounts it and sets FLASH_KDA_SRC_DIR, which flashkda.cmake already honors as a FetchContent override.
  • New llm-multimodal-downloader stage; vllm-rust-builder now bind-mounts it and adds a cargo git-source replacement (file:///opt/llm-multimodal-src) so cargo build resolves it locally instead of hitting github.com/smg-project.
  • A third, experimental matrix entry in .github/configurations/vllm-tensorizer.yml pins vllm-commit directly to [New model] Kimi K3 vllm-project/vllm#50000's current branch head (658f2f56e557e8141f8726b4626c51496d78d914), with its own flashkda-commit/llm-multimodal-commit, so CI actually exercises this end to end instead of just adding unused stages.

Status: experimental, unmerged upstream

vllm-project/vllm#50000 is unmerged (open, needs-rebase, dirty mergeable_state). The experimental matrix entry pins to its current head SHA, which can go stale (force-push/rebase) or simply fail to build at any time — that's expected for now. The two existing production entries (v0.25.1, renovate-managed) are untouched and get a distinct tag automatically (tag-suffix is derived from vllm-commit), so this won't overwrite or affect the production vllm-tensorizer tags.

Heads up: pushing this triggers real CI on shared self-hosted (ml-amd/ml-arm) GPU runners for all three matrix entries, including this new experimental one — expect a long build, and a real chance it fails outright since #50000 is WIP/unreviewed upstream.

Test plan

  • CI build succeeds for the two existing (v0.25.1) production entries with no functional change
  • CI build succeeds for the new experimental Kimi K3 entry through flashkda-downloader/llm-multimodal-downloader/vllm-rust-builder/vllm-builder
  • Once #50000 merges upstream, drop the experimental entry and bump the production vllm-commit past it instead

nehashah-eng and others added 3 commits July 27, 2026 12:50
…vllm-project/vllm#50000)

vLLM's still-open Kimi K3 PR adds two dependencies fetched live at build time instead of
via a pinned commit like every other external source in this Dockerfile:
  - cmake/external_projects/flashkda.cmake FetchContent-clones
    github.com/vllm-project/FlashKDA from inside the vllm-builder CMake configure step.
  - rust/Cargo.toml adds `llm-multimodal` as a git dependency on github.com/smg-project,
    fetched by cargo during vllm-rust-builder's build_rust.sh.

Add dedicated flashkda-downloader / llm-multimodal-downloader stages (same pattern as
flashinfer-downloader et al.), and point the existing builder stages at the pre-fetched
sources: FLASH_KDA_SRC_DIR (which flashkda.cmake already supports as a FetchContent
override) and a cargo git-source replacement pointing at the local checkout.

Untested: PR #50000 is unmerged upstream, so the pinned VLLM_COMMIT here still doesn't
reference either dependency. To build against the Kimi K3 branch itself, override
VLLM_COMMIT=658f2f56e557e8141f8726b4626c51496d78d914 at build time. Once the PR merges
and VLLM_COMMIT is bumped past it, this wiring becomes load-bearing for the default build.
…oject/vllm#50000 head

Wires FLASHKDA_COMMIT/LLM_MULTIMODAL_COMMIT through the workflow and adds a third,
non-renovate-managed matrix entry pinning vllm-commit to the Kimi K3 PR's current branch
head (658f2f56e557e8141f8726b4626c51496d78d914), so CI actually builds against it and
exercises the flashkda-downloader/llm-multimodal-downloader wiring end to end.

This is genuinely experimental: #50000 is unmerged, open, and marked needs-rebase upstream,
so this SHA can go stale (or the build can just fail) at any time. Tag-suffix naturally
differs from the production entries since it's derived from vllm-commit, so this pushes a
distinctly-tagged image rather than touching the v0.25.1 production tags.
Align the explicit CUTLASS DSL, TVM FFI, Quack, and NIXL pins with the vLLM 0.26.0 dependency set while preserving newer compatible runtime pins.
@github-actions

Copy link
Copy Markdown

@nehashah-eng Build complete, success: https://github.com/coreweave/ml-containers/actions/runs/30302295970
Image: ghcr.io/coreweave/ml-containers/vllm-tensorizer:neha-kimi-k3-flashkda-support-ae7e301-568afb3a13806beb53bb2e6bd518269357b237c0-cuda13.2.1-ubuntu24.04

@github-actions

Copy link
Copy Markdown

@nehashah-eng Build complete, success: https://github.com/coreweave/ml-containers/actions/runs/30302295970
Image: ghcr.io/coreweave/ml-containers/vllm-tensorizer:neha-kimi-k3-flashkda-support-ae7e301-658f2f56e557e8141f8726b4626c51496d78d914-cuda13.2.1-ubuntu24.04

@github-actions

Copy link
Copy Markdown

@nehashah-eng Build complete, success: https://github.com/coreweave/ml-containers/actions/runs/30302295970
Image: ghcr.io/coreweave/ml-containers/vllm-tensorizer:neha-kimi-k3-flashkda-support-ae7e301-568afb3a13806beb53bb2e6bd518269357b237c0-cuda12.9.1-ubuntu24.04

@github-actions

Copy link
Copy Markdown

@nehashah-eng Build complete, success: https://github.com/coreweave/ml-containers/actions/runs/30299982407
Image: ghcr.io/coreweave/ml-containers/vllm-tensorizer:neha-kimi-k3-flashkda-support-d2550ac-752a3a504485790a2e8491cacbb35c137339ad34-cuda13.2.1-ubuntu24.04

@github-actions

Copy link
Copy Markdown

@nehashah-eng Build complete, success: https://github.com/coreweave/ml-containers/actions/runs/30299982407
Image: ghcr.io/coreweave/ml-containers/vllm-tensorizer:neha-kimi-k3-flashkda-support-d2550ac-752a3a504485790a2e8491cacbb35c137339ad34-cuda12.9.1-ubuntu24.04

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants