ในช่วงไม่กี่ปีที่ผ่านมา ความเร็วของ GPU เพิ่มขึ้นอย่างก้าวกระโดด ทำให้แนวทางการปรับแต่งเวิร์กโหลดดีปเลิร์นนิงเปลี่ยนไปด้วย ใน PyTorch เองก็มีการเพิ่มความสามารถด้านการปรับแต่งอย่าง torch.compile() เข้ามา แต่สำหรับบางเวิร์กโหลดรวมถึง LLM การปรับปรุงยังคงอยู่ระหว่างดำเนินการ

(ระหว่างที่รอการปรับปรุงของ torch.compile()) ผมได้พบบทความที่แนะนำ CUDA Graph ซึ่งเป็นวิธีปรับแต่งที่สามารถนำไปใช้ได้ทันทีและได้ลองแปลมาให้อ่านกัน (⚠️หมายเหตุ: ช่วงท้ายบทความมีเนื้อหาโปรโมตบางส่วนเกี่ยวกับ Fireworks.ai บริษัทผู้พัฒนา/ให้บริการแพลตฟอร์มสำหรับ LLM inference ซึ่งเป็นผู้เขียนต้นฉบับ)

บทความนี้แนะนำ CUDA Graph ตามลำดับดังนี้:

  • แนะนำวิธีปรับแต่งแบบเดิมคือการซ้อนทับการทำงานของ CPU/GPU (overlap)

  • ช่วงที่เกิด CPU overhead

  • เทคนิคสำหรับปรับแต่ง CPU overhead และ CUDA Graph

  • ตัวอย่างการนำ CUDA Graph ไปใช้กับโมเดล LLaMA2-7B

  • ประโยชน์ด้านประสิทธิภาพที่ได้จาก CUDA Graph

  • ภาคผนวก: ปัญหาและวิธีแก้เมื่อใช้ torch.compile() ณ เวลานี้ (PyTorch 2.0.1)

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น