Papers
LoRA: Low-Rank Adaptation of Large Language Models
Hu et al., 2021 — Wie man große Modelle mit einem Bruchteil der Parameter effizient auf neue Aufgaben anpassen kann.
LoRA (Low-Rank Adaptation) ermöglicht es, große Sprachmodelle auf spezifische Aufgaben anzupassen, ohne alle Modell-Parameter zu verändern. Statt die gesamten Gewichtsmatrizen zu aktualisieren, fügt LoRA kleine, trainierbare Matrizen hinzu. Das reduziert den Speicherbedarf und die Trainingszeit drastisch.
Das Problem: Fine-Tuning ist teuer
Ein vortrainiertes LLM auf eine spezifische Aufgabe anzupassen (Fine-Tuning) bedeutet normalerweise, alle Parameter des Modells zu aktualisieren. Bei einem Modell mit 7 Milliarden Parametern heißt das: 7 Milliarden Werte müssen gespeichert, berechnet und optimiert werden.
Das erfordert enorme GPU-Ressourcen. Volles Fine-Tuning eines 70B-Modells braucht mehrere High-End-GPUs mit zusammen über 100 GB VRAM. Für die meisten Unternehmen und Entwickler ist das nicht praktikabel.
Die LoRA-Idee: Niedrig-Rang-Zerlegung
Die zentrale Erkenntnis von LoRA: Die Änderungen, die beim Fine-Tuning an den Gewichtsmatrizen vorgenommen werden, haben einen niedrigen Rang (low rank). Das heißt, die eigentliche Anpassung lässt sich durch viel kleinere Matrizen darstellen.
Statt eine große Gewichtsmatrix W direkt zu ändern, fügt LoRA zwei kleine Matrizen A und B hinzu:
W: Original-Matrix (eingefroren, wird nicht trainiert)
B: Kleine Matrix (d × r), trainierbar
A: Kleine Matrix (r × d), trainierbar
r: Rang (typisch 4-64, sehr viel kleiner als d)
Die Original-Gewichte W bleiben eingefroren. Nur die kleinen Matrizen A und B werden trainiert. Bei Rang r=16 und Dimension d=4096 trainiert man statt 16,7 Millionen nur 131.072 Parameter pro Schicht — eine Reduktion um den Faktor 128.
Wie LoRA technisch funktioniert
LoRA wird typischerweise auf die Attention-Matrizen (Q, K, V, O) des Transformers angewendet. Der Ablauf:
- 1. Einfrieren: Alle originalen Modell-Parameter werden eingefroren (requires_grad=False). Sie ändern sich während des Trainings nicht.
- 2. LoRA-Module einfügen: Neben jede ausgewählte Gewichtsmatrix werden die kleinen Matrizen A und B eingefügt. A wird zufällig initialisiert, B mit Nullen (damit der Start-Zustand identisch zum Original ist).
- 3. Training: Nur die LoRA-Matrizen werden trainiert. Das braucht einen Bruchteil des Speichers und der Rechenzeit.
- 4. Merging: Nach dem Training können die LoRA-Matrizen in die Original-Gewichte gemerged werden (W + BA). Das Ergebnis ist ein normales Modell ohne zusätzliche Latenz.
Vorteile von LoRA
- Speicher-Effizienz: Statt das gesamte Modell zu duplizieren, speichert man nur die kleinen LoRA-Adapter. Ein LoRA-Adapter für ein 7B-Modell ist oft nur 10-50 MB groß.
- Schnelles Training: Weniger trainierbare Parameter bedeuten schnellere Trainingsschritte und weniger GPU-Speicherbedarf.
- Kein Qualitätsverlust: Bei richtig gewähltem Rang erreicht LoRA vergleichbare Ergebnisse wie volles Fine-Tuning.
- Adapter-Wechsel: Mehrere LoRA-Adapter können für unterschiedliche Aufgaben trainiert und zur Laufzeit getauscht werden — auf demselben Basis-Modell.
Weiterentwicklungen: QLoRA und DoRA
LoRA hat mehrere wichtige Nachfolger inspiriert:
- QLoRA (2023): Kombiniert LoRA mit 4-Bit-Quantisierung. Das Basis-Modell wird in 4-Bit geladen, die LoRA-Matrizen in 16-Bit trainiert. Damit kann ein 70B-Modell auf einer einzigen GPU fine-getuned werden.
- DoRA (2024): Decomposed LoRA zerlegt die Gewichte in Magnitude und Richtung und wendet LoRA nur auf die Richtung an. Das verbessert die Trainingsqualität.
Quellen
- Hu, E. J. et al. (2021). "LoRA: Low-Rank Adaptation of Large Language Models." arXiv:2106.09685
War dieser Artikel hilfreich?
Nächster Schritt: vom Wissen in die Umsetzung
Wenn du mehr willst als Theorie: Setups, Workflows und Vorlagen aus dem echten Betrieb für Teams, die lokale und dokumentierte AI-Systeme wollen.
- Lokal und self-hosted gedacht
- Dokumentiert und auditierbar
- Aus eigener Runtime entwickelt
- Made in Austria