Mit dem Erscheinen von ChatGPT erkannte die Welt das starke Potenzial großer Sprachmodelle, das die natürliche Sprache verstehen und auf Benutzeranfragen mit hoher Genauigkeit reagieren kann. In der Abkürzung von Llmder erste Transient L steht für GroßReflektieren Sie die huge Anzahl von Parametern, die diese Modelle normalerweise haben.

Moderne LLMs enthalten oft über eine Milliarde Parameter. Stellen Sie sich nun eine State of affairs vor, in der wir ein LLM an eine nachgeschaltete Aufgabe anpassen wollen. Ein gemeinsamer Ansatz besteht aus Feinabstimmungbei der die vorhandenen Gewichte des Modells auf einem neuen Datensatz angepasst werden. Dieser Prozess ist jedoch extrem langsam und ressourcenintensiv-insbesondere bei einem lokalen Laptop mit begrenzter {Hardware}.

Anzahl der Parameter einiger der größten Sprachmodelle in den letzten Jahren.

Während der Feinabstimmung können einige neuronale Netzwerkschichten eingefroren werden, um die Trainingskomplexität zu verringern. Dieser Ansatz fällt aufgrund hoher Rechenkosten immer noch in der Skalierung ab.

Um diese Herausforderung anzugehen, werden wir in diesem Artikel die Kernprinzipien von untersuchen Lora (Anpassung mit niedriger Rang)Eine beliebte Technik zur Reduzierung der Rechenlast während der Feinabstimmung große Modelle. Als Bonus werfen wir auch einen Blick auf Qlora, das auf Lora aufbaut, indem wir die Quantisierung einbeziehen, um die Effizienz weiter zu verbessern.

Repräsentation des neuronalen Netzwerks

Nehmen wir ein vollständig verbundenes neuronales Netzwerk ein. Jede seiner Schichten besteht aus N Neuronen, die vollständig mit verbunden sind mit M Neuronen aus der folgenden Schicht. Insgesamt gibt es N M Verbindungen, die als Matrix mit den jeweiligen Dimensionen dargestellt werden können.

Ein Beispiel, das eine vollständig verbundene neuronale Netzwerkschicht zeigt, deren Gewichte in der Matrixform dargestellt werden können.

Wenn eine neue Eingabe an eine Schicht übergeben wird, müssen wir lediglich die Matrixmultiplikation zwischen der Gewichtsmatrix und dem Eingangsvektor durchführen. In der Praxis wird dieser Vorgang mithilfe erweiterter linearer Algebra -Bibliotheken stark optimiert und häufig an ganzen Stapeln von Eingängen gleichzeitig durchgeführt, um die Berechnung zu beschleunigen.

Multiplikationstrick

Die Gewichtsmatrix in einem neuronalen Netzwerk kann extrem große Abmessungen aufweisen. Anstatt die vollständige Matrix zu speichern und zu aktualisieren, können wir sie in das Produkt von zwei kleineren Matrizen faktorisieren. Insbesondere, wenn eine Gewichtsmatrix Abmessungen hat N × mWir können es mit zwei Größenmatrizen annähern N × okay Und okay × mWo okay ist eine viel kleinere intrinsische Dimension (okay << n, m).

Angenommen, die ursprüngliche Gewichtsmatrix ist beispielsweise 8192 × 8192was ungefähr entspricht 67m Parameter. Wenn wir uns entscheiden Ok = 8Die faktorisierte Model besteht aus zwei Matrizen: einer der Größe 8192 × 8 und der andere 8 × 8192. Zusammen enthalten sie nur ungefähr 131k Parameter – Mehr als 500 -mal weniger als die ursprünglichen, drastisch reduzierenden Speicher- und Berechnungspflichten.

Eine große Matrix kann ungefähr als Multiplikation von zwei kleineren Matrizen dargestellt werden.

Der offensichtliche Nachteil der Verwendung kleinerer Matrizen, um eine größere zu approximieren. Wenn wir die kleineren Matrizen multiplizieren, um das Unique zu rekonstruieren, stimmen die resultierenden Werte nicht genau mit den ursprünglichen Matrixelementen überein. Dieser Kompromiss ist der Preis, den wir für den erheblichen Reduzieren von Speicher- und Rechenanforderungen zahlen.

