Deep Learning Academy · Lektion

Synchronisierte Batch Norm und geshardeter State

Halten Sie Statistiken und Gewichte konsistent.

Lektion 3 von 413 Schritte

Synchronisierte Batch Norm und geshardeter State ist eine kostenlose Deep Learning Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Deep Learning Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Deep Learning Academy-Kurs umfasst insgesamt 4 Lektionen.

Das Problem kleiner Batches

Batch Norm berechnet Statistiken aus dem lokalen Batch jeder GPU. Wenn der Batch auf viele GPUs aufgeteilt wird, schrumpft der Batch pro Gerät und diese Statistiken werden ungenau.

SyncBatchNorm kommt ins Spiel

SyncBatchNorm behebt dieses Problem, indem Mittelwert und Varianz gemeinsam über alle GPUs berechnet werden, als würde die Layer den vollständigen globalen Batch sehen.

Mit einem Aufruf konvertieren

Sie müssen die Layer nicht von Hand umschreiben. Ein Hilfsprogramm konvertiert jede BatchNorm in Ihrem Modell in ihre synchronisierte Variante.

import torch.nn as nn
model = nn.SyncBatchNorm.convert_sync_batchnorm(model)

Vor dem Umschließen konvertieren

Die Reihenfolge ist entscheidend: Rufen Sie die Konvertierung vorher auf, bevor Sie das Modell in DDP verpacken, damit DDP die synchronisierten Layer verwaltet.

model = nn.SyncBatchNorm.convert_sync_batchnorm(model)
model = DDP(model, device_ids=[local_rank])

Kommunikation hat ihren Preis

Das Synchronisieren der Statistiken bedeutet ein zusätzliches All-Reduce an jeder Batch-Normalisierungsschicht. Verwenden Sie es, wenn kleine Batches pro GPU die Genauigkeit beeinträchtigen, nicht standardmäßig.

Die Speichergrenze

Normales DDP kopiert das vollständige Modell, die Gradienten und den Optimizer-Zustand auf jede GPU. Bei riesigen Modellen verschwendet diese Redundanz schnell Speicher.

Den Zustand aufteilen

Sharding teilt diese Tensoren auf mehrere GPUs auf, sodass jedes Gerät nur einen Teil speichert. Zusammen enthalten die GPUs weiterhin das vollständige Modell.

FSDP kennenlernen

PyTorchs FullyShardedDataParallel teilt Parameter, Gradienten und den Optimizer-Zustand auf. Damit können Sie Modelle trainieren, die deutlich größer als der Speicher einer einzelnen GPU sind.

from torch.distributed.fsdp import FullyShardedDataParallel as FSDP
model = FSDP(model)

Nur bei Bedarf zusammenführen

FSDP führt die vollständigen Gewichte jeder Schicht erst zusammen, wenn sie für die Berechnung benötigt werden, und gibt sie anschließend wieder frei. So bleibt der Spitzenverbrauch des Speichers gering.

ZeRO-Stufen

Sharding gibt es in mehreren Stufen, den sogenannten ZeRO-Stufen: zuerst den Optimizer-Zustand, dann die Gradienten und anschließend die Parameter aufteilen. Mehr Sharding spart mehr Speicher.

Das richtige Werkzeug wählen

Wenn Ihr Modell auf eine GPU passt, ist normales DDP die einfachste Lösung. Wenn nicht, verwenden Sie FSDP, um den Zustand aufzuteilen und weiterzuarbeiten.

Schnelltest

Entscheiden Sie, wofür die einzelnen Techniken wirklich gedacht sind.

Zusammenfassung

Sie haben zwei Werkzeuge für Konsistenz kennengelernt: SyncBatchNorm hält die Statistiken über alle GPUs hinweg global, und FSDP teilt den Zustand auf, damit riesige Modelle passen. Verwenden Sie jedes nur, wenn Sie es benötigen.

Kostenlos starten

Lerne Python mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Synchronisierte Batch Norm und geshardeter State“ kostenlos?

Ja — der vollständige Text von „Synchronisierte Batch Norm und geshardeter State“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Deep Learning Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Deep Learning Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Synchronisierte Batch Norm und geshardeter State“?

Halten Sie Statistiken und Gewichte konsistent. Du übst Deep Learning Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Deep Learning Academy zu starten?

Keine Vorkenntnisse erforderlich. Deep Learning Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Synchronisierte Batch Norm und geshardeter State“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Deep Learning Academy-Lektion Code schreiben und ausführen?

Ja. Jede Deep Learning Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Daten- vs. Modellparallelismus
  2. Grundlagen von DistributedDataParallel
  3. Synchronisierte Batch Norm und geshardeter State
  4. Jobs mit torchrun starten
← Zurück zu Deep Learning Academy