CommencerCommencez gratuitement

Adafactor avec Accelerator

Vous avez réalisé une preuve de concept avec Adafactor et Trainer pour entraîner votre modèle de traduction automatique avec une empreinte mémoire réduite. Vous souhaitez maintenant personnaliser votre boucle d’entraînement avec Accelerator. Construisez la boucle d’entraînement pour utiliser Adafactor !

La fonction compute_optimizer_size() a été pré-définie. Certains objets d’entraînement ont été préchargés : model, train_dataloader et accelerator. Adafactor a été préimporté depuis torch.optim.

Cet exercice fait partie du cours

<cours>Entraîner efficacement des modèles d’IA avec PyTorch</cours>
Voir le cours

Instructions de l’exercice

  • Transmettez les paramètres du modèle à Adafactor lors de la définition de l’optimizer.
  • Transmettez l’état de l’optimizer pour en afficher la taille.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

# Pass the model parameters to Adafactor
optimizer = Adafactor(params=____.____())
model, optimizer, train_dataloader = accelerator.prepare(model, optimizer, train_dataloader)

for batch in train_dataloader:
    inputs, targets = batch["input_ids"], batch["labels"]
    outputs = model(inputs, labels=targets)
    loss = outputs.loss
    accelerator.backward(loss)
    optimizer.step()
    optimizer.zero_grad()

# Pass in the optimizer state
total_size_megabytes, total_num_elements = compute_optimizer_size(optimizer.state.____())
print(f"Number of optimizer parameters: {total_num_elements:,}\nOptimizer size: {total_size_megabytes:.0f} MB")  
Modifier et exécuter le code