Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16:基于 HuggingFace 生态的多模态大语言模型项目

可用于企业级问答、摘要、转录及文档智能处理,支持视频、音频、图像、文本统一理解,具备GUI、OCR、语音转录能力,能处理会议录音、培训视频等富内容。【此简介由AI生成】

分支1Tags0
文件最后提交记录最后更新时间
Add media dir 25 天前
Add media dir 25 天前
Remove vLLM NVFP4 tp>1 caveat (#11) - Remove vLLM NVFP4 tp>1 caveat (b2d8205fb320eed4878992f6c3124accd58515fb) Co-authored-by: Netanel Haber <Nvidia-NetanelHaber@users.noreply.huggingface.co> 18 天前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Add model card 25 天前
Update chat template1 个月前
Switch vision encoder reference from C-RADIOv2-H to C-RADIOv4-H; remove now-redundant _patch_cpe_align_corners (#10) - Switch vision encoder reference from C-RADIOv2-H to C-RADIOv4-H; remove now-redundant _patch_cpe_align_corners (ed2b9d70a480b7f83af2f7aeba0a4a20f3fa6e79) - Fix pixel_values dtype cast and distributed guard; tolerate unknown version in RESOURCE_MAP (098f9e6acc631ce3053c17cf5955a206991c04d7) - Update configuration_radio.py with full C-RADIOv4-H resource map (0c6bae0bb290a8312f7aa7edd4554d5173953a0e) - Warn on Mamba2 torch_forward fallback (dfe3ea737266839571f68e30e0fc51a0c0dac493) Co-authored-by: Chen Cui <cuichenx@users.noreply.huggingface.co> 15 天前
Support Transformers 5.6, dynamic-resolution images, temporal video embedder, vLLM parity (#2) - Support Transformers 5.6, mirror upstream NemotronH, add dynamic resolution and temporal video embedder, match vLLM inference (3fcea88ad5133d959d8ac702121cb6715696504b) - Wrap audio placeholders with <so_start>/<so_end> tokens (8d669c8e1bafdb76891be254dc8cd9ef2d5f90fc) - chat_template: remove no-op | string in already-string branch (c089d5d90563bdc80a72f95d7bdd9b45b225a07b) - revert chat_template.jinja to main (no changes needed for HF inference) (5081729c726d8bcc1de8fac814a5195fd3d7b362) Co-authored-by: Chen Cui <cuichenx@users.noreply.huggingface.co> 26 天前
Support Transformers 5.6, dynamic-resolution images, temporal video embedder, vLLM parity (#2) - Support Transformers 5.6, mirror upstream NemotronH, add dynamic resolution and temporal video embedder, match vLLM inference (3fcea88ad5133d959d8ac702121cb6715696504b) - Wrap audio placeholders with <so_start>/<so_end> tokens (8d669c8e1bafdb76891be254dc8cd9ef2d5f90fc) - chat_template: remove no-op | string in already-string branch (c089d5d90563bdc80a72f95d7bdd9b45b225a07b) - revert chat_template.jinja to main (no changes needed for HF inference) (5081729c726d8bcc1de8fac814a5195fd3d7b362) Co-authored-by: Chen Cui <cuichenx@users.noreply.huggingface.co> 26 天前
Switch vision encoder reference from C-RADIOv2-H to C-RADIOv4-H; remove now-redundant _patch_cpe_align_corners (#10) - Switch vision encoder reference from C-RADIOv2-H to C-RADIOv4-H; remove now-redundant _patch_cpe_align_corners (ed2b9d70a480b7f83af2f7aeba0a4a20f3fa6e79) - Fix pixel_values dtype cast and distributed guard; tolerate unknown version in RESOURCE_MAP (098f9e6acc631ce3053c17cf5955a206991c04d7) - Update configuration_radio.py with full C-RADIOv4-H resource map (0c6bae0bb290a8312f7aa7edd4554d5173953a0e) - Warn on Mamba2 torch_forward fallback (dfe3ea737266839571f68e30e0fc51a0c0dac493) Co-authored-by: Chen Cui <cuichenx@users.noreply.huggingface.co> 15 天前
Upload folder using huggingface_hub1 个月前
Add model card 25 天前
Update generation_config with default sampling params1 个月前
Support Transformers 5.6, dynamic-resolution images, temporal video embedder, vLLM parity (#2) - Support Transformers 5.6, mirror upstream NemotronH, add dynamic resolution and temporal video embedder, match vLLM inference (3fcea88ad5133d959d8ac702121cb6715696504b) - Wrap audio placeholders with <so_start>/<so_end> tokens (8d669c8e1bafdb76891be254dc8cd9ef2d5f90fc) - chat_template: remove no-op | string in already-string branch (c089d5d90563bdc80a72f95d7bdd9b45b225a07b) - revert chat_template.jinja to main (no changes needed for HF inference) (5081729c726d8bcc1de8fac814a5195fd3d7b362) Co-authored-by: Chen Cui <cuichenx@users.noreply.huggingface.co> 26 天前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Switch vision encoder reference from C-RADIOv2-H to C-RADIOv4-H; remove now-redundant _patch_cpe_align_corners (#10) - Switch vision encoder reference from C-RADIOv2-H to C-RADIOv4-H; remove now-redundant _patch_cpe_align_corners (ed2b9d70a480b7f83af2f7aeba0a4a20f3fa6e79) - Fix pixel_values dtype cast and distributed guard; tolerate unknown version in RESOURCE_MAP (098f9e6acc631ce3053c17cf5955a206991c04d7) - Update configuration_radio.py with full C-RADIOv4-H resource map (0c6bae0bb290a8312f7aa7edd4554d5173953a0e) - Warn on Mamba2 torch_forward fallback (dfe3ea737266839571f68e30e0fc51a0c0dac493) Co-authored-by: Chen Cui <cuichenx@users.noreply.huggingface.co> 15 天前
Switch vision encoder reference from C-RADIOv2-H to C-RADIOv4-H; remove now-redundant _patch_cpe_align_corners (#10) - Switch vision encoder reference from C-RADIOv2-H to C-RADIOv4-H; remove now-redundant _patch_cpe_align_corners (ed2b9d70a480b7f83af2f7aeba0a4a20f3fa6e79) - Fix pixel_values dtype cast and distributed guard; tolerate unknown version in RESOURCE_MAP (098f9e6acc631ce3053c17cf5955a206991c04d7) - Update configuration_radio.py with full C-RADIOv4-H resource map (0c6bae0bb290a8312f7aa7edd4554d5173953a0e) - Warn on Mamba2 torch_forward fallback (dfe3ea737266839571f68e30e0fc51a0c0dac493) Co-authored-by: Chen Cui <cuichenx@users.noreply.huggingface.co> 15 天前
Support Transformers 5.6, dynamic-resolution images, temporal video embedder, vLLM parity (#2) - Support Transformers 5.6, mirror upstream NemotronH, add dynamic resolution and temporal video embedder, match vLLM inference (3fcea88ad5133d959d8ac702121cb6715696504b) - Wrap audio placeholders with <so_start>/<so_end> tokens (8d669c8e1bafdb76891be254dc8cd9ef2d5f90fc) - chat_template: remove no-op | string in already-string branch (c089d5d90563bdc80a72f95d7bdd9b45b225a07b) - revert chat_template.jinja to main (no changes needed for HF inference) (5081729c726d8bcc1de8fac814a5195fd3d7b362) Co-authored-by: Chen Cui <cuichenx@users.noreply.huggingface.co> 26 天前
Add model card 25 天前
Enable batched audio inference (#3) - Enable batched audio inference (239ad827db3dd78892ad1c241db9bb5b7c047a51) Co-authored-by: Piotr Żelasko <piotrzelasko@users.noreply.huggingface.co> 25 天前
Upload folder using huggingface_hub1 个月前
Add model card 25 天前
Upload folder using huggingface_hub1 个月前
Upload folder using huggingface_hub1 个月前
Enable batched audio inference (#3) - Enable batched audio inference (239ad827db3dd78892ad1c241db9bb5b7c047a51) Co-authored-by: Piotr Żelasko <piotrzelasko@users.noreply.huggingface.co> 25 天前
Support Transformers 5.6, dynamic-resolution images, temporal video embedder, vLLM parity (#2) - Support Transformers 5.6, mirror upstream NemotronH, add dynamic resolution and temporal video embedder, match vLLM inference (3fcea88ad5133d959d8ac702121cb6715696504b) - Wrap audio placeholders with <so_start>/<so_end> tokens (8d669c8e1bafdb76891be254dc8cd9ef2d5f90fc) - chat_template: remove no-op | string in already-string branch (c089d5d90563bdc80a72f95d7bdd9b45b225a07b) - revert chat_template.jinja to main (no changes needed for HF inference) (5081729c726d8bcc1de8fac814a5195fd3d7b362) Co-authored-by: Chen Cui <cuichenx@users.noreply.huggingface.co> 26 天前
Rename classes to NemotronH_Nano_Omni_Reasoning_V3 for vLLM compatibility1 个月前

library_name: transformers license: other license_name: nvidia-open-model-agreement license_link: >- https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-agreement/ pipeline_tag: any-to-any tags:

  • nvidia
  • pytorch
  • multimodal datasets:
  • nvidia/Nemotron-Image-Training-v3 track_downloads: true

概览

总参数 310亿(Mamba2-Transformer混合MoE)
激活参数 每token约30亿
最大上下文 256k tokens
输入模态 视频、音频、图像、文本
输出模态 文本
推理模式 默认开启;可通过enable_thinking切换
最适场景 视频+语音分析、文档智能(OCR/图表/长文档)、GUI/智能体工作流、语音识别(ASR)
最低GPU要求(BF16) 1× H100 80GB(单GPU);推荐1× B200 / 1× H200
最低GPU要求(FP8) 1× L40S 48GB;推荐1× RTX Pro 6000 / 1× B200
最低GPU要求(NVFP4) 1× RTX 5090 32GB;同时支持1× DGX Spark / 1× Jetson Thor
精度版本 BF16(62 GB)· FP8(33 GB)· NVFP4(21 GB)

快速入门指南

模型参数

模式 temperature top_p top_k max_tokens reasoning_budget grace_period
思考模式 0.6 0.95 20480 16384 1024
指令模式 0.2 1 1024

模型概述

描述:

NVIDIA Nemotron 3 Nano Omni是一款多模态大型语言模型,它整合了视频、音频、图像和文本理解能力,以支持企业级问答、摘要、转录和文档智能工作流。该模型扩展了Nemotron Nano系列,集成了视频+语音理解、图形用户界面(GUI)、光学字符识别(OCR)和语音转录功能,能够对丰富的企业内容(如会议录制、媒体娱乐资产、培训视频和复杂业务文档)进行端到端处理。NVIDIA Nemotron 3 Nano Omni由NVIDIA开发,是Nemotron模型家族的一部分。

本模型可供商业使用。

该模型在Qwen3-VL-30B-A3B-Instruct、Qwen3.5-122B-A10B、Qwen3.5-397B-A17B、Qwen2.5-VL-72B-Instruct和gpt-oss-120b的基础上进行了改进。更多信息,请参见下面的训练数据集部分。

许可协议/使用条款

管辖条款:本模型的使用受 NVIDIA Open Model Agreement 管辖

部署地域:

全球

用例:

本模型专为需要多模态理解能力的企业客户设计。预期用户包括:

  • 客户服务应用(例如,通过 OCR 处理 Doordash 配送地址视频、 drive-thru 订单验证)
  • 媒体与娱乐(M&E)——视频和语音分析、密集字幕生成、视频搜索与摘要
  • AI 助手的文档智能(合同、SOW/MSA、科学发现、财务文件)
  • AI 智能体应用的 GUI 自动化(事件管理、智能体搜索、浏览器智能体、邮件智能体)

发布日期:

Build.Nvidia.com 2026年4月28日,通过 URL

Hugging Face 2026年4月28日,通过:

NGC 2026年4月28日,通过 URL

模型架构:

架构类型:Mamba2-Transformer 混合专家模型(MoE)

网络架构

  • Nemotron 3 Nano LLM (30B A3B) — 310亿参数的 Mamba2-Transformer 混合 MoE 主干网络,每 token 约有 30 亿激活参数。
  • CRADIO v4-H — 用于图像和视频帧的视觉编码器。
  • Parakeet — 用于音频输入的语音编码器。

模型参数数量:3.1 x 10^10(31B A3B)

输入:

输入类型: 视频、音频、图像、文本

输入格式:

  • 视频:mp4,最长2分钟。对于1080p视频,采样率最高为1 FPS / 128帧。对于720p等较低分辨率视频,可采用更高的时间采样率,如2 FPS / 256帧。
  • 音频:wav、mp3文件(最长1小时),8kHz及更高采样率
  • 图像:红、绿、蓝(RGB)(jpeg、png)
  • 文本:字符串

输入参数:

  • 视频:三维(3D)
  • 音频:一维(1D)
  • 图像:二维(2D)
  • 文本:一维(1D)

与输入相关的其他属性:

  • 最大上下文长度可达256k tokens
  • 语言支持:仅英语

输出

输出类型: 文本

输出格式:

  • 文本:字符串

输出参数:

  • 文本:一维(1D)

与输出相关的其他属性:

  • 最大上下文长度可达256k tokens。
  • 支持JSON输出格式
  • 支持带思维链的推理输出
  • 支持工具调用
  • 支持转录的词级时间戳

我们的AI模型旨在和/或优化用于NVIDIA GPU加速系统。通过利用NVIDIA的硬件(如GPU核心)和软件框架(如CUDA库),与纯CPU解决方案相比,该模型实现了更快的训练和推理时间。

软件集成:

运行时引擎:

  • vLLM
  • NeMo
  • Megatron
  • NeMo-RL

支持的硬件微架构兼容性:

  • NVIDIA Ampere(A100 80GB SXM/NVLink)
  • NVIDIA Blackwell(B200 SXM/NVLink、RTX Pro 6000 SE、DGX Spark、Jetson Thor、RTX 5090)
  • NVIDIA Hopper(H100 SXM/NVLink、H200 SXM/NVLink)
  • NVIDIA Lovelace(L40S)

首选/支持的操作系统:

  • Linux

推理运行时:

  • vLLM
  • TensorRT LLM
  • TensorRT Edge-LLM
  • llama.cpp
  • Ollama
  • SGLang

将基础模型和微调模型集成到AI系统中,需要使用特定用例的数据进行额外测试,以确保安全有效的部署。遵循V模型方法,在单元和系统层面进行迭代测试和验证,对于在部署前降低风险、满足技术和功能要求以及确保符合安全和道德标准至关重要。

此AI模型可作为应用程序编程接口(API)调用嵌入到上述软件环境中。

模型版本:

Nemotron-3-Nano-Omni-30B-A3B-Reasoning


下载模型权重

精度 技术名称 HuggingFace 网址
BF16 Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16
FP8 Nemotron-3-Nano-Omni-30B-A3B-Reasoning-FP8 https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-FP8
NVFP4 Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4 https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4

安装 HuggingFace CLI

pip install -U "huggingface_hub[hf_xet]"
 
# Log in once; the token is cached at ~/.cache/huggingface/token
hf auth login
 
# Sanity check: should print your username and orgs
hf auth whoami

vLLM

所需版本: 需要 vLLM 0.20.0。这意味着可使用以下容器之一:

容器

docker pull vllm/vllm-openai:v0.20.0

音频支持: 在 vLLM 容器内,运行 vllm serve 之前,如果要使用任何音频(包括传递 use_audio_in_video: true):

python3 -m pip install "vllm[audio]"

常规调用(1×GPU,例如 1×B200)

# vllm serve nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 \
# vllm serve nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-FP8 \
vllm serve nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4 \
  --host 0.0.0.0 \
  --max-model-len 131072 \
  --tensor-parallel-size 1 \
  --trust-remote-code \
  --video-pruning-rate 0.5 \
  --max-num-seqs 384 \
  --allowed-local-media-path / \
  --media-io-kwargs '{"video": {"fps": 2, "num_frames": 256}}' \
  --reasoning-parser nemotron_v3 \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_coder \
  --kv-cache-dtype fp8 # Omit this for BF16

高效视频采样:video-pruning-rate=0.5 可减少 50% 的冗余视频令牌;将视频预填充 VRAM/TTFT 减半。

平台特定说明

RTX Pro: 由于 FlashInfer 与 RTX Pro 存在当前已知问题,请添加:--moe-backend triton

DGX Spark 上的 vLLM(aarch64 / ARM64)

对于此处未涵盖的所有内容(API 示例、推理模式、视频调优),请遵循通用说明。

1. 拉取容器镜像

使用上游多架构 vLLM v0.20.0 Docker 镜像。Docker 将自动拉取 arm64 版本。

docker pull vllm/vllm-openai:v0.20.0
2. 在 Spark 上启动 vLLM 服务器
WEIGHTS=/path/to/nemotron-3-nano-omni-weights

# The image does not include audio packages so we need to install them with "pip install vllm[audio]" as done in the command below
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"

在另一个终端中,验证服务器是否准备就绪:

curl -sS http://localhost:8000/v1/models | python3 -m json.tool
特定于 Spark 的关键标志
标志 用途 Spark 说明
--gpus all 选择 GPU Spark 配备一张 GB10 GPU;all 等同于 device=0
--max-model-len 最大上下文窗口 初始值设为 131072;若遇到内存不足(OOM),可适当减小(详见下文内存调优)
Spark 上的内存调优

Spark 采用统一的 LPDDR5X 内存(约 128 GB,CPU 与 GPU 共享),而非独立的系统内存与显存池。以下是两个调优手段,按影响程度排序:

  1. 降低 --gpu-memory-utilization:从 0.85 降至 0.70,可为操作系统释放约 19 GB 内存,并重新启用权重预取。代价:KV 缓存预算减小。
  2. 降低 --max-model-len:减少 KV 缓存分配(例如,在 --max-num-seqs=1 时,上下文窗口减半,KV 缓存也随之减半)。 组合覆盖配置:
  --gpu-memory-utilization=0.70 \
  --max-model-len=32768 \

TensorRT-LLM

该模型也可通过 TensorRT-LLM 进行部署——相关说明请参见此处

平台特定说明

TensorRT Edge-LLM

该模型还可在 NVIDIA Jetson Thor 上通过 TensorRT Edge-LLM 进行部署——请参见 Jetson AI Lab 模型页面TensorRT Edge-LLM 快速入门指南


SGLang

SGLang 支持该模型的 BF16 变体,并提供以下镜像:

必须先安装 librosapip install librosa --break-system-packages

启动服务: sglang serve --model-path nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16 --trust-remote-code

Note

即将支持 NVFP4 和 FP8。

平台特定说明

DGX Spark 上的 SGLang(aarch64 / ARM64)

有关 API 示例、推理模式、视频调优等未在此处涵盖的所有内容,请遵循通用说明。

1. 拉取容器镜像

使用上面链接的上游多架构 CUDA 13.0 Docker 镜像。Docker 会自动拉取 arm64 变体。

docker pull lmsysorg/sglang:dev-cu13-nemotronh-nano-omni-reasoning-v3
2. 在 Spark 上启动 SGLang 服务器
WEIGHTS=/path/to/nemotron-3-nano-omni-weights

# The image does not include audio packages so we need to install them with "pip install librosa" as done in the command below
docker run --gpus all -it --rm \
  -p 30000:30000 \
  -v "${WEIGHTS}:/model:ro" \
  --shm-size 16g \
  lmsysorg/sglang:dev-cu13-nemotronh-nano-omni-reasoning-v3 \
  bash -c "pip install librosa && python3 -m sglang.launch_server --model-path /model \
  --host 0.0.0.0 \
  --port 30000 \
  --trust-remote-code \
  --mem-fraction-static 0.8 \
  --max-running-requests 8 \
  --tool-call-parser qwen3_coder \
  --reasoning-parser nemotron_3"

在另一个终端中,验证服务器是否准备就绪:

curl -sS http://localhost:30000/v1/models | python3 -m json.tool
Key Spark-Specific Flags
标志 用途 Spark 说明
--gpus all 选择 GPU Spark 配备一张 GB10 GPU;all 等同于 device=0
--context-length 最大上下文窗口 从默认值开始;如果遇到内存不足(OOM),则减小该值(参见下文内存调优)
Spark 上的内存调优

Spark 采用统一 LPDDR5X 内存(约 128 GB,在 CPU 和 GPU 之间共享),而非独立的系统内存与显存池。以下是两个调优手段,按影响程度排序:

  1. 降低 --mem-fraction-static:从 0.80 降至 0.70,可释放约 13 GB 内存回操作系统并重新启用权重预取。代价:KV 缓存预算减小。
  2. 降低 --context-length:减少 KV 缓存分配(例如,在 --max-running-requests=1 时,将上下文窗口减半会使 KV 缓存也减半)。 组合覆盖设置:
  --mem-fraction-static=0.70 \
  --context-length=32768 \

API 客户端(兼容 OpenAI)

from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="")
MODEL = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4"

图片示例

import base64
 
def image_to_data_url(path: str) -> str:
    with open(path, "rb") as f:
        b64 = base64.b64encode(f.read()).decode("utf-8")
    return f"data:image/jpeg;base64,{b64}"
 
image_url = image_to_data_url("media/example1a.jpeg")
 
response = client.chat.completions.create(
    model=MODEL,
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "Describe this image in detail."},
                {"type": "image_url", "image_url": {"url": image_url}},
            ],
        }
    ],
    max_tokens=1024,
    temperature=0.2,
    extra_body={"top_k": 1, "chat_template_kwargs": {"enable_thinking": False}},
)
print(response.choices[0].message.content)

音频示例

from pathlib import Path
 
audio_url = Path("media/2414-165385-0000.wav").resolve().as_uri()
 
response = client.chat.completions.create(
    model=MODEL,
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "audio_url", "audio_url": {"url": audio_url}},
                {"type": "text", "text": "Transcribe this audio."},
            ],
        }
    ],
    max_tokens=1024,
    temperature=0.2,
    extra_body={"top_k": 1, "chat_template_kwargs": {"enable_thinking": False}},
)
print(response.choices[0].message.content)

视频示例

from pathlib import Path
 
video_url = Path("media/demo.mp4").resolve().as_uri()
reasoning_budget = 16384
grace_period = 1024
 
response = client.chat.completions.create(
    model=MODEL,
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "video_url", "video_url": {"url": video_url}},
                {"type": "text", "text": "Describe this video."},
            ],
        }
    ],
    max_tokens=20480,
    temperature=0.6,
    top_p=0.95,
    extra_body={
        "thinking_token_budget": reasoning_budget + grace_period,
        "chat_template_kwargs": {
            "enable_thinking": True,
            "reasoning_budget": reasoning_budget,
        },
        "mm_processor_kwargs": {"use_audio_in_video": False},
    },
)
print(response.choices[0].message.content)

文本示例(curl)

curl -sS http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4","messages":[{"role":"user","content":"Hello, what can you do?"}],"temperature":0.2,"top_k":1}' \
  | python3 -c "import sys,json; print(json.load(sys.stdin)['choices'][0]['message']['content'])"

PDF 示例(通过 Python 逐页处理)

API 接受的是图片,而非原始 PDF 文件。以下脚本会将每一页渲染为 PNG 格式并以 base64 编码形式发送。请将其保存为 pdf_vlm_chat.py 并安装依赖:pip install pymupdf pillow requests

pdf_vlm_chat.py(点击展开)
#!/usr/bin/env python3
"""Send PDF page(s) as images to a vLLM /v1/chat/completions endpoint."""
from __future__ import annotations
 
import argparse, base64, sys
from io import BytesIO
from pathlib import Path
 
import requests
 
try:
    import fitz
    from PIL import Image
except ImportError:
    print("Install: pip install pymupdf pillow requests", file=sys.stderr)
    sys.exit(1)
 
USER_PROMPT = (
    "Summarize this PDF page: main topic, section headings, important facts "
    "or bullets, and a brief note on each figure or table. "
    "Do not invent text you cannot read."
)
API_URL = "http://localhost:8000/v1/chat/completions"
MODEL = "nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4"
MAX_TOKENS = 32000
DPI = 150
 
 
def page_to_b64(pdf_path: str, idx: int) -> str:
    doc = fitz.open(pdf_path)
    z = DPI / 72.0
    pix = doc.load_page(idx).get_pixmap(matrix=fitz.Matrix(z, z))
    img = Image.frombytes("RGB", [pix.width, pix.height], pix.samples)
    doc.close()
    buf = BytesIO()
    img.save(buf, format="PNG")
    return base64.b64encode(buf.getvalue()).decode("ascii")
 
 