Trotz eines geringen Wertes wie Ok = 8 ist es jedoch oft möglich, die ursprüngliche Matrix mit minimalem Genauigkeitsverlust zu approximieren. Tatsächlich können in der Praxis sogar Werte von so niedrig wie okay = 2 oder okay = 4 manchmal effektiv verwendet werden.

Lora

Die im vorherige Abschnitt beschriebene Idee zeigt perfekt das Kernkonzept von Lora. Lora steht für Niedrige Anpassungwo sich der Begriff niedriger Rang auf die Technik von bezieht Annäherung einer großen Gewichtsmatrix, indem sie sie in das Produkt von zwei kleineren Matrizen mit einem viel niedrigeren Rang faktorisiert okay. Dieser Ansatz reduziert die Anzahl der trainierbaren Parameter erheblich und erhalten den größten Teil des Modells des Modells.

Ausbildung

Nehmen wir an, wir haben einen Eingangsvektor X übergeben an eine vollständig verbundene Schicht in einem neuronalen Netzwerk, das vor der Feinabstimmung durch eine Gewichtsmatrix dargestellt wird W. Um den Ausgangsvektor zu berechnen yWir multiplizieren einfach die Matrix mit der Eingabe: y = wx.

Während der Feinabstimmung ist es das Ziel, das Modell für eine nachgeschaltete Aufgabe durch Modifizierung der Gewichte anzupassen. Dies kann ausgedrückt werden, um eine zusätzliche Matrix zu lernen ΔWso dass: y = (w + ΔW) x = wx + ΔWX. Wie wir den Multiplikationsstrick oben gesehen haben, können wir jetzt ersetzen ΔW durch Multiplikation BaAdditionally bekommen wir letztendlich: y = wx + bax. Infolgedessen frieren wir die Matrix ein Wund löse die Optimierung Aufgabe, Matrizen zu finden A Und B das enthält völlig weniger Parameter als ΔW!

Eine direkte Berechnung der Multiplikation (Ba) x Bei jedem Vorwärtspass ist aufgrund der Tatsache, dass die Matrixmultiplikation Ba ist eine starke Operation. Um dies zu vermeiden, können wir eine assoziative Eigenschaft der Matrix -Multiplikation nutzen und den Betrieb als umschreiben B (AX). Die Multiplikation von A von X führt zu einem Vektor, der dann von multipliziert wird B Das erzeugt auch letztendlich einen Vektor. Diese Abfolge von Operationen ist viel schneller.

Loras Trainingsprozess

In Bezug auf die Backpropagation bietet Lora auch mehrere Vorteile. Trotz der Tatsache, dass ein Gradient für ein einzelnes Neuron immer noch quick die gleiche Menge an Operationen nimmt, befassen wir uns jetzt mit viel weniger Parametern in unserem Netzwerk, was bedeutet:

  • Wir müssen weit weniger Gradienten berechnen A Und B als hätte ursprünglich für erforderlich gewesen W.
  • Wir müssen keine riesige Matrix von Gradienten mehr aufbewahren W.

Zum Schluss zu berechnen yWir müssen nur die bereits berechneten hinzufügen Wx Und Bax. Hier gibt es keine Schwierigkeiten, da die Matrixzusatz leicht parallelisiert werden kann.

Als technisches Element vor der Feinabstimmung Matrix A wird unter Verwendung einer Gaußschen Verteilung und Matrix initialisiert B wird mit Nullen initialisiert. Verwenden einer Nullmatrix für B Zu Beginn stellt sicher, dass sich das Modell genau wie zuvor verhält, weil Bax = 0 · ax = 0Additionally y bleibt äquivalent zu Wx.

Dies macht die Anfangsphase der Feinabstimmung stabiler. Dann passt das Modell während der Backpropagation seine Gewichte allmählich an an A Und B Neues Wissen lernen.

