Kom igångKom igång gratis

Gradientackumulering med Accelerator

Du tränar en språkmodell som ska förenkla översättningar genom att omformulera komplexa meningar, men GPU:n får slut på minne. Gradientackumulering låter modellen träna effektivt på större batchar genom att använda små batchar som ryms i minnet. Du föredrar att skriva träningsloopen explicit för att se dess struktur, så du använder Accelerator. Observera att den här övningen faktiskt körs på CPU:n, men koden är densamma för GPU.

model, train_dataloader, optimizer och lr_scheduler har fördefinierade värden.

Den här övningen är en del av kursen

Effektiv AI-modellträning med PyTorch

Visa kurs

Övningsinstruktioner

  • Konfigurera Accelerator() att använda gradientackumulering med två steg.
  • Sätt upp en Accelerator-kontexthanterare för att aktivera gradientackumulering för model.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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}")
Redigera och kör kod