مندوب تسريع GPU مع مكتبة المهام

يمكن أن يؤدي استخدام وحدات معالجة الرسومات (GPUs) لتشغيل نماذج التعلم الآلي (ML) إلى تحسين الأداء وتجربة المستخدم للتطبيقات التي تدعم التعلم الآلي (ML) بشكل كبير. على أجهزة Android، يمكنك تمكين التنفيذ المسرع بواسطة GPU لنماذجك باستخدام مفوض وأحد واجهات برمجة التطبيقات التالية:

  • مترجم API - دليل
  • واجهة برمجة تطبيقات مكتبة المهام - هذا الدليل
  • واجهة برمجة التطبيقات الأصلية (C/C++) - هذا الدليل

توضح هذه الصفحة كيفية تمكين تسريع GPU لنماذج TensorFlow Lite في تطبيقات Android باستخدام مكتبة المهام. لمزيد من المعلومات حول مندوب GPU لـ TensorFlow Lite، بما في ذلك أفضل الممارسات والتقنيات المتقدمة، راجع صفحة مندوبي GPU .

استخدم GPU مع TensorFlow Lite مع خدمات Google Play

توفر مكتبات المهام TensorFlow Lite مجموعة من واجهات برمجة التطبيقات الخاصة بالمهام لبناء تطبيقات التعلم الآلي. يصف هذا القسم كيفية استخدام مندوب تسريع GPU مع واجهات برمجة التطبيقات هذه باستخدام TensorFlow Lite مع خدمات Google Play.

يعد TensorFlow Lite مع خدمات Google Play هو المسار الموصى به لاستخدام TensorFlow Lite على Android. إذا كان تطبيقك يستهدف الأجهزة التي لا تعمل بنظام Google Play، فراجع وحدة معالجة الرسومات مع مكتبة المهام وقسم TensorFlow Lite المستقل .

إضافة تبعيات المشروع

لتمكين الوصول إلى مندوب GPU من خلال مكتبات مهام TensorFlow Lite باستخدام خدمات Google Play، أضف com.google.android.gms:play-services-tflite-gpu إلى تبعيات ملف build.gradle الخاص بتطبيقك:

dependencies {
  ...
  implementation 'com.google.android.gms:play-services-tflite-gpu:16.0.0'
}

تمكين تسريع GPU

بعد ذلك، تحقق بشكل غير متزامن من أن مفوض GPU متاح للجهاز الذي يستخدم فئة TfLiteGpu وقم بتمكين خيار مفوض GPU لفئة نموذج Task API الخاصة بك مع فئة BaseOptions . على سبيل المثال، يمكنك إعداد GPU في ObjectDetector كما هو موضح في أمثلة التعليمات البرمجية التالية:

كوتلين

        val useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context)

        lateinit val optionsTask = useGpuTask.continueWith { task ->
          val baseOptionsBuilder = BaseOptions.builder()
          if (task.result) {
            baseOptionsBuilder.useGpu()
          }
        ObjectDetectorOptions.builder()
                  .setBaseOptions(baseOptionsBuilder.build())
                  .setMaxResults(1)
                  .build()
        }
      

جافا

      Task useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context);

      Task optionsTask = useGpuTask.continueWith({ task ->
        BaseOptions baseOptionsBuilder = BaseOptions.builder();
        if (task.getResult()) {
          baseOptionsBuilder.useGpu();
        }
        return ObjectDetectorOptions.builder()
                .setBaseOptions(baseOptionsBuilder.build())
                .setMaxResults(1)
                .build()
      });
      

استخدم وحدة معالجة الرسومات مع TensorFlow Lite المستقل

إذا كان تطبيقك يستهدف الأجهزة التي لا تعمل على Google Play، فمن الممكن تجميع مندوب GPU في تطبيقك واستخدامه مع الإصدار المستقل من TensorFlow Lite.

إضافة تبعيات المشروع

لتمكين الوصول إلى مندوب GPU من خلال مكتبات المهام TensorFlow Lite باستخدام الإصدار المستقل من TensorFlow Lite، قم بإضافة org.tensorflow:tensorflow-lite-gpu-delegate-plugin إلى تبعيات ملف build.gradle الخاص بتطبيقك:

dependencies {
  ...
  implementation 'org.tensorflow:tensorflow-lite'
  implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}

تمكين تسريع GPU

ثم قم بتمكين خيار تفويض GPU لفئة نموذج Task API الخاصة بك مع فئة BaseOptions . على سبيل المثال، يمكنك إعداد GPU في ObjectDetector كما هو موضح في أمثلة التعليمات البرمجية التالية:

كوتلين

    import org.tensorflow.lite.task.core.BaseOptions
    import org.tensorflow.lite.task.gms.vision.detector.ObjectDetector

    val baseOptions = BaseOptions.builder().useGpu().build()

    val options =
        ObjectDetector.ObjectDetectorOptions.builder()
            .setBaseOptions(baseOptions)
            .setMaxResults(1)
            .build()

    val objectDetector = ObjectDetector.createFromFileAndOptions(
      context, model, options)
      

جافا

    import org.tensorflow.lite.task.core.BaseOptions
    import org.tensorflow.lite.task.gms.vision.detector.ObjectDetector

    BaseOptions baseOptions = BaseOptions.builder().useGpu().build();

    ObjectDetectorOptions options =
        ObjectDetectorOptions.builder()
            .setBaseOptions(baseOptions)
            .setMaxResults(1)
            .build();

    val objectDetector = ObjectDetector.createFromFileAndOptions(
      context, model, options);