[CI Bugfix] Pre-download missing FlashInfer headers in Docker build - #38391
Conversation
The flashinfer-cubin package ships BMM headers at the artifact hash path (cubins/b55211623.../include/trtllmGen_bmm_export/), but the runtime code looks for them at a different path (cubins/flashinfer/trtllm/batched_gemm/trtllmGen_bmm_export/). This mismatch causes runtime downloads from edge.urm.nvidia.com on every startup, which fails in air-gapped environments and adds ~2min of serial header fetching even with internet access. Fix by calling download_trtllm_headers() at Docker build time, which populates the correct runtime path so no network access is needed at serving time. Fixes #38110 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: mgoin <mgoin64@gmail.com>
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.
Tip: disable this comment in your organization's Code Review settings.
There was a problem hiding this comment.
Code Review
This pull request updates the Dockerfile to pre-download FlashInfer TRTLLM BMM headers, ensuring that MoE JIT compilation works in air-gapped environments without requiring internet access at runtime. The review feedback suggests improving the readability and maintainability of the inline Python script by using a heredoc instead of a quoted string with backslashes and semicolons.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: mgoin <mgoin64@gmail.com>
yewentao256
left a comment
There was a problem hiding this comment.
LGTM, thanks for the work!
…cker build Signed-off-by: khluu <khluu000@gmail.com> #38391
…cker build Signed-off-by: khluu <khluu000@gmail.com> #38391
|
This fixed all the b200 failures I saw in last night's build, so merging |
…llm-project#38391) Signed-off-by: mgoin <mgoin64@gmail.com> Signed-off-by: neweyes <328719365@qq.com>
…llm-project#38391) Signed-off-by: mgoin <mgoin64@gmail.com> Signed-off-by: Rishi Puri <riship@nvidia.com>
…llm-project#38391) Signed-off-by: mgoin <mgoin64@gmail.com>
…llm-project#38391) Signed-off-by: mgoin <mgoin64@gmail.com>
…llm-project#38391) Signed-off-by: mgoin <mgoin64@gmail.com>
…cker build Signed-off-by: khluu <khluu000@gmail.com> vllm-project#38391
Summary
flashinfer-cubinpackage ships headers at the artifact hash path (cubins/b55211623.../include/trtllmGen_bmm_export/), but runtime code (download_trtllm_headers) looks for them atcubins/flashinfer/trtllm/batched_gemm/trtllmGen_bmm_export/— a path mismatch that causes network downloads on every startupSfLayoutDecl.h)Root Cause
flashinfer-cubin==0.6.6includes all 17 BMM headers + checksums.txt, but only at the artifact hash path. The runtimedownload_trtllm_headers()function (called fromflashinfer/jit/moe_utils.pyandflashinfer/jit/fused_moe.py) writes to and reads from a different path underflashinfer/trtllm/batched_gemm/. Sinceget_file()→load_cubin()doesn't find the headers at the expected path, it always falls through to downloading fromedge.urm.nvidia.com.Fix
Call
download_trtllm_headers()at Docker build time (when internet is available). This populates the correct runtime path soload_cubin()finds everything locally — zero network access needed at serving time.Verified locally:
Fixes #38110
Test plan
ConnectTimeoutErroronedge.urm.nvidia.com🤖 Generated with Claude Code