Model reference · open weights
Mellum2-Thinking is an open-weight language model from JetBrains. Mellum2-12B-A2.5B-Thinking (BF16) weighs 24.3 GB; the smallest configuration that runs it is 2× RTX 4060 Ti 16 GB.
What it is
| Released by | JetBrains |
|---|---|
| Type | Language models |
| Task | Text gen |
| Parameters (lead) | 12.1B |
| Context | 131,072 tokens |
| Runs with | transformers |
| Released | 2026-05-26 |
| Popularity | 2k downloads / month |
| Weights | 24.3 GB (Mellum2-12B-A2.5B-Thinking (BF16), file size) |
| Licence | Open weights |
What it runs on
Weights 24.3 GB (file size) · KV cache 14 MB per 1,000 tokens of context, at 16 bits (vLLM's default for this build; an 8-bit cache halves it) · plus 220 MB a request for its sliding-window layers · runtime overhead from 1.2 GB on a small card · context up to 131,072 tokens.
| Card | Requests at once 8K tokens each | Requests at once 32K tokens each | Longest single request | Counted memory |
|---|---|---|---|---|
| RTX 3060 12 GB … RTX 4090 24 GB 4 smaller cards | — | — | — | |
| RTX 5090 32 GB | 16 | 8 | all 128K | 31.0 GB |
| L40S 48 GB | 54 | 26 | all 128K | 44.0 GB |
| A100 80 GB | 156 | 76 | all 128K | 78.2 GB |
| H100 80 GB | 101 | 39 | all 128K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 134 | 51 | all 128K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 163 | 63 | all 128K | 107 GB |
| H200 141 GB | 228 | 88 | all 128K | 138 GB |
| B200 180 GB | 304 | 76 | all 128K | 176 GB |
| 2× RTX 4060 Ti 16 GB tensor parallel | 12 | 6 | all 128K | 15.4 GB a card |
| 2× RTX 4090 24 GB tensor parallel | 59 | 29 | all 128K | 23.4 GB a card |
| 2× RTX 3090 24 GB tensor parallel | 59 | 29 | all 128K | 23.4 GB a card |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 25.8 GB | 26.1 GB |
| 5 | 27.1 GB | 28.9 GB |
| 8 | 28.2 GB | 31.0 GB |
| 16 | 30.9 GB | 36.5 GB |
| 32 | 36.3 GB | 47.5 GB |
| 64 | 47.1 GB | 69.6 GB |
On one card, with vLLM's small-card settings (2,048 tokens a step). Cards of 70 GB and more reserve more per request and more overhead — each row above uses its own card's settings.
Estimates, not measurements, checked against published vLLM startup logs. The weights are the build's file size; the cache is calculated from its config (attention with sliding-window layers); the overhead is an estimate of vLLM's own memory with that card's default settings. "Requests at once" is how many requests of that length vLLM admits — its reservation at full length, with --max-model-len set to that length; requests that stay shorter fit more. "Longest single request" is the most one request can hold there: below the model's maximum, vLLM starts only with --max-model-len set at or under it. "Counted memory" is vLLM's default 92 % of what CUDA reports for the card (the DGX Spark: about 100 GiB of its shared 128 GB). A tensor-parallel split pools the cards' memory and speeds each token up, at the cost of the link between them; a layer split (llama.cpp) holds more but does not make one request faster. Assumes vLLM 0.10 or later.
From the model card
[!Note] Use this model when you want explicit chain-of-thought before the final answer — complex debugging, multi-step planning, agentic workflows, and math- or reasoning-heavy tasks. For direct, low-latency answers without reasoning traces, use Instruct instead.
Mellum 2 Thinking is a post-trained reasoning-augmented assistant model trained by JetBrains.
The model uses a Mixture-of-Experts architecture with 64 experts and activates 8 experts per token. It uses a combination of sliding-window and full attention layers, with a context length of 131,072 tokens.
It is produced from Mellum2-12B-A2.5B-Base by supervised fine-tuning (loss computed only on the final assistant turn) followed by reinforcement learning with verifiable rewards (RLVR) on a harder data mix that includes a long-form math subset. The model emits its reasoning inside ... blocks before the final answer.
This repository contains one checkpoint from the Mellum 2 family.
| Checkpoint | Description |
|---|---|
| Base Pretrain | Base checkpoint before long-context extension |
| Base | Final base model |
| Instruct SFT | Supervised instruction-tuned checkpoint |
| Thinking SFT | Supervised thinking checkpoint |
| Instruct | RL-tuned instruction model |
| Thinking | RL-tuned thinking model |
Mellum2 Thinking has the following features:
# Without tool calling
vllm serve JetBrains/Mellum2-12B-A2.5B-Thinking \
--max-model-len 131072 \
--reasoning-parser qwen3
# With tool calling
vllm serve JetBrains/Mellum2-12B-A2.5B-Thinking \
--max-model-len 131072 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice \
--tool-call-parser hermes
Text-Only Input
from openai import OpenAI
# Configured by environment variables
client = OpenAI()
messages = [
{"role": "user", "content": "Is 1024 a power of 2? Explain your reasoning."},
]
chat_response = client.chat.completions.create(
model="JetBrains/Mellum2-12B-A2.5B-Thinking",
messages=messages,
max_tokens=81920,
temperature=0.6,
top_p=0.95,
extra_body={
"top_k": 20,
},
)
print("Chat response:", chat_response)
Post-training evaluation for the thinking/reasoning variants. All values are percentages; higher is better except HarmBench, where lower is better. All values self-reported by JetBrains.
| Benchmark | Mellum2 Thinking SFT | Mellum2 Thinking | Qwen3.5 (4B) | Qwen3.5 (9B) | OLMo-3 (7B) | Ministral 3 (14B) |
|---|---|---|---|---|---|---|
| Coding | ||||||
| LiveCodeBench v6 | 75.1 | 69.9 | 59.4 | 68.3 | 59.8 | 42.7 |
| Tool Use | ||||||
| BFCL v4 | 38.8 | 45.6 | 42.9 | 42.7 | — | 35.9 |
| BFCL v3 | 60.5 | 69.4 | 73.9 | 68.5 | — | 52.2 |
| Math | ||||||
| AIME | 20.0 | 58.4 | 68.3 | 73.4 | 61.7 | 38.3 |
| GSM-Plus | 62.6 | 87.0 | 89.3 | 90.7 | 88.1 | 86.5 |
| Knowledge | ||||||
| MMLU-Redux | 84.8 | 86.2 | 88.3 | 91.7 | 71.3 | 84.4 |
| GPQA Diamond | 39.9 | 57.6 | 76.8 | 81.3 | 29.3 | 46.0 |
| Conversational | ||||||
| IFEval | 69.1 | 76.5 | 87.1 | 89.8 | 84.7 | 59.7 |
| JetBrains pairwise | 64.4 | 69.5 | 40.5 | 56.7 | 32.2 | 63.8 |
| MixEval | 63.4 | 66.9 | 71.9 | 76.0 | 67.0 | 70.8 |
| BS-Bench | 14.0 | 15.0 | 63.0 | 70.0 | 23.0 | 9.0 |
| Safety | ||||||
| HarmBench (↓) | 12.2 | 20.6 | 15.9 | 6.6 | 48.7 | 70.0 |
| XSTest | 90.8 | 89.6 | 96.8 | 97.6 | 93.2 | 96.8 |
Notes:
Quoted from the model card on Hugging Face — the full card is behind the Hugging Face link above.
Benchmarks
As published on the model card — the maker's own numbers, not measured by AxForge.
| Task | Dataset | Metric | Score |
|---|---|---|---|
| Text Generation | LiveCodeBench v6 | pass@1 | 69.900 |
| Text Generation | BFCL v3 | accuracy | 69.400 |
| Text Generation | BFCL v4 (macro-avg of 5 subtasks) | accuracy | 45.600 |
| Text Generation | AIME 2025+2026 (mean, 30 questions each) | exact match | 58.400 |
| Text Generation | GSM-Plus | exact match | 87 |
| Text Generation | MMLU-Redux | accuracy | 86.200 |
| Text Generation | GPQA Diamond | accuracy | 57.600 |
| Text Generation | IFEval (prompt-level strict accuracy) | accuracy | 76.500 |
| Text Generation | MixEval | accuracy | 66.900 |
| Text Generation | BS-Bench (detection rate) | detection rate | 15 |
| Text Generation | HarmBench (harmful rate, lower is better) | harmful rate | 20.600 |
| Text Generation | XSTest (safe compliance) | safe compliance | 89.600 |