แนวทางปฏิบัติแนะนำด้านประสิทธิภาพ

อุปกรณ์เคลื่อนที่และอุปกรณ์แบบฝังมีทรัพยากรในการประมวลผลที่จำกัด ดังนั้นจึง ควรทำให้ทรัพยากรของแอปพลิเคชันมีประสิทธิภาพอยู่เสมอ เราได้รวบรวมรายการ แนวทางปฏิบัติแนะนำและกลยุทธ์ที่คุณสามารถใช้ปรับปรุง TensorFlow ได้ ประสิทธิภาพของโมเดล Lite

เลือกโมเดลที่ดีที่สุดสำหรับงาน

คุณจะต้องแลกเปลี่ยนระหว่างความซับซ้อนของโมเดล ทั้งนี้ขึ้นอยู่กับงาน และขนาด หากงานต้องใช้ความแม่นยำสูง คุณอาจต้องใช้ขนาดใหญ่และ โมเดลที่ซับซ้อน สำหรับงานที่ต้องใช้ความแม่นยำน้อยกว่า คุณควรใช้ โมเดลขนาดเล็กลง เนื่องจากไม่เพียงแค่ใช้พื้นที่ในดิสก์และหน่วยความจำ ที่น้อยลง แต่ยังใช้ โดยทั่วไปแล้วจะทำงานเร็วกว่าและประหยัดพลังงานมากกว่า เช่น กราฟด้านล่างแสดง ข้อดีและเวลาในการตอบสนองต่อสำหรับโมเดลการจัดประเภทรูปภาพทั่วไปบางโมเดล

กราฟของขนาดโมเดลเทียบกับ
ความแม่นยำ

กราฟของความแม่นยำเทียบกับเวลาในการตอบสนอง

ตัวอย่างหนึ่งของรูปแบบที่เพิ่มประสิทธิภาพสำหรับอุปกรณ์เคลื่อนที่คือ MobileNets ซึ่งเพิ่มประสิทธิภาพสำหรับอุปกรณ์เคลื่อนที่ แอปพลิเคชันการมองเห็น Kaggle โมเดลจะแสดงรายการอื่นๆ หลายรายการ ซึ่งได้รับการปรับให้เหมาะสำหรับอุปกรณ์เคลื่อนที่และอุปกรณ์แบบฝังโดยเฉพาะ

คุณฝึกโมเดลที่แสดงรายการอีกครั้งในชุดข้อมูลของคุณเองได้โดยใช้การโอน การเรียนรู้

ทำโปรไฟล์โมเดลของคุณ

เมื่อคุณเลือกโมเดลผู้สมัครที่เหมาะกับงานของคุณแล้ว แนวทางปฏิบัติที่ดีในการทำโปรไฟล์และเปรียบเทียบโมเดลของคุณ การเปรียบเทียบแบบ LiteRT เครื่องมือ มีเครื่องมือโปรไฟล์ในตัวที่แสดงสถิติการทำโปรไฟล์ต่อโอเปอเรเตอร์ สิ่งนี้สามารถ ช่วยในการทำความเข้าใจจุดคอขวดด้านประสิทธิภาพ และโอเปอเรเตอร์ที่ควบคุม เวลาที่ใช้ในการคำนวณ

นอกจากนี้ คุณยังสามารถใช้ LiteRT การติดตามเพื่อสร้างโปรไฟล์ โมเดลในแอปพลิเคชัน Android ของคุณโดยใช้การติดตามระบบ Android มาตรฐาน และเพื่อแสดงภาพคำขอของโอเปอเรเตอร์ตามเวลาด้วยการทำโปรไฟล์แบบ GUI และเครื่องมือการประมาณที่กำหนดได้เอง

ทำโปรไฟล์และเพิ่มประสิทธิภาพโอเปอเรเตอร์ในกราฟ

หากมีตัวดำเนินการบางตัวปรากฏบ่อยครั้งในโมเดล และ การสร้างโปรไฟล์ข้อมูล คุณพบว่าโอเปอเรเตอร์ใช้เวลามากที่สุด คุณสามารถ ให้ดูที่การเพิ่มประสิทธิภาพโอเปอเรเตอร์ดังกล่าว สถานการณ์นี้น่าจะเกิดขึ้นได้ยากเมื่อใช้ TensorFlow Lite ได้เพิ่มประสิทธิภาพเวอร์ชันสำหรับโอเปอเรเตอร์ส่วนใหญ่ อย่างไรก็ตาม คุณอาจสามารถ เขียนการดำเนินการที่กำหนดเองในเวอร์ชันที่รวดเร็วขึ้นถ้าคุณรู้ข้อจำกัดที่ โอเปอเรเตอร์ ดูคู่มือโอเปอเรเตอร์ที่กำหนดเอง

เพิ่มประสิทธิภาพโมเดลของคุณ

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

ดูรายละเอียดได้ในเอกสารการเพิ่มประสิทธิภาพโมเดล

ปรับจำนวนชุดข้อความ

LiteRT สนับสนุนเคอร์เนลแบบหลายเธรดสำหรับโอเปอเรเตอร์จำนวนมาก คุณสามารถ เพิ่มจำนวนเทรดและช่วยให้การดำเนินการของโอเปอเรเตอร์เร็วขึ้น เพิ่ม อย่างไรก็ตาม จำนวนเทรดจะทำให้โมเดลของคุณใช้ทรัพยากรมากขึ้น ขั้นสูง

