Configuration#

This page lists launch-time environment variables. Start with the model-selection variables and keep automatic defaults unless the workload requires an override. Refer to Deployment for complete Docker commands.

Essential Configuration#

Authentication and Cache#

Name

Default

Use

NGC_API_KEY

Empty

Download required model and runtime artifacts when they are not already cached

NIM_CACHE_PATH

/opt/nim/.cache

Set the writable in-container artifact cache

Choose the Runtime and Model#

Name

Default

Use

NIM_MODEL_TYPE

generator

Select generator or reasoner

NIM_MODEL_VARIANT

nano preference

Select nano or super for either runtime; Reasoner also accepts edge, and Generator also accepts edge-droid, nano-droid, super-t2i, super-t2i-4step, super-i2v, and super-i2v-4step

NIM_PRECISION

Generator: FP8 preference; Reasoner: GPU-derived preference

Optionally pin a precision available in the image; refer to Precision Selection

NIM_PERF_PROFILE

latency

Generator only: choose latency or throughput

Reasoner rejects NIM_PERF_PROFILE, including profile= in NIM_TAGS_SELECTOR, with a startup error. Edge Reasoner has BF16 and FP8 profiles. Edge-DROID and Nano-DROID have BF16 profiles only. There is no general-purpose Edge Generator. The NIM chooses the best compatible profile for these settings and the visible GPUs. A normal deployment does not need a profile ID.

GPU Selection#

The GPUs exposed by Docker --gpus are the visible GPUs that automatic selection considers. List host GPUs with their indexes and UUIDs:

nvidia-smi -L

Expose specific GPUs instead of --gpus all, for example --gpus '"device=0,1"' or --gpus '"device=GPU-<uuid>"'. Expose a GPU count listed in the Generator or Reasoner profiles. Extra GPUs sit idle. Expose GPUs of a single model, because mixed GPUs are not supported.

Do not pass -e CUDA_VISIBLE_DEVICES: the NIM sets it for its worker processes, so a passed value can place work outside the intended GPUs.

Bring Your Own Checkpoint#

Name

Default

Use

NIM_MODEL_PATH

Empty

Absolute local directory or hf://owner/repository[:revision] for either runtime

NIM_DISABLE_MODEL_DOWNLOAD

false

Disable profile download; set automatically for a Reasoner checkpoint override, incompatible with Reasoner hf://, and rejected for Generator

HF_TOKEN

Empty

Authenticate to a private Hugging Face repository named by NIM_MODEL_PATH

To override the DFlash draft, refer to NIM_DFLASH_MODEL_PATH under Speculative Decoding. Refer to Bring Your Own Checkpoint for layouts, mounts, and compatibility checks.

Server and Logging#

Name

Default

Use

NIM_HTTP_API_PORT

8000

Set the container HTTP port

NIM_LOG_LEVEL

INFO

Set the service logging threshold

NIM_LOGGING_JSONL

false

Emit JSON-line logs

Advanced Profile Controls#

Use these only when automatic model selection is not sufficient:

Name

Default

Use

NIM_TAGS_SELECTOR

Empty

Filter by comma-separated exact manifest tags as key=value pairs; refer to the valid keys below

NIM_TAGS_SELECTOR lowercases its values and accepts only the following keys:

Key

Meaning

Runtime

model_type, model_variant, precision

Runtime, model, and precision

Both

profile

latency or throughput

Generator

offload, text_guard_offload, video_guard_offload

Offload modes

Generator

n_gpus

GPUs used by one NIM; the product of nim_dp, nim_gp, nim_up, and nim_tp

Both

nim_dp

Data-parallel model replicas; throughput profiles use n_gpus

Generator

nim_gp

CFG (guidance) parallel factor; latency profiles on 2 or more GPUs use 2

Generator

nim_up

Ulysses sequence-parallel factor; latency profiles use n_gpus / 2

Generator

nim_tp

Tensor-parallel factor; Super BF16 also has a 2-GPU nim_tp=2 layout

Reasoner

Selectors filter the image’s existing profiles and cannot create a layout the manifest lacks. A selection that matches no profile fails at startup. Without them, the Generator uses as many visible GPUs as a compatible profile supports (1, 2, 4, or 8). There is no one-GPU throughput profile, and model or layer offload is available only on one GPU. To keep the Generator on fewer GPUs, expose fewer GPUs with --gpus.

