این صفحه بهترین شیوهها برای پیادهسازی درایورهای API شبکههای عصبی (NNAPI) را شرح میدهد تا امکان پذیرش گسترده NNAPI توسط توسعهدهندگان برنامه فراهم شود.
زمانهای راهاندازی را کوتاه نگه دارید
اگر درایور شما وزنهای یک مدل را در اولین استفاده تغییر میدهد، مطمئن شوید که درایور از ذخیرهسازی کامپایل پشتیبانی میکند، که زمان مورد استفاده برای کامپایل را هنگام شروع برنامه کاهش میدهد. این مهم است زیرا اگر زمان راهاندازی خیلی طولانی باشد، برنامهها ممکن است از استفاده از شتابدهنده سختافزاری خودداری کنند. به عنوان مثال، برخی از برنامهها بیش از ۱۰۰ مگابایت وزن دارند و تغییر آنها در هر بار اجرای برنامه، اتلاف وقت است.
کاهش حداقل تأخیر
برای اطمینان از اینکه مدلها از شتاب سختافزاری استفاده میکنند، کاهش حداقل تأخیر در درایورها بسیار مهم است. بسیاری از برنامهها از مدلهای کوچکی استفاده میکنند که چندین بار اجرا میشوند و اگر حداقل تأخیر برای اجرای یک حجم کاری خیلی زیاد باشد، مثلاً چند میلیثانیه، مدلها ممکن است به جای استفاده از شتاب سختافزاری، حجم کاری را روی CPU اجرا کنند که فقط یک یا دو میلیثانیه طول میکشد. مراقب همگامسازی پرهزینه نخ باشید.
از گروه NN HAL SchedTune استفاده کنید
از اندروید ۱۱ یا بالاتر، AOSP شامل یک گروه اختصاصی NN HAL SchedTune است که به فرآیندهای NN HAL بین پردازشی اجازه میدهد از هستههای بزرگ استفاده کنند، مشابه پیادهسازی همان فرآیند در گروه c از پیش تعریف شده top-app . استفاده از این گروه SchedTune سربار درایور را، به ویژه برای مدلهای کوچک، کاهش میدهد.
برای استفاده از گروه SchedTune، خط زیر را به فایل init.rc مربوط به فرآیند NN HAL اضافه کنید:
writepid /dev/stune/nnapi-hal/tasks