แนวทางปฏิบัติที่ดีที่สุดในการนำไดรเวอร์ NNAPI ไปใช้

หน้านี้อธิบายแนวทางปฏิบัติที่ดีที่สุดในการนำไดรเวอร์ Neural Networks API (NNAPI) มาใช้ เพื่อให้นักพัฒนาแอปสามารถนำ NNAPI ไปใช้ในวงกว้างได้

รักษาเวลาในการเริ่มต้นให้สั้น

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

ลดเวลาแฝงที่น้อยที่สุด

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

ใช้กลุ่ม NN HAL SchedTune

ตั้งแต่ Android 11 ขึ้นไป AOSP จะมีกลุ่ม NN HAL SchedTune เฉพาะที่อนุญาตให้กระบวนการ NN HAL ระหว่างกระบวนการใช้คอร์ขนาดใหญ่ ซึ่งคล้ายกับการใช้งานกระบวนการเดียวกันภายใน cgroup top-app ที่กำหนดไว้ล่วงหน้า การใช้กลุ่ม SchedTune นี้ช่วยลดค่าใช้จ่ายของไดรเวอร์ โดยเฉพาะสำหรับรุ่นขนาดเล็ก

หากต้องการใช้กลุ่ม SchedTune ให้เพิ่มบรรทัดต่อไปนี้ในไฟล์ init.rc ของกระบวนการ NN HAL:

writepid /dev/stune/nnapi-hal/tasks