Accumulation de gradients avec Accelerator
Vous entraînez un modèle de langue pour simplifier des traductions en reformulant des phrases complexes, mais votre GPU manque de mémoire. L’accumulation de gradients permet d’entraîner efficacement le modèle sur de plus grands lots en utilisant de petits lots qui tiennent en mémoire. Vous préférez écrire explicitement la boucle d’entraînement pour en voir la structure, donc vous utilisez Accelerator. Notez que cet exercice s’exécute en réalité sur le CPU, mais le code demeure identique pour le GPU.
Le model, le train_dataloader, l’optimizer et le lr_scheduler ont été préconfigurés.
Cette activité fait partie du cours
Entraînement efficace de modèles d’IA avec PyTorch
Instructions de l’exercice
- Configurez
Accelerator()pour utiliser l’accumulation de gradients avec deux étapes. - Mettez en place un gestionnaire de contexte
Acceleratorpour activer l’accumulation de gradients pour lemodel.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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}")