أفضل ممارسات تنفيذ برنامج تشغيل NNAPI

توضّح هذه الصفحة أفضل الممارسات لتنفيذ ملفّات تشغيل Neural Networks API (NNAPI) للسماح باعتماد NNAPI على نطاق واسع من قِبل مطوّري التطبيقات.

تقليل وقت بدء التشغيل

وإذا كان السائق يغير القيم التقديرية لنموذج عند الاستخدام الأول، تأكَّد من أنّ برنامج التشغيل يتوافق مع التخزين المؤقت للتجميع، ما يقلل من الوقت المُستغرَق في التجميع عند تشغيل التطبيق. وهذا مهم لأن التطبيقات قد تتجنب استخدام تسريع الأجهزة إذا كانت أوقات بدء التشغيل طويلة جدًا. على سبيل المثال، تتضمن بعض التطبيقات أكثر من 100 ميغابايت من الأوزان، ويعد تحويل هذه الأوزان في كل مرة يتم فيها تشغيل التطبيق أمرًا غير مجدي.

تقليل وقت الاستجابة

لضمان استخدام النماذج لتسريع الأجهزة، من المهم تقليل الحد الأدنى من وقت الاستجابة في برامج التشغيل. تستخدم العديد من التطبيقات نماذج صغيرة يتم تنفيذها مرارًا وتكرارًا، وإذا كان الحد الأدنى لوقت الاستجابة لتنفيذ إحدى عمليات المعالجة مرتفعًا جدًا، مثل بضع مللي ثانية، قد تعمل النماذج على تنفيذ هذه العملية على وحدة المعالجة المركزية التي تتطلّب بدورها سوى مللي ثانية أو اثنين، بدلاً من استخدام تقنيات تسريع الأجهزة. يجب توخّي الحذر من مزامنة سلاسل المحادثات المكلفة.

استخدام مجموعة NN HAL SchedTune

بدءًا من Android 11 أو الإصدارات الأحدث، يتضمّن AOSP مجموعة NN HAL SchedTune مخصّصة تسمح لعمليات NN HAL بين العمليات باستخدام معالجات أساسية كبيرة، على غرار تنفيذ العملية نفسها ضمن top-app cgroup المحدّد مسبقًا. يؤدي استخدام مجموعة SchedTune هذه إلى تقليل أعباء السائقين، خاصةً للنماذج الصغيرة.

لاستخدام مجموعة SheedTune، أضِف السطر التالي إلى الملف init.rc لعملية NN HAL:

writepid /dev/stune/nnapi-hal/tasks