Ultralytics YOLO27: Trag dich in die Warteliste ein.
YOLO lizenzieren
Zurück zum Ultralytics-Glossar

Gradient Accumulation

Bei der Gradientenakkumulation werden die Gradienten mehrerer Mikrobatches addiert, bevor ein Gewichtsupdate erfolgt. So lässt sich trotz begrenztem GPU-Speicher die Wirkung eines größeren Batches erzielen.

Gradientenakkumulation ist eine Trainingstechnik, bei der mehrere kleine Batches, sogenannte Microbatches, den Vorwärtslauf und die Backpropagation durchlaufen. Ihre Gradienten werden addiert, und erst danach werden die Modellgewichte aktualisiert. Das Update nähert einen Schritt mit einem Batch an, der so groß ist wie alle Microbatches zusammen, während die GPU jeweils nur die Aktivierungen eines Microbatches speichern muss. So kann ein Gerät mit begrenztem Speicher mit der in einer Konfiguration vorgesehenen Batchgröße trainieren, ohne die Bildauflösung zu verringern oder das Modell zu verkleinern. Die effektive Batchgröße entspricht der Microbatch-Größe multipliziert mit der Anzahl der Akkumulationsschritte und der Anzahl der Geräte. Microbatches mit jeweils 4 Bildern, die über 8 Schritte auf 4 GPUs akkumuliert werden, entsprechen daher einem Batch mit 128 Bildern.

Funktionsweise der Gradientenakkumulation#

In PyTorch und den meisten anderen Frameworks addiert jeder Aufruf von backward() neue Gradienten zu den bereits in den Parametern gespeicherten, statt sie zu ersetzen. Die Akkumulation nutzt dieses Verhalten direkt: Für jeden Microbatch werden der Vorwärts- und Rückwärtslauf ausgeführt. Sobald die festgelegte Anzahl an Microbatches erreicht ist, wird der Optimierer einmal aufgerufen. Anschließend werden die Gradienten gelöscht und das nächste Fenster beginnt:

Die meisten Verlustfunktionen mitteln über die Beispiele eines Batches. Daher wird der Verlust jedes Microbatches durch die Anzahl der Schritte geteilt, damit die aufsummierten Gradienten einen Durchschnitt ergeben. Mit dieser Skalierung erzeugen vier Microbatches mit jeweils 8 Beispielen denselben Gradienten wie ein Batch mit 32 Beispielen:

import torch
from torch import nn

torch.manual_seed(0)
model = nn.Linear(16, 1)
x, y = torch.randn(32, 16), torch.randn(32, 1)
loss_fn = nn.MSELoss()

# Reference: one batch of 32 samples
loss_fn(model(x), y).backward()
batch_grad = model.weight.grad.clone()
model.zero_grad()

# Four micro-batches of 8: backward() adds into .grad, and dividing each loss by 4 turns the sum into a mean
steps = 4
for x_micro, y_micro in zip(x.chunk(steps), y.chunk(steps)):
    (loss_fn(model(x_micro), y_micro) / steps).backward()

print("Matches the full-batch gradient:", torch.allclose(model.weight.grad, batch_grad, atol=1e-6))
print(f"Largest difference: {(model.weight.grad - batch_grad).abs().max():.1e}")

Ausgegeben wird Matches the full-batch gradient: True mit einer größten Differenz von 1.6e-07. Sie entsteht durch Rundung bei Gleitkommazahlen, wenn dieselben Zahlen in einer anderen Reihenfolge addiert werden.

Worin sich die Akkumulation von einem großen Batch unterscheidet#

Die Übereinstimmung gilt für Verlustfunktionen, die über unabhängige Beispiele mitteln, und geht in drei häufigen Fällen verloren:

  • Batch-Normalisierung: Berechnet Mittelwert und Varianz für jeden Microbatch einzeln. Statistiken aus 4 Bildern sind daher ungenauer als Statistiken aus 128 Bildern.
  • Sequenzen variabler Länge: Wenn ein Sprachmodell seinen Verlust über die Tokens jedes Microbatches mittelt, erhalten Microbatches mit wenigen Tokens dasselbe Gewicht wie lange.
  • Gradienten-Clipping: Sollte einmal auf den akkumulierten Gradienten angewendet werden, unmittelbar vor dem Optimierungsschritt. Das Clipping jedes Microbatches verändert das Ergebnis.

Hugging Face und Unsloth behoben im Oktober 2024 die Abweichung bei der Tokenanzahl für die Feinabstimmung großer Sprachmodelle (LLMs), indem sie den aufsummierten Verlust durch die Gesamtzahl der Tokens im gesamten Akkumulationsfenster teilten. Die Akkumulation beschleunigt das Training außerdem nicht: Dieselbe Anzahl von Beispielen durchläuft das Netzwerk weiterhin nacheinander in Microbatches, und kleine Microbatches nutzen die GPU weniger effizient. Beim verteilten Training bietet PyTorchs DistributedDataParallel einen Kontext no_sync(), der die Gradient-All-Reduktion für jeden Microbatch außer dem letzten überspringt und so Kommunikation einspart. Eine größere effektive Batchgröße erfordert normalerweise eine höhere Lernrate: Forschende von Facebook trainierten ResNet-50 in einer Stunde auf ImageNet mit Batches aus 8.192 Bildern auf 256 GPUs. Dazu skalierten sie die Lernrate linear mit der Batchgröße und erhöhten sie schrittweise während der Aufwärmphase.

  • Gradienten-Checkpointing: Berechnet Aktivierungen während der Backpropagation erneut, statt sie zu speichern. Das spart innerhalb jedes Microbatches Speicher, erfordert aber zusätzliche Rechenleistung.
  • Gemischte Genauigkeit: Speichert Aktivierungen in 16-Bit-Formaten und schafft so Platz für größere Microbatches. Der Loss-Scaler skaliert die Gradienten nach dem letzten Microbatch einmal zurück.
  • Pipeline-Parallelität: Teilt jeden Batch in Microbatches auf, die auf unterschiedlichen GPUs durch die Modellstufen laufen. Ihre Gradienten werden vor einem einzigen Optimierungsschritt akkumuliert.

