Entrenamiento de precisión mixta con PyTorch básico
Utilizarás tipos de datos de coma flotante de baja precisión para acelerar el entrenamiento de tu modelo de traducción lingüística. Por ejemplo, los tipos de datos de coma flotante de 16 bits (float16) sólo tienen la mitad de tamaño que sus homólogos de 32 bits (float32). Esto acelera los cálculos de las multiplicaciones y convoluciones de matrices. Recuerda que esto implica escalar gradientes y operaciones de fundición a coma flotante de 16 bits.
Se han precargado algunos objetos: dataset, model, dataloader, y optimizer.
Este ejercicio forma parte del curso
Entrenamiento eficiente de modelos de IA con PyTorch
Instrucciones del ejercicio
- Antes del bucle, define un escalador para los gradientes utilizando una clase de la biblioteca
torch. - En el bucle, convierte las operaciones al tipo de datos de coma flotante de 16 bits utilizando un gestor de contexto de la biblioteca
torch. - En el bucle, escala la pérdida y llama a
.backward()para crear gradientes escalados.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Define a scaler for the gradients
scaler = torch.amp.____()
for batch in train_dataloader:
inputs, targets = batch["input_ids"], batch["labels"]
# Casts operations to mixed precision
with torch.____(device_type="cpu", dtype=torch.____):
outputs = model(inputs, labels=targets)
loss = outputs.loss
# Compute scaled gradients
____.____(loss).____()
scaler.step(optimizer)
scaler.update()
optimizer.zero_grad()