def chat(url, model, b64, text, max_tokens):
    r = requests.post(url, json={
        "model": model,
        "messages": [{"role": "user", "content": [
            {"type": "text", "text": text},
            {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{b64}"}},
        ]}],
        "max_tokens": max_tokens,
        "stream": False,
        "temperature": 0.2,
        "chat_template_kwargs": {"enable_thinking": False},
    }, timeout=120)
    r.raise_for_status()
    return r.json()["choices"][0]["message"]["content"]
 
 
def main():
    p = argparse.ArgumentParser()
    p.add_argument("pdf")
    p.add_argument("--page", type=int, default=0)
    p.add_argument("--all-pages", action="store_true")
    p.add_argument("-o", "--output")
    p.add_argument("--url", default=API_URL)
    p.add_argument("--model", default=MODEL)
    p.add_argument("--max-tokens", type=int, default=MAX_TOKENS)
    a = p.parse_args()
 
    doc = fitz.open(a.pdf); n = len(doc); doc.close()
    pages = range(n) if a.all_pages else [a.page]
    parts = [f"# Extracted: {Path(a.pdf).name}\n\n*Pages: {n}*\n"] if a.all_pages else []
 
    for i in pages:
        print(f"Page {i+1}/{n} ...", file=sys.stderr)
        b64 = page_to_b64(a.pdf, i)
        text = chat(a.url, a.model, b64, f"Page {i+1}.\n\n{USER_PROMPT}", a.max_tokens)
        parts.append(f"\n---\n\n## Page {i+1}\n\n{text.strip()}\n" if a.all_pages else text.strip())
 
    out = "\n".join(parts)
    if a.output:
        Path(a.output).write_text(out + "\n", encoding="utf-8")
    else:
        print(out)
 
if __name__ == "__main__":
    main()

单页:

python3 pdf_vlm_chat.py /path/to/your_document.pdf --page 0

所有页面转为 markdown:

python3 pdf_vlm_chat.py /path/to/your_document.pdf --all-pages -o extracted.md

编辑脚本中的USER_PROMPT以适应不同任务(如详细提取、表格解析等)。


推理模式(enable_thinking

设置 行为
默认(省略) 推理开启。模型在最终答案前生成思维链,可在content中查看。
"chat_template_kwargs": {"enable_thinking": false} 推理关闭content中仅显示最终答案。

要在请求中禁用推理,请在JSON体中添加:

"chat_template_kwargs": {"enable_thinking": false}

在 Python heredoc 模式中,请使用 False(Python 布尔值),而非 false(无效的 Python 语法)。

对于涉及推理和复杂理解的任务,我们建议使用思考模式。对于视频、音频和全模态使用场景,建议同时尝试启用和禁用思考模式以获得最佳结果。


高级功能:预算控制推理
from typing import Any, Dict, List

from openai import OpenAI
from transformers import AutoTokenizer


class ThinkingBudgetClient:
    def __init__(self, base_url: str, api_key: str, tokenizer_name_or_path: str):
        self.tokenizer = AutoTokenizer.from_pretrained(
            tokenizer_name_or_path, trust_remote_code=True
        )
        self.client = OpenAI(base_url=base_url, api_key=api_key)

    def chat_completion(
        self,
        model: str,
        messages: List[Dict[str, Any]],
        reasoning_budget: int = 512,
        max_tokens: int = 1024,
        **kwargs,
    ) -> Dict[str, Any]:
        assert max_tokens > reasoning_budget, (
            f"reasoning_budget must be less than max_tokens. "
            f"Got {max_tokens=} and {reasoning_budget=}"
        )

        # Step 1: generate only the reasoning trace up to the requested budget.
        response = self.client.chat.completions.create(
            model=model,
            messages=messages,
            max_tokens=reasoning_budget,
            extra_body={
                "top_k": 1,
                "chat_template_kwargs": {
                    "enable_thinking": True,
                },
            },
            **kwargs,
        )
        reasoning_content = response.choices[0].message.content or ""
        if "</think>" not in reasoning_content:
            print("No </think> found in reasoning content")
            reasoning_content = f"{reasoning_content}</think>\n\n"

        reasoning_tokens_len = len(
            self.tokenizer.encode(reasoning_content, add_special_tokens=False)
        )
        remaining_tokens = max_tokens - reasoning_tokens_len
        assert remaining_tokens > 0, (
            f"No tokens remaining for response ({remaining_tokens=}). "
            "Increase max_tokens or lower reasoning_budget."
        )

        # Step 2: continue from the closed reasoning trace and ask for the final answer.
        continued_messages = messages + [
            {"role": "assistant", "content": reasoning_content}
        ]
        prompt = self.tokenizer.apply_chat_template(
            continued_messages,
            tokenize=False,
            continue_final_message=True,
        )
        response = self.client.completions.create(
            model=model,
            prompt=prompt,
            max_tokens=remaining_tokens,
            extra_body={"top_k": 1},
            **kwargs,
        )

        return {
            "reasoning_content": reasoning_content.strip(),
            "content": response.choices[0].text,
            "finish_reason": response.choices[0].finish_reason,
        }

视频调优

帧采样(--media-io-kwargs

若未进行显式设置,vLLM 可能会默认对每个视频采用约 32 帧,而不考虑视频长度。在启动服务器时,务必设置 --media-io-kwargs(已包含在上述通用调用命令中):

--media-io-kwargs '{"video": {"fps": 2, "num_frames": 256}}'

推荐的 num_frames 范围(在 fps=2 时):

GPU 内存 推荐的 num_frames 范围
80 GB (A100/H100) 128–512
≤40 GB 64–256

较高的值可提升时间覆盖范围,但会增加显存占用和预填充时间。建议从范围的下限开始尝试,并根据您的工作负载和延迟预算逐步增加。


注意事项

  1. 推理默认设置: 推理默认处于开启状态。如果您省略 chat_template_kwargs,模型将在 content 中生成思维链轨迹。这适用于文本和图像输入。
  2. 视频帧采样: 默认值(约 32 帧)对于大多数真实视频而言过于保守。请在服务器启动时设置 --media-io-kwargs
  3. PDF 输入格式: API 不接受原始 PDF 上传。请将页面渲染为 PNG 并以 base64 格式发送(参见上文的 PDF 示例)。
  4. max_tokens--max-model-len 请求中的 max_tokens 仅限制补全内容(生成的输出)。它不能超过服务器的 --max-model-len,后者是提示词与补全内容总和的硬性上限。如果您需要更长的输出,请增加服务器标志。

Jetson 部署

对于 Jetson 部署,支持 vLLM、SGLang、Ollama、llama.cpp 和 TensorRT Edge-LLM 作为推理框架;更多详情请参见 Jetson AI Lab 模型页面

TensorRT Edge-LLM 仅支持 Jetson Thor;TensorRT-LLM 在 Jetson 上不受支持。


训练、测试和评估数据集:

数据集概述

总大小: 354,587,705 个数据点(约 717.0B tokens)
数据集总数: 1395 个数据集条目

数据集划分: 训练集 [100%],测试集 [不适用 — 评估基准单独使用],验证集 [不适用 — 评估基准单独使用]
训练数据收集时间段: 2019–2025
测试数据收集时间段: 不适用(标准公共基准)
验证数据收集时间段: 不适用(标准公共基准)

数据集描述

Nemotron-Omni 将我们的承诺从文本扩展到多模态,在文本、音频、图像和视频领域提供同等水平的开放性。

适配器和编码器训练规模:跨文本+图像、文本+视频、文本+音频以及文本+视频+音频等混合模态的约1270亿个 token——相比单模态数据,更能反映现实世界中的情境化交互。

面向现实世界任务的后训练:涵盖多模态组合(文本+音频、文本+图像、文本+视频以及文本+视频+音频)的约1.24亿个精选示例,其结构旨在支持文档推理、计算机使用和长周期工作流。

用于智能体训练的强化学习环境:25个环境中的20个强化学习数据集,涵盖5项新的多模态任务——视觉定位、图表和文档理解、视觉关键型STEM问题、视频理解以及自动语音识别——将Nemotron的强化学习管道从文本扩展到视觉和音频领域。

模态细分

模态 数据集条目 样本数 估计 token 数(百万)
文本+音频 220 259,178,821 143,533.1
文本+图像 750 70,143,901 180,347.1
文本+视频 241 15,837,673 239,631.5
文本+视频+音频 155 8,720,044 152,499.2
文本 12 707,187 958.4
总计 1395 354,587,705 716,969.2

Nemotron-Omni的训练数据来自多样化的音频、图像、视频和文本数据集集合。原始数据集首先被转换为标准化的JSONL格式,并采用统一的对话轮次结构。音频数据在需要时重采样至16 kHz。图像和视频数据集与问答注释配对,这些注释通常使用大型视觉语言模型进行重新生成或优化,以提高质量和一致性。使用基于模型的评判器进行质量过滤,以移除低质量、不安全或偏离主题的样本。对所有图像数据集进行重复数据删除和CSAM扫描。然后,数据被打包成固定长度的序列(32k、128k或256k token)以进行高效训练。

在整个数据处理流程中实施了多项安全措施。所有图像/文本数据集都经过CSAM(儿童性虐待材料)扫描,并按数据集跟踪结果。使用两个独立的安全评判模型进行内容安全过滤,以标记和移除包含有害内容的样本,包括武器参考、犯罪策划、涉及未成年人的性内容、骚扰、仇恨言论、亵渎语言、威胁、暴力或与自杀相关的内容。合成数据生成管道包含明确的质量和安全过滤阶段。应用身份修复处理来纠正生成响应中潜在的偏见。多阶段处理流程(原始→清理后→清理且安全→清理、安全且预留)确保了渐进式优化,每个阶段都移除更多有问题的内容。

我们以基础模型为基础,在其之上应用了额外的训练、增强和优化。

公开数据集

数据集 样本数 公开占比 tokens(百万) 模态
MiraData 28,252,307 55.53% 14,181.3 文本+音频+视频
laion-disco-12M 7,507,574 14.7% 22,691.0 文本+音频
YouTube Video 2,057,000 4.0% 15,390 文本+视频
YouTube Video and Audio 1,164,000 2.2% 18,730 文本+视频+音频

私有数据集

数据集 样本数 私有占比 tokens(百万) 模态
Granary 23,370,274 8.0% 1,471.7 文本+音频
SIFT-50M 22,837,500 7.8% 5,241.7 文本+音频

自建合成数据

  • 总体规模:跨模态共41,502,625个样本,包括:文本+音频、文本+图像、文本+视频

  • 合成数据生成方法说明:

合成数据生成(SDG)用于提升数据质量、生成推理轨迹、重新标注以及扩充现有数据集。具体方法包括:利用视觉-语言模型对图像和音频进行重新描述、从现有媒体生成问答对、为复杂任务生成思考/推理链、对提示词进行改写以增加多样性,以及应用基于模型的质量过滤。

NVIDIA 来源合成数据集

数据集 模态 数量 使用模型
GroundCUA 文本+图像 2,797,851 gpt-oss-120b, Qwen3-VL-30B-A3B-Instruct
OpenImages 文本+图像 2,556,412 Qwen3-VL-30B-A3B-Instruct
MMTrail 文本+音频 1,620,533 Qwen3-omni-captioner, gpt-oss-120B
Localized Narratives 文本+图像 1,511,812 Qwen3-VL-30B-A3B-Instruct
ALLaVA 文本+图像 1,414,130 Qwen3-VL-30B-A3B-Instruct
VGG-Sound 文本+音频 1,371,167 Qwen3-omni-captioner, gpt-oss-120B
PIXMO-CAP 文本+图像 1,308,838 Qwen3-VL-30B-A3B-Instruct
TTS-Synthesized Nemotron-Nano-3 SFT Data 文本+音频 1,226,784 NVIDIA Magpie TTS
MINT-1T 文本+图像 904,035 Qwen3-VL-32B-Instruct, Gemini 3 Pro (用于过滤), Scene Text models (RTX) translate
ScaleCUA 文本+图像 889,010 Qwen3-VL-30B-A3B-Instruct
AgentNet 文本+图像 878,986 Kimi-K2.5
Conceptual Captions 3M-30b 文本+图像 867,065 Qwen3-VL-30B-A3B-Thinking-FP8
MetaMathQA 文本+图像 860,656 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Mulberry-SFT COT 文本+图像 566,982 GLM-4.1V-9B-Thinking, Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
CC for OCR 文本+图像 522,595 SwinDocSegmenter, DeepSeek OCR, Qwen3.5-122B-A10B, Qwen3-32B, Gemini 3 Flash Preview (用于过滤), GPT-4o mini (用于过滤和质量检查), Qwen3-VL-30B-A3B-Thinking-FP8, gpt-oss-120b
Charxiv-100K 文本+图像 272,104 Qwen3-VL-235B-A22B-Instruct, Qwen3-VL-235B-A22B-Thinking, GPT-4o (用于过滤), Qwen3.5-122B-A10B
SwinDocSegmenter 文本+图像 207,200 SwinDocSegmenter, DeepSeek OCR
CLEVR 文本+图像, 文本+视频 197,027 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
InternVL-Data 文本+图像 185,395 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Flickr30k Entities 文本+图像 154,760 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Metropolis and Lita 文本+视频 150,434 Qwen3.5-122B-A10B
TextCaps 文本+图像 136,911 Commercial VILA model, Qwen3-VL-30B-A3B-Instruct
Vision R1 Llava CoT 文本+图像 126,024 GLM-4.1V-9B-Thinking
HC-STVG 文本+视频 124,902 NVIDIA 使用 Qwen 模型重新标注 (Qwen2.5-VL-72B-Instruct)
nvPDFtex 文本+图像 118,351 gpt-oss-120b, Qwen3.5-122B-A10B
ChartQA 文本+图像 111,602 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤), Qwen2-VL-72B (NV)
ECD-10k-Images 文本+图像 110,697 Qwen3.5-122B-A10B
SAMA-COCO 文本+图像 102,965 gpt-oss-120B
VisualWebInstruct 文本+图像 97,746 Earlier SDG, GLM-4.1V-9B-Thinking
Spatial 文本+图像 95,532 Microsoft Florence-2-large
DoubtNut 文本+图像 94,919 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Cosmos Nemotron SFTv13.9 文本+图像 92,128 Qwen3-VL-30B-A3B-Instruct, Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
CrossTask 文本+视频 76,495 NVIDIA 使用 Qwen 模型重新标注 (Qwen2.5-VL-72B-Instruct)
RefCOCO 文本+图像 69,850 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Mantis Instruct 文本+图像 66,975 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Visual7W 文本+图像 62,589 Qwen3.5-122B-A10B
ScreenQA 文本+图像 62,186 Qwen3.5-122B-A10B
VQAV2 文本+图像 54,899 Qwen3.5-122B-A10B
TallyQA 文本+图像 50,073 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
KeenSight 文本+图像 49,849 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
GQA 文本+图像 42,182 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
AskFilo 文本+图像 41,807 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Raven 文本+图像 41,996 gpt-oss-120b
DocVQA 文本+图像 35,759 Qwen3.5-122B-A10B
TextVQA 文本+图像 34,602 Commercial VILA model, Qwen3-VL-30B-A3B-Instruct
COCO 文本+图像 32,111 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
PlotQA 文本+图像 30,665 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Llava 文本+视频 30,250 Qwen3-Omni-30B-A3B-Instruct, Qwen3-VL-32B-Instruct
NVCLIP 文本+图像 29,680 Qwen2.5-72B-Instruct
Tapos 文本+视频 29,250 Qwen2.5-VL-72B-Instruct
Vedantu Chemistry 文本+音频 26,338 NVIDIA Magpie TTS
NV-CC-Img-Text-Dataset 文本+图像 24,998 Qwen3-VL-30B-A3B-Instruct
DocLayNet 文本+图像 22,709 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤), gpt-oss-120b
Taloka Grounding 文本+图像 22,218 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Wikipedia OCR 文本+图像 21,440 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
InternVL2.5 文本+图像 20,770 Qwen3-VL-235B-A22B-Instruct, Qwen3-VL-235B-A22B-Thinking, GPT-4o (用于过滤), Qwen3.5-122B-A10B
PromptPG 文本+图像 20,305 Qwen2-VL-72B
PubTables 文本+图像 20,174 gpt-oss-120b
InfoVQA 文本+图像 18,679 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Azure Tables 文本+图像 18,188 gpt-oss-120b, Qwen3.5-122B-A10B
TabRecSet 文本+图像 17,437 GPT-4o mini, Qwen3-VL-30B-A3B-Thinking-FP8, gpt-oss-120b, Qwen3.5-122B-A10B
CD Questions 文本+音频, 文本+图像 16,335 NVIDIA Magpie TTS, Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Linguistic Data Consortium 文本+图像 15,499 Qwen3.5-122B-A10B, GPT-4o mini, Qwen3-VL-30B-A3B-Thinking-FP8, gpt-oss-120b, Ask Kateryna
MapQA 文本+图像 12,480 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
SlideVQA 文本+图像 11,199 Qwen3.5-122B-A10B
OCR Reason Finance 文本+图像 9,389 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
GeomVerse 文本+图像 9,298 GLM-4.1V-9B-Thinking
NextQA 文本+视频 8,903 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
UniGeo 文本+图像 8,822 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
Vedantu 文本+音频, 文本+图像 8,750 NVIDIA Magpie TTS, Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
GPQA 文本+音频 7,657 NVIDIA Magpie TTS
SLAKE 文本+图像 7,294 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
OpenGVLab 文本+图像 7,269 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤), Qwen3-VL-235B-A22B-Instruct, Qwen3-VL-235B-A22B-Thinking, GPT-4o (用于过滤)
PerceptionTest 文本+视频 5,192 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
InvoicesQA 文本+图像 4,817 Qwen3.5-122B-A10B
EgoProcel 文本+视频 4,660 Qwen2.5-VL-72B-Instruct
SynthTabNet 文本+图像 4,364 gpt-oss-120b
SerpAPI 文本+图像 3,784 Qwen3.5-122B-A10B, Gemini 3 Flash Preview (用于过滤)
FinTabNet 文本+图像 3,852 gpt-oss-120b
FastMath 文本+图像 3,718 Qwen3-VL-235B-A22B-Instruct-FP8
ASR Data Derived Speech-to-Text Chat Data 文本+音频 3,608 GPT-OSS 120B
Geometry3k 文本+图像 2,078 Qwen3-VL-235B-A22B-Thinking-FP8
VQA-RAD 文本+图像 1,270 Qwen3.5-122B-A10B
RQA 文本+音频 959 NVIDIA Magpie TTS
HierText OCRQA Qwen 文本+图像 514 Qwen2.5-VL-32B-Instruct

