Blog/Reasoning token budget
Inference · November 2026

Reasoning model token budget: thinking tokens per answer, seconds on local GPUs, and how to cap it

By Samuel Seidel · Published November 7, 2026 · Sources checked November 7, 2026

Open reasoning models spend roughly 660 to 8,600 thinking tokens before the first answer token on Artificial Analysis's speed-test prompts (my arithmetic from its 7 November 2026 data), and over 20,000 per problem on hard math. At local speeds that is the wait: 5,200 thinking tokens take about 82 seconds on an RTX 5090 running a dense 27B at 63.7 tok/s, and 136 seconds on a DGX Spark at 38.1 tok/s. Every current family has a switch, from enable_thinking: false and reasoning_effort to llama.cpp's --reasoning-budget and vLLM's thinking_token_budget, and published scores show the cost of using it is large on math and agentic coding and small on knowledge questions.

How many tokens do reasoning models spend?

Between 63 and 174 million output tokens for a full Artificial Analysis index run, and from under a thousand to about nine thousand thinking tokens on a typical speed-test prompt.

Model (effort)Intelligence Index v5.0.1Output tokens, full indexTime to first answer tokenAPI speedThinking tokens before answer (my estimate)
DeepSeek V4.1 Flash (max)33174M53.6 s161 tok/s~8,600
DeepSeek V4.1 Flash (high)29134M24.2 s164 tok/s~4,000
GLM-5.3 (max)32135M103.9 s64 tok/s~6,650
GLM-5.3 (low)2363.3M13.8 s48 tok/s~660
Kimi K3.1 Pro46113M174.8 s33 tok/s~5,770
MiMo-V2.6-Flash27163M53.9 s34 tok/s~1,830
Qwen3.8 27B (xhigh)20128M126.8 s41 tok/s~5,200
Nemotron 3.5 Super VL14119M14.7 s173 tok/s~2,550

Artificial Analysis model pages, read 7 November 2026; index v5.0.1 (methodology updated 3 November 2026) has nine evaluations, several of them agentic. Its gpt-oss-120b page describes output speed as measured end to end including reasoning tokens. The last column is my estimate: time to first answer token times output speed. It slightly overstates thinking because the time also includes queueing and prefill. Medians on these pages are 99.3M index tokens for the larger open-model class and 77.7M for Qwen3.8 27B's class.

The token totals are not per-question counts; the methodology runs some evaluations several times, so compare models with each other, not with your own prompts. The order is the useful part: Kimi K3.1 Pro scores highest while using fewer tokens than DeepSeek V4.1 Flash at max or MiMo-V2.6-Flash. For a single hard problem, OpenAI's gpt-oss model card gives the upper range: gpt-oss-20b uses "over 20k CoT tokens per problem on average" on AIME at high effort.

How long does thinking take on an RTX 5090 or a DGX Spark?

Divide thinking tokens by single-user decode speed: at 40 to 100 tok/s, a 5,000-token think takes one to two minutes before any answer appears.

Thinking tokensRTX 5090, dense 27B, 63.7 tok/sRTX 5090, same + MTP, 105.5 tok/sRTX 5090 + RAM offload, gpt-oss-120b, ~30 tok/sDGX Spark, gpt-oss-120b, 58.7 tok/sDGX Spark, Qwen3.8-27B, 38.1 tok/sDGX Spark, Qwen3.6-35B-A3B, 86.3 tok/s
660 (GLM-5.3 low)10 s6 s22 s11 s17 s8 s
2,550 (Nemotron 3.5 Super VL)40 s24 s85 s43 s67 s30 s
5,200 (Qwen3.8 27B xhigh)82 s49 s173 s89 s136 s60 s
8,600 (DeepSeek V4.1 Flash max)135 s82 s287 s146 s226 s100 s
20,000 (gpt-oss-20b, AIME, high)314 s190 s667 s341 s525 s232 s

