Nemotron-3-Super-120B-A12B GGUF — with the MTP draft head intact
NVIDIA's Nemotron-3-Super: hybrid mamba2/attention/LatentMoE, 120B total / 12B active,
long-context, reasoning on/off via chat template.
The model ships with a trained Multi-Token Prediction (MTP) head: a small built-in draft
model that guesses the next few tokens so the main model can verify them in one pass instead
of generating one at a time. This means substantially faster generation
(measured below) at no quality cost. This model keeps the head at conversion time, which
makes --spec-type draft-mtp possible. This model include all 1,040 mtp.* tensors
from the official BF16 checkpoint.
Using the head requires a llama.cpp branch. Mainline llama.cpp (as of 2026-07-30) loads
and runs these files as a normal Super, but cannot use the draft head, and loads its ~1.3 GB regardless (see
ggml-org/llama.cpp#26290). MTP speculative decoding needs
PR
ggml-org/llama.cpp#25444 plus the
converter change these files were produced with (exact branch and commit under "How these
files were made"). Watch the PR for merge status.
Files
| file | quant | size | notes |
|---|
| Nemotron-3-Super-120B-A12B-MTP-IQ4_NL.gguf | IQ4_NL | 66.4 GiB | recommended on CPU: IQ4_NL has an AVX2 repacked GEMM path |
How to run
1# build the branch (until PR #25444 merges)
2git clone --branch nemotron-super-mtp https://github.com/Premshay/llama.cpp
3cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j --target llama-server
4
5# serve (this runs on mainline llama.cpp too, as a normal Super)
6./build/bin/llama-server -m Nemotron-3-Super-120B-A12B-MTP-IQ4_NL.gguf -c 8192 -np 1
7
8# add MTP speculative decoding ONLY on a build with mamba2 rollback -
9# on the plain PR build it makes generation slower (see the benchmarks):
10# ... -c 8192 -np 1 --spec-type draft-mtp
- ⚠️ Always set the context size explicitly (
-c / --ctx-size, as above). Without it,
llama.cpp sizes the KV cache to the model's trained context - enormous for this model -
and the allocation can stall or crash a machine with limited RAM. MTP also requires
-np 1 (no parallel slots).
- Reasoning on/off at request time:
"chat_template_kwargs": {"enable_thinking": false} in
the request body (llama-server).
- NVIDIA recommends
temperature=1.0, top_p=0.95 for all tasks (per the official model
card). The benchmark table below used temperature 0 for reproducibility.
<think> / </think> are separate tokens; add --special if you need them rendered
(per unsloth's card for this model).
Benchmarks
Intel Core Ultra 7 270K Plus (Arrow Lake, 24 cores, no AVX-512), 121 GB DDR5, CPU-only,
llama.cpp server, -t 20 -c 8192 -np 1 -fa off, thinking disabled, temperature 0,
256-token generations, 3 reps, machine otherwise idle:
| build | config | min t/s | mean t/s | max t/s | draft acceptance |
|---|
| PR #25444 (dbedc9e19) | MTP off | 8.72 | 8.83 | 8.95 | — |
| PR #25444 | MTP on | 4.95 | 4.98 | 4.99 | 0.334 |
| mamba-rs-rollback-wip (fc7f6aaa0) | MTP off | 8.72 | 8.87 | 8.96 | — |
| mamba-rs-rollback-wip | MTP on | 10.92 | 12.03 | 12.80 | 0.70 |
In short: MTP only helps on a build that can roll back the mamba2 recurrent state when a
draft is rejected (the PR author's follow-up branch, linked from PR #25444). There it is
+36-44%; on the plain PR build it is -44%, so leave --spec-type off there. One known
open item: with temperature 0, output with MTP on differs slightly from MTP off on both
builds (being investigated in the PR thread) - if exactly reproducible greedy output
matters to you, test before adopting.
Even with MTP off, this file generates +56% faster than unsloth's popular UD-IQ4_NL on
this hardware (8.83 vs 5.64 t/s mean, same protocol). Reason: every tensor here is a type
with a fast AVX2 kernel in llama.cpp, while the UD file mixes in types that fall back to a
slower path on CPU.
Quality - perplexity on wikitext-2, lower is better (148 chunks, context 2048, same
build and hardware):
| model | perplexity |
|---|
| this repo (plain IQ4_NL, no imatrix) | 4.4498 +/- 0.026 |
| unsloth UD-IQ4_NL | 4.4050 +/- 0.026 |
So the trade-off against the UD file on CPU is +56% generation speed for about 1% worse
perplexity: the UD file spends extra bits where they help quality most, this file keeps
everything on the fast path. Choose by whether speed or quality is scarcer for you.
Imatrix variants are possible on request.
How these files were made
- Source:
nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-BF16 (official), converted with
convert_hf_to_gguf.py at
Premshay/llama.cpp@731368b5d
(branch nemotron-super-mtp, stacked on PR #25444), quantized with llama-quantize from
the same build (5 of 781 tensors fell back to a different quant type because their dimensions do not
divide evenly - normal for this architecture).
- The conversion change that preserves the head is ~50 lines in
conversion/nemotron.py;
it is offered upstream in PR #25444's thread.
- Verification before upload: all 42,683 source tensors mapped (781 GGUF tensors), required
nextn.* slots present, metadata nextn_predict_layers=2, head_count_kv[88]=2; loaded
and generated coherently; A/B above.
Disclosure
Conversion code, benchmarks, and this card: AI-assisted (Claude), human-directed and
verified. Numbers measured on hardware as described.
License
NVIDIA Nemotron Open Model License (inherited from the base model). This repository
redistributes a quantized derivative with attribution; see the license link above.