Nach dem Coaching

Nach dem Coaching haben wir die optimalen Matrizen berechnet A Und B. Alles, was wir tun müssen, ist, sie zum Berechnen zu multiplizieren ΔWwas wir dann zur vorbereiteten Matrix hinzufügen W um die endgültigen Gewichte zu erhalten.

Während die Matrixmultiplikation Ba Möge wie eine schwere Operation erscheinen, wir führen sie nur einmal aus, additionally sollte es uns nicht zu sehr betreffen! Darüber hinaus müssen wir nach dem Zusatz nicht mehr speichern AAnwesend Boder ΔW.

Subtilität

Während die Idee von Lora inspirierend erscheint, könnte sich eine Frage stellen: Während der normalen Ausbildung neuronaler Netzwerke können wir Y nicht direkt als Bax Anstatt eine schwere Matrix zu verwenden W zu berechnen y = wx?

Das Downside mit nur Verwendung Bax ist, dass die Kapazität des Modells viel niedriger wäre und wahrscheinlich nicht ausreicht, damit das Modell effektiv lernen kann. Während des Trainings muss ein Modell huge Informationen lernen, sodass es natürlich eine große Anzahl von Parametern erfordert.

In der Lora -Optimierung behandeln wir Wx als Vorkenntnis des großen Modells und Interpretation ΔWX = Bax als aufgabenspezifisches Wissen, das während der Feinabstimmung eingeführt wurde. Wir können additionally die Bedeutung von immer noch nicht leugnen W in der Gesamtleistung des Modells.

Adapter

Wenn man die LLM -Theorie studiert, ist es wichtig, den Begriff zu erwähnen “AdapterDas erscheint in vielen LLM -Papieren.

Im Lora -Kontext und eine Adapter ist eine Kombination von Matrizen A und B, die verwendet werden, um eine bestimmte nachgeschaltete Aufgabe für eine bestimmte Matrix W zu lösen.

Nehmen wir zum Beispiel an, dass wir eine Matrix ausgebildet haben W so dass das Modell in der Lage ist, die natürliche Sprache zu verstehen. Wir können dann mehrere unabhängige LORA -Optimierungen durchführen, um das Modell auf verschiedene Aufgaben einzustellen. Infolgedessen erhalten wir mehrere Matrizenpaare:

  • (A₁, b₁)-Adapter, der zur Ausführung von Fragen zur Beantwortung von Aufgaben verwendet wird.
  • (AB)– Adapter, der für Probleme mit der Summarisierung verwendet wird.
  • (AB)– Adapter für Chatbot -Entwicklung geschult.
Die Entwicklung eines separaten Adapters für jede nachgeschaltete Aufgabe ist eine effiziente und skalierbare Möglichkeit, ein großes, einzelnes Modell an verschiedene Probleme anzupassen.

Angesichts dessen können wir eine einzelne Matrix speichern und so viele Adapter haben, wie wir für verschiedene Aufgaben wollen! Da die Matrizen A und B winzig sind, sind sie sehr einfach zu lagern.

Adapter in Echtzeit in Echtzeit

Das Tolle an Adaptern ist, dass wir sie dynamisch wechseln können. Stellen Sie sich ein Szenario vor, in dem wir ein Chatbot -System entwickeln müssen, mit dem Benutzer auswählen können, wie der Bot basierend auf einem ausgewählten Zeichen reagieren soll, wie z. Harry Potterein Wütender Vogeloder Cristiano Ronaldo.

Systembeschränkungen können uns jedoch aufgrund ihrer großen Größe daran hindern, drei separate große Modelle zu speichern oder abzustimmen. Was ist die Lösung?

Hier kommen Adapter zur Rettung! Alles, was wir brauchen, ist ein einziges großes Modell W und drei separate Adapter, eines für jeden Charakter.

Eine Chatbot -Anwendung, bei der ein Benutzer das Verhalten des Bots basierend auf seinem Charakter auswählen kann. Für jedes Zeichen wird ein separater Adapter verwendet. Wenn ein Benutzer das Zeichen ändern möchte, kann er dynamisch durch Matrixabzug geschaltet werden.

