0Pricing
Learn AI with Python · Lektion

Mixed-Precision-Training mit AMP

torch.cuda.amp.autocast(), GradScaler, FP16 vs. BF16, Speichereinsparungen, Geschwindigkeitsgewinne.

Mixed-Precision-Training mit AMP ist eine kostenlose Learn AI with Python-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 Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Was ist gemischte Präzision

Beim Training mit gemischter Präzision werden die meisten Operationen mit 16-Bit-Gleitkommazahlen (FP16) statt mit 32-Bit-Gleitkommazahlen (FP32) ausgeführt. FP16 verwendet halb so viel Speicher und läuft auf modernen GPU-Tensorkernen schneller, während einige wenige empfindliche Operationen für die Stabilität in FP32 verbleiben.

Die Vorteile

Gemischte Präzision bietet Ihnen:

  • etwa 2-fache Speicherersparnis, wodurch größere Batches oder Modelle möglich werden
  • Schnellere Matrixmultiplikationen auf Tensorkernen
  • Bei korrekter Anwendung kaum oder keinen Verlust bei der endgültigen Modellgenauigkeit

Das FP16-Unterlaufproblem

FP16 hat einen begrenzten Wertebereich. Kleine Gradientenwerte können auf null unterlaufen und dadurch das Lernen unbemerkt stoppen. Das ist die zentrale Herausforderung, die gemischte Präzision lösen muss, und der Grund, warum wir nicht einfach alles in FP16 umwandeln können.

torch.cuda.amp

PyTorch Automatic Mixed Precision (AMP) übernimmt die Details mit zwei Werkzeugen: autocast wählt die Präzision pro Operation, und GradScaler verhindert den Gradientenunterlauf.

import torch
from torch.cuda.amp import autocast, GradScaler

Der autocast-Kontext

Verpacken Sie den Forward-Pass in autocast(). Darin führt PyTorch jede Operation automatisch mit der sichersten Präzision aus: Matrixmultiplikationen in FP16, Reduktionen wie Softmax und der Loss in FP32.

with autocast():
    output = model(x)
    loss = criterion(output, y)

GradScaler wird eingeführt

GradScaler wirkt dem Unterlauf entgegen, indem der Loss vor der Backpropagation mit einem großen Skalierungsfaktor multipliziert wird. Dadurch werden kleine Gradienten in den darstellbaren FP16-Bereich verschoben; vor dem Optimizer-Schritt wird die Skalierung entfernt.

scaler = GradScaler()

Den Loss skalieren

scaler.scale(loss).backward() skaliert den Loss nach oben und führt anschließend die Backpropagation aus. Die daraus entstehenden Gradienten werden ebenfalls skaliert, sodass kleine Werte nicht verschwinden.

scaler.scale(loss).backward()

scaler.step

scaler.step(optimizer) wandelt die Gradienten zunächst zurück auf ihre tatsächliche Größenordnung und ruft dann optimizer.step() auf, allerdings nur, wenn keine Inf- oder NaN-Werte aufgetreten sind. Wenn die Gradienten überlaufen, wird der Schritt übersprungen.

scaler.step(optimizer)

scaler.update

scaler.update() passt den Skalierungsfaktor für die nächste Iteration an: Bei erfolgreichen Schritten wird die Skalierung erhöht, nach einem Überlauf verringert. Diese adaptive Skalierung hält das Training automatisch stabil.

scaler.update()

Der vollständige AMP-Loop

Zusammengefügt ergeben die einzelnen Bestandteile einen vollständigen Trainingsschritt mit gemischter Präzision.

scaler = GradScaler()
for x, y in loader:
    x, y = x.cuda(), y.cuda()
    optimizer.zero_grad()
    with autocast():
        out = model(x)
        loss = criterion(out, y)
    scaler.scale(loss).backward()
    scaler.step(optimizer)
    scaler.update()

Praktische Tipps

Behalten Sie Folgendes im Hinterkopf:

  • Rufen Sie backward() nur für den skalierten Loss auf
  • autocast verpackt nur den Forward-Pass, nicht die Backpropagation oder den Optimizer-Schritt
  • AMP spielt seine Stärken auf GPUs mit Tensorkernen aus; auf älterer Hardware sind die Vorteile geringer

Kurztest

Testen Sie Ihr Wissen über AMP.

Zusammenfassung

Sie haben Training mit gemischter Präzision und AMP kennengelernt:

  • autocast() wählt für jede Operation im Forward-Pass FP16 oder FP32
  • GradScaler skaliert den Loss, um einen Gradientenunterlauf zu vermeiden
  • Der Ablauf ist scaler.scale(loss).backward(), scaler.step(optimizer), scaler.update()
  • Ergebnis: etwa 2-fache Speicherersparnis und schnelleres Training

Häufig gestellte Fragen

Ist die Lektion „Mixed-Precision-Training mit AMP“ kostenlos?

Ja — der vollständige Text von „Mixed-Precision-Training mit AMP“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Mixed-Precision-Training mit AMP“?

torch.cuda.amp.autocast(), GradScaler, FP16 vs. BF16, Speichereinsparungen, Geschwindigkeitsgewinne. Du übst Learn AI with Python 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 Learn AI with Python zu starten?

Keine Vorkenntnisse erforderlich. Learn AI with Python 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 „Mixed-Precision-Training mit AMP“?

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 Learn AI with Python-Lektion Code schreiben und ausführen?

Ja. Jede Learn AI with Python-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. Multi-GPU-Training mit DataParallel
  2. DistributedDataParallel (DDP)
  3. Mixed-Precision-Training mit AMP
  4. Effizientes Training mit Hugging Face Accelerate
← Zurück zu Learn AI with Python