שיטות מומלצות להטמעת מנהלי NNAPI

בדף הזה מפורטות שיטות מומלצות להטמעה של מנהלי התקנים של Neural Networks API ‏ (NNAPI), כדי לאפשר למפתחי אפליקציות להשתמש ב-NNAPI באופן נרחב.

שמירה על זמני הפעלה קצרים

אם מנהל ההתקן משנה את המשקלים של מודל בשימוש הראשון, צריך לוודא שמנהל ההתקן תומך בשמירת הידור במטמון, מה שמקצר את זמן ההידור כשאפליקציה מופעלת. זה חשוב כי יכול להיות שאפליקציות לא ישתמשו בהאצת חומרה אם זמני ההפעלה ארוכים מדי. לדוגמה, לחלק מהאפליקציות יש משקלים של יותר מ-100 MB, וביצוע השינוי בכל פעם שהאפליקציה מופעלת הוא בזבוז.

הפחתת זמן הטעינה המינימלי

כדי לוודא שהמודלים משתמשים בהאצת חומרה, חשוב לצמצם את זמן האחזור המינימלי במנהלי ההתקנים. הרבה אפליקציות משתמשות במודלים קטנים שמופעלים כמה פעמים, ואם זמן האחזור המינימלי להפעלת עומס עבודה גבוה מדי, למשל כמה אלפיות שנייה, המודלים עשויים להפעיל את עומס העבודה במעבד, שפועל רק אלפית או שתי אלפיות שנייה, במקום להשתמש בהאצות חומרה. צריך להיזהר מסנכרון יקר של שרשורים.

שימוש בקבוצת NN HAL SchedTune

מגרסה Android 11 ואילך, ה-AOSP כולל קבוצת SchedTune ייעודית של NN HAL, שמאפשרת לתהליכי NN HAL בין תהליכים להשתמש בליבות גדולות, בדומה להטמעה של אותו תהליך בתוך top-app cgroup מוגדר מראש. השימוש בקבוצת SchedTune הזו מפחית את התקורה של מנהל ההתקן, במיוחד במודלים קטנים.

כדי להשתמש בקבוצת SchedTune, מוסיפים את השורה הבאה לקובץ init.rc של תהליך NN HAL:

writepid /dev/stune/nnapi-hal/tasks