Zacznij terazZacznij za darmo

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

Zobacz kurs

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 dla model.

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}")
Edytuj i uruchom kod