مكتبة مهام TensorFlow Lite

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

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

  • واجهات برمجة التطبيقات (APIs) النظيفة والمحددة جيدًا والتي يمكن استخدامها من قبل غير خبراء تعلم الآلة
    يمكن إجراء الاستدلال خلال 5 أسطر فقط من التعليمات البرمجية. استخدم واجهات برمجة التطبيقات القوية وسهلة الاستخدام في مكتبة المهام كعناصر أساسية لمساعدتك على تطوير التعلم الآلي بسهولة باستخدام TFLite على الأجهزة المحمولة.

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

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

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

المهام المدعومة

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

تشغيل مكتبة المهام مع المندوبين

يقوم المندوبون بتمكين تسريع الأجهزة لنماذج TensorFlow Lite من خلال الاستفادة من المسرعات الموجودة على الجهاز مثل وحدة معالجة الرسومات و Coral Edge TPU . يوفر استخدامها لعمليات الشبكة العصبية فوائد كبيرة من حيث الكمون وكفاءة الطاقة. على سبيل المثال، يمكن لوحدات معالجة الرسومات توفير ما يصل إلى 5x تسريعًا في زمن الوصول على الأجهزة المحمولة، وتستنتج معالجات Coral Edge TPU أسرع 10x من وحدات المعالجة المركزية لسطح المكتب.

توفر لك مكتبة المهام تكوينًا سهلاً وخيارات احتياطية لإعداد المفوضين واستخدامهم. المسرعات التالية مدعومة الآن في Task API:

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

مثال لاستخدام GPU على Android في Java

الخطوة 1. أضف مكتبة المكونات الإضافية لمفوض GPU إلى ملف 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. قم بتكوين مندوب GPU في خيارات المهمة من خلال BaseOptions . على سبيل المثال، يمكنك إعداد GPU في 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);

مثال لاستخدام GPU على Android في C++

الخطوة 1. اعتمد على البرنامج الإضافي لتفويض GPU في هدف بناء bazel الخاص بك، مثل:

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

تشمل خيارات المندوب الأخرى ما يلي:

"//tensorflow_lite_support/acceleration/configuration:nnapi_plugin", # for NNAPI
"//tensorflow_lite_support/acceleration/configuration:hexagon_plugin", # for Hexagon

الخطوة 2. قم بتكوين مندوب GPU في خيارات المهمة. على سبيل المثال، يمكنك إعداد GPU في 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 في Python

قم بتكوين 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. اعتمد على مكون Coral Edge TPU الإضافي في هدف بناء 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.

جرب الأداة التجريبية Task Library CLI مع أجهزة Coral Edge TPU الخاصة بك. اكتشف المزيد عن نماذج Edge TPU المدربة مسبقًا وإعدادات Edge TPU المتقدمة .

مثال لاستخدام Core ML Delegate في C++

يمكن العثور على مثال كامل في Image Classifier Core ML Delegate Test .

الخطوة 1. اعتمد على المكون الإضافي Core ML Delegation في هدف بناء bazel الخاص بك، مثل:

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

الخطوة 2. قم بتكوين Core ML Delegate في خيارات المهمة. على سبيل المثال، يمكنك إعداد Core ML Delegate في 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();