LoRA und parametereffizientes Training
Wie man ein Modell mit Milliarden Parametern auf einer einzelnen Karte anpasst: Rangzerlegung, Speicherrechnung und die Einstellungen, die zählen.
Die Idee
Ein Modell vollständig zu trainieren heißt, alle Milliarden Gewichte zu ändern. LoRA lässt sie unverändert und legt daneben eine kleine, lernbare Korrektur ab. Nur diese Korrektur wird trainiert.
Das Bild dazu: Statt ein Buch neu zu schreiben, klebt man Randnotizen hinein.
Was das bringt
| Vollständig | LoRA | |
|---|---|---|
| Trainierbare Parameter | 100 % | 0,1 bis 1 % |
| Speicher für 7-Mrd.-Modell | ~112 GB | ~18 GB |
| Ergebnisdatei | ~14 GB | 20 bis 200 MB |
| Mehrere Varianten | je ein volles Modell | je ein Adapter |
Die Einstellungen
| Parameter | Bedeutung | Üblicher Wert |
|---|---|---|
r | Rang der Zerlegung | 8 bis 64 |
alpha | Skalierung des Adapters | meist 2r |
dropout | Regularisierung im Adapter | 0 bis 0,1 |
| Zielmodule | Welche Schichten angepasst werden | Alle Attention-Projektionen, oft auch die Zwischenschicht |
| Lernrate | 1e-4 bis 3e-4 |
- Alle vier Attention-Projektionen anpassen, nicht nur zwei. Der Unterschied ist messbar.
alpha = 2rals Ausgangspunkt, dann nur einen der beiden Werte verändern.- Den Adapter für die Auslieferung in die Gewichte einrechnen, wenn keine Umschaltung nötig ist. Das spart Rechenzeit bei der Inferenz.
Die Formel
Durchgerechnet
Für eine Matrix mit d = k = 4096 und r = 16:
- Vollständig:
4096 × 4096 = 16.777.216Parameter - LoRA:
16 × (4096 + 4096) = 131.072Parameter - Anteil: 0,78 Prozent
Bei 32 Schichten mit je vier solchen Matrizen sind das 32 × 4 × 131.072 = 16,8
Millionen trainierbare Parameter gegenüber 2,15 Milliarden. Der Adapter belegt in
float16 rund 34 Megabyte.
Speicher beim Training
| Posten | Vollständig | LoRA | QLoRA |
|---|---|---|---|
| Gewichte | 14 GB (fp16) | 14 GB (fp16) | 4 GB (nf4) |
| Gradienten | 14 GB | 0,03 GB | 0,03 GB |
| Optimiererzustände | 56 GB (fp32) | 0,13 GB | 0,13 GB |
| Aktivierungen | 10 bis 30 GB | 6 bis 20 GB | 6 bis 20 GB |
| Summe | ~100 GB | ~24 GB | ~12 GB |
QLoRA quantisiert die eingefrorenen Gewichte zusätzlich auf 4 Bit und trainiert
den Adapter in bfloat16. Damit passt die Anpassung eines Modells mit 7
Milliarden Parametern auf eine Karte mit 16 GB.
Warum ein niedriger Rang genügt
Die empirische Beobachtung ist, dass die Änderung ΔW beim Feintuning eine
niedrige intrinsische Dimension hat: Die Anpassung an eine enge Aufgabe bewegt
sich in einem kleinen Unterraum. Ein Rang von 8 bis 16 genügt deshalb für Format-
und Stilanpassungen. Bei breiteren Änderungen, etwa einer neuen Sprache oder einer
grundlegend anderen Domäne, reicht er nicht, und dort ist vollständiges Training
tatsächlich überlegen.
Betrieb mit mehreren Adaptern
Moderne Bedienumgebungen laden ein Basismodell und mehrere Adapter gleichzeitig und wählen je Anfrage aus. Das ist der eigentliche betriebliche Vorteil: ein Modell im Speicher, beliebig viele Fachvarianten, jede als Datei von wenigen Megabyte mit eigener Version und eigenem Freigabestand.
Passende Kurse und Quellen
LoRA
Anpassung über wenige zusätzliche Parameter statt vollständigem Training. Der Grund, warum Feinabstimmung heute bezahlbar ist.
Für alle, die feinabstimmen wollen und ein Budget haben; die Grundlage der bezahlbaren Anpassung.