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
Övningsinstruktioner
- Konfigurera
Accelerator()att använda gradientackumulering med två steg. - Sätt upp en
Accelerator-kontexthanterare för att aktivera gradientackumulering förmodel.
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}")