Использование графических процессоров (GPU) для запуска моделей машинного обучения (ML) может значительно повысить производительность и удобство работы пользователей с приложениями с поддержкой ML. На устройствах Android вы можете включить выполнение своих моделей с ускорением на графическом процессоре с помощью делегата и одного из следующих API:
- API интерпретатора — руководство
- API библиотеки задач — это руководство
- Собственный (C/C++) API — это руководство
На этой странице описывается, как включить ускорение графического процессора для моделей TensorFlow Lite в приложениях Android с помощью библиотеки задач. Дополнительные сведения о делегате графического процессора для TensorFlow Lite, включая рекомендации и передовые методы, см. на странице делегатов графического процессора .
Используйте GPU с TensorFlow Lite с сервисами Google Play
Библиотеки задач TensorFlow Lite предоставляют набор API-интерфейсов для конкретных задач для создания приложений машинного обучения. В этом разделе описывается, как использовать делегата ускорителя графического процессора с этими API, используя TensorFlow Lite со службами Google Play.
TensorFlow Lite с сервисами Google Play — рекомендуемый способ использования TensorFlow Lite на Android. Если ваше приложение предназначено для устройств, на которых не работает Google Play, см. раздел GPU с библиотекой задач и автономным 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
. Например, вы можете настроить 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() }
Джава
TaskuseGpuTask = 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() });
Используйте GPU с автономным TensorFlow Lite
Если ваше приложение предназначено для устройств, на которых не работает Google Play, можно связать делегата графического процессора с вашим приложением и использовать его с автономной версией 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
. Например, вы можете настроить 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);