การเร่งด้วยฮาร์ดแวร์คือการใช้ฮาร์ดแวร์คอมพิวเตอร์เฉพาะทางเพื่อปรับปรุง ความเร็วในการดำเนินการและประสิทธิภาพของโมเดล AI สำหรับ LiteRT การดำเนินการนี้เกี่ยวข้องกับการใช้หน่วยประมวลผลกราฟิก (GPU) หรือหน่วยประมวลผลประสาท (NPU) สำหรับการอนุมาน AI เป็นหลัก รวมถึงคำสั่งเวกเตอร์ของหน่วยประมวลผลกลาง (CPU) แบบอเนกประสงค์
Compiled Model API ของ LiteRT จะจัดการการเร่งความเร็วใน 2 ขั้นตอน ดังนี้
- การคอมไพล์: เตรียมโมเดลให้ทำงานกับฮาร์ดแวร์ที่เฉพาะเจาะจง
- ส่ง: เรียกใช้การดำเนินการที่เลือกในฮาร์ดแวร์ที่เกี่ยวข้อง
ระยะการคอมไพล์จะแก้ไขโมเดล LiteRT ด้วยอินเทอร์เฟซใหม่ที่ให้ความยืดหยุ่นมากขึ้นผ่านปลั๊กอินคอมไพเลอร์ การคอมไพล์โมเดลจะเกิดขึ้นล่วงหน้า (AOT) ก่อนที่จะมีการเรียกใช้กราฟ และปรับแต่งกราฟที่เฉพาะเจาะจงให้ทำงานบนอุปกรณ์
ประเภทของตัวเร่ง
LiteRT มีตัวเร่ง 3 ประเภท ได้แก่ NPU, GPU และ CPU
- NPU: อินเทอร์เฟซแบบรวมสำหรับ Qualcomm AI Engine Direct และ MediaTek NeuroPilot ในปัจจุบัน
- GPU: ส่วนหลัง OpenCL รวมถึงส่วนหลัง WebGPU และ Metal โดยใช้ Compiled Model API
- CPU: การดำเนินการที่เพิ่มประสิทธิภาพ XNNPACK เป็นค่าเริ่มต้นและพร้อมใช้งานเสมอ
คุณอาจรวมตัวเร่งเหล่านี้เข้าด้วยกันเพื่อให้ได้ประสิทธิภาพที่ดีที่สุดเมื่อ การดำเนินการที่ซับซ้อนบางอย่างไม่พร้อมใช้งานในฮาร์ดแวร์ที่กำหนด เมื่อตัวเร่ง แข่งขันกันในการดำเนินการ LiteRT จะใช้ลำดับความสำคัญต่อไปนี้ NPU GPU และ CPU
การเร่งด้วย GPU
การเร่งความเร็ว GPU ของ LiteRT ช่วยให้คุณสร้างบัฟเฟอร์อินพุตและเอาต์พุตที่เหมาะกับ GPU บรรลุการคัดลอกเป็นศูนย์ด้วยข้อมูลในหน่วยความจำ GPU และเรียกใช้งาน งานแบบอะซิงโครนัสเพื่อเพิ่มความขนานสูงสุด ไม่จำเป็นต้องมีการเชื่อมต่อที่ซับซ้อน เพียงแค่ ระบุ Accelerator ในเวลาคอมไพล์
// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเร่งด้วย GPU ได้ที่การเร่งด้วย GPU ด้วย LiteRT
การเร่งความเร็ว NPU
LiteRT มีอินเทอร์เฟซแบบรวมเพื่อใช้ประโยชน์จาก NPU โดยไม่ต้องบังคับให้คุณ ไปยังคอมไพเลอร์ รันไทม์ หรือการอ้างอิงไลบรารีเฉพาะของผู้ให้บริการแต่ละราย แยกกัน โดยรองรับ NPU ของ Qualcomm และ MediaTek สำหรับทั้งเส้นทางการคอมไพล์ AOT และบนอุปกรณ์
โดยปกติแล้วการใช้ NPU กับ LiteRT จะเกี่ยวข้องกับการแปลงและคอมไพล์โมเดลด้วย Play สำหรับ AI ในอุปกรณ์ (PODAI) และการติดตั้งใช้งานโมเดลด้วย Play AI Pack และโมดูลฟีเจอร์