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.
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.
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.
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.
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: 128K tokens
Other Properties Related to Input: Supported languages include: English, Spanish, French, German, Japanese, Italian
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.
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"
)
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, please use this vllm container: ghcr.io/nvidia-ai-iot/vllm:latest-jetson-thor.
pip install -U "vllm>=0.12.0"
Download the custom parser from the Hugging Face repository.
Launch a vLLM server using the custom parser. In this example, we use a context length of 256k. You can increase the context size up to 1M to support longer contexts.
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.
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:
py
1from typing import Any, Dict, List
23import openai
4from transformers import AutoTokenizer
567classThinkingBudgetClient:8def__init__(self, base_url:str, api_key:str, tokenizer_name_or_path:str):9 self.base_url = base_url
10 self.api_key = api_key
11 self.tokenizer = AutoTokenizer.from_pretrained(tokenizer_name_or_path)12 self.client = openai.OpenAI(base_url=self.base_url, api_key=self.api_key)131415defchat_completion(16 self,17 model:str,18 messages: List[Dict[str, Any]],19 reasoning_budget:int=512,20 max_tokens:int=1024,21**kwargs,22)-> Dict[str, Any]:23assert(24 max_tokens > reasoning_budget
25),f"thinking budget must be smaller than maximum new tokens. Given {max_tokens=} and {reasoning_budget=}"262728# 1. first call chat completion to get reasoning content29 response = self.client.chat.completions.create(30 model=model, messages=messages, max_tokens=reasoning_budget,**kwargs
31)32 content = response.choices[0].message.content
333435 reasoning_content = content
36ifnot"</think>"in reasoning_content:37# reasoning content is too long, closed with a period (.)38 reasoning_content =f"{reasoning_content}.\n</think>\n\n"39 reasoning_tokens_len =len(40 self.tokenizer.encode(reasoning_content, add_special_tokens=False)41)42 remaining_tokens = max_tokens - reasoning_tokens_len
43assert(44 remaining_tokens >045),f"remaining tokens must be positive. Given {remaining_tokens=}. Increase the max_tokens or lower the reasoning_budget."464748# 2. append reasoning content to messages and call completion49 messages.append({"role":"assistant","content": reasoning_content})50 prompt = self.tokenizer.apply_chat_template(51 messages,52 tokenize=False,53 continue_final_message=True,54)55 response = self.client.completions.create(56 model=model, prompt=prompt, max_tokens=remaining_tokens,**kwargs
57)585960 response_data ={61"reasoning_content": reasoning_content.strip().strip("</think>").strip(),62"content": response.choices[0].text,63"finish_reason": response.choices[0].finish_reason,64}65return response_data
Calling the server with a budget (Restricted to 32 tokens here as an example)
py
1tokenizer_name_or_path ="nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16"2client = ThinkingBudgetClient(3 base_url="http://localhost:8000/v1",# Nemotron 3 Nano deployed in thinking mode4 api_key="EMPTY",5 tokenizer_name_or_path=tokenizer_name_or_path,6)789result = client.chat_completion(10 model="nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16",11 messages=[12{"role":"system","content":"You are a helpful assistant. /think"},13{"role":"user","content":"What is 2+2?"},14],15 reasoning_budget=32,16 max_tokens=512,17 temperature=1.0,18 top_p=1.0,19)20print(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.
The English Common Crawl data was downloaded from the Common Crawl Foundation (see their FAQ for details on their crawling) and includes the snapshots CC-MAIN-2013-20 through CC-MAIN-2025-13. The data was subsequently deduplicated and filtered in various ways described in the Nemotron-CC paper. Additionally, we extracted data for fifteen languages from the following three Common Crawl snapshots: CC-MAIN-2024-51, CC-MAIN-2025-08, CC-MAIN-2025-18. The fifteen languages included were Arabic, Chinese, Danish, Dutch, French, German, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Swedish, and Thai. As we did not have reliable multilingual model-based quality classifiers available, we applied just heuristic filtering instead—similar to what we did for lower quality English data in the Nemotron-CC pipeline, but selectively removing some filters for some languages that did not work well. Deduplication was done in the same way as for Nemotron-CC.
The GitHub Crawl was collected using the GitHub REST API and the Amazon S3 API. Each crawl was operated in accordance with the rate limits set by its respective source, either GitHub or S3. We collect raw source code and subsequently remove any having a license which does not exist in our permissive-license set (for additional details, refer to the technical report).
Synthetic Multilingual Science and Code data from DeepSeek-R1, DeepSeek-R1-0528, Qwen2.5-32B-Instruct, and Qwen3-235B-A22B, translated with Qwen2.5-32B-Instruct and Qwen2.5-14B-Instruct
Synthetic Structured Outputs from Qwen3-30B-A3B-Instruct-2507, Qwen3-30B-A3B-Thinking-2507, Qwen3-235B-A22B-Instruct-2507, and Qwen3-235B-A22B-Thinking-2507
We use a considerable amount of synthetic data. Out of 10.6 trillion tokens, 3,534,013,958,278 tokens are synthetically generated.
We extracted data for fifteen languages from the following three Common Crawl snapshots: CC-MAIN-2024-51, CC-MAIN-2025-08, CC-MAIN-2025-18. The fifteen languages included were Arabic, Chinese, Danish, Dutch, French, German, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Swedish, and Thai. As we did not have reliable multilingual model-based quality classifiers available, we applied just heuristic filtering instead—similar to what we did for lower quality English data in the Nemotron-CC pipeline, but selectively removing some filters for some languages that did not work well. Deduplication was done in the same way as for Nemotron-CC. Additionally, we used data from Wikipedia and FineWeb-2 (Penedo et al., 2025) for these fifteen languages as well as four additional languages: Czech, Finnish, Hebrew, and Hindi.
Language
Total Tokens
Arabic
118,056,362,726
Danish
117,747,321,618
German
146,613,691,781
Spanish
469,156,575,409
French
139,982,002,289
Italian
298,858,370,174
Japanese
682,755,693,336
Korean
127,099,747,538
Dutch
89,041,592,681
Polish
105,356,493,147
Portuguese
243,249,275,089
Russian
185,314,014,057
Swedish
74,954,953,299
Thai
160,778,944,467
Chinese
211,007,236,689
We collect a total of 922,476,782,017 tokens of code in 43 different languages.
Language
Tokens
Assembly
750,628,764
C
42,657,300,868
C#
56,153,329,307
C++
67,773,701,658
CommonLisp
263,234,672
CSS
38,848,760,035
Cuda
400,222,993
Dart
3,816,960,470
Dockerfile
474,958,084
Fortran
1,105,049,387
Go
8,332,419,480
Haskell
1,294,613,669
HTML
69,082,117,487
Java
131,440,465,822
JavaScript
75,573,420,861
JSON
15,366,881,241
Julia
621,046,949
JupyterNotebook
2,241,893,197
Lua
4,146,420,802
Makefile
12,640,010,879
Markdown
64,796,743,311
Mathematica
320,504,225
OmniversePython
26,946,093
Pascal
1,625,013,876
Perl
1,575,314,434
PHP
61,575,339,005
Python
126,916,727,384
R
19,811,381,935
reStructuredText
1,779,876,391
Ruby
6,446,962,615
Rust
4,438,640,533
Scala
3,343,959,154
Shell
18,758,779,250
SQL
23,205,633,085
Swift
5,976,714,881
SystemVerilog
233,056,185
TeX
7,347,157,527
TypeScript
15,657,838,582
Verilog
811,884,369
VHDL
648,401,444
VisualBasic.NET
1,005,680,881
XML
12,616,779,741
YAML
10,574,010,491
Language Distribution in Post-Training
For our post-training recipe, we focused on 5 main languages in addition to English: Spanish, French, Japanese, Italian, German.
Those languages were represented in the form of multilingual reasoning and translation task.
The following table depicts our sample distribution for the 6 languages and 5 translation pairs.
Language
Size
English
16.2 M
Italian
0.252M
German
0.252M
Spanish
0.252M
French
0.252M
Japanese
0.252M
English <-> Italian
108k
English <-> German
108k
English <-> Spanish
108k
English <-> French
108k
English <-> Japanese
108k
Evaluation Dataset
Data Collection Method by dataset: Hybrid: Human, Synthetic
Labeling Method by dataset: Hybrid: Automated, Human, Synthetic
Inference
Engines: HF, vLLM, TRT-LLM, SGLang, Llama.cpp
Test Hardware: NVIDIA A100 80GB, H100 80GB, B200 192GB, RTX PRO 6000 96GB, Jetson Thor
Ethical Considerations
NVIDIA believes Trustworthy AI is a shared responsibility and we have established policies and practices to enable development for a wide array of AI applications. When downloaded or used in accordance with our Trustworthy AI terms of service, developers should work with their internal model team to ensure this model meets requirements for the relevant industry and use case and addresses unforeseen product misuse.
We advise against circumvention of any provided safety guardrails contained in the Model without a substantially similar guardrail appropriate for your use case.For more details: Safety and Explainability Subcards.
For more detailed information on ethical considerations for this model, please see the Model Card++ Bias, and Privacy Subcards.
Please report security vulnerabilities or NVIDIA AI Concerns here.
Citation
@misc{nvidia_nemotron_nano_v3_2025,
title = {{Nemotron 3 Nano}: Open, Efficient Mixture-of-Experts Hybrid {Mamba}-{Transformer} Model for {Agentic} Reasoning},
author = {{NVIDIA}},
year = {2025},
url = {https://arxiv.org/abs/2512.20848},
note = {Technical report}
}