نظرة عامة على LiteRT

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

يتضمّن أحدث إصدار من LiteRT 2.x واجهة برمجة التطبيقات CompiledModel، وهي واجهة وقت تشغيل حديثة مصمَّمة لتحقيق أقصى استفادة من تسريع الأجهزة. على الرغم من أنّ واجهة برمجة التطبيقات Interpreter (المعروفة سابقًا باسم TensorFlow Lite) ستظل متاحة لتحقيق التوافق مع الأنظمة القديمة، ننصح المطوّرين الذين يبحثون عن أحدث أداء في تطبيقات الذكاء الاصطناعي على الجهاز فقط باستخدام واجهة برمجة التطبيقات CompiledModel.

الميزات الأساسية في LiteRT

تسهيل عملية التطوير باستخدام LiteRT

اختيار أداة تسريع مبرمَجة مقابل إنشاء تفويض صريح التعامل الفعّال مع مخزن مؤقت للإدخال/الإخراج وتنفيذ غير متزامن لتحقيق أداء أفضل اطّلِع على مستندات الاستدلال على الجهاز فقط.

أفضل أداء لوحدة معالجة الرسومات

‫ML Drift، الذي يتيح الآن استخدام نماذج تعلُّم الآلة والذكاء الاصطناعي التوليدي على واجهات برمجة التطبيقات لوحدات معالجة الرسومات اطّلِع على مستندات تسريع وحدة معالجة الرسومات.

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

يمكنك تسريع نموذجك باستخدام إمكانية الوصول المبسّطة إلى وحدة المعالجة العصبية (NPU) من كبار مورّدي شرائح المعالجة. اطّلِع على مستندات تسريع وحدة المعالجة العصبية.

دعم أفضل للنماذج اللغوية الكبيرة

توفّر LiteRT عملية نشر عالية الأداء لنماذج الذكاء الاصطناعي التوليدي على جميع المنصات، بما في ذلك الأجهزة الجوّالة وأجهزة الكمبيوتر المكتبي والويب. اطّلِع على مستندات نشر الذكاء الاصطناعي التوليدي.

التوافق مع مجموعة كبيرة من أُطر عمل تعلُّم الآلة

تتيح LiteRT تحويلًا مبسطًا من أُطر PyTorch وTensorFlow وJAX إلى تنسيق .tflite أو .litertlm. اطّلِع على مستندات تحويل النماذج.

بدء استخدام واجهة برمجة التطبيقات CompiledModel

  • بالنسبة إلى نماذج تعلُّم الآلة الكلاسيكية، يمكنك الاطّلاع على التطبيقات التجريبية التالية.

    • تطبيق Kotlin لتقسيم الصور: الاستنتاج باستخدام وحدة المعالجة المركزية (CPU) أو وحدة معالجة الرسومات (GPU) أو وحدة المعالجة العصبية (NPU)
    • تطبيق C++ لتقسيم الصور: استنتاج وحدة المعالجة المركزية/وحدة معالجة الرسومات/وحدة المعالجة العصبية باستخدام التنفيذ غير المتزامن
  • بالنسبة إلى نماذج الذكاء الاصطناعي التوليدي، يمكنك الاطّلاع على التطبيقات التجريبية التالية:

سير عمل التطوير

تُجري LiteRT عمليات الاستدلال على الجهاز فقط على Android وiOS والويب وإنترنت الأشياء وعلى أجهزة الكمبيوتر المكتبي والمحمول. بغض النظر عن نوع الجهاز، إليك سير العمل الأكثر شيوعًا، مع روابط تؤدي إلى تعليمات إضافية.

تحديد الحل الأنسب لتحدّي تعلُّم الآلة

توفّر LiteRT للمستخدمين مستوى عالٍ من المرونة وقابلية التخصيص عند حلّ مشاكل تعلُّم الآلة، ما يجعلها مناسبة للمستخدمين الذين يحتاجون إلى نموذج معيّن أو تنفيذ متخصص. قد يفضّل المستخدمون الذين يبحثون عن حلول جاهزة للاستخدام MediaPipe Tasks، التي توفّر حلولاً جاهزة لمهام تعلُّم الآلة الشائعة، مثل رصد العناصر وتصنيف النصوص والاستدلال باستخدام النماذج اللغوية الكبيرة.

الرسم البياني لسير عمل تطوير LiteRT

الحصول على النموذج وإعداده

يتم تمثيل نموذج LiteRT بتنسيق فعال وقابل للنقل يُعرف باسم FlatBuffers، ويستخدم امتداد الملف .tflite.

