Ressourcen/Modelltraining/Was während des Trainings passiert

Konzept

Epoche, Batch und Step

Ein Batch ist die Gruppe von Beispielen, die einem Gewichtsupdate zugrunde liegt, ein Step ist ein Update und eine Epoche ist ein vollständiger Durchlauf durch die Trainingsdaten. Zusammen bestimmen sie, wie oft sich das Modell ändert und wie oft es jedes Beispiel sieht.

Kapitel 64 Min. Lesezeit4 Quellen

Drei Trainingseinheiten

Trainingsdaten werden dem Modell weder einzeln noch alle auf einmal zugeführt. Sie werden in Batches unterteilt. Das Modell verarbeitet einen Batch, ermittelt den durchschnittlichen Fehler über alle seine Ziel-Token und aktualisiert seine Gewichte einmal. Dieses einzelne Update ist ein Step, auch Iteration genannt. Wenn jedes Trainingsbeispiel einmal verwendet wurde, ist eine Epoche abgeschlossen. Die Daten werden vor der nächsten Epoche normalerweise neu gemischt, sodass sich die Batches jedes Mal anders zusammensetzen.

BegriffWas gezählt wirdTypisch beim Fine-Tuning
BatchDie Beispiele, die vor einem Update gemeinsam verarbeitet werdenEine Handvoll bis ein paar Dutzend Beispiele; oft Auto
StepEin GewichtsupdateEinige Dutzend bis Tausende pro Durchlauf
EpocheEin vollständiger Durchlauf durch alle Trainingsbeispiele1–3 für überwachtes Fine-Tuning
EPOCHE 1 · GEMISCHTSchritt 1Schritt 2Schritt 3EPOCHE 2 · NEU GEMISCHTSchritt 4Schritt 5Schritt 624 Beispiele ÷ Batch-Größe 8 = 3 Schritte pro Epoche
24 Beispiele mit einer Batch-Größe von 8. Jeder Batch liefert ein Gewichts-Update (einen Schritt), sodass eine Epoche 3 Schritten und zwei Epochen 6 Schritten entsprechen. Die Daten werden in jeder Epoche neu gemischt: Das hervorgehobene Beispiel wird einmal pro Epoche gesehen, jedes Mal in einem anderen Batch.

Die Berechnung

Batches, Steps und Epochen
effective batch  = per-device batch × gradient accumulation × number of GPUs
steps per epoch  = ceil(training examples ÷ effective batch)
total steps      = steps per epoch × epochs
tokens processed = tokens in the training file × epochs
800 Beispiele, Batch-Größe 8, 3 Epochen
  1. Steps pro Epoche: 800 ÷ 8 = 100 Steps.
  2. Gesamte Steps: 100 × 3 Epochen = 300 Steps. Die Gewichte des Modells werden 300 Mal aktualisiert.
  3. Häufigkeit, mit der jedes Beispiel gesehen wird: 3, einmal pro Epoche, jedes Mal in einem anderen Batch, da die Daten neu gemischt werden.
  4. Ein 5% Warm-up: 0.05 × 300 = 15 Steps Anlaufphase, bevor die volle Lernrate erreicht wird.
  5. Die gleichen Daten mit Batch-Größe 32: 800 ÷ 32 = 25 Steps pro Epoche, insgesamt 75. Wenigere, glattere Updates, meist kombiniert mit einer etwas höheren Lernrate.
  6. Verarbeitete Token: Wenn die Trainingsdatei 400.000 Token enthält, verarbeiten drei Epochen 1.200.000, was der Abrechnung pro Token entspricht.

Wenn sich die Zahlen nicht glatt teilen lassen, ist der letzte Batch einer Epoche kleiner: 810 Beispiele in 8er-Batches ergeben 101 volle Batches und einen mit 2. Einige Trainings-Setups behalten diesen unvollständigen Batch, andere verwerfen ihn. In beiden Fällen ist die Auswirkung auf einen Durchlauf vernachlässigbar.

Warum die Batch-Größe wichtig ist

