نشكرك على متابعة Google I / O. عرض جميع الجلسات عند الطلب مشاهدة عند الطلب

مكتبة مهام TensorFlow Lite

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

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

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

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

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

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

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

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

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

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

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

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

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

الخطوة الأولى. أضف مكتبة البرنامج المساعد لمندوب 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 ++

الخطوة الأولى: اعتمد على المكوِّن الإضافي لمفوض 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();

الخطوة الثالثة. قم بتثبيت حزمة 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 المندوب في C ++

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

الخطوة الأولى: اعتمد على المكوّن الإضافي Core ML في هدف بناء 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();