Anzahl der Schritte für jeden Trainingslauf festlegen

Es gibt zwei Arten von Trainingsarbeitslasten:

  • computing-gebunden
  • nicht rechenintensiv

Rechenintensive Trainings werden durch die Zeit begrenzt, die Sie für das Training aufwenden können, nicht durch die Menge der Trainingsdaten oder einen anderen Faktor. Mit anderen Worten: Die „optimale“ Trainingszeit ist immer „so lang wie möglich“. Wenn Sie länger oder effizienter trainieren können, sollte der Trainingsverlust sinken. (Bei richtiger Optimierung sollte auch der Validierungsverlust sinken.)

Die Beschleunigung des rechenintensiven Trainings entspricht einer Verbesserung des Trainings. Nur weil eine Arbeitslast rechenintensiv ist, bedeutet das aber nicht, dass längeres oder schnelleres Training die einzige Möglichkeit ist, die Ergebnisse zu verbessern.

Wenn das Training nicht rechengebunden ist, können Sie es so lange durchführen, wie Sie möchten. Ein längeres Training eines Modells kann jedoch wenig hilfreich sein oder sogar zu einer Überanpassung führen. Wenn das Training nicht rechenintensiv ist:

  • Sie können das Modell trainieren, bis der Trainingsverlust sehr gering ist. Zusätzliches Training kann den Trainingsverlust dann zwar noch leicht verringern, den Validierungsverlust aber nicht mehr wesentlich.
  • Das Abstimmen ist einfacher, insbesondere bei der Abstimmung von Lernraten-Verfallsplänen, da diese eine besonders starke Interaktion mit dem Trainingsbudget haben. Im Gegensatz dazu kann es bei rechenintensiven Trainings erforderlich sein, einen perfekt abgestimmten Plan für den Lernratenabfall zu verwenden, um einen niedrigen Trainingsverlust zu erzielen.

Unabhängig davon, ob eine bestimmte Arbeitslast rechengebunden ist oder nicht, verlangsamen Methoden, die die Varianz der Gradienten (über Batches hinweg) erhöhen, in der Regel den Trainingsfortschritt und können daher die Anzahl der Trainingsschritte erhöhen, die erforderlich sind, um einen bestimmten Validierungsverlust zu erreichen. Eine hohe Gradientvarianz kann folgende Ursachen haben:

  • Verwenden Sie eine kleinere Batchgröße.
  • Datenaugmentation hinzufügen
  • Hinzufügen bestimmter Arten von Regularisierung (z. B. Dropout-Regularisierung).

Festlegen, wie lange trainiert werden soll, wenn das Training nicht rechengebunden ist

Ihr Ziel: Das Modell so lange trainieren, bis es das bestmögliche Ergebnis erreicht hat, ohne Trainingsschritte zu verschwenden.

Ihr Hauptziel ist es, das Modell so lange zu trainieren, bis es das bestmögliche Ergebnis erreicht, ohne unnötige Trainingsschritte zu verschwenden. Im Zweifelsfall solltest du lieber länger trainieren. Ihre Bewertungsstatistiken (z. B. Genauigkeit, Trefferquote, AUC oder F1) sollten sich bei längerem Training nie verschlechtern, sofern Sie die retrospektive Checkpoint-Auswahl richtig verwenden und Checkpoints häufig genug erstellen.

Die max_train_steps-Nummer darf in einer Studie nie angepasst werden. Wählen Sie stattdessen einen Wert aus und verwenden Sie ihn für alle Testläufe. Stellen Sie anhand dieser Testläufe den Trainingsschritt dar, den die rückblickende Checkpoint-Auswahl findet, um die Auswahl von max_train_steps zu optimieren.

Wenn der beste Schritt beispielsweise immer während der ersten 10% des Trainings erfolgt, ist die maximale Anzahl der Schritte viel zu hoch. Wenn der beste Schritt durchgehend in den letzten 25% des Trainings liegt, kann es sinnvoll sein, das Training zu verlängern und den Decay-Zeitplan neu abzustimmen. Die ideale Anzahl von Trainingsschritten kann sich ändern, wenn sich die Architektur oder die Daten ändern (z. B. durch Hinzufügen von Data Augmentation). Im nächsten Abschnitt wird beschrieben, wie Sie einen anfänglichen Kandidatenwert für max_train_steps basierend auf der Anzahl der Schritte auswählen, die erforderlich sind, um den Trainingssatz mit einer konstanten Lernrate „perfekt anzupassen“.

Es ist möglich, max_train_steps zu verringern, wenn sich der Trainingsprozess verbessert, z. B. durch einen besser abgestimmten Optimizer oder einen besser abgestimmten Lernratenplan.