训练数据集:

数据模态

  • 音频
  • 图像
  • 文本
  • 视频

音频训练数据规模

  • 10,000 至 100 万小时
    (267,898,865 个含音频样本)

图像训练数据规模

  • 100 万至 10 亿张图像
    (70,143,901 个含图像样本)

文本训练数据规模

  • 10 亿至 10 万亿个 tokens
    (所有模态总计约 7170 亿 tokens)

视频训练数据规模

  • 10,000 至 100 万小时
    (24,557,717 个含视频样本)

按数据集划分的数据收集方法

  • 混合:人工、自动化、合成

按数据集划分的标注方法

  • 混合:人工、自动化、合成

属性(数量、数据集描述、传感器): 1395 个数据集共包含 354,587,705 条数据。训练数据涵盖五种模态组合:文本+音频(259,178,821 个样本)、文本+图像(70,143,901 个样本)、文本+视频(15,837,673 个样本)、文本+视频+音频(8,720,044 个样本)以及纯文本(707,187 个样本)。内容包括公开可用的学术数据集、授权的第三方数据、NVIDIA 内部收集数据以及合成生成的标注。数据主要为英文。未使用任何传感器衍生数据。

评估数据集:

基准测试分数:

任务 多模态基准 Nemotron 3 Nano Omni Nemotron Nano VL V2 提升百分比
视觉定位 CVBench2D 83.95 78.3 6.73
文档处理 OCRBenchV2 (EN) 67.04 54.8 18.26
计算机使用 OSWorld 47.4 11.1 76.58
图表推理 Charxiv Reasoning 63.6 41.3 35.06
多图像推理 MMlongBench Doc 57.5 38 33.91
数学推理 MathVista_MINI 82.8 75.5 8.82
OCR 推理 OCR_Reasoning 54.14 33.9 33.87
视频问答 Video MME 72.2 - -
视频+音频问答 World Sense 55.4 - -
视频+音频问答 Daily Omni 74.52 - -
语音指令遵循 Voice interaction 89.39 - -

