feat: add CUDA runtime installation helper - #657
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. 🗂️ Base branches to auto review (1)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Greptile SummaryThis PR completes the CUDA 13 stack by adding
Confidence Score: 5/5
Important Files Changed
|
4127e30 to
7b0ff2e
Compare
552467d to
dceb950
Compare
7b0ff2e to
8629058
Compare
dceb950 to
b53e37e
Compare
| @@ -0,0 +1,62 @@ | |||
| #!/usr/bin/env bash | |||
There was a problem hiding this comment.
hehe bash test scripts
8629058 to
54c2fc2
Compare
029bd8f to
773a0af
Compare
…#655) ## Summary this is one of three stacked prs (NVIDIA-NeMo#656, NVIDIA-NeMo#657) for our overdue multiple-versions-of-cuda support. This one is the core mechanism for generating the deps all from one place and handles instructions and docs for new installation methods. - Define CPU and CUDA runtime extras, conflicts, package sources, and indexes in cuda_deps.toml. - Generate the corresponding marked pyproject.toml sections from that single source of truth. ## Validation ``` - uv run --offline --script tools/gen_cuda_deps.py cuda_deps.toml --pyproject pyproject.toml --check - uv lock --check ``` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary * **New Features** * Introduced a tool-managed workflow for CPU/CUDA runtime extras via `cuda_deps.toml`, with automatic regeneration of dependency lists and package source/index metadata. * Added a `--check`/lock-check flow to prevent CUDA metadata drift. * **Documentation** * Updated contributor, agent, README, Docker, and CI guidance to regenerate from `cuda_deps.toml` and keep the lockfile in sync. * **Quality & Tests** * Added end-to-end coverage for generation, splicing, idempotency, and error cases. * **Chores / Style** * Added `dprint`-based TOML formatting and expanded CI formatting checks. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com> Co-authored-by: Claude <noreply@anthropic.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Lands the coverage the previous PR's docs had prematurely claimed: - Add a cu130 matrix row to container-build.yml so release images are actually built and published for both CUDA variants. - Fix the cu130 GPU e2e lane, which silently re-bootstrapped cu129 via .mise/tasks/tests.toml's hardcoded bootstrap-nss call before running, so it tested cu129 twice instead of exercising cu130 at all. The e2e tasks now bootstrap $NSS_GPU_CUDA_EXTRA (default cu129, unchanged for local/other callers), and gpu-tests.yml sets it from the matrix. - Flip docs, workflow diagram, and skip messages back to accurately describe cu130 as enabled now that both are true. 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
61b0ee9 to
8e96e5c
Compare
f2935f1 to
1a850f2
Compare
Signed-off-by: Aaron Gonzales <aagonzales@nvidia.com>
| notebooks. Useful for evaluating Safe Synthesizer without a local NVIDIA GPU. The | ||
| instance bills continuously and cannot be paused -- delete it when you are finished. | ||
|
|
||
| From a source checkout, use the installation helper to select a supported |
There was a problem hiding this comment.
suggestion: We don't want the getting started user guide to assume you have a source checkout. Shouldn't we be replacing the uv pip install examples with using a command like curl https://raw.githubusercontent.com/NVIDIA-NeMo/Safe-Synthesizer/refs/heads/main/install.sh | bash or such?
| # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| from __future__ import annotations |
There was a problem hiding this comment.
nit: Why is this being removed?
| https://flashinfer.ai/whl/ | ||
| https://pypi.nvidia.com | ||
| ) | ||
| # <<< END GENERATED CUDA INSTALLER INDEXES - DO NOT EDIT >>> |
There was a problem hiding this comment.
suggestion: This makes the installer script versioned along with pyproject.toml and the wheel. To successfully install any given version of NSS, you need to get the install_sh.sh script from the tag associated with that version. Can we make this more generic, so it at least doesn't cause a breaking change every time we update vllm? I think @zywind has a setup in brev that pulls the indexes from the wheel? Though there's probably still complications adjusting those for cu129 or 130.
Or if we do need to keep the install script associated with the particular pyproject.toml/uv.lock that exists. Then we sort of can't have the PACKAGE_VERSION env var at all, as other package versions won't generally work. And I'm not sure how this looks for a user installing from the pypi (who doesn't have the repo checked out). Do we create separate install_nss_0_1_11.sh, install_nss_0_1_12.sh, and so on scripts in the repo?
| Use `DRY_RUN=1` to print the command before installing. The helper requires | ||
| [uv](https://docs.astral.sh/uv/); use the manual commands below only when you | ||
| need to customize the installation. | ||
|
|
There was a problem hiding this comment.
suggestion: We'll need some guidance about when to use the install_sh.sh script versus the uv pip install or pip install command I think. And same as the user guide documentation, this README.md is used for pypi so we don't want the installation instructions to assume the user has cloned the repo.
Summary
cuda_deps.tomland preserve dry-run behavior without filesystem side effects.Validation
mise run test:installermise run format-checkmise run lock-checkwheel-installcontainer targetFinal PR in the CUDA 13 stack; depends on #656.