คอมไพเลอร์ MPE ทำให้การประมวลผล LLM เร็วขึ้น 1.7 เท่าด้วยเทคโนโลยี Megakernel Fusion

ทีมชุมชน BigGo
คอมไพเลอร์ MPE ทำให้การประมวลผล LLM เร็วขึ้น 1.7 เท่าด้วยเทคโนโลยี Megakernel Fusion

ทีมวิจัยจาก CMU , UIUC , Berkeley , NVIDIA และ Tsinghua University ได้พัฒนาระบบคอมไพเลอร์ที่ล้ำสมัยซึ่งช่วยปรับปรุงความเร็วในการประมวลผลโมเดลภาษาขนาดใหญ่อย่างมาก ระบบ Mirage Persistent Kernel ( MPK ) สามารถแปลงการดำเนินงานของ LLM ให้เป็น megakernel เดียวที่ทำงานทั้งหมดบนฮาร์ดแวร์ GPU โดยให้ประสิทธิภาพที่เร็วขึ้น 1.2 ถึง 1.7 เท่าเมื่อเทียบกับระบบที่มีอยู่

นวัตกรรมนี้แก้ไขปัญหาความไม่มีประสิทธิภาพพื้นฐานในระบบ LLM ปัจจุบัน ซึ่งการดำเนินงาน GPU หลายๆ อันที่แยกจากกันสร้างคอขวดและทำให้เสียพลังการประมวลผล แทนที่จะเปิดใช้งาน kernel แยกกันหลายสิบตัวสำหรับงานต่างๆ MPE จะรวมทุกอย่างเข้าเป็นการดำเนินงานต่อเนื่องเดียวที่ไม่เคยหยุดทำงานบน GPU

การเปรียบเทียบประสิทธิภาพบน NVIDIA A100 (40GB)

  • ระบบแบบดั้งเดิม ( vLLM , SGLang ): 51.5ms ต่อโทเค็น
  • ระบบ MPE : 33.1ms ต่อโทเค็น
  • ค่าต่ำสุดตามทฤษฎี: 30ms ต่อโทเค็น
  • การปรับปรุงประสิทธิภาพ: เร็วขึ้น 1.2-1.7 เท่า

การรวม Kernel ที่ปฏิวัติวงการขจัดคอขวดด้านประสิทธิภาพ

ระบบการประมวลผล LLM แบบดั้งเดิมประสบปัญหาข้อบกพร่องที่สำคัญ คือการปฏิบัติต่อการดำเนินงานแต่ละอย่างเป็นงานแยกและสมบูรณ์ที่ต้องเสร็จสิ้นก่อนที่งานถัดไปจะเริ่มต้น สิ่งนี้สร้างช่วงเวลารอคอยที่ไม่จำเป็น ซึ่งฮาร์ดแวร์ GPU ที่มีประสิทธิภาพสูงจะอยู่ในสถานะไม่ได้ใช้งาน ชุมชนได้ตระหนักถึงปัญหานี้มานาน โดยนักพัฒนาสังเกตว่าโซลูชันที่มีอยู่เช่น CUDA Graphs ยังคงรักษาขอบเขตที่แข็งแกร่งระหว่างการดำเนินงาน

แนวทางของ MPE ทำลายอุปสรรคเทียมเหล่านี้โดยการสร้างงานที่มีความละเอียดสูงซึ่งสามารถทับซ้อนและทำงานพร้อมกันได้ ตยอางเช่น ในขณะที่ส่วนหนึ่งของ GPU ประมวลผลการคำนวณเมทริกซ์ ส่วนอื่นสามารถเริ่มงานการสื่อสารทันทีด้วยผลลัพธ์บางส่วน แทนที่จะรอให้การคำนวณทั้งหมดเสร็จสิ้น

ระบบทำงานโดยการวิเคราะห์ความต้องการการคำนวณของ LLM โดยอัตโนมัติและสร้างใหม่เป็นเครือข่ายของงานเล็กๆ ที่เชื่อมต่อกัน งานแต่ละอย่างทำงานบน streaming multiprocessors ของ GPU แต่ละตัว พร้อมด้วยตัวจัดตารางงานในตัวที่ประสานงานเวิร์กโฟลว์โดยไม่ต้องมีการแทรกแซงจากภายนอก