On an integrated GPU with unified host/device memory (NVIDIA DGX Spark/GB10, Jetson AGX Thor), the NIM treats 70% of the shared pool as GPU memory for profile floors and as the default Reasoner NIM_GPU_MEMORY_UTILIZATION.

A selector variable, such as NIM_MODEL_VARIANT or NIM_PRECISION, that conflicts with NIM_TAGS_SELECTOR is a startup error. Use the model_variant tag to filter by model. Exact tags and profile IDs are tied to an image release. For the offload, memory-headroom, and profile-pin variables, refer to Advanced Settings.

Generator Configuration#

Input and Output#

Name

Default

Use

NIM_ALLOW_URL_INPUT

true

Allow HTTP(S) image, video, and Transfer inputs; set false to require encoded input

NIM_TRITON_REQUEST_TIMEOUT

30 minutes (1800000000 microseconds)

Set the queue-plus-execution timeout in microseconds

Client HTTP timeouts do not change this backend ceiling. Refer to Long-Running Requests.

Startup and Execution#

Name

Default

Use

NIM_ENABLE_WARMUP

false

Run synthetic inference before readiness at the 256_1_1, 480_16_9, and 720_16_9 resolutions; Edge-DROID and Nano-DROID use only 480_16_9, and 4-step variants use their fixed step count

Guardrails#

Name

Default

Use

NIM_ENABLE_TEXT_GUARDRAILS

true

Enable input-prompt policy checks

NIM_ENABLE_VIDEO_GUARDRAILS

true

Enable output image/video face and visual guardrails

NIM_ENABLE_SIGLIP_GUARDRAILS

true

Enable the output-frame safety classifier

NIM_QWEN3GUARD_MAX_INPUT_TOKENS

8192

Set the text guardrail’s maximum input tokens; minimum 512

The selected profile owns guardrail residency. Choose it with the text_guard_offload and video_guard_offload selector keys under Advanced Profile Controls. Refer to Guardrails for what each layer does.

Diffusion Cache, Attention, and VAE Decode#

These performance defaults are validated startup settings, not request fields. If you notice a quality issue in a specific workload, try NIM_CACHE_BACKEND=none and NIM_VAE_FAST_PATH=lossless.

The defaults work as follows:

  • SeaCache reuses transformer results across denoising steps. It is on for every Generator variant except edge-droid. Set NIM_CACHE_BACKEND to sea_cache or none to change that. NIM_CACHE_CONFIG overrides individual fields as JSON, for example -e NIM_CACHE_CONFIG='{"sea_threshold": 0.20, "sea_max_consecutive_cached": 1}'. The defaults are sea_threshold=0.25, sea_residual_order=1, sea_max_consecutive_cached=2, and sea_power_exp=3.0. Setting sea_max_consecutive_cached=0 means no limit. Startup logs the effective settings.

  • SageAttention 2.2 is the default on compute capability 8.0 through 9.x unless the profile uses sequence parallelism. NVIDIA Blackwell GPUs and sequence-parallel profiles use automatic selection. DIFFUSION_ATTENTION_BACKEND overrides the default.

  • Variational autoencoder (VAE) decode defaults to NIM_VAE_FAST_PATH=channels_last, the fastest path. The lossless value keeps the reference decoder output, and off uses the reference decoder. On a replica spanning several GPUs, decode is sharded (NIM_ENABLE_VAE_PARALLELISM). Disabling it can raise per-GPU memory. A larger NIM_VAE_SPATIAL_TEMPORAL_CHUNK_SIZE raises peak memory and can change rounding.

Prompt Upsampling#

Prompt upsampling is optional and applies only to Generator text-to-image (T2I), text-to-video (T2V), and image-to-video (I2V) requests. It sends the request to an operator-provided OpenAI-compatible endpoint.

Name

Default

Use

NIM_ENABLE_PROMPT_UPSAMPLING

false

Enable prompt upsampling

NIM_PROMPT_UPSAMPLING_ENDPOINT_URL

Empty

Set the OpenAI-compatible endpoint base or Chat Completions route

NIM_PROMPT_UPSAMPLING_MODEL

Empty

Set the external model name

