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

‫LiteRT Next هي مجموعة جديدة من واجهات برمجة التطبيقات التي تحسِّن من LiteRT، لا سيما من حيث تسريع الأجهزة والأداء لتطبيقات تعلُّم الآلة والذكاء الاصطناعي على الجهاز فقط. واجهات برمجة التطبيقات هي إصدار أوّلي ومتوفّرة بلغتَي Kotlin وC++.

تستند LiteRT Next Compiled Model API إلى واجهة برمجة التطبيقات TensorFlow Lite Interpreter ، وتبسّط عملية تحميل النموذج وتنفيذه لتعلُّم الآلة على الجهاز. توفّر واجهات برمجة التطبيقات الجديدة طريقة جديدة ومبسّطة لاستخدام ميزة تسريع الأجهزة، ما يزيل الحاجة إلى التعامل مع نموذج FlatBuffers وإمكانية التشغيل التفاعلي لوحدة تخزين الإدخال/الإخراج ومفوّضين. لا تتوافق واجهات برمجة تطبيقات LiteRT Next مع واجهات برمجة تطبيقات LiteRT. لاستخدام ميزات LiteRT Next، يُرجى الاطّلاع على دليل البدء.

للحصول على أمثلة على عمليات تنفيذ LiteRT Next، يُرجى الرجوع إلى التطبيقات التجريبية التالية:

البدء السريع

تتضمن عملية إجراء الاستنتاج باستخدام واجهات برمجة التطبيقات LiteRT Next الخطوات الرئيسية التالية:

  1. حمِّل نموذجًا متوافقًا.
  2. تخصيص مخازن مصفوفات الإدخال والإخراج
  3. استدعاء النموذج المجمَّع
  4. اقرأ الاستنتاجات في مخزن مؤقت للإخراج.

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

C++‎

// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto model, Model::CreateFromFile("mymodel.tflite"));
LITERT_ASSIGN_OR_RETURN(auto env, Environment::Create({}));
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
    CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu));

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

// Fill the first input
float input_values[] = { /* your data */ };
input_buffers[0].Write<float>(absl::MakeConstSpan(input_values, /*size*/));

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

// Read the output
std::vector<float> data(output_data_size);
output_buffers[0].Read<float>(absl::MakeSpan(data));

Kotlin

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

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

// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })

// Invoke
model.run(inputBuffers, outputBuffers)

// Read the output
val outputFloatArray = outputBuffers[0].readFloat()

لمزيد من المعلومات، يُرجى الاطّلاع على دليلَي البدء في استخدام Kotlin و البدء في استخدام C++.

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

تتضمّن أداة LiteRT Next المزايا والميزات الرئيسية التالية:

  • واجهة برمجة تطبيقات LiteRT API الجديدة: يمكنك تبسيط عملية التطوير باستخدام ميزة اختيار مسرع مبرمَج وتنفيذ غير متزامن حقيقي ومعالجة فعالة لمخازن الإدخال/الإخراج.
  • أفضل أداء لوحدة معالجة الرسومات: استخدِم تقنية تسريع وحدة معالجة الرسومات المتطوّرة لتطبيق تقنيات تعلُّم الآلة على الجهاز. تتيح إمكانية التشغيل التفاعلي الجديدة لذاكرة التخزين المؤقت ميزة "النسخ بدون ذاكرة تخزين مؤقت" و minimizes latency (تقليل وقت الاستجابة) على مستوى أنواع ذاكرة التخزين المؤقت المختلفة لوحدة معالجة الرسومات.
  • استنتاج الذكاء الاصطناعي التوليدي الفائق: يمكنك تفعيل أبسط عملية دمج مع أفضل أداء لنماذج الذكاء الاصطناعي التوليدي.
  • تسريع وحدة المعالجة العصبية (NPU) الموحّد: يمكنك توفير إمكانية الوصول بسلاسة إلى وحدات المعالجة العصبية من مزوّدي معالجات الرقاقة الرئيسية مع توفير تجربة متّسقة للمطوّرين. تتوفّر ميزة تسريع LiteRT NPU من خلال برنامج استخدام المنتج قبل إطلاقه.

التحسينات الرئيسية

تتضمّن LiteRT Next (واجهة برمجة التطبيقات للنموذج المجمّع) التحسينات الرئيسية التالية على LiteRT (واجهة برمجة التطبيقات لمُفسِّر TensorFlow Lite). للحصول على دليل شامل لإعداد تطبيقك باستخدام LiteRT Next، اطّلِع على دليل البدء.

  • استخدام المسرِّع: يتطلّب تشغيل النماذج على وحدة معالجة الرسومات باستخدام LiteRT إنشاء وظائف برمجية تابعة وطلبات استدعاء للوظائف وتعديلات على الرسم البياني بشكل صريح. باستخدام LiteRT بعد ذلك، ما عليك سوى تحديد المُسرِّع.
  • إمكانية التشغيل التفاعلي لمخازن الأجهزة الأصلية: لا يوفّر LiteRT خيار استخدام المخازن، ويفرض نقل جميع البيانات من خلال ذاكرة وحدة المعالجة المركزية. باستخدام LiteRT Next، يمكنك تمرير وحدات تخزين الأجهزة في Android (AHWB) أو وحدات تخزين OpenCL أو وحدات تخزين OpenGL أو وحدات تخزين أخرى مخصّصة.
  • التنفيذ غير المتزامن: تأتي LiteRT Next مع واجهة برمجة تطبيقات مُعاد تصميمها للتنفيذ غير المتزامن، وتقدّم آلية تنفيذ غير متزامنة حقيقية استنادًا إلى حدود المزامنة. ويؤدي ذلك إلى تسريع أوقات التنفيذ الإجمالية من خلال استخدام أجهزة متنوعة، مثل وحدات المعالجة المركزية ووحدات معالجة الرسومات ووحدات المعالجة العصبية، وذلك للمهام المختلفة.
  • تحميل النموذج: لا تتطلّب أداة LiteRT Next خطوة إنشاء منفصلة عندتحميل نموذج.