[setup-nvidia] disable nvidia-container-cli CUDA require check to unblock new CUDA minor versions#8210
[setup-nvidia] disable nvidia-container-cli CUDA require check to unblock new CUDA minor versions#8210Gasoonjia wants to merge 1 commit into
Conversation
Add NVIDIA_DISABLE_REQUIRE=1 to GPU_FLAG so GPU jobs are not blocked by the nvidia-container-cli prestart hook strict-comparing a CUDA image's NVIDIA_REQUIRE_CUDA (e.g. cuda>=13.2) against the host driver's advertised max CUDA. CUDA minor-version compatibility allows a container built with a newer minor toolkit to run on an older driver of the same major version, so the gate is overly conservative during a new-CUDA-minor rollout and causes container init to fail with exit 125 before any work runs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
@Gasoonjia is attempting to deploy a commit to the Meta Open Source Team on Vercel. A member of the Team first needs to authorize it. |
|
Please add a test for this in https://github.com/pytorch/test-infra/blob/main/.github/workflows/test-setup-nvidia.yml to confirm that this works as expected. |
|
@claude Is there any backward compatibility issue with this change? We need this to work not only on newer CUDA 13.2 but older CUDA too |
|
Claude finished @huydhn's task in 43s —— View job Backward compatibility analysisShort answer: No — this is safe for older CUDA images, and is effectively a no-op for them.
Here's the case breakdown for the
The key point for your concern: for older CUDA the preflight check already passes, so disabling it doesn't remove any working functionality — those jobs behave exactly as before. The flag only takes effect in cases where the check would have blocked the container, which is precisely the new-minor-version scenario we want to unblock. The only real trade-off (already noted in the PR description) is the last row: a genuine major-version mismatch will no longer fail fast at container init — it'll surface later as a CUDA runtime error instead. That's a worse error message in an already-broken configuration, not a regression for any currently-working CUDA version.
This addresses @huydhn's earlier request to confirm it works for older CUDA too — and his suggestion to add a test in |
|
I don't know why but Vercel is not happy, but please add a test to update the PR and I can try again |
|
Hi @Gasoonjia this will have rather big effect: These reusable workflows are consumed org-wide (pytorch/pytorch,
|
atalman
left a comment
There was a problem hiding this comment.
See the comment about testing
What
Append
-e NVIDIA_DISABLE_REQUIRE=1toGPU_FLAGin thesetup-nvidiaaction.Why
GPU jobs that pull a container for a newer CUDA minor version fail at container init with
exit 125before any work runs:The
nvidia-container-cliprestart hook strict-compares the image'sNVIDIA_REQUIRE_CUDA(e.g.cuda>=13.2) against the host driver's advertised max CUDA. The fleet driver pinned in this action is580.65.06(R580 / CUDA 13.0), so anycuda13.1/cuda13.2image is rejected.This is a false negative: CUDA minor-version compatibility guarantees that a container built with a newer minor toolkit runs on an older driver of the same major version (e.g. a
cuda13.2image on an R580/CUDA-13.0 driver). pytorch/pytorch already relies on exactly this — it runs CUDA 13.2 GPU tests on the580.82.07(CUDA 13.0) driver — it just doesn't hit this gate because its CI images don't carry the strictNVIDIA_REQUIRE_CUDAlabel that thealmalinux-builderimages do.Scope / blast radius
GPU_FLAGis only set for NVIDIA GPU jobs, so this affects GPU CI only. Trade-off: a genuine major-version mismatch (e.g. acuda14image on a CUDA-13 driver) will no longer fail fast at init — it'll surface later as a runtime error instead.Alternative considered: bump the pinned driver to one that advertises ≥13.2. Rejected for now because the current R580 line (incl.
580.82.07) still advertises CUDA 13.0, so a bump wouldn't clear thecuda>=13.2gate, and it's a fleet-wide change.Motivation / repro
pytorch/executorch adding
13.2to itscuda.ymlbuild matrix, which consumeslinux_job_v2.yml(and thus this action's default driver +--gpus all).