Skip to content

fix(nemotron-agg): point agg at the golden image so NVFP4 works (not stock 1.3.1-efa) - #44

Closed
dmvevents wants to merge 1 commit into
aws-samples:mainfrom
dmvevents:fix/nemotron-agg-nvfp4-golden-image
Closed

dmvevents wants to merge 1 commit into
aws-samples:mainfrom
dmvevents:fix/nemotron-agg-nvfp4-golden-image

Conversation

@dmvevents

Copy link
Copy Markdown
Contributor

Gap

The NVFP4 cubin fix merged in #43 lives in the golden dynamo-vllm-efa Dockerfile, which the disagg path builds and uses. But the agg path — which is where the original crash happened (nemotron3-ultra-550b-agg-worker) — still points agg/.env at the stock nvcr.io/nvidia/ai-dynamo/vllm-runtime:1.3.1-efa. So NVFP4 agg still crashes:

PermissionError: [Errno 13] ... /flashinfer_cubin/cubins/flashinfer   (profile_run)

FLASHINFER_CUBIN_DIR (set in the agg template) does not fix it — flashinfer's _get_cubin_dir() (jit/env.py) prefers the installed flashinfer_cubin package over the env var, and NVFP4 symlinks cubins into that root-owned package dir.

Fix

The golden image already states it "covers every scenario: aggregated, EP16, PP>1" and now carries the build-time cubin chmod (from #43). Point agg/.env at it — public.ecr.aws/hpc-cloud/dynamo-vllm-efa:1.3.1-patched (overridable), exactly how disagg/.env already works — so NVFP4 agg works out of the box with the worker still non-root, no initContainer, no runAsUser. Also corrects the now-misleading FLASHINFER_CUBIN_DIR comment. BF16 works on either image.

Aligns with the maintainer's stated preference ("we don't need to use the nvidia stock image until they fix it").

Verification

Related: #43 (build-time cubin fix in the golden Dockerfile, merged); #42 (initContainer variant, closed as superseded).

…stock)

Alex's original NVFP4 crash was the AGG worker, which uses the stock
nvcr.io/nvidia/ai-dynamo/vllm-runtime:1.3.1-efa directly. That image ships
flashinfer_cubin root-owned, and FLASHINFER_CUBIN_DIR is inert (flashinfer
prefers the installed package over the env var), so NVFP4 profile_run crashes
on the non-root worker with PermissionError[13].

The golden image (../disagg/dynamo-vllm-efa/Dockerfile) already 'covers every
scenario: aggregated, EP16, PP>1' and now carries the build-time cubin chmod
fix (merged in aws-samples#43). Point agg/.env at it (public.ecr.aws/hpc-cloud/
dynamo-vllm-efa:1.3.1-patched, overridable), matching how disagg/.env already
works, so NVFP4 agg works out of the box with no initContainer / runAsUser.
Correct the now-misleading FLASHINFER_CUBIN_DIR comment. BF16 works on either.

Signed-off-by: Anton Alexander <dmvevents@gmail.com>
iankouls-aws pushed a commit that referenced this pull request Aug 8, 2026
Alex asked for the missing agg DGD (we only had disagg/dgd.yaml-template).
Adds agg/dgd.yaml-template: the operator-managed (DynamoGraphDeployment,
nvidia.com/v1alpha1) equivalent of agg/deployment.yaml-template — Frontend +
a single VllmWorker (componentType worker, NO prefill/decode split, NO NIXL /
disaggregation-mode / KV-transfer), TP=${GPU_PER_WORKER}/PP1, single node.

Carries the operator gotchas proven in disagg/dgd.yaml-template: v1alpha1
storage version, worker port named 'system' (operator injects probes by name),
no frontend readinessProbe (operator injects its own), HF_HOME=/tmp (uid 1000
can't write root-owned /shared). Uses the golden image via .env; wire
MANIFEST_TYPE=dgd into run.sh/stop.sh.

NVFP4 note: depends on the golden image (agg/.env → golden, PR #44) for the
cubin fix; on the current stock 1.3.1-efa .env, BF16 works but NVFP4 needs #44
merged first.

Signed-off-by: Anton Alexander <dmvevents@gmail.com>
@iankouls-aws

Copy link
Copy Markdown
Contributor

will not merge ... suggested changes are already in place

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