ในบางแอปพลิเคชัน เวลาในการตอบสนองอาจสำคัญกว่าการประหยัดพลังงาน คุณ สามารถเพิ่มจำนวนชุดข้อความได้โดยการตั้งค่าจำนวนล่าม ชุดข้อความ อย่างไรก็ตาม การดำเนินการแบบมัลติเธรดแต่มีค่าใช้จ่ายในเรื่องของประสิทธิภาพที่เพิ่มขึ้น ความแปรปรวนซึ่งขึ้นอยู่กับการดำเนินการอื่นๆ ที่เกิดขึ้นพร้อมกัน นี่คือ โดยเฉพาะสำหรับแอปบนอุปกรณ์เคลื่อนที่ เช่น การทดสอบแยกอาจแสดงเป็น 2 เท่า การเร่งความเร็วเทียบกับเทรดเดี่ยว แต่หากอีกแอปหนึ่งทำงานพร้อมกัน ก็อาจส่งผลให้ประสิทธิภาพ ด้อยกว่าเทรดเดี่ยว

กำจัดสำเนาที่ซ้ำซ้อน

หากแอปพลิเคชันของคุณไม่ได้ออกแบบมาอย่างรอบคอบ อาจมีสำเนาซ้ำซ้อนได้ เมื่อป้อนอินพุตและอ่านเอาต์พุตจากโมเดล อย่าลืม กำจัดสำเนาที่ซ้ำซ้อน ถ้าคุณใช้ API ระดับที่สูงกว่า เช่น Java โปรด อย่าลืมอ่านเอกสารประกอบเกี่ยวกับคำเตือนด้านประสิทธิภาพอย่างละเอียด ตัวอย่างเช่น Java API จะทำงานเร็วขึ้นมากหากใช้ ByteBuffers เป็น อินพุต

สร้างโปรไฟล์แอปพลิเคชันของคุณด้วยเครื่องมือเฉพาะสำหรับแพลตฟอร์ม

เครื่องมือเฉพาะของแพลตฟอร์ม เช่น Android เครื่องมือสร้างโปรไฟล์ และ เครื่องดนตรีช่วยเสริมความมั่งคั่ง ของข้อมูลการสร้างโปรไฟล์ที่สามารถใช้เพื่อแก้ไขข้อบกพร่องของแอป บางครั้ง ข้อบกพร่องด้านประสิทธิภาพอาจไม่มีในโมเดล แต่ในส่วนต่างๆ ของโค้ดของแอปพลิเคชัน โต้ตอบกับโมเดล อย่าลืมทำความคุ้นเคยกับแพลตฟอร์ม เครื่องมือสร้างโปรไฟล์ที่เฉพาะเจาะจงและแนวทางปฏิบัติแนะนำสำหรับแพลตฟอร์มของคุณ

ประเมินว่าโมเดลของคุณได้รับประโยชน์จากการใช้ตัวเร่งฮาร์ดแวร์ที่มีอยู่ในอุปกรณ์หรือไม่

LiteRT ได้เพิ่มวิธีใหม่ๆ ในการเร่งความเร็วโมเดลด้วยฮาร์ดแวร์ที่เร็วขึ้น เช่น GPU, DSP และตัวเร่งประสาท โดยปกติแล้ว Accelerator เหล่านี้ ผ่านโมดูลย่อยของ delegate ที่รับช่วงต่อ ของการดำเนินการล่าม LiteRT สามารถใช้ผู้รับมอบสิทธิ์ในกรณีต่อไปนี้

  • ผู้รับมอบสิทธิ์ GPU ใช้งานได้บน Android และ iOS โดยใช้ OpenGL/OpenCL และ Metal ตามลำดับ หากต้องการทดลองใช้ โปรดดูผู้รับมอบสิทธิ์ GPU
  • คุณสามารถสร้างผู้รับมอบสิทธิ์ของคุณเองได้หากมีสิทธิ์เข้าถึง ฮาร์ดแวร์ที่ไม่ใช่แบบมาตรฐาน โปรดดู LiteRT ผู้แทนเพื่อขอข้อมูลเพิ่มเติม

โปรดทราบว่า Accelerator บางตัวทำงานได้ดีกว่าสำหรับโมเดลประเภทต่างๆ ใช้บ้าง ผู้รับมอบสิทธิ์รองรับเฉพาะโมเดลแบบลอยหรือโมเดลที่เพิ่มประสิทธิภาพด้วยวิธีที่เฉพาะเจาะจง ใช่เลย ในการเปรียบเทียบกับผู้รับมอบสิทธิ์แต่ละคนเพื่อดูว่า กับแอปพลิเคชันของคุณ ตัวอย่างเช่น หากคุณมีแบบจำลองที่เล็กมาก ก็จะไม่คุ้มค่าที่จะมอบสิทธิ์โมเดลให้กับ GPU ในทางกลับกัน Accelerator มีคุณสมบัติ ตัวเลือกที่ดีสำหรับโมเดลขนาดใหญ่ที่มีความเข้มทางคณิตศาสตร์สูง