Делегат ускорения графического процессора с библиотекой задач

Использование графических процессоров (GPU) для запуска моделей машинного обучения (ML) может значительно повысить производительность и удобство работы с приложениями с поддержкой ML. На устройствах Android вы можете включить выполнение ваших моделей с ускорением на графическом процессоре, используя делегат и один из следующих API:

На этой странице описано, как включить ускорение графического процессора для моделей TensorFlow Lite в приложениях Android с помощью библиотеки задач. Дополнительную информацию о делегате графического процессора для TensorFlow Lite, включая лучшие практики и передовые методы, см. на странице делегатов графического процессора .

Используйте графический процессор с TensorFlow Lite с сервисами Google Play.

Библиотеки задач TensorFlow Lite предоставляют набор API-интерфейсов для конкретных задач для создания приложений машинного обучения. В этом разделе описывается, как использовать делегат ускорителя графического процессора с этими API с помощью TensorFlow Lite со службами Google Play.

TensorFlow Lite с сервисами Google Play — рекомендуемый способ использования TensorFlow Lite на Android. Если ваше приложение предназначено для устройств, на которых не работает Google Play, см. раздел «ГП с библиотекой задач и автономный TensorFlow Lite» .

Добавить зависимости проекта

Чтобы включить доступ к делегату графического процессора с помощью библиотек задач 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'
}

Включить ускорение графического процессора

Затем асинхронно убедитесь, что делегат графического процессора доступен для устройства с помощью класса TfLiteGpu , и включите параметр делегата графического процессора для класса модели Task API с помощью класса BaseOptions . Например, вы можете настроить графический процессор в 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.

Добавить зависимости проекта

Чтобы включить доступ к делегату графического процессора с помощью библиотек задач 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'
}

Включить ускорение графического процессора

Затем включите опцию делегирования графического процессора для класса модели Task API с помощью класса BaseOptions . Например, вы можете настроить графический процессор в 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);