Perplexity เผยเบื้องหลัง GPU Embedding Stack: Ivy, Tulip และ ROSE
เจาะลึกสถาปัตยกรรม GPU Embedding Stack ของ Perplexity ที่นำเคอร์เนล LLM มาประยุกต์ใช้ พร้อมระบบ Tulip, ROSE และ LazyTensor

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- Perplexity นำเคอร์เนล prefill และ decode จาก LLM มาใช้กับโมเดล embedding โดยไม่สร้างเอนจิ้นแยก
- ระบบ Tulip จัดการคิวแบบ first-come, first-served เหมาะกับโมเดลขนาดเล็กที่มีต้นทุนจากเลเยอร์หนาแน่น
- ใช้ CUDA graphs ทั้งโมเดลเพื่อลดปัญหาคอขวดจากการรันเคอร์เนลบน CPU
- ระบบ LazyTensor ช่วยให้งาน async ในภาษา Rust ทำงานร่วมกับ CUDA ได้อย่างไร้รอยต่อ
ทีมงาน Perplexity เปิดเผยรายละเอียดสถาปัตยกรรมระบบ embedding บนหน่วยประมวลผลกราฟิก (GPU) ซึ่งปัจจุบันมีความใกล้เคียงกันในฮาร์ดแวร์รุ่นใหม่อย่าง Hopper และ Blackwell โดยจุดได้เปรียบสำคัญอยู่ที่รันไทม์และการจัดการรอบตัวโมเดล เช่น การจัดการ CUDA graph, ระบบติดตามผลแบบอะซิงโครนัส และเส้นทางคำขอด้วยภาษา Rust
งานด้าน embedding ถูกแบ่งออกเป็นสองประเภทหลัก ได้แก่ การทำ batch embedding สำหรับสร้างหรือจัดทำดัชนีเวกเตอร์ฐานข้อมูลใหม่ที่เน้นปริมาณงาน และ online embedding สำหรับการฝังคำขอสั้นๆ ในเวลาค้นหาแบบเรียลไทม์ ขณะที่งานให้คะแนน (scoring) จะอยู่ตรงกลางระหว่างสองรูปแบบนี้
การที่ Perplexity เลือกนำเคอร์เนลจาก LLM stack มาใช้ซ้ำ ถือเป็นกลยุทธ์ทางวิศวกรรมที่ช่วยประหยัดเวลาและทรัพยากรได้อย่างมหาศาล เนื่องจากโมเดล embedding ขนาดเล็กมีพฤติกรรมการประมวลผลที่คล้ายคลึงกับโมเดลภาษาขนาดใหญ่ ทำให้ไม่ต้องลงทุนพัฒนาโครงสร้างพื้นฐานใหม่ตั้งแต่ต้น

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ระบบ Tulip ของ Perplexity เลือกจัดลำดับลำดับชุดข้อมูลแบบมาถึงก่อนให้บริการก่อน (first-come, first-served) เนื่องจากต้นทุนเชิงเส้นของเลเยอร์หนาแน่น (dense layers) มีผลมากกว่าต้นทุนเชิงกำลังสองของความสนใจ (attention) ในโมเดลขนาดเล็ก ทำให้อัตราความหน่วงแปรผันตามจำนวนโทเค็นเป็นหลัก
เพื่อแก้ปัญหาคอขวดที่การสั่งรันเคอร์เนลจากฝั่ง CPU ใช้เวลานานกว่าการประมวลผลบน GPU ในชุดข้อมูลขนาดเล็ก Perplexity จึงสร้าง CUDA graphs สำหรับโมเดล embedding ทั้งหมด พร้อมนำระบบ Lazy capture มาช่วยกระจายเวลาการเริ่มต้นทำงาน และใช้งาน LazyTensor เพื่อให้ทาสก์แบบ async ในภาษา Rust รอชุดข้อมูลชุดที่ N ได้ในขณะที่ CPU กำลังเตรียมข้อมูลชุดที่ N+1
"Perplexity benchmarks against vLLM v0.22.0 in BF16 on real weights and eval-derived inputs, with warmup runs verifying cosine similarity divergence within 0.1%."
MarkTechPost
ในส่วนของระบบ ROSE ทำหน้าที่รองรับแบ็กเอนด์ความสนใจที่หลากหลาย เช่น FlashInfer 2, FlashInfer 3 และ FlashAttention 4 ซึ่งจะมีการเลือกใช้งานตามความเหมาะสมของโมเดลแต่ละประเภท เช่น การใช้ FlashInfer 3 สำหรับโมเดลตระกูล Qwen ในลำดับความยาวมากๆ โดยไม่มีการสร้าง KV cache เพื่อป้องกันการเกิดแพดดิ้ง
ที่มา: MarkTechPost
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น