Treinamento com precisão mista

Treinamento Eficiente de Modelos de IA com PyTorch

Dennis Lee

Data Engineer, Amazon

Precisão mista acelera a computação

 

 

Ícones representando eficiência de memória, comunicação e computação.

Treinamento Eficiente de Modelos de IA com PyTorch

Cálculos mais rápidos com menos precisão

Diagrama mostrando como números de ponto flutuante são representados em FP32 e FP16.

Treinamento Eficiente de Modelos de IA com PyTorch

Cálculos mais rápidos com menos precisão

Diagrama mostrando como números de ponto flutuante são representados em FP32 e FP16.

Treinamento Eficiente de Modelos de IA com PyTorch

Cálculos mais rápidos com menos precisão

Diagrama mostrando como números de ponto flutuante são representados em FP32 e FP16.

Treinamento Eficiente de Modelos de IA com PyTorch

O que é treinamento com precisão mista?

Diagrama que ilustra as etapas do treinamento com precisão mista.

  • Precisão mista: combinar computações FP16 e FP32 para acelerar o treino
Treinamento Eficiente de Modelos de IA com PyTorch

O que é treinamento com precisão mista?

Diagrama que ilustra as etapas do treinamento com precisão mista.

  • Precisão mista: combinar computações FP16 e FP32 para acelerar o treino
Treinamento Eficiente de Modelos de IA com PyTorch

O que é treinamento com precisão mista?

Diagrama que ilustra as etapas do treinamento com precisão mista.

  • Precisão mista: combinar computações FP16 e FP32 para acelerar o treino
  • Underflow: número vira 0 por ficar abaixo da precisão
Treinamento Eficiente de Modelos de IA com PyTorch

O que é treinamento com precisão mista?

Diagrama que ilustra as etapas do treinamento com precisão mista.

  • Precisão mista: combinar computações FP16 e FP32 para acelerar o treino
  • Underflow: número vira 0 por ficar abaixo da precisão
  • Escale a loss para evitar underflow
Treinamento Eficiente de Modelos de IA com PyTorch

O que é treinamento com precisão mista?

Diagrama que ilustra as etapas do treinamento com precisão mista.

  • Precisão mista: combinar computações FP16 e FP32 para acelerar o treino
  • Underflow: número vira 0 por ficar abaixo da precisão
  • Escale a loss para evitar underflow
Treinamento Eficiente de Modelos de IA com PyTorch

O que é treinamento com precisão mista?

Diagrama que ilustra as etapas do treinamento com precisão mista.

  • Precisão mista: combinar computações FP16 e FP32 para acelerar o treino
  • Underflow: número vira 0 por ficar abaixo da precisão
  • Escale a loss para evitar underflow
Treinamento Eficiente de Modelos de IA com PyTorch

O que é treinamento com precisão mista?

Diagrama que ilustra as etapas do treinamento com precisão mista.

  • Precisão mista: combinar computações FP16 e FP32 para acelerar o treino
  • Underflow: número vira 0 por ficar abaixo da precisão
  • Escale a loss para evitar underflow
Treinamento Eficiente de Modelos de IA com PyTorch

O que é treinamento com precisão mista?

Diagrama que ilustra as etapas do treinamento com precisão mista.

  • Precisão mista: combinar computações FP16 e FP32 para acelerar o treino
  • Underflow: número vira 0 por ficar abaixo da precisão
  • Escale a loss para evitar underflow
Treinamento Eficiente de Modelos de IA com PyTorch

Implementação em PyTorch

Gráfico comparando facilidade de uso vs. capacidade de personalização para PyTorch, Accelerator e Trainer.

Treinamento Eficiente de Modelos de IA com PyTorch

Precisão mista com 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()
Treinamento Eficiente de Modelos de IA com PyTorch

De PyTorch para Accelerator

Gráfico comparando facilidade de uso vs. capacidade de personalização para PyTorch, Accelerator e Trainer.

Treinamento Eficiente de Modelos de IA com PyTorch

De PyTorch para Accelerator

Gráfico comparando facilidade de uso vs. capacidade de personalização para PyTorch, Accelerator e Trainer.

Treinamento Eficiente de Modelos de IA com PyTorch

Precisão mista com 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()
Treinamento Eficiente de Modelos de IA com PyTorch

De Accelerator para Trainer

Gráfico comparando facilidade de uso vs. capacidade de personalização para PyTorch, Accelerator e Trainer.

Treinamento Eficiente de Modelos de IA com PyTorch

De Accelerator para Trainer

Gráfico comparando facilidade de uso vs. capacidade de personalização para PyTorch, Accelerator e Trainer.

Treinamento Eficiente de Modelos de IA com PyTorch

Precisão mista com 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()
Treinamento Eficiente de Modelos de IA com PyTorch

Vamos praticar!

Treinamento Eficiente de Modelos de IA com PyTorch

Preparing Video For Download...