LoRA¶
LoRA (Low-Rank Adaptation) ist eine effiziente Fine-Tuning-Methode, die nur einen Bruchteil der Parameter trainiert – und trotzdem exzellente Ergebnisse liefert.
Die Idee¶
Statt die riesige Weight-Matrix \(W\) zu ändern, trainieren wir zwei kleine Matrizen \(A\) und \(B\):
\[
W' = W + BA
\]
- \(W\): Original-Gewichte (eingefroren)
- \(B\): \(d \times r\) Matrix (trainiert)
- \(A\): \(r \times k\) Matrix (trainiert)
- \(r\): Rank (typisch 8-64, viel kleiner als \(d\))
Warum funktioniert das?¶
Die Änderungen beim Fine-Tuning haben oft niedrigen Rang – sie liegen in einem kleinen Unterraum. LoRA nutzt das aus.
Vorteile¶
| Aspekt | Full Fine-Tuning | LoRA |
|---|---|---|
| Trainierbare Parameter | 100% | 0.1-1% |
| VRAM-Bedarf | Sehr hoch | Gering |
| Trainingszeit | Lang | Kurz |
| Adapter-Größe | Volle Modellgröße | ~MBs |
QLoRA¶
QLoRA kombiniert LoRA mit Quantisierung: - Basis-Modell in 4-Bit laden - LoRA-Adapter in FP16 trainieren - → 65B Modell Fine-Tuning auf 24GB GPU!
from peft import LoraConfig, get_peft_model
config = LoraConfig(
r=16, # Rank
lora_alpha=32, # Skalierungsfaktor
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
)
model = get_peft_model(base_model, config)
Siehe auch¶
- Fine-Tuning – Der Kontext
- Quantisierung – Kombination mit QLoRA
- Parameter – Was trainiert wird