Wir behalten nur die Matrix im Speicher W und drei Matrixpaare: (A₁, b₁)Anwesend (A₂, b₂)Anwesend (A₃, b₃). Immer wenn ein Benutzer ein neues Zeichen für den Bot auswählt, müssen wir die Adaptermatrix nur dynamisch ersetzen, indem wir die Matrixabzug zwischen durchführen WUnd (Aᵢ, bᵢ). Infolgedessen erhalten wir ein System, das sehr intestine skaliert wird, wenn wir in Zukunft neue Charaktere hinzufügen müssen!

Qlora

Qlora ist ein weiterer beliebter Begriff, dessen Unterschied zu Lora nur in seinem ersten Transient ist, Qwas für “steht“quantisiert”. Der Begriff“Quantisierung”Bezieht sich auf die reduzierte Anzahl von Bits, die zum Speichern von Neuronen verwendet werden.

Zum Beispiel können wir neuronale Netzwerke als Schwimmer darstellen, die 32 Bit für jedes individuelle Gewicht erfordern. Die Idee der Quantisierung besteht aus der Komprimierung neuronaler Netzwerkgewichte zu einer geringeren Präzision ohne signifikanten Verlust oder Auswirkungen auf die Leistung des Modells. Anstatt 32 Bit zu verwenden, können wir additionally mehrere Bits fallen lassen, um beispielsweise nur 16 Bit zu verwenden.

Vereinfachtes Quantisierungsbeispiel. Die neuronalen Netzwerkgewichte sind auf eine Dezimalzahl abgerundet. In Wirklichkeit hängt die Rundung von der Anzahl der quantisierten Bits ab.

Apropos Qlora, die Quantisierung wird für die vorbereitete Matrix W verwendet, um die Gewichtsgröße zu verringern.

*Bonus: Präfix-Tuning

Präfixabstimmung ist eine interessante Different zu Lora. Die Idee besteht auch darin, Adapter für verschiedene nachgeschaltete Aufgaben zu verwenden, aber diesmal sind Adapter in der Aufmerksamkeitsschicht des Transformators integriert.

Insbesondere während des Trainings werden alle Modellschichten eingefroren, mit Ausnahme derjenigen, die als Präfixe zu einigen der Einbettungen hinzugefügt werden, die in Aufmerksamkeitsschichten berechnet wurden. Im Vergleich zu LORA ändert das Präfix -Tuning die Modelldarstellung nicht und hat im Allgemeinen viel weniger trainierbare Parameter. Um den Präfixadapter zu berücksichtigen, müssen wir bisher zusätzlich, diesmal jedoch weniger Elemente durchführen.

Sofern nicht nur sehr begrenzte Rechen- und Speicherbeschränkungen angegeben, werden LORA -Adapter in vielen Fällen im Vergleich zur Präfixabstimmung immer noch bevorzugt.

Abschluss

In diesem Artikel haben wir uns mit fortgeschrittenen LLM -Konzepten befasst, um zu verstehen, wie große Modelle ohne Rechenaufwand effizient abgestimmt werden können. Die Eleganz von Lora bei der Komprimierung der Gewichtsmatrix durch Matrixzerlegung ermöglicht es den Modellen nicht nur, schneller zu trainieren, sondern erfordert auch weniger Speicherplatz. Darüber hinaus dient Lora als hervorragendes Beispiel, um die Idee von Adaptern zu demonstrieren, die flexibel verwendet und für nachgeschaltete Aufgaben umgeschaltet werden können.

Darüber hinaus können wir einen Quantisierungsprozess hinzufügen, um den Speicherplatz weiter zu reduzieren, indem wir die Anzahl der zur Darstellung jedes Neurons erforderlichen Bits verringern.

Schließlich untersuchten wir eine andere Different namens „Präfix -Tuning“, die die gleiche Rolle wie Adapter spielt, ohne die Modelldarstellung zu ändern.

Ressourcen

Alle Bilder stammen vom Autor, sofern nicht anders angegeben.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert