Model reference · open weights

Nemotron-Cascade-2

Available as managed deployment Licence fee LLMs nvidia Text gen · MoE 1 variants 32k dl/mo

Nemotron-Cascade-2 is an open-weight language model from nvidia. AxForge deploys and operates it for you on dedicated EU-owned hardware — with the licence handled where one is required.

Available as managed deployment — configured and operated for you on dedicated EU hardware, quoted per deployment.

What it is

Released byNVIDIA
TypeLanguage models
TaskText gen · MoE
Parameters (lead)31.6B
Context256k tokens
Runs withtransformers
Released2026-03-18
Popularity32k downloads / month
LicenceCommercial licence needed

About

What Nemotron-Cascade-2 is

Introduction

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.

Read the full model card

Benchmark Results

  • † Numbers in brackets refers to Tool-Integrated Reasoning (TIR) results.
  • ‡ For the baseline models, we evaluate them using the recommended settings when official numbers are unavailable; otherwise, we report the official numbers directly.

Quick Start

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

vLLM setup

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.

Chat Template

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'

Python Tool Use

From the published model card. Full card on the HuggingFace links in the sidebar.

Using it via the API

Call it like any OpenAI endpoint

Once AxForge deploys nemotron-cascade-2 for you, it answers on the OpenAI-compatible API — the same base URL and keys as every other model. (nemotron-cascade-2 below is illustrative; you get the exact model name on deployment.)

$ curl -sS https://api.axforge.ai/v1/chat/completions \
  -H "Authorization: Bearer $AXFORGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"nemotron-cascade-2","messages":[{"role":"user","content":"Hello"}]}'

Create an account — your API key is available in the console. 3M free tokens every 30 days with every new account.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms