Adam 8 bits avec Accelerator
Vous souhaitez personnaliser votre boucle d’entraînement avec Adam 8 bits pour réduire les besoins en mémoire de votre modèle. Préparez la boucle avec Adam 8 bits pour l’entraînement.
Supposez qu’un optimiseur Adam 8 bits a été défini sous le nom adam_bnb_optim. D’autres objets d’entraînement ont été définis : model, train_dataloader, lr_scheduler et accelerator.
Cet exercice fait partie du cours
Entraîner efficacement des modèles d’IA avec PyTorch
Instructions
- Préparez l’optimiseur Adam 8 bits pour l’entraînement distribué.
- Mettez à jour les paramètres du modèle avec l’optimiseur.
- Remettez les gradients à zéro avec l’optimiseur.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Prepare the 8-bit Adam optimizer for distributed training
model, ____, train_dataloader, lr_scheduler = accelerator.prepare(model, ____, train_dataloader, lr_scheduler)
for batch in train_dataloader:
inputs, targets = batch["input_ids"], batch["labels"]
outputs = model(inputs, labels=targets)
loss = outputs.loss
accelerator.backward(loss)
# Update the model parameters
____.____()
lr_scheduler.step()
# Zero the gradients
____.____()
print(f"Loss = {loss}")