[Docs] Update Nemotron3-Nano-Omni cookbook to reflect new model paths (#25198)
This commit is contained in:
@@ -30,10 +30,9 @@ Architecture and key features:
|
||||
**Supported GPUs:** NVIDIA B200, H100, H200, A100, L40S, DGX Spark, RTX 6000
|
||||
|
||||
Available model variants on HuggingFace:
|
||||
- [`nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning`](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning)
|
||||
- [`nvidia/Nemotron-3-Nano-Omni-30B-A3B-BF16`](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-BF16)
|
||||
- [`nvidia/Nemotron-3-Nano-Omni-30B-A3B-FP8`](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-FP8)
|
||||
- [`nvidia/Nemotron-3-Nano-Omni-30B-A3B-NVFP4`](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-NVFP4)
|
||||
- [`nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16`](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16)
|
||||
- [`nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-FP8`](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-FP8)
|
||||
- [`nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4`](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4)
|
||||
|
||||
**Agentic workloads this model enables:**
|
||||
- **Computer Use Agent:** Perception loop for agents navigating GUIs — reads screens, understands UI state over time, validates outcomes. Collapses vision and reasoning into a single loop.
|
||||
@@ -76,7 +75,7 @@ This section provides a progressive guide from quick deployment to performance t
|
||||
|
||||
- **TP support:**
|
||||
|
||||
To set tensor parallelism, use `--tp <1|2|4|8>`. A 4×H100 setup is recommended for the BF16/Reasoning variant.
|
||||
To set tensor parallelism, use `--tp <1|2|4|8>`. A 4×H100 setup is recommended for the BF16 variant.
|
||||
|
||||
- **FP8 KV cache:**
|
||||
|
||||
@@ -96,7 +95,7 @@ The command below launches the server for a 4×H100 setup with reasoning and too
|
||||
|
||||
```shell Command
|
||||
sglang serve \
|
||||
--model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning \
|
||||
--model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 \
|
||||
--host 0.0.0.0 \
|
||||
--port 30000 \
|
||||
--tp 4 \
|
||||
@@ -112,7 +111,7 @@ SGLang provides an OpenAI-compatible endpoint. Example with the OpenAI Python cl
|
||||
```python Example
|
||||
from openai import OpenAI
|
||||
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning"
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16"
|
||||
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
|
||||
|
||||
resp = client.chat.completions.create(
|
||||
@@ -142,7 +141,7 @@ Streaming chat completion:
|
||||
```python Example
|
||||
from openai import OpenAI
|
||||
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning"
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16"
|
||||
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
|
||||
|
||||
stream = client.chat.completions.create(
|
||||
@@ -168,7 +167,7 @@ Pass image inputs using the OpenAI vision format. Supports both URLs and base64-
|
||||
```python Example
|
||||
from openai import OpenAI
|
||||
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning"
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16"
|
||||
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
|
||||
|
||||
# From URL
|
||||
@@ -199,7 +198,7 @@ For local images, encode as base64:
|
||||
import base64
|
||||
from openai import OpenAI
|
||||
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning"
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16"
|
||||
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
|
||||
|
||||
with open("screenshot.png", "rb") as f:
|
||||
@@ -233,7 +232,7 @@ Nemotron 3 Nano Omni uses Conv3D layers and Efficient Video Sampling (EVS) for t
|
||||
import base64
|
||||
from openai import OpenAI
|
||||
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning"
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16"
|
||||
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
|
||||
|
||||
with open("video.mp4", "rb") as f:
|
||||
@@ -268,7 +267,7 @@ Pass audio inputs as base64-encoded WAV or MP3 data:
|
||||
import base64
|
||||
from openai import OpenAI
|
||||
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning"
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16"
|
||||
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
|
||||
|
||||
with open("audio.wav", "rb") as f:
|
||||
@@ -302,7 +301,7 @@ Combine modalities in a single request. For example, an image alongside an audio
|
||||
import base64
|
||||
from openai import OpenAI
|
||||
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning"
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16"
|
||||
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
|
||||
|
||||
with open("chart.png", "rb") as f:
|
||||
@@ -336,7 +335,7 @@ The model supports two modes — Reasoning ON (default) vs OFF. Toggle per-reque
|
||||
```python Example
|
||||
from openai import OpenAI
|
||||
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning"
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16"
|
||||
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
|
||||
|
||||
# Reasoning ON (default)
|
||||
@@ -389,7 +388,7 @@ Call functions using the OpenAI Tools schema. The server must be launched with `
|
||||
```python Example
|
||||
from openai import OpenAI
|
||||
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning"
|
||||
SERVED_MODEL_NAME = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16"
|
||||
client = OpenAI(base_url="http://localhost:30000/v1", api_key="EMPTY")
|
||||
|
||||
TOOLS = [
|
||||
@@ -445,7 +444,7 @@ The user is asking about weather in Santa Clara, CA. I have a get_weather functi
|
||||
|
||||
```shell Command
|
||||
sglang serve \
|
||||
--model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-FP8 \
|
||||
--model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-FP8 \
|
||||
--host 0.0.0.0 \
|
||||
--port 30000 \
|
||||
--tp 4 \
|
||||
@@ -458,10 +457,10 @@ sglang serve \
|
||||
|
||||
```shell Command
|
||||
sglang serve \
|
||||
--model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-NVFP4 \
|
||||
--model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4 \
|
||||
--host 0.0.0.0 \
|
||||
--port 30000 \
|
||||
--tp 2 \
|
||||
--tp 4 \
|
||||
--trust-remote-code \
|
||||
--tool-call-parser qwen3_coder \
|
||||
--reasoning-parser deepseek-r1
|
||||
@@ -487,7 +486,7 @@ Model Deployment Command:
|
||||
|
||||
```shell Command
|
||||
sglang serve \
|
||||
--model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning \
|
||||
--model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 \
|
||||
--trust-remote-code \
|
||||
--tp 4 \
|
||||
--max-running-requests 1024 \
|
||||
@@ -503,7 +502,7 @@ python3 -m sglang.bench_serving \
|
||||
--backend sglang \
|
||||
--host 127.0.0.1 \
|
||||
--port 30000 \
|
||||
--model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning \
|
||||
--model nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 \
|
||||
--dataset-name random \
|
||||
--random-input-len 1024 \
|
||||
--random-output-len 1024 \
|
||||
@@ -564,7 +563,7 @@ Max ITL (ms): 2171.93
|
||||
**Launch Model**
|
||||
```shell Command
|
||||
sglang serve \
|
||||
--model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning \
|
||||
--model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 \
|
||||
--trust-remote-code \
|
||||
--tp 4 \
|
||||
--attention-backend flashinfer \
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
export const Nemotron3NanoOmniDeployment = () => {
|
||||
const MODEL_PATHS = {
|
||||
reasoning: 'nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning',
|
||||
bf16: 'nvidia/Nemotron-3-Nano-Omni-30B-A3B-BF16',
|
||||
fp8: 'nvidia/Nemotron-3-Nano-Omni-30B-A3B-FP8',
|
||||
nvfp4: 'nvidia/Nemotron-3-Nano-Omni-30B-A3B-NVFP4',
|
||||
bf16: 'nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16',
|
||||
fp8: 'nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-FP8',
|
||||
nvfp4: 'nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4',
|
||||
};
|
||||
|
||||
const options = {
|
||||
@@ -11,8 +10,7 @@ export const Nemotron3NanoOmniDeployment = () => {
|
||||
name: 'model',
|
||||
title: 'Model',
|
||||
items: [
|
||||
{ id: 'reasoning', label: 'Reasoning', default: true },
|
||||
{ id: 'bf16', label: 'BF16', default: false },
|
||||
{ id: 'bf16', label: 'BF16', default: true },
|
||||
{ id: 'fp8', label: 'FP8', default: false },
|
||||
{ id: 'nvfp4', label: 'NVFP4', default: false },
|
||||
],
|
||||
@@ -77,7 +75,7 @@ export const Nemotron3NanoOmniDeployment = () => {
|
||||
return '# TP=1 is not supported on L40S for this model. Please use TP=2 or higher.';
|
||||
}
|
||||
|
||||
const modelPath = MODEL_PATHS[model] || MODEL_PATHS.reasoning;
|
||||
const modelPath = MODEL_PATHS[model] || MODEL_PATHS.bf16;
|
||||
|
||||
let cmd = 'sglang serve \\\n';
|
||||
cmd += ` --model-path ${modelPath} \\\n`;
|
||||
|
||||
Reference in New Issue
Block a user