Künstliche Intelligenz

LoRa, QLoRA und QA-LoRA: Effiziente Anpassung in großen Sprachmodellen durch Low-Rank-Matrixfaktorisierung

mm
LoRA : Low-Rank Adaptation of Large Language Models

Große Sprachmodelle (LLMs) haben eine einzigartige Nische geschaffen und bieten unvergleichliche Fähigkeiten bei der Verarbeitung und Generierung von menschlichem Text. Die Leistung von LLMs kann auf ihre enorme Größe zurückgeführt werden, die oft Milliarden von Parametern umfasst. Während diese enorme Größe ihre Leistung antreibt, gibt sie auch Herausforderungen auf, insbesondere wenn es um die Anpassung von Modellen für spezifische Aufgaben oder Domänen geht. Die herkömmlichen Methoden zur Verwaltung von LLMs, wie das Feintuning aller Parameter, stellen eine erhebliche Rechen- und finanzielle Belastung dar und bilden somit eine erhebliche Barriere für ihre weitverbreitete Anwendung in realen Anwendungen.

In einem früheren Artikel haben wir uns mit dem Feintuning von großen Sprachmodellen (LLMs) beschäftigt, um sie an spezifische Anforderungen anzupassen. Wir haben verschiedene Feintuning-Methoden wie instruktionsbasiertes Feintuning, Einzel-Aufgaben-Feintuning und parameterEffizientes Feintuning (PEFT) untersucht, jedes mit seinem eigenen Ansatz zur Optimierung von LLMs für unterschiedliche Aufgaben. Im Mittelpunkt der Diskussion stand die Transformer-Architektur, die Grundlage von LLMs, und die Herausforderungen, die durch die Rechen- und Speicheranforderungen bei der Verarbeitung einer großen Anzahl von Parametern während des Feintunings entstehen.

Parameter in LLM

https://huggingface.co/blog/hf-bitsandbytes-integration

Das obige Bild stellt die Größe verschiedener großer Sprachmodelle dar, sortiert nach ihrer Anzahl von Parametern. Bemerkenswert sind PaLM, BLOOM usw.

Im Laufe dieses Jahres gab es Fortschritte, die zu noch größeren Modellen geführt haben. Allerdings ist das Feintuning solcher gigantischer, quelloffener Modelle auf Standard-Systemen ohne spezielle Optimierungstechniken nicht machbar.

Low-Rank-Anpassung (LoRA) wurde von Microsoft in diesem Paper vorgestellt, um diese Herausforderungen zu mildern und LLMs zugänglicher und anpassbarer zu machen.

Der Kern von LoRA liegt in seinem Ansatz zur Modellanpassung, ohne in die Feinheiten des erneuten Trainings des gesamten Modells einzutauchen. Im Gegensatz zum herkömmlichen Feintuning, bei dem jeder Parameter geändert wird, verwendet LoRA einen intelligenteren Weg. Es friert die vorgefertigten Modellgewichte ein und führt trainierbare Rang-Entwicklungs-Matrizen in jede Schicht der Transformer-Architektur ein. Dieser Ansatz reduziert die Anzahl der trainierbaren Parameter erheblich und stellt somit einen effizienteren Anpassungsprozess dar.

Die Entwicklung von LLM-Feintuning-Strategien

Wenn man auf die Reise des LLM-Feintunings zurückblickt, kann man verschiedene Strategien identifizieren, die von Praktikern im Laufe der Jahre eingesetzt wurden. Zunächst lag der Fokus auf dem Feintuning der vorgefertigten Modelle, einer Strategie, die eine umfassende Änderung der Modellparameter erfordert, um die spezifische Aufgabe zu erfüllen. Allerdings wuchsen die Modelle in Größe und Komplexität, und mit ihnen auch die Rechenanforderungen dieses Ansatzes.

Die nächste Strategie, die an Popularität gewann, war das Subset-Feintuning, eine zurückhaltendere Version ihres Vorgängers. Hier werden nur eine Teilmenge der Modellparameter feinjustiert, was die Rechenbelastung etwas reduziert. Trotz ihrer Vorzüge konnte das Subset-Feintuning jedoch nicht mit dem Wachstum der Größe von LLMs Schritt halten.

