Acumulação de gradiente com o Accelerator
Você está treinando um modelo de linguagem para simplificar as traduções parafraseando frases complexas, mas sua GPU está ficando sem memória. A acumulação de gradiente permite que o modelo seja treinado de forma eficaz em lotes maiores, usando pequenos lotes que cabem na memória. Você prefere escrever o loop de treinamento explicitamente para ver sua estrutura, por isso está usando Accelerator
. Observe que, na verdade, esse exercício é executado na CPU, mas o código permanece o mesmo para a GPU.
Os endereços model
, train_dataloader
, optimizer
e lr_scheduler
foram predefinidos.
Este exercício faz parte do curso
Treinamento eficiente de modelos de IA com PyTorch
Instruções do exercício
- Configure o site
Accelerator()
para usar a acumulação de gradiente com duas etapas. - Configure um gerenciador de contexto
Accelerator
para ativar o acúmulo de gradiente para omodel
.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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}")