Glossar

Chargengröße

Entdecke die Auswirkungen der Stapelgröße auf Deep Learning. Optimiere die Trainingsgeschwindigkeit, die Speichernutzung und die Modellleistung effizient.

Trainiere YOLO Modelle einfach
mit Ultralytics HUB

Mehr erfahren

Beim maschinellen Lernen, insbesondere beim Training von Deep-Learning-Modellen, bezieht sich die Stapelgröße auf die Anzahl der Trainingsbeispiele, die in einer einzigen Iteration verarbeitet werden. Beim Training großer Modelle auf riesigen Datensätzen, wie sie z. B. in der Bildverarbeitung üblich sind, ist die Verarbeitung des gesamten Datensatzes auf einmal aufgrund von Speicherbeschränkungen oft nicht machbar. Stattdessen werden die Daten in kleinere, überschaubare Gruppen oder "Stapel" aufgeteilt. Die internen Parameter des Modells werden nach der Verarbeitung jedes Stapels aktualisiert, wodurch der Trainingsprozess effizienter und skalierbarer wird.

Die Bedeutung der Chargengröße

Die Stapelgröße ist ein entscheidender Hyperparameter, der die Trainingsdynamik, die Ressourcennutzung und letztlich die Leistung des endgültigen Modells erheblich beeinflusst. Sie hat unter anderem folgende Auswirkungen:

  • Trainingsgeschwindigkeit: Größere Stapelgrößen können die Parallelverarbeitungsfähigkeiten von Hardware wie z. B. GPUs effektiver nutzen und so die Zeit, die für eine Epoche (einen vollständigen Durchlauf durch die Trainingsdaten) benötigt wird, potenziell reduzieren. Das liegt an der besseren Auslastung der Hardware und der geringeren Anzahl von Parameteraktualisierungen pro Epoche. Erfahre mehr über Konzepte des parallelen Rechnens.
  • Speichernutzung: Die Stapelgröße wirkt sich direkt auf den benötigten SpeicherplatzCPU RAM oder GPU VRAM) aus. Größere Batches benötigen mehr Speicher, um die Daten, Aktivierungen und Gradienten während des Trainings zu speichern. Techniken zur Optimierung der Speichernutzung sind entscheidend, wenn du mit großen Stapelgrößen oder begrenzter Hardware arbeitest.
  • Modellverallgemeinerung: Die Wahl der Losgröße beeinflusst den Optimierungsprozess und die Modellverallgemeinerung. Kleinere Chargen führen mehr Rauschen in die Gradientenschätzung ein, die in Algorithmen wie dem Stochastischen Gradientenabstieg (SGD) verwendet wird. Dieses Rauschen kann manchmal als eine Art Regularisierung fungieren, die dem Modell hilft, scharfe lokale Minima zu umgehen und möglicherweise seine Fähigkeit zur Verallgemeinerung auf ungesehene Daten zu verbessern und so die Überanpassung zu reduzieren. Umgekehrt liefern größere Stapel eine genauere Schätzung des Gesamtgradienten des Datensatzes, konvergieren aber möglicherweise zu schärferen Minima, was die Verallgemeinerung behindern kann, wie in der Studie"On Large-Batch Training for Deep Learning" beschrieben.
  • Wechselwirkung mit der Lernrate: Die Chargengröße steht oft in Wechselwirkung mit der Lernrate. In der Regel ermöglichen größere Losgrößen höhere Lernraten und profitieren davon. Optimierer wie Adam können helfen, diese Wechselwirkungen zu steuern.

Die Wahl der richtigen Losgröße

Bei der Wahl der optimalen Stapelgröße müssen Rechenleistung, Speicherbedarf und Modellgeneralisierung gegeneinander abgewogen werden. Es gibt keine allgemeingültige "beste" Stapelgröße; sie hängt stark von dem jeweiligen Datensatz (z. B. COCO-Datensatz), der Modellarchitektur (wie sie in Ultralytics YOLO) und den verfügbaren Hardware-Ressourcen ab. Aufgrund von Hardware-Optimierungen für die Speicherausrichtung werden häufig Potenzen von 2 gewählt (z. B. 16, 32, 64, 128). In der Regel sind Experimente und Techniken wie Hyperparameter-Tuning erforderlich. Frameworks wie PyTorch und TensorFlow bieten Flexibilität bei der Einstellung von Stapelgrößen.

Losgröße vs. andere verwandte Begriffe

Es ist wichtig, die Losgröße von verwandten Konzepten zu unterscheiden:

  • Iteration/Schritt: Eine einzelne Aktualisierung der Modellparameter, die auf der Verarbeitung eines Datenstapels basiert. Dies beinhaltet einen Vorwärtsdurchlauf, eine Verlustberechnung und einen Rückwärtsdurchlauf (Backpropagation).
  • Epoche: Ein vollständiger Durchlauf durch den gesamten Trainingsdatensatz. Wenn ein Datensatz 1000 Stichproben hat und die Losgröße 100 beträgt, besteht eine Epoche aus 10 Iterationen (1000 / 100 = 10).
  • Mini-Batch Gradientenabstieg: Der häufigste Trainingsansatz, bei dem die Stapelgröße größer als 1, aber kleiner als die Gesamtgröße des Datensatzes ist. Dies steht im Gegensatz zum Batch-Gradientenabstieg (unter Verwendung des gesamten Datensatzes, Stapelgröße = N) und zum stochastischen Gradientenabstieg (unter Verwendung einer einzelnen Probe, Stapelgröße = 1). Der Begriff "Stapelgröße" bezieht sich in der Regel auf die Größe, die beim Mini-Batch-Gradientenabstieg verwendet wird. Erfahre mehr über die Varianten des Gradientenabstiegs.

Anwendungen in der realen Welt

  • Objekterkennung: Beim Training einer Ultralytics YOLO Modells für die Aufgabe Objekterkennung bestimmt die Stapelgröße, wie viele Bilder gleichzeitig verarbeitet werden. Beim Training von YOLO11 auf einem großen Datensatz wie ImageNet kann es erforderlich sein, die Stapelgröße an den GPU anzupassen. Eine größere Stapelgröße (z. B. 64) kann das Training pro Epoche auf High-End-GPUs beschleunigen, während kleinere Stapelgrößen (z. B. 16) auf Geräten mit weniger Speicher notwendig sind oder die Generalisierung verbessern könnten. Plattformen wie Ultralytics HUB können dabei helfen, diese Trainingsversuche zu verwalten und zu verfolgen.
  • Natürliche Sprachverarbeitung (NLP): Um große Sprachmodelle wie BERT zu trainieren, müssen Sequenzen von Text verarbeitet werden. Die Stapelgröße bestimmt, wie viele Sequenzen zusammen verarbeitet werden. Da die Sequenzen unterschiedlich lang sein können und die Modelle sehr groß sind, ist der Speicherbedarf ein großes Problem. Techniken wie die Gradientenakkumulation (d.h. die sequentielle Verarbeitung kleinerer Mini-Batches, bevor die Parameter aktualisiert werden) werden oft verwendet, um größere Batchgrößen zu simulieren, wenn der Speicherplatz begrenzt ist. Erforsche Konzepte in NLP-Kursen.

Das Verständnis und die sorgfältige Auswahl der Stapelgröße sind grundlegend für das effektive Training von Deep Learning-Modellen. Zur Vertiefung kannst du Ressourcen wie die Deep Learning-Spezialisierung oder Techniken wie die Batch-Normalisierung nutzen, die manchmal die Empfindlichkeit gegenüber der Batch-Größe verringern können.

Alles lesen