Lokale SGD mit Accelerator
Du hast Gradientenakkumulation und Gradienten-Checkpointing eingeführt, um die Speichernutzung für dein Sprachübersetzungsmodell zu optimieren. Das Training ist immer noch etwas langsam, also beschließt du, die lokale SGD in deine Trainingsschleife aufzunehmen, um die Kommunikationseffizienz zwischen den Geräten zu verbessern. Baue die Ausbildungsschleife mit der lokalen SGD auf!
model
, train_dataloader
und accelerator
wurden vordefiniert, und LocalSGD
wurde importiert.
Diese Übung ist Teil des Kurses
Effizientes KI-Modelltraining mit PyTorch
Anleitung zur Übung
- Richte einen Kontextmanager für lokale SGD ein und synchronisiere die Gradienten alle acht Schritte.
- Schritt den lokalen SGD-Kontextmanager.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Set up a context manager to synchronize gradients every eight steps
with ____(accelerator=accelerator, model=model, ____=____, enabled=True) as local_sgd:
for batch in train_dataloader:
with accelerator.accumulate(model):
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()
# Step the local SGD context manager
____.____()