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

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

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

الميزات الرئيسية في LiteRT

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

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

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

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

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

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

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

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

دعم واسع النطاق لأطر عمل تعلُّم الآلة

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

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

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

    • تطبيق Kotlin لتقسيم الصور: الاستدلال على وحدة المعالجة المركزية أو وحدة معالجة الرسومات أو وحدة المعالجة العصبية
    • تطبيق C++ لتقسيم الصور: الاستدلال على وحدة المعالجة المركزية أو وحدة معالجة الرسومات أو وحدة المعالجة العصبية مع تنفيذ غير متزامن.
  • بالنسبة إلى نماذج الذكاء الاصطناعي التوليدي، اطّلِع على التطبيقات التجريبية التالية:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

‫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
وحدة المعالجة المركزية XNNPACK XNNPACK XNNPACK XNNPACK XNNPACK XNNPACK
وحدة معالجة الرسومات OpenGL
OpenCL
Metal
WebGPU
WebGPU WebGPU
OpenCL
WebGPU
OpenCL
WebGPU
وحدة المعالجة العصبية MediaTek
Qualcomm
- - Qualcomm - Qualcomm

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