Spaces:
Running on L40S
Running on L40S
File size: 13,381 Bytes
9f818c5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 | # Setup Guide
> **Skill:** `.agents/skills/cosmos3-setup/SKILL.md`
<!--TOC-->
______________________________________________________________________
**Table of Contents**
- [System Requirements](#system-requirements)
- [Recommended Base Image](#recommended-base-image)
- [Installation](#installation)
- [Quickstart: From the Recommended Base Image](#quickstart-from-the-recommended-base-image)
- [Docker Container](#docker-container)
- [Advanced](#advanced)
- [Virtual Environment](#virtual-environment)
- [CUDA Variants](#cuda-variants)
- [Environment Variables](#environment-variables)
- [Downloading Base Checkpoints](#downloading-base-checkpoints)
- [Troubleshooting](#troubleshooting)
- [PyTorch Import Issue](#pytorch-import-issue)
- [Dependency Issue](#dependency-issue)
- [Python Issue](#python-issue)
- [CUDA Issue](#cuda-issue)
______________________________________________________________________
<!--TOC-->
## System Requirements
- NVIDIA GPUs with Ampere architecture (RTX 30 Series, A100) or newer β Hopper (H100) or Blackwell (B200) recommended for full training throughput
- NVIDIA driver compatible with [CUDA version](https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html)
- [NVIDIA CUDA >=12.8](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#ubuntu)
- Linux x86-64/aarch64
- glibc >=2.35 (e.g. Ubuntu >=22.04)
- Python >=3.10
- Multi-node training additionally requires a working NCCL setup (IB/RoCE recommended) and a shared filesystem visible to all ranks for checkpoint I/O
- Free disk: ~150 GiB recommended for a first-run inference or training workflow (Hugging Face cache ~90 GiB, uv cache ~20 GiB, run outputs ~30 GiB). See [FAQ β Expected disk footprint](./faq.md#q-how-much-disk-space-do-i-need) for the breakdown and how to relocate caches.
<details><summary><b>Recommended Base Image</b></summary>
### Recommended Base Image
For CUDA 13 builds, the [NVIDIA NGC PyTorch container](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch) is the recommended starting point β it bundles PyTorch + CUDA 13 + cuDNN + NCCL tuned for NVIDIA hardware, plus Apex, TransformerEngine, and Megatron utilities that training infra users commonly need.
```dockerfile
FROM nvcr.io/nvidia/pytorch:25.09-py3
```
For CUDA 12.8 builds, pin to an earlier NGC tag (e.g. `nvcr.io/nvidia/pytorch:25.06-py3`) that still ships CUDA 12.
</details>
## Installation
If you encounter issues, see [Troubleshooting](#troubleshooting).
Clone the repository:
```bash
git clone git@github.com:NVIDIA/cosmos-framework.git
cd cosmos-framework
```
The two supported install paths are the recommended base image and the Docker container. For other paths (standalone venv, custom torch/cuda) see [Advanced](#advanced).
<details open><summary><b>Quickstart: From the Recommended Base Image</b></summary>
### Quickstart: From the Recommended Base Image
If you started from the [recommended base image](#recommended-base-image) (`nvcr.io/nvidia/pytorch:25.09-py3`), the following commands set up the full environment in one go. Run them **from the root of this repository** (i.e. inside the `Cosmos/` directory you just cloned):
```shell
apt-get update
apt-get install -y --no-install-recommends curl ffmpeg git-lfs libx11-dev tree wget
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
# CUDA 13.0 (recommended); for CUDA 12.8 use `--group=cu128-train`
uv sync --all-extras --group=cu130-train
source .venv/bin/activate && export LD_LIBRARY_PATH=
```
</details>
<details><summary><b>Docker Container</b></summary>
### Docker Container
Please make sure you have access to Docker on your machine and the [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html) is installed.
Build the container:
```bash
image_tag=$(docker build -q .)
```
Run the container:
```bash
docker run -it --runtime=nvidia --ipc=host --rm \
-v .:/workspace -v /workspace/.venv \
-v /root/.cache:/root/.cache \
-e HF_TOKEN="$HF_TOKEN" \
$image_tag
```
For multi-node training, also bind-mount your shared dataset and checkpoint directories so all ranks see the same filesystem.
Optional arguments:
- `--ipc=host`: Use host system's shared memory, since parallel torchrun consumes a large amount of shared memory. If not allowed by security policy, increase `--shm-size` ([documentation](https://docs.docker.com/engine/containers/run/#runtime-constraints-on-resources)).
- `-v /root/.cache:/root/.cache`: Mount host cache to avoid re-downloading cache entries.
If you get `docker: Error response from daemon: unknown or invalid runtime name: nvidia`, you need to [configure docker](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#configuring-docker):
```shell
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
```
See [docker/README.md](../docker/README.md) for additional images and build options.
</details>
<details><summary><b>Advanced</b></summary>
### Advanced
Use these paths only when the recommended base image or Docker container are not viable for your environment.
<details><summary><b>Virtual Environment</b></summary>
#### Virtual Environment
Install system dependencies:
```shell
sudo apt-get install -y --no-install-recommends curl ffmpeg git-lfs libx11-dev tree wget
```
Install [uv](https://docs.astral.sh/uv/getting-started/installation/):
```shell
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
```
Install the package using one of the following methods:
<details open><summary><b>UV Sync: fully reproducible environment</b></summary>
Choose the dependency group that matches your CUDA toolkit (see [CUDA Variants](#cuda-variants)):
```shell
# CUDA 13.0 (recommended)
uv sync --all-extras --group=cu130-train
# Or, for CUDA 12.8:
# uv sync --all-extras --group=cu128-train
source .venv/bin/activate && export LD_LIBRARY_PATH=
```
</details>
<details><summary><b>UV Pip: virtual environment</b></summary>
```shell
# Create virtual environment (skip if using an existing environment)
uv venv --clear && source .venv/bin/activate && export LD_LIBRARY_PATH=
uv pip install -r pyproject.toml --all-extras --group=cu130-train
uv pip install -e .
```
</details>
<details><summary><b>UV Pip: system environment</b></summary>
```shell
uv pip install --system --break-system-packages -r pyproject.toml --all-extras --group=cu130-train
```
</details>
<details><summary><b>Custom torch/cuda versions</b></summary>
```shell
cuda_name=cu130
torch_name=torch210
# 1. Create and activate the virtual environment
uv venv --clear && source .venv/bin/activate
# 2. Install the desired torch/cuda versions
uv pip install "torch==2.10.0" "torchvision" --torch-backend=$cuda_name
# 3. Install the package with desired extras
uv pip install -r pyproject.toml --all-extras --group=cu130-train
# 4. Install one of the following attention backends:
# * Blackwell
uv pip install "natten==0.21.6.dev6+$cuda_name.$torch_name" -f https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0/natten
# * Hopper
uv pip install "flash-attn-3-nv==1.0.3+$cuda_name.$torch_name" -f https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0/flash-attn-3-nv
# * Ada/Ampere
uv pip install "flash-attn==2.7.4.post1+$cuda_name.$torch_name" -f https://nvidia-cosmos.github.io/cosmos-dependencies/v1.5.0/flash-attn
```
If there is no attention backend wheel for your torch/cuda versions, you can build one using [cosmos-dependencies](https://github.com/nvidia-cosmos/cosmos-dependencies).
</details>
Optional package extras:
- `train`: Training infrastructure (FSDP, parallelism, checkpointing, datasets)
- `eval`: Evaluation harnesses for trained checkpoints
#### CUDA Variants
This repository is **training-focused**, so the `*-train` dependency groups are the supported install path. Inference-only groups exist for evaluating trained checkpoints in-tree but are not required for training.
| CUDA Version | Training (recommended) | Notes |
| --------------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| **CUDA 13.0 (recommended)** | `--group=cu130-train` | [NVIDIA Driver](https://docs.nvidia.com/cuda/archive/13.0.0/cuda-toolkit-release-notes/index.html#cuda-toolkit-major-component-versions) |
| CUDA 12.8 | `--group=cu128-train` | [NVIDIA Driver](https://docs.nvidia.com/cuda/archive/12.8.0/cuda-toolkit-release-notes/index.html#cuda-toolkit-major-component-versions) |
</details>
</details>
## Environment Variables
Export the following before downloading checkpoints or launching training. See [environment_variables.md](environment_variables.md) for the full reference.
| Variable | Purpose |
| ------------------------ | ------------------------------------------------------------------------------------------------------ |
| `HF_TOKEN` | Hugging Face access token for gated model/dataset downloads. Alternative to `uvx hf auth login`. |
| `HF_HOME` | Cache directory for Hugging Face models and datasets. Recommend β₯ 1 TB free. |
| `IMAGINAIRE_OUTPUT_ROOT` | Output root for training DCP checkpoints and logs. Recommend β₯ 1 TB free. |
| `UV_CACHE_DIR` | Cache directory for `uv`-managed dependencies. |
| `LD_LIBRARY_PATH=` | Clear (set to empty) after sourcing the venv to avoid host library bleed-through into PyTorch imports. |
## Downloading Base Checkpoints
Training in this repo typically starts from a pretrained base checkpoint that you fine-tune or post-train. The recommended source is the Hugging Face Hub.
1. Get a [Hugging Face Access Token](https://huggingface.co/settings/tokens) with `Read` permission.
2. Authenticate using **either** mechanism (they are equivalent β pick one, do not set both with different tokens):
- **`HF_TOKEN` environment variable** β preferred for Docker and non-interactive shells. Export it once and any `huggingface_hub` call (CLI or library) picks it up.
- **`uvx hf auth login`** β preferred for local interactive use. Writes the token to `~/.cache/huggingface/token`, persisted across sessions (and across Docker runs if you bind-mount `/root/.cache`).
3. Accept the license for any gated model you intend to use (e.g. the [NVIDIA Open Model License Agreement](https://huggingface.co/nvidia/Cosmos-Guardrail1) where applicable).
4. Test access:
```shell
uvx hf@latest download --repo-type model nvidia/Cosmos-Guardrail1 \
--revision d6d4bfa899a71454a700907664f3e88f503950cf --include "README.md"
```
If you encounter issues:
1. Check that you don't have conflicting [environment variables](https://huggingface.co/docs/huggingface_hub/en/package_reference/environment_variables) β e.g. an `HF_TOKEN` set to a different token than the one cached by `hf auth login`: `printenv | grep HF_`.
2. Check that your [token](https://huggingface.co/settings/tokens) has sufficient permissions.
Checkpoints are downloaded on demand during training and evaluation. To change the cache location, set [`HF_HOME`](https://huggingface.co/docs/huggingface_hub/en/package_reference/environment_variables#hfhome). See [training.md](training.md) for [DCP conversion](training.md#step-2--prepare-checkpoint) and [Hugging Face safetensors export](training.md#export-checkpoint-to-hugging-face-safetensors).
## Troubleshooting
### PyTorch Import Issue
Errors:
- `ImportError: cannot import name '_functionalization' from 'torch._C'`
Clear the library path in your current shell:
```shell
export LD_LIBRARY_PATH=
```
This applies to the current session only. To persist, add the line to your `Dockerfile` or `~/.bashrc`.
If this doesn't fix the issue, try [reinstalling venv](#dependency-issue).
### Dependency Issue
Errors:
- `ModuleNotFoundError: No module named <module_name>`
Reinstall venv:
```shell
uv sync --all-extras --group=cu130-train --reinstall
source .venv/bin/activate && export LD_LIBRARY_PATH=
```
If this doesn't fix the issue, try [reinstalling uv](#python-issue).
### Python Issue
Errors:
- `fatal error: Python.h: No such file or directory`
Reinstall uv and venv:
```shell
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python install --reinstall
rm -rf .venv
uv sync --all-extras --group=cu130-train --reinstall
source .venv/bin/activate && export LD_LIBRARY_PATH=
```
### CUDA Issue
- `OSError: <lib_name>: cannot open shared object file: No such file or directory`
Ensure you have [CUDA installed](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/#ubuntu). The major version must match between the system and virtual environment CUDA versions.
```shell
sudo apt-get install -y --no-install-recommends cuda-toolkit-<cuda_major_version>
```
Alternatively, use the [Docker container](#docker-container).
|