My arithmetic: tokens divided by a reported single-user speed. Speeds: Qwen3.6-27B q4_0 on an RTX 5090 in llama.cpp without and with MTP (PR #22673, May 2026); gpt-oss-120b with --n-cpu-moe 21 on an RTX 5090 (llama.cpp gpt-oss guide, August 2025); gpt-oss-120b MXFP4 tg32 at depth 0 on a DGX Spark (llama.cpp DGX Spark benchmarks, build 7941); Qwen3.8-27B NVFP4 with a DFlash2 draft on SGLang at 4k (SparkBench, 10 September 2026); Qwen3.6-35B-A3B NVFP4 with MTP on vLLM at 4k (SparkBench, 4 August 2026). The row labels say where each token count comes from; the speeds belong to the column's model, so this is a time scale, not a per-model prediction.

The table is optimistic for long thinking, because decode slows as the chain of thought fills the context. The same llama.cpp page has gpt-oss-120b at 58.7 tok/s at depth 0, 49.5 at 16k and 42.8 at 32k; SparkBench has Qwen3.8-27B falling from 38.1 at 4k to 19.1 at 50k. Speculative decoding helps here more than anywhere, since reasoning text is long and predictable (see MTP and EAGLE-3 speedups). A long think also grows the KV cache; the KV cache table gives the memory per token.

On rented hardware the cost is small per answer and large per day: on a DGX Spark at $0.79 an hour, 5,200 tokens at 38.1 tok/s is 136 seconds, or $0.03, but a single user who sends 200 such prompts waits over seven hours in total.

How much quality do you lose with less thinking?

A lot on competition math, science and agentic coding; little on knowledge tests.

Model and benchmarkOff / lowMedium / HighHigh / MaxSource
gpt-oss-120b, AIME 2025 (no tools)50.4 (low)80.0 (medium)92.5 (high)OpenAI model card
gpt-oss-120b, GPQA Diamond67.173.180.1OpenAI model card
gpt-oss-120b, SWE-bench Verified47.952.662.4OpenAI model card
gpt-oss-120b, MMLU85.988.090.0OpenAI model card
DeepSeek-V4-Flash, HLE8.1 (non-think)29.4 (High)34.8 (Max)DeepSeek model card
DeepSeek-V4-Flash, LiveCodeBench55.288.491.6DeepSeek model card
DeepSeek-V4-Flash, SWE Verified73.778.679.0DeepSeek model card
DeepSeek-V4-Flash, MMLU-Pro83.086.486.2DeepSeek model card

Vendor-reported scores. OpenAI's card is dated 5 August 2025; the DeepSeek card was read 7 November 2026.

The pattern is the same in both: the first step up (off to High for DeepSeek, low to medium for gpt-oss) buys most of the gain on reasoning-heavy tests, and the last step costs the most tokens for the least. DeepSeek-V4-Flash gains 21.3 points on HLE from non-think to High and 5.4 more from High to Max, while SWE Verified moves 4.9 and then 0.4. The Artificial Analysis pairs agree on the token side: DeepSeek V4.1 Flash max spends 40M more index tokens than high for 4 points, and its time to first answer token more than doubles. MMLU-style knowledge barely moves, so for retrieval, summaries and chat, thinking off is usually the right default.

How do you cap or switch off thinking for each model?

Each family has its own switch in the chat template or system prompt; the engines add a generic token cap on top.

Model familySwitch offLower effortHard capSource
Qwen3.8, Qwen3.6enable_thinking: False via chat_template_kwargsreasoning_effort: xhigh (default), medium, lowengine budgetQwen3.8-27B card
gpt-ossno off mode"Reasoning: low / medium / high" in the system promptengine budgetgpt-oss card
Nemotron 3 Superenable_thinking: Falselow_effort: Truereasoning_budget: closes at the next newline, or abruptly at budget + 500Nemotron card
DeepSeek-V4-FlashNon-think modeThink High vs Think Max (Max wants at least 384K context)engine budgetDeepSeek card
GLM-5.3not checkedlow and max variants listed by Artificial Analysisengine budgetArtificial Analysis

DeepSeek V4 ships no Jinja chat template; its card selects the mode with an encode_messages(..., thinking_mode=...) helper, so check that your engine's DeepSeek V4 integration exposes it. Qwen3.8-27B also keeps earlier turns' thinking by default (preserve_thinking), which grows context in long agent sessions.

Which engine flags set a thinking budget?

llama.cpp and vLLM both have a hard token cap; Ollama has on, off and named levels only.

# llama.cpp: no thinking, a 2,048-token cap, or a template switch
llama-server -m model.gguf --reasoning-budget 0
llama-server -m model.gguf --reasoning-budget 2048 \
  --reasoning-budget-message "Time is up. Give the answer now."
llama-server -m model.gguf --chat-template-kwargs '{"enable_thinking": false}'

# vLLM: per request (OpenAI-compatible body)
{"model": "...", "messages": [...], "reasoning_effort": "low"}
{"model": "...", "messages": [...], "thinking_token_budget": 2048}
{"model": "...", "messages": [...], "chat_template_kwargs": {"enable_thinking": false}}

# Ollama: per request
{"model": "gpt-oss:120b", "messages": [...], "think": "low"}
{"model": "qwen3", "messages": [...], "think": false}

Details from the docs. In the llama-server README, --reasoning-budget takes -1 for unrestricted (the default), 0 to end thinking immediately, or a positive token count, and --reasoning-format decides whether thoughts land in reasoning_content. vLLM's reasoning outputs page (5 November 2026) needs --reasoning-parser (qwen3, deepseek_r1, gemma4, glm45 and others), counts thinking_token_budget from the reasoning start string set in --reasoning-config, maps reasoning_effort: none to thinking off, and offers --default-chat-template-kwargs for a server-wide default; reasoning now comes back in a field named reasoning, not reasoning_content. Ollama's thinking docs accept true, false or a level name, list gpt-oss levels as low, medium and high with medium the default, and document no token budget. For engine setup on a Spark, see the llama.cpp and vLLM docs.

A hard cap is blunter than an effort level. The model was trained to finish its own chain of thought; cutting it mid-sentence and forcing an answer is a different regime from asking for low effort, and I found no published accuracy table for truncated budgets on these models. Prefer the model's own effort setting, and use the token cap as a ceiling against runaway thinking.

Which thinking budget should you use locally?

Off for chat, retrieval and summaries; the lowest effort that passes your own test set for coding and analysis; high only for problems where you would wait minutes anyway.

For one person on an RTX 5090 or a DGX Spark, I would default Qwen3.8-27B or Qwen3.6 to enable_thinking: false, and gpt-oss-120b to Reasoning: medium, which the card shows recovers most of the AIME gain over low (80.0 against 50.4) at a fraction of high's length. Then set --reasoning-budget or thinking_token_budget to about 8,000 tokens as a guard, which caps the wait at about 1.3 to 4.5 minutes at the speeds above. Agent loops are the exception: tool-heavy tasks gained 10 points on SWE-bench Verified from medium to high for gpt-oss-120b, and an agent that retries a failed step burns more tokens than one that thought longer the first time. Measure on your own prompts; the DGX Spark model guide lists reported speeds to plug into the table above, and the RTX 5090 page has that card's rental details.

FAQ

How many tokens does a reasoning model use per answer?

Hundreds to tens of thousands. By my arithmetic from Artificial Analysis data (7 November 2026), open models think for about 660 tokens (GLM-5.3 at low effort) to 8,600 (DeepSeek V4.1 Flash at max) before the first answer token on its speed-test prompts. On hard math it is far more: OpenAI's card says gpt-oss-20b uses over 20,000 chain-of-thought tokens per AIME problem on average at high effort.

How long does a reasoning model take to answer on a local GPU?

Thinking tokens divided by decode speed. At 63.7 tok/s, a dense 27B on an RTX 5090 in llama.cpp, 5,200 thinking tokens take about 82 seconds; with MTP at 105.5 tok/s, about 49. On a DGX Spark, gpt-oss-120b at 58.7 tok/s needs about 89 seconds for the same budget, and 20,000 tokens take over five and a half minutes.

How do I turn off thinking in llama.cpp?

Start llama-server with --reasoning-budget 0, which ends the thinking block immediately, or pass the model's template switch, for example --chat-template-kwargs '{"enable_thinking": false}' for Qwen and Nemotron. A positive value such as --reasoning-budget 2048 caps thinking at that many tokens, and --reasoning-budget-message injects text before the end-of-thinking tag when the cap is hit.

Does a lower reasoning effort reduce quality?

Yes, mostly on math, science and agentic coding. gpt-oss-120b scored 50.4 on AIME 2025 at low effort, 80.0 at medium and 92.5 at high, and 47.9, 52.6 and 62.4 on SWE-bench Verified (OpenAI model card). DeepSeek-V4-Flash scored 8.1 on HLE without thinking, 29.4 at High and 34.8 at Max. Knowledge tests such as MMLU move only 2 to 4 points.

Can I set a thinking budget in vLLM?

Yes. vLLM's thinking_token_budget sampling parameter caps reasoning tokens per request, configured with --reasoning-config (reasoning_start_str and reasoning_end_str) or inferred from the reasoning parser. reasoning_effort set to low, medium or high enables thinking and none disables it, and chat_template_kwargs with enable_thinking false switches it off for Qwen-style templates. The docs page is dated 5 November 2026.

Sources

Every figure above is attributed to its source in the sentence or table where it appears. Pages were read on 7 November 2026 unless a date says otherwise.

Related pages

First top-up: pay $20, get $30 in credit

Time your model's thinking on real hardware.

Run the same prompt at each effort level on a rented DGX Spark at $0.79 an hour, billed per minute, and read the token counts from the server log.

A dedicated DGX Spark in the EU, $0.79/hour, billed per minute. $30 of credit is about 37 hours of compute.

Create account See reported tok/s per model