LoslegenKostenlos loslegen

Gradientenakkumulation mit Accelerator

Du trainierst ein Sprachmodell, das Übersetzungen vereinfacht, indem es komplexe Sätze umformuliert, aber deinem GPU-Speicher geht der Platz aus. Mit Gradientenakkumulation kann das Modell effektiv mit größeren Batches trainieren, indem es kleine Batches nutzt, die in den Speicher passen. Du möchtest die Trainingsschleife explizit schreiben, um ihre Struktur zu sehen, daher verwendest du Accelerator. Beachte, dass diese Übung tatsächlich auf der CPU läuft, der Code für die GPU jedoch gleich bleibt.

Das model, der train_dataloader, der optimizer und der lr_scheduler sind bereits vordefiniert.

Diese Übung ist Teil des Kurses

Effizientes KI-Modelltraining mit PyTorch

Kurs anzeigen

Anleitung zur Übung

  • Konfiguriere Accelerator() so, dass die Gradientenakkumulation mit zwei Schritten verwendet wird.
  • Richte einen Accelerator-Context-Manager ein, um die Gradientenakkumulation für das model zu aktivieren.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# Configure Accelerator
accelerator = ____(____=____)
model, optimizer, train_dataloader, lr_scheduler = accelerator.prepare(model, optimizer, train_dataloader, lr_scheduler)
for batch in train_dataloader:
    # Set up an Accelerator context manager
    with ____.____(____):
        inputs, targets = batch["input_ids"], batch["labels"]
        outputs = model(inputs, labels=targets)
        loss = outputs.loss
        accelerator.backward(loss)
        optimizer.step()
        lr_scheduler.step()
        optimizer.zero_grad()
        print(f"Loss = {loss}")
Code bearbeiten und ausführen