Mia's Nemotron 3.5 Bolt recipe on one RTX 5090: NVIDIA Nemotron 3.5 Bolt 74B-A9B
1x NVIDIA GeForce RTX 5090 32 GB, one GPU. Driver 610.43.02, kernel 6.12.95.

Not ranked. This setup has no rank and no overall score: the rank needs a build test, and this page has none. It shows Speed v2 and Quality v2, plus the memory test, every number with its raw files and exact command.
How fast it runs
| Measurement | Result |
|---|---|
| Decode | 242.7 tok/s |
| Words per second | 176.3 words/s |
| Characters per second | 1149.0 chars/s |
| Decode, code prompt | 219.8 tok/s |
| Decode, prose prompt | 265.5 tok/s |
| Spread of the decode runs (CV) | 10.5 % |
| Spread of the code runs (CV) | 10.5 % |
| Spread of the prose runs (CV) | 2.4 % |
| Decode, window 1 | 241.0 tok/s |
| Prefill at 2K | 11408.0 tok/s |
| Prefill at 8K | 11013.7 tok/s |
| Prefill at 32K | 9895.9 tok/s |
| Time to first token at 2K | 0.2 s |
| Time to first token at 8K | 0.7 s |
| Time to first token at 32K | 3.3 s |
| Draft acceptance rate | 32.0 % |
| Mean accepted length | 2.9 tokens |
| 1 request at once (total) | 241.7 tok/s |
| 2 at once (total) | 315.0 tok/s |
| 4 at once (total) | 293.9 tok/s |
| 8 at once (total) | 336.2 tok/s |
| 1 request at once (per request) | 241.7 tok/s |
| 2 at once (per request) | 167.3 tok/s |
| 4 at once (per request) | 106.4 tok/s |
| 8 at once (per request) | 71.3 tok/s |
| Server slots (our setting; the recipe has 16) | 2 slots |
| Long answer, wall time | 12.1 s |
Long prompts
| Prompt length | Prefill | Time to first token | Decode, code prompt | Decode, prose prompt |
|---|---|---|---|---|
| 16K tokens | 9942.5 tok/s | 1.6 s | 205.3 tok/s | 218.2 tok/s |
| 32K tokens | 9451.3 tok/s | 3.5 s | 201.9 tok/s | 225.3 tok/s |
| 64K tokens | 8500.6 tok/s | 7.7 s | 177.9 tok/s | 199.0 tok/s |
| 128K tokens | 6999.0 tok/s | 18.7 s | 140.1 tok/s | 183.4 tok/s |
Method: code+prose; 2 run(s) each; 512 tokens; 1 warm-up(s); median; context steps: prompts of exactly 16K, 32K, 64K and 128K tokens (a filler log first, the code or prose task prompt last), 2 runs per step, 512 output tokens; decode = tokens after the first / time after the first token; prefill = prompt tokens / time to first token of the same request, median over its requests; requests at once: C1,C2,C4,C8 at once; 2 rounds each; 512 tokens per request; prose prompt; total = all tokens / wall time, per request = tokens / end-to-end time; median over the rounds. Measured 2026-11-02. Raw files: speed result · speed contract · log · long answer.
Requests at once: the server has 2 slots (PARALLEL=2 instead of the recipe's 16, see the changes below). C4, C8 exceed the slots: the extra requests wait in the queue, and they were measured anyway. The speed test ran with Mia's recipe (MiaAI-Lab/Nemotron-3.5-Bolt-TensorFold-DGX-Spark, commit 6b064a31 of 1 Nov 2026, the head of main on 2 Nov 2026) on one RTX 5090 instead of a DGX Spark. Her recipe is written for the DGX Spark (GB10, ARM); these changes were forced by the 5090 and are listed with their reasons: the engine (TensorFold v1.1.6, commit eea9dc9c) and Mia's patch 0002 are built for sm_120 (her patch and build call target sm_121); the Docker build uses the x86_64 Zig compiler instead of the ARM one; the video-input library (libtfvideo) does not link on x86_64 and was left out, so this build has no video input (text and image input are unchanged); the memory reserves are TENSORFOLD_MEMORY_RESERVE_GIB=1 instead of 10 and BOLT_KV_RESERVE_GIB=0.25 instead of 3 (her floors protect the shared memory of the GB10 box; on the 5090 the weights of 22.4 GiB would not fit beside them); PARALLEL=2 instead of 16, PROMPT_CACHE_GIB=1 instead of 8 and VISION=0 instead of 1 (the 32 GB card has room for the weights and a small KV cache only). A first session with 8 streams (job bolt5090-mia-0211-r2) ran into the open issue TensorFold #1654 / Mia #4 (HTTP 500 from the Bolt forward pass under sustained load with 2 or more parallel clients) in the quality tests; this page shows the repeat with 2 streams (job r3), where every step answered. The server has 2 slots, which means the levels of 4 and 8 requests at once wait in the queue and their per-request numbers include the waiting. The container's name and port and the removal of a build-folder cleanup (my rule: no deletion) change no number. Sampling is the model card's: temperature 1.0, top_p 0.95; seed 42; the request flag for no thinking; no cached tokens. The headline 242.67 tok/s is the mean of the code prompt (219.84) and the prose prompt (265.50), medians of two runs each (spread 10.5 % and 2.4 %). Drafts were accepted at a rate of 32.0 %. This is a different machine from Mia's (her numbers are measured on a DGX Spark), so her numbers are not a reference for this page.
Exact command we measured withfor reproducing↓
You do not need this to run the model. It is the exact command of our measurement, so anyone can repeat the result.
python3 speed2.py --base-url http://127.0.0.1:46741/v1 --label bolt5090-mia-0211-r3-speed-r0 --prompts $BENCH/repos/rigmark-v2/prompts-v2.json --output $RUN/bolt5090-mia-0211-r3-speed-r0/bolt5090-mia-0211-r3-speed-r0/speed2 --contract $RUN/bolt5090-mia-0211-r3-speed-r0/bolt5090-mia-0211-r3-speed-r0/speed2/speed-contract.json --parts decode,prefill,conc,l1,ctx --prefill-depths 2048,8192,32768 --prompt-ids code,prose --runs 2 --max-tokens 512 --warmups 1 --prefill-runs 3 --conc-levels 1,2,4,8 --conc-rounds 2 --conc-max-tokens 512 --conc-prompt prose --ctx-depths 16384,32768,65536,131072 --ctx-runs 2 --ctx-max-tokens 512 --tokenizer-json $HOME/.cache/huggingface/hub/models--nvidia--NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB/snapshots/a326822af111290f2af5ac59ef4b5040347dabc4/tokenizer.json --tokenizer-python $HOME/hfvenv/bin/python --sampling {"temperature": 1.0, "top_p": 0.95} --sampling-source https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB README.md line 66 ('Text: temperature 1.0, top_p 0.95') @a326822a; local copy source/hf-bolt-24gb-README.md; Mia scripts/config.sh:90-93 --model Nemotron-3.5-Bolt --no-cache-prompt --server-log $RUN/server-A.log --engine-version-file $RUN/engine-version.txt --server-slots 2 --server-slots-source Mia scripts/config.sh:59-61 (PARALLEL 1 to 16, default 16); lowered to 2 on 2 Nov 2026: the open issue TensorFold #1654 / Mia #4 (HTTP 500 from the Bolt forward pass with 2 or more parallel clients under sustained load) hit run r2 with 8 slots (its IFEval, long-text, LiveCodeBench and thinking parts were invalid); with fewer streams more video memory stays free for the KV cache (128K). C4 and C8 then wait in the queue. --server-ctx 262144 --server-ctx-source card box-6-bolt74b-iq2-lilicorr-tensorfold-mia-eea9dc9-sm120-5090-p2 field ctxHow well it answers
| Test | Result95 % margin | Right | Cut offcount as wrong | Raw files | |
|---|---|---|---|---|---|
| MMLU-Pro 400 fixed questions, letter only | 57.3 % ± 4.8 pts | 229 / 400 | 0 | answers · summary · log · contract | command |
| GPQA Diamond 198 questions, letter only | 41.4 % ± 6.8 pts | 82 / 198 | 0 | answers · summary · log · contract | command |
| IFEval 200 fixed prompts, strict | 76.5 % ± 5.8 pts | 153 / 200 | 3 | answers · summary · log · contract | command |
| LiveCodeBench 40 newest tasks, the code runs | 35.0 % ± 14.2 pts | 14 / 40 | 4 | answers · answers · summary · log · contract | command |
| Long text 8K 4 tasks x 10 at 8192 tokens | 72.5 % ± 13.4 pts | 29 / 40 | 0 | log · contract · answers · summary | command |
| Long text 32K 4 tasks x 10 at 32768 tokens | 52.5 % ± 14.8 pts | 21 / 40 | 0 | log · contract · answers · summary | command |
| GPQA 30, thinking on 30 questions, limit 16,384 tokens | 63.3 % ± 16.3 pts median 11,807 tokens, 58.7 s per question | 19 / 30 | 10 | log · contract · summary | command |
Thinking off, except the last test. Seed 42. Sampling from the model card. A cut-off answer counts as wrong. Measured 2026-11-02.
Note from the run: Quality ran on this card on 2 Nov 2026 in one session (job bolt5090-mia-0211-r3). The questions of each test ran 2 at a time, the slot count of the server (same questions, limits and seed 42 for every question); the median time per question of the thinking test (58.7 s) was measured under that load. MMLU-Pro and GPQA Diamond ran with an answer limit of 48 tokens (the fixed method asks for the letter only), IFEval with 4,096, LiveCodeBench with 32,768, the long-text tests with 128 tokens. A cut-off answer counts as wrong: 3 of 200 IFEval answers, 4 of 40 LiveCodeBench answers and 10 of 30 GPQA answers with thinking (limit 16,384 tokens, median 11,807 thinking tokens) were cut off; no answer of the other tests was. GPQA Diamond ran from the public mirror fingertap/GPQA-Diamond (198 questions), because the original is gated. Thinking was off in all tests except GPQA with thinking. The first session with 8 streams is named in the speed note above and is not shown; these are my own tests, and no other run is mixed into the quality numbers on this page. The answers file of the thinking test (GPQA 30) is not published: the site's automatic filter for private names flagged a word in the model's reasoning text. The row was counted from the complete file.
Exact commands we measured withfor reproducing↓
You do not need this to run the model. It is the exact command of our measurement, so anyone can repeat the result.
bash tools/quality2/measure_all.sh tools/quality2/cards/bolt74b-iq2-lilicorr-tensorfold-mia-eea9dc9-sm120-5090-p2.json --parts mmlupro --job bolt5090-mia-0211-r3bash tools/quality2/measure_all.sh tools/quality2/cards/bolt74b-iq2-lilicorr-tensorfold-mia-eea9dc9-sm120-5090-p2.json --parts gpqa --job bolt5090-mia-0211-r3bash tools/quality2/measure_all.sh tools/quality2/cards/bolt74b-iq2-lilicorr-tensorfold-mia-eea9dc9-sm120-5090-p2.json --parts ifeval --job bolt5090-mia-0211-r3bash tools/quality2/measure_all.sh tools/quality2/cards/bolt74b-iq2-lilicorr-tensorfold-mia-eea9dc9-sm120-5090-p2.json --parts lcb --job bolt5090-mia-0211-r3bash tools/quality2/measure_all.sh tools/quality2/cards/bolt74b-iq2-lilicorr-tensorfold-mia-eea9dc9-sm120-5090-p2.json --parts ruler --job bolt5090-mia-0211-r3bash tools/quality2/measure_all.sh tools/quality2/cards/bolt74b-iq2-lilicorr-tensorfold-mia-eea9dc9-sm120-5090-p2.json --parts ruler --job bolt5090-mia-0211-r3bash tools/quality2/measure_all.sh tools/quality2/cards/bolt74b-iq2-lilicorr-tensorfold-mia-eea9dc9-sm120-5090-p2.json --parts think --job bolt5090-mia-0211-r3How much context fits
| Context size | Prompttokens | Filled | First token | Prefilltok/s, as the server reports it | Decodetok/s | Peak memoryGiB | Result |
|---|---|---|---|---|---|---|---|
| 4K 4,096 tokens | 3,892 | 95.0 % | — | — | — | 28.39 | answered (length) |
| 8K 8,192 tokens | 7,782 | 95.0 % | — | — | — | 28.45 | answered (length) |
| 16K 16,384 tokens | 15,564 | 95.0 % | — | — | — | 28.49 | answered (length) |
| 32K 32,768 tokens | 31,129 | 95.0 % | — | — | — | 28.67 | answered (length) |
| 64K 65,536 tokens | 62,259 | 95.0 % | — | — | — | 28.76 | answered (stop) |
| 128K 131,072 tokens | 124,518 | 95.0 % | — | — | — | 29.30 | answered (length) |
| 256K 262,144 tokens | 249,036 | 95.0 % | — | — | — | 30.24 | answered (stop) |
Memory test. For each context size (4K, 8K, 16K ... up to the largest size tested for the setup) the server is started again, one prompt that fills about 95 % of that size is sent, and the model must answer. On this page the recipe fixes the context at 262,144 tokens, so every start used that context (see the note below). The largest size that loaded and answered counts. Decode speed is measured on that answer at the largest size. Peak memory is the GPU memory in use (nvidia-smi); the GPU was empty before each start. Measured 2026-11-02. Raw files: result of every step · log · contract.
Note from the run: The recipe fixes the context (262,144 tokens, 2 streams here): for each size from 4K up to 256K the server was started once with that context, a prompt of about 95 % of the size was sent, and the model answered. Decode speed at these sizes is not measured (the server returns no timings). The memory number is the highest GPU memory in use during the largest step (nvidia-smi memory.used, absolute, including the weights).
Exact command we measured withfor reproducing↓
You do not need this to run the model. It is the exact command of our measurement, so anyone can repeat the result.
bash tools/quality2/measure_all.sh tools/quality2/cards/bolt74b-iq2-lilicorr-tensorfold-mia-eea9dc9-sm120-5090-p2.json --parts fit --job bolt5090-mia-0211-r3Also made this possible
- Model (24 GB pack, revision a326822a)
NVIDIAHugging Face GitHub Website - Draft model (LiLiCorr, revision 4c6a5613)
NVIDIAHugging Face GitHub Website - Engine (TensorFold v1.1.6, commit eea9dc9c)
Ash Hart@ashxhart GitHub Hugging Face Website
Run it yourself
What you need and how to start it, step by step. The results below come from exactly this setup.
What you need
- Hardware
- 1x NVIDIA GeForce RTX 5090 32 GB, one GPU. Driver 610.43.02, kernel 6.12.95.
- Model
- nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB @a326822a + nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB-LiLiCorr @4c6a5613
- Model (24 GB pack, revision a326822a)
- huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB
- Draft model (LiLiCorr, revision 4c6a5613)
- huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Bolt-74B-A9B-24GB-LiLiCorr
- Engine
- TensorFold 1.1.6 built for the RTX 5090 (sm_120), 24 GB pack with IQ2_XXS experts and NVFP4 Mamba layers, LiLiCorr drafts, 262,144 tokens of context, 2 streams — the program that loads the model and answers requests · github.com/ashhart/TensorFoldBuild and settings we used: TensorFold v1.1.6 tensorfold-native (Zig, CUDA, sm_120) + Mia Patch 0002 + libbolt (sm_120a), LiLiCorr drafts, built from source in Docker
- Recipe (TensorFold on a DGX Spark), commit 6b064a31, ported to the RTX 5090 with the changes listed on this page
- github.com/MiaAI-Lab/Nemotron-3.5-Bolt-TensorFold-DGX-Spark by Mia's AI Lab
Steps
Get the recipe, the engine and the model files from the list above.
Start the server with this command. It loads the model into memory. When the model has loaded, the server waits for requests on port 8895.
TENSORFOLD_MEMORY_RESERVE_GIB=1 \ BOLT_KV_RESERVE_GIB=0.25 \ PORT=8895 \ HOST=127.0.0.1 \ PARALLEL=2 \ PROMPT_CACHE_GIB=1 \ VISION=0 ./start.shWhat the parts mean
PORT=8895the network port the server listens on
Exact command we measured withfor reproducing↓
You do not need this to run the model. It is the start text exactly as our run recorded it, with the engine build in front, so anyone can repeat the result.
TensorFold v1.1.6 tensorfold-native (Zig, CUDA, sm_120) + Mia Patch 0002 + libbolt (sm_120a), LiLiCorr drafts, built from source in Docker; TENSORFOLD_MEMORY_RESERVE_GIB=1 BOLT_KV_RESERVE_GIB=0.25 PORT=8895 HOST=127.0.0.1 PARALLEL=2 PROMPT_CACHE_GIB=1 VISION=0 ./start.shContext and sampling: 262,144 tokens (Mia's CONTEXT default, the model's maximum), bf16 KV cache, LiLiCorr drafts (7 tokens), 2 requests at once, a 1 GiB prompt cache, vision off, seed 42. Sampling as the model card gives it, the same with thinking on and off: temperature 1.0, top_p 0.95. Speed and the quality tests with thinking off (GPQA 30 with thinking on). The 5090 has 32 GB, so some of Mia's settings could not be kept (listed on this page): her defaults are 16 streams, an 8 GiB prompt cache and vision on.. Hardware: 1x NVIDIA GeForce RTX 5090 32 GB, one GPU. Driver 610.43.02, kernel 6.12.95.. All raw files of this setup: raw/v2/nemotron35-bolt-74b-5090-mia-tensorfold.