مرحبًا بك في نظرة عامة على LiteRT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

يتم تمثيل نموذج 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. يمكنك الاطّلاع على مستندات واجهة برمجة التطبيقات التوليدية.

التكميم [مستخدم PRO]

‫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
التشغيل على Micro الأجهزة المضمّنة 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
وحدة معالجة الرسومات WebGPU
OpenCL
WebGPU
Metal
WebGPU WebGPU
OpenCL
WebGPU
NPU MediaTek
Qualcomm
- - - -

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