NIM_PROMPT_UPSAMPLING_API_KEY

Empty

Set the external Bearer credential

NIM_PROMPT_UPSAMPLING_TIMEOUT_S

120

Set the external call timeout in seconds

NIM_PROMPT_UPSAMPLING_TEMPLATE_STYLE, NIM_PROMPT_UPSAMPLING_MAX_TOKENS, NIM_PROMPT_UPSAMPLING_TEMPERATURE, NIM_PROMPT_UPSAMPLING_TOP_P, NIM_PROMPT_UPSAMPLING_TOP_K, NIM_PROMPT_UPSAMPLING_EXTRA_BODY

external_api, 8192, omitted, omitted, omitted, empty object

Select external_api or reasoner templates; set the output-token limit, sampling temperature, nucleus sampling, and top-k (when the provider accepts it); merge additional JSON into the external request

Endpoint, model, and key are required when the feature is enabled. A request-time external failure logs a warning and continues with the original prompt.

Reasoner Configuration#

Change controls one at a time and measure the effect.

Optimization Presets#

Name

Default

Use

NIM_OPTIMIZATION_PRESET

Unset

Reasoner only: apply the experimental TTFT or TPOT starting configuration (case-insensitive); Generator rejects it

The presets configure these variables:

Preset

NIM_USE_DFLASH

NIM_MAX_NUM_BATCHED_TOKENS

NIM_DISABLE_CHUNKED_MM_INPUT

TTFT

0

32768 with at least 70 GiB of GPU memory; otherwise 16384

Unchanged (true)

TPOT

1

4096

0

On profiles with tensor parallelism above 1, both presets also set NIM_MM_ENCODER_TP_MODE=data, which replicates the vision encoder and splits media across TP ranks. An explicitly set variable wins over the preset. On Edge, set NIM_USE_DFLASH=0 with TPOT.

Speculative Decoding#

Name

Default

Use

NIM_USE_DFLASH

true for Nano/Super Reasoner; false for Edge

Use the bundled Nano or Super DFlash draft; set false to run the target model without speculative decoding

NIM_DFLASH_MODEL_PATH

Empty

Nano or Super Reasoner: use an independent absolute local DFlash directory containing config.json and model.safetensors; refer to Local Directory for the mount

DFlash is on by default for Nano and Super Reasoner and does not change the request API. Set NIM_USE_DFLASH=0 to disable it (Generator rejects an explicit enable). Edge Reasoner does not support DFlash in this version. It defaults to NIM_USE_DFLASH=0 and rejects 1. For Edge, set NIM_STREAMING_SPEC_METHOD=none when streaming is enabled. NIM_DFLASH_MODEL_PATH accepts only an absolute local path, not hf://, and NIM_DFLASH_CONFIG requires DFlash enabled and cannot set the method or model keys.

Context and Scheduling#

Name

Default

Use

NIM_MAX_MODEL_LEN

-1 (auto)

Let the runtime choose a context length, bounded by the checkpoint limit of 262,144 tokens

NIM_GPU_MEMORY_UTILIZATION

Discrete GPU: 0.93, capped to leave NIM_GPU_MEMORY_HEADROOM_GIB free; unified memory: 0.70

Set the Reasoner GPU-memory target in (0,1]; startup warns when it exceeds current free memory but does not reduce it. On DGX Spark/GB10 and Jetson AGX Thor, lower it only from host measurements; refer to Set the Reasoner Memory Share

Caching and Multimodal Processing#

Name

Default

Use

NIM_MAX_IMAGES_PER_PROMPT

Unset

Optionally set a nonnegative image limit; when unset, do not override the runtime limit

NIM_MAX_VIDEOS_PER_PROMPT

Unset

Optionally set a nonnegative video limit; when unset, do not override the runtime limit

Prefer request-level media_io_kwargs over the operator-wide NIM_MEDIA_IO_KWARGS. Unchunked multimodal input, the default, can raise peak GPU memory. Set NIM_DISABLE_CHUNKED_MM_INPUT=0 only after measuring memory, latency, and throughput.

Streaming Video Sessions#

Set NIM_MODEL_TYPE=reasoner and NIM_ENABLE_STREAMING=true to enable the WebSocket and REST session APIs in standalone NIM. In Dynamo mode, only REST sessions are supported. Changing these settings requires restarting the service with the new environment. Ordinary Chat Completions token streaming uses the request field stream=true and does not require this enable flag.

