[https://nvbugs/6463987][perf] Revert NGC PyTorch 26.05 stack upgrade for GB300 GLM-5-fp4 ctx_only NVFP4 regression - #16601
Conversation
… (cuBLAS/cuDNN/NCCL) for GB300 GLM-5-fp4 ctx_only NVFP4 regression PR NVIDIA#15087 (commit 02cedf6) upgraded the NGC PyTorch base container 26.04 -> 26.05 and pinned cuBLAS 13.4.0.1 -> 13.4.1.2, cuDNN 9.21.0.82 -> 9.22.0.52, NCCL 2.29.7 -> 2.30.4. On the GB300 ctx_only-gb300_glm-5-fp4_1k1k perf-sanity workload this triggers a ~32% output_token_throughput regression (4.07 -> 2.75 tok/s on oci-aga GB300, 3-rep same-node medians, CV 1.8%). The regression is still present on origin/main HEAD (3fe4ceb, post-merge 2844) measured at 2.58 tok/s (list [2.58, 2.56, 2.63], CV 1.3%) via auto_perf_stabilize's 3-rep reproduce on a clean unpatched wheel. The bug_profile module ranking pins the loss to steady-state prefill GEMMs on the ctx_only NVFP4 workload: cuBLAS 13.4.1.2's NVFP4 heuristic (primary) plus NCCL 2.30 attention-DP allgather changes (tertiary). Startup got FASTER (7m10s -> 5m50s) between good and bad commits which rules out JIT/warmup and pins the loss to steady-state. This diff is a minimal revert of the version pins from PR NVIDIA#15087. No TensorRT-LLM source is touched. Verified on oci-aga GB300 in the auto-perf-fix workflow: 3-rep list [4.15, 4.23, 4.16] median 4.16 tok/s -- clears the (good+bad)/2 threshold 3.41 tok/s by +22% and recovers +61% over current ToT (2.58 tok/s). Changes (infra only, three files): * docker/common/install_tensorrt.sh: cuBLAS 13.4.1.2 -> 13.4.0.1, cuDNN 9.22.0.52 -> 9.21.0.82, NCCL 2.30.4 -> 2.29.7. Aligns comment URLs with the 26.04 release notes. * jenkins/current_image_tags.properties: pins container image tags back to the 26.04 base (202607100544-16206) for x86, sbsa, and both rockylinux variants. * requirements.txt: torch upper bound 2.13.0a0 -> 2.12.0a0, nvidia-nccl-cu13 upper bound 2.30.4 -> 2.29.7. Comment URLs aligned with 26.04. Signed-off-by: Chenfei Zhang <chenfeiz@nvidia.com>
📝 WalkthroughWalkthroughUpdated CUDA dependency pins, PyTorch package constraints, release-note references, and five LLM Docker image tags to align with the selected PyTorch and CUDA 13.2 releases. ChangesCUDA and PyTorch release alignment
Estimated code review effort: 1 (Trivial) | ~5 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@jenkins/current_image_tags.properties`:
- Around line 16-20: Add the repository-standard NVIDIA copyright header to the
modified current_image_tags.properties file, including the current year 2026,
while preserving all existing image variable definitions unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 8522fa0e-aa5b-491b-a2c5-0d1c50eaa123
📒 Files selected for processing (3)
docker/common/install_tensorrt.shjenkins/current_image_tags.propertiesrequirements.txt
| LLM_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:pytorch-26.04-py3-x86_64-ubuntu24.04-trt10.16.1.11-skip-tritondevel-202607100544-16206 | ||
| LLM_SBSA_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:pytorch-26.04-py3-aarch64-ubuntu24.04-trt10.16.1.11-skip-tritondevel-202607100544-16206 | ||
| LLM_ROCKYLINUX8_PY310_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:cuda-13.2.1-devel-rocky8-x86_64-rocky8-py310-trt10.16.1.11-skip-tritondevel-202607100544-16206 | ||
| LLM_ROCKYLINUX8_PY312_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:cuda-13.2.1-devel-rocky8-x86_64-rocky8-py312-trt10.16.1.11-skip-tritondevel-202607100544-16206 | ||
| LLM_SBSA_WHEEL_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:cuda-13.2.1-devel-ubuntu24.04-sbsa-ubuntu24.04-py312-trt10.16.1.11-skip-tritondevel-202607100544-16206 |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Add or update the NVIDIA copyright header for this modified file.
The supplied file has no visible NVIDIA copyright header or current-year notice. Add the repository-standard header and update it for 2026.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@jenkins/current_image_tags.properties` around lines 16 - 20, Add the
repository-standard NVIDIA copyright header to the modified
current_image_tags.properties file, including the current year 2026, while
preserving all existing image variable definitions unchanged.
Source: Coding guidelines
| CUDNN_VER="9.22.0.52-1" | ||
| NCCL_VER="2.30.4-1+cuda13.2" | ||
| CUBLAS_VER="13.4.1.2-1" | ||
| CUDNN_VER="9.21.0.82-1" |
There was a problem hiding this comment.
@chenfeiz0326 We need to catch up with the latest NGC PyTorch base image for several reasons, especially because we'll soon need a newer base image to support upcoming hardware. The current approach doesn't scale well if it requires us to remain on an older base image.
If cuBLAS is the main blocker, could we pin cuBLAS to a known-good version while continuing to upgrade the NGC PyTorch base image?
There was a problem hiding this comment.
We should also file a cuBLAS issue so the underlying problem can be properly investigated and fixed. Pinning cuBLAS may work as a temporary mitigation, but it isn't a sustainable long-term solution, especially since upcoming hardware may require a newer cuBLAS version.
| LLM_ROCKYLINUX8_PY312_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:cuda-13.2.1-devel-rocky8-x86_64-rocky8-py312-trt10.16.1.11-skip-tritondevel-202607151440-16194 | ||
| LLM_SBSA_WHEEL_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:cuda-13.2.1-devel-ubuntu24.04-sbsa-ubuntu24.04-py312-trt10.16.1.11-skip-tritondevel-202607151440-16194 | ||
| LLM_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:pytorch-26.04-py3-x86_64-ubuntu24.04-trt10.16.1.11-skip-tritondevel-202607100544-16206 | ||
| LLM_SBSA_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:pytorch-26.04-py3-aarch64-ubuntu24.04-trt10.16.1.11-skip-tritondevel-202607100544-16206 |
There was a problem hiding this comment.
| LLM_SBSA_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:pytorch-26.04-py3-aarch64-ubuntu24.04-trt10.16.1.11-skip-tritondevel-202607100544-16206 | |
| LLM_SBSA_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:pytorch-26.04-py3-sbsa-ubuntu24.04-trt10.16.1.11-skip-tritondevel-202607100544-16206 |
Let's use sbsa going forward.
|
Superseded by #16623 which applies the reviewer's recommended surgical approach: pin cuBLAS 13.4.0.1 in Closing this PR. |
…GB300 NVFP4 GEMM heuristic regression cuBLAS 13.4.1.2 (introduced by PR NVIDIA#15087 in the 26.05 stack upgrade) picks a slower NVFP4 GEMM plan on GB300 for the GLM-5 dense-attention prefill shapes, driving output_token_throughput -32% (4.07 -> 2.75) and per-request TTFT +42% (247 ms -> 352 ms) on aggr_upload-ctx_only-gb300_glm-5-fp4_1k1k_con1_ctx1_dep2_gen1_tep4_eplb0_mtp3_ccb-NIXL. This is a surgical alternative to NVIDIA#16601, which fully reverted the 26.05 -> 26.04 stack (container tag + cuBLAS + cuDNN + NCCL + torch upper bound in a single blob). Per reviewer feedback, we prefer to pin cuBLAS specifically while keeping the newer NGC base image, so downstream fixes in cuDNN 9.22, NCCL 2.30, and torch 2.13a0 are retained. Only docker/common/install_tensorrt.sh changes: CUBLAS_VER="13.4.1.2-1" -> "13.4.0.1-1" The header/lib symlink guards added in NVIDIA#15087 (CUBLAS_HDR_DIR / CUBLAS_LIB_DIR checks) are already conditional (if [ -d ... ]) so they no-op cleanly when the older cuBLAS is installed. No other code paths change. Signed-off-by: Chenfei Zhang <chenfeiz@nvidia.com>
Description
Fixes a ~32% output-token-throughput regression on GB300 for
ctx_only-gb300_glm-5-fp4_1k1k_con1_ctx1_dep2_gen1_tep4_eplb0_mtp3_ccb-NIXLby reverting the version pins from PR #15087 (NGC PyTorch 26.04 → 26.05
container upgrade).
02cedf6e4e, [TRTLLMINF-127][infra] Upgrade dependencies for NGC PyTorch 26.05 stack)ctx_only-gb300_glm-5-fp4_1k1k_con1_ctx1_dep2_gen1_tep4_eplb0_mtp3_ccb-NIXLMeasured perf (3-rep same-node medians, oci-aga GB300)
1662a87746bf21b13fe4ceb9(post-merge 2844)Fix clears the (good+bad)/2 = 3.41 threshold by +22% and recovers
+61% over current ToT.
Root cause
PR #15087 bumped cuBLAS 13.4.0.1 → 13.4.1.2, cuDNN 9.21 → 9.22, and
NCCL 2.29.7 → 2.30.4 in a single container-image swap. The
bug_profilemodule ranking (from the automated triage) points atcuBLAS 13.4.1.2's NVFP4 heuristic selecting a slower kernel path on
GB300 for this shape (primary); NCCL 2.30's attention-DP allgather
changes contribute a tertiary effect. Startup time actually got FASTER
between good and bad (7m10s → 5m50s), which rules out JIT/warmup and
pins the loss to steady-state prefill GEMMs.
Changes (infra only, three files, no source touched)
docker/common/install_tensorrt.sh: cuBLAS 13.4.1.2 → 13.4.0.1,cuDNN 9.22.0.52 → 9.21.0.82, NCCL 2.30.4 → 2.29.7. Comment URLs back
to the 26.04 release notes.
jenkins/current_image_tags.properties: container image tags backto the 26.04 base (
202607100544-16206) for x86, sbsa, and bothrockylinux variants.
requirements.txt: torch upper bound 2.13.0a0 → 2.12.0a0,nvidia-nccl-cu13upper bound 2.30.4 → 2.29.7.Test plan
L0_PostMergeGB300 GLM-5-fp4 perf-sanity should recoverto good-commit levels.
unaffected or improved (the container revert is symmetric).
26.04 base image tags.
🤖 Generated with Repair Bot
Summary by CodeRabbit
Compatibility
Build and Deployment