Prerequisites#

Prepare and verify a host before pulling or launching the Cosmos3 NIM. Per-configuration GPU, video memory (VRAM), and host RAM requirements are in the Support Matrix.

Hardware Requirements#

Requirement

Current Requirement

CPU architecture

The release image provides amd64 and arm64 variants; use the variant selected by the container runtime

GPU compute capability

Generator: BF16 >=8.0, FP8 >=8.9; Reasoner: BF16 >=8.0, FP8 >=8.9, NVFP4 >=10.0

GPU count and per-device VRAM

Refer to the Generator and Reasoner tables

Host RAM

System-memory floor per configuration, enforced by profile selection, in the Generator and Reasoner tables; treat it as a minimum for the workload

Free disk

Provision for the image, selected model artifacts, materialization, and outputs; no single workload-independent floor is documented

Container shared memory

The Docker reference launch allocates 16 GiB; validate the requirement for the selected media workload and concurrency

Do not add together memory from multiple GPUs to satisfy a per-device floor. If the deployment must serve Transfer, provision each GPU against the Transfer Minimum VRAM/Device column in the Generator Profiles, not the Generation Minimum VRAM/Device value.

Use homogeneous GPUs. Reasoner requires the same compute capability on every GPU. Each GPU must also have enough free memory at startup, so stop unrelated GPU workloads before launch.

Lower-VRAM offload profiles keep model weights in system memory and carry their own system-memory floors. Refer to the Generator Profiles. A container memory limit counts before host physical memory.

Inspect Unified-Memory Capacity and Current State#

NVIDIA DGX Spark/GB10 and Jetson AGX Thor share one physical memory pool between CPU and GPU. Summarize the host memory state with this read-only command:

python3 - <<'PY'
keys = ("MemTotal", "MemFree", "MemAvailable", "Cached", "SReclaimable", "Shmem")
values = {}
with open("/proc/meminfo", encoding="ascii") as meminfo:
    for line in meminfo:
        name, value, *_ = line.replace(":", "").split()
        if name in keys:
            values[name] = int(value) * 1024
for name in keys:
    print(f"{name}: {values.get(name, 0) / 1024**3:.2f} GiB")
reclaimable = max(
    values.get("Cached", 0)
    + values.get("SReclaimable", 0)
    - values.get("Shmem", 0),
    0,
)
print(f"Approximate reclaimable cache: {reclaimable / 1024**3:.2f} GiB")
PY

MemFree is immediately unused memory. MemAvailable already includes reclaimable cache. Do not add the cache value to it, and do not assume every cached byte can be reclaimed.

A memory-related preflight failure has two materially different causes:

  • A floor above 70% of the device-reported total exceeds total capacity. Stopping processes or reclaiming cache cannot make that profile fit.

  • A floor that fits the effective total but fails the current-memory check fits the hardware but not the current memory state. Inspect MemFree, MemAvailable, and the cache components, stop identified competing workloads, and rerun preflight.

On these systems the Reasoner defaults to a 0.70 NIM_GPU_MEMORY_UTILIZATION share. If you lower it, pass the same value to every Reasoner launch. Preflight always uses the 70% share. Clearing page cache or deleting the model cache is not part of normal deployment. Refer to Unified-Memory Diagnostics.

Software Requirements#

Software

Required Version

Linux and glibc

Use a Linux host supported by the selected NVIDIA driver and container stack

NVIDIA driver

Recommended: NVIDIA driver 595.58.03 or newer. The image is built on CUDA 13.0 user-space libraries; confirm the host with the verification steps and a container start

Docker Engine

Use a maintained Docker Engine release supported by NVIDIA Container Toolkit

NVIDIA Container Toolkit

Use a maintained release configured for the host driver and Docker Engine; on discrete GPUs, expose the NVML utility capability used to measure free memory

This release was validated with the following host configuration (tested versions, not minimums):

Component

Validated Version

OS, architecture, and GPU

Ubuntu 24.04.5 LTS on aarch64 with NVIDIA GH200 480GB (96 GB GPU memory)

NVIDIA driver

595.58.03

Docker Engine

27.0.3

NVIDIA Container Toolkit

1.20.1

The image provides the CUDA user-space libraries. Do not install a host CUDA toolkit solely for the NIM. Do not narrow the image’s NVIDIA_DRIVER_CAPABILITIES=compute,utility,video. Reasoner needs the video capability for NVDEC decoding.

Client Tooling#

Run the API and Python examples from the NIM host or another Linux system that can reach the service:

Tool

Minimum Version

Used For

curl

7.61

Health checks and direct HTTP API requests

uv

0.11.0

Creating the pinned Python environment and running examples

python3

3.10

Standard-library JSON formatting and inline decoding examples

ffmpeg and ffplay

6.1

Optional playback and conversion of generated VP9-in-MP4 video

On Ubuntu 24.04, install the distribution-provided client tools, then install uv with its official standalone installer:

sudo apt-get update
sudo apt-get install -y curl python3 ffmpeg
curl -LsSf https://astral.sh/uv/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"

Verify that every client tool meets the table:

curl --version | head -n 1
uv --version
python3 --version
ffmpeg -version | head -n 1
ffplay -version | head -n 1

For another supported client distribution, use its package manager for curl, Python 3, and FFmpeg. Use the same official installer for uv.

Initialize the Example Environment#

After checking out the repository, create the pinned client environment once:

cd .agents/skills/cookbooks/cosmos3/nim
uv sync --locked

This creates the project .venv from pyproject.toml and uv.lock. Rerun it after either file changes. uv run python examples/... reuses it.

Network and NGC Access#

For a normal cold start, the host must reach:

  • The nvcr.io registry, to pull the container

  • The NVIDIA NGC model storage, to download and materialize profile artifacts

You also need an NGC personal API key with NGC Catalog access. For an evaluation, create a dedicated key with only the required services and a short expiration. Read it into the deployment shell without placing it in shell history:

read -rsp "Enter your NGC API key: " NGC_API_KEY
export NGC_API_KEY
echo

The variable is NGC_API_KEY, not NGC_TOKEN. Do not save the key in source control. Continue with Authenticate to NGC.

An air-gapped host needs a pre-populated cache. Refer to Offline and Air-Gapped Deployment.

Verify the Host#

Check the operating system, CPU architecture, glibc, driver, Docker, and Container Toolkit before pulling the NIM:

uname -m
ldd --version | head -n 1
nvidia-smi
nvidia-smi --query-gpu=index,name,compute_cap,memory.total,memory.free --format=csv
docker version
nvidia-ctk --version
docker info | sed -n '/Runtimes/,$p' | head

Then verify that Docker can expose the intended GPUs:

docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

The GPU query reports memory in MiB. Divide by 1,024 to compare with the binary-GiB floors in the Support Matrix. The Docker check verifies GPU container access, not Cosmos3 profile compatibility.

For installation and verification failures, refer to Troubleshooting.