Huấn luyện độ chính xác hỗn hợp

Huấn luyện Mô hình AI Hiệu quả với PyTorch

Dennis Lee

Data Engineer, Amazon

Huấn luyện độ chính xác hỗn hợp tăng tốc tính toán

 

 

Biểu tượng cho hiệu quả bộ nhớ, truyền thông, và tính toán.

Huấn luyện Mô hình AI Hiệu quả với PyTorch

Tính nhanh hơn với độ chính xác thấp hơn

Sơ đồ cách biểu diễn số thực dấu chấm động ở FP32 và FP16.

Huấn luyện Mô hình AI Hiệu quả với PyTorch

Tính nhanh hơn với độ chính xác thấp hơn

Sơ đồ cách biểu diễn số thực dấu chấm động ở FP32 và FP16.

Huấn luyện Mô hình AI Hiệu quả với PyTorch

Tính nhanh hơn với độ chính xác thấp hơn

Sơ đồ cách biểu diễn số thực dấu chấm động ở FP32 và FP16.

Huấn luyện Mô hình AI Hiệu quả với PyTorch

Huấn luyện độ chính xác hỗn hợp là gì?

Sơ đồ minh họa các bước của huấn luyện độ chính xác hỗn hợp.

  • Huấn luyện độ chính xác hỗn hợp: kết hợp phép tính FP16, FP32 để tăng tốc huấn luyện
Huấn luyện Mô hình AI Hiệu quả với PyTorch

Huấn luyện độ chính xác hỗn hợp là gì?

Sơ đồ minh họa các bước của huấn luyện độ chính xác hỗn hợp.

  • Huấn luyện độ chính xác hỗn hợp: kết hợp phép tính FP16, FP32 để tăng tốc huấn luyện
Huấn luyện Mô hình AI Hiệu quả với PyTorch

Huấn luyện độ chính xác hỗn hợp là gì?

Sơ đồ minh họa các bước của huấn luyện độ chính xác hỗn hợp.

  • Huấn luyện độ chính xác hỗn hợp: kết hợp phép tính FP16, FP32 để tăng tốc huấn luyện
  • Underflow: số bị về 0 do thấp hơn độ chính xác biểu diễn
Huấn luyện Mô hình AI Hiệu quả với PyTorch

Huấn luyện độ chính xác hỗn hợp là gì?

Sơ đồ minh họa các bước của huấn luyện độ chính xác hỗn hợp.

  • Huấn luyện độ chính xác hỗn hợp: kết hợp phép tính FP16, FP32 để tăng tốc huấn luyện
  • Underflow: số bị về 0 do thấp hơn độ chính xác biểu diễn
  • Scale loss để tránh underflow
Huấn luyện Mô hình AI Hiệu quả với PyTorch

Huấn luyện độ chính xác hỗn hợp là gì?

Sơ đồ minh họa các bước của huấn luyện độ chính xác hỗn hợp.

  • Huấn luyện độ chính xác hỗn hợp: kết hợp phép tính FP16, FP32 để tăng tốc huấn luyện
  • Underflow: số bị về 0 do thấp hơn độ chính xác biểu diễn
  • Scale loss để tránh underflow
Huấn luyện Mô hình AI Hiệu quả với PyTorch

Huấn luyện độ chính xác hỗn hợp là gì?

Sơ đồ minh họa các bước của huấn luyện độ chính xác hỗn hợp.

  • Huấn luyện độ chính xác hỗn hợp: kết hợp phép tính FP16, FP32 để tăng tốc huấn luyện
  • Underflow: số bị về 0 do thấp hơn độ chính xác biểu diễn
  • Scale loss để tránh underflow
Huấn luyện Mô hình AI Hiệu quả với PyTorch

Huấn luyện độ chính xác hỗn hợp là gì?

Sơ đồ minh họa các bước của huấn luyện độ chính xác hỗn hợp.

  • Huấn luyện độ chính xác hỗn hợp: kết hợp phép tính FP16, FP32 để tăng tốc huấn luyện
  • Underflow: số bị về 0 do thấp hơn độ chính xác biểu diễn
  • Scale loss để tránh underflow
Huấn luyện Mô hình AI Hiệu quả với PyTorch

Huấn luyện độ chính xác hỗn hợp là gì?

Sơ đồ minh họa các bước của huấn luyện độ chính xác hỗn hợp.

  • Huấn luyện độ chính xác hỗn hợp: kết hợp phép tính FP16, FP32 để tăng tốc huấn luyện
  • Underflow: số bị về 0 do thấp hơn độ chính xác biểu diễn
  • Scale loss để tránh underflow
Huấn luyện Mô hình AI Hiệu quả với PyTorch

Cài đặt bằng PyTorch

Biểu đồ so sánh độ dễ dùng và khả năng tùy biến cho PyTorch, Accelerator, và Trainer.

Huấn luyện Mô hình AI Hiệu quả với PyTorch

Huấn luyện độ chính xác hỗn hợp với 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()
Huấn luyện Mô hình AI Hiệu quả với PyTorch

Từ PyTorch sang Accelerator

Biểu đồ so sánh độ dễ dùng và khả năng tùy biến cho PyTorch, Accelerator, và Trainer.

Huấn luyện Mô hình AI Hiệu quả với PyTorch

Từ PyTorch sang Accelerator

Biểu đồ so sánh độ dễ dùng và khả năng tùy biến cho PyTorch, Accelerator, và Trainer.

Huấn luyện Mô hình AI Hiệu quả với PyTorch

Huấn luyện độ chính xác hỗn hợp với 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()
Huấn luyện Mô hình AI Hiệu quả với PyTorch

Từ Accelerator sang Trainer

Biểu đồ so sánh độ dễ dùng và khả năng tùy biến cho PyTorch, Accelerator, và Trainer.

Huấn luyện Mô hình AI Hiệu quả với PyTorch

Từ Accelerator sang Trainer

Biểu đồ so sánh độ dễ dùng và khả năng tùy biến cho PyTorch, Accelerator, và Trainer.

Huấn luyện Mô hình AI Hiệu quả với PyTorch

Huấn luyện độ chính xác hỗn hợp với 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()
Huấn luyện Mô hình AI Hiệu quả với PyTorch

Ayo berlatih!

Huấn luyện Mô hình AI Hiệu quả với PyTorch

Preparing Video For Download...