N

NVIDIA-Nemotron-3-Nano-30B-A3B-BF16

LLMby NVIDIA·Model page

NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 is NVIDIA's 30B MoE language model for multilingual text generation across English, Spanish, French, German, Japanese, and Italian.

Share:

Model Card

Model Overview

Model Developer: NVIDIA Corporation

Model Dates:

September 2025 - December 2025

Data Freshness:

  • The post-training data has a cutoff date of November 28, 2025.
  • The pre-training data has a cutoff date of June 25, 2025.

Description

Nemotron-3-Nano-30B-A3B-BF16 is a large language model (LLM) trained from scratch by NVIDIA, and designed as a unified model for both reasoning and non-reasoning tasks. It responds to user queries and tasks by first generating a reasoning trace and then concluding with a final response. The model's reasoning capabilities can be configured through a flag in the chat template. If the user prefers the model to provide its final answer without intermediate reasoning traces, it can be configured to do so, albeit with a slight decrease in accuracy for harder prompts that require reasoning. Conversely, allowing the model to generate reasoning traces first generally results in higher-quality final solutions to queries and tasks.

The model employs a hybrid Mixture-of-Experts (MoE) architecture, consisting of 23 Mamba-2 and MoE layers, along with 6 Attention layers. Each MoE layer includes 128 experts plus 1 shared expert, with 6 experts activated per token. The model has 3.5B active parameters and 30B parameters in total.

The supported languages include: English, German, Spanish, French, Italian, and Japanese. Improved using Qwen.

This model is ready for commercial use.

What is Nemotron?

NVIDIA Nemotron™ is a family of open models with open weights, training data, and recipes, delivering leading efficiency and accuracy for building specialized AI agents.

To get started, you can use our quickstart guide below.

License/Terms of Use

Governing Terms: Use of this model is governed by the NVIDIA Nemotron Open Model License.

Reasoning Benchmark Evaluations

We evaluated our model on the following benchmarks:

Task NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 Qwen3-30B-A3B-Thinking-2507 GPT-OSS-20B
General Knowledge
MMLU-Pro 78.3 80.9 75.0
Reasoning
AIME25 (no tools) 89.1 85.0 91.7
AIME25 (with tools) 99.2 - 98.7
GPQA (no tools) 73.0 73.4 71.5
GPQA (with tools) 75.0 - 74.2
LiveCodeBench (v6 2025-08–2025-05) 68.3 66.0 61.0
SciCode (subtask) 33.3 33.0 34.0
HLE (no tools) 10.6 9.8 10.9
HLE (with tools) 15.5 - 17.3
MiniF2F pass@1 50.0 5.7 12.1
MiniF2F pass@32 79.9 16.8 43.0
Agentic
Terminal Bench (hard subset) 8.5 5.0 6.0
SWE-Bench (OpenHands) 38.8 22.0 34.0
TauBench V2 (Airline) 48.0 58.0 38.0
TauBench V2 (Retail) 56.9 58.8 38.0
TauBench V2 (Telecom) 42.2 26.3 49.7
TauBench V2 (Average) 49.0 47.7 48.7
BFCL v4 53.8 46.4* -
Chat & Instruction Following
IFBench (prompt) 71.5 51.0 65.0
Scale AI Multi Challenge 38.5 44.8 33.8
Arena-Hard-V2 (Hard Prompt) 72.1 49.6* 71.2*
Arena-Hard-V2 (Creative Writing) 63.2 66.0* 25.9&
Arena-Hard-V2 (Average) 67.7 57.8 48.6
Long Context
AA-LCR 35.9 59.0 34.0
RULER-100@256k 92.9 89.4 -
RULER-100@512k 91.3 84.0 -
RULER-100@1M 86.3 77.5 -
Multilingual
MMLU-ProX (avg over langs) 59.5 77.6* 69.1*
WMT24++ (en->xx) 86.2 85.6 83.2

All evaluation results were collected via Nemo Evaluator SDK and Nemo Skills. The open source container on Nemo Skills packaged via NVIDIA’s Nemo Evaluator SDK used for evaluations can be found here. In addition to Nemo Skills, the evaluations also used dedicated packaged containers for Tau-2 Bench, ArenaHard v2, AA_LCR. A reproducibility tutorial along with all configs can be found in Nemo Evaluator SDK examples. The configs are also available in this HF repo here. * denotes the accuracy numbers are measured by us.

Deployment Geography: Global

Use Case

NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 is a general purpose reasoning and chat model intended to be used in English and coding languages. Other non-English languages (English, Spanish, French, German, Japanese, Italian) are also supported. This model is intended to be used by developers designing AI Agent systems, chatbots, RAG systems, and other AI-powered applications. This model is also suitable for typical instruction-following tasks.

Release Date

December 15, 2025 via Hugging Face

Reference(s)

Model Architecture

  • Architecture Type: Mamba2-Transformer Hybrid Mixture of Experts (MoE)
  • Network Architecture: Nemotron Hybrid MoE
  • Number of model parameters: 30B

Model Design

The model was trained with 25T tokens, with a batch size of 3072, and used the Warmup-Stable-Decay (WSD) learning rate schedule with 8B tokens of learning rate warm up, peak learning rate of 1e-3 and minimum learning rate of 1e-5. There are a total of 52 layers, of which there are 23 of each MoE and Mamba-2 and the remaining 6 layers use grouped query attention (GQA) with 2 groups. Each MoE layer includes 128 routed experts plus 1 shared expert, with 6 experts activated per token.

Training Methodology

Stage 1: Pre-Training

Stage 2: Supervised Fine-Tuning

  • The model was further fine-tuned on synthetic code, math, science, tool calling, instruction following, structured outputs, and general knowledge data. All datasets are disclosed in the Training, Testing, and Evaluation Datasets section of this document. Major portions of the fine-tuning corpus are released in the Nemotron-Post-Training-v3 collection. Data Designer is one of the libraries used to prepare these corpora.

Stage 3: Reinforcement Learning

  • The model underwent multi-environment reinforcement learning using synchronous GRPO (Group Relative Policy Optimization) across math, code, science, instruction following, multi-step tool use, multi-turn conversations, and structured output environments. Conversational quality was further refined through RLHF using a generative reward model. All datasets are disclosed in the Training, Testing, and Evaluation Datasets section of this document. The RL environments and datasets are released as part of NeMo Gym.
  • Software used for reinforcement learning: NeMo RL, NeMo Gym

NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 model is a result of the above work.

The end-to-end training recipe is available in the NVIDIA Nemotron Developer Repository. Evaluation results can be replicated using the NeMo Evaluator SDK. Data Designer is one of the libraries used to prepare the pre and post training datasets. More details on the datasets and synthetic data generation methods can be found in the technical report NVIDIA Nemotron 3 Nano.

Input

  • Input Type(s): Text

  • Input Format(s): String

  • Input Parameters: One-Dimensional (1D): Sequences

  • Maximum input size: 1M tokens

  • Other Properties Related to Input: Supported languages include: English, Spanish, French, German, Japanese, Italian

Output

  • Output Type(s): Text

  • Output Format: String

  • Output Parameters: One-Dimensional (1D): Sequences

  • Maximum output size: 1M tokens

Our AI models are designed and optimized to run on NVIDIA GPU-accelerated systems. By leveraging NVIDIA's hardware (e.g. GPU cores) and software frameworks (e.g., CUDA libraries), the model achieves faster training and inference times compared to CPU-only solutions.

Software Integration

  • Runtime Engine(s): NeMo 25.11.01
  • Supported Hardware Microarchitecture Compatibility: NVIDIA H100-80GB, NVIDIA A100
  • Operating System(s): Linux

The integration of foundation and fine-tuned models into AI systems requires additional testing using use-case-specific data to ensure safe and effective deployment. Following the V-model methodology, iterative testing and validation at both unit and system levels are essential to mitigate risks, meet technical and functional requirements, and ensure compliance with safety and ethical standards before deployment.

Quick Start Guide

Use it with Transformers

The snippet below shows how to use this model with Huggingface Transformers (tested on version 4.57.3). We recommend using NeMo Framework 25.11.01 to ensure all required libraries are available.

Please note that the model supports up to a 1M context size, although the default context size in the Hugging Face configuration is 256k due to higher VRAM requirements.

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM

# Load tokenizer and model
tokenizer = AutoTokenizer.from_pretrained("nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16")
model = AutoModelForCausalLM.from_pretrained(
    "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16",
    torch_dtype=torch.bfloat16,
    trust_remote_code=True,
    device_map="auto"
)
messages = [
    {"role": "user", "content": "Write a haiku about GPUs"},
]

tokenized_chat = tokenizer.apply_chat_template(
    messages,
    tokenize=True,
    add_generation_prompt=True,
    return_tensors="pt"
).to(model.device)

