Batch Size
Erfahre, wie sich die Batchgröße auf Geschwindigkeit und Genauigkeit beim Training mit maschinellem Lernen auswirkt. Erkunde Hardwarebeschränkungen und optimiere Ultralytics YOLO26 mit AutoBatch.
Im Bereich des maschinellen Lernens und insbesondere des Deep Learning bezeichnet die Batchgröße die Anzahl der Trainingsbeispiele, die in einer Iteration des Modelltrainings verwendet werden. Anstatt die gesamten Trainingsdaten auf einmal in das neuronale Netz einzuspeisen – was aufgrund von Speicherbeschränkungen häufig rechnerisch nicht möglich ist –, wird der Datensatz in kleinere Teilmengen, sogenannte Batches, aufgeteilt. Das Modell verarbeitet einen Batch, berechnet den Fehler und aktualisiert seine internen Modellgewichte mittels Backpropagation, bevor es mit dem nächsten Batch fortfährt. Dieser Hyperparameter spielt eine entscheidende Rolle für die Trainingsgeschwindigkeit und die Stabilität des Lernprozesses.
Die Dynamik des Trainings mit Batches#
Die Wahl der Batchgröße verändert grundlegend, wie der Optimierungsalgorithmus, typischerweise eine Variante des stochastischen Gradientenabstiegs, die Verlustlandschaft durchläuft.
- Kleine Batchgrößen: Die Verwendung einer kleinen Anzahl (z. B. 8 oder 16) führt zu „verrauschten“ Aktualisierungen. Obwohl die Schätzung des Gradienten für den gesamten Datensatz weniger genau ist, kann dieses Rauschen dem Modell manchmal helfen, lokalen Minima zu entkommen, was möglicherweise zu einer besseren Generalisierung führt. Kleinere Batches erfordern jedoch mehr Aktualisierungen pro Epoche, wodurch das Training aufgrund des zusätzlichen Verwaltungsaufwands in der tatsächlichen Laufzeit langsamer werden kann.
- Große Batchgrößen: Ein größerer Batch (z. B. 128 oder 256) liefert eine genauere Schätzung des Gradienten und führt dadurch zu einer gleichmäßigeren Konvergenz der Verlustfunktion. Er ermöglicht eine massive Parallelisierung auf moderner Hardware und beschleunigt die Berechnung deutlich. Ist der Batch jedoch zu groß, kann sich das Modell in scharfen, suboptimalen Minima festsetzen, was zu Überanpassung und einer geringeren Fähigkeit zur Generalisierung auf neue Daten führen kann.
Auswirkungen auf Hardware und Speicher#
In der Praxis muss die Batchgröße häufig anhand von Hardwarebeschränkungen und nicht ausschließlich nach theoretischen Präferenzen gewählt werden. Deep-Learning-Modelle, insbesondere große Architekturen wie Transformer oder fortgeschrittene konvolutionale Netze, werden im VRAM einer GPU gespeichert.
Bei der Verwendung von NVIDIA CUDA zur Beschleunigung muss der VRAM die Modellparameter, den Batch der Eingabedaten und die für die Gradientenberechnung erforderlichen Ausgaben der Zwischenaktivierungen aufnehmen. Überschreitet die Batchgröße den verfügbaren Speicher, bricht das Training mit einem Fehler „Speicher nicht mehr verfügbar“ (OOM) ab. Verfahren wie das Training mit gemischter Präzision werden häufig eingesetzt, um den Speicherbedarf zu reduzieren und größere Batchgrößen auf derselben Hardware zu ermöglichen.
Verwandte Konzepte unterscheiden#
Für eine effektive Konfiguration des Trainings ist es wichtig, die Batchgröße von anderen zeitbezogenen Begriffen in der Trainingsschleife zu unterscheiden.
- Batchgröße im Vergleich zur Epoche: Eine Epoche entspricht einem vollständigen Durchlauf durch den gesamten Trainingsdatensatz. Die Batchgröße bestimmt, in wie viele Teilmengen die Daten innerhalb dieser Epoche aufgeteilt werden. Wenn du beispielsweise 1.000 Bilder und eine Batchgröße von 100 hast, sind 10 Iterationen erforderlich, um eine Epoche abzuschließen.
- Batchgröße im Vergleich zur Iteration: Eine Iteration (oder ein Schritt) ist die Verarbeitung eines Batches und die Aktualisierung der Gewichte. Die Gesamtzahl der Iterationen im Training entspricht der Anzahl der Batches pro Epoche multipliziert mit der Gesamtzahl der Epochen.
- Batchgröße im Vergleich zur Batch-Normalisierung: Obwohl sie denselben Namen enthalten, ist Batch-Normalisierung ein spezifischer Schichttyp, der die Eingaben einer Schicht anhand des Mittelwerts und der Varianz des aktuellen Batches normalisiert. Dieses Verfahren hängt stark von der Batchgröße ab: Ist sie zu klein (z. B. 2), werden die statistischen Schätzungen unzuverlässig, was die Leistung möglicherweise beeinträchtigt.
Anwendungen in der Praxis#
Die Anpassung der Batchgröße ist eine routinemäßige Notwendigkeit, wenn Lösungen für Computer Vision in verschiedenen Branchen eingesetzt werden.
-
Hochauflösende medizinische Bildgebung: Im Bereich der KI im Gesundheitswesen arbeiten Fachleute häufig mit dreidimensionalen volumetrischen Daten, etwa aus MRT- oder CT-Aufnahmen. Diese Dateien sind äußerst umfangreich und speicherintensiv. Um Aufgaben wie die medizinische Bildanalyse oder eine komplexe Bildsegmentierung auszuführen, ohne dass das System abstürzt, reduzieren Ingenieure die Batchgröße häufig auf eine sehr kleine Zahl, manchmal sogar auf einen Batch von 1. Hier hat die Verarbeitung hochauflösender Details Vorrang vor der reinen Trainingsgeschwindigkeit.
-
Industrielle Qualitätskontrolle: In der KI in der Fertigung ist dagegen Geschwindigkeit entscheidend. Automatisierte Systeme, die Produkte auf einem Förderband prüfen, müssen Tausende Bilder pro Stunde verarbeiten. Während der Inferenz können Ingenieure eingehende Kamerabilder zu größeren Batches zusammenfassen, um die Auslastung von Edge-KI-Geräten zu maximieren und einen hohen Durchsatz bei der Fehlererkennung in Echtzeit sicherzustellen.
Batchgröße in Python konfigurieren#
Bei Verwendung des Ultralytics-Python-Pakets ist das Festlegen der Batchgröße unkompliziert. Du kannst eine feste Ganzzahl angeben oder die dynamische Einstellung batch=-1 verwenden, die das AutoBatch-Feature nutzt, um automatisch die maximale Batchgröße zu berechnen, die deine Hardware sicher verarbeiten kann.
Das folgende Beispiel zeigt, wie du ein YOLO26-Modell – den neuesten Standard für Geschwindigkeit und Genauigkeit – mit einer bestimmten Batch-Einstellung trainierst.
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train on the COCO8 dataset
# batch=16 is manually set.
# Alternatively, use batch=-1 for auto-tuning based on available GPU memory.
results = model.train(data="coco8.yaml", epochs=5, batch=16)Für die Verwaltung groß angelegter Experimente und die Visualisierung der Auswirkungen verschiedener Batchgrößen auf deine Trainingsmetriken bieten Tools wie die Ultralytics Platform eine umfassende Umgebung zum Protokollieren und Vergleichen von Durchläufen. Eine sorgfältige Hyperparameter-Optimierung der Batchgröße ist häufig der letzte Schritt, um die bestmögliche Leistung aus deinem Modell herauszuholen.









