Skip to main content
NVIDIA
Explore
Models
Skills
Blueprints
GPUs
Docs
Help Center
Getting Started
  1. Create and verify your account to unlock full access to NVIDIA NIM APIs.
ResourcesDeveloper ForumsContact Support
FAQs
  • View All Playbooks
    View All Playbooks

    onboarding

    • Set Up Local Network Access
    • Open WebUI with Ollama

    data science

    • Single-cell RNA Sequencing
    • Portfolio Optimization
    • CUDA-X Data Science
    • Build Knowledge Graphs with txt2kg
    • Optimized JAX

    tools

    • DGX Dashboard
    • RAG Application in AI Workbench
    • Set up Tailscale on Your Spark
    • VS Code
    • Connect Three DGX Spark in a Ring Topology
    • Connect Multiple DGX Spark through a Switch

    fine tuning

    • FLUX.1 Dreambooth LoRA Fine-tuning
    • LLaMA Factory
    • Fine-tune with NeMo
    • Fine-tune with Pytorch
    • Unsloth on DGX Spark

    use case

    • Run Hermes Agent with a Local LLM
    • cuTile Kernels
    • CLI Coding Agent
    • Run NemoClaw with a Local LLM
    • 🦞 Set Up Example NemoClaw Agents 🦞
    • Live VLM WebUI
    • Install and Use Isaac Sim and Isaac Lab
    • Vibe Coding in VS Code
    • Build and Deploy a Multi-Agent Chatbot
    • Connect Two Sparks
    • NCCL for Multiple Sparks
    • Build a Video Search and Summarization (VSS) Agent
    • Spark & Reachy Photo Booth
    • Secure AI Agents with OpenShell
    • Run OpenClaw with a Local LLM

    inference

    • Generate Images and Videos with ComfyUI
    • Serve LLMs with vLLM
    • Speculative Decoding
    • Run models with llama.cpp on DGX Spark
    • Nemotron Model Family on DGX Spark
    • Serve LLMs with SGLang
    • TRT LLM for Inference
    • Quantize Models to NVFP4 with NVIDIA Model Optimizer
    • Multi-modal Inference
    • NIM on Spark
    • LM Studio on DGX Spark

    Nemotron Model Family on DGX Spark

    45 MIN

    Deploy Nemotron 3 model family (Nemotron-3-Nano or Nemotron-3-Super) on DGX Spark

    • Inference
    • Nemotron Nano
    • Nemotron Super
    Nemotron on GitHub
    OverviewOverviewRun Nemotron NanoRun Nemotron NanoRun Nemotron SuperRun Nemotron SuperTroubleshootingTroubleshooting

    Step 1
    Overview and prerequisites

    This tab serves NVIDIA Nemotron-3-Nano on a single DGX Spark with vLLM, using the upstream multi-arch image vllm/vllm-openai:v0.20.0. The server exposes an OpenAI-compatible HTTP API on port 8000. The example uses the multimodal Nemotron-3-Nano Omni weights (text, image, audio, and video), so the launch command installs the optional audio packages and enables the multimodal limits.

    DGX Spark ships a single Grace–Blackwell GB10 GPU with 128 GB of unified memory—the batch, context, and cache choices below assume that footprint.

    This tab covers the Spark-specific setup. For everything not covered here—API examples, reasoning mode, and video tuning—follow the general Nemotron instructions and the model card.

    Requirements

    • DGX Spark with GB10 and sufficient disk for weights, caches, and the container image
    • NVIDIA Container Toolkit and Docker with GPU access
    • Local Nemotron-3-Nano Omni weights on disk (point WEIGHTS at that directory in Step 3)

    Step 2
    Pull the vLLM container image

    Pull the upstream multi-arch vLLM v0.20.0 image. Docker automatically pulls the arm64 variant on Spark.

    docker pull vllm/vllm-openai:v0.20.0
    

    Step 3
    Launch the vLLM server on Spark

    Point WEIGHTS at your local Nemotron-3-Nano Omni weights directory, then start the server. The base image does not include audio packages, so the command installs them with pip install vllm[audio] before running vllm serve.

    WEIGHTS=/path/to/nemotron-3-nano-omni-weights
    
    docker run --rm -it \
      --gpus all \
      --ipc=host -p 8000:8000 \
      --shm-size=16g \
      --name vllm-nemotron-omni \
      -v "${WEIGHTS}:/model:ro" \
      --entrypoint /bin/bash \
      vllm/vllm-openai:v0.20.0 -c  \
      "pip install vllm[audio] && vllm serve /model \
      --served-model-name=nemotron_3_nano_omni \
      --max-num-seqs 8 \
      --max-model-len 131072 \
      --port 8000 \
      --trust-remote-code \
      --gpu-memory-utilization 0.8 \
      --limit-mm-per-prompt '{\"video\": 1, \"image\": 1, \"audio\": 1}' \
      --media-io-kwargs '{\"video\": {\"fps\": 2,  \"num_frames\": 256}}' \
      --allowed-local-media-path=/ \
      --enable-prefix-caching \
      --max-num-batched-tokens 32768 \
      --reasoning-parser nemotron_v3 \
      --enable-auto-tool-choice \
      --tool-call-parser qwen3_coder"
    

    Flag rationale (summary)

    FlagRole
    --served-model-name=nemotron_3_nano_omniThe model id clients pass to the API
    --max-num-seqs 8Conservative concurrency for memory headroom
    --max-model-len 131072Context window; reduce first if you hit OOM (see Step 5)
    --gpu-memory-utilization 0.8Fraction of unified memory vLLM may use
    --limit-mm-per-promptCaps multimodal inputs per request (1 each of video, image, audio)
    --media-io-kwargsVideo decode settings (2 fps, up to 256 frames)
    --allowed-local-media-path=/Lets the server read local media files by path
    --enable-prefix-cachingReuses shared prompt prefixes across requests
    --reasoning-parser nemotron_v3Parses Nemotron reasoning output
    --enable-auto-tool-choice / --tool-call-parser qwen3_coderTool calling support

    Key Spark-specific flags

    FlagPurposeSpark guidance
    --gpus allSelect GPUSpark has one GB10 GPU; all is equivalent to device=0
    --max-model-lenMax context windowStart at 131072; reduce if you hit OOM (see Step 5)

    Step 4
    Verify the server and test the API

    In another terminal, confirm the server is ready and reports the served model:

    curl -sS http://localhost:8000/v1/models | python3 -m json.tool
    

    Once the model is listed, send a chat completion. Use the served model name from Step 3:

    curl http://localhost:8000/v1/chat/completions \
      -H "Content-Type: application/json" \
      -d '{
        "model": "nemotron_3_nano_omni",
        "messages": [{"role": "user", "content": "New York is a great city because..."}],
        "max_tokens": 100
      }'
    

    For multimodal requests, reasoning-mode prompting, and video tuning, follow the general Nemotron instructions and the model card.


    Step 5
    Memory tuning on Spark

    Spark uses unified LPDDR5X memory (~128 GB shared between CPU and GPU), not separate system + VRAM pools. If you hit OOM, use these two levers, in order of impact:

    1. Lower --gpu-memory-utilization from 0.8 toward 0.70 to free memory back to the OS and re-enable weight prefetch. Cost: a smaller KV cache budget.
    2. Lower --max-model-len to reduce KV cache allocation (for example, halving the context window halves the KV cache at --max-num-seqs=1).

    Combined override for a tight-memory run:

      --gpu-memory-utilization=0.70 \
      --max-model-len=32768 \
    

    Step 6
    Cleanup

    Stop the running container with Ctrl+C, or from another terminal:

    docker stop vllm-nemotron-omni
    

    Remove the image only if you want to reclaim disk:

    docker rmi vllm/vllm-openai:v0.20.0
    

    Delete the local weights directory only if you no longer need it.

    For the larger Nemotron Super deployment on the same hardware, use the Run Nemotron Super tab in this playbook.

    Resources

    • Nemotron Spark deployment guide (Super)
    • Nemotron-3-Super NVFP4 on Hugging Face
    • NVIDIA NeMo Nemotron
    • DGX Spark Documentation
    • DGX Spark Forum
    • DGX Spark User Performance Guide
    Terms of Use
    Privacy Policy
    Your Privacy Choices
    Contact

    Copyright © 2026 NVIDIA Corporation