Model reference · open weights
Nemotron-Cascade-2 is an open-weight language model from NVIDIA. Nemotron-Cascade-2-30B-A3B (BF16) weighs 63.2 GB; the smallest configuration that runs it is H100 80 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the nvidia/Nemotron-Cascade-2-30B-A3B model card, 2026-10-01
What it is
| Released by | NVIDIA |
|---|---|
| Released | 2026-03-18 |
| Parameters | 31.6B |
| VRAM | 63.2 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB … L40S 48 GB 6 smaller cards | ||||
| A100 80 GB | 91 | 45 | all 256K | 78.2 GB |
| H100 80 GB | 50 | 25 | all 256K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 156 | 77 | all 256K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 247 | 122 | all 256K | 107 GB |
| H200 141 GB | 453 | 224 | all 256K | 138 GB |
| B200 180 GB | 689 | 341 | all 256K | 176 GB |
| 2× L40S 48 GB tensor parallel | 148 | 73 | all 256K | 44.0 GB a card |
| 4× RTX 4090 24 GB tensor parallel | 124 | 49 | all 256K | 23.4 GB a card |
| 4× RTX 3090 24 GB tensor parallel | 125 | 49 | all 256K | 23.4 GB a card |
| 4× RTX 5090 32 GB tensor parallel | 278 | 110 | all 256K | 31.0 GB a card |
| 2× H100 80 GB tensor parallel | 526 | 261 | all 256K | 78.1 GB a card |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 64.7 GB | 64.8 GB |
| 5 | 65.3 GB | 66.0 GB |
| 8 | 65.7 GB | 66.9 GB |
| 16 | 66.9 GB | 69.3 GB |
| 32 | 69.3 GB | 74.1 GB |
| 64 | 74.0 GB | 83.7 GB |
One card, with vLLM's small-card settings.
From the model card
We're excited to introduce Nemotron-Cascade-2-30B-A3B, an open 30B MoE model with 3B activated parameters that delivers strong reasoning and agentic capabilities. It is post-trained from the Nemotron-3-Nano-30B-A3B-Base. Nemotron-Cascade-2-30B-A3B achieves gold medal performance in both the 2025 International Mathematical Olympiad (IMO) and the International Olympiad in Informatics (IOI). It operates in both thinking and instruct (non-thinking) modes.
Nemotron-Cascade-2-30B-A3B follows the ChatML template and supports both thinking and instruct (non-thinking) modes. Reasoning content is enclosed within and tags. To activate the instruct (non-thinking) mode, we prepend `` to the beginning of the assistant’s response.
Nemotron-Cascade-2-30B-A3B supports up to a 1M-token context length.
Nemotron-Cascade-2-30B-A3B does not currently support OpenCode; it primarily supports OpenHands for agentic coding and SWE tasks.
To reduce the context length in a multi-turn conversation, when the previous user turn involves thinking mode, only the final summary of the model's output will be added to the conversation history.
Note that we do not define a separate tool role for tool responses; instead, we place them under the user role and warp them with and.
We recommend setting the sampling parameters to temperature = 1.0 and top_p = 0.95.
Requires vLLM version >= 0.17.1. The following will create API endpoints at http://localhost:8000/v1:
Standard version: Use the following command to create an API endpoint with a maximum context length of 1M tokens.
vllm serve nvidia/Nemotron-Cascade-2-30B-A3B --port 8000 --tensor-parallel-size 1 --gpu-memory-utilization 0.9 --max-model-len 262144 --reasoning-parser nano_v3 --mamba-ssm-cache-dtype float32 --port 8000 --trust_remote_code
Tool Call: Use the following command to enable tool support.
vllm serve nvidia/Nemotron-Cascade-2-30B-A3B --port 8000 --tensor-parallel-size 1 --gpu-memory-utilization 0.9 --max-model-len 262144 --reasoning-parser nano_v3 --mamba-ssm-cache-dtype float32 --port 8000 --trust_remote_code --enable-auto-tool-choice --tool-call-parser qwen3_coder
UPDATE (July 9, 2026): We changed --reasoning-parser from nemotron_v3 to nano_v3. The nano_v3 parser simply splits the output on : content before is treated as reasoning content, and content after it is treated as summary content. If is not present, the entire output remains in `reasoning content`. In contrast, the `nemotron_v3` parser treats or as an implicit end-of-reasoning boundary when is missing. This difference affects tool-calling scenarios.
from transformers import AutoTokenizer
model_name = 'nvidia/Nemotron-Cascade-2-30B-A3B'
tokenizer = AutoTokenizer.from_pretrained(model_name)
'''
single-turn example
'''
messages = [
{"role": "system", "content": "You are a helpful and harmless assistant.\n\nYou are not allowed to use any tools"},
{"role": "user", "content": "calculate 1+1?"}
]
# thinking mode
prompt_thinking = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=True)
# prompt_thinking = 'system\nYou are a helpful and harmless assistant.\n\nYou are not allowed to use any tools\nuser\ncalculate 1+1?\nassistant\n\n'
# instruct mode
prompt_instruct = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=False)
# prompt_instruct = 'system\nYou are a helpful and harmless assistant.\n\nYou are not allowed to use any tools\nuser\ncalculate 1+1?\nassistant\n'
'''
multi-turn example
'''
messages = [
{"role": "system", "content": "You are a helpful and harmless assistant.\n\nYou are not allowed to use any tools"},
{"role": "user", "content": "calculate 1+1?"},
{"role": "assistant", "content": "THINKING_CONTENT\nTo calculate \\(1 + 1\\):\n\n1. **Identify the operation**: This is a basic addition problem involving two integers.\n2. **Perform the addition**: \n \\(1 + 1 = 2\\).\n\n**Result**: \\(\\boxed{2}\\)",},
{"role": "user", "content": "what about 2+2"}
]
# thinking mode
prompt_thinking = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=True)
# prompt_thinking = 'system\nYou are a helpful and harmless assistant.\n\nYou are not allowed to use any tools\nuser\ncalculate 1+1?\nassistant\n\nTo calculate \\(1 + 1\\):\n\n1. **Identify the operation**: This is a basic addition problem involving two integers.\n2. **Perform the addition**: \n \\(1 + 1 = 2\\).\n\n**Result**: \\(\\boxed{2}\\)\nuser\nwhat about 2+2\nassistant\n\n'
# instruct mode
prompt_instruct = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True, enable_thinking=False)
# prompt_instruct = 'system\nYou are a helpful and harmless assistant.\n\nYou are not allowed to use any tools\nuser\ncalculate 1+1?\nassistant\n\nTo calculate \\(1 + 1\\):\n\n1. **Identify the operation**: This is a basic addition problem involving two integers.\n2. **Perform the addition**: \n \\(1 + 1 = 2\\).\n\n**Result**: \\(\\boxed{2}\\)\nuser\nwhat about 2+2\nassistant\n'
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.