CommencerCommencer gratuitement

Accumulation de gradients avec Accelerator

Vous entraînez un modèle de langage pour simplifier des traductions en reformulant des phrases complexes, mais votre GPU manque de mémoire. L’accumulation de gradients permet d’entraîner le modèle sur des lots plus grands 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 est identique pour le GPU.

Le model, le train_dataloader, l’optimizer et le lr_scheduler ont été pré-définis.

Cet exercice fait partie du cours

Entraîner efficacement des modèles d’IA avec PyTorch

Afficher le cours

Instructions

  • Configurez Accelerator() pour utiliser l’accumulation de gradients avec deux étapes.
  • Mettez en place un gestionnaire de contexte Accelerator pour activer l’accumulation de gradients pour le model.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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}")
Modifier et exécuter le code