1 Punkte von GN⁺ 2024-01-23 | 1 Kommentare | Auf WhatsApp teilen

LLMs mit der LoRA-Technik effizient feinabstimmen

  • LoRA (Low-Rank Adaptation) ist eine Technik, um LLMs (Large Language Models) effizienter feinabzustimmen.
  • Anstatt die gesamten Parameter des neuronalen Netzes anzupassen, aktualisiert LoRA nur wenige Matrizen mit niedrigem Rang.

Codebeispiele nachvollziehen

  • Sämtlicher im Artikel gezeigte Code ist im begleitenden Studio zu finden.
  • Mit einem Klick auf "Run" erhält man eine vollständige Kopie der Code-Umgebung und kann die Codedateien direkt ausführen.

LoRA verstehen

  • Vortrainierte LLMs werden aufgrund ihrer Vielseitigkeit für unterschiedliche Aufgaben als Basismodelle bezeichnet.
  • Die Anpassung eines vortrainierten LLMs an einen bestimmten Datensatz oder eine konkrete Aufgabe erfolgt durch Fine-Tuning.
  • LoRA bietet eine effizientere Alternative, indem Änderungen an den Gewichten der Layer während des Trainings in einem Low-Rank-Format approximiert werden.

LoRA von Grund auf implementieren

  • Ein LoRA-Layer lässt sich in PyTorch wie folgt implementieren.
class LoRALayer(torch.nn.Module):
  def __init__(self, in_dim, out_dim, rank, alpha):
    super().__init__()
    self.A = torch.nn.Parameter(...)
    self.B = torch.nn.Parameter(...)
    self.alpha = alpha

  def forward(self, x):
    return self.alpha * (x @ self.A @ self.B)
  • LoRA wird hauptsächlich auf lineare (Feedforward-)Layer in neuronalen Netzen angewendet.

Fine-Tuning mit LoRA -- Praxisbeispiel

  • LoRA kann nicht nur auf GPT oder Bildgenerierungsmodelle, sondern auf viele verschiedene Arten neuronaler Netze angewendet werden.
  • Es wird ein Praxisbeispiel gezeigt, in dem ein kleines BERT-Modell für eine Textklassifizierungsaufgabe eingesetzt wird.

Vergleich mit traditionellem Fine-Tuning

  • Mit den Standard-Einstellungen von LoRA wurde eine Testgenauigkeit von 89,44 % erreicht.
  • Im Vergleich zum traditionellen Fine-Tuning zeigt LoRA mit weniger Parametern eine bessere Leistung.

LoRA-Einstellungen optimieren

  • Durch die Anpassung der Hyperparameter von LoRA lässt sich die Leistung verbessern.
  • Durch Experimente mit verschiedenen Hyperparameter-Kombinationen kann die optimale Konfiguration gefunden werden.

Fazit

  • Beim Codieren von LoRA von Grund auf wurde gezeigt, dass LoRA beim Fine-Tuning des DistilBERT-Modells für eine Klassifizierungsaufgabe besser abschneidet als das Fine-Tuning nur der letzten Modellebene.

Meinung von GN⁺

  • LoRA ist eine wichtige Technik für das effiziente Fine-Tuning großer Sprachmodelle und hat das Potenzial, mit zunehmender Modellgröße die Rechenkosten zu senken.
  • Anhand praktischer Beispiele lässt sich verstehen, wie LoRA angewendet wird, und die Fähigkeit entwickeln, es auf reale Probleme zu übertragen.
  • Die Optimierung der Hyperparameter von LoRA zeigt einen allgemeinen Ansatz beim Tuning von Machine-Learning-Modellen.

1 Kommentare

 
GN⁺ 2024-01-23
Hacker-News-Kommentare
  • Ich verfolge die Technik anhand von Maxime Labonnes LLMs 101. Es fühlt sich immer noch seltsam an, dass man in der Informatik sagt: „Wir wissen nicht genau, wie sich Hyperparameter auf die Ergebnisse auswirken, also probieren wir verschiedene Werte aus und finden den besten.“
  • LoRA und LoRa sind unterschiedlich, und es ist frustrierend, dass dieselbe Abkürzung verwendet wird und dadurch Verwirrung entsteht.
  • Es ist immer noch nicht klar, wann man Fine-Tuning machen sollte. Früher dachte ich, es sei dazu da, das Verhalten eines Modells zu ändern, aber in letzter Zeit scheint es, als würden einige Unternehmen Fine-Tuning verwenden, um Wissen hinzuzufügen.
  • Es gibt die Frage nach den wichtigsten Anwendungsfällen für Fine-Tuning.
  • Das ist ein guter Artikel über LoRA. Ich bin kein Experte auf dem Gebiet, aber ich verstehe es so, dass LoRA im Original-Paper nur auf die letzte Dense-Schicht angewendet wurde. Es ist erwähnenswert, dass diese Methode in QLoRA verwendet wird und interessante Effekte zu haben scheint.
  • Ich verstehe nicht wirklich sicher, warum LoRA funktioniert. Dass es auf die letzte Schicht angewendet wird, verstehe ich, aber ich verstehe nicht die Logik, es wiederholt auf jede lineare Schicht anzuwenden. Kann das jemand intuitiv erklären?
  • Ich wünschte, das drahtlose LoRa-Protokoll wäre Open Source.
  • Ich hatte erwartet, dass es um softwaredefinierten Funk geht, aber es ist trotzdem interessant.
  • Ich habe eine Übung hinzugefügt, um den LoRA-Forward-Pass von Grund auf zu implementieren. Die Idee von LoRA ist elegant und die Implementierung ziemlich einfach.
  • Es gibt die Frage, welche Bibliothek für Fine-Tuning am beliebtesten ist.
  • Ich bevorzuge den konfigurationsbasierten Ansatz von Axolotl gegenüber dem Start von Grund auf. Axolotl unterstützt mistral, llama-2 und viele aktuelle Techniken.
  • Ich konzentriere mich auf datenzentriertes Fine-Tuning und darauf, Fine-Tuning-Daten zu sammeln und zu kuratieren, statt LoRA von Grund auf zu lernen.