Training met mixed precision

Efficiënt AI-modellen trainen met PyTorch

Dennis Lee

Data Engineer, Amazon

Mixed precision versnelt berekeningen

 

 

Pictogrammen voor geheugenefficiëntie, communicatiemogelijkheden en rekenefficiëntie.

Efficiënt AI-modellen trainen met PyTorch

Sneller rekenen met minder precisie

Diagram van de representatie van drijvende-kommagetallen in FP32 en FP16.

Efficiënt AI-modellen trainen met PyTorch

Sneller rekenen met minder precisie

Diagram van de representatie van drijvende-kommagetallen in FP32 en FP16.

Efficiënt AI-modellen trainen met PyTorch

Sneller rekenen met minder precisie

Diagram van de representatie van drijvende-kommagetallen in FP32 en FP16.

Efficiënt AI-modellen trainen met PyTorch

Wat is training met mixed precision?

Diagram met de stappen van training met mixed precision.

  • Mixed precision: combineer FP16 en FP32 om training te versnellen
Efficiënt AI-modellen trainen met PyTorch

Wat is training met mixed precision?

Diagram met de stappen van training met mixed precision.

  • Mixed precision: combineer FP16 en FP32 om training te versnellen
Efficiënt AI-modellen trainen met PyTorch

Wat is training met mixed precision?

Diagram met de stappen van training met mixed precision.

  • Mixed precision: combineer FP16 en FP32 om training te versnellen
  • Underflow: getal wordt 0 doordat het onder de precisiegrens valt
Efficiënt AI-modellen trainen met PyTorch

Wat is training met mixed precision?

Diagram met de stappen van training met mixed precision.

  • Mixed precision: combineer FP16 en FP32 om training te versnellen
  • Underflow: getal wordt 0 doordat het onder de precisiegrens valt
  • Schaal de loss om underflow te voorkomen
Efficiënt AI-modellen trainen met PyTorch

Wat is training met mixed precision?

Diagram met de stappen van training met mixed precision.

  • Mixed precision: combineer FP16 en FP32 om training te versnellen
  • Underflow: getal wordt 0 doordat het onder de precisiegrens valt
  • Schaal de loss om underflow te voorkomen
Efficiënt AI-modellen trainen met PyTorch

Wat is training met mixed precision?

Diagram met de stappen van training met mixed precision.

  • Mixed precision: combineer FP16 en FP32 om training te versnellen
  • Underflow: getal wordt 0 doordat het onder de precisiegrens valt
  • Schaal de loss om underflow te voorkomen
Efficiënt AI-modellen trainen met PyTorch

Wat is training met mixed precision?

Diagram met de stappen van training met mixed precision.

  • Mixed precision: combineer FP16 en FP32 om training te versnellen
  • Underflow: getal wordt 0 doordat het onder de precisiegrens valt
  • Schaal de loss om underflow te voorkomen
Efficiënt AI-modellen trainen met PyTorch

Wat is training met mixed precision?

Diagram met de stappen van training met mixed precision.

  • Mixed precision: combineer FP16 en FP32 om training te versnellen
  • Underflow: getal wordt 0 doordat het onder de precisiegrens valt
  • Schaal de loss om underflow te voorkomen
Efficiënt AI-modellen trainen met PyTorch

PyTorch-implementatie

Grafiek: gebruiksgemak vs. aanpasbaarheid voor PyTorch, Accelerator en Trainer.

Efficiënt AI-modellen trainen met PyTorch

Mixed precision met 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()
Efficiënt AI-modellen trainen met PyTorch

Van PyTorch naar Accelerator

Grafiek: gebruiksgemak vs. aanpasbaarheid voor PyTorch, Accelerator en Trainer.

Efficiënt AI-modellen trainen met PyTorch

Van PyTorch naar Accelerator

Grafiek: gebruiksgemak vs. aanpasbaarheid voor PyTorch, Accelerator en Trainer.

Efficiënt AI-modellen trainen met PyTorch

Mixed precision met 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()
Efficiënt AI-modellen trainen met PyTorch

Van Accelerator naar Trainer

Grafiek: gebruiksgemak vs. aanpasbaarheid voor PyTorch, Accelerator en Trainer.

Efficiënt AI-modellen trainen met PyTorch

Van Accelerator naar Trainer

Grafiek: gebruiksgemak vs. aanpasbaarheid voor PyTorch, Accelerator en Trainer.

Efficiënt AI-modellen trainen met PyTorch

Mixed precision met 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()
Efficiënt AI-modellen trainen met PyTorch

Laten we oefenen!

Efficiënt AI-modellen trainen met PyTorch

Preparing Video For Download...