Aan de slagBegin gratis

Gradiëntaccumulatie met Accelerator

Je traint een taalmodel om vertalingen te vereenvoudigen door complexe zinnen te herformuleren, maar je GPU raakt door het geheugen heen. Met gradiëntaccumulatie kan het model effectief op grotere batches trainen door kleine batches te gebruiken die in het geheugen passen. Je schrijft de trainingslus liever expliciet om de structuur te zien, dus je gebruikt Accelerator. Let op: deze oefening draait daadwerkelijk op de CPU, maar de code blijft hetzelfde voor de GPU.

Het model, de train_dataloader, optimizer en lr_scheduler zijn al gedefinieerd.

Deze oefening maakt deel uit van de cursus

Efficiënt AI-modellen trainen met PyTorch

Bekijk cursus

Oefeninstructies

  • Configureer Accelerator() om gradiëntaccumulatie met twee stappen te gebruiken.
  • Zet een Accelerator-contextmanager op om gradiëntaccumulatie voor het model in te schakelen.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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}")
Code bewerken en uitvoeren