Akumulacja gradientów z Accelerator
Trenujesz model językowy do upraszczania tłumaczeń przez parafrazowanie złożonych zdań, ale pamięć GPU jest niewystarczająca. Akumulacja gradientów pozwala modelowi efektywnie trenować na większych batchach – dzięki użyciu małych batchy, które mieszczą się w pamięci. Ponieważ wolisz pisać pętlę treningową jawnie, aby widzieć jej strukturę, korzystasz z Accelerator. Zwróć uwagę, że to ćwiczenie działa na CPU, ale kod pozostaje taki sam dla GPU.
Obiekty model, train_dataloader, optimizer i lr_scheduler zostały wcześniej zdefiniowane.
To ćwiczenie jest częścią kursu
Efektywne trenowanie modeli AI z PyTorch
Instrukcje do ćwiczenia
- Skonfiguruj
Accelerator()tak, aby używał akumulacji gradientów z dwoma krokami. - Ustaw menedżer kontekstu
Accelerator, aby włączyć akumulację gradientów dlamodel.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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}")