Any-to-Any
Transformers
Safetensors
NemotronH_Nano_Omni_Reasoning_V3
feature-extraction
multimodal
Merge
nvfp4
mixture-of-experts
speculative-decoding
custom_code
8-bit precision
modelopt
Instructions to use brazley/Brazley-Nemotron-3.5-Lightning-Omni with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use brazley/Brazley-Nemotron-3.5-Lightning-Omni with Transformers:
# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("brazley/Brazley-Nemotron-3.5-Lightning-Omni", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
Add model card, NOTICE, and both governing licenses
Browse files- LICENSE +11 -0
- LICENSE.Lightning-OpenMDW-1.1 +51 -0
- LICENSE.Omni-NVIDIA-Open-Model-Agreement.pdf +0 -0
- NOTICE +30 -0
- README.md +565 -1
LICENSE
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
This repository is distributed under two upstream licenses, which apply to
|
| 2 |
+
different parts of the model. Both must be complied with.
|
| 3 |
+
|
| 4 |
+
NVIDIA Open Model Agreement -> LICENSE.Omni-NVIDIA-Open-Model-Agreement.pdf
|
| 5 |
+
Applies to the vision tower, audio tower, projection layers, and all
|
| 6 |
+
modeling / configuration / processing / tokenizer code.
|
| 7 |
+
|
| 8 |
+
OpenMDW-1.1 -> LICENSE.Lightning-OpenMDW-1.1
|
| 9 |
+
Applies to the language-model tower and the speculative drafter.
|
| 10 |
+
|
| 11 |
+
See NOTICE for attribution, and the model card for full provenance.
|
LICENSE.Lightning-OpenMDW-1.1
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
| 2 |
+
|
| 3 |
+
OpenMDW License Agreement, version 1.1 (OpenMDW-1.1)
|
| 4 |
+
|
| 5 |
+
By exercising rights granted to you under this agreement, you accept and agree
|
| 6 |
+
to its terms.
|
| 7 |
+
|
| 8 |
+
As used in this agreement, "Model Materials" means the materials provided to
|
| 9 |
+
you under this agreement, consisting of: (1) one or more machine learning
|
| 10 |
+
models (including architecture and parameters); and (2) all related artifacts
|
| 11 |
+
(including associated data, documentation and software) that are provided to
|
| 12 |
+
you hereunder.
|
| 13 |
+
|
| 14 |
+
Subject to your compliance with this agreement, permission is hereby granted,
|
| 15 |
+
free of charge, to deal in the Model Materials without restriction, including
|
| 16 |
+
under all copyright, patent, database, and trade secret rights included or
|
| 17 |
+
embodied therein.
|
| 18 |
+
|
| 19 |
+
If you distribute any portion of the Model Materials, you shall retain in your
|
| 20 |
+
distribution (1) a copy of this agreement, and (2) all copyright notices and
|
| 21 |
+
other notices of origin included in the Model Materials that are applicable to
|
| 22 |
+
your distribution.
|
| 23 |
+
|
| 24 |
+
If you file, maintain, or voluntarily participate in a lawsuit against any
|
| 25 |
+
person or entity asserting that the Model Materials directly or indirectly
|
| 26 |
+
infringe any patent or copyright, then all rights and grants made to you
|
| 27 |
+
hereunder are terminated, unless that lawsuit was in response to a
|
| 28 |
+
corresponding lawsuit first brought against you.
|
| 29 |
+
|
| 30 |
+
This agreement does not impose any restrictions or obligations with respect to
|
| 31 |
+
any use, modification, or sharing of any outputs generated by using the Model
|
| 32 |
+
Materials.
|
| 33 |
+
|
| 34 |
+
THE MODEL MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
| 35 |
+
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 36 |
+
FITNESS FOR A PARTICULAR PURPOSE, TITLE, NONINFRINGEMENT, ACCURACY, OR THE
|
| 37 |
+
ABSENCE OF LATENT OR OTHER DEFECTS OR ERRORS, WHETHER OR NOT DISCOVERABLE, ALL
|
| 38 |
+
TO THE GREATEST EXTENT PERMISSIBLE UNDER APPLICABLE LAW.
|
| 39 |
+
|
| 40 |
+
YOU ARE SOLELY RESPONSIBLE FOR (1) CLEARING RIGHTS OF OTHER PERSONS THAT MAY
|
| 41 |
+
APPLY TO THE MODEL MATERIALS OR ANY USE THEREOF, INCLUDING WITHOUT LIMITATION
|
| 42 |
+
ANY PERSON'S COPYRIGHTS OR OTHER RIGHTS INCLUDED OR EMBODIED IN THE MODEL
|
| 43 |
+
MATERIALS; (2) OBTAINING ANY NECESSARY CONSENTS, PERMISSIONS OR OTHER RIGHTS
|
| 44 |
+
REQUIRED FOR ANY USE OF THE MODEL MATERIALS; OR (3) PERFORMING ANY DUE
|
| 45 |
+
DILIGENCE OR UNDERTAKING ANY OTHER INVESTIGATIONS INTO THE MODEL MATERIALS OR
|
| 46 |
+
ANYTHING INCORPORATED OR EMBODIED THEREIN.
|
| 47 |
+
|
| 48 |
+
IN NO EVENT SHALL THE PROVIDERS OF THE MODEL MATERIALS BE LIABLE FOR ANY CLAIM,
|
| 49 |
+
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
| 50 |
+
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MODEL MATERIALS, THE
|
| 51 |
+
USE THEREOF OR OTHER DEALINGS THEREIN.
|
LICENSE.Omni-NVIDIA-Open-Model-Agreement.pdf
ADDED
|
Binary file (66.8 kB). View file
|
|
|
NOTICE
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Licensed by NVIDIA Corporation under the NVIDIA Open Model Agreement.
|
| 2 |
+
|
| 3 |
+
This model is a derivative work incorporating material from:
|
| 4 |
+
|
| 5 |
+
nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4
|
| 6 |
+
Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved.
|
| 7 |
+
Licensed under the NVIDIA Open Model Agreement.
|
| 8 |
+
See LICENSE.Omni-NVIDIA-Open-Model-Agreement.pdf
|
| 9 |
+
|
| 10 |
+
nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4
|
| 11 |
+
nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4-DSpark
|
| 12 |
+
Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
| 13 |
+
Licensed under the OpenMDW License Agreement, version 1.1 (OpenMDW-1.1).
|
| 14 |
+
See LICENSE.Lightning-OpenMDW-1.1
|
| 15 |
+
|
| 16 |
+
Modeling, configuration and processing code redistributed with this model
|
| 17 |
+
retains the copyright notices of its original authors, including:
|
| 18 |
+
|
| 19 |
+
Copyright (c) 2024-2025, NVIDIA CORPORATION. All rights reserved.
|
| 20 |
+
Copyright 2024 AI21 Labs Ltd.
|
| 21 |
+
Copyright 2024 HuggingFace Inc. team.
|
| 22 |
+
Copyright 2025 The Qwen team, Alibaba Group and the HuggingFace Inc. team.
|
| 23 |
+
|
| 24 |
+
Those files are licensed under the Apache License, Version 2.0, except
|
| 25 |
+
configuration_radio.py, which carries NVIDIA's proprietary notice and is
|
| 26 |
+
redistributed under the NVIDIA Open Model Agreement covering the work of
|
| 27 |
+
which it forms part.
|
| 28 |
+
|
| 29 |
+
This model is not an official NVIDIA release and is not endorsed by,
|
| 30 |
+
affiliated with, or supported by NVIDIA Corporation.
|
README.md
CHANGED
|
@@ -1,3 +1,567 @@
|
|
| 1 |
---
|
| 2 |
-
license:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
license: other
|
| 3 |
+
license_name: nvidia-open-model-agreement-and-openmdw-1.1
|
| 4 |
+
license_link: LICENSE
|
| 5 |
+
base_model:
|
| 6 |
+
- nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4
|
| 7 |
+
- nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4
|
| 8 |
+
- nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4-DSpark
|
| 9 |
+
base_model_relation: merge
|
| 10 |
+
library_name: transformers
|
| 11 |
+
pipeline_tag: any-to-any
|
| 12 |
+
tags:
|
| 13 |
+
- multimodal
|
| 14 |
+
- merge
|
| 15 |
+
- nvfp4
|
| 16 |
+
- mixture-of-experts
|
| 17 |
+
- speculative-decoding
|
| 18 |
---
|
| 19 |
+
|
| 20 |
+
# Brazley Nemotron 3.5 Lightning Omni
|
| 21 |
+
|
| 22 |
+
**Unofficial model created by Nik Brazley — not an NVIDIA release.**
|
| 23 |
+
|
| 24 |
+
Omni's vision and audio towers on Lightning's text tower: a multimodal variant of
|
| 25 |
+
NVIDIA Nemotron 3.5 Lightning that NVIDIA has not published.
|
| 26 |
+
|
| 27 |
+
> ### Not an NVIDIA release
|
| 28 |
+
>
|
| 29 |
+
> **This is an independent derivative model. It is not an official
|
| 30 |
+
> NVIDIA product, it is not endorsed by, affiliated with, sponsored by, or supported
|
| 31 |
+
> by NVIDIA Corporation, and NVIDIA has not reviewed, validated, or approved it.**
|
| 32 |
+
>
|
| 33 |
+
> NVIDIA has not published a multimodal variant of Nemotron 3.5 Lightning. This model
|
| 34 |
+
> was assembled by Nik Brazley by combining two separately published NVIDIA checkpoints,
|
| 35 |
+
> and the "Brazley" in its name identifies that source. The behaviour of this model is
|
| 36 |
+
> the responsibility of that merge — not of NVIDIA or of either source model.
|
| 37 |
+
>
|
| 38 |
+
> "NVIDIA", "Nemotron", and "DGX Spark" are trademarks of NVIDIA Corporation, used
|
| 39 |
+
> here solely to identify the origin of the source models in accordance with
|
| 40 |
+
> Section 4 of the NVIDIA Open Model Agreement. No trademark rights are claimed
|
| 41 |
+
> and no affiliation is implied.
|
| 42 |
+
>
|
| 43 |
+
> For NVIDIA's official models, see
|
| 44 |
+
> [nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4](https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4)
|
| 45 |
+
> and [nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4).
|
| 46 |
+
|
| 47 |
+
## At a Glance
|
| 48 |
+
|
| 49 |
+
| | |
|
| 50 |
+
|---|---|
|
| 51 |
+
| **Total parameters** | 34B (Mamba2-Transformer hybrid MoE + vision and audio encoders) |
|
| 52 |
+
| **Active parameters** | ~3B per token (A3B, inherited from both parents) |
|
| 53 |
+
| **Max context** | 262,144 tokens |
|
| 54 |
+
| **Modalities (in)** | Video, Audio, Image, Text |
|
| 55 |
+
| **Modality (out)** | Text |
|
| 56 |
+
| **Reasoning mode** | On by default; toggle via `enable_thinking` |
|
| 57 |
+
| **Best for** | Multimodal work at Nemotron 3.5 Lightning text quality — image and document understanding, speech transcription, video Q&A |
|
| 58 |
+
| **Speculative decoding** | External DSpark drafter at n=3 — [ships separately](#speculative-drafter), requires a plugin shim |
|
| 59 |
+
| **Minimum GPU (NVFP4)** | 1× DGX Spark (GB10, 128 GB unified memory) |
|
| 60 |
+
| **Precision** | NVFP4 — 5.69 effective bits per weight, 24.4 GB |
|
| 61 |
+
|
| 62 |
+
## Quick Start Guide
|
| 63 |
+
|
| 64 |
+
### Model Parameters
|
| 65 |
+
|
| 66 |
+
| Mode | temperature | top_p | top_k | frequency_penalty | max_tokens |
|
| 67 |
+
|------|-------------|-------|-------|-------------------|------------|
|
| 68 |
+
| **Thinking mode** | 0.6 | 0.95 | — | **0.1** | 4096+ |
|
| 69 |
+
| **Instruct mode** | 0.2 | — | 1 | **0.1** | 2048 |
|
| 70 |
+
| **Greedy / reproducible** | 0.0 | — | — | **0.1** | 2048 |
|
| 71 |
+
|
| 72 |
+
Send `frequency_penalty: 0.1` on every request, in every mode.
|
| 73 |
+
|
| 74 |
+
# Model Overview
|
| 75 |
+
|
| 76 |
+
### Description:
|
| 77 |
+
|
| 78 |
+
Brazley Nemotron 3.5 Lightning Omni is a multimodal model built from two NVIDIA checkpoints. Its architecture, vision tower and audio tower come from [NVIDIA Nemotron 3 Nano Omni V2](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4); its text tower is [NVIDIA Nemotron 3.5 Lightning](https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4), transplanted whole. NVIDIA publishes Lightning as a text-only model and has not released a multimodal variant of it. Nano Omni carries modality towers that Lightning does not, and the two checkpoints share enough structure that the text tower can be exchanged at the seam between them — this model is the result of trying it.
|
| 79 |
+
|
| 80 |
+
**No training was performed.** Zero gradient steps: no fine-tuning, no distillation, no adapter, no calibration pass over data. The model is a module transplant at the architectural seams, followed by quantization. Every weight is NVIDIA's, copied byte-for-byte from the source safetensors.
|
| 81 |
+
|
| 82 |
+
Because there were no gradient steps, building it has an inference-shaped compute profile rather than a training-shaped one — load, transplant, quantize, validate. That is what put it within reach here: one person and a set of AI agents, working on an M5 MacBook Pro driving a cluster of NVIDIA DGX Spark boxes, Thunderbolt from the Mac to the Sparks and the Spark fabric between the Sparks. DGX Spark is listed above as the minimum GPU for running this model.
|
| 83 |
+
|
| 84 |
+
Everything needed to run it is below — the container, the exact launch command, the sampling parameters, the full quantization composition, and the numbers it was measured at. It is available for commercial use under the terms of both governing licenses. Go and enjoy it.
|
| 85 |
+
|
| 86 |
+
### License/Terms of Use
|
| 87 |
+
|
| 88 |
+
Governing Terms: use of this model is governed by **both** the [NVIDIA Open Model Agreement](https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-agreement/) and the [OpenMDW License Agreement v1.1](https://openmdw.ai/license/1-1/), which apply to different parts of the model. Both must be complied with. Full texts ship in this repository; see [License](#license) for the component breakdown and downstream obligations.
|
| 89 |
+
|
| 90 |
+
**Third-party code loaded at runtime:** this model's `config.json` references [`nvidia/C-RADIOv2-H`](https://huggingface.co/nvidia/C-RADIOv2-H) via `auto_map` for the vision-tower implementation. Loading with `trust_remote_code=True` fetches that code directly from NVIDIA, under the [NVIDIA Open Model License Agreement (June 14, 2024)](https://developer.download.nvidia.com/licenses/nvidia-open-model-license-agreement-june-2024.pdf) — a separate and older agreement from the one governing this model. It is not redistributed here.
|
| 91 |
+
|
| 92 |
+
### Deployment Geography:
|
| 93 |
+
Global
|
| 94 |
+
|
| 95 |
+
### Use Case:
|
| 96 |
+
Users who want Nemotron 3.5 Lightning's text behaviour with multimodal input:
|
| 97 |
+
- Document and image understanding where the downstream reasoning is the hard part
|
| 98 |
+
- Speech transcription (ASR) and audio Q&A
|
| 99 |
+
- Video question answering and temporal description
|
| 100 |
+
- Speculative-decoding deployments on a single DGX Spark
|
| 101 |
+
|
| 102 |
+
### Release Date:
|
| 103 |
+
Hugging Face `08/20/2026` via:
|
| 104 |
+
- [`brazley/Brazley-Nemotron-3.5-Lightning-Omni`](https://huggingface.co/brazley/Brazley-Nemotron-3.5-Lightning-Omni)
|
| 105 |
+
- [`brazley/Brazley-Nemotron-3.5-Lightning-Omni-Drafter`](https://huggingface.co/brazley/Brazley-Nemotron-3.5-Lightning-Omni-Drafter)
|
| 106 |
+
|
| 107 |
+
## Model Architecture:
|
| 108 |
+
|
| 109 |
+
**Architecture Type:** Mamba2-Transformer Hybrid Mixture of Experts (MoE), multimodal
|
| 110 |
+
|
| 111 |
+
**Resolved architecture:** `NemotronH_Nano_VL_V2`
|
| 112 |
+
|
| 113 |
+
**Network Architecture:**
|
| 114 |
+
- [Nemotron 3.5 Lightning (30B A3B)](https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4) — the text tower, transplanted unmodified. 52 layers, hidden 2688, vocab 131072, 32 heads / 2 KV, head_dim 128.
|
| 115 |
+
- [C-RADIO v2-H](https://huggingface.co/nvidia/C-RADIOv2-H) — vision encoder for image and video frames, from the Nano Omni checkpoint.
|
| 116 |
+
- [Parakeet](https://huggingface.co/nvidia/parakeet-tdt-0.6b-v2) — speech encoder for audio inputs, from the Nano Omni checkpoint.
|
| 117 |
+
- `mlp1` and `sound_projection` — modality projectors, from the Nano Omni checkpoint.
|
| 118 |
+
|
| 119 |
+
**Number of model parameters:** 3.44 × 10^10 (34B total, ~3B active per token)
|
| 120 |
+
|
| 121 |
+
| Component | Parameters | Source |
|
| 122 |
+
|---|---|---|
|
| 123 |
+
| Language model | 32.9B | Nemotron 3.5 Lightning |
|
| 124 |
+
| Vision encoder | 0.65B | Nemotron 3 Nano Omni |
|
| 125 |
+
| Audio encoder | 0.62B | Nemotron 3 Nano Omni |
|
| 126 |
+
| Projectors (`mlp1`) | 0.16B | Nemotron 3 Nano Omni |
|
| 127 |
+
|
| 128 |
+
## Input(s):
|
| 129 |
+
|
| 130 |
+
**Input Type(s):** Video, Audio, Image, Text
|
| 131 |
+
|
| 132 |
+
**Input Format(s):**
|
| 133 |
+
- Video: mp4
|
| 134 |
+
- Audio: wav, mp3. **Send raw base64 in `input_audio.data` — not a `data:` URL** (see [Notes](#notes))
|
| 135 |
+
- Image: RGB (jpeg, png)
|
| 136 |
+
- Text: String
|
| 137 |
+
|
| 138 |
+
**Input Parameters:**
|
| 139 |
+
- Video: Three-Dimensional (3D)
|
| 140 |
+
- Audio: One-Dimensional (1D)
|
| 141 |
+
- Image: Two-Dimensional (2D)
|
| 142 |
+
- Text: One-Dimensional (1D)
|
| 143 |
+
|
| 144 |
+
**Other Properties Related to Input:**
|
| 145 |
+
- Maximum context length up to 262,144 tokens
|
| 146 |
+
- Language support: English only
|
| 147 |
+
|
| 148 |
+
## Output(s)
|
| 149 |
+
|
| 150 |
+
**Output Type(s):** Text
|
| 151 |
+
|
| 152 |
+
**Output Format(s):**
|
| 153 |
+
- Text: String
|
| 154 |
+
|
| 155 |
+
**Output Parameters:**
|
| 156 |
+
- Text: One-Dimensional (1D)
|
| 157 |
+
|
| 158 |
+
**Other Properties Related to Output:**
|
| 159 |
+
- Maximum context length up to 262,144 tokens
|
| 160 |
+
- Supports reasoning output with chain-of-thought via `enable_thinking`
|
| 161 |
+
- **Tool calling requires launching with a tool parser** — the reference invocation below does not include one, and a request carrying `tools` returns HTTP 400 until it does
|
| 162 |
+
|
| 163 |
+
## Software Integration:
|
| 164 |
+
|
| 165 |
+
**Runtime Engine(s):**
|
| 166 |
+
* vLLM 0.27.1
|
| 167 |
+
|
| 168 |
+
**Supported Hardware Microarchitecture Compatibility:**
|
| 169 |
+
* NVIDIA Blackwell (DGX Spark / GB10)
|
| 170 |
+
|
| 171 |
+
**Preferred/Supported Operating System(s):**
|
| 172 |
+
* Linux (aarch64 / ARM64)
|
| 173 |
+
|
| 174 |
+
**Inference Runtimes:**
|
| 175 |
+
* vLLM — verified
|
| 176 |
+
* SGLang — the required sampling parameters are all expressible, but this model has not been served on it
|
| 177 |
+
|
| 178 |
+
This AI model can be embedded as an Application Programming Interface (API) call into the software environment described above.
|
| 179 |
+
|
| 180 |
+
## Model Version(s):
|
| 181 |
+
`Brazley-Nemotron-3.5-Lightning-Omni`
|
| 182 |
+
|
| 183 |
+
---
|
| 184 |
+
|
| 185 |
+
### Download Model Weights
|
| 186 |
+
|
| 187 |
+
| Precision | Technical Name | HuggingFace URL |
|
| 188 |
+
|-----------|---------------|-----------------|
|
| 189 |
+
| NVFP4 | `Brazley-Nemotron-3.5-Lightning-Omni` | https://huggingface.co/brazley/Brazley-Nemotron-3.5-Lightning-Omni |
|
| 190 |
+
| NVFP4 | `Brazley-Nemotron-3.5-Lightning-Omni-Drafter` | https://huggingface.co/brazley/Brazley-Nemotron-3.5-Lightning-Omni-Drafter |
|
| 191 |
+
|
| 192 |
+
```bash
|
| 193 |
+
pip install -U "huggingface_hub[hf_xet]"
|
| 194 |
+
|
| 195 |
+
WEIGHTS=/path/to/Brazley-Nemotron-3.5-Lightning-Omni
|
| 196 |
+
DRAFTER=/path/to/Brazley-Nemotron-3.5-Lightning-Omni-Drafter
|
| 197 |
+
|
| 198 |
+
hf download brazley/Brazley-Nemotron-3.5-Lightning-Omni --local-dir "$WEIGHTS"
|
| 199 |
+
hf download brazley/Brazley-Nemotron-3.5-Lightning-Omni-Drafter --local-dir "$DRAFTER"
|
| 200 |
+
```
|
| 201 |
+
|
| 202 |
+
---
|
| 203 |
+
|
| 204 |
+
### vLLM
|
| 205 |
+
|
| 206 |
+
> **Required version:** vLLM **0.27.1**.
|
| 207 |
+
|
| 208 |
+
#### Container
|
| 209 |
+
|
| 210 |
+
You will want to build your own image rather than use the upstream one. On a DGX Spark, `vllm/vllm-openai:v0.27.1` cannot compile CPU kernels for ARMv9 — it surfaces as a *multimodal processor* error at startup, and disabling video just moves it to the next modality that compiles. Adding a compiler that knows ARMv9 fixes it, and it is a three-line Dockerfile:
|
| 211 |
+
|
| 212 |
+
```dockerfile
|
| 213 |
+
FROM vllm/vllm-openai:v0.27.1
|
| 214 |
+
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y g++-12 gcc-12 \
|
| 215 |
+
&& rm -rf /var/lib/apt/lists/*
|
| 216 |
+
ENV CXX=g++-12 CC=gcc-12
|
| 217 |
+
RUN pip install --no-cache-dir librosa soundfile # audio path
|
| 218 |
+
```
|
| 219 |
+
|
| 220 |
+
```bash
|
| 221 |
+
docker build -t omni-vllm:v0.27.1-gcc12-audio .
|
| 222 |
+
```
|
| 223 |
+
|
| 224 |
+
This applies to any torch/vLLM container on GB10 with gcc < 13, not only to this model.
|
| 225 |
+
|
| 226 |
+
#### General Invocation (1× DGX Spark)
|
| 227 |
+
|
| 228 |
+
```bash
|
| 229 |
+
docker run -d --name omni-lightning \
|
| 230 |
+
--gpus all --shm-size 32g --network host --ipc=host \
|
| 231 |
+
-v "${WEIGHTS}:/models/Brazley-Nemotron-3.5-Lightning-Omni:ro" \
|
| 232 |
+
-v "${DRAFTER}:/models/Brazley-Nemotron-3.5-Lightning-Omni-Drafter:ro" \
|
| 233 |
+
-v "${DRAFTER}/nano_omni_eagle3.py:/usr/local/lib/python3.12/dist-packages/nano_omni_eagle3.py:ro" \
|
| 234 |
+
-v "${DRAFTER}/nano_omni_eagle3-0.1.dist-info:/usr/local/lib/python3.12/dist-packages/nano_omni_eagle3-0.1.dist-info:ro" \
|
| 235 |
+
omni-vllm:v0.27.1-gcc12-audio \
|
| 236 |
+
--model /models/Brazley-Nemotron-3.5-Lightning-Omni \
|
| 237 |
+
--served-model-name omni-lightning-nvfp4 \
|
| 238 |
+
--tensor-parallel-size 1 \
|
| 239 |
+
--trust-remote-code \
|
| 240 |
+
--gpu-memory-utilization 0.65 \
|
| 241 |
+
--max-model-len 262144 \
|
| 242 |
+
--reasoning-parser nemotron_v3 \
|
| 243 |
+
--speculative-config '{"method":"dspark","model":"/models/Brazley-Nemotron-3.5-Lightning-Omni-Drafter","num_speculative_tokens":3}' \
|
| 244 |
+
--port 8200
|
| 245 |
+
```
|
| 246 |
+
|
| 247 |
+
**The two `nano_omni_eagle3` mounts are required for speculative decoding.** vLLM's DSpark path requires the target model to satisfy the `SupportsEagle3` protocol, which the Omni multimodal wrapper does not declare — stock Nano Omni has no speculative-capable text tower, and this one does only because of the Lightning transplant. The shim declares it as a standard `vllm.general_plugins` entry point; no forked engine and no rebuilt image. **Without the mounts the server still starts, serves, and reports healthy, and runs roughly 12 tok/s slower.** Confirm the drafter loaded by checking the log for:
|
| 248 |
+
|
| 249 |
+
```
|
| 250 |
+
[nano-omni-eagle3] DRAFT WEIGHTS VERIFIED: 118 checkpoint tensors -> 92 draft
|
| 251 |
+
parameters (702.4M elements); 39/39 directly-comparable tensors match the
|
| 252 |
+
checkpoint EXACTLY, 0 mismatches.
|
| 253 |
+
```
|
| 254 |
+
|
| 255 |
+
To serve without speculative decoding, drop `--speculative-config` and both shim mounts.
|
| 256 |
+
|
| 257 |
+
##### Key Spark-Specific Flags
|
| 258 |
+
|
| 259 |
+
| Flag | Purpose | Spark Guidance |
|
| 260 |
+
|------|---------|----------------|
|
| 261 |
+
| `--gpus all` | Select GPU | Spark has one GB10; `all` is equivalent to `device=0` |
|
| 262 |
+
| `--gpu-memory-utilization` | Memory ceiling | 0.65 verified. It is a fraction of **total** unified memory, so what actually fits also depends on what the page cache holds at launch — the same value can succeed and later fail on the same machine |
|
| 263 |
+
| `--max-model-len` | Max context | 262144 verified to launch; reduce first if you hit OOM |
|
| 264 |
+
| `--mamba-cache-mode` | Mamba cache | **Silently coerced to `none` when prefix caching is disabled.** vLLM accepts `align`, echoes it back in `non-default args` so it looks applied, then downgrades it. Grep the startup log for coercion warnings — the CLI argument is not the resolved config |
|
| 265 |
+
|
| 266 |
+
Verify the server is ready:
|
| 267 |
+
|
| 268 |
+
```bash
|
| 269 |
+
curl -sS http://localhost:8200/v1/models | python3 -m json.tool
|
| 270 |
+
```
|
| 271 |
+
|
| 272 |
+
---
|
| 273 |
+
|
| 274 |
+
### API Client (OpenAI-compatible)
|
| 275 |
+
|
| 276 |
+
```python
|
| 277 |
+
from openai import OpenAI
|
| 278 |
+
client = OpenAI(base_url="http://localhost:8200/v1", api_key="")
|
| 279 |
+
MODEL = "omni-lightning-nvfp4"
|
| 280 |
+
```
|
| 281 |
+
|
| 282 |
+
**Image Example**
|
| 283 |
+
|
| 284 |
+
```python
|
| 285 |
+
import base64
|
| 286 |
+
|
| 287 |
+
def image_to_data_url(path: str) -> str:
|
| 288 |
+
with open(path, "rb") as f:
|
| 289 |
+
b64 = base64.b64encode(f.read()).decode("utf-8")
|
| 290 |
+
return f"data:image/jpeg;base64,{b64}"
|
| 291 |
+
|
| 292 |
+
response = client.chat.completions.create(
|
| 293 |
+
model=MODEL,
|
| 294 |
+
messages=[{"role": "user", "content": [
|
| 295 |
+
{"type": "text", "text": "Describe this image in detail."},
|
| 296 |
+
{"type": "image_url", "image_url": {"url": image_to_data_url("example.jpeg")}},
|
| 297 |
+
]}],
|
| 298 |
+
max_tokens=2048,
|
| 299 |
+
temperature=0.2,
|
| 300 |
+
frequency_penalty=0.1,
|
| 301 |
+
extra_body={"top_k": 1, "chat_template_kwargs": {"enable_thinking": False}},
|
| 302 |
+
)
|
| 303 |
+
print(response.choices[0].message.content)
|
| 304 |
+
```
|
| 305 |
+
|
| 306 |
+
**Audio Example**
|
| 307 |
+
|
| 308 |
+
```python
|
| 309 |
+
import base64
|
| 310 |
+
|
| 311 |
+
with open("speech.wav", "rb") as f:
|
| 312 |
+
audio_b64 = base64.b64encode(f.read()).decode("utf-8") # RAW base64, no data: prefix
|
| 313 |
+
|
| 314 |
+
response = client.chat.completions.create(
|
| 315 |
+
model=MODEL,
|
| 316 |
+
messages=[{"role": "user", "content": [
|
| 317 |
+
{"type": "input_audio", "input_audio": {"data": audio_b64, "format": "wav"}},
|
| 318 |
+
{"type": "text", "text": "Transcribe this audio."},
|
| 319 |
+
]}],
|
| 320 |
+
max_tokens=2048,
|
| 321 |
+
temperature=0.2,
|
| 322 |
+
frequency_penalty=0.1,
|
| 323 |
+
extra_body={"top_k": 1, "chat_template_kwargs": {"enable_thinking": False}},
|
| 324 |
+
)
|
| 325 |
+
print(response.choices[0].message.content)
|
| 326 |
+
```
|
| 327 |
+
|
| 328 |
+
**Text Example (curl)**
|
| 329 |
+
|
| 330 |
+
```bash
|
| 331 |
+
curl -sS http://localhost:8200/v1/chat/completions \
|
| 332 |
+
-H "Content-Type: application/json" \
|
| 333 |
+
-d '{"model":"omni-lightning-nvfp4",
|
| 334 |
+
"messages":[{"role":"user","content":"Hello, what can you do?"}],
|
| 335 |
+
"temperature":0.2,"top_k":1,"frequency_penalty":0.1,
|
| 336 |
+
"chat_template_kwargs":{"enable_thinking":false}}' \
|
| 337 |
+
| python3 -c "import sys,json; print(json.load(sys.stdin)['choices'][0]['message']['content'])"
|
| 338 |
+
```
|
| 339 |
+
|
| 340 |
+
---
|
| 341 |
+
|
| 342 |
+
### Reasoning Mode (`enable_thinking`)
|
| 343 |
+
|
| 344 |
+
| Setting | Behavior |
|
| 345 |
+
|---------|----------|
|
| 346 |
+
| **Default (omitted)** | Reasoning is **on**. The full response — reasoning and answer — arrives in `message.reasoning`, and **`message.content` is `null`**. |
|
| 347 |
+
| `"chat_template_kwargs": {"enable_thinking": false}` | Reasoning is **off**. The answer appears in `message.content`. |
|
| 348 |
+
|
| 349 |
+
To disable reasoning on a request, add to the JSON body:
|
| 350 |
+
|
| 351 |
+
```json
|
| 352 |
+
"chat_template_kwargs": {"enable_thinking": false}
|
| 353 |
+
```
|
| 354 |
+
|
| 355 |
+
**Read all three channels.** With `--reasoning-parser nemotron_v3`, an OpenAI client that reads only `.content` gets nothing back from a request that returned HTTP 200 with `finish_reason: stop` and billed completion tokens. Accumulate `content`, `reasoning_content` and `reasoning`, and cross-check the total against `usage.completion_tokens` — that way "the model emitted nothing" and "we failed to capture it" cannot produce identical output in your logs. This channel behaviour comes from Nemotron 3.5 Lightning and the `nemotron_v3` parser; the text donor does the same thing under an A/B on both endpoints.
|
| 356 |
+
|
| 357 |
+
**Reasoning and the answer share the `max_tokens` budget.** At `max_tokens: 2048` and `temperature 1.0`, image requests with thinking on returned empty `content` 3 times in 8, each with `finish_reason: length` and a full reasoning channel — median reasoning was 1984 tokens against the 2048 cap. Either raise the budget or send `enable_thinking: false` on that path. See [Best Practices](#best-practices).
|
| 358 |
+
|
| 359 |
+
We recommend thinking mode for tasks that involve reasoning and complex understanding. For video, audio, and omni use cases, try both enabling and disabling thinking for best results.
|
| 360 |
+
|
| 361 |
+
---
|
| 362 |
+
|
| 363 |
+
<a id="notes"></a>
|
| 364 |
+
### Notes
|
| 365 |
+
|
| 366 |
+
1. **`frequency_penalty: 0.1` is required on every request**, in every sampling mode. It is a request parameter, not a launch flag.
|
| 367 |
+
2. **Reasoning default:** reasoning is on by default and lands in `message.reasoning`, leaving `content` null. Send `enable_thinking: false` if your client reads `content`.
|
| 368 |
+
3. **Audio input format:** `input_audio.data` takes **raw base64**, not a `data:` URL.
|
| 369 |
+
4. **Thinking preamble on images:** with thinking left on, image requests may open with a `"Here's a thinking process:"` preamble. Set `enable_thinking: false` for direct image description.
|
| 370 |
+
5. **Tool calling** requires `--enable-auto-tool-choice` and `--tool-call-parser` at launch. Without them a request carrying `tools` returns HTTP 400 on every turn. Detect this from the engine's own 400 rather than from a hostname — the same engine can be relaunched with a parser.
|
| 371 |
+
6. **`max_tokens` vs `--max-model-len`:** `max_tokens` caps only the completion. It cannot exceed the server's `--max-model-len`, which is the ceiling for prompt + completion combined.
|
| 372 |
+
7. **`no_repeat_ngram_size` does not exist** in vLLM 0.27.1 or SGLang. Do not plan around it.
|
| 373 |
+
|
| 374 |
+
---
|
| 375 |
+
|
| 376 |
+
## Training, Testing, and Evaluation Datasets:
|
| 377 |
+
|
| 378 |
+
### Training Dataset:
|
| 379 |
+
|
| 380 |
+
**No training was performed.** This model is a merge of two published NVIDIA checkpoints; every weight is NVIDIA's, copied byte-for-byte from the source safetensors. For the training data behind those weights, see the model cards for [Nemotron 3.5 Lightning](https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4) and [Nemotron 3 Nano Omni](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4).
|
| 381 |
+
|
| 382 |
+
**Data Modality:** N/A · **Data Collection Method:** N/A · **Labeling Method:** N/A
|
| 383 |
+
|
| 384 |
+
### Evaluation Dataset:
|
| 385 |
+
|
| 386 |
+
**Benchmark Scores:**
|
| 387 |
+
|
| 388 |
+
Text quality against **Nemotron 3.5 Lightning**, the text-tower donor. Paired design: both models saw identical items in identical order under identical sampling (`temperature 0.0`, `frequency_penalty 0.1`) in a single process, so the comparison is the per-item difference rather than two independent accuracy estimates.
|
| 389 |
+
|
| 390 |
+
| Task | Benchmark | This model | Nemotron 3.5 Lightning | Δ | Agreement | McNemar (exact) |
|
| 391 |
+
|---|---|---|---|---|---|---|
|
| 392 |
+
| Grade-school math | GSM8K (n=200) | **93.0** | 92.5 | +0.5 | 195/200 | p = 1.0000 |
|
| 393 |
+
| Academic recall | MMLU (n=200) | **80.0** | 80.5 | −0.5 | 193/200 | p = 1.0000 |
|
| 394 |
+
| Grade-school math | GSM8K replication (n=200, independent harness) | **88.5** | 87.5 | +1.0 | 188/200 | p = 0.7744 |
|
| 395 |
+
| Code generation | HumanEval pass@1 (n=164) | **87.8** | 89.0 | −1.2 | 160/164 | p = 0.6250 |
|
| 396 |
+
|
| 397 |
+
Four paired comparisons across three tasks and three independently-built harnesses, 764 item-pairs, deltas straddling zero and none separable at p < 0.05. Item-level agreement — the two models returning the same verdict on the same problem — runs 94–98%.
|
| 398 |
+
|
| 399 |
+
On HumanEval the failure modes are near-identical: this model 18 `AssertionError` + 2 `IndexError`, the donor 17 + 1. Both fail by getting logic wrong rather than by emitting malformed or truncated code.
|
| 400 |
+
|
| 401 |
+
**Multimodal capability**, against ground truth. Every item was also sent to the text-only donor, which returns `HTTP 400 "not a multimodal model"` on all of them, so these results are not text priors:
|
| 402 |
+
|
| 403 |
+
| Task | Probe | Result |
|
| 404 |
+
|---|---|---|
|
| 405 |
+
| Diagram understanding | AI2D volcano cross-section | Correct structural reading |
|
| 406 |
+
| Scene description | COCO, two cats on a couch | 2/2 ground-truth elements |
|
| 407 |
+
| Shape + colour recognition | Synthetic shapes | 3/3 correct |
|
| 408 |
+
| Speech transcription | Verbatim TTS script | **WER 0.000** |
|
| 409 |
+
| Video temporal order | Forward vs reversed frames | Correct in both directions; a single-frame reader cannot produce the difference |
|
| 410 |
+
|
| 411 |
+
**Performance benchmarks**, measured against stock Nemotron 3.5 Lightning NVFP4 under one harness driving both endpoints in the same session, DSpark n=3 on both, `max_tokens 2048`, `enable_thinking: false`. Served rate is `sum(completion_tokens) / wall_clock_seconds`:
|
| 412 |
+
|
| 413 |
+
| Sampling regime | Concurrency | This model | Nemotron 3.5 Lightning | Ratio |
|
| 414 |
+
|---|---|---|---|---|
|
| 415 |
+
| `t=1.0, top_p=0.95` | 1 | 91.07 tok/s | 94.72 tok/s | 0.961 |
|
| 416 |
+
| `t=1.0, top_p=0.95` | 8 | **275.84 tok/s** | 267.61 tok/s | **1.031** |
|
| 417 |
+
| `t=0.0, freq_penalty=0.1` | 1 | 92.53 tok/s | 95.34 tok/s | 0.971 |
|
| 418 |
+
| `t=0.0, freq_penalty=0.1` | 8 | **291.64 tok/s** | 281.08 tok/s | **1.038** |
|
| 419 |
+
|
| 420 |
+
**The ratio changes sign with concurrency, in both regimes.** Single-stream decode is memory-bandwidth-bound, and this checkpoint moves ~9.5% more weight bytes per decode step than the text-only donor; at concurrency 8 those reads amortise across the batch and this model comes out ahead — carrying vision and audio towers the donor does not have.
|
| 421 |
+
|
| 422 |
+
Measured on separate DGX Spark nodes, each engine in its resident configuration: `gpu_memory_utilization` 0.65 here, 0.45 for the donor; `max_model_len` 262,144 and 16,384. Neither approaches its KV limit at these sequence lengths.
|
| 423 |
+
|
| 424 |
+
Stock Nemotron 3.5 Lightning NVFP4 reaches **94.72 tok/s** single-stream on this hardware, against its published 124.24 — that figure is not reproducible on a DGX Spark GB10 for either model.
|
| 425 |
+
|
| 426 |
+
**Speculative decoding**, DSpark n=3, per-position acceptance:
|
| 427 |
+
|
| 428 |
+
| Regime | c | This model | Nemotron 3.5 Lightning | Accepted tokens / step |
|
| 429 |
+
|---|---|---|---|---|
|
| 430 |
+
| `t=1.0` | 1 | 44.48% — 66.1 / 41.9 / 25.4 | 45.00% — 67.7 / 42.1 / 25.2 | 2.334 vs 2.350 |
|
| 431 |
+
| `t=1.0` | 8 | 47.15% — 69.0 / 44.6 / 27.8 | 45.27% — 67.7 / 42.0 / 26.1 | 2.414 vs 2.358 |
|
| 432 |
+
| `t=0.0` | 1 | 43.79% — 66.1 / 40.5 / 24.7 | 43.59% — 65.9 / 40.3 / 24.5 | 2.314 vs 2.308 |
|
| 433 |
+
| `t=0.0` | 8 | 47.05% — 69.1 / 44.2 / 27.9 | 47.13% — 68.9 / 44.7 / 27.8 | 2.411 vs 2.414 |
|
| 434 |
+
|
| 435 |
+
The drafter was trained against stock Lightning and runs here unmodified against a merged model. Acceptance sits within ~1.5 points of stock at every position and concurrency.
|
| 436 |
+
|
| 437 |
+
This model's acceptance figures are gated by the shim's tensor-level verification, which refuses to serve on mismatch and refuses to certify when it has nothing comparable to check. The stock control's drafter loads through vLLM's own DSpark path, which carries no equivalent gate; its evidence of correct loading is behavioural.
|
| 438 |
+
|
| 439 |
+
**Quantization Benchmark Scores:**
|
| 440 |
+
|
| 441 |
+
The NVFP4 recipe quantizes the MoE and dense GEMM weights to NVFP4 — FP4 E2M1 values with per-block FP8 E4M3 scales over groups of 16 elements and a per-tensor FP32 global scale — across 5,935 modules, with activations at 16-bit (`W4A16`). The Mamba mixer `in_proj` / `out_proj` are quantized to FP8 across 46 modules, and the KV cache is FP8. The SSM state path (`conv1d`, `gate`), the attention projections on the six KV-carrying layers, the embeddings and the `mtp` tensors are kept at higher precision, as are the vision and audio encoders and their MLP projectors — 72 excluded modules in total. This yields **5.69 effective bits per weight (24.4 GB)**; over the NVFP4 portion alone the rate is exactly **4.50 bits per weight**, being 4 bits of value plus one FP8 scale byte per 16 elements.
|
| 442 |
+
|
| 443 |
+
| | This model | Text donor (Lightning NVFP4) | Architecture donor (Nano Omni NVFP4) |
|
| 444 |
+
|---|---|---|---|
|
| 445 |
+
| Size | **24.4 GB** | 21 GB | 20.9 GB |
|
| 446 |
+
| Effective bpw | **5.69** | — | 4.98 |
|
| 447 |
+
| Total parameters | 34B | 30B | 31B |
|
| 448 |
+
|
| 449 |
+
The difference in bits-per-weight is the modality towers: 3.27B of this checkpoint's parameters sit in BF16 tensors, of which 1.44B are the vision and audio encoders and their projectors.
|
| 450 |
+
|
| 451 |
+
**Benchmarks evaluated:** GSM8K, MMLU, HumanEval; ASR against a verbatim transcript; image, video and audio capability probes against ground truth.
|
| 452 |
+
|
| 453 |
+
**Data Collection Method by dataset:** Hybrid: Human, Automated — public academic datasets with automated scoring.
|
| 454 |
+
|
| 455 |
+
**Labeling Method by dataset:** Human.
|
| 456 |
+
|
| 457 |
+
**Properties:** GSM8K sampled from `openai/gsm8k` main/test; MMLU sampled from `cais/mmlu` all/test across all subjects; HumanEval evaluated on all 164 problems. All comparisons paired within a single process against a live endpoint of each model. Each harness was made to fail on purpose before its results were used — the throughput harness against a dead port and a bogus model name, the scorer against correct, malformed, wrong and empty responses, and the HumanEval grader against 20 canonical solutions (requiring 20/20 pass) and the same 20 corrupted (requiring 20/20 fail). Zero completions reached the token cap on HumanEval (1536) or GSM8K (1024); one did on MMLU (512).
|
| 458 |
+
|
| 459 |
+
# Inference:
|
| 460 |
+
|
| 461 |
+
**Acceleration Engine:** vLLM 0.27.1, with DSpark speculative decoding at n=3
|
| 462 |
+
|
| 463 |
+
**Test Hardware:**
|
| 464 |
+
* NVIDIA DGX Spark (GB10)
|
| 465 |
+
|
| 466 |
+
<a id="best-practices"></a>
|
| 467 |
+
# Best Practices
|
| 468 |
+
|
| 469 |
+
These are the settings it was measured at and the ones we would start from.
|
| 470 |
+
|
| 471 |
+
### Sampling Parameters
|
| 472 |
+
|
| 473 |
+
* Send `frequency_penalty=0.1` on every request, in every mode.
|
| 474 |
+
* Thinking mode for document analysis and multimodal reasoning: `temperature=0.6`, `top_p=0.95`, `frequency_penalty=0.1`
|
| 475 |
+
* Instruct mode (non-thinking) for general tasks: `temperature=0.2`, `top_k=1`, `frequency_penalty=0.1`
|
| 476 |
+
* For ASR: non-thinking mode, `temperature=0.2`, `top_k=1`, `frequency_penalty=0.1`
|
| 477 |
+
|
| 478 |
+
### Model output length
|
| 479 |
+
|
| 480 |
+
Reasoning and the final answer draw on the same `max_tokens` budget, so a budget sized for the answer alone will truncate before the answer begins — the request returns `finish_reason: length` with a populated reasoning channel and `content` empty.
|
| 481 |
+
|
| 482 |
+
Measured empty-`content` rates at `max_tokens=2048` with thinking on: **0% on short conversational prompts** (p95 reasoning 923 tokens), **12.5% on ordinary factual and short-explanation prompts**, and **37.5% on image prompts**, whose median reasoning was 1984 tokens against the 2048 cap.
|
| 483 |
+
|
| 484 |
+
So: 2048 is sufficient with thinking off, and sufficient with thinking on for short conversational turns. For anything harder, use 4096 or more, or send `enable_thinking: false`. For real-time voice, `enable_thinking: false` is also the latency choice — on a 6.24 s clip it produced a byte-identical transcription in 0.52 s against 11.11 s with thinking on.
|
| 485 |
+
|
| 486 |
+
## Ethical Considerations:
|
| 487 |
+
|
| 488 |
+
This is a derivative model. Developers should work with their own teams to ensure it meets the requirements of their industry and use case, and should evaluate its safety properties directly rather than relying on evaluations published for the source models.
|
| 489 |
+
|
| 490 |
+
Please make sure you have proper rights and permissions for all input image, audio and video content.
|
| 491 |
+
|
| 492 |
+
For ethical considerations relating to the source models, see NVIDIA's Model Card++ subcards for [Nemotron 3 Nano Omni](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16) and Nemotron 3.5 Lightning.
|
| 493 |
+
|
| 494 |
+
<a id="license"></a>
|
| 495 |
+
## License
|
| 496 |
+
|
| 497 |
+
This model is a derivative work built from NVIDIA checkpoints published under two
|
| 498 |
+
different licenses. **Both apply, to different parts of the model, and both must be
|
| 499 |
+
complied with by anyone redistributing it.**
|
| 500 |
+
|
| 501 |
+
| Component | Source | License |
|
| 502 |
+
|---|---|---|
|
| 503 |
+
| Vision tower, audio tower, projection layers, all modeling/config/processing/tokenizer code | [`nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4`](https://huggingface.co/nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4) | [NVIDIA Open Model Agreement](https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-agreement/) |
|
| 504 |
+
| Language-model tower | [`nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4`](https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4) | [OpenMDW-1.1](https://openmdw.ai/license/1-1/) |
|
| 505 |
+
| Speculative drafter (ships separately — see below) | [`nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4-DSpark`](https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4-DSpark) | [OpenMDW-1.1](https://openmdw.ai/license/1-1/) |
|
| 506 |
+
|
| 507 |
+
Full license texts are included in this repository as
|
| 508 |
+
`LICENSE.Omni-NVIDIA-Open-Model-Agreement.pdf` and `LICENSE.Lightning-OpenMDW-1.1`.
|
| 509 |
+
Attribution notices are in `NOTICE`. Tensor-level provenance is in `PROVENANCE.md`.
|
| 510 |
+
|
| 511 |
+
### Third-party code loaded at runtime
|
| 512 |
+
|
| 513 |
+
This model's `config.json` references [`nvidia/C-RADIOv2-H`](https://huggingface.co/nvidia/C-RADIOv2-H)
|
| 514 |
+
via `auto_map` for the vision-tower implementation. Loading this model with
|
| 515 |
+
`trust_remote_code=True` will fetch that code directly from NVIDIA. **It is
|
| 516 |
+
distributed by NVIDIA under the [NVIDIA Open Model License Agreement (June 14, 2024)](https://developer.download.nvidia.com/licenses/nvidia-open-model-license-agreement-june-2024.pdf),
|
| 517 |
+
a separate and older agreement from the one governing this model.** It is not
|
| 518 |
+
redistributed here; your use of it is governed directly by NVIDIA's terms.
|
| 519 |
+
|
| 520 |
+
### Attribution
|
| 521 |
+
|
| 522 |
+
This model would not exist without NVIDIA's decision to publish the Nemotron family
|
| 523 |
+
under permissive terms. All pretrained weights are NVIDIA's. No weight in this model
|
| 524 |
+
was trained, fine-tuned, recomputed, or requantized here — the merge is a
|
| 525 |
+
header-level graft of NVIDIA's published tensors, copied byte-for-byte.
|
| 526 |
+
|
| 527 |
+
Redistributed code retains the copyright notices of its original authors, including
|
| 528 |
+
NVIDIA Corporation, AI21 Labs Ltd., the HuggingFace Inc. team, and the Qwen team at
|
| 529 |
+
Alibaba Group. See `NOTICE`.
|
| 530 |
+
|
| 531 |
+
### Obligations passed downstream
|
| 532 |
+
|
| 533 |
+
If you redistribute this model or a derivative of it, you must:
|
| 534 |
+
|
| 535 |
+
1. Include a copy of both license texts with your distribution.
|
| 536 |
+
2. Retain all copyright, patent, trademark, and attribution notices in the source
|
| 537 |
+
form of any derivative you distribute (NVIDIA Open Model Agreement §3(b)).
|
| 538 |
+
3. Retain all copyright notices and notices of origin (OpenMDW-1.1).
|
| 539 |
+
4. Comply with all applicable export, import, trade and economic sanctions laws and
|
| 540 |
+
regulations, including the U.S. Export Administration Regulations and Office of
|
| 541 |
+
Foreign Assets Control regulations (NVIDIA Open Model Agreement §10).
|
| 542 |
+
|
| 543 |
+
Note that both licenses terminate your grant if you initiate patent or copyright
|
| 544 |
+
litigation concerning these models.
|
| 545 |
+
|
| 546 |
+
**No warranty.** Both upstream licenses provide these materials "AS IS", without
|
| 547 |
+
warranty of any kind. This derivative is provided on the same basis.
|
| 548 |
+
|
| 549 |
+
<a id="speculative-drafter"></a>
|
| 550 |
+
## Speculative Drafter
|
| 551 |
+
|
| 552 |
+
Every throughput figure above was measured with the DSpark drafter attached. It ships separately, with the plugin shim that lets it attach:
|
| 553 |
+
|
| 554 |
+
**[`brazley/Brazley-Nemotron-3.5-Lightning-Omni-Drafter`](https://huggingface.co/brazley/Brazley-Nemotron-3.5-Lightning-Omni-Drafter)**
|
| 555 |
+
|
| 556 |
+
# Citation:
|
| 557 |
+
|
| 558 |
+
```
|
| 559 |
+
@misc{brazley2026lightningomni,
|
| 560 |
+
title={Brazley Nemotron 3.5 Lightning Omni: a multimodal merge of
|
| 561 |
+
NVIDIA Nemotron 3.5 Lightning and NVIDIA Nemotron 3 Nano Omni},
|
| 562 |
+
author={Brazley, Nik},
|
| 563 |
+
year={2026},
|
| 564 |
+
howpublished={\url{https://huggingface.co/brazley/Brazley-Nemotron-3.5-Lightning-Omni}},
|
| 565 |
+
note={Not an NVIDIA release}
|
| 566 |
+
}
|
| 567 |
+
```
|