Algorithmus zum Auswählen eines ersten Kandidaten für „max_train_steps“ mithilfe eines Lernratensweeps

Sie können einen ersten Kandidaten für max_train_steps mit einem Algorithmus für die Lernratensuche auswählen. Der folgende Algorithmus geht davon aus, dass es möglich ist, das Trainings-Dataset nicht nur „perfekt“ anzupassen, sondern dies auch mit einem konstanten Lernratenplan zu tun.

  1. Wenn es möglich ist, den gesamten Trainingssatz perfekt anzupassen, muss es eine Konfiguration (mit einem bestimmten Wert von max_train_steps) geben, die den Trainingssatz perfekt anpasst. Suchen Sie nach einer solchen Konfiguration und verwenden Sie den Wert max_train_steps als Ausgangspunkt N.
  2. Führen Sie einen Sweep mit konstanter Lernrate durch (d. h. führen Sie eine Rastersuche für die Lernrate durch) ohne Datenerweiterung und ohne Regularisierung, wobei jeder Testlauf für N Schritte trainiert wird. Die Anzahl der Schritte, die für den schnellsten Test im Sweep der Lernrate erforderlich sind, um eine perfekte Trainingsleistung zu erreichen, sollte Ihre erste Schätzung für max_train_steps sein.

HINWEIS: Schlechte Suchräume können zu Selbsttäuschung führen. Wenn beispielsweise alle Lernraten in einer Studie zu klein sind, könnten Sie fälschlicherweise annehmen, dass ein sehr großer Wert von max_train_steps erforderlich ist. Prüfen Sie zumindest, ob die optimale Lernrate in der Studie nicht am Rand des Suchbereichs liegt.

Legen Sie fest, wie lange das Training dauern soll, wenn es rechenintensiv ist.

In einigen Fällen verbessert sich der Trainingsverlust immer weiter. Dann sind Ihre Geduld und Ihre Rechenressourcen die einschränkenden Faktoren. Solltest du aber so lange trainieren, wie du es dir leisten kannst? Nicht unbedingt. Hier einige Tipps:

  • Sie können die Abstimmung möglicherweise effektiver gestalten, indem Sie eine größere Anzahl kürzerer Tests durchführen und die längsten Läufe in „Produktionslänge“ für die Modelle reservieren, die Sie einführen möchten.
  • Wenn die Trainingszeit für Tests Ihr Limit erreicht, werden Optimierungstests für Ihre potenziellen Kandidaten für die Markteinführung relevanter, aber Sie können weniger davon durchführen.
  • Sie können wahrscheinlich viele Fragen beantworten, wenn Sie nur etwa 10% der Produktionslänge trainieren. Ihre Schlussfolgerungen zu diesem Zeitpunkt gelten jedoch möglicherweise nicht für Tests mit 20% der Produktionslänge, geschweige denn 100%.

Es ist sinnvoll, die Abstimmung in mehreren Runden mit zunehmenden Trainingsschrittlimits pro Versuch durchzuführen. Sie können beliebig viele Runden durchführen, aber in der Regel sind 1 bis 3 Runden am praktischsten. Im Grunde sollten Sie versuchen, so viel wie möglich über das Problem zu erfahren, indem Sie Tests mit einer sehr kurzen Bearbeitungszeit durchführen und dabei die folgenden Aspekte abwägen:

  • Gründlichkeit der Abstimmung.
  • Relevanz für die letzten, längsten Läufe.

Sobald ein bestimmtes Zeitlimit pro Testlauf nützliche Erkenntnisse geliefert hat, erhöhen Sie die Trainingszeit und optimieren Sie weiter. Überprüfen Sie bei Bedarf Ihre Schlussfolgerungen aus den kürzeren Läufen. Als Ausgangspunkt empfehlen wir zwei Optimierungsrunden:

  • Runde 1: Ausführungen mit kürzerer Dauer, um gute Hyperparameter für Modell und Optimierer zu finden.
  • 2. Runde: Sehr wenige Läufe mit langer Dauer für gute Hyperparameterpunkte, um das endgültige Modell zu erhalten.

Die wichtigste Frage beim Übergang von Runde 1 zu Runde 2 lautet:

Wie passen Sie Zeitpläne für den Lernratenabfall an?

Ein häufiges Problem beim Anpassen von Lernratenplänen zwischen den Runden besteht darin, alle zusätzlichen Trainingsschritte mit einer zu kleinen Lernrate zu verwenden.

Runde 1: Viele kurze Trainingseinheiten

