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

Gradient accumulation ด้วย Accelerator

คุณกำลังเทรนโมเดลภาษาเพื่อทำให้การแปลเข้าใจง่ายขึ้นด้วยการถอดความประโยคที่ซับซ้อน แต่หน่วยความจำ GPU เริ่มไม่เพียงพอ Gradient accumulation ช่วยให้โมเดลเทรนกับแบตช์ขนาดใหญ่ได้อย่างมีประสิทธิภาพ โดยใช้แบตช์ขนาดเล็กที่พอดีกับหน่วยความจำ เนื่องจากต้องการเขียน training loop อย่างชัดเจนเพื่อให้เห็นโครงสร้างทั้งหมด จึงเลือกใช้ Accelerator โดยแบบฝึกหัดนี้รันบน CPU จริง แต่โค้ดจะเหมือนกันทุกประการเมื่อใช้กับ GPU

model, train_dataloader, optimizer และ lr_scheduler ได้กำหนดไว้ล่วงหน้าแล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

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

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนดค่า Accelerator() ให้ใช้ gradient accumulation แบบสองขั้นตอน
  • สร้าง context manager ของ Accelerator เพื่อเปิดใช้งาน gradient accumulation สำหรับ model

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Configure Accelerator
accelerator = ____(____=____)
model, optimizer, train_dataloader, lr_scheduler = accelerator.prepare(model, optimizer, train_dataloader, lr_scheduler)
for batch in train_dataloader:
    # Set up an Accelerator context manager
    with ____.____(____):
        inputs, targets = batch["input_ids"], batch["labels"]
        outputs = model(inputs, labels=targets)
        loss = outputs.loss
        accelerator.backward(loss)
        optimizer.step()
        lr_scheduler.step()
        optimizer.zero_grad()
        print(f"Loss = {loss}")
แก้ไขและรันโค้ด