Adafactor con Accelerator
Hai già mostrato un proof-of-concept di Adafactor con Trainer per addestrare il tuo modello di traduzione linguistica con requisiti di memoria ridotti. Ora vuoi personalizzare il training loop usando Accelerator. Costruisci il training loop per usare Adafactor!
La funzione compute_optimizer_size() è già definita. Alcuni oggetti per l’addestramento sono già caricati: model, train_dataloader e accelerator. Adafactor è stato già importato da torch.optim.
Questo esercizio fa parte del corso
Efficient AI Model Training with PyTorch
Istruzioni dell'esercizio
- Passa i parametri del modello a
Adafactorquando definiscioptimizer. - Passa lo stato dell’optimizer per stamparne la dimensione.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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")