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
<Kurs>Effizientes KI-Modelltraining mit PyTorch</Kurs>Übungsanweisungen
- 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 praktische Ü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}")