Inizia subitoInizia gratis

Accumulo dei gradienti con Accelerator

Stai addestrando un modello di linguaggio per semplificare le traduzioni parafrasando frasi complesse, ma la tua GPU sta esaurendo la memoria. L'accumulo dei gradienti consente al modello di addestrarsi efficacemente su batch più grandi usando batch piccoli che rientrano in memoria. Preferisci scrivere esplicitamente il loop di training per vederne la struttura, quindi stai usando Accelerator. Nota che questo esercizio gira effettivamente sulla CPU, ma il codice rimane lo stesso per la GPU.

model, train_dataloader, optimizer e lr_scheduler sono già stati definiti.

Questo esercizio fa parte del corso

Efficient AI Model Training with PyTorch

Visualizza corso

Istruzioni dell'esercizio

  • Configura Accelerator() per usare l'accumulo dei gradienti con due step.
  • Imposta un context manager di Accelerator per abilitare l'accumulo dei gradienti per il model.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# 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}")
Modifica ed esegui il codice