Skip to content

feat(deps): add opt-in flashinfer-aot group for air-gapped installs - #3251

Open
samsja wants to merge 1 commit into
mainfrom
feat/flashinfer-aot-extra
Open

feat(deps): add opt-in flashinfer-aot group for air-gapped installs#3251
samsja wants to merge 1 commit into
mainfrom
feat/flashinfer-aot-extra

Conversation

@samsja

@samsja samsja commented Aug 12, 2026

Copy link
Copy Markdown
Member

Motivation

The vLLM 0.26 bump (9f0d41e, #3166) dropped flashinfer-cubin from the lock file because vLLM no longer depends on it. For air-gapped deployments (GPU fleet with no internet access), this broke first runs: vLLM now tries to download cubins and JIT-compile kernels at runtime, forcing users to trial-and-error rebuild their venv with the missing packages (Slack thread).

Change

Add a flashinfer-aot dependency group (following the existing mamba-ssm pattern) with the pre-built FlashInfer kernel artifacts:

  • flashinfer-cubin==0.6.14 — pre-downloaded cubins
  • flashinfer-jit-cache==0.6.14+cu129 — pre-built JIT cache, so nothing compiles on first run

Opt in with:

uv sync --all-extras --group flashinfer-aot

Notes

  • A dependency group rather than a project extra, so the documented uv sync --all-extras setup doesn't pull ~2GB of kernel wheels by default — the thread explicitly asked for this to stay opt-in.
  • Versions must match the locked flashinfer-python (0.6.14) — mismatched artifact packages are ignored at runtime and vLLM falls back to downloading. Pins need re-checking on vLLM bumps (comment added in pyproject.toml).
  • Wheels come from flashinfer's GitHub releases (0.6.14 isn't on PyPI; flashinfer-jit-cache never is — it's published per-CUDA-version, cu129 here to match the vLLM wheel). Both x86_64 and aarch64 are covered.
  • Lock diff is purely additive; uv lock --check passes and uv export --group flashinfer-aot resolves the two wheels on both arches.

🤖 Generated with Claude Code


Note

Low Risk
Dependency and documentation only; no runtime code paths change, though version pins must stay in sync with vLLM/flashinfer-python on future bumps.

Overview
Adds an opt-in flashinfer-aot uv dependency group so offline fleets can install pre-built FlashInfer artifacts (flashinfer-cubin and flashinfer-jit-cache at 0.6.14, aligned with locked flashinfer-python) without pulling ~2GB into the default uv sync --all-extras flow.

Wiring includes GitHub-release wheel URLs for cubin and cu129 jit-cache on x86_64 and aarch64, tool.uv.sources / exclude-newer entries for those packages, and lockfile updates. README documents opting in via uv sync --all-extras --group flashinfer-aot and why it matters when vLLM would otherwise download cubins or JIT-compile on first run.

Reviewed by Cursor Bugbot for commit ff76ecf. Bugbot is set up for automated code reviews on this repo. Configure here.

vLLM 0.26 no longer depends on flashinfer-cubin, so the vLLM bump in
9f0d41e dropped it from the lock file. On air-gapped fleets (no
internet on GPU nodes) this broke first runs: vLLM tries to download
cubins and JIT-compile kernels at runtime.

Add a flashinfer-aot dependency group pinning flashinfer-cubin and
flashinfer-jit-cache to the locked flashinfer-python version (0.6.14,
cu129 to match the vLLM wheel). A dependency group rather than an
extra so the default `uv sync --all-extras` setup doesn't pull ~2GB
of kernel artifacts; opt in with `--group flashinfer-aot`.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@samsja
samsja marked this pull request as ready for review August 12, 2026 18:57
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.

1 participant