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
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 dasmodelzu 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}")