روال‌های مطلوب پیاده‌سازی درایور NNAPI

این صفحه روال‌های مطلوب را برای پیاده‌سازی درایورهای «میانای برنامه‌سازی کاربردی شبکه‌های عصبی» (NNAPI) شرح می‌دهد تا توسعه‌دهندگان نرم‌افزار بتوانند به‌طور گسترده از NNAPI استفاده کنند.

زمان راه‌اندازی را کوتاه نگه دارید

اگر درایور شما وزن‌های مدل را در اولین استفاده تبدیل می‌کند، مطمئن شوید که درایور از حافظه پنهان تلفیق پشتیبانی می‌کند، که زمان استفاده‌شده برای تلفیق را هنگام شروع برنامه کاهش می‌دهد. این کار مهم است زیرا اگر زمان‌های راه‌اندازی خیلی طولانی باشد، برنامه‌ها ممکن است از شتاب سخت‌افزاری استفاده نکنند. برای مثال، برخی‌از برنامه‌ها بیش‌از ۱۰۰ مگابایت وزن دارند و تبدیل کردن آن‌ها هر بار که برنامه راه‌اندازی می‌شود اتلاف منابع است.

کاهش حداقل تأخیر

برای اطمینان از اینکه مدل‌ها از شتاب سخت‌افزاری استفاده می‌کنند، مهم است که حداقل تأخیر در درایورها کاهش یابد. بسیاری از برنامه‌ها از مدل‌های کوچکی استفاده می‌کنند که چندین بار اجرا می‌شوند و اگر حداقل تأخیر برای اجرای حجم کاری بسیار زیاد باشد (مثلاً چند میلی‌ثانیه)، مدل‌ها ممکن است حجم کاری را به‌جای استفاده از شتاب سخت‌افزاری، روی واحد پردازش مرکزی اجرا کنند که فقط یک یا دو میلی‌ثانیه طول می‌کشد. مراقب همگام‌سازی رشته‌های پرهزینه باشید.

استفاده از گروه NN HAL SchedTune

از Android 11 یا بالاتر، AOSP شامل یک گروه اختصاصی NN HAL SchedTune است که به فرایندهای NN HAL بین‌فرایندی اجازه می‌دهد از هسته‌های بزرگ استفاده کنند، مشابه پیاده‌سازی درون‌فرایندی در top-app cgroup ازپیش‌تعریف‌شده. استفاده از این گروه SchedTune سربار را کاهش می‌دهد، به‌ویژه برای مدل‌های کوچک.

برای استفاده از گروه SchedTune، خط زیر را به فایل init.rc فرایند NN HAL اضافه کنید:

writepid /dev/stune/nnapi-hal/tasks