量化基准测试分数:

我们在 BF16 模型的基础上,同时发布了 FP8 和 NVFP4 量化版本。FP8 版本将语言模型中的每个线性层(MoE 路由和 lm_head 除外)量化为每张量 E4M3 格式,并搭配 FP8 KV 缓存,实现每权重 8.5 有效位(32.8 GB)。NVFP4 版本采用受 Nemotron 3 Super 启发的混合精度方案:路由的 MoE 专家量化为 NVFP4(FP4 E2M1 值,每块 FP8 E4M3 缩放因子作用于 16 个元素的组,并附加一个每张量 FP32 全局缩放因子),而 Mamba 的 in_proj / out_proj、共享专家和注意力 o_proj 量化为 FP8,实现每权重 4.98 有效位(20.9 GB)。在这两个版本中,视觉和音频编码器及其 MLP 投影器均保持 BF16 精度。

下表报告了 FP8 和 NVFP4 版本相对于 BF16 基线在非推理模式下的准确率。在 9 项多模态基准测试中,两种量化版本的平均准确率均与 BF16 版本相差不超过 1 个百分点。

内存占用 BF16 FP8 NVFP4
大小 (GB) 61.5 32.8 20.9
有效位/权重 (bpw) 16.00 8.5 4.98
基准测试 BF16 FP8 NVFP4
MathVista_MINI 71.90 71.05 71.30
Charxiv Reasoning 49.10 48.05 47.95
MMlongBench Doc 46.10 45.84 45.78
OCRBenchV2 (EN) 65.80 65.63 65.77
CVBench2D 84.20 85.62 85.27
Video MME 70.80 69.40 69.60
Daily Omni 74.50 74.06 74.23
World Sense 55.20 54.40 54.60
MMAU 74.62 74.56 74.34
Tedium Long (WER↓) 3.11 3.12 3.04
HF-ASR (WER↓) 5.95 5.97 5.95
平均值(9 项非 ASR) 65.80 65.40 65.43
中位数(9 项非 ASR) 70.80 69.40 69.60
与 BF16 差值(平均值) --- −0.40 −0.38

