Mixed precision training ด้วย PyTorch พื้นฐาน
ในแบบฝึกหัดนี้ จะใช้ชนิดข้อมูลทศนิยมความแม่นยำต่ำเพื่อเร่งความเร็วในการเทรนโมเดลแปลภาษา ตัวอย่างเช่น ชนิดข้อมูลทศนิยม 16 บิต (float16) มีขนาดเพียงครึ่งหนึ่งของ 32 บิต (float32) ซึ่งช่วยเพิ่มความเร็วในการคำนวณ matrix multiplication และ convolution โดยกระบวนการนี้จำเป็นต้องปรับสเกล gradient และแปลง operation ให้อยู่ในรูปแบบทศนิยม 16 บิต
ออบเจกต์ต่อไปนี้ถูกโหลดไว้ให้แล้ว: dataset, model, dataloader และ optimizer
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเทรน AI Model อย่างมีประสิทธิภาพด้วย PyTorch
คำแนะนำการฝึกหัด
- ก่อนเริ่ม loop ให้กำหนด scaler สำหรับ gradient โดยใช้
torch.amp.GradScaler - ภายใน loop ให้ใช้
torch.autocastเป็น context manager เพื่อแปลง operation ให้อยู่ในรูปแบบข้อมูลทศนิยม 16 บิต - ภายใน loop ให้ปรับสเกลค่า loss และเรียก
.backward()เพื่อสร้าง gradient ที่ผ่านการปรับสเกลแล้ว
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define a scaler for the gradients
scaler = torch.amp.____()
for batch in train_dataloader:
inputs, targets = batch["input_ids"], batch["labels"]
# Casts operations to mixed precision
with torch.____(device_type="cpu", dtype=torch.____):
outputs = model(inputs, labels=targets)
loss = outputs.loss
# Compute scaled gradients
scaler.____(loss).backward()
scaler.step(optimizer)
scaler.update()
optimizer.zero_grad()