LoRA & QLoRA
Wissen
Full Fine-Tuning eines LLMs bedeutet: Alle Milliarden Parameter werden mit neuen Daten nachtrainiert. Für Llama 4 Maverick mit 400 Milliarden Parametern brauchst du dafür mehrere High-End-GPUs mit hunderten Gigabyte VRAM und tagelange Trainingszeit. Das ist für die meisten Teams unrealistisch.
LoRA (Low-Rank Adaptation) löst dieses Problem radikal: Statt alle Parameter zu ändern, werden kleine "Adapter-Matrizen" neben die bestehenden Gewichte gesetzt. Nur diese Adapter werden trainiert -- typischerweise 0.01% bis 0.1% der Gesamtparameter.
Wie funktioniert LoRA?
In einem Transformer-Modell sind die meisten Parameter in großen Gewichtsmatrizen (Weight Matrices) gespeichert -- zum Beispiel in den Attention-Layern. Diese Matrizen haben typischerweise Dimensionen wie 4096 x 4096.
LoRA basiert auf einer mathematischen Beobachtung: Die Änderungen, die beim Fine-Tuning an diesen Matrizen vorgenommen werden, haben einen niedrigen Rang (Low Rank). Das bedeutet, die Änderung einer 4096 x 4096-Matrix lässt sich durch zwei viel kleinere Matrizen approximieren:
Originalmatrix W: 4096 x 4096 = 16.7 Millionen Parameter
LoRA-Zerlegung (Rang r=16):
Matrix A: 4096 x 16 = 65.536 Parameter
Matrix B: 16 x 4096 = 65.536 Parameter
Total: 131.072 Parameter (0.8% des Originals)
Beim Training bleiben die originalen Gewichte eingefroren (frozen). Nur die kleinen Adapter-Matrizen A und B werden trainiert. Beim Inference wird das Ergebnis addiert: Output = W*x + B*A*x.
Warum funktioniert das so gut?
Die Intuition: Wenn du ein Modell fine-tunest, änderst du nicht grundlegend, "wie" es denkt. Du justierst nur leicht, "worauf" es achtet. Diese Justierung lässt sich mit wenigen Parametern ausdrücken.
Analogie: Stell dir ein Orchester vor, das ein Musikstück einstudiert hat. Für ein neues Stück im gleichen Genre musst du nicht jeden Musiker neu ausbilden. Du gibst dem Dirigenten (LoRA-Adapter) neue Anweisungen, und das Orchester (Basismodell) spielt anders.
QLoRA: Noch effizienter
QLoRA (Quantized LoRA) geht einen Schritt weiter: Das Basismodell wird auf 4-Bit-Präzision quantisiert -- also komprimiert -- bevor die LoRA-Adapter aufgesetzt werden.
| Methode | VRAM für 7B-Modell | VRAM für 70B-Modell | Trainierbare Parameter |
|---|---|---|---|
| Full Fine-Tuning (fp16) | ~28 GB | ~280 GB | 100% |
| LoRA (fp16) | ~16 GB | ~160 GB | 0.01-0.1% |
| QLoRA (4-bit) | ~6 GB | ~48 GB | 0.01-0.1% |
QLoRA macht es möglich, ein 70-Milliarden-Parameter-Modell auf einer einzelnen Consumer-GPU (48 GB) zu fine-tunen. Das hat Fine-Tuning demokratisiert.
Verstehen
Wo im Modell LoRA überhaupt ansetzt
Bevor es um die Adapter selbst geht: LoRA greift nicht irgendwo ins Modell ein, sondern an klar benannten Stellen. Die Stationen mit dem LoRA-Kennzeichen sind die üblichen Ziele — die Attention-Projektionen sind der Standard, die MLP-Schichten kommen dazu, wenn mehr Kapazität gebraucht wird.
Die LoRA-Architektur visuell
LoRA-Architektur: Adapter-basiertes Fine-Tuning
Klicke auf eine Schicht, um Details zu sehen. Grüne Blöcke zeigen trainierbare LoRA-Adapter.
Base Model (z.B. Llama 4, 70B)
Adapter
Adapter
Klicke auf eine Schicht für Details
Parameter-Vergleich: Training-Aufwand
LoRA trainiert nur ~0.1% der Parameter. QLoRA kombiniert dies mit 4-bit Quantisierung für noch weniger Speicherbedarf.
Hyperparameter, die du kennen musst
Rang (r): Bestimmt die Größe der Adapter-Matrizen. Typische Werte: 8, 16, 32, 64. Höherer Rang = mehr trainierbare Parameter = mehr Kapazität, aber auch mehr Speicher und Overfitting-Risiko.
Alpha: Ein Skalierungsfaktor, der kontrolliert, wie stark die LoRA-Adapter das Ergebnis beeinflussen. Typisch: alpha = 2 * r. Zu hoch = instabiles Training, zu niedrig = kaum Effekt.
Target Modules: Welche Schichten des Modells bekommen LoRA-Adapter? Typischerweise die Query- und Value-Matrizen der Attention-Layer. Manche Setups schließen auch die Feed-Forward-Schichten ein.
# Typische LoRA-Konfiguration mit PEFT
from peft import LoraConfig
config = LoraConfig(
r=16, # Rang
lora_alpha=32, # Skalierung (2 * r)
target_modules=[
"q_proj", "v_proj", # Attention Query + Value
"k_proj", "o_proj", # Attention Key + Output
],
lora_dropout=0.05, # Regularisierung
bias="none",
task_type="CAUSAL_LM"
)
Vervollständige die LoRA-Konfiguration für ein Modell, bei dem du maximale Adapter-Kapazität bei moderatem Speicherverbrauch willst:
Anwenden
LoRA vs. QLoRA: Wann was?
LoRA wählst du, wenn:
- Du Zugang zu professionellen GPUs hast (A100, H100)
- Maximale Trainingsqualität wichtig ist
- Du das Modell später in voller Präzision deployen willst
QLoRA wählst du, wenn:
- Du auf Consumer-Hardware trainierst (RTX 4090, Apple Silicon)
- Das Budget begrenzt ist
- Ein minimaler Qualitätsverlust durch Quantisierung akzeptabel ist
In der Praxis zeigt sich: Der Qualitätsunterschied zwischen LoRA und QLoRA ist bei den meisten Aufgaben vernachlässigbar (unter 1% auf gängigen Benchmarks), der Effizienzgewinn jedoch enorm.
Ein Startup will ein 13B-Modell für medizinische Textzusammenfassungen fine-tunen. Das Team hat eine RTX 4090 (24 GB VRAM). Welche Methode ist realistisch?
Reflektieren
LoRA und QLoRA haben Fine-Tuning von einem Privileg großer AI-Labs zu einem zugänglichen Werkzeug gemacht. Die Kernidee -- "ändere nur das Nötigste" -- ist elegant und effektiv. Im nächsten Abschnitt schauen wir uns an, welche Open-Source-Modelle die besten Kandidaten für Fine-Tuning sind.