Trénink se smíšenou přesností

Efficient AI Model Training with PyTorch

Dennis Lee

Data Engineer, Amazon

Trénink se smíšenou přesností urychluje výpočty

 

 

Ikony představující efektivitu paměti, komunikace a výpočtů.

Efficient AI Model Training with PyTorch

Rychlejší výpočty s nižší přesností

Diagram znázorňující reprezentaci čísel s plovoucí desetinnou čárkou ve formátech FP32 a FP16.

Efficient AI Model Training with PyTorch

Rychlejší výpočty s nižší přesností

Diagram znázorňující reprezentaci čísel s plovoucí desetinnou čárkou ve formátech FP32 a FP16.

Efficient AI Model Training with PyTorch

Rychlejší výpočty s nižší přesností

Diagram znázorňující reprezentaci čísel s plovoucí desetinnou čárkou ve formátech FP32 a FP16.

Efficient AI Model Training with PyTorch

Co je trénink se smíšenou přesností?

Diagram znázorňující kroky tréninku se smíšenou přesností.

  • Trénink se smíšenou přesností: kombinace výpočtů FP16 a FP32 pro zrychlení tréninku
Efficient AI Model Training with PyTorch

Co je trénink se smíšenou přesností?

Diagram znázorňující kroky tréninku se smíšenou přesností.

  • Trénink se smíšenou přesností: kombinace výpočtů FP16 a FP32 pro zrychlení tréninku
Efficient AI Model Training with PyTorch

Co je trénink se smíšenou přesností?

Diagram znázorňující kroky tréninku se smíšenou přesností.

  • Trénink se smíšenou přesností: kombinace výpočtů FP16 a FP32 pro zrychlení tréninku
  • Underflow: číslo se zaokrouhlí na 0, protože leží pod hranicí přesnosti
Efficient AI Model Training with PyTorch

Co je trénink se smíšenou přesností?

Diagram znázorňující kroky tréninku se smíšenou přesností.

  • Trénink se smíšenou přesností: kombinace výpočtů FP16 a FP32 pro zrychlení tréninku
  • Underflow: číslo se zaokrouhlí na 0, protože leží pod hranicí přesnosti
  • Škálování ztrát pro prevenci underflow
Efficient AI Model Training with PyTorch

Co je trénink se smíšenou přesností?

Diagram znázorňující kroky tréninku se smíšenou přesností.

  • Trénink se smíšenou přesností: kombinace výpočtů FP16 a FP32 pro zrychlení tréninku
  • Underflow: číslo se zaokrouhlí na 0, protože leží pod hranicí přesnosti
  • Škálování ztrát pro prevenci underflow
Efficient AI Model Training with PyTorch

Co je trénink se smíšenou přesností?

Diagram znázorňující kroky tréninku se smíšenou přesností.

  • Trénink se smíšenou přesností: kombinace výpočtů FP16 a FP32 pro zrychlení tréninku
  • Underflow: číslo se zaokrouhlí na 0, protože leží pod hranicí přesnosti
  • Škálování ztrát pro prevenci underflow
Efficient AI Model Training with PyTorch

Co je trénink se smíšenou přesností?

Diagram znázorňující kroky tréninku se smíšenou přesností.

  • Trénink se smíšenou přesností: kombinace výpočtů FP16 a FP32 pro zrychlení tréninku
  • Underflow: číslo se zaokrouhlí na 0, protože leží pod hranicí přesnosti
  • Škálování ztrát pro prevenci underflow
Efficient AI Model Training with PyTorch

Co je trénink se smíšenou přesností?

Diagram znázorňující kroky tréninku se smíšenou přesností.

  • Trénink se smíšenou přesností: kombinace výpočtů FP16 a FP32 pro zrychlení tréninku
  • Underflow: číslo se zaokrouhlí na 0, protože leží pod hranicí přesnosti
  • Škálování ztrát pro prevenci underflow
Efficient AI Model Training with PyTorch

Implementace v PyTorch

Graf porovnávající snadnost použití a možnosti přizpůsobení pro PyTorch, Accelerator a Trainer.

Efficient AI Model Training with PyTorch

Trénink se smíšenou přesností pomocí 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

Z PyTorch na Accelerator

Graf porovnávající snadnost použití a možnosti přizpůsobení pro PyTorch, Accelerator a Trainer.

Efficient AI Model Training with PyTorch

Z PyTorch na Accelerator

Graf porovnávající snadnost použití a možnosti přizpůsobení pro PyTorch, Accelerator a Trainer.

Efficient AI Model Training with PyTorch

Trénink se smíšenou přesností pomocí Acceleratoru

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

Z Acceleratoru na Trainer

Graf porovnávající snadnost použití a možnosti přizpůsobení pro PyTorch, Accelerator a Trainer.

Efficient AI Model Training with PyTorch

Z Acceleratoru na Trainer

Graf porovnávající snadnost použití a možnosti přizpůsobení pro PyTorch, Accelerator a Trainer.

Efficient AI Model Training with PyTorch

Trénink se smíšenou přesností pomocí Traineru

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

Pojďme si procvičit!

Efficient AI Model Training with PyTorch

Preparing Video For Download...