Der Gradient jedes Steps ist eine Schätzung der wahren Richtung bergab, basierend auf den Beispielen in diesem Batch. Ein kleiner Batch liefert eine verrauschte Schätzung: Einzelne Beispiele ziehen die Gewichte in verschiedene Richtungen, aber es gibt viele Updates pro Epoche. Ein großer Batch bildet den Durchschnitt über mehr Beispiele, sodass jeder Step zuverlässiger bergab zeigt, aber es gibt weniger Steps und jeder benötigt mehr GPU-Speicher. Die Forschung zum Training mit großen Batches zeigt abnehmende Erträge: Ab einem bestimmten, aufgabenabhängigen Punkt halbiert eine Verdopplung des Batches nicht mehr die Anzahl der benötigten Steps, und die zusätzliche Rechenleistung ist größtenteils verschwendet.

Gradientenakkumulation trennt den Batch, den die GPU berechnet, von dem Batch, auf dem der Optimizer aktualisiert. Die GPU verarbeitet beispielsweise 4 Beispiele gleichzeitig und summiert die Gradienten von 8 solcher Mikro-Batches, bevor sie einmal aktualisiert: ein effektiver Batch von 32 bei den Speicherkosten von 4. Bei mehreren GPUs verarbeitet jede ihren eigenen Mikro-Batch, sodass der effektive Batch zusätzlich mit der Anzahl der GPUs multipliziert wird.

Gradientenakkumulation
per-device batch 4  ×  accumulation 8  ×  1 GPU  =  effective batch 32
memory: as for 4 examples        updates: one per 32 examples

Warum die Anzahl der Epochen wichtig ist

Eine Epoche ist die natürliche Einheit dafür, wie viel das Modell gesehen hat. Eine Epoche über einen kleinen Datensatz reicht oft nicht aus, um das Verhalten spürbar zu verändern; viele Epochen über denselben kleinen Datensatz führen dazu, dass das Modell einzelne Antworten auswendig lernt. Supervised Fine-Tuning mit einigen Hundert bis einigen Tausend Beispielen verwendet typischerweise 1–3 Epochen, Preference Tuning 1–2. Kleine Datensätze vertragen ein paar Epochen mehr; sehr große benötigen oft nur eine einzige.

Da Epochen Wiederholungen und Steps Updates zählen, sollten Sie beides im Auge behalten. Drei Epochen über 100 Beispiele mit Batch-Größe 8 ergeben nur 39 Steps, was zu wenig sein kann, damit ein Lernraten-Plan seine Aufgabe erfüllen kann. Eine Epoche über 50.000 Beispiele entspricht 6.250 Steps: reichlich Updates und keinerlei Wiederholung.

Häufige Fehler

  • Erhöhung der Epochen, um zu wenig Daten auszugleichen. Mehrere Durchläufe über 40 Beispiele lehren diese 40 Antworten, nicht die eigentliche Aufgabe.
  • Änderung der Batch-Größe ohne Anpassung der Lernrate. Wenigere, größere Steps erfordern in der Regel eine höhere Rate und umgekehrt.
  • Kopieren eines in Steps angegebenen Warm-ups aus einem anderen Durchlauf. Wenn der neue Durchlauf viel weniger Steps hat, kann ein festes Warm-up den Großteil des Trainings verschlingen.
  • Zählen von Nachrichten anstelle von Trainingsdatensätzen. Je nach Format des Anbieters kann eine Konversation mit mehreren Zielen zu mehreren Datensätzen werden.

Quellen und weiterführende Literatur

Externe Quellen werden in einem neuen Tab geöffnet.

  1. 01Linear regression: HyperparametersGoogle Machine Learning Crash Course · developers.google.comKlare Definitionen von Batch-Größe und Epochen, mit durchgerechneter Arithmetik für Steps pro Epoche.
  2. 02TrainerHugging Face Transformers docs · huggingface.coReferenz für Batch-Größe pro Gerät, Gradientenakkumulation, Epochen und Warm-up als reale Trainingsargumente.
  3. 03An Empirical Model of Large-Batch TrainingMcCandlish et al., 2018 · arXiv · arxiv.orgWarum größere Batches bis zu einem gewissen Punkt helfen und sich dann nicht mehr auszahlen.
  4. 04Stochastic gradient descentWikipedia · en.wikipedia.org

Verwandeln Sie wochenlange Expertenarbeit in Minuten

Erfahren Sie, wie Scalata zu Ihrem Team, Ihren Daten und Ihren Kontrollen passt.

Vertrieb kontaktieren