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

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

الحفاظ على أوقات بدء التشغيل قصيرة

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

تقليل الحد الأدنى لوقت الاستجابة

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

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

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

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

writepid /dev/stune/nnapi-hal/tasks