Adafactor avec Accelerator
Vous avez réalisé une preuve de concept de Adafactor avec Trainer pour entraîner votre modèle de traduction automatique tout en réduisant l’utilisation de la mémoire. 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é de torch.optim.
Cette activité fait partie du cours
Entraînement efficace de modèles d’IA avec PyTorch
Instructions de l’exercice
- Transmettez les paramètres du modèle à
Adafactorlors de la définition de l’optimizer. - Transmettez l’état de l’optimiseur pour 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")