Name

Default

Use

NIM_ENABLE_STREAMING

false

Enable stateful video-frame sessions and apply the required engine settings

NIM_STREAMING_MAX_SESSIONS

2

Maximum concurrent sessions shared by WebSocket and REST; integer, minimum 1

NIM_STREAMING_MAX_VIDEO_SEGMENTS

8

Default retained frame window per session; integer, minimum 1

NIM_STREAMING_IDLE_TIMEOUT_S

900

Idle timeout for WebSocket sessions, in seconds; must be greater than 0

NIM_STREAMING_REST_IDLE_TIMEOUT_S

120

Idle timeout for REST sessions, in seconds; must be greater than 0

Streaming forces the multimodal processor cache off and disables asynchronous scheduling. It raises the engine’s image budget to at least 2 × NIM_STREAMING_MAX_SESSIONS × NIM_STREAMING_MAX_VIDEO_SEGMENTS, or 32 image slots with the defaults. This floor can override a lower NIM_MAX_IMAGES_PER_PROMPT. Increasing either streaming limit increases encoder-cache memory requirements. Reduce the limits if startup lacks memory, and validate representative requests before increasing concurrency. These engine changes also affect ordinary requests on the same container.

Accepted frames refresh session activity. A frame in flight is not reaped. WebSocket disconnects release the session, while REST clients should explicitly delete it rather than rely on the shorter idle timeout. Increase the relevant timeout for feeds with long pauses. Per-session retention and sampling belong in the creation request. Retention overrides remain subject to shared capacity and model-context admission checks.

Advanced Streaming Controls#

Leave these at their defaults unless diagnosing or tuning a measured workload:

Name

Default

Use

NIM_STREAMING_SPEC_METHOD

dflash

Select dflash, GPU n-gram speculation (ngram), or none; while streaming is enabled, it replaces NIM_USE_DFLASH

NIM_STREAMING_SPEC_NUM_TOKENS

3

Number of proposed n-gram tokens; an integer of at least 1, and invalid values fail startup when streaming is enabled

NIM_STREAMING_FORCE_V1_RUNNER

Unset

Set 1 to force the vLLM V1 model runner; otherwise leave runner selection to vLLM

The speculation controls apply only when streaming is enabled. For Edge, which has no DFlash, set NIM_STREAMING_SPEC_METHOD=none explicitly. While streaming is enabled, NIM_USE_DFLASH is ignored, so set NIM_STREAMING_SPEC_METHOD=none to turn speculation off. Both V1 and V2 model runners support the streaming path, so pinning V1 is not required for normal operation.

Inspect GET /v1/streaming/config for the served model and default retention and sampling policy. Standalone NIM and the Dynamo streaming adapter expose this route. Refer to Streaming for session requests and error handling, and Dynamo REST Streaming for the client’s shared-frontend checks, which require no worker URLs or metadata.

API Behavior#

Name

Default

Use

NIM_DISABLE_LOG_REQUESTS

true

Keep Reasoner request bodies out of logs

NIM_DISABLE_RESPONSES_ROUTE

false

Remove Responses routes when set to true

Dynamo Configuration#

Run NIM as a Dynamo Worker#

Use the Cosmos3 NIM image (nvcr.io/nim/nvidia/cosmos3:2.1.0) and start /opt/nim/start_server.sh with NIM_MODEL_TYPE=reasoner and NIM_DYNAMO_WORKER=true. Generator profiles do not support Dynamo worker mode. The NIM selects and loads the model, launches a Dynamo vLLM worker and a private frontend, and exposes the NIM HTTP API. Keep the usual model-selection, cache, and authentication settings from Essential Configuration. The shared frontend is a separate service. It does not need worker enablement or a GPU.

Name

Default

Use

NIM_DYNAMO_WORKER

false

Launch the Reasoner as a Dynamo worker instead of the standalone Reasoner runtime

NIM_DISCOVERY_BACKEND

file

Set worker and private-frontend discovery; use kubernetes for the supplied Kubernetes deployments. Also accepts the legacy JSON argument object shown below

DYN_NAMESPACE_PREFIX

