[None][test] Fix nvshmem path in verl_config.yml for DLFW upgrade - #14563
[None][test] Fix nvshmem path in verl_config.yml for DLFW upgrade#14563Superjomn wants to merge 51 commits into
Conversation
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
… 2.11.0a0 Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
…ompiler error Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: EmmaQiaoCh <qqiao@nvidia.com>
Signed-off-by: Emma Qiao <qqiao@nvidia.com>
After the DLFW upgrade, the nvshmem pip package is no longer installed at the system Python dist-packages path. Point NVSHMEM_DIR to the system CUDA nvshmem installation instead, which has the correct symbol versions that libtorch_nvshmem.so expects. Also update the symlink step to the correct path with an idempotency guard. The old NVSHMEM_DIR caused libtorch_nvshmem.so to load a mismatched libnvshmem_host.so missing the `nvshmem_selected_device_transport` symbol, crashing torch import in verl tests. Signed-off-by: Chunwei Yi <chunweiy@nvidia.com> Signed-off-by: Superjomn <328693+Superjomn@users.noreply.github.com>
📝 WalkthroughWalkthroughThis PR updates TensorRT-LLM to use CUDA 13.2.1, PyTorch 2.11.0, and TensorRT 10.16.1, with corresponding Docker, build system, and CI infrastructure changes. It includes C++ struct initializer fixes for CUDA API compatibility, CMake toolchain adjustments for Clang/GCC compilation, a switch to PyTorch's ChangesVersion upgrades and build infrastructure
CUDA virtual memory API initialization fixes
CMake build compatibility for Clang/GCC CUDA compilation
PyTorch compilation backend migration
CI, testing, and infrastructure updates
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
⚔️ Resolve merge conflicts
Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (1)
tests/integration/defs/verl/verl_config.yml (1)
8-43: QA list update looks unnecessary for this change scope.This is an infra/path correction in existing verl setup, not a new/expanded integration test definition, so no
tests/integration/test_lists/qa/*addition is needed in this PR.As per coding guidelines, "If the PR only touches unittest/ or narrow unit scope, say explicitly whether QA list updates are unnecessary or optional."
🤖 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 `@tests/integration/defs/verl/verl_config.yml` around lines 8 - 43, The change only fixes infra/path settings in verl_config.yml (the install_commands and env_vars blocks) and does not expand integration test scope, so explicitly mark QA list updates as unnecessary: update the PR description and/or commit message to state that no addition to tests/integration/test_lists/qa is required, and if any QA list files were accidentally added, remove them; reference the config file name "verl_config.yml" and the keys "install_commands" and "env_vars" when making this note.
🤖 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`:
- Line 20: LLM_SBSA_WHEEL_DOCKER_IMAGE is pinned to the older cuda-13.1.0 /
trt10.15.1.29 tag causing mixed-toolchain CI; update the value of
LLM_SBSA_WHEEL_DOCKER_IMAGE to the same newer CUDA/TRT tag used by adjacent
image entries (match their cuda and trt versions) so all SBSA wheel images use a
consistent toolchain, then run a quick CI smoke to verify no mismatched
dependencies.
In `@jenkins/L0_Test.groovy`:
- Line 1: The Jenkinsfile currently pins the shared library to a personal branch
reference `bloom-jenkins-shared-lib@emma/update_nsc_login_node`; change this to
a stable ref such as `bloom-jenkins-shared-lib@main` or an immutable release
tag/commit (or commit SHA) to avoid brittleness. Update the library declaration
line that contains `bloom-jenkins-shared-lib@emma/update_nsc_login_node` to use
`@main` or a release/tag/commit and ensure any consuming code still works with
that stable version.
- Around line 4383-4388: Update the misleading "CUDA 13.2" wording to match the
actual wheel channel (+cu130) being installed: change the echo string "######
Extra PyTorch CUDA 13.2 install Start ######" and the preceding comment that
mentions "Extra PyTorch CUDA 13.2 install" to reference CUDA 13.0 (or "CUDA 13.0
/ cu130") so it matches the pip install of torch==2.11.0+cu130; ensure the echo
and comment surrounding the trtllm_utils.llmExecStepWithRetry(...) call are
updated accordingly.
In `@scripts/rename_docker_images.py`:
- Around line 77-80: In get_current_commit(), avoid PATH hijacking by resolving
the git executable with shutil.which (e.g., git_path = shutil.which("git")) and
use that absolute path as the first element passed to _sp.run (replace ["git",
...] with [git_path, ...]); if shutil.which returns None, raise a clear error
(or fallback to "git" with a logged warning) so you don't inadvertently call an
unexpected binary. Ensure the unique symbols referenced are get_current_commit,
shutil.which, and the existing _sp.run invocation.
---
Nitpick comments:
In `@tests/integration/defs/verl/verl_config.yml`:
- Around line 8-43: The change only fixes infra/path settings in verl_config.yml
(the install_commands and env_vars blocks) and does not expand integration test
scope, so explicitly mark QA list updates as unnecessary: update the PR
description and/or commit message to state that no addition to
tests/integration/test_lists/qa is required, and if any QA list files were
accidentally added, remove them; reference the config file name
"verl_config.yml" and the keys "install_commands" and "env_vars" when making
this note.
🪄 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: f43e98bc-712b-4d6a-8b12-f8f6de7e8345
📒 Files selected for processing (23)
README.mdconstraints.txtcpp/include/tensorrt_llm/runtime/virtualMemory.hcpp/tensorrt_llm/deep_ep/CMakeLists.txtcpp/tensorrt_llm/flash_mla/CMakeLists.txtcpp/tensorrt_llm/runtime/virtualMemory.cppcpp/tests/unit_tests/common/cudaDriverWrapperTest.cppcpp/tests/unit_tests/runtime/virtualMemoryTest.cppdocker/Dockerfile.multidocker/Makefiledocker/common/install_cuda_toolkit.shdocker/common/install_pytorch.shdocker/common/install_tensorrt.shdocs/source/legacy/reference/support-matrix.mdjenkins/Build.groovyjenkins/L0_Test.groovyjenkins/current_image_tags.propertiesrequirements.txtscripts/rename_docker_images.pytensorrt_llm/_torch/compilation/backend.pytensorrt_llm/_torch/compilation/piecewise_optimizer.pytests/integration/defs/verl/verl_config.ymltests/integration/test_lists/waives.txt
💤 Files with no reviewable changes (1)
- constraints.txt
| 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-202605140823-12643 | ||
| 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-202605140823-12643 | ||
| 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-202605140823-12643 | ||
| LLM_SBSA_WHEEL_DOCKER_IMAGE=urm.nvidia.com/sw-tensorrt-docker/tensorrt-llm:cuda-13.1.0-devel-ubuntu24.04-sbsa-ubuntu24.04-py312-trt10.15.1.29-skip-tritondevel-202605140823-12643 |
There was a problem hiding this comment.
LLM_SBSA_WHEEL_DOCKER_IMAGE appears left on the old stack.
Line 20 still points to cuda-13.1.0 / trt10.15.1.29 while adjacent images were moved to the newer versions. If unintentional, this can cause mixed-toolchain CI behavior.
🤖 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` at line 20,
LLM_SBSA_WHEEL_DOCKER_IMAGE is pinned to the older cuda-13.1.0 / trt10.15.1.29
tag causing mixed-toolchain CI; update the value of LLM_SBSA_WHEEL_DOCKER_IMAGE
to the same newer CUDA/TRT tag used by adjacent image entries (match their cuda
and trt versions) so all SBSA wheel images use a consistent toolchain, then run
a quick CI smoke to verify no mismatched dependencies.
| @@ -1,4 +1,4 @@ | |||
| @Library(['bloom-jenkins-shared-lib@main', 'trtllm-jenkins-shared-lib@main']) _ | |||
| @Library(['bloom-jenkins-shared-lib@emma/update_nsc_login_node', 'trtllm-jenkins-shared-lib@main']) _ | |||
There was a problem hiding this comment.
Avoid pinning Jenkins shared libs to a personal feature branch.
Line 1 references bloom-jenkins-shared-lib@emma/update_nsc_login_node. This creates a brittle CI dependency (branch force-push/delete risk). Pin to @main or an immutable release tag/commit.
🤖 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/L0_Test.groovy` at line 1, The Jenkinsfile currently pins the shared
library to a personal branch reference
`bloom-jenkins-shared-lib@emma/update_nsc_login_node`; change this to a stable
ref such as `bloom-jenkins-shared-lib@main` or an immutable release tag/commit
(or commit SHA) to avoid brittleness. Update the library declaration line that
contains `bloom-jenkins-shared-lib@emma/update_nsc_login_node` to use `@main` or
a release/tag/commit and ensure any consuming code still works with that stable
version.
| // Extra PyTorch CUDA 13.2 install for all bare-metal environments (Default PyTorch is for CUDA 12.8) | ||
| if (values[6]) { | ||
| echo "###### Extra PyTorch CUDA 13.0 install Start ######" | ||
| echo "###### Extra PyTorch CUDA 13.2 install Start ######" | ||
| // Use internal mirror instead of https://download.pytorch.org/whl/cu130 for better network stability. | ||
| // PyTorch CUDA 13.0 package and torchvision package can be installed as expected. | ||
| trtllm_utils.llmExecStepWithRetry(pipeline, script: "pip3 install torch==2.10.0+cu130 torchvision==0.25.0+cu130 --extra-index-url https://urm.nvidia.com/artifactory/api/pypi/pytorch-cu128-remote/simple --extra-index-url https://download.pytorch.org/whl/cu130") | ||
| trtllm_utils.llmExecStepWithRetry(pipeline, script: "pip3 install torch==2.11.0+cu130 torchvision==0.26.0+cu130 --extra-index-url https://urm.nvidia.com/artifactory/api/pypi/pytorch-cu128-remote/simple --extra-index-url https://download.pytorch.org/whl/cu130") |
There was a problem hiding this comment.
Fix CUDA wording to match the actual wheel channel/version.
The comment says “CUDA 13.2 install”, but Line 4388 installs +cu130 wheels. Please align the wording to avoid operator confusion during incident/debug workflows.
🤖 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/L0_Test.groovy` around lines 4383 - 4388, Update the misleading "CUDA
13.2" wording to match the actual wheel channel (+cu130) being installed: change
the echo string "###### Extra PyTorch CUDA 13.2 install Start ######" and the
preceding comment that mentions "Extra PyTorch CUDA 13.2 install" to reference
CUDA 13.0 (or "CUDA 13.0 / cu130") so it matches the pip install of
torch==2.11.0+cu130; ensure the echo and comment surrounding the
trtllm_utils.llmExecStepWithRetry(...) call are updated accordingly.
| return _sp.run(["git", "rev-parse", "--short=7", "HEAD"], | ||
| check=True, | ||
| text=True, | ||
| capture_output=True).stdout.strip()[:7] |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
FILE="scripts/rename_docker_images.py"
if [ ! -f "$FILE" ]; then
echo "Missing $FILE" >&2
exit 1
fi
python3 - <<'PY'
import itertools
path="scripts/rename_docker_images.py"
with open(path,'r',encoding='utf-8') as f:
lines=f.readlines()
for i in range(1, min(len(lines), 130)+1):
if 60 <= i <= 100:
print(f"{i:4d}: {lines[i-1].rstrip()}")
PY
echo "---- context around git invocation ----"
sed -n '60,95p' scripts/rename_docker_images.py
echo "---- imports at top ----"
sed -n '1,60p' scripts/rename_docker_images.pyRepository: NVIDIA/TensorRT-LLM
Length of output: 4986
Harden git invocation in get_current_commit() against PATH hijacking.
subprocess.run(["git", ...]) still relies on PATH resolution. Resolve git to an absolute path (e.g., via shutil.which) and pass that to _sp.run.
Suggested fix
+import shutil as _sh
+
def get_current_commit() -> str:
"""Return the 7-char short SHA of the current git HEAD."""
- return _sp.run(["git", "rev-parse", "--short=7", "HEAD"],
+ git_bin = _sh.which("git")
+ if git_bin is None:
+ raise FileNotFoundError("git executable not found in PATH")
+ return _sp.run([git_bin, "rev-parse", "--short=7", "HEAD"],
check=True,
text=True,
capture_output=True).stdout.strip()[:7]🧰 Tools
🪛 Ruff (0.15.14)
[error] 77-77: Starting a process with a partial executable path
(S607)
🤖 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 `@scripts/rename_docker_images.py` around lines 77 - 80, In
get_current_commit(), avoid PATH hijacking by resolving the git executable with
shutil.which (e.g., git_path = shutil.which("git")) and use that absolute path
as the first element passed to _sp.run (replace ["git", ...] with [git_path,
...]); if shutil.which returns None, raise a clear error (or fallback to "git"
with a logged warning) so you don't inadvertently call an unexpected binary.
Ensure the unique symbols referenced are get_current_commit, shutil.which, and
the existing _sp.run invocation.
Summary
NVSHMEM_DIRfrom/usr/local/lib/python3.12/dist-packages/nvidia/nvshmemto/usr/local/cuda/targets/x86_64-linux— the system CUDA nvshmem installation thatlibtorch_nvshmem.sois built against[ -e libnvshmem_host.so ] ||) to avoid errors if the symlink already existsRoot Cause
After the DLFW upgrade, the nvshmem pip package is no longer installed at the system Python dist-packages path. The old
NVSHMEM_DIRcausedLD_LIBRARY_PATHto prepend a mismatchedlibnvshmem_host.so.3(missing thenvshmem_selected_device_transport@@NVSHMEMsymbol) ahead of the correct system library, crashing torch import with:Test plan
test_async_generatepasses locally on the upgraded DLFW container (verified 3 runs, ~95s each)🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
librosaandmsgpackas new dependencies.Bug Fixes
Chores