LoRA (Low-Rank Adaptation)
LoRA optimiert große Modelle durch Fine-Tuning, indem die Gewichte eingefroren und kleine Matrizen mit Updates niedrigen Rangs trainiert werden. Dadurch sinken die Anzahl trainierbarer Parameter sowie Speicher- und Platzbedarf.
LoRA steht für Low-Rank Adaptation und ist eine Methode zur parametersparenden Feinabstimmung (PEFT), mit der ein großes vortrainiertes Modell an eine neue Aufgabe angepasst wird. Dazu werden seine ursprünglichen Gewichte eingefroren und neben ausgewählten Schichten zwei kleine Matrizen trainiert. Ihr Produkt ist ein Update mit niedrigem Rang, das zu den eingefrorenen Gewichten addiert wird. Daher erhalten nur sehr wenige Parameter jemals Gradienten. LoRA wurde 2021 von Hu et al. bei Microsoft vorgestellt. Dabei sank die Zahl der trainierbaren Parameter von GPT-3 175B um den Faktor 10.000 und der Bedarf an GPU-Speicher beim Training mit Adam um den Faktor 3 gegenüber einer vollständigen Feinabstimmung. Die Qualität entsprach dabei der vollständigen Feinabstimmung oder übertraf sie bei RoBERTa, DeBERTa, GPT-2 und GPT-3. Heute wird LoRA häufig verwendet, um große Sprachmodelle (LLMs), Diffusionsmodelle und Vision-Transformer auf vergleichsweise einfacher Hardware anzupassen. LoRa, das Funkprotokoll mit großer Reichweite für IoT-Geräte, ist ein davon unabhängiger Begriff.
So funktioniert LoRA#
Bei der Feinabstimmung wird eine vortrainierte Gewichtsmatrix W der Größe d × k durch ein Update ΔW verändert. LoRA nimmt an, dass dieses Update einen niedrigen intrinsischen Rang hat und sich daher als Produkt zweier dünner Matrizen schreiben lässt: ΔW = B × A, wobei A die Größe r × k und B die Größe d × r hat und der Rang r deutlich kleiner als d oder k ist. Die Ausgabe der Schicht lautet dann h = Wx + (α / r) × BAx, wobei α eine feste Skalierungskonstante ist. A wird mit kleinen Zufallswerten und B mit Nullen initialisiert. Das Training beginnt also exakt mit dem vortrainierten Modell. Während der Rückpropagierung werden nur A und B aktualisiert. Dadurch entfällt auch der Optimiererzustand für alle eingefrorenen Gewichte.
Bei einer Projektion der Größe 4096 × 4096 werden bei vollständiger Feinabstimmung etwa 16,8 Millionen Gewichte trainiert, während ein Adapter mit Rang 8 8 × (4096 + 4096) = 65.536 trainiert. Das folgende PyTorch-Skript erstellt einen solchen Adapter und führt ihn mit der eingefrorenen Schicht zusammen:
import torch
from torch import nn
# A frozen pretrained 4096 x 4096 projection, like one in a transformer attention block
base = nn.Linear(4096, 4096).requires_grad_(False)
# LoRA's trainable rank-8 update: B @ A, scaled by alpha / r
# B starts at zero, so the adapted layer initially matches the pretrained one
r, alpha = 8, 16
A = nn.Parameter(torch.randn(r, 4096) * 0.01)
B = nn.Parameter(torch.zeros(4096, r))
trainable = A.numel() + B.numel()
total = trainable + sum(p.numel() for p in base.parameters())
print(f"Trainable: {trainable:,} of {total:,} parameters ({trainable / total:.2%})")
# After training, merge the update into the base weight so inference costs nothing extra
nn.init.normal_(B, std=0.01) # stand-in for trained values
x = torch.randn(2, 4096)
adapted = base(x) + (alpha / r) * (x @ A.T @ B.T)
merged = nn.functional.linear(x, base.weight + (alpha / r) * B @ A, base.bias)
print(f"Merged layer matches adapter output: {torch.allclose(adapted, merged, atol=1e-5)}")Der Adapter trainiert 65.536 der 16.846.848 Parameter der Schicht, also 0,39 %. Wird B × A in W eingefaltet, liefert das dieselben Ausgaben wie der separat ausgeführte Adapter. Zusammengeführte LoRA-Modelle laufen deshalb genauso schnell wie das Original – ein Vorteil gegenüber früheren Adapterschichten, die bei jedem Vorwärtsdurchlauf zusätzliche Berechnungen verursachen.
LoRA in der Praxis verwenden#
Die ursprüngliche Arbeit passte nur die Abfrage- und Wertprojektionen der Attention im Transformer an. Viele Rezepte zielen inzwischen auf jede lineare Schicht ab. Rang und α sind die wichtigsten Hyperparameter: Die Hugging Face PEFT-Bibliothek verwendet standardmäßig r = 8 und α = 8. Da das Basismodell unverändert bleibt, kann eine Bereitstellung eine einzige Kopie davon behalten und kleine, aufgabenspezifische Adapter austauschen. Mit Rang 4 für die Abfrage- und Wertprojektionen von GPT-3 175B schrumpfte jeder angepasste Prüfpunkt von 350 GB auf etwa 35 MB – ungefähr um den Faktor 10.000.
- Sprachmodelle: Teams passen offene LLMs auf einer GPU an ein Fachgebiet, einen Stil oder ein Anweisungsformat an und kombinieren LoRA dabei oft mit Daten für das Instruction Tuning.
- Bilderzeugung: LoRA-Dateien vermitteln Stable Diffusion und ähnlichen Modellen eine Figur, ein Produkt oder einen Kunststil. Sie werden getrennt vom Basisprüfpunkt geteilt und können mit ihm kombiniert werden.
- Vision- und multimodale Modelle: Adapter spezialisieren Vision-Transformer und Vision-Language-Modelle (VLMs) für medizinische, industrielle oder dokumentenbasierte Bilder, ohne den Backbone neu zu trainieren.
Varianten#
- QLoRA: Friert das Basismodell in 4-Bit-NormalFloat-Präzision ein und trainiert darauf LoRA-Adapter. Dettmers et al. nutzten das Verfahren, um ein Modell mit 65 Milliarden Parametern auf einer einzelnen 48-GB-GPU feinabzustimmen und dabei die Leistung einer vollständigen 16-Bit-Feinabstimmung zu erhalten.
- DoRA: Zerlegt jedes vortrainierte Gewicht in Betrag und Richtung und wendet LoRA nur auf die Richtung an. Dadurch wird bei gleichen Inferenzkosten der Genauigkeitsabstand zur vollständigen Feinabstimmung kleiner.
LoRA im Vergleich zu verwandten Begriffen#
- Parametersparende Feinabstimmung: Oberbegriff für Methoden, bei denen nur ein kleiner Teil eines Modells trainiert wird. Das Einfrieren von Schichten ist die einfachste Variante. Ultralytics YOLO bietet sie als Trainingsargument
freezean: Damit bleiben die ersten N Schichten eines YOLO26-Modells auf ihren vortrainierten Gewichten, während der Rest trainiert wird. - Vollständige Feinabstimmung: Aktualisiert jedes Gewicht und speichert für jede Aufgabe eine vollständige Modellkopie. Bei Programmier- und Mathematikaufgaben schnitt die vollständige Feinabstimmung deutlich besser ab als herkömmliches LoRA, während LoRA weniger katastrophales Vergessen anderer Fähigkeiten des Basismodells verursachte.
- Prompt-Tuning: Lernt weiche Prompt-Einbettungen, die der Eingabe vorangestellt werden, während alle Modellgewichte eingefroren bleiben.
- Transferlernen: Der allgemeine Ansatz, Wissen aus einer Aufgabe für eine andere wiederzuverwenden. LoRA ist eine effiziente Möglichkeit dazu.
- Modellzusammenführung: Kombiniert die Gewichte separat feinabgestimmter Modelle. Ein häufiger Anwendungsfall ist das Zusammenführen mehrerer LoRA-Adapter in ein Basismodell.