From the nvidia.com/dynamo-namespace pod label in the supplied YAML

Let the private frontend discover operator-suffixed worker namespaces; takes precedence over the exact DYN_NAMESPACE filter

NIM_DYNAMO_ASYNC_SCHEDULING

true

Control worker asynchronous scheduling; streaming forces this off

NIM_DYNAMO_ENABLE_MULTIMODAL

true

Enable Dynamo multimodal handling for image/video requests

NIM_DYNAMO_ARGS

Empty object

Advanced Dynamo worker CLI overrides as a JSON object; use underscore keys such as discovery_backend, namespace, and endpoint

NIM_DYNAMO_PROXY_PORT

8080

Private frontend’s loopback HTTP port; integer from 1 through 65535, different from NIM_HTTP_API_PORT (default 8000)

NIM_DYNAMO_PROXY_REQUEST_TIMEOUT_SECS

120 in the NIM image

NIM proxy request timeout in seconds; persistent session operations use the separate streaming timeout below

NIM_DYNAMO_PROXY_FORWARDED_REQUEST_HEADERS_LIST

Empty additions

Comma- or whitespace-separated extra request headers to forward through the NIM proxy; built-in tracing, affinity, worker-routing, and tenant headers remain enabled

Argument precedence is defaults, then NIM_DISCOVERY_BACKEND (including its legacy JSON fields), then the individual scheduling/multimodal variables, then NIM_DYNAMO_ARGS. Streaming engine constraints are applied last and cannot be overridden by these arguments. The supplied YAML files use the legacy JSON form:

# Regular Dynamo
NIM_DISCOVERY_BACKEND={"async_scheduling":true,"discovery_backend":"kubernetes","enable_multimodal":true}
# Dynamo with REST streaming
NIM_DISCOVERY_BACKEND={"async_scheduling":false,"discovery_backend":"kubernetes","enable_multimodal":true}

Dynamo Streaming#

Set NIM_ENABLE_STREAMING=1 alongside NIM_DYNAMO_WORKER=true on workers. Use the same NIM image for the shared frontend, running /opt/nim/.venv/bin/python -m streaming.dynamo.frontend from /opt/nim. The stock python3 -m dynamo.frontend command does not serve video-session routes. The NIM worker selects its private streaming frontend automatically.

Name

Default

Use

NIM_DYNAMO_STREAMING_ENDPOINT

Derived <namespace>.<component>.streaming; standalone adapter fallback dynamo.backend.streaming

Set the same explicit RPC endpoint on the shared frontend and workers. The YAML uses cosmos3-reasoner.backend.streaming; use a distinct endpoint for each model pool

NIM_DYNAMO_STREAMING_REQUEST_TIMEOUT_S

180

Bound each REST session create, frame, or delete operation, including upload and inference, in seconds; positive finite number. Set on the shared frontend and workers

DYN_HTTP_HOST, DYN_HTTP_PORT

0.0.0.0, 8000

Streaming adapter listener defaults; explicit --http-host and --http-port arguments take precedence

DYN_TLS_CERT_PATH, DYN_TLS_KEY_PATH

Unset

Optional certificate and key paths for TLS on the streaming adapter; set both together, or use --tls-cert-path and --tls-key-path

The adapter’s --streaming-endpoint flag overrides its environment endpoint. Keep it aligned with the workers. Use aggregated workers with a local encoder. Disaggregated prefill/decode and remote encoders are unsupported. The streaming capacity, retention, idle-timeout, and engine controls also apply. Streaming forces synchronous scheduling and disables the multimodal processor cache. The request timeout above is separate from NIM_STREAMING_REST_IDLE_TIMEOUT_S, which expires inactive sessions. REST session ownership does not depend on the Chat Completions affinity TTL.

WebSocket (/v1/streaming/ws) is unsupported in Dynamo mode, on both shared frontend and worker NIM endpoints. The streaming adapter and enabled worker NIM proxy expose GET /v1/streaming/config and the REST session routes. The stock dynamo.frontend launcher does not attach these streaming routes. Refer to Dynamo With Streaming for the manifest and REST request examples.

Advanced Settings#

Leave these at their defaults unless you have measured a need.

Name

Runtime

Default

Use

NIM_OFFLOAD_MODE

Generator

Automatic

