เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

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()
แก้ไขและรันโค้ด