ส่วนประกอบของสถาปัตยกรรมระบบ MPE

  • Workers: ดำเนินการงานบนตัวประมวลผลสตรีมมิ่ง GPU แต่ละตัว (SMs)
  • Schedulers: ทำงานบน warps เดี่ยว สูงสุด 4 ตัวต่อ SM จัดการคิวงาน
  • Task Graph: หน่วยงานละเอียดที่มาแทนที่โมเดล kernel-per-operator แบบเดิม
  • Events: จุดซิงโครไนเซชันระหว่างงานที่ช่วยให้เกิดการทับซ้อนของไปป์ไลน์

ผลงานด้านประสิทธิภาพที่น่าประทับใจทั้งในการตั้งค่า GPU เดี่ยวและหลายตัว

การทดสอบบนฮาร์ดแวร์ NVIDIA A100 แสดงให้เห็นการปรับปรุงที่น่าทึ่งในสถานการณ์จริง สำหรับการกำหนดค่า GPU เดี่ยว MPE ลดเวลาการสร้างต่อโทเค็นจาก 51.5 มิลลิวินาทีเหลือ 33.1 มิลลิวินาที ใกล้เคียงกับความเร็วสูงสุดตามทฤษฎีที่เป็นไปได้ตามข้อจำกัดของแบนด์วิดท์หน่วยความจำ

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

ความคิดเห็นจากชุมชนเป็นไปในทางบวกอย่างท่วมท้น โดยนักพัฒนาที่ทำงานอย่างใกล้ชิดกับระบบที่มีอยู่เช่น vLLM และ SGLang แสดงความตื่นเต้นเกี่ยวกับแนวทางการวิเคราะห์กราฟการพึ่งพา

ความท้าทายทางเทคนิคและการพัฒนาในอนาคต

แม้จะมีผลลัพธ์ที่น่าประทับใจ แต่ MPE ปัจจุบันยังเผชิญกับข้อจำกัดที่ทีมวิจัยกำลังแก้ไขอย่างแข็งขัน ระบบทำงานได้ดีที่สุดกับกราฟการคำนวณแบบคงที่ ทำให้ไม่เข้ากันได้กับโมเดลแบบไดนามิกเช่นสถาปัตยกรรม Mixture-of-Experts ที่เปลี่ยนพฤติกรรมตามเนื้อหาอินพุต

ทีมยังกำลังทำงานเพื่อสนับสนุนสถาปัตยกรรม GPU รุ่นใหม่เช่น NVIDIA Blackwell ซึ่งนำเสนอโอกาสและความท้าทายในการปรับให้เหมาะสมแบบใหม่ นโยบายการจัดตารางงานขั้นสูงสามารถปรับปรุงประสิทธิภาพเพิ่มเติมสำหรับกรณีการใช้งานเฉพาะเช่นแอปพลิเคชันที่ต้องการเวลาตอบสนองต่ำหรือสถานการณ์การแบทช์แบบผสม

โครงการนี้มาจาก CMU Hazy Research ที่ Stanford ก็พูดถึง megakernel เช่นกัน... ดีที่เห็นการแข่งขันในพื้นที่นี้

ภูมิทัศน์การแข่งขันรวมถึงความพยายามแบบขนานจากสถาบันวิจัยอื่นๆ โดยเฉพาะกลุ่ม Hazy Research ของ Stanford แม้ว่าการมุ่งเน้นของ MPE ในการคอมไพล์อัตโนมัติจะทำให้แตกต่างจากแนวทางการปรับให้เหมาะสมแบบแมนนวล

คอมไพเลอร์ MPE เป็นก้าวสำคัญในการทำให้การประมวลผล LLM ประสิทธิภาพสูงเข้าถึงได้สำหรับนักพัฒนาโดยไม่ต้องใช้ความเชี่ยวชาญด้านการเขียนโปรแกรม GPU ลึกซึ้ง ด้วยโค้ด Python เพียงไม่กี่สิบบรรทัด นักพัฒนาสามารถคอมไพล์โมเดลของตนเป็น megakernels ที่ปรับให้เหมาะสมแล้ว ทำให้การเข้าถึงการปรับให้เหมาะสมประสิทธิภาพล้ำสมัยเป็นประชาธิปไตยมากขึ้น ซึ่งก่อนหน้านี้ต้องใช้ความรู้เฉพาะทาง

อ้างอิง: Compiling LLMs into a MegaKernel: A Path to Low-Latency Inference