Leider gibt es keine Garantie dafür, dass gute Hyperparameter, die in einem kurzen, unvollständigen Training gefunden wurden, auch dann noch eine gute Wahl sind, wenn Sie die Trainingslänge deutlich erhöhen. Bei einigen Hyperparametern sind die guten Optionen jedoch oft stark genug korreliert, damit Runde 1 nützlich ist. Welche Hyperparameterwerte aus kürzeren Läufen lassen sich erfolgreich auf längere Trainingsläufe übertragen? Das wissen wir nicht. Wir müssen weitere Untersuchungen durchführen. Basierend auf dem, was wir bisher wissen, sind das unsere Vermutungen in absteigender Wahrscheinlichkeit einer Übertragung:

  • Sehr wahrscheinlich, dass die Übertragung erfolgt. Eine frühe Trainingsinstabilität kann in der ersten Optimierungsrunde mit einer geringeren Anzahl von Trainingsschritten behoben werden. Die folgenden Hyperparameter werden am wahrscheinlichsten übertragen:
    • Länge des Warm-ups
    • Initialisierung
  • Wahrscheinlichkeit der Übertragung. Ein deutlicher Gewinn bei der Modellarchitektur wird in der Regel übertragen, aber es sind viele Gegenbeispiele wahrscheinlich.
  • Wird möglicherweise übertragen. Die folgenden Hyperparameter können übertragen werden:
    • Optimierungsalgorithmus und Hyperparameter würden „lose“ übertragen.
    • Datenerweiterung.
    • Regularisierung Wenn es nicht möglich ist, den Trainingssatz perfekt anzupassen, befindet sich das Modell möglicherweise in einem Bereich, in dem die Regularisierung wahrscheinlich nicht viel hilft.
  • Übertragung unwahrscheinlich. Der Zeitplan für die Lernrate lässt sich wahrscheinlich nicht perfekt übertragen. Im Artikel Training Compute-Optimal Large Language Models wird vorgeschlagen, dass sogar der Transfer von Decay-Zeitplänen möglich ist. Wir glauben jedoch nicht, dass dies im Allgemeinen zutrifft. Wenn Sie beispielsweise den Quadratwurzel-Abklingwert für eine kleine Anzahl von Trainingsschritten optimieren und dann auf eine große Anzahl erweitern, findet der Großteil des Trainings bei zu kleinen Schritten statt. Mit den meisten Zeitplänen können Sie wahrscheinlich „gut genug“ sein, wenn Sie das extreme Trainingsbudget nicht überschreiten. Wenn Sie den Zeitplan jedoch optimieren, werden Sie wahrscheinlich deutliche Leistungsverbesserungen feststellen. Im Artikel Understanding Short-Horizon Bias in Stochastic Meta-Optimization (Bias bei kurzfristiger Optimierung in der stochastischen Meta-Optimierung) werden die Gefahren beschrieben, die mit der kurzsichtigen Auswahl von Lernraten verbunden sind.

2. Runde: weniger Läufe, aber längere Dauer

Führen Sie die beste Hyperparameterkonfiguration aus Runde 1 aus.

Spekulation: 🤖 Verwenden Sie die zusätzlichen Schritte, um den Trainingszeitraum mit einer hohen Lernrate zu verlängern. Wenn Sie beispielsweise einen linearen Zeitplan verwenden, behalten Sie die Länge des Abklingens ab Runde 1 bei und verlängern Sie den Zeitraum mit konstantem lr am Anfang. Behalten Sie für den Kosinuszerfall die Basis lr aus Runde 1 bei und erweitern Sie max_train_steps wie in Training Compute-Optimal Large Language Models beschrieben.

Zusätzliche Trainingsrunden können für Teams mit den folgenden Merkmalen sinnvoll sein:

  • Sehr ausgereifte Modellierung
  • Tuning-Pipelines
  • Sehr lange und teure Produktionsläufe

Zusätzliche Trainingsläufe sind jedoch oft unproduktiv.

Wir haben bereits beschrieben, wie Sie von Runde 1 zu Runde 2 wechseln. Wenn Sie die Analysezeit nicht stört und die effiziente Nutzung von Rechenressourcen Ihr oberstes Anliegen ist, empfehlen wir, die Länge der Trainingsläufe (und damit die End-to-End-Zeit für den Abschluss einer Studie) über viele verschiedene Optimierungsrunden hinweg exponentiell zu erhöhen:

  • Prüfen Sie in jeder Runde systematisch, ob Ihre Entscheidungen weiterhin gute Ergebnisse liefern.
  • Neue Ideen durchlaufen eine Pipeline, in der das Risiko durch immer länger laufende Tests von Schritt i bis Schritt i+1 schrittweise verringert wird.