Addestramento a precisione mista

Efficient AI Model Training with PyTorch

Dennis Lee

Data Engineer, Amazon

La precisione mista accelera il calcolo

 

 

Icone che rappresentano efficienza di memoria, comunicazione e calcolo.

Efficient AI Model Training with PyTorch

Calcoli più veloci con meno precisione

Diagramma che mostra come sono rappresentati i numeri in virgola mobile in FP32 e FP16.

Efficient AI Model Training with PyTorch

Calcoli più veloci con meno precisione

Diagramma che mostra come sono rappresentati i numeri in virgola mobile in FP32 e FP16.

Efficient AI Model Training with PyTorch

Calcoli più veloci con meno precisione

Diagramma che mostra come sono rappresentati i numeri in virgola mobile in FP32 e FP16.

Efficient AI Model Training with PyTorch

Cos’è l’addestramento a precisione mista?

Diagramma che illustra i passaggi dell’addestramento a precisione mista.

  • Precisione mista: combina calcoli FP16 e FP32 per accelerare l’addestramento
Efficient AI Model Training with PyTorch

Cos’è l’addestramento a precisione mista?

Diagramma che illustra i passaggi dell’addestramento a precisione mista.

  • Precisione mista: combina calcoli FP16 e FP32 per accelerare l’addestramento
Efficient AI Model Training with PyTorch

Cos’è l’addestramento a precisione mista?

Diagramma che illustra i passaggi dell’addestramento a precisione mista.

  • Precisione mista: combina calcoli FP16 e FP32 per accelerare l’addestramento
  • Underflow: numero che diventa 0 perché sotto la precisione
Efficient AI Model Training with PyTorch

Cos’è l’addestramento a precisione mista?

Diagramma che illustra i passaggi dell’addestramento a precisione mista.

  • Precisione mista: combina calcoli FP16 e FP32 per accelerare l’addestramento
  • Underflow: numero che diventa 0 perché sotto la precisione
  • Scala la loss per evitare l’underflow
Efficient AI Model Training with PyTorch

Cos’è l’addestramento a precisione mista?

Diagramma che illustra i passaggi dell’addestramento a precisione mista.

  • Precisione mista: combina calcoli FP16 e FP32 per accelerare l’addestramento
  • Underflow: numero che diventa 0 perché sotto la precisione
  • Scala la loss per evitare l’underflow
Efficient AI Model Training with PyTorch

Cos’è l’addestramento a precisione mista?

Diagramma che illustra i passaggi dell’addestramento a precisione mista.

  • Precisione mista: combina calcoli FP16 e FP32 per accelerare l’addestramento
  • Underflow: numero che diventa 0 perché sotto la precisione
  • Scala la loss per evitare l’underflow
Efficient AI Model Training with PyTorch

Cos’è l’addestramento a precisione mista?

Diagramma che illustra i passaggi dell’addestramento a precisione mista.

  • Precisione mista: combina calcoli FP16 e FP32 per accelerare l’addestramento
  • Underflow: numero che diventa 0 perché sotto la precisione
  • Scala la loss per evitare l’underflow
Efficient AI Model Training with PyTorch

Cos’è l’addestramento a precisione mista?

Diagramma che illustra i passaggi dell’addestramento a precisione mista.

  • Precisione mista: combina calcoli FP16 e FP32 per accelerare l’addestramento
  • Underflow: numero che diventa 0 perché sotto la precisione
  • Scala la loss per evitare l’underflow
Efficient AI Model Training with PyTorch

Implementazione in PyTorch

Grafico che confronta facilità d’uso vs. possibilità di personalizzazione per PyTorch, Accelerator e Trainer.

Efficient AI Model Training with PyTorch

Precisione mista 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()
Efficient AI Model Training with PyTorch

Da PyTorch ad Accelerator

Grafico che confronta facilità d’uso vs. possibilità di personalizzazione per PyTorch, Accelerator e Trainer.

Efficient AI Model Training with PyTorch

Da PyTorch ad Accelerator

Grafico che confronta facilità d’uso vs. possibilità di personalizzazione per PyTorch, Accelerator e Trainer.

Efficient AI Model Training with PyTorch

Precisione mista 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()
Efficient AI Model Training with PyTorch

Da Accelerator a Trainer

Grafico che confronta facilità d’uso vs. possibilità di personalizzazione per PyTorch, Accelerator e Trainer.

Efficient AI Model Training with PyTorch

Da Accelerator a Trainer

Grafico che confronta facilità d’uso vs. possibilità di personalizzazione per PyTorch, Accelerator e Trainer.

Efficient AI Model Training with PyTorch

Precisione mista 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()
Efficient AI Model Training with PyTorch

Passons à la pratique !

Efficient AI Model Training with PyTorch

Preparing Video For Download...