Als Praktiker begannen, effizientere Wege zu erkunden, entstand das vollständige Feintuning als ein anspruchsvoller, aber lohnender Ansatz.

Einführung in LoRA

Der Rang einer Matrix gibt uns einen Einblick in die Dimensionen, die durch ihre Spalten erstellt werden, und wird durch die Anzahl der eindeutigen Zeilen oder Spalten bestimmt.

  • Vollständige Rang-Matrix: Ihr Rang entspricht der kleineren Zahl zwischen ihren Zeilen oder Spalten.
  • Niedriger Rang-Matrix: Mit einem Rang, der deutlich kleiner ist als beide seine Zeilen- und Spaltenzahl, erfasst sie weniger Merkmale.

Jetzt erfasst ein großes Modell ein breites Verständnis seiner Domäne, wie Sprache in Sprachmodellen. Aber das Feintuning für spezifische Aufgaben erfordert oft nur die Hervorhebung eines kleinen Teils dieses Verständnisses. Hier kommt LoRA ins Spiel. Es legt nahe, dass die Matrix, die diese Gewichtsanpassungen zeigt, eine niedrige Rang-Matrix sein kann, die somit weniger Merkmale erfasst.

LoRA begrenzt den Rang dieser Update-Matrix, indem es sie in zwei kleinere Rang-Matrizen aufteilt. Anstatt also die gesamte Gewichtsmatrix zu ändern, ändert es nur einen Teil davon, was den Feintuning-Prozess effizienter macht.

LoRA auf Transformer anwenden

LoRA hilft, die Trainingslast in neuronalen Netzen zu minimieren, indem es sich auf bestimmte Gewichtsmatrizen konzentriert. Unter der Transformer-Architektur sind bestimmte Gewichtsmatrizen mit dem Selbst-Aufmerksamkeitsmechanismus verbunden, nämlich Wq, Wk, Wv und Wo, sowie zwei weitere im Multi-Layer-Perceptron (MLP)-Modul.

Transformers-Architektur

Transformers-Architektur

 

Transformer-Aufmerksamkeitsköpfe

Transformer-Aufmerksamkeitsköpfe

Mathematische Erklärung hinter LoRA

Lassen Sie uns die Mathematik hinter LoRA aufschlüsseln:

  1. Vorgefertigte Gewichtsmatrix :
    • Es beginnt mit einer vorgefertigten Gewichtsmatrix der Dimension . Dies bedeutet, dass die Matrix Zeilen und Spalten hat.
  2. Niedriger Rang-Zerlegung:
    • Anstatt die gesamte Matrix direkt zu aktualisieren, was rechenintensiv sein kann, schlägt die Methode einen niedrigen Rang-Zerlegungsansatz vor.
    • Die Aktualisierung zu kann als Produkt von zwei Matrizen dargestellt werden: und .
      • hat die Dimension
      • hat die Dimension
    • Der Schlüsselpunkt hier ist, dass der Rang viel kleiner ist als beide und , was eine effizientere Darstellung ermöglicht.
  3. Training:
    • Während des Trainingsprozesses bleibt unverändert. Dies wird als “Einfrieren” der Gewichte bezeichnet.
    • Andererseits sind und die trainierbaren Parameter. Dies bedeutet, dass während des Trainings Anpassungen an den Matrizen und vorgenommen werden, um die Leistung des Modells zu verbessern.
  4. Multiplikation und Addition:
    • Sowohl als auch die Aktualisierung (das Produkt von und ) werden mit dem gleichen Eingabewert (bezeichnet als ) multipliziert.
    • Die Ausgaben dieser Multiplikationen werden dann addiert.
    • Dieser Prozess wird in der Gleichung zusammengefasst: Hier stellt die endgültige Ausgabe nach Anwendung der Aktualisierungen auf den Eingabewert dar.

In Kurzform ermöglicht diese Methode eine effizientere Aktualisierung einer großen Gewichtsmatrix, indem sie die Aktualisierungen durch eine niedrige Rang-Zerlegung darstellt, was sowohl rechen- als auch speicherEffizienz bietet.

LoRA

LoRA

Initialisierung und Skalierung:

Wenn Modelle trainiert werden, kann die Initialisierung der Parameter den Effizienz- und Lernprozess erheblich beeinflussen. Im Kontext unserer Gewichtsmatrix-Aktualisierung mit und :

  1. Initialisierung der Matrizen und :
    • Matrix : Diese Matrix wird mit zufälligen Gaussian-Werten initialisiert, auch als Normalverteilung bekannt. Der Grund für die Verwendung der Gaussian-Initialisierung ist, die Symmetrie zu brechen: verschiedene Neuronen in der gleichen Schicht lernen unterschiedliche Merkmale, wenn sie unterschiedliche Anfangsgewichte haben.
    • Matrix : Diese Matrix wird mit Nullen initialisiert. Indem dies getan wird, beginnt die Aktualisierung als Null am Anfang des Trainings. Es stellt sicher, dass es keine plötzliche Änderung im Modellverhalten am Anfang gibt, und ermöglicht es dem Modell, sich allmählich anzupassen, während während des Trainings geeignete Werte lernt.
  2. Skalierung der Ausgabe von :
    • Nach der Berechnung der Aktualisierung wird ihre Ausgabe durch einen Faktor von skaliert, wobei eine Konstante ist. Durch die Skalierung wird die Größe der Aktualisierungen kontrolliert.
    • Die Skalierung ist besonders wichtig, wenn der Rang geändert wird. Wenn beispielsweise der Rang erhöht wird, um die Genauigkeit zu verbessern (auf Kosten der Rechenleistung), stellt die Skalierung sicher, dass andere Hyperparameter im Prozess nicht angepasst werden müssen. Es bietet eine Stabilität für das Modell.

Praktische Auswirkungen von LoRA

LoRA hat sein Potenzial unter Beweis gestellt, LLMs auf spezifische künstlerische Stile effizient anzupassen, wie von der AI-Gemeinschaft gezeigt wurde. Dies wurde insbesondere bei der Anpassung eines Modells zur Nachahmung des künstlerischen Stils von Greg Rutkowski demonstriert.

Wie in dem Paper mit GPT-3 175B als Beispiel hervorgehoben. Die Verwendung von individuellen Instanzen feinjustierter Modelle mit 175B Parametern ist sehr teuer. Aber mit LoRA sinken die trainierbaren Parameter um das 10.000-fache, und die GPU-Speicheranforderungen werden auf ein Drittel reduziert.

LoRa-Auswirkung auf GPT-3-Feintuning

LoRa-Auswirkung auf GPT-3-Feintuning

Die LoRA-Methode verkörpert nicht nur einen bedeutenden Schritt in Richtung einer besseren Zugänglichkeit von LLMs, sondern unterstreicht auch das Potenzial, die Kluft zwischen theoretischen Fortschritten und praktischen Anwendungen im Bereich der künstlichen Intelligenz zu überbrücken. Durch die Beseitigung der Rechenhürden und die Förderung eines effizienteren Modellanpassungsprozesses ist LoRA in der Lage, eine wichtige Rolle bei der weiteren Verbreitung und dem Einsatz von LLMs in realen Szenarien zu spielen.

QLoRA (Quantisiert)

Während LoRA die Speicheranforderungen reduziert, erfordert es immer noch eine leistungsstarke GPU, um das Modell für das Training zu laden. Hier kommt QLoRA, oder Quantisiertes LoRA, ins Spiel, das LoRA mit Quantisierung kombiniert, um einen intelligenteren Ansatz zu bieten.

Quantisierung

Quantisierung

Normalerweise werden Gewichtsparameter in einem 32-Bit-Format (FP32) gespeichert, was bedeutet, dass jedes Element in der Matrix 32 Bits Speicherplatz benötigt. Stellen Sie sich vor, wenn wir die gleiche Information in nur 8 oder sogar 4 Bits speichern könnten. Das ist die Kernidee hinter QLoRA. Quantisierung bezieht sich auf den Prozess der Abbildung kontinuierlicher, unendlicher Werte auf eine kleinere Menge diskreter, endlicher Werte. Im Kontext von LLMs bezieht es sich auf den Prozess der Umwandlung der Gewichte des Modells von höheren Präzisions-Datentypen in niedrigere Präzisions-Datentypen.

Quantisierung in LLM

