Adam 8 bits avec accélérateur
Vous souhaitez personnaliser votre boucle d'apprentissage avec Adam 8 bits afin de réduire les besoins en mémoire de votre modèle. Préparez la boucle avec Adam 8 bits pour l'entraînement.
Supposons qu'un optimiseur Adam 8 bits ait été défini comme adam_bnb_optim
. D'autres objets de formation ont été définis : model
, train_dataloader
, lr_scheduler
, et accelerator
.
Cet exercice fait partie du cours
Entraînement efficace de modèles d'IA avec PyTorch
Instructions
- Préparez l'optimiseur Adam 8 bits pour l'apprentissage distribué.
- Mettez à jour les paramètres du modèle à l'aide de 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}")