Délégué à l'accélération GPU avec la bibliothèque de tâches

L'utilisation d'unités de traitement graphique (GPU) pour exécuter vos modèles d'apprentissage automatique (ML) peut améliorer considérablement les performances et l'expérience utilisateur de vos applications compatibles ML. Sur les appareils Android, vous pouvez activer l'exécution accélérée par GPU de vos modèles à l'aide d'un délégué et de l'une des API suivantes :

  • API de l'interprète - guide
  • API de la bibliothèque de tâches - ce guide
  • API native (C/C++) - ce guide

Cette page décrit comment activer l'accélération GPU pour les modèles TensorFlow Lite dans les applications Android à l'aide de la bibliothèque de tâches. Pour plus d'informations sur le délégué GPU pour TensorFlow Lite, y compris les bonnes pratiques et les techniques avancées, consultez la page des délégués GPU .

Utiliser le GPU avec TensorFlow Lite avec les services Google Play

Les bibliothèques de tâches TensorFlow Lite fournissent un ensemble d'API spécifiques à des tâches pour créer des applications d'apprentissage automatique. Cette section décrit comment utiliser le délégué de l'accélérateur GPU avec ces API à l'aide de TensorFlow Lite avec les services Google Play.

TensorFlow Lite avec les services Google Play est le chemin recommandé pour utiliser TensorFlow Lite sur Android. Si votre application cible des appareils n'exécutant pas Google Play, consultez la section GPU avec bibliothèque de tâches et TensorFlow Lite autonome .

Ajouter des dépendances de projet

Pour activer l'accès au délégué GPU avec les bibliothèques de tâches TensorFlow Lite à l'aide des services Google Play, ajoutez com.google.android.gms:play-services-tflite-gpu aux dépendances du fichier build.gradle de votre application :

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

Activer l'accélération GPU

Ensuite, vérifiez de manière asynchrone que le délégué GPU est disponible pour l'appareil à l'aide de la classe TfLiteGpu et activez l'option de délégué GPU pour votre classe de modèle d'API de tâches avec la classe BaseOptions . Par exemple, vous pouvez configurer le GPU dans ObjectDetector comme indiqué dans les exemples de code suivants :

Kotlin

        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

      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()
      });
      

Utiliser un GPU avec TensorFlow Lite autonome

Si votre application cible des appareils qui n'exécutent pas Google Play, il est possible de regrouper le délégué GPU à votre application et de l'utiliser avec la version autonome de TensorFlow Lite.

Ajouter des dépendances de projet

Pour activer l'accès au délégué GPU avec les bibliothèques de tâches TensorFlow Lite à l'aide de la version autonome de TensorFlow Lite, ajoutez org.tensorflow:tensorflow-lite-gpu-delegate-plugin aux dépendances du fichier build.gradle de votre application :

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

Activer l'accélération GPU

Activez ensuite l'option de délégation GPU pour votre classe de modèle d'API de tâches avec la classe BaseOptions . Par exemple, vous pouvez configurer le GPU dans ObjectDetector comme indiqué dans les exemples de code suivants :

Kotlin

    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);