Adam a 8 bit con Accelerator
Vuoi personalizzare il tuo training loop con Adam a 8 bit per ridurre i requisiti di memoria del modello. Prepara il loop con Adam a 8 bit per l'addestramento.
Supponi che un ottimizzatore Adam a 8 bit sia stato definito come adam_bnb_optim. Altri oggetti per l'addestramento sono già definiti: model, train_dataloader, lr_scheduler e accelerator.
Questo esercizio fa parte del corso
Efficient AI Model Training with PyTorch
Istruzioni dell'esercizio
- Prepara l'ottimizzatore Adam a 8 bit per il training distribuito.
- Aggiorna i parametri del modello con l'ottimizzatore.
- Azzera i gradienti con l'ottimizzatore.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# Prepare the 8-bit Adam optimizer for distributed training
model, adam_bnb_optim, 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
adam_bnb_optim.____()
lr_scheduler.step()
# Zero the gradients
adam_bnb_optim.____()
print(f"Loss = {loss}")