diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 69e0c00e..97639b23 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -11,18 +11,11 @@ bash setup_conda_env.sh conda activate nvsubquadratic ``` -## Pre-commit - -Run locally before pushing: - -```bash -pre-commit install -pre-commit run --all-files -``` - ## Test plan - +- [ ] `pre-commit run --all-files` passes (`pre-commit install` if not yet set up). +- [ ] Existing tests pass (`pytest tests/`). +- [ ] New tests added, or explain why not needed: ## Documentation checklist diff --git a/README.md b/README.md index 4ae37ceb..1ba6d20a 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,20 @@ nvSubquadratic provides a **high-level PyTorch interface** that depends on the * ## Installation +### PyPI + +```bash +pip install nvsubquadratic +``` + +Requires Python 3.11+ and a CUDA 12-compatible GPU. Optional extras: + +```bash +pip install "nvsubquadratic[quack]" # fused RMSNorm kernel (Hopper/Blackwell only) +pip install "nvsubquadratic[dali]" # NVIDIA DALI for ImageNet/Well data pipelines (~400 MB) +pip install "nvsubquadratic[all]" # all extras +``` + ### Package Manager This project uses **pip** with `pyproject.toml` for dependency management. A `Pipfile.lock` is maintained for nSpect security scanning compliance. diff --git a/docs/getting_started.md b/docs/getting_started.md index 1c82bb3d..2bc51596 100644 --- a/docs/getting_started.md +++ b/docs/getting_started.md @@ -16,7 +16,16 @@ pure-PyTorch path automatically. ## Install -The recommended developer setup is conda: +For users who just want to use the library: + +```bash +pip install nvsubquadratic # core library +pip install "nvsubquadratic[dali]" # + NVIDIA DALI for ImageNet/Well examples +pip install "nvsubquadratic[quack]" # + fused RMSNorm kernel (Hopper/Blackwell only) +pip install "nvsubquadratic[all]" # all extras +``` + +For contributors or developer setup, the recommended path is conda: ```bash bash setup_conda_env.sh diff --git a/docs/index.rst b/docs/index.rst index c0026864..29237985 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -81,13 +81,19 @@ package tour. Installation ------------ -The package is installed from source: +.. code-block:: bash + + pip install nvsubquadratic + +Optional extras: .. code-block:: bash - pip install -e . + pip install "nvsubquadratic[quack]" # fused RMSNorm kernel (Hopper/Blackwell only) + pip install "nvsubquadratic[dali]" # NVIDIA DALI for ImageNet/Well data pipelines + pip install "nvsubquadratic[all]" # all extras -To enable the optional fused RMSNorm kernel on Hopper / Blackwell GPUs: +For development (editable install from source): .. code-block:: bash diff --git a/pyproject.toml b/pyproject.toml index befa3cb6..52113d99 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,7 +58,6 @@ dependencies = [ "huggingface_hub", "subquadratic-ops-torch-cu12>=0.2.0", "timm==1.0.24", - "nvidia-dali-cuda120==1.53.0", ] [project.urls] @@ -71,6 +70,10 @@ Issues = "https://github.com/NVIDIA-BioNeMo/nvSubquadratic/issues" # Optional: use QuACK fused RMSNorm kernel (Hopper/Blackwell only: H100, B200, B300). # On Ampere and older GPUs the kernel is not available; RMSNorm uses PyTorch fallback. quack = ["quack-kernels"] +# Optional: NVIDIA DALI data-loading pipeline, used by ImageNet and The Well examples. +# Not required for the core library; ~400 MB download. +dali = ["nvidia-dali-cuda120==1.53.0"] +all = ["quack-kernels", "nvidia-dali-cuda120==1.53.0"] [tool.setuptools.dynamic] version = { file = "VERSION" }