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

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

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

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

Graph of model size vs accuracy

Graph of accuracy vs latency

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

คุณสามารถฝึกโมเดลที่อยู่ในรายการอีกครั้งบนชุดข้อมูลของคุณเองได้โดยใช้การเรียนรู้แบบถ่ายโอน ดูบทแนะนำการเรียนรู้การถ่ายโอนโดยใช้ TensorFlow Lite Model Maker

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

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

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

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

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

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

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

ตรวจสอบ เอกสารการปรับให้เหมาะสมแบบจำลอง เพื่อดูรายละเอียด

ปรับแต่งจำนวนเธรด

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

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

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

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

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

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

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

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

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

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

ต้องการความช่วยเหลือเพิ่มเติม

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