Local SGD con Accelerator
Hai già implementato l'accumulo dei gradienti e il gradient checkpointing per ottimizzare l'uso della memoria nel tuo modello di traduzione automatica. L'addestramento è ancora un po' lento, quindi decidi di aggiungere la local SGD al ciclo di training per migliorare l'efficienza della comunicazione tra dispositivi. Costruisci il ciclo di training con la local SGD!
model, train_dataloader e accelerator sono già definiti e LocalSGD è stato importato.
Questo esercizio fa parte del corso
Efficient AI Model Training with PyTorch
Istruzioni dell'esercizio
- Imposta
local_sgd_stepsper sincronizzare i gradienti ogni otto step. - Esegui lo step del context manager di local SGD.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# Set up a context manager to synchronize gradients every eight steps
with LocalSGD(accelerator=accelerator, model=model, local_sgd_steps=____, 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
local_sgd.____()