outputs = model.generate(
    tokenized_chat,
    max_new_tokens=1024,
    temperature=1.0,
    top_p=1.0,
    eos_token_id=tokenizer.eos_token_id
)
print(tokenizer.decode(outputs[0]))

temperature=1.0 and top_p=1.0 are recommended for reasoning tasks, while temperature=0.6 and top_p=0.95 are recommended for tool calling.

If you’d like to use reasoning off, add enable_thinking=False to apply_chat_template(). By default, enable_thinking is set to be True.


tokenized_chat = tokenizer.apply_chat_template(
    messages,
    tokenize=True,
    enable_thinking=False,
    add_generation_prompt=True,
    return_tensors="pt"
).to(model.device)

# Use Greedy Search for reasoning off
outputs = model.generate(
    tokenized_chat,
    max_new_tokens=32,
    do_sample=False,
    num_beams=1,
    eos_token_id=tokenizer.eos_token_id
)
print(tokenizer.decode(outputs[0]))

Use it with vLLM

For more detailed information on how to use the model with vLLM, please see this cookbook. If you are on Jetson Thor or DGX Spark, please use this vllm container.

pip install -U "vllm>=0.12.0"

Download the custom parser from the Hugging Face repository.

wget https://huggingface.co/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16/resolve/main/nano_v3_reasoning_parser.py

Launch a vLLM server using the custom parser.

vllm serve nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 \
  --served-model-name model \
  --max-num-seqs 8 \
  --tensor-parallel-size 1 \
  --max-model-len 262144 \
  --port 8000 \
  --trust-remote-code \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_coder \
  --reasoning-parser-plugin nano_v3_reasoning_parser.py \
  --reasoning-parser nano_v3

In the example above, we use a context length of 256k. You can increase the context size up to 1M to support longer contexts. To enable this, set the VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 environment variable as shown below:

VLLM_ALLOW_LONG_MAX_MODEL_LEN=1 \
vllm serve nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 \
  --served-model-name model \
  --max-num-seqs 8 \
  --tensor-parallel-size 1 \
  --max-model-len 1M \
  --port 8000 \
  --trust-remote-code \
  --enable-auto-tool-choice \
  --tool-call-parser qwen3_coder \
  --reasoning-parser-plugin nano_v3_reasoning_parser.py \
  --reasoning-parser nano_v3

Here is an example client code for vLLM. By default, the endpoint has reasoning enabled. We recommend setting a high value (e.g., 10,000) for max_tokens.

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "model",
        "messages":[{"role": "user", "content": "Write a haiku about GPUs"}],
        "max_tokens": 10000
    }'

If you’d like to use reasoning off with vLLM, you can do the following:
vLLM OpenAI curl request:

curl http://localhost:8000/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "model",
        "messages":[{"role": "user", "content": "Write a haiku about GPUs"}],
        "chat_template_kwargs": {"enable_thinking": false}
    }'

vLLM OpenAI client:

response = client.chat.completions.create(model=model, messages=messages, extra_body={"chat_template_kwargs": {"enable_thinking": False}})

Use it with TRT-LLM

For more detailed information on how to use the model with TRT-LLM, please see this cookbook.

# nano_v3 example yaml is https://github.com/NVIDIA/TensorRT-LLM/blob/main/examples/auto_deploy/nano_v3.yaml
trtllm-serve <model_path> \
--backend _autodeploy \
--trust_remote_code \
--reasoning_parser nano-v3 \
--tool_parser qwen3_coder \
--extra_llm_api_options nano_v3.yaml

Use it with SGLang

For more detailed information on how to use the model with SGLang, please see this cookbook.

python3 -m sglang.launch_server --model-path nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 \
  --trust-remote-code \
  --tp 1 \
  --attention-backend flashinfer \
  --tool-call-parser qwen3_coder \
  --reasoning-parser nano_v3

Using Budget Control

The thinking budget allows developers to keep accuracy high and meet response‑time targets - which is especially crucial for customer support, autonomous agent steps, and edge devices where every millisecond counts.

With budget control, you can set a limit for internal reasoning:

  • reasoning_budget: This is a threshold that will attempt to end the reasoning trace at the next newline encountered in the reasoning trace. If no newline is encountered within 500 tokens, it will abruptly end the reasoning trace at reasoning_budget + 500.

NOTE: This client will work with any OpenAI API compatible endpoint.

Client for supporting budget control:

from typing import Any, Dict, List

import openai
from transformers import AutoTokenizer