يمكنك الحصول على نموذج LiteRT بالطرق التالية:

  • الحصول على نموذج مدرَّب مسبقًا: بالنسبة إلى أحمال عمل تعلُّم الآلة الشائعة، مثل تقسيم الصور ورصد الأجسام وما إلى ذلك

    أبسط طريقة هي استخدام نموذج LiteRT بتنسيق .tflite. لا تتطلّب هذه النماذج أي خطوات إضافية للإحالات الناجحة.

    نوع الطراز مصدر النموذج المدرَّب مسبقًا
    التعلم الآلي الكلاسيكي
    (تنسيق .tflite)
    يمكنك الانتقال إلى Kaggle أو HuggingFace
    مثلاً نماذج تقسيم الصور وتطبيق نموذجي
    الذكاء الاصطناعي التوليدي
    (بتنسيق .litertlm)
    صفحة LiteRT على Hugging Face
    مثلاً Gemma Family
  • حوِّل نموذج PyTorch أو TensorFlow أو JAX الذي اخترته إلى نموذج LiteRT إذا اخترت عدم استخدام نموذج مدرَّب مسبقًا. [PRO USER]

    إطار النموذج نماذج أداة التحويل
    Pytorch Hugging Face
    Torchvision
    الرابط
    TensorFlow Kaggle Models
    Hugging Face
    الرابط
    Jax Hugging Face الرابط
  • إنشاء نموذج لغوي كبير (LLM) لتحسينه بشكل أكبر باستخدام Generative API [مستخدم محترف]

    توفّر مكتبة Generative API وحدات إنشاء مدمجة في PyTorch لتأليف نماذج Transformer، مثل Gemma وTinyLlama وغيرها، باستخدام عمليات تجريد متوافقة مع الأجهزة الجوّالة، ما يتيح لنا ضمان التحويل والتنفيذ الفعّال على وقت التشغيل على الأجهزة الجوّالة، LiteRT. يمكنك الاطّلاع على مستندات واجهة برمجة التطبيقات التوليدية.

التحسين [مستخدم محترف]

‫AI Edge Quantizer للمطوّرين المتقدّمين هي أداة لتحديد كمية نماذج LiteRT المحوَّلة. يهدف هذا الخيار إلى تسهيل سعي المستخدمين المتقدّمين لتحقيق الأداء الأمثل على النماذج التي تتطلّب موارد كثيرة (مثل نماذج الذكاء الاصطناعي التوليدي).

يمكنك الاطّلاع على مزيد من التفاصيل من مستندات AI Edge Quantizer.

دمج النموذج في تطبيقك على المنصات الطرفية

تتيح لك LiteRT تشغيل نماذج تعلُّم الآلة بالكامل على الجهاز فقط مع تحقيق أداء عالٍ على جميع المنصات التي تعمل بنظام التشغيل Android وiOS والويب وأجهزة الكمبيوتر وأجهزة إنترنت الأشياء.

استخدِم الأدلة التالية لدمج نموذج LiteRT على المنصة المفضّلة لديك:

المنصّة المتوافقة الأجهزة المعتمدة واجهات برمجة التطبيقات المتوافقة
التشغيل على Android أجهزة جوّال تعمل بنظام التشغيل Android C++/Kotlin
التشغيل على iOS/macOS أجهزة iOS الجوّالة وأجهزة Macbook C++/Swift
التنفيذ على الويب باستخدام LiteRT.js جهاز مزوَّد بمتصفّح Chrome أو Firefox أو Safari JavaScript
التشغيل على Linux محطة عمل Linux أو أجهزة إنترنت الأشياء المستندة إلى Linux C++/Python
التشغيل على Windows أجهزة كمبيوتر محمولة أو محطات عمل تعمل بنظام التشغيل Windows C++/Python
التشغيل على أجهزة إنترنت الأشياء الأجهزة المضمّنة C++‎

تعرض مقتطفات الرموز البرمجية التالية عملية تنفيذ أساسية في Kotlin وC++.

Kotlin

// Load model and initialize runtime
val compiledModel = CompiledModel.create(
    "/path/to/mymodel.tflite",
    CompiledModel.Options(Accelerator.CPU))

// Preallocate input/output buffers
val inputBuffers = compiledModel.createInputBuffers()
val outputBuffers = compiledModel.createOutputBuffers()

// Fill the input buffer
inputBuffers.get(0).writeFloat(input0)
inputBuffers.get(1).writeFloat(input1)

// Invoke
compiledModel.run(inputBuffers, outputBuffers)

// Read the output
val output = outputBuffers.get(0).readFloat()

C++‎

// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto env, GetEnvironment());
LITERT_ASSIGN_OR_RETURN(auto options, GetOptions());
LITERT_ASSIGN_OR_RETURN(
    auto compiled_model,
    CompiledModel::Create(env, "/path/to/mymodel.tflite", options));

// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers,compiled_model.CreateInputBuffers(signature_index));
LITERT_ASSIGN_OR_RETURN(auto output_buffers,compiled_model.CreateOutputBuffers(signature_index));

// Fill the input buffer
LITERT_ABORT_IF_ERROR(input_buffers[0].Write(input0));
LITERT_ABORT_IF_ERROR(input_buffers[1].Write(input1));

// Invoke
LITERT_ABORT_IF_ERROR(compiled_model.Run(signature_index, input_buffers, output_buffers));

// Read the output
LITERT_ABORT_IF_ERROR(output_buffers[0].Read(output0));

اختيار نظام الخلفية

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

Android iOS / macOS الويب Linux Windows إنترنت الأشياء (IoT)
وحدة معالجة مركزية (CPU) XNNPACK XNNPACK XNNPACK XNNPACK XNNPACK XNNPACK
وحدة معالجة الرسومات ‫OpenGL
OpenCL
‫Metal
WebGPU
WebGPU ‫WebGPU
OpenCL
‫WebGPU
OpenCL
WebGPU
NPU MediaTek
Qualcomm
- - Qualcomm - Qualcomm

المستندات الإضافية والدعم