O uso de unidades de processamento gráfico (GPUs) para executar seus modelos de aprendizado de máquina (ML) pode melhorar drasticamente o desempenho e a experiência do usuário de seus aplicativos habilitados para ML. Em dispositivos Android, você pode habilitar a execução acelerada por GPU de seus modelos usando um delegado e uma das seguintes APIs:
Esta página descreve como ativar a aceleração de GPU para modelos do TensorFlow Lite em aplicativos Android usando a biblioteca de tarefas. Para obter mais informações sobre o delegado de GPU para TensorFlow Lite, incluindo práticas recomendadas e técnicas avançadas, consulte a página de delegados de GPU .
Use GPU com TensorFlow Lite com serviços do Google Play
As bibliotecas de tarefas do TensorFlow Lite fornecem um conjunto de APIs específicas de tarefas para criar aplicativos de aprendizado de máquina. Esta seção descreve como usar o acelerador de GPU delegado com essas APIs usando o TensorFlow Lite com os serviços do Google Play.
O TensorFlow Lite com serviços do Google Play é o caminho recomendado para usar o TensorFlow Lite no Android. Se seu aplicativo for direcionado a dispositivos que não executam o Google Play, consulte a seção GPU com biblioteca de tarefas e TensorFlow Lite independente .
Adicionar dependências do projeto
Para permitir o acesso ao delegado da GPU com as bibliotecas de tarefas do TensorFlow Lite usando os serviços do Google Play, adicione com.google.android.gms:play-services-tflite-gpu
às dependências do arquivo build.gradle
do seu aplicativo:
dependencies {
...
implementation 'com.google.android.gms:play-services-tflite-gpu:16.0.0'
}
Ativar aceleração de GPU
Em seguida, verifique de forma assíncrona se o delegado de GPU está disponível para o dispositivo usando a classe TfLiteGpu
e habilite a opção de delegado de GPU para sua classe de modelo de API de tarefa com a classe BaseOptions
. Por exemplo, você pode configurar a GPU no ObjectDetector
conforme mostrado nos exemplos de código a seguir:
KotlinGenericName
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() }
Java
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() });
Use a GPU com o TensorFlow Lite autônomo
Se seu aplicativo for destinado a dispositivos que não executam o Google Play, é possível agrupar o delegado de GPU ao seu aplicativo e usá-lo com a versão autônoma do TensorFlow Lite.
Adicionar dependências do projeto
Para permitir o acesso ao delegado da GPU com as bibliotecas de tarefas do TensorFlow Lite usando a versão autônoma do TensorFlow Lite, adicione org.tensorflow:tensorflow-lite-gpu-delegate-plugin
às dependências do arquivo build.gradle
do seu aplicativo:
dependencies {
...
implementation 'org.tensorflow:tensorflow-lite'
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}
Ativar aceleração de GPU
Em seguida, habilite a opção de delegado de GPU para sua classe de modelo de API de tarefa com a classe BaseOptions
. Por exemplo, você pode configurar a GPU no ObjectDetector
conforme mostrado nos exemplos de código a seguir:
KotlinGenericName
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)
Java
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);