Zum Inhalt

Quantisierung

Quantisierung reduziert die Präzision der Parameter eines Modells, um Speicher zu sparen und Inferenz zu beschleunigen – oft mit überraschend geringem Qualitätsverlust.


Das Problem

Ein LLM mit 70 Milliarden Parametern braucht in voller Präzision (FP32):

\[ 70 \times 10^9 \times 4 \text{ Bytes} = 280 \text{ GB [VRAM](../hardware/vram.md)} \]

Das passt auf keine Consumer-GPU. Quantisierung löst dieses Problem.


Präzisionsstufen

Format Bits Bytes pro Parameter 7B Modell 70B Modell
FP32 32 4 28 GB 280 GB
FP16 / BF16 16 2 14 GB 140 GB
INT8 8 1 7 GB 70 GB
INT4 4 0.5 3.5 GB 35 GB
INT2 2 0.25 1.75 GB 17.5 GB

Sweet Spot

4-Bit Quantisierung ist der aktuelle Sweet Spot: ~4x Speicherersparnis bei minimalem Qualitätsverlust.


Wie funktioniert Quantisierung?

Die Grundidee: Mappe den Wertebereich der Parameter auf weniger Bits.

Beispiel – 8-Bit:

Original (FP32):  -0.0234, 0.1567, -0.0891, 0.2345, ...
Skalieren:        min=-0.5, max=0.5, scale=0.00392
Quantisiert:      -6, 40, -23, 60, ...  (INT8: -128 bis 127)

Bei der Inferenz wird zurückgerechnet:

\[ \text{dequantisiert} = \text{quantisiert} \times \text{scale} \]

Quantisierungsmethoden

Post-Training Quantization (PTQ)

Quantisierung eines fertigen Modells ohne Neutraining:

graph LR
    A[Trainiertes Modell<br>FP16] --> B[Kalibrierung<br>auf Sample-Daten]
    B --> C[Quantisiertes Modell<br>INT4/INT8]

Vorteile: Schnell, einfach
Nachteile: Kann Qualität einbüßen

Quantization-Aware Training (QAT)

Das Modell wird mit simulierter Quantisierung trainiert:

Vorteile: Bessere Qualität
Nachteile: Aufwändig, braucht Trainingsdaten


Moderne Quantisierungsformate

GGUF (llama.cpp)

Der Standard für lokale Inferenz mit llama.cpp:

Variante Bits Qualität Speed
Q2_K 2-3 ★★☆☆☆ ★★★★★
Q3_K_M 3-4 ★★★☆☆ ★★★★☆
Q4_K_M 4-5 ★★★★☆ ★★★★☆
Q5_K_M 5-6 ★★★★★ ★★★☆☆
Q6_K 6 ★★★★★ ★★☆☆☆
Q8_0 8 ★★★★★ ★★☆☆☆

Empfehlung

Q4_K_M ist für die meisten Anwendungsfälle ideal – gute Balance aus Qualität und VRAM.

GPTQ

GPU-optimierte Quantisierung, beliebt für Hugging Face Modelle:

  • Schnelle Inferenz auf GPU
  • Gute Qualität bei 4-Bit
  • Braucht Kalibrierungsdaten

AWQ (Activation-aware Weight Quantization)

Neuere Methode, die wichtige Gewichte weniger stark quantisiert:

  • Oft besser als GPTQ bei gleicher Bitrate
  • Besonders gut für kleine Modelle

bitsandbytes (BNB)

Integration in Hugging Face Transformers:

from transformers import AutoModelForCausalLM
import torch

model = AutoModelForCausalLM.from_pretrained(
    "meta-llama/Llama-3-8B",
    load_in_4bit=True,               # 4-Bit Quantisierung
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_quant_type="nf4"        # NormalFloat4
)

Qualitätsverlust messen

Quantisierung ist ein Trade-off. So misst man den Verlust:

Perplexity: Niedrigere ist besser

Modell FP16 Q8 Q4_K_M Q2_K
Llama 3 8B 6.14 6.15 6.21 6.89

Faustregeln

  • Q8 → praktisch kein Verlust
  • Q4 → minimal merkbar
  • Q3 → spürbar, aber oft okay
  • Q2 → deutlicher Qualitätsverlust

Praktische Anwendung

Modell für deine GPU wählen

VRAM verfügbar × 0.8 = nutzbar für Modell
(20% Overhead für KV-Cache, CUDA etc.)
Deine GPU VRAM Empfehlung
RTX 3060 12 GB 7B Q4, 13B Q3
RTX 4070 Ti 12 GB 7B Q4, 13B Q3
RTX 4080 16 GB 13B Q4, 7B Q8
RTX 4090 24 GB 13B Q6, 30B Q4, 70B Q2

llama.cpp Beispiel

# Modell laden und quantisieren
./quantize model-f16.gguf model-q4_k_m.gguf Q4_K_M

# Inference
./main -m model-q4_k_m.gguf -p "Erkläre Quantisierung:"

Mixed Precision & Selective Quantization

Nicht alle Layer sind gleich wichtig. Moderne Methoden quantisieren selektiv:

  • Embedding & Output Layer: Oft in höherer Präzision
  • Attention: Empfindlicher, profitiert von mehr Bits
  • FFN: Robuster, verträgt aggressive Quantisierung

QLoRA – Training mit Quantisierung

QLoRA kombiniert Quantisierung mit LoRA für effizientes Fine-Tuning:

  1. Basismodell in 4-Bit laden
  2. Kleine LoRA-Adapter in FP16 trainieren
  3. → Fine-Tuning eines 65B Modells auf einer 24GB GPU möglich

Siehe auch

  • VRAM – Warum Speicher der limitierende Faktor ist
  • GPU – Hardware für Inferenz
  • Parameter – Was wird eigentlich quantisiert?
  • Inferenz – Quantisierte Modelle nutzen
  • LoRA – Effizientes Fine-Tuning