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

อุปกรณ์เคลื่อนที่และอุปกรณ์ฝังตัวมีทรัพยากรในการประมวลผลที่จำกัด ดังนั้นการรักษาทรัพยากรแอปพลิเคชันของคุณให้มีประสิทธิภาพจึงเป็นสิ่งสำคัญ เราได้รวบรวมรายการแนวทางปฏิบัติและกลยุทธ์ที่ดีที่สุดที่คุณสามารถใช้เพื่อปรับปรุงประสิทธิภาพของโมเดล 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 delegate พร้อมใช้งานบน Android และ iOS โดยใช้ OpenGL/OpenCL และ Metal ตามลำดับ หากต้องการทดลองใช้ โปรดดูบทแนะนำและ เอกสารประกอบ การ มอบสิทธิ์ GPU
  • ผู้รับมอบสิทธิ์หกเหลี่ยมพร้อมใช้งานบน Android มันใช้ประโยชน์จาก Qualcomm Hexagon DSP หากมีอยู่ในอุปกรณ์ ดู บทแนะนำผู้รับมอบสิทธิ์หกเหลี่ยม สำหรับข้อมูลเพิ่มเติม
  • คุณสามารถสร้างผู้รับมอบสิทธิ์ของคุณเองได้หากคุณมีสิทธิ์เข้าถึงฮาร์ดแวร์ที่ไม่ได้มาตรฐาน ดู ผู้ได้รับมอบหมาย TensorFlow Lite สำหรับข้อมูลเพิ่มเติม

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

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

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