Adafactor met Accelerator
Je hebt een proof-of-concept laten zien van Adafactor met Trainer om je vertaamodel te trainen met minder geheugengebruik. Nu wil je je trainingslus aanpassen met Accelerator. Bouw de trainingslus zodat deze Adafactor gebruikt!
De functie compute_optimizer_size() is al gedefinieerd. Enkele trainingsobjecten zijn al ingeladen: model, train_dataloader en accelerator. Adafactor is vooraf geïmporteerd uit torch.optim.
Deze oefening maakt deel uit van de cursus
Efficiënt AI-modellen trainen met PyTorch
Oefeninstructies
- Geef de modelparameters door aan
Adafactorbij het definiëren van deoptimizer. - Geef de optimizerstatus door om de grootte te printen.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# 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")