จับทั้งความเร็วและ Python: วิธีใช้ CUDA Graph เพื่อรันโค้ด Python ให้เร็วขึ้นสำหรับดีปเลิร์นนิง
(discuss.pytorch.kr)ในช่วงไม่กี่ปีที่ผ่านมา ความเร็วของ 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)
ยังไม่มีความคิดเห็น