按数据集划分的数据收集方法:

  • 混合:人工、自动化 — 评估基准主要是人工筛选的公共学术数据集,并采用自动化评分。

按数据集划分的标注方法:

  • 人工

属性(数量、数据集描述、传感器): 14 项评估基准,涵盖图像理解(MathVistaMini、Charxiv Reasoning、MMLongBench-Doc、OCR Reasoning、OCRBenchV2 English、CVBench2D、OSWorld)、视频理解(Video MME)、音频/语音理解(VoiceBench、Tedium Long、HF-ASR、MMAU、World Sense)以及多模态全理解(Daily Omni)。所有基准均为公开可用的英文学术数据集。

在训练此模型之前,NVIDIA 已采取措施以尊重欧盟文本和数据挖掘的退出机制,具体包括:(1) 在合理范围内遵守 robots.txt 指令,前提是此类信号反映了有效的权利保留;(2) 根据权利持有人提供的任何可操作元数据标识符对数据集进行过滤。

推理:

加速引擎: TensorRT-LLM、vLLM、TensorRT Edge-LLM、llama.cpp、ollama、SGlang
测试硬件:

  • NVIDIA H100 SXM
  • NVIDIA H200 SXM
  • NVIDIA B200 SXM
  • NVIDIA A100 80GB SXM
  • NVIDIA GB200 NVL72
  • NVIDIA RTX PRO 6000 SE Blackwell
  • NVIDIA L40S PCIe 48GB
  • NVIDIA DGX Spark
  • NVIDIA Jetson Thor
  • NVIDIA RTX 5090

