majentik's picture
Card accuracy sweep: honest brand labeling, remove dead links, upstream KV tip
2c54c38 verified
|
Raw
History Blame Contribute Delete
9.19 kB
metadata
license: other
license_name: nvidia-open-model-license
license_link: >-
  https://developer.download.nvidia.com/licenses/nvidia-open-model-license-agreement-june-2024.pdf
base_model: nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16
tags:
  - gguf
  - rotorquant
  - kv-cache-quantization
  - nemotron
  - nvidia
  - mamba2
  - hybrid
  - llama-cpp
  - quantized
library_name: gguf
pipeline_tag: text-generation

KV-cache quantization without any fork (recommended, 2026): upstream llama.cpp/Ollama now cover this natively β€” use -ctk q8_0 -ctv q8_0 (half KV memory, negligible quality loss: perplexity +0.002–0.05) or -ctk q4_0 -ctv q4_0 (quarter memory, β‰ˆ7.6% perplexity increase). In Ollama: OLLAMA_KV_CACHE_TYPE=q8_0 with OLLAMA_FLASH_ATTENTION=1. Keep K and V types symmetric to stay on the fast fused Flash-Attention path. Since April 2026, mainline llama.cpp also applies Hadamard rotation to KV activations (PR #21038), which greatly improves low-bit KV quality (opt-out: LLAMA_ATTN_ROT_DISABLE=1).

The RotorQuant/TurboQuant fork flow below is experimental/legacy: the TurboQuant llama.cpp PR was closed without merging (June 2026) and the fork is unmaintained relative to mainline. It is NOT required to use this model.

Nemotron-3-Nano-4B-RotorQuant-GGUF-Q2_K

GGUF Q2_K weight-quantized variant of nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16 optimised for use with RotorQuant KV cache compression via a dedicated llama.cpp fork.

Important: RotorQuant KV cache types (planar3, iso3) are not available in upstream llama.cpp, standard Ollama, or LM Studio. They require a specific llama.cpp fork. The GGUF file itself is a standard GGUF and works with any llama.cpp-compatible runtime using normal KV cache types (f16, q8_0, q4_0, etc.).

Hardware compatibility

Device VRAM / RAM Recommendation
CPU host with β‰₯8 GB RAM ~1.5 GB works via llama.cpp; slower than GPU but no accelerator required
Apple Silicon (Metal) ~1.7 GB llama.cpp Metal backend; fast on M-series unified memory
NVIDIA GPU (partial offload) split between GPU + RAM offload as many layers as VRAM allows; rest on CPU

Overview

This model combines two independent compression techniques:

Technique What it does Requirement
GGUF Q2_K weight quantization Reduces model size from ~8 GB (BF16) to ~1.4 GB Any llama.cpp-compatible runtime
RotorQuant KV cache compression β€” block-diagonal Clifford-algebra rotors for 3-bit KV cache (--cache-type-k iso3 --cache-type-v iso3) Block-diagonal rotations / random rotation for compressed KV cache llama-cpp-turboquant fork only

Quickstart

Option A β€” RotorQuant KV cache (experimental fork β€” not required)

You must build from the RotorQuant-enabled llama.cpp fork:

# Clone and build the fork
git clone https://github.com/johndpope/llama-cpp-turboquant.git
cd llama-cpp-turboquant && git checkout feature/planarquant-kv-cache

# CUDA (Windows/Linux)
cmake -B build -DGGML_CUDA=ON -DCMAKE_BUILD_TYPE=Release && cmake --build build -j

# Metal (Apple Silicon)
cmake -B build -DGGML_METAL=ON -DGGML_METAL_EMBED_LIBRARY=ON -DCMAKE_BUILD_TYPE=Release && cmake --build build -j

# Run with RotorQuant KV cache
./build/bin/llama-cli -m Nemotron-3-Nano-4B-RotorQuant-GGUF-Q2_K.gguf \
  --cache-type-k iso3 --cache-type-v iso3 \
  -ngl 99 -fa \
  -p "Explain quantum computing"

# Or run as a server
./build/bin/llama-server -m Nemotron-3-Nano-4B-RotorQuant-GGUF-Q2_K.gguf \
  --cache-type-k iso3 --cache-type-v iso3 \
  -ngl 99 -fa --jinja

Option B β€” With standard llama.cpp / LM Studio / Ollama

The GGUF works as a normal quantised model. You won't get RotorQuant-specific KV cache benefits, but standard KV cache quantization (q8_0, q4_0) still reduces VRAM significantly.

llama.cpp (upstream)

llama-cli -m Nemotron-3-Nano-4B-RotorQuant-GGUF-Q2_K.gguf \
  --cache-type-k q8_0 --cache-type-v q8_0 \
  -ngl 99 -fa \
  -p "Explain quantum computing"

LM Studio

  1. Download the GGUF file and load in LM Studio.
  2. Enable Developer Mode (Settings β†’ Developer).
  3. In the model loader's advanced settings, set Flash Attention to ON.
  4. Set K Cache Quantization and V Cache Quantization to q8_0 (or q4_0 for more aggressive VRAM savings).
  5. Note: LM Studio does not currently support RotorQuant's iso3 cache types. Track this feature request for updates.

Ollama

# Standard Ollama does not support RotorQuant cache types.
# Use with default or q8_0 KV cache via OLLAMA_KV_CACHE_TYPE=q8_0
OLLAMA_KV_CACHE_TYPE=q8_0 OLLAMA_FLASH_ATTENTION=1 ollama run majentik/Nemotron-3-Nano-4B-RotorQuant-GGUF-Q2_K

Specifications

Property Value
Base Model nvidia/NVIDIA-Nemotron-3-Nano-4B-BF16
Architecture Mamba-2 + Transformer hybrid (dense)
Parameters 4B (dense hybrid)
Context Length 262K
Weight Quantization GGUF Q2_K (aggressive 2-bit, noticeable quality drop)
Original Size (BF16) ~8 GB
Quantized File Size ~1.4 GB
KV Cache (RotorQuant) 3-bit via --cache-type-k iso3 --cache-type-v iso3 (fork only)
KV Cache (standard) q8_0, q4_0, f16, etc. (any llama.cpp runtime)
License other
Modalities Text only
Compatible Runtimes llama.cpp, LM Studio, Ollama, koboldcpp

About the RotorQuant / TurboQuant labels

RotorQuant and TurboQuant are this project's release labels, not distinct quantization algorithms β€” for any given tier, both brand repos carry byte-identical weights produced with the standard MLX / llama.cpp quantizers. No brand-specific speedup is claimed or measured. The KV-cache fork these labels originally referred to is legacy; for KV-cache memory savings use the upstream options described above (-ctk/-ctv q8_0, OLLAMA_KV_CACHE_TYPE).

Current Status of RotorQuant in the Ecosystem

Runtime RotorQuant Support Standard KV Quant
llama.cpp (upstream) ❌ Not merged βœ… q8_0, q4_0, q4_1, iq4_nl, q5_0, q5_1
llama-cpp-turboquant fork βœ… planar3, iso3 βœ… All standard types
LM Studio ❌ Requested βœ… Via advanced settings
Ollama ❌ Not supported βœ… Via OLLAMA_KV_CACHE_TYPE
koboldcpp ❌ Not supported βœ… Standard types

Recommended Settings

For VRAM-constrained setups, standard q8_0 KV cache quantization already halves KV cache memory with negligible quality impact. Flash Attention should always be enabled β€” it is required for V cache quantization and improves memory efficiency regardless.

VRAM Suggested Configuration
24 GB (RTX 4090) Q2_K + q8_0 KV cache + Flash Attention, 8K–16K context
16 GB Q2_K + q4_0 KV cache + Flash Attention, 4K–8K context
48+ GB Q2_K + f16 KV cache, full 32K+ context

See Also

Quant trade-off (GGUF lane)

Quant Approx size Use case Recommendation
Q2_K ~2.2 GB Lossy, low-RAM CPU/edge Resource-constrained inference
Q3_K_M ~2.4 GB Smaller-than-Q4, modest quality drop Edge devices with ~16 GB RAM
IQ4_XS ~2.1 GB Importance-quant 4-bit, smaller than Q4_K_M Best size/quality at 4-bit
Q4_K_M ~3.0 GB Balanced default Recommended for most users
Q5_K_M ~3.1 GB Higher fidelity than Q4 Quality-sensitive applications
Q6_K ~3.6 GB Approaching FP16 quality High-fidelity CPU/edge
Q8_0 ~4.1 GB Near-lossless reference Fidelity-critical work
MXFP4_MOE ~2.2 GB Microscaling FP4 (MoE-aware) vLLM / transformers users

(Current variant β€” Q2_K β€” is bolded.)

Variants in this family

(Showing 13 sibling variants under majentik/nemotron3-nano-4b-*. The current variant β€” RotorQuant-GGUF-Q2_K β€” is bolded.)

Variant Runtime Approx size Use case
RotorQuant-GGUF-Q2_K llama.cpp ~2.4 GB Lossy, low-RAM CPU/edge