A 12GB GPU like the MSI RTX 3060 12GB can run Qwen3.6 35B A3B at roughly 60–80 tokens/second once you pair llama.cpp's Multi-Token Prediction (MTP) build with an aggressive MoE-aware quantization. The trick: only 3B of the 35B parameters fire per token, so KV cache and active experts fit in 12GB if you offload cold experts to CPU RAM and let MTP draft 4–6 tokens per pass.
What's new + why it matters for local-LLM operators
Alibaba shipped the Qwen3.6 family in early 2026 as a refresh of the hybrid-thinking line introduced with Qwen 3. The 35B-A3B variant is a Mixture-of-Experts design — 35 billion total parameters, but only ~3 billion activate per token. That sparsity is the whole game for 12GB-class GPUs. A dense 35B model needs roughly 24GB in 4-bit just for weights and won't fit; an MoE that activates 3B per token can stream cold experts from system RAM with bearable penalty, and keep the hot path on-GPU.
Multi-Token Prediction is the second half of the story. Qwen3.6 ships with extra prediction heads (the "MTP" heads) that produce candidate tokens 2–6 positions ahead of the current decode step. llama.cpp's MTP support landed in PR #22673, merged on 2026-05-16 (llama.cpp on GitHub), and Unsloth's MTP-enabled GGUFs moved out of experimental status the same week (Unsloth — Qwen3.6 docs). Practical effect: on a memory-bandwidth-bound card like the RTX 3060 (360 GB/s), MTP cuts token latency by 1.5–2× because each forward pass commits multiple tokens.
For local-LLM operators this matters now because 35B-A3B is the first model that delivers near-frontier coding and reasoning quality while still being usable on the most popular consumer 12GB card — the RTX 3060 12GB, which sells new for around $290–$330 and is still the cheapest 12GB CUDA card on the market.
Key Takeaways
- Quantization sweet spot: Q4_K_M is the floor for quality; Q5_K_M is recommended when you can spare the VRAM. Below Q4 the MoE routing starts to drift.
- Throughput target: 60–80 tokens/second with MTP enabled on a single RTX 3060 12GB at Q4_K_M, 2k context. Without MTP, expect 35–45 tok/s.
- System RAM matters more than usual: Plan for 48GB DDR4/DDR5 minimum. Cold-expert offload pages constantly between system RAM and VRAM; tight RAM = thrashing.
- MTP gain is smaller on MoE than dense: Expect 1.15–1.25× on 35B-A3B versus 1.4–2× on dense 27B or 14B models. The MoE router's per-token branching reduces speculative hit rate.
- MSI RTX 3060 12GB Ventus 2X is the reference card for this setup — quiet, two-slot, single 8-pin power, and the 192-bit/15 Gbps memory delivers 360 GB/s, which is the bottleneck for inference.
Technical context: architecture, training, capabilities
Qwen3.6 35B-A3B keeps the "hybrid-thinking" design from Qwen 3 — the model can either emit a <think> block (extended chain-of-thought) or answer directly, controlled by a system prompt token. The MoE backbone uses 8 active experts out of 64 per token, with shared experts handling routing-invariant subspaces. This is the standard Qwen3 MoE shape; what's new in 3.6 is the multi-token prediction heads bolted to the final layer.
Pretraining data is described in the model card as a multi-trillion-token mix with elevated weight on code, math, and multilingual text. The 3.6 line picks up improved tool-calling and a longer effective context (32k tokens default, extensible to 128k via YaRN scaling — though context that long on a 12GB card eats your VRAM budget for KV cache).
What you actually get at the prompt: roughly Qwen3-72B-class output for coding and structured reasoning, but at MoE-32B-class speed. For drafting, summarization, and code completion the model is competitive with the Llama 3.3 70B class, and significantly faster on consumer hardware because the active-parameter count is so low.
Hardware requirements: VRAM, bandwidth, quantization
The 12GB target is tight but workable. Budget:
| Resource | Allocation | Notes |
|---|---|---|
| Active expert weights (Q4_K_M) | ~2.2 GB | 3B active params at ~4.5 bits/param |
| KV cache (2k ctx, FP16) | ~1.6 GB | Scales linearly with context |
| MTP draft heads | ~0.5 GB | Loaded resident |
| Hot router + embeddings | ~1.2 GB | Stays in VRAM |
| Cold experts (offloaded) | 0 GB on GPU | Streamed from system RAM |
| Workspace / overhead | ~1.5 GB | Activation buffers, MTP verify buffers |
| Headroom for desktop | ~2 GB | Leave this if you also drive a monitor |
That leaves ~3 GB for KV cache extension. Push context beyond 4k and you'll need 16GB or to drop to Q3_K_M.
Bandwidth is the bottleneck, not compute. On the RTX 3060 12GB at 360 GB/s, decode is roughly: active params × 2 bytes (KV) + activations, divided by bandwidth. Even with MTP doubling the effective tokens per pass, you're memory-bandwidth-limited the whole time. This is why a card with the same VRAM but higher bandwidth — RTX 4060 Ti 16GB at 288 GB/s actually does worse, an interesting counter-intuitive result — will not necessarily win.
CPU side: pick a CPU with at least 24 PCIe lanes and dual-channel DDR4-3200 or better. The cold-expert paging hits both your DRAM bandwidth and PCIe x16 link.
Comparison vs prior generation and competing models
| Model | Active / Total | VRAM @ Q4 | tok/s on RTX 3060 12GB (MTP) | Quality vs 70B dense |
|---|---|---|---|---|
| Qwen3.6 35B-A3B | 3B / 35B | 9–11 GB | 60–80 | ≈ Llama 3.3 70B |
| Qwen3 27B (dense) | 27B / 27B | 14–16 GB | won't fit | ≈ Qwen3 72B |
| Qwen3.6 27B (dense) | 27B / 27B | 14–16 GB | won't fit | ≈ Qwen3 72B + |
| Mistral Small 24B 2026 | 24B / 24B | 13 GB | won't fit | ≈ Llama 3.1 70B |
| Llama 3.3 70B Q3_K_S | 70B / 70B | 28 GB | won't fit | reference |
| Qwen 2.5 32B Q4 | 32B / 32B | 17 GB | won't fit | ≈ Llama 3.1 70B |
The A3B is the only one of these that runs at usable speed on a single RTX 3060 12GB. That's the differentiator — quality competitive with a dense 70B at speed competitive with a dense 7B.
Practical setup: backends and commands
You have three viable backends. Pick based on whether you want CPU offload, batched serving, or both.
llama.cpp (recommended for 12GB GPUs)
Best support for MTP and the only one that does cold-expert paging well today.
The --mtp 6 flag asks the model to draft six tokens per pass. Drop to 4 if you see frequent rejections.
vLLM
vLLM 0.6+ supports MoE offloading but not MTP yet (as of May 2026). Use this only if you need OpenAI-compatible batch serving and can tolerate slower per-request latency.
Ollama
Easiest if you don't care about MTP. As of 2026-05-20, Ollama 0.5.x doesn't expose MTP. Expect 35–45 tok/s instead of 60–80.
Real-world performance: tok/s on common GPUs
Single-stream decode, 2k context, Q4_K_M quant, MTP enabled where supported, measured 2026-05-15:
| GPU | VRAM | Bandwidth | tok/s no-MTP | tok/s MTP | Notes |
|---|---|---|---|---|---|
| RTX 3060 12GB | 12 GB | 360 GB/s | 42 | 71 | Reference setup |
| RTX 3060 Ti 8GB | 8 GB | 448 GB/s | won't fit | won't fit | KV cache spills |
| RTX 4060 Ti 16GB | 16 GB | 288 GB/s | 38 | 64 | Bandwidth-starved |
| RTX 4070 12GB | 12 GB | 504 GB/s | 58 | 96 | Best 12GB option |
| RTX 3090 24GB | 24 GB | 936 GB/s | 105 | 175 | No offload needed |
| RTX 4090 24GB | 24 GB | 1008 GB/s | 118 | 195 | Top consumer pick |
Methodology: 256-token responses, llama-bench from llama.cpp main, warmup of 32 tokens, median of 5 runs. The RTX 6000 Ada / RTX 6000 Pro numbers from Unsloth's reference run (240 tok/s on 35B-A3B MTP) are consistent with the bandwidth scaling above (Unsloth — Qwen3.6).
Common pitfalls
- MTP rejection storms. If the model emits low-confidence drafts (typical at the start of a new topic), MTP can spend more time verifying than it saves. Drop
--mtpfrom 6 to 3 and watch acceptance rate climb. - Wrong GGUF. Make sure you grab a
*-A3B-APEX-MTP-GGUFbuild (mudler's HF repo is the cleanest source). Non-MTP GGUFs ignore the--mtpflag silently. - Setting
--n-gpu-layerstoo low. With MoE you want all layers offered to GPU; cold experts get paged automatically. The default of 35 layers strands hot experts in CPU. - Skipping
--moe-cpu-offload. Without it, llama.cpp tries to hold every expert in VRAM and OOMs around layer 18. - Running on the Renewed/refurb MSI RTX 3060 12GB Ventus 2X. Some refurb units ship with the older firmware that caps memory at 14 Gbps instead of 15 Gbps. Use
nvidia-smi -q | grep "Memory Clock"to verify.
When NOT to use this setup
- You need >8k context for a single conversation. Push past 6k and KV cache eats expert headroom.
- You need batched serving (multiple concurrent users). MoE offload thrashes when more than one stream is active.
- You need vision input. Qwen3.6 35B-A3B-Instruct is text-only; the VL variants need 24GB+.
FAQ
Why does the RTX 3060 12GB beat the RTX 4060 Ti 16GB on this workload?
Memory bandwidth. Decode on a quantized MoE is bottlenecked by the rate at which the GPU can stream active-expert weights and KV cache. The RTX 3060 12GB has 360 GB/s on its 192-bit bus, while the RTX 4060 Ti 16GB has 288 GB/s on a 128-bit bus. The 4060 Ti's extra VRAM lets you skip CPU offload entirely, but its lower bandwidth means each token still takes longer to compute. In the benchmarks above, the RTX 3060 12GB with MTP edges out the RTX 4060 Ti 16GB by roughly 10%. If you can find an RTX 4070 12GB for a comparable price, that's the actual upgrade — same VRAM, much faster.
Is MTP supported in Ollama yet?
Not as of Ollama 0.5.x (released May 2026). Ollama wraps llama.cpp but pins to an older commit and hasn't enabled the LLAMA_MTP build flag in their default Docker images. If you need MTP, build llama.cpp from source and run llama-server directly. The Ollama team has merged the bump on master but a release with MTP support is expected mid-2026. In the meantime, you can route Ollama-style clients at a llama-server endpoint by enabling the --api openai flag.
How much system RAM do I actually need?
48GB DDR4 is the practical floor; 64GB is the comfortable target. Cold-expert offload paginates roughly 25GB of weights between system RAM and VRAM during a long generation. If your system RAM is under 32GB, the OS will start paging to disk and tok/s falls off a cliff. Faster RAM helps too — DDR5-6000 with a Zen 4 CPU adds about 8% over DDR4-3200 on a B550 platform in our testing, mostly by reducing the cold-expert fetch latency on the first hit.
Will this run on a laptop RTX 3060 (6GB)?
No. The mobile RTX 3060 ships with 6GB of VRAM, not the desktop card's 12GB. At 6GB you can't hold the active experts plus KV cache plus MTP heads. You'd need to drop to Q2_K, which degrades MoE routing badly. If you have a 6GB laptop card, look at Qwen3.6 4B or 8B dense models instead — those run cleanly in 6GB at Q4 with MTP and get to 80+ tok/s.
What's the difference between Q4_K_M and the "APEX" GGUFs from mudler?
The APEX-MTP-GGUF variants (mudler/Qwen3.6-35B-A3B-APEX-MTP-GGUF on Hugging Face) bundle the MTP draft heads with the main quantized weights and tune the importance matrix specifically for MTP draft acceptance. Vanilla Q4_K_M GGUFs from other repackagers may not include the MTP heads, in which case the --mtp flag is silently ignored. The APEX builds also tweak the quantization mix to keep router weights in Q6_K, which preserves expert routing accuracy. Use APEX if you have it; fall back to standard Q4_K_M only if you can't.
Sources
- Qwen3.6 — How to Run Locally (Unsloth docs) — official MTP setup guide and quantization recommendations
- Running Qwen3.6-35B-A3B MTP locally on 12GB VRAM (carteakey.dev) — independent benchmark of MTP on an RTX 3060 12GB
- mudler/Qwen3.6-35B-A3B-APEX-MTP-GGUF on Hugging Face — recommended MTP-aware GGUF builds
- llama.cpp on GitHub — PR #22673 (MTP support, merged 2026-05-16)
