- เป็นไลบรารีสำหรับดำเนินการ FP8 matrix multiplication (GEMM) อย่างมีประสิทธิภาพ และรองรับแนวทาง fine-grained scaling ที่เสนอใน DeepSeek-V3
- รองรับทั้ง GEMM ทั่วไปและ Mix-of-Experts(MoE) grouped GEMM
- พัฒนาด้วย CUDA และระหว่างติดตั้งจะคอมไพล์เคอร์เนลขณะรันไทม์ด้วย โมดูล Just-In-Time (JIT) ขนาดเบา โดยไม่ต้องคอมไพล์แยกเพิ่มเติม
- ขณะนี้รองรับเฉพาะ NVIDIA Hopper tensor cores
- ใช้ dual accumulation (promotion) บน CUDA cores เพื่อชดเชยปัญหาความไม่แม่นยำของการสะสมผลใน FP8 tensor cores
- นำบางแนวคิดจาก CUTLASS และ CuTe มาใช้ แต่ลดการพึ่งพาเทมเพลตที่ซับซ้อนลง ทำให้เป็นดีไซน์เรียบง่ายที่มี โค้ดเคอร์เนลเพียงราว 300 บรรทัด
- เหมาะสำหรับใช้เรียนรู้การคำนวณเมทริกซ์ FP8 และเทคนิคการปรับแต่งประสิทธิภาพบน Hopper
- แม้จะเป็นดีไซน์ขนาดเบา แต่ในเมทริกซ์หลายขนาดก็ให้ ประสิทธิภาพใกล้เคียงหรือดีกว่าไลบรารีที่ปรับแต่งระดับผู้เชี่ยวชาญ
การประเมินประสิทธิภาพ
ประสิทธิภาพ GEMM ทั่วไป (Dense model)
- ประเมินประสิทธิภาพกับเมทริกซ์หลากหลายขนาดใน สภาพแวดล้อมอนุมานของ DeepSeek-V3/R1
- ทดสอบบน NVIDIA H800 GPU (NVCC 12.8)
- ตัวชี้วัดการเพิ่มความเร็ว (Speedup) คำนวณโดยเทียบกับเวอร์ชันปรับแต่งภายในที่อิง CUTLASS 3.6
- สรุปประสิทธิภาพหลัก
- สำหรับเมทริกซ์ขนาดเล็ก เพิ่มความเร็วได้สูงสุด 2.7 เท่า
- สำหรับเมทริกซ์ขนาดใหญ่บางกรณี ยังคงรักษาประสิทธิภาพไว้ที่ราว 1.0~1.2 เท่า
- ปรับทั้งแบนด์วิดท์หน่วยความจำและสมรรถนะการคำนวณให้เหมาะสม จึง ให้ประสิทธิภาพที่เหมาะกับสถาปัตยกรรม Hopper
ประสิทธิภาพ grouped GEMM สำหรับโมเดล MoE
- grouped GEMM แบบ contiguous layout
- จัดกลุ่มตามแกน M โดยคง N และ K ให้เหมือนเดิม
- เพิ่มความเร็วได้สูงสุด 1.2 เท่า และในบางการตั้งค่ายังคงอยู่ที่ระดับ 1.1 เท่า
- grouped GEMM แบบ masked layout
- ออกแบบมาสำหรับกรณีที่เมื่อใช้ CUDA Graph แล้ว CPU ไม่สามารถทราบจำนวนโทเค็นของผู้เชี่ยวชาญแต่ละรายได้
- รับ mask tensor เป็นอินพุตเพื่อ ดำเนินการเฉพาะส่วนที่จำเป็น
- ระดับการปรับปรุงประสิทธิภาพอยู่ที่ 1.1~1.2 เท่า
ยังไม่มีความคิดเห็น