Навчання зі змішаною точністю

Ефективне тренування моделей ШІ з PyTorch

Dennis Lee

Data Engineer, Amazon

Змішана точність пришвидшує обчислення

 

 

Піктограми ефективності пам’яті, обміну та обчислень.

Ефективне тренування моделей ШІ з PyTorch

Швидші обчислення з меншою точністю

Схема представлення чисел з плаваючою крапкою у FP32 та FP16.

Ефективне тренування моделей ШІ з PyTorch

Швидші обчислення з меншою точністю

Схема представлення чисел з плаваючою крапкою у FP32 та FP16.

Ефективне тренування моделей ШІ з PyTorch

Швидші обчислення з меншою точністю

Схема представлення чисел з плаваючою крапкою у FP32 та FP16.

Ефективне тренування моделей ШІ з PyTorch

Що таке навчання зі змішаною точністю?

Схема, що ілюструє кроки навчання зі змішаною точністю.

  • Змішана точність: поєднання обчислень FP16 і FP32 для пришвидшення навчання
Ефективне тренування моделей ШІ з PyTorch

Що таке навчання зі змішаною точністю?

Схема, що ілюструє кроки навчання зі змішаною точністю.

  • Змішана точність: поєднання обчислень FP16 і FP32 для пришвидшення навчання
Ефективне тренування моделей ШІ з PyTorch

Що таке навчання зі змішаною точністю?

Схема, що ілюструє кроки навчання зі змішаною точністю.

  • Змішана точність: поєднання обчислень FP16 і FP32 для пришвидшення навчання
  • Underflow: число стає 0 через недостатню розрядність
Ефективне тренування моделей ШІ з PyTorch

Що таке навчання зі змішаною точністю?

Схема, що ілюструє кроки навчання зі змішаною точністю.

  • Змішана точність: поєднання обчислень FP16 і FP32 для пришвидшення навчання
  • Underflow: число стає 0 через недостатню розрядність
  • Масштабуйте loss, щоб запобігти underflow
Ефективне тренування моделей ШІ з PyTorch

Що таке навчання зі змішаною точністю?

Схема, що ілюструє кроки навчання зі змішаною точністю.

  • Змішана точність: поєднання обчислень FP16 і FP32 для пришвидшення навчання
  • Underflow: число стає 0 через недостатню розрядність
  • Масштабуйте loss, щоб запобігти underflow
Ефективне тренування моделей ШІ з PyTorch

Що таке навчання зі змішаною точністю?

Схема, що ілюструє кроки навчання зі змішаною точністю.

  • Змішана точність: поєднання обчислень FP16 і FP32 для пришвидшення навчання
  • Underflow: число стає 0 через недостатню розрядність
  • Масштабуйте loss, щоб запобігти underflow
Ефективне тренування моделей ШІ з PyTorch

Що таке навчання зі змішаною точністю?

Схема, що ілюструє кроки навчання зі змішаною точністю.

  • Змішана точність: поєднання обчислень FP16 і FP32 для пришвидшення навчання
  • Underflow: число стає 0 через недостатню розрядність
  • Масштабуйте loss, щоб запобігти underflow
Ефективне тренування моделей ШІ з PyTorch

Що таке навчання зі змішаною точністю?

Схема, що ілюструє кроки навчання зі змішаною точністю.

  • Змішана точність: поєднання обчислень FP16 і FP32 для пришвидшення навчання
  • Underflow: число стає 0 через недостатню розрядність
  • Масштабуйте loss, щоб запобігти underflow
Ефективне тренування моделей ШІ з PyTorch

Реалізація в PyTorch

Діаграма порівняння простоти використання та можливості налаштування для PyTorch, Accelerator і Trainer.

Ефективне тренування моделей ШІ з PyTorch

Змішана точність у 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()
Ефективне тренування моделей ШІ з PyTorch

Від PyTorch до Accelerator

Діаграма порівняння простоти використання та можливості налаштування для PyTorch, Accelerator і Trainer.

Ефективне тренування моделей ШІ з PyTorch

Від PyTorch до Accelerator

Діаграма порівняння простоти використання та можливості налаштування для PyTorch, Accelerator і Trainer.

Ефективне тренування моделей ШІ з PyTorch

Змішана точність з 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()
Ефективне тренування моделей ШІ з PyTorch

Від Accelerator до Trainer

Діаграма порівняння простоти використання та можливості налаштування для PyTorch, Accelerator і Trainer.

Ефективне тренування моделей ШІ з PyTorch

Від Accelerator до Trainer

Діаграма порівняння простоти використання та можливості налаштування для PyTorch, Accelerator і Trainer.

Ефективне тренування моделей ШІ з PyTorch

Змішана точність з 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()
Ефективне тренування моделей ШІ з PyTorch

Passons à la pratique !

Ефективне тренування моделей ШІ з PyTorch

Preparing Video For Download...