-
Notifications
You must be signed in to change notification settings - Fork 2k
[None][fix] fix ci #6814
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[None][fix] fix ci #6814
Conversation
…ia-ml stubs (NVIDIA#6188)" This reverts commit 9a8195e.
📝 WalkthroughWalkthroughUpdates add a CUDA stubs rpath to nanobind/pybind CMake targets, split OpenCV install into two Dockerfile layers, and significantly refactor scripts/build_wheel.py: revamped venv handling, NVIDIA PyTorch container compatibility checks, and inlined cross-platform stub generation, removing several helper functions and adjusting type hints and control flow. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant build_wheel.py
participant Venv
participant CMake
participant StubGen
User->>build_wheel.py: main(args)
build_wheel.py->>Venv: setup_venv(project_dir, requirements, no_venv)
Venv-->>build_wheel.py: venv_python, venv_conan
build_wheel.py->>build_wheel.py: Check NVIDIA_PYTORCH_VERSION compatibility
build_wheel.py->>CMake: Configure/Build (extra_cmake_vars, jobs)
CMake-->>build_wheel.py: Build artifacts
alt Windows
build_wheel.py->>StubGen: Run pybind11-stubgen via temp script (if pybind)
else Linux
build_wheel.py->>build_wheel.py: Prepare LD_LIBRARY_PATH, libnvidia-ml symlink
build_wheel.py->>StubGen: Run nanobind.stubgen or pybind11_stubgen (+ extras)
end
StubGen-->>build_wheel.py: Stubs generated
build_wheel.py-->>User: Wheel + stubs
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
Status, Documentation and Community
|
|
/bot run |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
♻️ Duplicate comments (1)
cpp/tensorrt_llm/nanobind/CMakeLists.txt (1)
55-55: Same architecture portability issue as in pybind CMakeLists.txtThis has the same hardcoded
x86_64-linuxpath issue that will break on ARM64/aarch64 systems.
🧹 Nitpick comments (4)
docker/Dockerfile.multi (1)
74-75: Splitting OpenCV installation creates unnecessary Docker layerSplitting the OpenCV installation into two separate
RUNcommands creates an additional Docker layer without clear benefit. The uninstall and reinstall could be combined into a single command to reduce layer count and image size.Combine into a single RUN command:
-RUN pip3 uninstall -y opencv && rm -rf /usr/local/lib/python3*/dist-packages/cv2/ -RUN pip3 install opencv-python-headless --force-reinstall --no-deps --no-cache-dir +RUN pip3 uninstall -y opencv && \ + rm -rf /usr/local/lib/python3*/dist-packages/cv2/ && \ + pip3 install opencv-python-headless --force-reinstall --no-deps --no-cache-dirscripts/build_wheel.py (3)
123-123: Missing return type annotation for setup_venv functionThe function signature was modified to remove the return type annotation, but it still returns a tuple
(venv_python, venv_conan). The return type should be preserved for better type safety.Add the return type annotation:
-def setup_venv(project_dir: Path, requirements_file: Path, no_venv: bool): +def setup_venv(project_dir: Path, requirements_file: Path, no_venv: bool) -> tuple[Path, Path]:
289-289: Using mutable default argument for List parameterUsing
list()as a default argument creates a new list instance for each function call, which is correct but unconventional. The standard Python idiom is to useNoneas default and initialize inside the function to avoid potential confusion.Use the standard Python idiom:
- extra_cmake_vars: List[str] = list(), + extra_cmake_vars: List[str] = None,Then at the beginning of the function:
if extra_cmake_vars is None: extra_cmake_vars = []
742-742: Line exceeds maximum length limitLine 742 exceeds the 120 character limit. Consider breaking it up for better readability.
- new_library_path = "/usr/local/cuda/compat:/usr/local/cuda/compat/lib:/usr/local/cuda/compat/lib.real" + new_library_path = ( + "/usr/local/cuda/compat:" + "/usr/local/cuda/compat/lib:" + "/usr/local/cuda/compat/lib.real" + )
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
cpp/tensorrt_llm/nanobind/CMakeLists.txt(1 hunks)cpp/tensorrt_llm/pybind/CMakeLists.txt(1 hunks)docker/Dockerfile.multi(1 hunks)scripts/build_wheel.py(5 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.py
📄 CodeRabbit Inference Engine (CODING_GUIDELINES.md)
**/*.py: Python code should conform to Python 3.8+.
Indent Python code with 4 spaces. Do not use tabs.
Always maintain the namespace when importing in Python, even if only one class or function from a module is used.
Python filenames should use snake_case (e.g., some_file.py).
Python classes should use PascalCase (e.g., class SomeClass).
Python functions and methods should use snake_case (e.g., def my_awesome_function():).
Python local variables should use snake_case. Prefix k for variable names that start with a number (e.g., k_99th_percentile).
Python global variables should use upper snake_case and prefix G (e.g., G_MY_GLOBAL).
Python constants should use upper snake_case (e.g., MY_CONSTANT).
Avoid shadowing variables declared in an outer scope in Python.
Initialize all externally visible members of a Python class in the constructor.
For interfaces that may be used outside a Python file, prefer docstrings over comments.
Comments in Python should be reserved for code within a function, or interfaces that are local to a file.
Use Google style docstrings for Python classes and functions, which can be parsed by Sphinx.
Attributes and variables in Python can be documented inline; attribute docstrings will be rendered under the class docstring.
Avoid using reflection in Python when functionality can be easily achieved without it.
When using try-except blocks in Python, limit the except to the smallest set of errors possible.
When using try-except blocks to handle multiple possible variable types in Python, keep the body of the try as small as possible, using the else block to implement the logic.
Files:
scripts/build_wheel.py
**/*.{cpp,h,hpp,cc,cxx,cu,py}
📄 CodeRabbit Inference Engine (CODING_GUIDELINES.md)
All TensorRT-LLM Open Source Software code should contain an NVIDIA copyright header that includes the current year. This includes .cpp, .h, .cu, .py, and any other source files which are compiled or interpreted.
Files:
scripts/build_wheel.py
🪛 Ruff (0.12.2)
scripts/build_wheel.py
742-742: Line too long (122 > 120)
(E501)
752-752: Line too long (126 > 120)
(E501)
🔇 Additional comments (3)
scripts/build_wheel.py (3)
364-364: Good fix for Windows multi-device flag handlingUsing
extend()instead of concatenation is the correct approach for list operations.
746-763: Robust handling of libnvidia-ml.so detection and symlink creationThe logic correctly handles the case where only the unversioned
libnvidia-ml.soexists (common in build containers) by creating a symlink tolibnvidia-ml.so.1. This prevents import errors at runtime.
160-191: Well-implemented NVIDIA PyTorch container compatibility checksThe addition of comprehensive checks for NVIDIA PyTorch container compatibility is excellent. It properly:
- Detects the container environment via
NVIDIA_PYTORCH_VERSION- Validates PyTorch installation and version compatibility
- Provides clear error messages and warnings for common issues
- Prevents subtle compatibility problems between NVIDIA and PyPI PyTorch distributions
|
PR_Github #14919 [ run ] triggered by Bot |
|
/bot skip --comment "cpp single GPU tests are good, skip multi-GPU tests to unblock CI" |
|
PR_Github #14938 [ ] completed with state |
This reverts commit 8845e0f.
|
PR_Github #14919 [ run ] completed with state |
This reverts commit 8845e0f.
This reverts commit 8845e0f. Signed-off-by: Martin Marciniszyn Mehringer <11665257+MartinMarciniszyn@users.noreply.github.com>
This reverts commit 9a8195e.
Summary by CodeRabbit
New Features
Chores
Refactor
Description
Test Coverage
GitHub Bot Help
/bot [-h] ['run', 'kill', 'skip', 'reuse-pipeline'] ...Provide a user friendly way for developers to interact with a Jenkins server.
Run
/bot [-h|--help]to print this help message.See details below for each supported subcommand.
Details
run [--reuse-test (optional)pipeline-id --disable-fail-fast --skip-test --stage-list "A10-PyTorch-1, xxx" --gpu-type "A30, H100_PCIe" --test-backend "pytorch, cpp" --add-multi-gpu-test --only-multi-gpu-test --disable-multi-gpu-test --post-merge --extra-stage "H100_PCIe-TensorRT-Post-Merge-1, xxx" --detailed-log --debug(experimental)]Launch build/test pipelines. All previously running jobs will be killed.
--reuse-test (optional)pipeline-id(OPTIONAL) : Allow the new pipeline to reuse build artifacts and skip successful test stages from a specified pipeline or the last pipeline if no pipeline-id is indicated. If the Git commit ID has changed, this option will be always ignored. The DEFAULT behavior of the bot is to reuse build artifacts and successful test results from the last pipeline.--disable-reuse-test(OPTIONAL) : Explicitly prevent the pipeline from reusing build artifacts and skipping successful test stages from a previous pipeline. Ensure that all builds and tests are run regardless of previous successes.--disable-fail-fast(OPTIONAL) : Disable fail fast on build/tests/infra failures.--skip-test(OPTIONAL) : Skip all test stages, but still run build stages, package stages and sanity check stages. Note: Does NOT update GitHub check status.--stage-list "A10-PyTorch-1, xxx"(OPTIONAL) : Only run the specified test stages. Examples: "A10-PyTorch-1, xxx". Note: Does NOT update GitHub check status.--gpu-type "A30, H100_PCIe"(OPTIONAL) : Only run the test stages on the specified GPU types. Examples: "A30, H100_PCIe". Note: Does NOT update GitHub check status.--test-backend "pytorch, cpp"(OPTIONAL) : Skip test stages which don't match the specified backends. Only support [pytorch, cpp, tensorrt, triton]. Examples: "pytorch, cpp" (does not run test stages with tensorrt or triton backend). Note: Does NOT update GitHub pipeline status.--only-multi-gpu-test(OPTIONAL) : Only run the multi-GPU tests. Note: Does NOT update GitHub check status.--disable-multi-gpu-test(OPTIONAL) : Disable the multi-GPU tests. Note: Does NOT update GitHub check status.--add-multi-gpu-test(OPTIONAL) : Force run the multi-GPU tests in addition to running L0 pre-merge pipeline.--post-merge(OPTIONAL) : Run the L0 post-merge pipeline instead of the ordinary L0 pre-merge pipeline.--extra-stage "H100_PCIe-TensorRT-Post-Merge-1, xxx"(OPTIONAL) : Run the ordinary L0 pre-merge pipeline and specified test stages. Examples: --extra-stage "H100_PCIe-TensorRT-Post-Merge-1, xxx".--detailed-log(OPTIONAL) : Enable flushing out all logs to the Jenkins console. This will significantly increase the log volume and may slow down the job.--debug(OPTIONAL) : Experimental feature. Enable access to the CI container for debugging purpose. Note: Specify exactly one stage in thestage-listparameter to access the appropriate container environment. Note: Does NOT update GitHub check status.For guidance on mapping tests to stage names, see
docs/source/reference/ci-overview.mdand the
scripts/test_to_stage_mapping.pyhelper.kill
killKill all running builds associated with pull request.
skip
skip --comment COMMENTSkip testing for latest commit on pull request.
--comment "Reason for skipping build/test"is required. IMPORTANT NOTE: This is dangerous since lack of user care and validation can cause top of tree to break.reuse-pipeline
reuse-pipelineReuse a previous pipeline to validate current commit. This action will also kill all currently running builds associated with the pull request. IMPORTANT NOTE: This is dangerous since lack of user care and validation can cause top of tree to break.