Brazley Nemotron 3.5 Lightning Omni

Unofficial model created by Nik Brazley — not an NVIDIA release.

Omni's vision and audio towers on Lightning's text tower: a multimodal variant of NVIDIA Nemotron 3.5 Lightning that NVIDIA has not published.

Not an NVIDIA release

This is an independent derivative model. It is not an official NVIDIA product, it is not endorsed by, affiliated with, sponsored by, or supported by NVIDIA Corporation, and NVIDIA has not reviewed, validated, or approved it.

NVIDIA has not published a multimodal variant of Nemotron 3.5 Lightning. This model was assembled by Nik Brazley by combining two separately published NVIDIA checkpoints, and the "Brazley" in its name identifies that source. The behaviour of this model is the responsibility of that merge — not of NVIDIA or of either source model.

"NVIDIA", "Nemotron", and "DGX Spark" are trademarks of NVIDIA Corporation, used here solely to identify the origin of the source models in accordance with Section 4 of the NVIDIA Open Model Agreement. No trademark rights are claimed and no affiliation is implied.

For NVIDIA's official models, see nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4 and nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4.

At a Glance

Total parameters 34B (Mamba2-Transformer hybrid MoE + vision and audio encoders)
Active parameters ~3B per token (A3B, inherited from both parents)
Max context 262,144 tokens
Modalities (in) Video, Audio, Image, Text
Modality (out) Text
Reasoning mode On by default; toggle via enable_thinking
Best for Multimodal work at Nemotron 3.5 Lightning text quality — image and document understanding, speech transcription, video Q&A
Speculative decoding External DSpark drafter at n=3 — ships separately, requires a plugin shim
Minimum GPU (NVFP4) 1× DGX Spark (GB10, 128 GB unified memory)
Precision NVFP4 — 5.69 effective bits per weight, 24.4 GB

Quick Start Guide

Model Parameters

Mode temperature top_p top_k frequency_penalty max_tokens
Thinking mode 0.6 0.95 0.1 4096+
Instruct mode 0.2 1 0.1 2048
Greedy / reproducible 0.0 0.1 2048

Send frequency_penalty: 0.1 on every request, in every mode.

Model Overview

Description:

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; its text tower is NVIDIA Nemotron 3.5 Lightning, 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.

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.

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.

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.

License/Terms of Use

Governing Terms: use of this model is governed by both the NVIDIA Open Model Agreement and the OpenMDW License Agreement v1.1, which apply to different parts of the model. Both must be complied with. Full texts ship in this repository; see License for the component breakdown and downstream obligations.

Third-party code loaded at runtime: this model's config.json references 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) — a separate and older agreement from the one governing this model. It is not redistributed here.

Deployment Geography:

Global

Use Case:

Users who want Nemotron 3.5 Lightning's text behaviour with multimodal input:

  • Document and image understanding where the downstream reasoning is the hard part
  • Speech transcription (ASR) and audio Q&A
  • Video question answering and temporal description
  • Speculative-decoding deployments on a single DGX Spark

Release Date:

Hugging Face 08/20/2026 via:

Model Architecture:

Architecture Type: Mamba2-Transformer Hybrid Mixture of Experts (MoE), multimodal

Resolved architecture: NemotronH_Nano_VL_V2

Network Architecture:

  • Nemotron 3.5 Lightning (30B A3B) — the text tower, transplanted unmodified. 52 layers, hidden 2688, vocab 131072, 32 heads / 2 KV, head_dim 128.
  • C-RADIO v2-H — vision encoder for image and video frames, from the Nano Omni checkpoint.
  • Parakeet — speech encoder for audio inputs, from the Nano Omni checkpoint.
  • mlp1 and sound_projection — modality projectors, from the Nano Omni checkpoint.

Number of model parameters: 3.44 × 10^10 (34B total, ~3B active per token)

Component Parameters Source
Language model 32.9B Nemotron 3.5 Lightning
Vision encoder 0.65B Nemotron 3 Nano Omni
Audio encoder 0.62B Nemotron 3 Nano Omni
Projectors (mlp1) 0.16B Nemotron 3 Nano Omni

Input(s):

Input Type(s): Video, Audio, Image, Text

Input Format(s):

  • Video: mp4
  • Audio: wav, mp3. Send raw base64 in input_audio.data — not a data: URL (see Notes)
  • Image: RGB (jpeg, png)
  • Text: String

Input Parameters:

  • Video: Three-Dimensional (3D)
  • Audio: One-Dimensional (1D)
  • Image: Two-Dimensional (2D)
  • Text: One-Dimensional (1D)

Other Properties Related to Input:

  • Maximum context length up to 262,144 tokens
  • Language support: English only

Output(s)

Output Type(s): Text

Output Format(s):

  • Text: String

Output Parameters:

  • Text: One-Dimensional (1D)

