รวม SGLang เข้ากับ Spyre ในหนึ่งสัปดาห์ด้วย AI

การรวมเข้าด้วยกันใช้ torch-spyre ซึ่งลงทะเบียน Spyre เป็นอุปกรณ์ของ PyTorch และเชื่อมต่อกับ torch.compile โดยเปิดเผยการรองรับฮาร์ดแวร์ผ่าน PyTorch APIs มาตรฐาน

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

ความสำเร็จนี้มาจาก PyTorch และ torch.compile ที่ให้ชั้นการใช้งานร่วมกัน ซึ่งช่วยให้การผสานรวมถูกแบ่งเป็นงานที่มีขอบเขตชัดเจน ขณะที่ยังคงรักษา scheduler, การจัดการคำขอ และ serving loop เดิมไว้

สำหรับ RMSNorm, SiLU, GeLU, rotary embeddings และ linear layers นั้น ได้เชื่อมต่อการใช้งาน Spyre ที่มีอยู่เข้ากับ operator dispatch ของ SGLang เช่น RadixCache ซึ่งการแชร์ prefix ถูกจัดการใน scheduler ของ SGLang ก่อนถึงตัวเร่งความเร็ว

ในอนาคต คาดว่าจะมีการเพิ่มการรองรับสำหรับ dynamic shapes และการนำ Triton support มาใช้กับ Spyre เพื่อเปิดประตูสู่การปรับปรุง kernel เพิ่มเติม

ศัพท์ที่ควรรู้

  • torch-spyre – เป็นไลบรารีที่ใช้ลงทะเบียน Spyre ให้เป็นอุปกรณ์ของ PyTorch และเชื่อมต่อกับ torch.compile
  • torch.compile – เป็นฟังก์ชันของ PyTorch ที่ช่วยในการคอมไพล์โค้ดเพื่อเพิ่มประสิทธิภาพการทำงานของฮาร์ดแวร์
  • SGLang – เป็นเฟรมเวิร์กที่ถูกรวมเข้ากับ Spyre เพื่อขยายการรองรับแบ็กเอนด์และเพิ่มประสิทธิภาพการให้บริการโมเดล
  • attention backend – ส่วนประกอบที่จัดการการคำนวณความสนใจ (attention) ในโมเดลภาษาขนาดใหญ่
  • RadixCache – เป็นเทคนิคการแคชที่ใช้ในการจัดการหน่วยความจำสำหรับโมเดล โดยเฉพาะการแชร์ prefix

ที่มา: pytorch.org

Leave a Comment