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

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

Compiled Model API של LiteRT מטפל בהאצה בשני שלבים:

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

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

סוגים של מאיצים

‫LiteRT מספקת שלושה סוגים של מאיצים: NPU, ‏ GPU ו-CPU.

  • NPU: ממשק מאוחד ל-Qualcomm AI Engine Direct ול-MediaTek NeuroPilot.
  • GPU: קצה עורפי של OpenCL בתוספת קצוות עורפיים של WebGPU ו-Metal באמצעות Compiled Model API.
  • מעבד: הביצוע שעבר אופטימיזציה באמצעות XNNPACK הוא ברירת המחדל ותמיד זמין.

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

האצת GPU

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

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

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

האצה של NPU

‫LiteRT מספק ממשק מאוחד לשימוש ב-NPU בלי שתצטרכו לנווט בנפרד בקומפיילרים, בסביבות זמן ריצה או בתלות בספריות ספציפיות לספקים. הוא תומך ב-NPU של Qualcomm ו-MediaTek גם בנתיבי קומפילציה של AOT וגם בנתיבי קומפילציה במכשיר.

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