مكتبة مهام TensorFlow Lite

تضم مكتبة مهام TensorFlow Lite مجموعة من الأدوات الفعالة وسهلة الاستخدام. مكتبات خاصة بالمهام لمطوّري التطبيقات لإنشاء تجارب تعلُّم الآلة باستخدام TFLite. توفّر واجهات نموذج جاهزة محسَّنة لتعلُّم الآلة الشائعة المهام، مثل تصنيف الصور، والسؤال والجواب، وما إلى ذلك. الواجهات الخاصة بكل مهمة لتحقيق أفضل نتيجة الأداء وسهولة الاستخدام. تعمل "Task Library" (مكتبة المهام) على عدّة أنظمة أساسية ومتوافقة مع Java وC++ وSwift.

ما يمكن توقّعه من "مكتبة المهام"

  • واجهات برمجة تطبيقات واضحة وواضحة يمكن استخدامها من قِبل غير خبراء في تعلُّم الآلة
    يمكن إجراء الاستنتاج ضمن 5 أسطر فقط من الرمز. استخدم الأدوات القوية واجهات برمجة تطبيقات سهلة الاستخدام في مكتبة المهام كوحدات أساسية لمساعدتك في وتطوير تعلُّم الآلة باستخدام TFLite على الأجهزة الجوّالة.

  • معالجة بيانات معقدة ولكنها شائعة
    إتاحة الرؤية المشتركة ومنطق معالجة اللغات الطبيعية للإحالات الناجحة بين البيانات وتنسيق البيانات الذي يطلبه النموذج. لتوفير منطق المعالجة نفسه القابل للمشاركة للتطبيق والاستنتاج.

  • زيادة في الأداء
    لن تستغرق معالجة البيانات أكثر من بضع مللي ثانية، مما يضمن الاستنتاج السريع باستخدام TensorFlow Lite.

  • المرونة والتخصيص
    يمكنك الاستفادة من جميع المزايا التي توفرها البنية الأساسية لمكتبة المهام إنشاء واجهات برمجة تطبيقات استنتاج Android/iOS بسهولة.

المهام المتوافقة

وفي ما يلي قائمة بأنواع المهام المتوافقة. من المتوقع أن تزيد القائمة نواصل إتاحة المزيد والمزيد من حالات الاستخدام.

تشغيل مكتبة المهام باستخدام ميزة "المفوَّضون"

تمكين المفوَّضين من تسريع الأجهزة يمكنك الاستفادة من مسرِّعات الأعمال المتاحة على الجهاز مثل TensorFlow Lite. وحدة معالجة الرسومات ووحدة معالجة الموتّرات من شركة Coral Edge الاستخدام لعمليات الشبكة العصبونية توفر فوائد هائلة من حيث وقت الاستجابة وكفاءة استهلاك الطاقة. على سبيل المثال، يمكن أن توفر وحدات معالجة الرسومات ما يصل إلى 5 أضعاف تسريع وقت الاستجابة على الأجهزة الجوّالة، واستنتاج وحدات معالجة الموتّرات في Coral Edge 10 مرّات أسرع من وحدات المعالجة المركزية (CPU) للكمبيوتر المكتبي.

توفّر "مكتبة المهام" إعدادات سهلة وخيارات الرجوع إلى نسخة سابقة لإعدادها. واستخدام المفوَّضين. أصبحت المسرّعات التالية متاحة الآن في Task API:

سيتوفّر قريبًا دعم تسريع المهام في Task Swift أو Web API.

مثال على استخدام وحدة معالجة الرسومات على Android في لغة Java

الخطوة 1: إضافة مكتبة المكوّنات الإضافية المفوَّضة في وحدة معالجة الرسومات إلى build.gradle في وحدتك الملف:

dependencies {
    // Import Task Library dependency for vision, text, or audio.

    // Import the GPU delegate plugin Library for GPU inference
    implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}

الخطوة 2: اضبط تفويض وحدة معالجة الرسومات في خيارات المهمة من خلال BaseOptions. على سبيل المثال، يمكنك إعداد وحدة معالجة الرسومات في "ObjectDetector" على النحو التالي:

// Turn on GPU delegation.
BaseOptions baseOptions = BaseOptions.builder().useGpu().build();
// Configure other options in ObjectDetector
ObjectDetectorOptions options =
    ObjectDetectorOptions.builder()
        .setBaseOptions(baseOptions)
        .setMaxResults(1)
        .build();

// Create ObjectDetector from options.
ObjectDetector objectDetector =
    ObjectDetector.createFromFileAndOptions(context, modelFile, options);

// Run inference
List<Detection> results = objectDetector.detect(image);

مثال على استخدام وحدة معالجة الرسومات على نظام التشغيل Android في لغة C++

الخطوة 1: تعتمد على المكوِّن الإضافي المفوَّض بوحدة معالجة الرسومات في هدف إصدار Bazel، مثل:

deps = [
  "//tensorflow_lite_support/acceleration/configuration:gpu_plugin", # for GPU
]

الخطوة 2: اضبِط إعدادات تفويض وحدة معالجة الرسومات في خيارات المهمة. على سبيل المثال، يمكنك إعداد وحدة معالجة الرسومات في BertQuestionAnswerer على النحو التالي:

