Trenowanie w mieszanej precyzji

Efektywne trenowanie modeli AI z PyTorch

Dennis Lee

Data Engineer, Amazon

Trenowanie w mieszanej precyzji przyspiesza obliczenia

 

 

Ikony reprezentujące wydajność pamięci, komunikacji i obliczeń.

Efektywne trenowanie modeli AI z PyTorch

Szybsze obliczenia przy mniejszej precyzji

Diagram pokazujący reprezentację liczb zmiennoprzecinkowych w FP32 i FP16.

Efektywne trenowanie modeli AI z PyTorch

Szybsze obliczenia przy mniejszej precyzji

Diagram pokazujący reprezentację liczb zmiennoprzecinkowych w FP32 i FP16.

Efektywne trenowanie modeli AI z PyTorch

Szybsze obliczenia przy mniejszej precyzji

Diagram pokazujący reprezentację liczb zmiennoprzecinkowych w FP32 i FP16.

Efektywne trenowanie modeli AI z PyTorch

Czym jest trenowanie w mieszanej precyzji?

Diagram ilustrujący kroki trenowania w mieszanej precyzji.

  • Trenowanie w mieszanej precyzji: łączenie obliczeń FP16 i FP32 w celu przyspieszenia trenowania
Efektywne trenowanie modeli AI z PyTorch

Czym jest trenowanie w mieszanej precyzji?

Diagram ilustrujący kroki trenowania w mieszanej precyzji.

  • Trenowanie w mieszanej precyzji: łączenie obliczeń FP16 i FP32 w celu przyspieszenia trenowania
Efektywne trenowanie modeli AI z PyTorch

Czym jest trenowanie w mieszanej precyzji?

Diagram ilustrujący kroki trenowania w mieszanej precyzji.

  • Trenowanie w mieszanej precyzji: łączenie obliczeń FP16 i FP32 w celu przyspieszenia trenowania
  • Niedomiar: liczba zanika do 0, gdy wykracza poza zakres precyzji
Efektywne trenowanie modeli AI z PyTorch

Czym jest trenowanie w mieszanej precyzji?

Diagram ilustrujący kroki trenowania w mieszanej precyzji.

  • Trenowanie w mieszanej precyzji: łączenie obliczeń FP16 i FP32 w celu przyspieszenia trenowania
  • Niedomiar: liczba zanika do 0, gdy wykracza poza zakres precyzji
  • Skalowanie straty zapobiega niedomiarem
Efektywne trenowanie modeli AI z PyTorch

Czym jest trenowanie w mieszanej precyzji?

Diagram ilustrujący kroki trenowania w mieszanej precyzji.

  • Trenowanie w mieszanej precyzji: łączenie obliczeń FP16 i FP32 w celu przyspieszenia trenowania
  • Niedomiar: liczba zanika do 0, gdy wykracza poza zakres precyzji
  • Skalowanie straty zapobiega niedomiarem
Efektywne trenowanie modeli AI z PyTorch

Czym jest trenowanie w mieszanej precyzji?

Diagram ilustrujący kroki trenowania w mieszanej precyzji.

  • Trenowanie w mieszanej precyzji: łączenie obliczeń FP16 i FP32 w celu przyspieszenia trenowania
  • Niedomiar: liczba zanika do 0, gdy wykracza poza zakres precyzji
  • Skalowanie straty zapobiega niedomiarem
Efektywne trenowanie modeli AI z PyTorch

Czym jest trenowanie w mieszanej precyzji?

Diagram ilustrujący kroki trenowania w mieszanej precyzji.

  • Trenowanie w mieszanej precyzji: łączenie obliczeń FP16 i FP32 w celu przyspieszenia trenowania
  • Niedomiar: liczba zanika do 0, gdy wykracza poza zakres precyzji
  • Skalowanie straty zapobiega niedomiarem
Efektywne trenowanie modeli AI z PyTorch

Czym jest trenowanie w mieszanej precyzji?

Diagram ilustrujący kroki trenowania w mieszanej precyzji.

  • Trenowanie w mieszanej precyzji: łączenie obliczeń FP16 i FP32 w celu przyspieszenia trenowania
  • Niedomiar: liczba zanika do 0, gdy wykracza poza zakres precyzji
  • Skalowanie straty zapobiega niedomiarem
Efektywne trenowanie modeli AI z PyTorch

Implementacja w PyTorch

Wykres porównujący łatwość użycia z możliwością dostosowania dla PyTorch, Accelerator i Trainer.

Efektywne trenowanie modeli AI z PyTorch

Trenowanie w mieszanej precyzji z 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()
Efektywne trenowanie modeli AI z PyTorch

Od PyTorch do Accelerator

Wykres porównujący łatwość użycia z możliwością dostosowania dla PyTorch, Accelerator i Trainer.

Efektywne trenowanie modeli AI z PyTorch

Od PyTorch do Accelerator

Wykres porównujący łatwość użycia z możliwością dostosowania dla PyTorch, Accelerator i Trainer.

Efektywne trenowanie modeli AI z PyTorch

Trenowanie w mieszanej precyzji z 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()
Efektywne trenowanie modeli AI z PyTorch

Od Accelerator do Trainer

Wykres porównujący łatwość użycia z możliwością dostosowania dla PyTorch, Accelerator i Trainer.

Efektywne trenowanie modeli AI z PyTorch

Od Accelerator do Trainer

Wykres porównujący łatwość użycia z możliwością dostosowania dla PyTorch, Accelerator i Trainer.

Efektywne trenowanie modeli AI z PyTorch

Trenowanie w mieszanej precyzji z 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()
Efektywne trenowanie modeli AI z PyTorch

Czas na ćwiczenia!

Efektywne trenowanie modeli AI z PyTorch

Preparing Video For Download...