LORA (adaptiv-arxiv.org/abs/2106.09685) ist eine beliebte Technologie, die kostengünstige und fein abgestimmte Großsprachenmodelle (LLM) ist. Aber im Jahr 2024 entstand eine große Anzahl neuer Parameter-effizienter Feinabstimmentechnologien, und nacheinander tauchten verschiedene Lora-Alternativen auf: SVF, SVFT, Milora, Pissa, Lora-XS? Tauchen wir eingehend hinein.
Der erste Einblick von Lora ist, dass alle Gewichte von Feinabstimmungsmodellen überbetrieben werden. Stattdessen friert Lora das Modell ein und trainiert nur ein Paar kleiner "Adapter" -Matrizen mit niedrigem Rang. Siehe die Illustration unten (wobei w eine Gewichtsmatrix in Transformator LLM ist).
Da viel weniger Gradienten berechnet und gespeichert werden müssen, können Speicher- und Berechnungszyklen gespeichert werden. Dies ist beispielsweise ein Gemma 8B-Modell, das LORA-Feinabstimmung verwendet, um zu simulieren, wie Piraten sprechen: Es können nur 22 Millionen Parameter geschult und 8,5 Milliarden Parameter gefroren bleiben.
Lora ist sehr beliebt. Es hat sogar Mainstream-ML-Frameworks wie Keras als Einzellinien-API eingegeben:
<code>gemma.backbone.enable_lora(rank=8)</code>
Aber ist Lora das Beste? Forscher haben daran gearbeitet, die Formel zu verbessern. Tatsächlich gibt es viele Möglichkeiten, eine kleinere "Adapter" -Matrix zu wählen. Da die meisten von ihnen die Singular Value Decomposition (SVD) der Matrix geschickt nutzen, machen wir für ein wenig Mathematik inne.
SVD ist ein gutes Werkzeug zum Verständnis der Matrixstruktur. Diese Technik zersetzt die Matrix in drei: w = usv t , wobei u und v orthogonal sind (d. H. Basistransformation) und S eine diagonale Matrix sortierter Singularwerte. Diese Zersetzung existiert immer.
Im "Lehrbuch" sind SVD, U und V quadratische Matrixe, während S eine rechteckige Matrix mit singulären Werten auf der diagonalen und nullen Nullen ist. Tatsächlich können Sie quadratische Matrix und Rechtecke u oder v - siehe Bild verwenden - der verkürzte Teil wird nur mit Null multipliziert. Diese "Wirtschaft" SVD wird in gemeinsamen Bibliotheken wie Numpy.linalg.svd verwendet.
Wie verwenden wir dies, um die zu trainierenden Gewichte effektiver auszuwählen? Schauen wir uns einen kurzen Blick auf fünf aktuelle SVD-basierte Low-Rank-Feinabstimmungstechniken mit Kommentarenanweisungen.
Die einfachste Alternative zu LORA besteht darin, SVD auf der Gewichtsmatrix des Modells zu verwenden und dann die einzelnen Werte direkt zu optimieren. Seltsamerweise ist dies die neueste Technologie namens SVF, die im Transformers² Paper (arxiv.org/abs/2501.06252v2) veröffentlicht wurde.
SVF ist in Bezug auf Parameter als Lora viel wirtschaftlich. Darüber hinaus macht es das Feinabstimmungsmodell komponierbar. Weitere Informationen dazu finden Sie hier in meiner Transformers²-Beschreibung. Die Kombination von zwei SVF-Feinabstimmungsmodellen ist jedoch nur ein Additionsvorgang:
Wenn Sie trainierbare Parameter benötigen, untersucht das SVFT -Papier (arxiv.org/abs/2405.19597) eine Vielzahl von Methoden, indem Sie zunächst mehr trainierbare Gewichte auf der Diagonale hinzufügen.
Es bewertet auch eine Vielzahl anderer Alternativen, wie z. B. zufällig in die "M" -Matrix.
Noch wichtiger ist, dass das SVFT -Papier bestätigt, dass es nützlicher ist, trainierbare Werte als Diagonalen zu haben. Siehe die Feinabstimmungsergebnisse unten.
Als nächstes kommen verschiedene Techniken, um einzelne Werte in zwei Gruppen von "Big" und "Small" zu unterteilen. Aber bevor wir weitermachen, machen wir inne, um ein bisschen mehr SVD -Mathematik zu machen.
SVD wird normalerweise als zerlegt in drei Matrizen mit usv t angesehen, kann aber auch als gewichtete Summe vieler Rang 1 -Matrizen angesehen werden, die durch einzigartige Werte gewichtet werden:
Wenn Sie dies beweisen möchten, verwenden Sie die Formel von USV T -Form und Matrix -Multiplikation, um ein einzelnes Matrixelement mit einerseits ein einzelnes Matrixelement mit der Form von σ s i u i t auszudrücken, und vereinfachen Sie die Tatsache, dass S eine Diagonale ist, und beachten Sie, dass es dasselbe ist.
In dieser Darstellung ist leicht zu erkennen, dass Sie die Summe in zwei Teile aufteilen können. Und da Sie immer singuläre Werte sortieren können, können Sie sie in "große" und "kleine" Singularwerte unterteilen.
Wenn Sie auf die drei Matrixform W = USV T zurückkehren, sieht die Segmentierung aus:
Basierend auf dieser Formel untersuchen zwei Papiere, was passiert, wenn Sie nur große singuläre Werte oder nur kleine singuläre Werte anpassen, d. H. Pissa und Milora.
Pissa (Hauptanpassung der Singularvektor, arxiv.org/abs/2404.02948) behauptet, Sie sollten nur die großen Masterwerte anpassen. Der Mechanismus ist wie folgt:
Aus dem Papier ausgerichtet: "Pissa zielt darauf ab, die vollständige Feinabstimmung zu approximieren, indem die wichtigsten einzigartigen Komponenten angepasst werden, von denen angenommen wird, dass sie die Natur der Gewichtsmatrix erfassen. Stattdessen ist Milora so konzipiert, dass sie sich an neue Aufgaben anpassen und gleichzeitig das Wissen über das zugrunde liegende Modell maximiert."
Es gibt auch eine interessante Entdeckung auf dem Pissa-Papier: Komplette Feinabstimmung ist anfällig für Überanpassung. Mit feinstimmigen Techniken mit niedrigem Rang können Sie bessere Ergebnisse für absolute Werte erzielen.
Milora hingegen behauptet, dass Sie nur den kleinen Masterwert anpassen sollten. Es verwendet einen ähnlichen Mechanismus, um Pissa zu erhalten:
Überraschenderweise scheint Milora die Oberhand zu haben, zumindest wenn die mathematische Datensätze fein abtun, was möglicherweise mit dem ursprünglichen Vorbildung übereinstimmt. Es kann argumentiert werden, dass Pissa besser geeignet sein sollte, um das Verhalten von LLM vor dem Training weiter zu beugen.
Schließlich möchte ich Lora-XS (arxiv.org/abs/2405.17604) erwähnen. Sehr ähnlich wie Pissa, aber der Mechanismus ist etwas anders. Es zeigt auch, dass viel weniger Parameter als Lora auch gute Ergebnisse liefern.
Das Papier enthält eine mathematische Erklärung, dass dieses Setup in zwei Fällen "ideal" ist:
Beide scheinen mir zu zweifeln, also werde ich nicht ausführlich in die Mathematik gehen. Einige Ergebnisse:
Die grundlegende Annahme scheint zu sein, dass einzelne Werte in "Big" und "Small" unterteilt sind, aber ist das wahr? Ich überprüfte schnell die Gemma2 9b auf Colab. Fazit: 99% der Singularwerte liegen im Bereich von 0,1 - 1,1. Ich bin mir nicht sicher, ob es sinnvoll ist, sie in "große" und "kleine" zu teilen.
Es gibt viele andere Feinabstimmungstechniken für eine effiziente Parametrisierung. Es ist erwähnenswert:
Meine Schlussfolgerung: Um den LORA -Standard mit 10 -fachen Parametern zu übertreffen, mag ich die Einfachheit des SVF von Transformers². Wenn Sie trainierbare Gewichte benötigen, ist SVFT eine einfache Erweiterung. Beide verwenden alle singulären Werte (Vollrang, keine einzigartigen Werte, und sind immer noch billig? Ich wünsche Ihnen eine glückliche Feinabstimmung!
Hinweis: Alle Illustrationen werden vom Autor erstellt oder aus Arxiv.org Papers für Kommentare und Diskussionen extrahiert.
Das obige ist der detaillierte Inhalt vonVerwenden Sie immer noch Lora, um Ihre LLM zu fein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!