class ThinkingBudgetClient:
   def __init__(self, base_url: str, api_key: str, tokenizer_name_or_path: str):
       self.base_url = base_url
       self.api_key = api_key
       self.tokenizer = AutoTokenizer.from_pretrained(tokenizer_name_or_path)
       self.client = openai.OpenAI(base_url=self.base_url, api_key=self.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"thinking budget must be smaller than maximum new tokens. Given {max_tokens=} and {reasoning_budget=}"


       # 1. first call chat completion to get reasoning content
       response = self.client.chat.completions.create(
           model=model, messages=messages, max_tokens=reasoning_budget, **kwargs
       )
       content = response.choices[0].message.content


       reasoning_content = content
       if not "</think>" in reasoning_content:
           # reasoning content is too long, closed with a period (.)
           reasoning_content = f"{reasoning_content}.\n</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"remaining tokens must be positive. Given {remaining_tokens=}. Increase the max_tokens or lower the reasoning_budget."


       # 2. append reasoning content to messages and call completion
       messages.append({"role": "assistant", "content": reasoning_content})
       prompt = self.tokenizer.apply_chat_template(
           messages,
           tokenize=False,
           continue_final_message=True,
       )
       response = self.client.completions.create(
           model=model, prompt=prompt, max_tokens=remaining_tokens, **kwargs
       )


       response_data = {
           "reasoning_content": reasoning_content.strip().strip("</think>").strip(),
           "content": response.choices[0].text,
           "finish_reason": response.choices[0].finish_reason,
       }
       return response_data

Calling the server with a budget (Restricted to 32 tokens here as an example)

tokenizer_name_or_path = "nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16"
client = ThinkingBudgetClient(
   base_url="http://localhost:8000/v1",  # Nemotron 3 Nano deployed in thinking mode
   api_key="EMPTY",
   tokenizer_name_or_path=tokenizer_name_or_path,
)


result = client.chat_completion(
   model="nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16",
   messages=[
       {"role": "system", "content": "You are a helpful assistant. /think"},
       {"role": "user", "content": "What is 2+2?"},
   ],
   reasoning_budget=32,
   max_tokens=512,
   temperature=1.0,
   top_p=1.0,
)
print(result)

You should see output similar to the following:

{'reasoning_content': "Okay, the user asked, What is 2+2? Let me think. Well, 2 plus 2 equals 4. That's a basic.", 'content': '2 + 2 equals **4**.\n', 'finish_reason': 'stop'}

Model Version(s)

  • v1.0

Training, Testing, and Evaluation Datasets

Data Modality: Text
The total size: 10,648,823,153,919 Tokens
Total number of datasets: 141
Dataset partition: Training [100%], testing [0%], validation [0%]
Time period for training data collection: 2013 to May 1, 2025
Time period for testing data collection: 2013 to May 1, 2025
Time period for validation data collection: 2013 to May 1, 2025
Data Collection Method by dataset: Hybrid: Automated, Human, Synthetic
Labeling Method by dataset: Hybrid: Automated, Human, Synthetic

NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 is pre-trained on a large corpus of high-quality curated and synthetically-generated data. It is trained in the English language, as well as 19 other languages and 43 programming languages. Our sources cover a variety of document types such as: webpages, dialogue, articles, and other written materials. The corpus spans domains including legal, math, science, finance, and more. We also include a small portion of question-answering, and alignment style data to improve model accuracy. The model was trained for approximately 25 trillion tokens.

The post-training corpus for NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 of high-quality curated and synthetically-generated data. Primary languages used for post-training include English, German, Spanish, French, Italian, and Japanese.

These datasets, such as FinePDFs, EssentialWeb, HotpotQA, SQuAD, and HelpSteer3, do not collectively or exhaustively represent all demographic groups (and proportionally therein). For instance, these datasets do not contain explicit mentions of demographic classes such as age, gender, or ethnicity in 64-99% of samples, depending on the source. In the subset where such terms are present, document-based datasets (FinePDFs and EssentialWeb) contain representational skews, such as references to "male" outnumbering those to "female", and mentions of "White" as the most frequent among ethnic identifiers (comprising 43-44% of ethnicity mentions). To mitigate these imbalances, we recommend considering evaluation techniques such as bias audits, fine-tuning with demographically balanced datasets, and mitigation strategies like counterfactual data augmentation to align with the desired model behavior. This evaluation used a 3,000-sample subset per dataset, identified as the optimal threshold for maximizing embedder accuracy.

During post-training, we generate synthetic data by distilling trajectories, solutions, and translations from strong teacher models and agent systems, often grounded in real tasks or documents and aggressively filtered for quality. For math, code, and science, we start from curated problem sets and use open source permissive models such as GPT-OSS-120B to produce step-by-step reasoning traces, candidate solutions, best-of-n selection traces, and verified CUDA kernels. For long-context and science, we build synthetic QA and reasoning data by retrieving passages from long documents, generating MCQ/OpenQA questions and answers, and paraphrasing them into multiple prompt/response formats to ensure diversity. Across all pipelines we stack automated verification—compilers, numerical checks, language identification—to ensure our data is high quality.

For all domains, we apply a unified data filtering pipeline to ensure that only high-quality, license-compliant, and verifiable samples are used for post-training. We first discard malformed examples using structural checks (e.g., missing tool definitions when tool calls are present). We then aggressively filter reasoning traces exhibiting pathological repetition, such as repeated n-grams within a sliding window or across the entire trajectory, which we found to be a strong indicator of malformed or low-quality reasoning. Finally, based on internal audits of synthetically generated datasets, we observed that some teacher models occasionally produce reasoning traces and final responses that implicitly align with specific political entities or promote nationalistic narratives. To mitigate this, we apply targeted keyword- and regex-based filters and remove all trajectories matching such behavior.

Alongside the model, we release our final pre-training and post-training data, as outlined in this section. For ease of analysis, there is a sample set that is ungated. For all remaining code, math and multilingual data, gating and approval is required, and the dataset is permissively licensed for model training purposes.

More details on the datasets and synthetic data generation methods can be found in the technical report NVIDIA Nemotron 3 Nano.

Dataset Collection Period
GSM8K 4/23/2025
CC-NEWS 4/23/2025
Common Crawl 4/23/2025
Wikimedia 4/23/2025
Bespoke-Stratos-17k 4/23/2025
tigerbot-kaggle-leetcodesolutions-en-2k 4/23/2025
glaive-function-calling-v2 4/23/2025
APIGen Function-Calling 4/23/2025
LMSYS-Chat-1M 4/23/2025
Open Textbook Library - CC BY-SA & GNU subset and OpenStax - CC BY-SA subset 4/23/2025
Advanced Reasoning Benchmark, tigerbot-kaggle-leetcodesolutions-en-2k, PRM800K, and SciBench 4/23/2025
FineWeb-2 4/23/2025
Court Listener Legacy Download
peS2o Legacy Download
OpenWebMath Legacy Download
BioRxiv Legacy Download
PMC Open Access Subset Legacy Download
OpenWebText2 Legacy Download
Stack Exchange Data Dump Legacy Download
PubMed Abstracts Legacy Download
NIH ExPorter Legacy Download
arXiv Legacy Download
BigScience Workshop Datasets Legacy Download
Reddit Dataset Legacy Download
SEC's Electronic Data Gathering, Analysis, and Retrieval (EDGAR) Legacy Download
Advanced Mathematical Problem Solving Legacy Download
MathPile Legacy Download
NuminaMath CoT Legacy Download
PMC Article Legacy Download
FLAN Legacy Download
Advanced Reasoning Benchmark Legacy Download
SciBench Legacy Download
WikiTableQuestions Legacy Download
FinQA Legacy Download
Riddles Legacy Download
Problems in Elementary Mathematics for Home Study Legacy Download
MedMCQA Legacy Download
Cosmos QA Legacy Download
MCTest Legacy Download
AI2's Reasoning Challenge Legacy Download
OpenBookQA Legacy Download
MMLU Auxiliary Train Legacy Download
social-chemestry-101 Legacy Download
Moral Stories Legacy Download
The Common Pile v0.1 Legacy Download
FineMath Legacy Download
MegaMath Legacy Download
MegaMath Legacy Download
MultiverseMathHard 10/2/2025
SWE-Gym 10/2/2025
[WorkBench](https://github.com/olly-styles/Wor
Author
N
NVIDIA
Organization · ✓
nvidia
Details
Downloads1.3M
Likes768
AccessOpen Source
Tasktext-generation
Parameters31.6B
Licenseother
Librarytransformers
CreatedDec 4, 2025
UpdatedMar 15, 2026
View on Hugging Face
Languages
enesfrdejait
Get the full context.

Sign up to read complete case studies, access detailed metrics, and unlock all use cases.

NVIDIA-Nemotron-3-Nano-30B-A3B-BF16 — AI Model Details | Applied