Adafactor dengan Accelerator
Anda telah membuat bukti konsep Adafactor dengan Trainer untuk melatih model penerjemahan bahasa dengan kebutuhan memori yang lebih rendah. Sekarang Anda ingin menyesuaikan loop pelatihan menggunakan Accelerator. Bangun loop pelatihan yang menggunakan Adafactor!
Fungsi compute_optimizer_size() telah didefinisikan sebelumnya. Beberapa objek pelatihan telah dimuat: model, train_dataloader, dan accelerator. Adafactor telah diimpor dari torch.optim.
Latihan ini merupakan bagian dari kursus
Pelatihan Model AI Efisien dengan PyTorch
Instruksi latihan
- Teruskan parameter model ke
Adafactorsaat mendefinisikanoptimizer. - Teruskan state optimizer untuk mencetak ukurannya.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# 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")