Es gibt zwei Arten von Trainingsarbeitslasten:
- Computing-gebunden
- nicht gebunden
Computing-gebundenes Training ist durch die Zeit, die Sie für das Training aufwenden können, begrenzt, nicht durch die Menge der Trainingsdaten oder einen anderen Faktor. Mit anderen Worten: Die „optimale“ Trainingszeit ist immer „so lang, wie man es sich leisten kann“. Wenn Sie auf eine Weise mehr oder effizienter trainieren können, sollte der Trainingsverlust sinken. Bei korrekter Abstimmung sollte der Validierungsverlust auch sinken.
Die Beschleunigung von rechengebundenem Training entspricht der Verbesserung des Trainings. Allerdings bedeutet eine Arbeitslast, die durch die Rechenkapazität eingeschränkt ist, nicht, dass das Training länger oder schneller funktioniert.
Wenn das Training nicht rechenorientiert ist, können Sie sich so lange trainieren, wie Sie möchten. Ein längeres Training eines Modells kann jedoch nicht hilfreich sein oder sogar eine Überanpassung zur Folge haben. Wenn das Training nicht rechengebunden ist:
- Sie können so trainieren, dass nur sehr wenig Trainingsverluste auftreten, aber durch das zusätzliche Training auch der Trainingsverlust etwas geringer ist. Der Validierungsverlust wird aber nicht erheblich reduziert.
- Sie können sie einfacher abstimmen, insbesondere bei der Anpassung der Raten der zeitlichen Abnahme der Lernrate, da diese eine besonders starke Interaktion mit dem Trainingsbudget haben. Im Gegensatz dazu kann ein geringer Trainingsverlust beim Computing-Training einen auf die Perfektion abgestimmten Zeitplan für den Lernraten erfordern.
Unabhängig davon, ob eine bestimmte Arbeitslast rechengebunden ist oder nicht, verlangsamen Methoden, die die Abweichung der Gradienten (in Batches) erhöhen, den Trainingsfortschritt in der Regel und damit auch die Anzahl der Trainingsschritte, die zum Erreichen eines bestimmten Validierungsverlusts erforderlich sind. Die folgenden Ursachen können eine hohe Gradientenabweichung verursachen:
- Es wird eine kleinere Batchgröße verwendet.
- Datenerweiterung hinzufügen
- Einige Arten von Regularisierung hinzufügen (z. B. Dropout-Regularisierung).
Legen Sie fest, wie lange trainiert werden soll, wenn das Training nicht gebunden ist.
Ihr Ziel: Trainieren Sie lange genug, damit das Modell das bestmögliche Ergebnis erreicht, ohne Trainingsschritte zu verschwenden.
Ihr Hauptziel ist es, dafür zu sorgen, dass das Modell lange genug trainiert wird, um das bestmögliche Ergebnis zu erzielen, ohne unnötige Trainingsschritte zu verschwenden. Im Zweifelsfall sollten Sie Ihre Kenntnisse länger aufrechterhalten. Die Bewertungsmesswerte (z. B. Precision, Recall, AUC oder F1) sollten sich beim Training nie verlangsamen, vorausgesetzt, Sie verwenden die retrospektive Prüfpunktauswahl und Sie nutzen sie häufig genug.
Sie sollten die max_train_steps
-Nummer nie in einer Studie anpassen. Wählen Sie stattdessen einen Wert aus, der für alle Tests verwendet wird. Zeichne bei diesen Tests den Trainingsschritt auf, den die Auswahl eines rückblickenden Prüfpunkts findet, um die Auswahl von max_train_steps
zu verfeinern.
Wenn beispielsweise der beste Schritt immer in den ersten 10% des Trainings liegt, ist die maximale Anzahl der Schritte viel zu hoch.
Wenn der beste Schritt immer wieder in den letzten 25% des Trainings liegt, kann es sich lohnen, das Training länger zu nutzen und den Verlauf des Zeitverlaufs neu zu optimieren.
Die ideale Anzahl von Trainingsschritten kann sich ändern, wenn sich die Architektur oder Daten ändern (z. B. das Hinzufügen von Datenerweiterung).
Im nächsten Abschnitt wird beschrieben, wie Sie einen anfänglichen Kandidatenwert für max_train_steps
auf Basis der Anzahl von Schritten auswählen, die für die perfekte Passform des Trainings-Datasets mithilfe einer konstanten Lernrate erforderlich sind.
Es ist möglich, max_train_steps
zu verringern, wenn der Trainingsprozess irgendwie verbessert wird, z. B. mit einem besser abgestimmten Optimierungstool oder einem besser abgestimmten Zeitplan für die Lernrate.
Algorithmus für die Auswahl eines ersten Kandidaten für „max_train_steps“ mithilfe eines Lernrates
Sie können einen ersten Kandidaten für max_train_steps
mit einem Lernraten-Sweep-Algorithmus auswählen. Der folgende Algorithmus geht davon aus, dass es nicht nur „perfekt“ ist, um in das Trainings-Dataset zu passen, sondern auch mithilfe eines konstanten Zeitplans für die Lernrate.
- Wenn es möglich ist, dem gesamten Trainings-Dataset perfekt gerecht zu werden, muss eine Konfiguration mit einem Wert von
max_train_steps
vorhanden sein, die perfekt in das Trainings-Dataset passt. Suchen Sie nach einer solchen Konfiguration und verwenden Sie den Wert vonmax_train_steps
als AusgangspunktN
. - Führen Sie einen konstanten Lernrateumfang (d. h. eine Rastersuche-Lernrate) ohne Datenerweiterung und ohne Regularisierung durch, bei dem jeder Test für
N
Schritte trainiert wird. Die Anzahl der Schritte, die für den schnellsten Test im Verlauf der Lernrate erforderlich sind, um eine perfekte Trainingsleistung zu erreichen, sollten Ihre erste Schätzung fürmax_train_steps
sein.
HINWEIS: Ungültige Suchbereiche können zu einer Täuschung führen.
Wenn beispielsweise alle Lernraten in einer Studie zu klein sind, können Sie fälschlicherweise davon ausgehen, dass ein sehr hoher Wert von max_train_steps
erforderlich ist.
Überprüfen Sie zumindest, ob die optimale Lernrate in der Studie außerhalb des Suchbereichs liegt.
Legen Sie fest, wie lange das Training trainiert werden soll, wenn
In einigen Fällen verbessert sich der Trainingsverlust auf unbestimmte Zeit, sodass Ihre Geduld und Ihre Rechenressourcen die begrenzenden Faktoren werden. Aber sollte man so lange trainieren, wie man kann? Nicht unbedingt. Ziehen Sie Folgendes in Betracht:
- Sie können möglicherweise eine effektivere Feinabstimmung vornehmen, wenn Sie eine größere Anzahl kürzerer Tests ausführen und so die längsten Produktionsläufe für die Modelle reservieren, die Sie einführen möchten.
- Da die Trainingszeit für Tests die Grenze zu Geduld annimmt, werden Feinabstimmungstests für potenzielle Startteilnehmer relevanter. Sie können jedoch weniger davon durchführen.
- Sie können wahrscheinlich viele Fragen beantworten, während Sie nur für etwa 10% der Produktionsdauer trainieren. Die Schlussfolgerungen zu diesem Zeitpunkt gelten jedoch möglicherweise nicht für Tests mit 20% der Produktionsdauer, insbesondere 100%.
Eine Abstimmung in mehreren Runden mit erhöhten Beschränkungen für Trainingsschritte pro Test ist ein sinnvoller Ansatz. Du kannst beliebig viele Runden laufen. In der Regel sind es aber 1–3 Runden. Sie sollten so weit wie möglich versuchen, das Problem so weit wie möglich zu verstehen. Dazu versuchen Sie Tests mit sehr schneller Bearbeitungszeit. Dabei gehen Sie Folgendes ein:
- Feinabstimmung der Tiefen
- Relevanz für die letzten, längsten Läufe
Sobald ein bestimmtes Zeitlimit für einen Testzeitraum nützliche Erkenntnisse gewonnen hat, können Sie die Trainingszeit erhöhen und die Feinabstimmung vornehmen. Prüfen Sie die Ergebnisse aus den kürzeren Ausführungen nach Bedarf noch einmal. Als Ausgangspunkt empfehlen wir zwei Feinabstimmungsarten:
- Runde 1: Kürzere Dauer, um gute Modell- und Optimierungs-Hyperparameter zu finden.
- Runde 2: Es werden nur sehr lange auf guten Hyperparameter-Punkten ausgeführt, um das endgültige Modell zu erhalten.
Die größte Frage aus Runde 1 geht nach Runde 2:
Wie passen Sie den Zeitplan für die Lernrate an?
Ein häufiger Fehler beim Anpassen von Zeitplänen für die Lernrate ist, dass alle zusätzlichen Trainingsschritte mit einer zu kleinen Lernrate verwendet werden.
Runde 1: Viele kurze Trainingsläufe
Leider gibt es keine Garantie, dass gute Hyperparameter, die in kurzen, unvollständigen Trainings enthalten sind, immer noch eine gute Wahl sind, wenn Sie die Trainingslänge erheblich verlängern. Bei einigen Hyperparametern stehen die guten Auswahlen aber oft korreliert, damit Runde 1 nützlich ist. Welche Hyperparameter-Werte aus kürzeren Ausführungen wurden erfolgreich an längere Trainingsläufe übertragen? Wir wissen es nicht, wir brauchen weitere Nachforschungen. Ausgehend von unseren bisher bestehenden Erkenntnissen und Vermutungen haben wir aber festgestellt, dass es seltener zu Übertragungen kommt:
- Sehr wahrscheinlich. Frühtrainingsinstabilität kann in der ersten Feinabstimmung mit einer kleineren Anzahl von Trainingsschritten behoben werden.
Die folgenden Hyperparameter werden am wahrscheinlichsten übertragen:
- Aufwärmlänge
- Initialisierung
- Übertragung wahrscheinlich Ein deutlicher Gewinn in der Modellarchitektur findet in der Regel statt, aber viele Gegenbeispiele sind unwahrscheinlich.
- Mögliche Übertragung Die folgenden Hyperparameter können übertragen werden:
- Der Optimierungsalgorithmus und die Hyperparameter würden „los“ übertragen.
- Datenerweiterung.
- Regularisierung. Wenn es nicht möglich ist, das Trainings-Dataset perfekt anzupassen, kann es sein, dass sich das Modell in einer Situation befindet, in der Regularisierung wahrscheinlich nicht sehr hilfreich ist.
- Übertragung unwahrscheinlich Der Zeitplan für die Lernrate wird wahrscheinlich nicht perfekt übertragen. Der Ansatz Training-Optimal Large Language Models deutet darauf hin, dass auch ein verlaufender Zeitplan für Übertragungen übertragen wird. Wir glauben aber nicht, dass das insgesamt geschieht. Wenn Sie beispielsweise den Sqrt-Verfall mit einer kleinen Anzahl von Trainingsschritten anpassen und sich dann auf eine große Anzahl erweitern, werden die meisten Trainings bei zu kleinen Schritten ausgeführt. Bei den meisten Zeitplänen reicht das Limit des extremen Trainingsbudgets wahrscheinlich schon aus, es sind aber wahrscheinlich deutliche Leistungsverbesserungen zu erwarten. Im Artikel Meta-Optimierung für die Kurzgeschichte
Runde 2: weniger Ausführungen, aber längere Dauer
Führen Sie die beste Hyperparameter-Konfiguration aus Runde 1 aus.
Spektive: 🤖 Mit den zusätzlichen Schritten können Sie den Trainingszeitraum mit einer hohen Lernrate verlängern. Wenn Sie beispielsweise einen linearen Zeitplan verwenden, sollten Sie die Länge des Verlaufs in Runde 1 beibehalten und den Zeitraum des konstanten lr
am Anfang verlängern. Für den Kosinuszerfall sollten Sie die Basis lr
aus Runde 1 behalten und max_train_steps
erweitern, wie unter Training optimaler Sprachmodelle für das Training beschrieben.
Weitere Schulungen sind für Teams mit folgenden Anforderungen sinnvoll:
- Sehr ausgereifte Modellierung
- Feinabstimmungspipelines
- Sehr lange und teure Produktionsschulungen
Zusätzliche Trainingsläufe sind jedoch oft nicht produktiv.
Wir haben bereits beschrieben, wie man von Runde 1 zu Runde 2 wechselt. Wenn Sie die Analysezeit nicht interessieren und die effiziente Nutzung von Rechenressourcen oberste Priorität hat, empfehlen wir, die Dauer der Trainingsausführungen (und damit die End-to-End-Zeit für den Abschluss einer Studie) über viele verschiedene Abstimmungsrunden hinweg exponentiell zu erhöhen:
- Sorgen Sie in jeder Runde systematisch dafür, dass Ihre Auswahl gute Ergebnisse liefert.
- Setzen Sie neue Ideen durch eine Pipeline, die sie schrittweise mithilfe von schrittweise lang andauernden Tests von Schritt i bis Schritt i+1 zerstört.