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 adalah bagian dari kursus
Pelatihan Model AI Efisien dengan PyTorch
Petunjuk latihan
- Konfigurasikan
Accelerator()untuk menggunakan akumulasi gradien dengan dua langkah. - Siapkan context manager
Acceleratoruntuk mengaktifkan akumulasi gradien padamodel.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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}")