Entrenamiento de precisión mixta

Entrenamiento eficiente de modelos de IA con PyTorch

Dennis Lee

Data Engineer, Amazon

La precisión mixta acelera el cómputo

 

 

Iconos que representan eficiencia de memoria, de comunicación y de cómputo.

Entrenamiento eficiente de modelos de IA con PyTorch

Cálculos más rápidos con menos precisión

Diagrama que muestra cómo se representan los números en punto flotante en FP32 y FP16.

Entrenamiento eficiente de modelos de IA con PyTorch

Cálculos más rápidos con menos precisión

Diagrama que muestra cómo se representan los números en punto flotante en FP32 y FP16.

Entrenamiento eficiente de modelos de IA con PyTorch

Cálculos más rápidos con menos precisión

Diagrama que muestra cómo se representan los números en punto flotante en FP32 y FP16.

Entrenamiento eficiente de modelos de IA con PyTorch

¿Qué es el entrenamiento de precisión mixta?

Diagrama que ilustra los pasos del entrenamiento de precisión mixta.

  • Precisión mixta: combina cálculos FP16 y FP32 para acelerar el entrenamiento
Entrenamiento eficiente de modelos de IA con PyTorch

¿Qué es el entrenamiento de precisión mixta?

Diagrama que ilustra los pasos del entrenamiento de precisión mixta.

  • Precisión mixta: combina cálculos FP16 y FP32 para acelerar el entrenamiento
Entrenamiento eficiente de modelos de IA con PyTorch

¿Qué es el entrenamiento de precisión mixta?

Diagrama que ilustra los pasos del entrenamiento de precisión mixta.

  • Precisión mixta: combina cálculos FP16 y FP32 para acelerar el entrenamiento
  • Underflow: el número cae a 0 por estar por debajo de la precisión
Entrenamiento eficiente de modelos de IA con PyTorch

¿Qué es el entrenamiento de precisión mixta?

Diagrama que ilustra los pasos del entrenamiento de precisión mixta.

  • Precisión mixta: combina cálculos FP16 y FP32 para acelerar el entrenamiento
  • Underflow: el número cae a 0 por estar por debajo de la precisión
  • Escala la pérdida para evitar underflow
Entrenamiento eficiente de modelos de IA con PyTorch

¿Qué es el entrenamiento de precisión mixta?

Diagrama que ilustra los pasos del entrenamiento de precisión mixta.

  • Precisión mixta: combina cálculos FP16 y FP32 para acelerar el entrenamiento
  • Underflow: el número cae a 0 por estar por debajo de la precisión
  • Escala la pérdida para evitar underflow
Entrenamiento eficiente de modelos de IA con PyTorch

¿Qué es el entrenamiento de precisión mixta?

Diagrama que ilustra los pasos del entrenamiento de precisión mixta.

  • Precisión mixta: combina cálculos FP16 y FP32 para acelerar el entrenamiento
  • Underflow: el número cae a 0 por estar por debajo de la precisión
  • Escala la pérdida para evitar underflow
Entrenamiento eficiente de modelos de IA con PyTorch

¿Qué es el entrenamiento de precisión mixta?

Diagrama que ilustra los pasos del entrenamiento de precisión mixta.

  • Precisión mixta: combina cálculos FP16 y FP32 para acelerar el entrenamiento
  • Underflow: el número cae a 0 por estar por debajo de la precisión
  • Escala la pérdida para evitar underflow
Entrenamiento eficiente de modelos de IA con PyTorch

¿Qué es el entrenamiento de precisión mixta?

Diagrama que ilustra los pasos del entrenamiento de precisión mixta.

  • Precisión mixta: combina cálculos FP16 y FP32 para acelerar el entrenamiento
  • Underflow: el número cae a 0 por estar por debajo de la precisión
  • Escala la pérdida para evitar underflow
Entrenamiento eficiente de modelos de IA con PyTorch

Implementación en PyTorch

Gráfico que compara facilidad de uso frente a capacidad de personalización para PyTorch, Accelerator y Trainer.

Entrenamiento eficiente de modelos de IA con PyTorch

Entrenamiento de precisión mixta con PyTorch

scaler = torch.amp.GradScaler()


for batch in train_dataloader: inputs, targets = batch["input_ids"], batch["labels"]
with torch.autocast(device_type="cpu", dtype=torch.float16):
outputs = model(inputs, labels=targets) loss = outputs.loss
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
optimizer.zero_grad()
Entrenamiento eficiente de modelos de IA con PyTorch

De PyTorch a Accelerator

Gráfico que compara facilidad de uso frente a capacidad de personalización para PyTorch, Accelerator y Trainer.

Entrenamiento eficiente de modelos de IA con PyTorch

De PyTorch a Accelerator

Gráfico que compara facilidad de uso frente a capacidad de personalización para PyTorch, Accelerator y Trainer.

Entrenamiento eficiente de modelos de IA con PyTorch

Entrenamiento de precisión mixta con Accelerator

accelerator = Accelerator(mixed_precision="fp16")


model, optimizer, train_dataloader, lr_scheduler = \ accelerator.prepare(model, optimizer, train_dataloader, lr_scheduler)
for batch in train_dataloader: inputs, targets = batch["input_ids"], batch["labels"] outputs = model(inputs, labels=targets) loss = outputs.loss accelerator.backward(loss) optimizer.step() optimizer.zero_grad()
Entrenamiento eficiente de modelos de IA con PyTorch

De Accelerator a Trainer

Gráfico que compara facilidad de uso frente a capacidad de personalización para PyTorch, Accelerator y Trainer.

Entrenamiento eficiente de modelos de IA con PyTorch

De Accelerator a Trainer

Gráfico que compara facilidad de uso frente a capacidad de personalización para PyTorch, Accelerator y Trainer.

Entrenamiento eficiente de modelos de IA con PyTorch

Entrenamiento de precisión mixta con Trainer

training_args = TrainingArguments(
    output_dir="./results",
    evaluation_strategy="epoch",
    fp16=True
)

trainer = Trainer( model=model, args=training_args, train_dataset=dataset["train"], eval_dataset=dataset["validation"], compute_metrics=compute_metrics, )
trainer.train()
Entrenamiento eficiente de modelos de IA con PyTorch

¡Vamos a practicar!

Entrenamiento eficiente de modelos de IA con PyTorch

Preparing Video For Download...