最佳实践

我们建议采用以下设置以达到最佳性能。

采样参数

我们根据模式和任务建议以下采样参数。

  • 用于长文档分析和多模态推理任务的思考模式:
    temperature=0.6top_p=0.95grace_period=1024reasoning_budget=16384max_token=20480 以及 max_model_len=210000
  • 用于一般任务的指令模式(非思考):
    temperature=0.2top_k=1
  • 对于 ASR 任务,我们建议使用非思考模式并设置
    temperature=1.0top_k=1

模型输出长度

对于大多数多模态推理任务,我们建议使用至少 20480 的输出长度。对于复杂的推理问题,尤其是数学和编程领域,将最大输出长度增加到 210000 tokens 可以为模型提供足够的空间来生成更详细和正确的答案。我们还发现,所提出的预算控制推理(Budget-Controlled Reasoning)在回答复杂推理问题时是有效的。

伦理考量:

NVIDIA 认为可信 AI 是一项共同的责任,我们已制定相关政策和实践,以支持广泛的 AI 应用开发。当按照我们的服务条款下载或使用时,开发人员应与他们的内部模型团队合作,确保该模型满足相关行业和用例的要求,并应对不可预见的产品误用。

请确保您对所有输入图像和视频内容拥有适当的权利和许可;如果图像或视频包含人物、个人健康信息或知识产权,生成的图像或视频不会模糊或保持所包含图像主体的比例。

有关此模型伦理考量的更多详细信息,请参见 Model Card++ 的偏见可解释性安全与安保隐私子卡片。

如发现模型质量、风险、安全漏洞或 NVIDIA AI 相关问题,请在此处报告。

引用说明:

@misc{nvidia2026nemotron3nanoomni,
      title={Nemotron 3 Nano Omni: Efficient and Open Multimodal Intelligence}, 
      author={NVIDIA},
      year={2026},
      eprint={2604.24954},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/2604.24954}, 
}

项目介绍

可用于企业级问答、摘要、转录及文档智能处理,支持视频、音频、图像、文本统一理解,具备GUI、OCR、语音转录能力,能处理会议录音、培训视频等富内容。【此简介由AI生成】

定制我的领域

下载使用量

0

项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新

语言类型

Python92.8%
Jinja7.2%