// Initialization
BertQuestionAnswererOptions options;
// Load the TFLite model.
auto base_options = options.mutable_base_options();
base_options->mutable_model_file()->set_file_name(model_file);
// Turn on GPU delegation.
auto tflite_settings = base_options->mutable_compute_settings()->mutable_tflite_settings();
tflite_settings->set_delegate(Delegate::GPU);
// (optional) Turn on automatical fallback to TFLite CPU path on delegation errors.
tflite_settings->mutable_fallback_settings()->set_allow_automatic_fallback_on_execution_error(true);

// Create QuestionAnswerer from options.
std::unique_ptr<QuestionAnswerer> answerer = BertQuestionAnswerer::CreateFromOptions(options).value();

// Run inference on GPU.
std::vector<QaAnswer> results = answerer->Answer(context_of_question, question_to_ask);

استكشاف إعدادات مسرِّعة أكثر تقدمًا هنا.

مثال على استخدام Coral Edge TPU في بايثون

عليك ضبط Coral Edge TPU في الخيارات الأساسية الخاصة بالمهمة. على سبيل المثال، يمكنك إعداد Coral Edge TPU في ImageClassifier على النحو التالي:

# Imports
from tflite_support.task import vision
from tflite_support.task import core

# Initialize options and turn on Coral Edge TPU delegation.
base_options = core.BaseOptions(file_name=model_path, use_coral=True)
options = vision.ImageClassifierOptions(base_options=base_options)

# Create ImageClassifier from options.
classifier = vision.ImageClassifier.create_from_options(options)

# Run inference on Coral Edge TPU.
image = vision.TensorImage.create_from_file(image_path)
classification_result = classifier.classify(image)

مثال على استخدام Coral Edge TPU في C++

الخطوة 1: بالاعتماد على المكوّن الإضافي المفوَّض بوحدة معالجة الموتّرات (TPU) الخاص بـ Coral Edge في هدف إصدار Bazel، مثل:

deps = [
  "//tensorflow_lite_support/acceleration/configuration:edgetpu_coral_plugin", # for Coral Edge TPU
]

الخطوة 2: اضبط Coral Edge TPU في خيارات المهمة. على سبيل المثال، يمكنك تعيين وحدة معالجة الموتّرات Coral Edge TPU في ImageClassifier على النحو التالي:

// Initialization
ImageClassifierOptions options;
// Load the TFLite model.
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
// Turn on Coral Edge TPU delegation.
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->set_delegate(Delegate::EDGETPU_CORAL);
// Create ImageClassifier from options.
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference on Coral Edge TPU.
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();

الخطوة 3: ثبِّت حزمة libusb-1.0-0-dev على النحو التالي. إذا كانت قيد التشغيل بالفعل مثبت، انتقل إلى الخطوة التالية.

# On the Linux
sudo apt-get install libusb-1.0-0-dev

# On the macOS
port install libusb
# or
brew install libusb

الخطوة 4. جمِّع الإعدادات التالية في أمر bazel:

# On the Linux
--define darwinn_portable=1 --linkopt=-lusb-1.0

# On the macOS, add '--linkopt=-lusb-1.0 --linkopt=-L/opt/local/lib/' if you are
# using MacPorts or '--linkopt=-lusb-1.0 --linkopt=-L/opt/homebrew/lib' if you
# are using Homebrew.
--define darwinn_portable=1 --linkopt=-L/opt/local/lib/ --linkopt=-lusb-1.0

# Windows is not supported yet.

تجربة العرض التوضيحي لواجهة سطر الأوامر لمكتبة المهام الأداة مع أجهزة Coral Edge TPU مزيد من المعلومات حول وحدة معالجة الموتّرات في متصفّح Edge المدرَّبة مسبقًا النماذج ووحدة معالجة الموتّرات المتقدمة Edge TPU الإعدادات.

مثال على استخدام "تفويض تعلُّم الآلة الأساسي" في لغة C++

يمكن الاطّلاع على مثال كامل على صفحة Image Classifier Core ML Delegate اختبار:

الخطوة 1: تعتمد على المكوِّن الإضافي المفوَّض لتكنولوجيا تعلُّم الآلة في Core ML في هدف إصدار Bazel، مثل كـ:

deps = [
  "//tensorflow_lite_support/acceleration/configuration:coreml_plugin", # for Core ML Delegate
]

الخطوة 2: اضبط Core ML مفوَّض في خيارات المهام. على سبيل المثال، يمكنك تعيين Core ML مفوَّض في ImageClassifier على النحو التالي:

// Initialization
ImageClassifierOptions options;
// Load the TFLite model.
options.mutable_base_options()->mutable_model_file()->set_file_name(model_file);
// Turn on Core ML delegation.
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->set_delegate(::tflite::proto::Delegate::CORE_ML);
// Set DEVICES_ALL to enable Core ML delegation on any device (in contrast to
// DEVICES_WITH_NEURAL_ENGINE which creates Core ML delegate only on devices
// with Apple Neural Engine).
options.mutable_base_options()->mutable_compute_settings()->mutable_tflite_settings()->mutable_coreml_settings()->set_enabled_devices(::tflite::proto::CoreMLSettings::DEVICES_ALL);
// Create ImageClassifier from options.
std::unique_ptr<ImageClassifier> image_classifier = ImageClassifier::CreateFromOptions(options).value();

// Run inference on Core ML.
const ClassificationResult result = image_classifier->Classify(*frame_buffer).value();