Yolo Vision Shenzhen
Shenzhen
Jetzt beitreten
Glossar

Batch-Größe

Erfahren Sie, wie sich die Batchgröße auf die Trainingsgeschwindigkeit und -genauigkeit beim maschinellen Lernen auswirkt. Entdecken Sie Hardware-Einschränkungen und optimieren Sie Ultralytics mit AutoBatch.

Im Bereich des maschinellen Lernens und insbesondere des Deep Learning bezieht sich die Batchgröße auf die Anzahl der Trainingsbeispiele, die in einer Iteration des Modelltrainings verwendet werden. Anstatt die gesamten Trainingsdaten auf einmal in das neuronale Netzwerk einzuspeisen – was aufgrund von Speicherbeschränkungen oft rechnerisch unmöglich ist – wird der Datensatz in kleinere Teilmengen, sogenannte Batches, unterteilt. Das Modell verarbeitet einen Batch, berechnet den Fehler und aktualisiert seine internen Modellgewichte über Backpropagation, bevor es zum nächsten Batch übergeht. Dieser Hyperparameter spielt eine entscheidende Rolle bei der Bestimmung sowohl der Trainingsgeschwindigkeit als auch der 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 navigiert.

  • Kleine Batchgrößen: Die Verwendung einer kleinen Anzahl (z. B. 8 oder 16) führt zu „verrauschten” Aktualisierungen. Während die Gradientenschätzung für den Datensatz insgesamt 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, was das Training aufgrund des Overheads in Bezug auf die Wanduhrzeit verlangsamen kann.
  • Große Batchgrößen: Ein größerer Batch (z. B. 128 oder 256) liefert eine genauere Schätzung des Gradienten, was zu einer glatteren Konvergenz der Verlustfunktion führt. Er ermöglicht eine massive Parallelisierung auf moderner Hardware, wodurch die Berechnung erheblich beschleunigt wird. Ist die Batch-Größe jedoch zu groß, kann sich das Modell in scharfen, suboptimalen Minima einpendeln, was zu Überanpassung und einer verminderten Fähigkeit zur Verallgemeinerung auf neue Daten führt.

Auswirkungen auf Hardware und Speicher

Praktiker müssen die Batchgröße oft aufgrund von Hardwarebeschränkungen und nicht aufgrund rein theoretischer Präferenzen auswählen. Deep-Learning-Modelle, insbesondere große Architekturen wie Transformer oder fortgeschrittene Convolutional Networks, werden im VRAM eines GPU.

Bei Verwendung von NVIDIA CUDA zur Beschleunigung verwendet wird, muss der VRAM die Modellparameter, den Stapel der Eingabedaten und die für die Gradientenberechnung erforderlichen Zwischenaktivierungsausgaben enthalten. Wenn die Stapelgröße den verfügbaren Speicher übersteigt, bricht das Training mit einem „Out of Memory”-Fehler (OOM) ab. Techniken wie Mixed-Precision-Training werden häufig eingesetzt, um den Speicherverbrauch zu reduzieren und größere Stapelgrößen auf derselben Hardware zu ermöglichen.

Unterscheidung von verwandten Konzepten

Um das Training effektiv zu konfigurieren, ist es unerlässlich, die Batchgröße von anderen zeitlichen Begriffen in der Trainingsschleife zu unterscheiden .

  • Batchgröße vs. Epoche: Eine Epoche stellt einen vollständigen Durchlauf durch den gesamten Trainingsdatensatz dar. Die Batchgröße bestimmt, in wie viele Teile die Daten innerhalb dieser Epoche aufgeteilt werden. Wenn Sie beispielsweise 1.000 Bilder und eine Batchgröße von 100 haben, sind 10 Iterationen erforderlich, um eine Epoche abzuschließen.
  • Batchgröße vs. Iteration: Eine Iteration (oder ein Schritt) ist der Vorgang der Verarbeitung eines Batches und der Aktualisierung der Gewichte. Die Gesamtzahl der Iterationen im Training ist die Anzahl der Batches pro Epoche multipliziert mit der Gesamtzahl der Epochen.
  • Batchgröße vs. Batch-Normalisierung: Obwohl sie denselben Namen tragen, ist die Batch-Normalisierung ein spezifischer Schichttyp, der die Schichteingaben basierend auf dem Mittelwert und der Varianz des aktuellen Batches normalisiert. Diese Technik hängt stark von der Batchgröße ab. Ist die Batchgröße zu klein (z. B. 2), werden die statistischen Schätzungen unzuverlässig, was zu einer Verschlechterung der Leistung führen kann.

Anwendungsfälle in der Praxis

Die Anpassung der Stapelgröße ist eine routinemäßige Notwendigkeit bei der Bereitstellung von Computer-Vision-Lösungen in verschiedenen Branchen.

  1. High-Fidelity Medical Imaging: Im Bereich der KI im Gesundheitswesen arbeiten Ärzte häufig mit 3D-Volumendaten wie MRT- oder CT-Scans. Diese Dateien sind unglaublich dicht und speicherintensiv. Um Aufgaben wie medizinische Bildanalyse oder komplexe Bildsegmentierung ohne Systemabsturz durchzuführen , reduzieren Ingenieure häufig die Batchgröße auf eine sehr kleine Zahl, manchmal sogar auf einen Batch von 1. Hier liegt die Priorität auf der Verarbeitung hochauflösender Details und nicht auf der reinen Trainingsgeschwindigkeit.
  2. Industrielle Qualitätskontrolle: Umgekehrt ist bei der KI in der Fertigung Geschwindigkeit von größter Bedeutung. Automatisierte Systeme, die Produkte auf einem Förderband prüfen, müssen Tausende von Bildern pro Stunde verarbeiten. Während der Inferenz können Ingenieure eingehende Kamera-Feeds zu größeren Stapeln zusammenfassen, um die Auslastung von Edge-KI-Geräten zu maximieren und einen hohen Durchsatz für die Echtzeit- Fehlererkennung sicherzustellen.

Konfigurieren der Stapelgröße in Python

Bei Verwendung des Ultralytics Python, die Einstellung der Stapelgröße ist unkompliziert. Sie können eine feste Ganzzahl angeben oder die dynamische batch=-1 Einstellung, die die AutoBatch-Funktion automatisch die maximale Stapelgröße berechnen, die Ihre Hardware sicher verarbeiten kann.

Das folgende Beispiel zeigt, wie ein YOLO26-Modell– der aktuelle Standard für Geschwindigkeit und Genauigkeit – mit einer bestimmten Batch-Einstellung trainiert wird.

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, wie sich unterschiedliche Batch-Größen auf Ihre Trainingsmetriken auswirken, bieten Tools wie die Ultralytics eine umfassende Umgebung für die Protokollierung und den Vergleich von Durchläufen. Die richtige Hyperparameter-Optimierung der Batch-Größe ist oft der letzte Schritt, um die beste Leistung aus Ihrem Modell herauszuholen.

Werden Sie Mitglied der Ultralytics

Gestalten Sie die Zukunft der KI mit. Vernetzen Sie sich, arbeiten Sie zusammen und wachsen Sie mit globalen Innovatoren

Jetzt beitreten