การเร่งด้วยฮาร์ดแวร์คือการใช้ฮาร์ดแวร์คอมพิ���เตอร์เฉพาะทางเพื่อปรับปรุงความเร็วในการดำเนินการและประสิทธิภาพของโมเดล AI สำหรับ LiteRT การดำเนินการนี้เกี่ยวข้องกับการใช้หน่วยประมวลผลกราฟิก (GPU) หรือหน��วยประมวลผล��������ปร��ส���� (NPU) เป็นหลักสําหรับการอนุมาน AI รวมถึงหน่วยประมวลผลกลาง (CPU) ทั่วไปที่มีคำสั่งเวกเตอร์
LiteRT รองรับการเร่งด้วยฮาร์ดแวร์ผ่านการใช้ TFLite Delegates ซึ่งจะควบคุมส่วนหนึ่งของกราฟ LiteRT โดยแทนที่การดำเนินการของตัวเองในกราฟ LiteRT Next ปรับปรุงกระบวนการนี้โดยจัดการการเร่งฮาร์ดแวร์ผ่าน 2 ขั้นตอน ดังนี้
- การคอมไพล์: เตรียมโมเดลให้ทำงานร่วมกับฮาร์ดแวร์ที่ต้องการ
- ส่ง: เรียกใช้การดำเนินการที่เลือกในฮาร์ดแวร์ที่เกี่ยวข้อง
ระยะการคอมไพล์จะแก้ไขโมเดล LiteRT ด้วยอินเทอร์เฟซใหม่ที่ให้ความยืดหยุ่นมากขึ้นผ่านปลั๊กอินคอมไพเลอร์ การคอมไพล์โมเดลจะเกิดขึ้นล่วงหน้า (AOT) ก่อนที่กราฟจะทำงาน และปรับแต่งกราฟที่เฉพาะเจาะจงให้ทำงานบนอุปกรณ์
ประเภทของ Accelerator
LiteRT มีตัวเร่ง 3 ประเภท ได้แก่ NPU, GPU และ CPU
- การเร่งด้วย NPU รองรับฮาร์ดแวร์เฉพาะทางที่รวมอยู่ในอินเทอร์เฟซเดียว การสนับสนุน NPU มีให้บริการผ่านโปรแกรมทดลองใช้ก่อนเปิดตัว
- การเร่งด้วย GPU รองรับอุปกรณ์ที่เปิดใช้ WebGL และ OpenCL
- การเร่งความเร็วของ CPU รองรับโปรเซสเซอร์ที่หลากหลายผ่านการใช้ไลบรารี XNNPack นี่คือระดับการเร่งเริ่มต้นและพร้อมใช้งานเสมอ
ระบบอาจใช้ตัวเร่งเหล่านี้ร่วมกันเพื่อให้ได้ประสิทธิภาพที่ดีที่สุดเม��่อการดำเนินการที่ซับซ้อนบางอย่างไม่พร้อมใช้งานในฮาร์ดแวร์หนึ่งๆ เมื่อตัวเร่งทำงานแข่งกัน LiteRT จะใช้ลําดับลําดับความสําคัญดังนี้ NPU, GPU, CPU
การเร่งความเร็วด้วย GPU
การใช้การเร่งด้วย GPU ของ LiteRT Next ช่วยให้คุณสร้างบัฟเฟอร์อินพุตและเอาต์พุตที่เหมาะกับ GPU, ใช้การคัดลอกข้อมูลไปยังหน่วยความจำ GPU โดยไม่ต้องคัดลอกข้อมูล และดำเนินการแบบไม่พร้อมกันเพื่อเพิ่มการทำงานแบบขนานให้สูงสุด LiteRT Next ใช้ตัวรับมอบสิทธิ์ GPU ใหม่ที่ปรับปรุงแล้ว ซึ่ง LiteRT ไม่ได้เป็นผู้เสนอ
การใช้โมเดลใน GPU ด้วย LiteRT จำเป็นต้องมีการสร้างผู้รับมอบสิทธิ์ที่ชัดเจน การเรียกใช้ฟังก์ชัน และการแก้ไขกราฟ เมื่อใช้ LiteRT Next เพียงระบุตัวเร่งดังนี้
// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเร่งด้วย GPU ได้ที่การเร่งด้วย GPU ด้วย LiteRT
การเร่งด้วย NPU
LiteRT Next มีอินเทอร์เฟซแบบรวมเพื่อใช้ประโยชน์จาก NPU โดยไม่ต้องบังคับให้คุณไปยังคอมไพเลอร์ รันไทม์ หรือไลบรารีของผู้ให้��ร������รแต่ละรายแยกกัน การใช้ LiteRT Next เพื่อการเร่งความเร็ว NPU จะช่วยหลีกเลี่ยงความซับซ้อนหลายอย่างเฉพาะผู้ให้บริการและอุปกรณ์เฉพาะรุ่น เพิ่มประสิทธิภาพสำหรับการอนุมานแบบเรียลไทม์และแบบโมเดลขนาดใหญ่ และลดการคัดลอกหน่วยความจำด้วยการใช้บัฟเฟอร์ฮาร์ดแวร์แบบไม่คัดลอก
การใช้ NPU กับ LiteRT เกี่ยวข้องกับการเปลี่ยนรูปแบบและการคอมไพล์โมเดลด้วย Play for On-device AI (PODAI) และการใช้โมเดลด้วย Play AI Pack และโมดูลฟีเจอร์