Akumulasi gradien dengan Accelerator
Anda sedang melatih sebuah model bahasa untuk menyederhanakan terjemahan dengan memparafrasekan kalimat kompleks, tetapi GPU Anda kehabisan memori. Akumulasi gradien memungkinkan model berlatih secara efektif pada batch yang lebih besar dengan menggunakan batch kecil yang muat di memori. Anda memilih menulis loop pelatihan secara eksplisit agar dapat melihat strukturnya, sehingga Anda menggunakan Accelerator. Perhatikan bahwa latihan ini sebenarnya berjalan di CPU, tetapi kodenya tetap sama untuk GPU.
model, train_dataloader, optimizer, dan lr_scheduler telah didefinisikan sebelumnya.
Latihan ini merupakan bagian dari kursus
Pelatihan Model AI Efisien dengan PyTorch
Instruksi latihan
- Konfigurasikan
Accelerator()untuk menggunakan akumulasi gradien dengan dua langkah. - Siapkan context manager
Acceleratoruntuk mengaktifkan akumulasi gradien padamodel.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
# Configure Accelerator
accelerator = ____(____=____)
model, optimizer, train_dataloader, lr_scheduler = accelerator.prepare(model, optimizer, train_dataloader, lr_scheduler)
for batch in train_dataloader:
# Set up an Accelerator context manager
with ____.____(____):
inputs, targets = batch["input_ids"], batch["labels"]
outputs = model(inputs, labels=targets)
loss = outputs.loss
accelerator.backward(loss)
optimizer.step()
lr_scheduler.step()
optimizer.zero_grad()
print(f"Loss = {loss}")