‫LiteRT Dispatch API לשילוב של NPU בזמן ריצה

מתי כדאי להטמיע את Dispatch API?

LiteRT Dispatch API נדרש כשרוצים לשלב זמן ריצה של מאיץ חומרה ספציפי במסגרת LiteRT. הוא פועל עם הפלאגין Compiler כדי להריץ את תתי-הגרפים המהודרים שנוצרו על ידי הפלאגין Compiler.

ה-API של השליחה הוא קבוצה של פונקציות שהספק מיישם, ו-LiteRT ישתמש בהן כדי לנהל סשן עם זמן הריצה של המאיץ. הפונקציות האלה כוללות סשנים של מכשירים, הפעלה של תת-גרף והעברה של מאגרים בין המארח למכשיר. הטמעות של dispatch API, בשילוב עם תוסף מהדר, מאפשרות ל-LiteRT לנצל באופן מלא את היכולות של מאיץ להסקת מסקנות יעילה.

מידע נוסף על המקרים שבהם כדאי להטמיע את ה-API של שליחת הנתונים (ואת פלאגין הקומפיילר) זמין בדף LiteRT Compiler Plugin.

איך Dispatch API עובד?

‫Dispatch API נמצא בשימוש ב-CompiledModel באמצעות NpuAccelerator. הפעולה הזו יוצרת באופן פנימי DispatchDelegate, וה-DispatchDelegate הזה משתמש ב-Dispatch API כדי להפעיל את ה-NPU שמוטמע בחומרה הפועלת.

סוגי נתונים של Dispatch API

ב-Dispatch API, סוגי הנתונים הבאים משמשים להפעלת מודל ב-NPU.

  • DispatchDeviceContext

    הוא משמש לניהול מאגרי נתונים זמניים שמשמשים להסקת מסקנות ב-NPU.

  • DispatchInvocationContext

    זוהי מבנה הנתונים שמשמש להפעלת המודל. הוא פועל על ידי שיוך של הזיכרון בפועל של הקלט והפלט שנרשמו ב-DispatchDeviceContext ל-DispatchGraph שנוצר.

Dispatch APIs

ההגדרה המלאה של Dispatch API מופיעה בקובץ vendors/c/litert_dispatch.h.