Other Properties Related to Output:

  • Maximum context length up to 262,144 tokens
  • Supports reasoning output with chain-of-thought via enable_thinking
  • 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

Software Integration:

Runtime Engine(s):

  • vLLM 0.27.1

Supported Hardware Microarchitecture Compatibility:

  • NVIDIA Blackwell (DGX Spark / GB10)

Preferred/Supported Operating System(s):

  • Linux (aarch64 / ARM64)

Inference Runtimes:

  • vLLM — verified
  • SGLang — the required sampling parameters are all expressible, but this model has not been served on it

This AI model can be embedded as an Application Programming Interface (API) call into the software environment described above.

Model Version(s):

Brazley-Nemotron-3.5-Lightning-Omni


Download Model Weights

Precision Technical Name HuggingFace URL
NVFP4 Brazley-Nemotron-3.5-Lightning-Omni https://huggingface.co/brazley/Brazley-Nemotron-3.5-Lightning-Omni
NVFP4 Brazley-Nemotron-3.5-Lightning-Omni-Drafter https://huggingface.co/brazley/Brazley-Nemotron-3.5-Lightning-Omni-Drafter
pip install -U "huggingface_hub[hf_xet]"

WEIGHTS=/path/to/Brazley-Nemotron-3.5-Lightning-Omni
DRAFTER=/path/to/Brazley-Nemotron-3.5-Lightning-Omni-Drafter

hf download brazley/Brazley-Nemotron-3.5-Lightning-Omni --local-dir "$WEIGHTS"
hf download brazley/Brazley-Nemotron-3.5-Lightning-Omni-Drafter --local-dir "$DRAFTER"

vLLM

Required version: vLLM 0.27.1.

Container

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:

