ComeçarComece de graça

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

Ver curso

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 o model.

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}")
Editar e executar o código