Paper · arXiv 2106.09685
LoRA: Low-Rank Adaptation of Large Language Models
Veröffentlicht cs.CLcs.AIcs.LG arXivPDF
Zusammenfassung in drei Zeilen
- 🎯 Das vollständige Fine-Tuning riesiger Sprachmodelle wie GPT-3 175B erfordert das erneute Trainieren und Speichern von Milliarden Parametern pro Downstream-Task, was enorme Speicher-, VRAM- und Deployment-Engpässe verursacht.
- 🔧 Friert vortrainierte Gewichtsmatrizen ein und fügt trainierbare Low-Rank-Zerlegungsmatrizen () in dichte Transformer-Schichten ein; skaliert das Produkt mit und ermöglicht das Zusammenführen beim Deployment ohne zusätzliche Latenz.
- 📈 Bei GPT-3 175B reduziert LoRA die trainierbaren Parameter um das 10.000-Fache und den VRAM-Bedarf um das Dreifache (von 1,2 TB auf 350 GB), während es auf GLUE, WikiSQL und SAMSum mit vollem Fine-Tuning gleichzieht oder dieses übertrifft.
Abstract
Ein wichtiges Paradigma der Verarbeitung natürlicher Sprache besteht aus einem großskaligen Pre-Training auf allgemeinen Daten und der anschließenden Anpassung an spezifische Aufgaben oder Domänen. Mit zunehmender Größe der vortrainierten Modelle wird ein vollständiges Fine-Tuning, bei dem alle Modellparameter neu trainiert werden, immer unpraktikabler. Am Beispiel von GPT-3 175B zeigt sich: Das Bereitstellen unabhängiger Instanzen feinabgestimmter Modelle mit jeweils 175B Parametern ist untragbar teuer. Wir schlagen Low-Rank Adaptation (LoRA) vor: ein Verfahren, das die vortrainierten Modellgewichte einfriert und trainierbare Rangzerlegungsmatrizen in jede Schicht der Transformer-Architektur einfügt. Dies reduziert die Anzahl der trainierbaren Parameter für nachgelagerte Aufgaben drastisch. Im Vergleich zu einem mit Adam feinabgestimmten GPT-3 175B kann LoRA die Anzahl der trainierbaren Parameter um das 10.000-Fache und den GPU-Speicherbedarf um das 3-Fache senken. Hinsichtlich der Modellqualität schneidet LoRA bei RoBERTa, DeBERTa, GPT-2 und GPT-3 gleichwertig oder besser ab als vollständiges Fine-Tuning – trotz deutlich weniger trainierbarer Parameter, eines höheren Trainingsdurchsatzes und, im Gegensatz zu Adaptern, ohne zusätzliche Inferenzlatenz. Zudem liefern wir eine empirische Untersuchung zur Rangdefizienz bei der Sprachmodellanpassung, die Aufschluss über die Wirksamkeit von LoRA gibt. Wir veröffentlichen ein Paket, das die Integration von LoRA in PyTorch-Modelle erleichtert, und stellen unsere Implementierungen sowie Modell-Checkpoints für RoBERTa, DeBERTa und GPT-2 unter https://github.com/microsoft/LoRA bereit.
Original-Abstract (Englisch)
An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes less feasible. Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks. Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times. LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency. We also provide an empirical investigation into rank-deficiency in language model adaptation, which sheds light on the efficacy of LoRA. We release a package that facilitates the integration of LoRA with PyTorch models and provide our implementations and model checkpoints for RoBERTa, DeBERTa, and GPT-2 at https://github.com/microsoft/LoRA.
Leseleitfaden
Problem und Motivation
Die Anpassung großer vortrainierter Sprachmodelle an unterschiedliche Downstream-Anwendungen stützte sich traditionell auf vollständiges Fine-Tuning (die Aktualisierung aller Parameter zu ). Bei gewaltigen Architekturen wie GPT-3 175B ist das Speichern und Bereitstellen unabhängiger Kopien von Modellen mit 175 Milliarden Parametern im Hinblick auf Speicherplatz, GPU-Arbeitsspeicher und I/O-Overhead untragbar teuer. Frühere parameter-effiziente Tuning-Verfahren weisen erhebliche Nachteile auf:
- Serielle Adapter-Schichten: Fügen Bottleneck-Module sequentiell in Transformer-Blöcke ein. Da diese sequentiellen Operationen nicht parallelisiert werden können, verursachen sie eine spürbare Inferenzlatenz – bei Single-GPU-, Small-Batch- und Online-Serving-Szenarien verlangsamen sie den Forward-Pass um bis zu .
- Prefix / Prompt Tuning: Optimiert kontinuierliche Prompt-Vektoren, die den Schichtaktivierungen vorangestellt werden. Diese Methoden sind schwer zu optimieren, skalieren nicht-monoton mit der Prompt-Länge und verbrauchen Sequenzlängen-Budget, das ansonsten für den Kontext zur Verfügung stünde.
LoRA löst diesen Zielkonflikt zwischen Effizienz und Modellqualität basierend auf der Hypothese, dass Gewichtsaktualisierungen beim Transfer auf nachgelagerte Aufgaben einen niedrigen intrinsischen Rang besitzen.
Kernideen
- Low-Rank-Reparametrisierung: Für eine eingefrorene dichte Matrix wird das Adaptions-Update parametrisiert als , wobei , und der Rang ist.
- Keine zusätzliche Inferenzlatenz: Da die Reparametrisierung linear ist, können die trainierten Low-Rank-Matrizen beim Deployment direkt in die vortrainierten Gewichte einfließen (). Dadurch bleibt die Inferenzarchitektur unverändert und es entsteht im Vergleich zum Fine-Tuning keinerlei Latenznachteil.
- Geteiltes Basismodell mit Hot-Swapping: Das große eingefrorene Modell verbleibt statisch im GPU-Speicher; ein Aufgabenwechsel erfordert lediglich den Austausch der Low-Rank-Matrizen und , wodurch der Speicherbedarf von Hunderten Gigabyte auf wenige Megabyte schrumpft.
- Selektive Attention-Adaption: Die Anwendung der Rangzerlegung ausschließlich auf Self-Attention-Projektionen (insbesondere Query und Value ) erzielt eine konkurrenzfähige Leistung, während Feed-Forward-MLP-Schichten eingefroren bleiben.
Methode
Für eine dichte Projektionsschicht, die berechnet, modifiziert LoRA die Berechnung wie folgt:
Wichtige Implementierungsdetails:
- Initialisierung: wird mit einer Gauß-Verteilung initialisiert und mit Nullen, sodass zu Beginn des Trainings gilt.
- Skalierungsfaktor: Das Update wird mit skaliert, wobei ein konstanter Hyperparameter ist. Bei der Optimierung mit Adam verhindert die Wahl von gleich dem initialen Rang , dass Lernraten bei Experimenten mit verschiedenen Werten von neu abgestimmt werden müssen.
- Deployment-Merging: Im Produktivbetrieb wird die adaptierte Gewichtsmatrix explizit als materialisiert. Beim Wechseln von Aufgaben wird durch Subtraktion wiederhergestellt () und mit neuen Adapter-Gewichten zusammengeführt ().
- Ziel-Schichten: Obwohl auf jede dichte Schicht anwendbar, konzentrieren sich die Experimente primär auf Transformer-Attention-Projektionen (). Die Anwendung von LoRA mit auf und liefert die beste nachgelagerte Effizienz.
Ergebnisse
- GPT-3 175B: LoRA reduziert die trainierbaren Parameter von 175.255,8M auf 4,7M ( oder ) bzw. 37,7M (). Die Checkpoint-Größe sinkt von 350 GB auf 35 MB (eine 10.000-fache Reduktion) und der Trainings-VRAM von 1,2 TB auf 350 GB. Der Trainingsdurchsatz steigt um (von 32,5 auf 43,1 Tokens/s pro V100 GPU).
- Downstream-Genauigkeit (GPT-3):
- WikiSQL Validierungsgenauigkeit für logische Formen: Vollständiges Fine-Tuning erreicht ; LoRA (37,7M) erreicht .
- MultiNLI Matched-Validierungsgenauigkeit: Vollständiges Fine-Tuning erreicht ; LoRA (4,7M) erreicht .
- SAMSum Dialog-Zusammenfassung: Vollständiges Fine-Tuning erreicht 52,0 / 28,0 / 44,5 ROUGE-1/2/L; LoRA (4,7M) erzielt 53,8 / 29,8 / 45,9.
- RoBERTa und DeBERTa (GLUE-Benchmark): Auf RoBERTa Large erreicht LoRA das Niveau von vollständigem Fine-Tuning ( gegenüber Durchschnittsscore) mit nur 0,8M statt 355,0M Parametern. Auf DeBERTa XXL (1,5B) erzielt LoRA einen GLUE-Durchschnitt von mit 4,7M Parametern im Vergleich zu bei vollständigem Fine-Tuning (1.500,0M Parameter).
- Analyse des intrinsischen Rangs: Eine Untersuchung der Unterraum-Ähnlichkeit zeigt, dass die führenden singulären Richtungen von für und stark überlappen ( normalisierte Ähnlichkeit für Dimension 1). Zudem verstärkt Richtungen, die in bereits vorhanden, aber nicht stark betont sind, mit einem Verstärkungsfaktor von für .
Grenzen und offene Fragen
- Multi-Task-Batching: Wenn Low-Rank-Gewichte in integriert werden, um Inferenzlatenz zu vermeiden, ist die gleichzeitige Batch-Verarbeitung von Eingaben für mehrere unterschiedliche Aufgaben in einem einzigen Forward-Pass nicht trivial.
- Heuristische Schichtauswahl: Die gängige Praxis stützt sich auf empirische Heuristiken (Anpassung von und ) anstelle eines fundierten Auswahlrahmens zur Bestimmung, welche Matrizen über Attention- und MLP-Schichten hinweg adaptiert werden sollten.
- Extreme Domain-Shifts: Bei Downstream-Aufgaben, die drastisch von der Pre-Training-Verteilung abweichen (wie die Anpassung eines englischen LLM an eine völlig andere Zielsprache), könnte eine Low-Rank-Adaption gegenüber einer Adaption mit höherem Rang oder vollständigem Fine-Tuning unzureichend sein.
Schlüsselbegriffe
- Low-Rank Adaptation (LoRA)
- Eine parameter-effiziente Fine-Tuning-Methode, die Basismodell-Gewichte einfriert und trainierbare Rangzerlegungsmatrizen parallel zu dichten Schichten trainiert.
- Intrinsic Rank
- Die geringe effektive Dimensionalität oder Anzahl von Singulärvektoren, die erforderlich ist, um sinnvolle Parameteranpassungen beim aufgabenspezifischen Transfer zu erfassen.
- Adapter Layers
- Externe Bottleneck-Module, die sequentiell in Transformer-Blöcke eingefügt werden und nicht-parallelisierbare Berechnungen sowie Inferenzlatenz verursachen.
- Prefix Tuning
- Eine Adaptionsstrategie, die Eingabe-Tokens oder Schicht-Aktivierungen kontinuierliche, trainierbare Vektoren voranstellt, wodurch der verfügbare Sequenzkontext verringert wird.
- Weight Folding / Weight Merging
- Die arithmetische Addition von Low-Rank-Matrizen direkt in die vortrainierte Gewichtsmatrix , um Laufzeit-Overhead während der Inferenz zu eliminieren.
- Grassmann Distance Subspace Similarity
- Eine Metrik , die die Überlappung der Spaltenräume zwischen orthonormalen Singulärvektormatrizen von Adaptions-Updates misst.
- Feature Amplification Factor
- Das Verhältnis zwischen der Frobenius-Norm von und der Projektion von auf den Singulärunterraum von , das misst, wie stark aufgabenspezifische Richtungen betont werden.
Fragen
Warum verursacht LoRA im Gegensatz zu Adaptern keine zusätzliche Inferenzlatenz?
Da LoRA linear ist (), kann das Low-Rank-Produkt vor dem Serving explizit berechnet und zu addiert werden (). Die Inferenz führt dann eine gewöhnliche Matrixmultiplikation aus – ohne die sequentiellen Bottleneck-Schichten, die bei Adapter-Architekturen Latenz verursachen.
Auf welche Transformer-Gewichtsmatrizen sollte LoRA angewendet werden?
Experimente mit GPT-3 zeigen, dass die Anpassung sowohl der Query- () als auch der Value-Projektionsgewichte () bei festem Parameterbudget die beste Leistung erzielt. Die Adaption mehrerer Attention-Matrizen mit einem kleineren Rang (z. B. ) übertrifft den Ansatz, alle Parameter einem einzigen Matrixtyp mit höherem Rang zuzuweisen.
Welcher Rang $r$ ist für die Adaption großer Sprachmodelle ausreichend?
Ein sehr kleiner Rang wie , oder ist für nachgelagerte Aufgaben oft ausreichend. Analysen der Unterraum-Ähnlichkeit zeigen, dass die führenden Singulärvektoren bei kleinen Rängen stark mit denen höherer Ränge (wie ) überlappen, während höhere Ränge größtenteils zufälliges Optimierungsrauschen erfassen.
Wie initialisiert LoRA seine Low-Rank-Matrizen?
Matrix wird mit einer Gaußschen Zufallsverteilung initialisiert, während Matrix mit Nullen initialisiert wird. Dadurch ist zu Beginn des Trainings sichergestellt, sodass der vortrainierte Forward-Pass des Modells zunächst unverändert bleibt.
Die Übersicht auf dieser Seite wurde von einer KI aus dem Paper erstellt und kann Fehler enthalten. Details stehen im Paper.