Entraînement en précision mixte

Entraînement efficace de modèles d’IA avec PyTorch

Dennis Lee

Data Engineer, Amazon

La précision mixte accélère le calcul

 

 

Icônes représentant l’efficacité mémoire, l’efficacité de communication et l’efficacité de calcul.

Entraînement efficace de modèles d’IA avec PyTorch

Calculs plus rapides avec moins de précision

Schéma montrant la représentation des nombres à virgule flottante en FP32 et FP16.

Entraînement efficace de modèles d’IA avec PyTorch

Calculs plus rapides avec moins de précision

Schéma montrant la représentation des nombres à virgule flottante en FP32 et FP16.

Entraînement efficace de modèles d’IA avec PyTorch

Calculs plus rapides avec moins de précision

Schéma montrant la représentation des nombres à virgule flottante en FP32 et FP16.

Entraînement efficace de modèles d’IA avec PyTorch

Qu’est-ce que l’entraînement en précision mixte?

Schéma illustrant les étapes de l’entraînement en précision mixte.

  • Précision mixte: combiner des calculs FP16 et FP32 pour accélérer l’entraînement
Entraînement efficace de modèles d’IA avec PyTorch

Qu’est-ce que l’entraînement en précision mixte?

Schéma illustrant les étapes de l’entraînement en précision mixte.

  • Précision mixte: combiner des calculs FP16 et FP32 pour accélérer l’entraînement
Entraînement efficace de modèles d’IA avec PyTorch

Qu’est-ce que l’entraînement en précision mixte?

Schéma illustrant les étapes de l’entraînement en précision mixte.

  • Précision mixte: combiner des calculs FP16 et FP32 pour accélérer l’entraînement
  • Sous‑débordement (underflow): un nombre devient 0 faute de précision suffisante
Entraînement efficace de modèles d’IA avec PyTorch

Qu’est-ce que l’entraînement en précision mixte?

Schéma illustrant les étapes de l’entraînement en précision mixte.

  • Précision mixte: combiner des calculs FP16 et FP32 pour accélérer l’entraînement
  • Sous‑débordement (underflow): un nombre devient 0 faute de précision suffisante
  • Mettre à l’échelle la perte pour éviter le sous‑débordement
Entraînement efficace de modèles d’IA avec PyTorch

Qu’est-ce que l’entraînement en précision mixte?

Schéma illustrant les étapes de l’entraînement en précision mixte.

  • Précision mixte: combiner des calculs FP16 et FP32 pour accélérer l’entraînement
  • Sous‑débordement (underflow): un nombre devient 0 faute de précision suffisante
  • Mettre à l’échelle la perte pour éviter le sous‑débordement
Entraînement efficace de modèles d’IA avec PyTorch

Qu’est-ce que l’entraînement en précision mixte?

Schéma illustrant les étapes de l’entraînement en précision mixte.

  • Précision mixte: combiner des calculs FP16 et FP32 pour accélérer l’entraînement
  • Sous‑débordement (underflow): un nombre devient 0 faute de précision suffisante
  • Mettre à l’échelle la perte pour éviter le sous‑débordement
Entraînement efficace de modèles d’IA avec PyTorch

Qu’est-ce que l’entraînement en précision mixte?

Schéma illustrant les étapes de l’entraînement en précision mixte.

  • Précision mixte: combiner des calculs FP16 et FP32 pour accélérer l’entraînement
  • Sous‑débordement (underflow): un nombre devient 0 faute de précision suffisante
  • Mettre à l’échelle la perte pour éviter le sous‑débordement
Entraînement efficace de modèles d’IA avec PyTorch

Qu’est-ce que l’entraînement en précision mixte?

Schéma illustrant les étapes de l’entraînement en précision mixte.

  • Précision mixte: combiner des calculs FP16 et FP32 pour accélérer l’entraînement
  • Sous‑débordement (underflow): un nombre devient 0 faute de précision suffisante
  • Mettre à l’échelle la perte pour éviter le sous‑débordement
Entraînement efficace de modèles d’IA avec PyTorch

Implémentation PyTorch

Graphique comparant la facilité d’utilisation et la possibilité de personnaliser pour PyTorch, Accelerator et Trainer.

Entraînement efficace de modèles d’IA avec PyTorch

Entraînement en précision mixte avec 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()
Entraînement efficace de modèles d’IA avec PyTorch

De PyTorch à Accelerator

Graphique comparant la facilité d’utilisation et la possibilité de personnaliser pour PyTorch, Accelerator et Trainer.

Entraînement efficace de modèles d’IA avec PyTorch

De PyTorch à Accelerator

Graphique comparant la facilité d’utilisation et la possibilité de personnaliser pour PyTorch, Accelerator et Trainer.

Entraînement efficace de modèles d’IA avec PyTorch

Entraînement en précision mixte avec 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()
Entraînement efficace de modèles d’IA avec PyTorch

D’Accelerator à Trainer

Graphique comparant la facilité d’utilisation et la possibilité de personnaliser pour PyTorch, Accelerator et Trainer.

Entraînement efficace de modèles d’IA avec PyTorch

D’Accelerator à Trainer

Graphique comparant la facilité d’utilisation et la possibilité de personnaliser pour PyTorch, Accelerator et Trainer.

Entraînement efficace de modèles d’IA avec PyTorch

Entraînement en précision mixte avec 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()
Entraînement efficace de modèles d’IA avec PyTorch

Passons à la pratique !

Entraînement efficace de modèles d’IA avec PyTorch

Preparing Video For Download...