FROM vllm/vllm-openai:v0.27.1
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y g++-12 gcc-12 \
 && rm -rf /var/lib/apt/lists/*
ENV CXX=g++-12 CC=gcc-12
RUN pip install --no-cache-dir librosa soundfile   # audio path
docker build -t omni-vllm:v0.27.1-gcc12-audio .

This applies to any torch/vLLM container on GB10 with gcc < 13, not only to this model.

General Invocation (1× DGX Spark)

docker run -d --name omni-lightning \
  --gpus all --shm-size 32g --network host --ipc=host \
  -v "${WEIGHTS}:/models/Brazley-Nemotron-3.5-Lightning-Omni:ro" \
  -v "${DRAFTER}:/models/Brazley-Nemotron-3.5-Lightning-Omni-Drafter:ro" \
  -v "${DRAFTER}/nano_omni_eagle3.py:/usr/local/lib/python3.12/dist-packages/nano_omni_eagle3.py:ro" \
  -v "${DRAFTER}/nano_omni_eagle3-0.1.dist-info:/usr/local/lib/python3.12/dist-packages/nano_omni_eagle3-0.1.dist-info:ro" \
  omni-vllm:v0.27.1-gcc12-audio \
  --model /models/Brazley-Nemotron-3.5-Lightning-Omni \
  --served-model-name omni-lightning-nvfp4 \
  --tensor-parallel-size 1 \
  --trust-remote-code \
  --gpu-memory-utilization 0.65 \
  --max-model-len 262144 \
  --reasoning-parser nemotron_v3 \
  --speculative-config '{"method":"dspark","model":"/models/Brazley-Nemotron-3.5-Lightning-Omni-Drafter","num_speculative_tokens":3}' \
  --port 8200

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:

[nano-omni-eagle3] DRAFT WEIGHTS VERIFIED: 118 checkpoint tensors -> 92 draft
parameters (702.4M elements); 39/39 directly-comparable tensors match the
checkpoint EXACTLY, 0 mismatches.

To serve without speculative decoding, drop --speculative-config and both shim mounts.

Key Spark-Specific Flags
Flag Purpose Spark Guidance
--gpus all Select GPU Spark has one GB10; all is equivalent to device=0
--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
--max-model-len Max context 262144 verified to launch; reduce first if you hit OOM
--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

Verify the server is ready:

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

API Client (OpenAI-compatible)

from openai import OpenAI
client = OpenAI(base_url="http://localhost:8200/v1", api_key="")
MODEL = "omni-lightning-nvfp4"

Image Example

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}"

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_to_data_url("example.jpeg")}},
    ]}],
    max_tokens=2048,
    temperature=0.2,
    frequency_penalty=0.1,
    extra_body={"top_k": 1, "chat_template_kwargs": {"enable_thinking": False}},
)
print(response.choices[0].message.content)

Audio Example

import base64

with open("speech.wav", "rb") as f:
    audio_b64 = base64.b64encode(f.read()).decode("utf-8")   # RAW base64, no data: prefix

response = client.chat.completions.create(
    model=MODEL,
    messages=[{"role": "user", "content": [
        {"type": "input_audio", "input_audio": {"data": audio_b64, "format": "wav"}},
        {"type": "text", "text": "Transcribe this audio."},
    ]}],
    max_tokens=2048,
    temperature=0.2,
    frequency_penalty=0.1,
    extra_body={"top_k": 1, "chat_template_kwargs": {"enable_thinking": False}},
)
print(response.choices[0].message.content)

Text Example (curl)

curl -sS http://localhost:8200/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"omni-lightning-nvfp4",
       "messages":[{"role":"user","content":"Hello, what can you do?"}],
       "temperature":0.2,"top_k":1,"frequency_penalty":0.1,
       "chat_template_kwargs":{"enable_thinking":false}}' \
  | python3 -c "import sys,json; print(json.load(sys.stdin)['choices'][0]['message']['content'])"

Reasoning Mode (enable_thinking)

Setting Behavior
Default (omitted) Reasoning is on. The full response — reasoning and answer — arrives in message.reasoning, and message.content is null.
"chat_template_kwargs": {"enable_thinking": false} Reasoning is off. The answer appears in message.content.

To disable reasoning on a request, add to the JSON body:

"chat_template_kwargs": {"enable_thinking": false}

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.

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.

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.


Notes

  1. frequency_penalty: 0.1 is required on every request, in every sampling mode. It is a request parameter, not a launch flag.
  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.
  3. Audio input format: input_audio.data takes raw base64, not a data: URL.
  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.
  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.
  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.
  7. no_repeat_ngram_size does not exist in vLLM 0.27.1 or SGLang. Do not plan around it.

Training, Testing, and Evaluation Datasets:

Training Dataset:

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 and Nemotron 3 Nano Omni.

Data Modality: N/A · Data Collection Method: N/A · Labeling Method: N/A

Evaluation Dataset:

Benchmark Scores:

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.

Task Benchmark This model Nemotron 3.5 Lightning Δ Agreement McNemar (exact)
Grade-school math GSM8K (n=200) 93.0 92.5 +0.5 195/200 p = 1.0000
Academic recall MMLU (n=200) 80.0 80.5 −0.5 193/200 p = 1.0000
Grade-school math GSM8K replication (n=200, independent harness) 88.5 87.5 +1.0 188/200 p = 0.7744
Code generation HumanEval pass@1 (n=164) 87.8 89.0 −1.2 160/164 p = 0.6250

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%.

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.

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:

Task Probe Result
Diagram understanding AI2D volcano cross-section Correct structural reading
Scene description COCO, two cats on a couch 2/2 ground-truth elements
Shape + colour recognition Synthetic shapes 3/3 correct
Speech transcription Verbatim TTS script WER 0.000
Video temporal order Forward vs reversed frames Correct in both directions; a single-frame reader cannot produce the difference

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:

Sampling regime Concurrency This model Nemotron 3.5 Lightning Ratio
t=1.0, top_p=0.95 1 91.07 tok/s 94.72 tok/s 0.961
t=1.0, top_p=0.95 8 275.84 tok/s 267.61 tok/s 1.031
t=0.0, freq_penalty=0.1 1 92.53 tok/s 95.34 tok/s 0.971
t=0.0, freq_penalty=0.1 8 291.64 tok/s 281.08 tok/s 1.038

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.

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.

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.

Speculative decoding, DSpark n=3, per-position acceptance:

Regime c This model Nemotron 3.5 Lightning Accepted tokens / step
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
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
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
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

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.

Observed in production, for contrast. The table above is a controlled benchmark. Over 20 h of continuous live agent traffic on a single DGX Spark GB10 — 91,458 drafts, 274,374 draft tokens — the same engine and drafter measured 82.44% acceptance and 3.473 accepted tokens/step, per-position 92.8 / 80.9 / 73.7.

The two figures are not in conflict; they are different workloads. Agent traffic — tool calls, structured output, code — is far more predictable than open-ended generation, so the drafter lands more of its proposals. Read the table as the controlled figure and this as the workload-dependent ceiling.

Two caveats, because a number without its conditions invites the same mistake in reverse:

  • Temperature is uncontrolled here. Callers used whatever sampling they used across those 20 h. The table's rows state t=0.0 and t=1.0 explicitly; this row cannot, and some of the gap is likely sampling rather than workload.
  • Same engine, same config. A spec-off baseline taken on this deployment measured 79.73 tok/s at c=1 against this card's 80.76 — 98.7% agreement, which is what licenses comparing the two rows at all. Absolute throughput gains do not port across harnesses even when the baseline does: the paired on/off delta on that harness was +28.7% at c=1 and +23.1% at c=8, against this card's +13.2% / +12.4% measured on Nik's. Different prompts, max_tokens, and cache state — the mechanism is the same, the percentage is not portable.

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.

Quantization Benchmark Scores:

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.

This model Text donor (Lightning NVFP4) Architecture donor (Nano Omni NVFP4)
Size 24.4 GB 21 GB 20.9 GB
Effective bpw 5.69 4.98
Total parameters 34B 30B 31B

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.

Benchmarks evaluated: GSM8K, MMLU, HumanEval; ASR against a verbatim transcript; image, video and audio capability probes against ground truth.

Data Collection Method by dataset: Hybrid: Human, Automated — public academic datasets with automated scoring.

Labeling Method by dataset: Human.

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).

Inference:

Acceleration Engine: vLLM 0.27.1, with DSpark speculative decoding at n=3

Test Hardware:

  • NVIDIA DGX Spark (GB10)

Best Practices

These are the settings it was measured at and the ones we would start from.

Sampling Parameters

  • Send frequency_penalty=0.1 on every request, in every mode.
  • Thinking mode for document analysis and multimodal reasoning: temperature=0.6, top_p=0.95, frequency_penalty=0.1
  • Instruct mode (non-thinking) for general tasks: temperature=0.2, top_k=1, frequency_penalty=0.1
  • For ASR: non-thinking mode, temperature=0.2, top_k=1, frequency_penalty=0.1

Model output length

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.

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.

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.

Ethical Considerations:

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.

Please make sure you have proper rights and permissions for all input image, audio and video content.

For ethical considerations relating to the source models, see NVIDIA's Model Card++ subcards for Nemotron 3 Nano Omni and Nemotron 3.5 Lightning.

License

This model is a derivative work built from NVIDIA checkpoints published under two different licenses. Both apply, to different parts of the model, and both must be complied with by anyone redistributing it.

Component Source License
Vision tower, audio tower, projection layers, all modeling/config/processing/tokenizer code nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-NVFP4 NVIDIA Open Model Agreement
Language-model tower nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4 OpenMDW-1.1
Speculative drafter (ships separately — see below) nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-NVFP4-DSpark OpenMDW-1.1

Full license texts are included in this repository as LICENSE.Omni-NVIDIA-Open-Model-Agreement.pdf and LICENSE.Lightning-OpenMDW-1.1. Attribution notices are in NOTICE. Tensor-level provenance is in PROVENANCE.md.

Third-party code loaded at runtime

This model's config.json references nvidia/C-RADIOv2-H via auto_map for the vision-tower implementation. Loading this model with trust_remote_code=True will fetch that code directly from NVIDIA. It is distributed by NVIDIA under the NVIDIA Open Model License Agreement (June 14, 2024), a separate and older agreement from the one governing this model. It is not redistributed here; your use of it is governed directly by NVIDIA's terms.

Attribution

This model would not exist without NVIDIA's decision to publish the Nemotron family under permissive terms. All pretrained weights are NVIDIA's. No weight in this model was trained, fine-tuned, recomputed, or requantized here — the merge is a header-level graft of NVIDIA's published tensors, copied byte-for-byte.

Redistributed code retains the copyright notices of its original authors, including NVIDIA Corporation, AI21 Labs Ltd., the HuggingFace Inc. team, and the Qwen team at Alibaba Group. See NOTICE.

Obligations passed downstream

If you redistribute this model or a derivative of it, you must:

  1. Include a copy of both license texts with your distribution.
  2. Retain all copyright, patent, trademark, and attribution notices in the source form of any derivative you distribute (NVIDIA Open Model Agreement §3(b)).
  3. Retain all copyright notices and notices of origin (OpenMDW-1.1).
  4. Comply with all applicable export, import, trade and economic sanctions laws and regulations, including the U.S. Export Administration Regulations and Office of Foreign Assets Control regulations (NVIDIA Open Model Agreement §10).

Note that both licenses terminate your grant if you initiate patent or copyright litigation concerning these models.

No warranty. Both upstream licenses provide these materials "AS IS", without warranty of any kind. This derivative is provided on the same basis.

Speculative Drafter

Every throughput figure above was measured with the DSpark drafter attached. It ships separately, with the plugin shim that lets it attach:

brazley/Brazley-Nemotron-3.5-Lightning-Omni-Drafter

Citation:

@misc{brazley2026lightningomni,
      title={Brazley Nemotron 3.5 Lightning Omni: a multimodal merge of
             NVIDIA Nemotron 3.5 Lightning and NVIDIA Nemotron 3 Nano Omni},
      author={Brazley, Nik},
      year={2026},
      howpublished={\url{https://huggingface.co/brazley/Brazley-Nemotron-3.5-Lightning-Omni}},
      note={Not an NVIDIA release}
}
Downloads last month
60
Safetensors
Model size
19B params
Tensor type
BF16
·
F8_E4M3
·
F32
·
U8
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for brazley/Brazley-Nemotron-3.5-Lightning-Omni