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

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

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

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

กราฟแสดงขนาดโมเดลเทียบกับ
ความถูกต้อง

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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