LoslegenKostenlos loslegen

Gradientenakkumulation mit Accelerator

Du trainierst ein Sprachmodell, um Übersetzungen zu vereinfachen, indem du komplexe Sätze umschreibst, aber deinem Grafikprozessor geht der Speicher aus. Die Gradientenakkumulation ermöglicht es dem Modell, effektiv auf größeren Stapeln zu trainieren, indem es kleine Stapel verwendet, die in den Speicher passen. Du ziehst es vor, die Trainingsschleife explizit zu schreiben, um ihre Struktur zu sehen, also benutzt du Accelerator. Beachte, dass diese Übung tatsächlich auf der CPU läuft, aber der Code bleibt für die GPU derselbe.

Die Felder model, train_dataloader, optimizer und lr_scheduler sind vordefiniert.

Diese Übung ist Teil des Kurses

Effizientes KI-Modelltraining mit PyTorch

Kurs anzeigen

Anleitung zur Übung

  • Konfiguriere Accelerator() so, dass es eine Gradientenakkumulation mit zwei Schritten verwendet.
  • Richte einen Accelerator Kontextmanager ein, um die Akkumulation von Gradienten für die model zu ermöglichen.

Interaktive Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

# 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