Local SGD com Accelerator
Você já implementou acumulação de gradientes e gradient checkpointing para otimizar o uso de memória no seu modelo de tradução de idiomas. O treinamento ainda está um pouco lento, então você decide adicionar Local SGD ao seu loop de treinamento para melhorar a eficiência de comunicação entre dispositivos. Construa o loop de treinamento com Local SGD!
O model, train_dataloader e accelerator já foram predefinidos, e LocalSGD foi importado.
Este exercício faz parte do curso
Treinamento Eficiente de Modelos de IA com PyTorch
Instruções do exercício
- Configure um gerenciador de contexto para Local SGD e sincronize os gradientes a cada oito etapas.
- Faça o step do gerenciador de contexto de Local SGD.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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
____.____()