تسريع الأجهزة باستخدام LiteRT

تسريع الأجهزة هو استخدام أجهزة كمبيوتر متخصصة لتحسين سرعة التنفيذ وكفاءة نموذج الذكاء الاصطناعي. بالنسبة إلى LiteRT، يشمل ذلك بشكل أساسي استخدام وحدات معالجة الرسومات (GPU) أو وحدات المعالجة العصبية (NPU) للاستدلال في الذكاء الاصطناعي، بالإضافة إلى تعليمات المتجهات في وحدات المعالجة المركزية (CPU) للأغراض العامة.

تتعامل واجهة برمجة التطبيقات للنماذج المجمَّعة في LiteRT مع التسريع في خطوتَين:

  1. التجميع: إعداد نموذج للتشغيل باستخدام جهاز معيّن
  2. الإرسال: تنفيذ العمليات المحدّدة على الأجهزة ذات الصلة

تعدّل مرحلة التجميع نموذج LiteRT باستخدام واجهة جديدة توفّر مرونة أكبر من خلال مكوّنات إضافية للمجمّع. تتم عملية تجميع النموذج مسبقًا (AOT)، أي قبل تنفيذ الرسم البياني، ويتم تخصيص رسم بياني معيّن ليتم تنفيذه على الجهاز.

أنواع أدوات تسريع الأداء

توفّر LiteRT ثلاثة أنواع من المسرّعات: وحدة المعالجة العصبية (NPU) ووحدة معالجة الرسومات (GPU) ووحدة المعالجة المركزية (CPU).

  • وحدة المعالجة العصبية (NPU): واجهة موحّدة لكل من Qualcomm AI Engine Direct وMediaTek NeuroPilot اليوم.
  • وحدة معالجة الرسومات: برنامج OpenCL الأساسي بالإضافة إلى برامج WebGPU وMetal الأساسية باستخدام Compiled Model API.
  • وحدة المعالجة المركزية (CPU): التنفيذ المحسَّن باستخدام XNNPACK هو الإعداد التلقائي ومتاح دائمًا.

ويمكن الجمع بين هذه أدوات التسريع للحصول على أفضل أداء ممكن عندما لا تتوفّر بعض العمليات المعقّدة على جهاز معيّن. عندما تتنافس أدوات التسريع على عملية ما، تستخدم LiteRT ترتيب الأولوية التالي: وحدة المعالجة العصبية (NPU)، ووحدة معالجة الرسومات (GPU)، ووحدة المعالجة المركزية (CPU).

تسريع وحدة معالجة الرسومات

باستخدام ميزة تسريع LiteRT لوحدة معالجة الرسومات، يمكنك إنشاء مخازن مؤقتة متوافقة مع وحدة معالجة الرسومات للإدخال والإخراج، وتنفيذ عمليات نسخ بدون الحاجة إلى استخدام الذاكرة مع بياناتك في ذاكرة وحدة معالجة الرسومات، وتنفيذ المهام بشكل غير متزامن لتحقيق أقصى قدر من التوازي. لا يلزم توفير أي رمز برمجي وسيط، بل عليك فقط تحديد أداة تسريع وقت الترجمة في وقت الترجمة:

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

لمزيد من المعلومات عن تسريع وحدة معالجة الرسومات، اطّلِع على تسريع وحدة معالجة الرسومات باستخدام LiteRT.

تسريع وحدة المعالجة العصبية

توفّر LiteRT واجهة موحّدة للاستفادة من وحدات معالجة الشبكة العصبية بدون الحاجة إلى التنقّل بشكل فردي بين برامج التجميع أو أوقات التشغيل أو تبعيات المكتبة الخاصة بمورّد معيّن. وهي تتوافق مع وحدات المعالجة العصبية (NPU) من Qualcomm وMediaTek لكلّ من مسارات تجميع AOT وOn-Device.

يتضمّن استخدام وحدات المعالجة العصبية مع LiteRT عادةً تحويل نموذج وتجميعه باستخدام Play للذكاء الاصطناعي على الأجهزة (PODAI) ونشر النموذج باستخدام حزمة الذكاء الاصطناعي من Play ووحدة الميزات.