Request none, model, or layer when the model provides it

NIM_GPU_MEMORY_HEADROOM_GIB

Reasoner

4

Free binary GiB reserved per discrete GPU for selection and sizing; lowering it raises OOM risk

NIM_MODEL_PROFILE

Both

Empty

Pin an exact profile ID from the current image

NIM_VIDEO_SAVE_QUALITY

Generator

7

VP9 output quality 1–9; affects encoding, not diffusion

NIM_ENABLE_TORCH_COMPILE

Generator

true

Enable the compilation path

NIM_CACHE_BACKEND

Generator

Edge-DROID: none; other variants: sea_cache

Diffusion cache: sea_cache, cache_dit, or none; refer to Diffusion Cache, Attention, and VAE Decode

NIM_CACHE_CONFIG

Generator

Empty object

Override individual diffusion-cache settings as JSON; rejected when the backend is none

DIFFUSION_ATTENTION_BACKEND

Generator

SAGE_ATTN on compute capability 8.0 through 9.x without sequence parallelism; otherwise automatic

Override the diffusion attention backend

NIM_VAE_FAST_PATH

Generator

channels_last

VAE decode path: channels_last, lossless, or off

NIM_ENABLE_VAE_PARALLELISM

Generator

true when one replica spans more than one GPU

Shard VAE decode spatially across the replica’s GPUs

NIM_VAE_SPATIAL_TEMPORAL_CHUNK_SIZE

Generator

Automatic

Positive number of latent frames per sharded VAE decode chunk

NIM_LINEAR_BACKEND

Both

FP8 on DGX Spark or Jetson AGX Thor: torch; other quantized Generator profiles: cutlass; otherwise unset

auto, cutlass, flashinfer_cutlass, flashinfer_cutedsl, or torch for quantized linear layers; an incompatible backend fails at model load

NIM_TRITON_LOG_VERBOSE

Generator

0

Backend log verbosity for diagnosis

NIM_MAX_SEQUENCE_LENGTH

Generator

5120

Startup prompt-token sequence length

NIM_ALLOW_UNSAFE_TRANSFER

Generator

false

Bypass Transfer’s VRAM admission check for an approved diagnostic; can fail with OOM

NIM_DFLASH_BF16_KV_CACHE

Reasoner

false on NVIDIA Hopper; true otherwise

BF16 DFlash KV cache; can improve acceptance but uses more memory

NIM_DFLASH_CONFIG

Reasoner

Empty object

Extra vLLM DFlash speculative-config fields as JSON

NIM_MAX_NUM_BATCHED_TOKENS

Reasoner

16384 with unchunked multimodal input (24300 on Edge); otherwise 8192

Scheduler token budget; unchunked multimodal input enforces at least 16384 (24300 on Edge)

NIM_MAX_NUM_SEQS

Reasoner

256; 8 on RTX PRO 4500 Blackwell

Maximum scheduled sequences

NIM_ENABLE_KV_CACHE_REUSE

Reasoner

true

Prefix/KV-cache reuse

NIM_ENABLE_CHUNKED_PREFILL

Reasoner

true

Chunked prefill

NIM_DISABLE_CHUNKED_MM_INPUT

Reasoner

true

Require one whole multimodal item per scheduler iteration

NIM_DISABLE_MM_PREPROCESSOR_CACHE

Reasoner

false

Disable the multimodal preprocessor cache

NIM_MEDIA_IO_KWARGS

Reasoner

Video backend pynvvc

Replace the whole operator-level media I/O JSON object

NIM_MM_PROCESSOR_KWARGS

Reasoner

Unset

Operator-level multimodal processor options as a JSON object

NIM_VIDEO_PRUNING_RATE

Reasoner

0.6

Video-token pruning from 0 through 1; 0, none, null, or an empty value disable pruning

NIM_VIDEO_PRUNING_METHOD

Reasoner

vidcom2

vidcom2 or evs when pruning is enabled

NIM_GUIDED_DECODING_BACKEND

Reasoner

xgrammar

Structured-output backend

Secret Handling#

Inject NGC_API_KEY, HF_TOKEN, and NIM_PROMPT_UPSAMPLING_API_KEY as separate secrets through the deployment environment, never through source control, model-source URIs, image layers, requests, notebooks, or logs.