Mixed precision training

การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Dennis Lee

Data Engineer, Amazon

Mixed precision training เพิ่มประสิทธิภาพการคำนวณ

 

 

ไอคอนแสดงประสิทธิภาพด้านหน่วยความจำ การสื่อสาร และการคำนวณ

การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

คำนวณได้เร็วขึ้นด้วยความแม่นยำที่ลดลง

แผนภาพแสดงการแทนค่าตัวเลขทศนิยมใน FP32 และ FP16

การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

คำนวณได้เร็วขึ้นด้วยความแม่นยำที่ลดลง

แผนภาพแสดงการแทนค่าตัวเลขทศนิยมใน FP32 และ FP16

การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

คำนวณได้เร็วขึ้นด้วยความแม่นยำที่ลดลง

แผนภาพแสดงการแทนค่าตัวเลขทศนิยมใน FP32 และ FP16

การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Mixed precision training คืออะไร?

แผนภาพแสดงขั้นตอนของ mixed precision training

  • Mixed precision training: ผสม FP16 และ FP32 เพื่อเพิ่มความเร็วในการเทรน
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Mixed precision training คืออะไร?

แผนภาพแสดงขั้นตอนของ mixed precision training

  • Mixed precision training: ผสม FP16 และ FP32 เพื่อเพิ่มความเร็วในการเทรน
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Mixed precision training คืออะไร?

แผนภาพแสดงขั้นตอนของ mixed precision training

  • Mixed precision training: ผสม FP16 และ FP32 เพื่อเพิ่มความเร็วในการเทรน
  • Underflow: ตัวเลขกลายเป็น 0 เพราะต่ำกว่าความแม่นยำที่รองรับ
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Mixed precision training คืออะไร?

แผนภาพแสดงขั้นตอนของ mixed precision training

  • Mixed precision training: ผสม FP16 และ FP32 เพื่อเพิ่มความเร็วในการเทรน
  • Underflow: ตัวเลขกลายเป็น 0 เพราะต่ำกว่าความแม่นยำที่รองรับ
  • ปรับสเกล loss เพื่อป้องกัน underflow
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Mixed precision training คืออะไร?

แผนภาพแสดงขั้นตอนของ mixed precision training

  • Mixed precision training: ผสม FP16 และ FP32 เพื่อเพิ่มความเร็วในการเทรน
  • Underflow: ตัวเลขกลายเป็น 0 เพราะต่ำกว่าความแม่นยำที่รองรับ
  • ปรับสเกล loss เพื่อป้องกัน underflow
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Mixed precision training คืออะไร?

แผนภาพแสดงขั้นตอนของ mixed precision training

  • Mixed precision training: ผสม FP16 และ FP32 เพื่อเพิ่มความเร็วในการเทรน
  • Underflow: ตัวเลขกลายเป็น 0 เพราะต่ำกว่าความแม่นยำที่รองรับ
  • ปรับสเกล loss เพื่อป้องกัน underflow
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Mixed precision training คืออะไร?

แผนภาพแสดงขั้นตอนของ mixed precision training

  • Mixed precision training: ผสม FP16 และ FP32 เพื่อเพิ่มความเร็วในการเทรน
  • Underflow: ตัวเลขกลายเป็น 0 เพราะต่ำกว่าความแม่นยำที่รองรับ
  • ปรับสเกล loss เพื่อป้องกัน underflow
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Mixed precision training คืออะไร?

แผนภาพแสดงขั้นตอนของ mixed precision training

  • Mixed precision training: ผสม FP16 และ FP32 เพื่อเพิ่มความเร็วในการเทรน
  • Underflow: ตัวเลขกลายเป็น 0 เพราะต่ำกว่าความแม่นยำที่รองรับ
  • ปรับสเกล loss เพื่อป้องกัน underflow
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

การใช้งานด้วย PyTorch

แผนภูมิเปรียบเทียบความง่ายในการใช้งานกับความสามารถในการปรับแต่งของ PyTorch, Accelerator และ Trainer

การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Mixed precision training ด้วย 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()
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

จาก PyTorch สู่ Accelerator

แผนภูมิเปรียบเทียบความง่ายในการใช้งานกับความสามารถในการปรับแต่งของ PyTorch, Accelerator และ Trainer

การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

จาก PyTorch สู่ Accelerator

แผนภูมิเปรียบเทียบความง่ายในการใช้งานกับความสามารถในการปรับแต่งของ PyTorch, Accelerator และ Trainer

การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Mixed precision training ด้วย 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()
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

จาก Accelerator สู่ Trainer

แผนภูมิเปรียบเทียบความง่ายในการใช้งานกับความสามารถในการปรับแต่งของ PyTorch, Accelerator และ Trainer

การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

จาก Accelerator สู่ Trainer

แผนภูมิเปรียบเทียบความง่ายในการใช้งานกับความสามารถในการปรับแต่งของ PyTorch, Accelerator และ Trainer

การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Mixed precision training ด้วย 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()
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

มาฝึกกันเลย!

การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch

Preparing Video For Download...