שיפור מהירות באמצעות חומרה עם LiteRT Next

האצת חומרה היא שימוש בחומרה ממוחשבת ייעודית כדי לשפר את מהירות הביצועים והיעילות של מודל AI. ב-LiteRT, המשמעות היא בעיקר שימוש ביחידות עיבוד גרפי (GPU) או ביחידות עיבוד עצבי (NPU) להסקת AI, וכן בהוראות וקטוריות של מעבדים מרכזיים (CPU) למטרות כלליות.

‏LiteRT תומך בהאצת חומרה באמצעות TFLite Delegates, שמשתלט על חלקים מהתרשים של LiteRT על ידי החלפת פעולות משלו בתרשים. ב-LiteRT Next משופר התהליך הזה על ידי טיפול בשיפור מהירות באמצעות חומרה בשני שלבים:

  1. הדרכה: הכנת מודל להרצה בחומרה ספציפית.
  2. העברה (dispatch): הפעלת הפעולות שנבחרו בחומרה הרלוונטית.

בשלב ה-compilation, מודל LiteRT משתנה לממשק חדש שמציע גמישות רבה יותר באמצעות יישומי פלאגין של מהדרים. הידור המודל מתבצע מראש (AOT), לפני שהגרף מופעל, ומותאמים גרפים ספציפיים להרצה במכשיר.

סוגי המאיצים

ב-LiteRT יש שלושה סוגים של מאיצי ביצועים: NPU, ‏ GPU ו-CPU.

  • האצת ה-NPU תומכת בחומרה ייעודית שמאוחדת בממשק יחיד. תמיכה ב-NPU זמינה דרך תוכנית גישה מוקדמת.
  • האצת ה-GPU תומכת במכשירים עם WebGL ו-OpenCL.
  • האצת המעבד תומכת במגוון מעבדים באמצעות השימוש בספרייה XNNPack. זהו רמת האצה שמוגדרת כברירת מחדל ותמיד זמינה.

אפשר לשלב בין המאיצים האלה כדי להשיג את הביצועים הטובים ביותר האפשריים כשפעולות מורכבות מסוימות לא זמינות בחומרה מסוימת. כשיש תחרות בין המאיצים על ביצוע פעולה, LiteRT משתמש בסדר העדיפויות הבא: NPU,‏ GPU, ‏ CPU.

האצה על ידי GPU

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

כדי להריץ מודלים ב-GPU באמצעות LiteRT, צריך ליצור יצירת גורם מסמך מפורט, קריאות פונקציה ושינוי תרשים באופן מפורש. ב-LiteRT Next, פשוט מציינים את המאיץ:

// Create a compiled model targeting GPU
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
    CompiledModel::Create(env, model, kLiteRtHwAcceleratorGpu));

למידע נוסף על האצת GPU, ראו האצת GPU באמצעות האצה של LiteRT

האצה על ידי NPU

LiteRT Next מספק ממשק מאוחד לשימוש ב-NPUs בלי לאלץ אתכם לנווט בנפרד בין מהדרים, סביבות זמן ריצה או יחסי תלות בספריות ספציפיים לספקים. השימוש ב-LiteRT Next להאצת NPU מאפשר למנוע הרבה סיבוכים ספציפיים ליצרן ולמכשיר, לשפר את הביצועים של הסקת מסקנות בזמן אמת ובמודלים גדולים, ולצמצם את מספר העותקים בזיכרון באמצעות שימוש במאגר חומרה ללא העתקה (zero-copy).

כדי להשתמש ב-NPUs עם LiteRT, צריך להמיר ולקמפל מודל באמצעות Play for On-device AI‏ (PODAI) ולפרוס את המודל באמצעות Play AI Pack ו-Feature Module.