Beim Training von Ultralytics YOLO26 werden Gradienten standardmäßig akkumuliert: Im Trainingsmodus führt der Trainer nach jeweils round(nbs / batch) Batches einen Optimierungsschritt aus. Bei den Standardwerten batch=16 und der nominalen Batchgröße nbs=64 werden somit vier Batches pro Update verarbeitet; mit batch=8 sind es acht. Während der Aufwärmphase steigt der Wert schrittweise von eins an. Außerdem wird die Gewichtszerfallsrate mit batch × accumulation / nbs skaliert. Dadurch gelten die standardmäßigen Hyperparameter für eine Batchgröße von 64 Bildern auch auf einer GPU, die jeweils nur wenige Bilder speichern kann.

Lösungen entdecken

Computer Vision im Sport

Computer Vision im Sport

Entdecke, wie Ultralytics YOLO die Sportbildanalyse voranbringt – mit Spieler- und Ballverfolgung, Leistungsanalysen, Erkenntnissen für das Coaching und der Rehabilitation von Athleten.
Mehr erfahren
Computer Vision für Luftbilder

Computer Vision für Luftbilder

Verwandle Drohnen- und Luftbilder mit Ultralytics YOLO in Echtzeit-Erkenntnisse für Landwirtschaft, Aquakultur, Naturschutz und Geodatenanalyse.
Mehr erfahren
Computer Vision in der Luft- und Raumfahrt

Computer Vision in der Luft- und Raumfahrt

Setze Computer Vision in der Luft- und Raumfahrt mit Ultralytics YOLO ein – für Flugzeuginspektionen, die Erkennung von Fremdkörpern auf Start- und Landebahnen, den Bodenbetrieb am Flughafen und die Erkennung von Verbundwerkstofffehlern.
Mehr erfahren
Computer Vision im Sicherheitsbereich

Computer Vision im Sicherheitsbereich

Schütze jeden Standort mit Ultralytics YOLO-Modellen. Vision-KI ermöglicht die Überwachung von Grundstücksgrenzen, die Erkennung von Bedrohungen, die Kennzeichenerkennung und die Sicherheit am Arbeitsplatz.
Mehr erfahren
Computer Vision in der Robotik

Computer Vision in der Robotik

Mach Maschinen mit Ultralytics YOLO-Modellen leistungsfähiger. Vision-KI in der Robotik ermöglicht autonome Navigation, Wahrnehmung, Objektverfolgung und Steuerung in Echtzeit.
Mehr erfahren
Bildverarbeitung in der Logistik

Bildverarbeitung in der Logistik

Optimiere die Logistik mit Ultralytics YOLO-Modellen. Vision AI ermöglicht die Paketprüfung, Sortierung und Fahrzeugverfolgung sowie die Sicherheitsüberwachung von Lagerhäusern in Echtzeit.
Mehr erfahren
Bildverarbeitung im Einzelhandel

Bildverarbeitung im Einzelhandel

Gestalte den Einzelhandel mit Ultralytics YOLO-Modellen neu. Vision AI ermöglicht Bestandsverfolgung, Regalüberwachung und Warteschlangenmanagement und liefert bessere Einblicke in das Kundenverhalten.
Mehr erfahren
Bildverarbeitung im Gesundheitswesen

Bildverarbeitung im Gesundheitswesen

Entwickle Lösungen für das Gesundheitswesen mit Ultralytics YOLO-Modellen. Vision AI ermöglicht im Gesundheitswesen schnellere medizinische Bildgebung, bessere Diagnostik und die Überwachung von Patienten.
Mehr erfahren
Computer Vision in der Fertigung

Computer Vision in der Fertigung

Optimiere die Fertigung mit Ultralytics-YOLO-Modellen. Vision AI ermöglicht Qualitätskontrolle, Fehlererkennung, die Überprüfung der Einhaltung von Vorgaben zu persönlicher Schutzausrüstung und die Automatisierung von Montagelinien.
Mehr erfahren
Computer Vision in der Automobilbranche

Computer Vision in der Automobilbranche

Setze Computer Vision in der Automobilbranche mit Ultralytics-YOLO-Modellen ein. Vision AI verbessert die Verkehrssicherheit, Fahrerassistenz und Fahrzeugautomatisierung – für intelligentere Straßen.
Mehr erfahren
Computer Vision in der Landwirtschaft

Computer Vision in der Landwirtschaft

Setze mit Ultralytics YOLO-Modellen KI für Bildverarbeitung in der intelligenten Landwirtschaft ein. Ermögliche die Überwachung von Nutzpflanzen, die Verfolgung von Nutztieren und Präzisionslandwirtschaft für höhere und nachhaltigere Erträge.
Mehr erfahren

Lass uns gemeinsam die Zukunft der KI gestalten!

Starte deine Reise in die Zukunft des maschinellen Lernens