อุปกรณ์เคลื่อนที่และอุปกรณ์แบบฝังมีทรัพยากรในการประมวลผลที่จำกัด ดังนั้นจึง ควรทำให้ทรัพยากรของแอปพลิเคชันมีประสิทธิภาพอยู่เสมอ เราได้รวบรวมรายการ แนวทางปฏิบัติแนะนำและกลยุทธ์ที่คุณสามารถใช้ปรับปรุง 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 มีคุณสมบัติ ตัวเลือกที่ดีสำหรับโมเดลขนาดใหญ่ที่มีความเข้มทางคณิตศาสตร์สูง