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

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

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

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

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

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

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

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

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

writepid /dev/stune/nnapi-hal/tasks