ComenzarEmpieza gratis

Acumulación de gradientes con Accelerator

Estás entrenando un modelo de lenguaje para simplificar traducciones parafraseando oraciones complejas, pero tu GPU se queda sin memoria. La acumulación de gradientes permite que el modelo entrene efectivamente con lotes más grandes usando lotes pequeños que caben en memoria. Prefieres escribir el bucle de entrenamiento de forma explícita para ver su estructura, por lo que estás usando Accelerator. Ten en cuenta que este ejercicio se ejecuta en la CPU, pero el código es el mismo para la GPU.

El model, train_dataloader, optimizer y lr_scheduler ya están definidos.

Este ejercicio forma parte del curso

Entrenamiento eficiente de modelos de IA con PyTorch

Ver curso

Instrucciones del ejercicio

  • Configura Accelerator() para usar acumulación de gradientes con dos pasos.
  • Configura un gestor de contexto de Accelerator para activar la acumulación de gradientes en el model.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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 y ejecutar código