Quantisierung in LLM

Hier ist eine einfache Erklärung von QLoRA:

  1. Initial-Quantisierung: Zunächst wird das große Sprachmodell (LLM) auf 4 Bit quantisiert, was den Speicherbedarf erheblich reduziert.
  2. LoRA-Training: Anschließend wird das LoRA-Training durchgeführt, aber in der Standard-32-Bit-Präzision (FP32).

Jetzt fragen Sie sich vielleicht, warum man nach der Quantisierung auf 4 Bit wieder auf 32 Bit umstellt. Um LoRA-Adapter effektiv in FP32 zu trainieren, müssen die Modellgewichte auch wieder auf FP32 umgestellt werden. Dieser Wechsel zwischen den beiden Formaten erfolgt in einer intelligenten, schrittweisen Art und Weise, um die Überlastung des GPU-Speichers zu vermeiden.

LoRA findet seine praktische Anwendung in der Hugging Face Parameter-Effizientes Feintuning (PEFT)-Bibliothek, was seine Verwendung vereinfacht. Für diejenigen, die QLoRA verwenden möchten, ist es über eine Kombination der bitsandbytes– und PEFT-Bibliotheken zugänglich. Darüber hinaus bietet die HuggingFace Transformer-Reinforcement-Learning (TRL)-Bibliothek eine Unterstützung für LoRA. Zusammen bieten diese drei Bibliotheken das notwendige Werkzeug für das Feintuning eines ausgewählten vorgefertigten Modells, um überzeugende und kohärente Produktbeschreibungen zu generieren, wenn sie mit spezifischen Attribut-Anweisungen aufgerufen werden.

Post-Feintuning von QLoRA müssen die Gewichte wieder in ein Hochpräzisionsformat umgewandelt werden, was zu einem Genauigkeitsverlust führen und die Optimierung für die Beschleunigung des Prozesses vermissen lassen kann.

Ein vorgeschlagene Lösung besteht darin, die Gewichtsmatrix in kleinere Segmente zu unterteilen und die Quantisierung und die niedrige Rang-Anpassung auf jedes Segment einzeln anzuwenden. Eine neue Methode, namens QA-LoRA, versucht, die Vorteile von Quantisierung und niedriger Rang-Anpassung zu kombinieren, während der Prozess effizient und das Modell für die gewünschten Aufgaben effektiv bleibt.

Schlussfolgerung

In diesem Artikel haben wir uns mit den Herausforderungen beschäftigt, die durch die enorme Größe von LLMs entstehen. Wir haben traditionelle Feintuning-Praktiken und ihre damit verbundenen Rechen- und finanziellen Anforderungen untersucht. Der Kern von LoRA liegt in seiner Fähigkeit, vorgefertigte Modelle zu ändern, ohne sie vollständig neu zu trainieren, wodurch die Anzahl der trainierbaren Parameter reduziert und der Anpassungsprozess kostengünstiger wird.

Wir haben auch Quantisiertes LoRA (QLoRA) kurz behandelt, das LoRA mit Quantisierung kombiniert, um die Speicheranforderungen des Modells zu reduzieren, während es die notwendige Präzision für das Training beibehält. Mit diesen fortschrittlichen Techniken sind Praktiker nun mit einer robusten Bibliothek ausgestattet, die die einfache Übernahme und den Einsatz von LLMs in einer Vielzahl von realen Szenarien erleichtert.

Matrix

Matrix

Diese Strategien sind darauf ausgelegt, ein Gleichgewicht zwischen der Anpassung von LLMs für spezifische Aufgaben und der Sicherstellung zu schaffen, dass die Feinabstimmungs- und Einsatzprozesse nicht zu anspruchsvoll in Bezug auf Rechen- und Speicherressourcen sind.

Ich habe die letzten fünf Jahre damit verbracht, mich in die faszinierende Welt des Machine Learning und Deep Learning zu vertiefen. Mein Engagement und meine Expertise haben mich dazu geführt, an über 50 verschiedenen Software-Entwicklungsprojekten mit einem besonderen Fokus auf AI/ML beizutragen. Meine anhaltende Neugier hat mich auch zum Bereich der Natural Language Processing hingezogen, einem Feld, das ich weiter erforschen möchte.