GPU 加速委派搭配 Task 程式庫

使用圖形處理單元 (GPU) 執行機器學習 (ML) 模型,可大幅提升 ML 應用程式的效能和使用者體驗。在 Android 裝置上,您可以使用 委派 和下列其中一種 API,啟用模型的 GPU 加速執行功能

  • Interpreter API - 指南
  • Task 程式庫 API - 本指南
  • 原生 (C/C++) API - 本指南

本頁說明如何使用 Task 程式庫,在 Android 應用程式中為 TensorFlow Lite 模型啟用 GPU 加速功能。如要進一步瞭解 TensorFlow Lite 的 GPU 委派 (包括最佳做法和進階技巧),請參閱 GPU 委派頁面。

搭配 Google Play 服務使用 TensorFlow Lite 的 GPU

TensorFlow Lite Task 程式庫提供了一組特定於任務的 API,用於建構機器學習應用程式。本節說明如何搭配 Google Play 服務,將 GPU 加速器委派與這些 API 和 TensorFlow Lite 搭配使用。

搭配 Google Play 服務的 TensorFlow Lite 是在 Android 上使用 TensorFlow Lite 的建議路徑。如果您的應用程式目標裝置未執行 Google Play,請參閱「搭配 Task 程式庫和獨立版 TensorFlow Lite 使用 GPU」一節。

新增專案依附元件

如要透過 Google Play 服務啟用對 TensorFlow Lite Task 程式庫的 GPU 委派的存取權,請將 com.google.android.gms:play-services-tflite-gpu 新增至應用程式 build.gradle 檔案的依附元件

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

啟用 GPU 加速

接著,使用 TfLiteGpu 類別非同步驗證 GPU 委派是否適用於裝置,並使用 BaseOptions 類別為您的 Task API 模型類別啟用 GPU 委派選項。例如,您可以在 ObjectDetector 中設定 GPU,如下列程式碼範例所示

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

搭配獨立版 TensorFlow Lite 使用 GPU

如果您的應用程式目標裝置未執行 Google Play,您可以將 GPU 委派與應用程式組裝在一起,並搭配獨立版 TensorFlow Lite 使用。

新增專案依附元件

如要透過獨立版 TensorFlow Lite 啟用對 TensorFlow Lite Task 程式庫的 GPU 委派的存取權,請將 org.tensorflow:tensorflow-lite-gpu-delegate-plugin 新增至應用程式 build.gradle 檔案的依附元件

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

啟用 GPU 加速

然後,使用 BaseOptions 類別為您的 Task API 模型類別啟用 GPU 委派選項。例如,您可以在 ObjectDetector 中設定 GPU,如下列程式碼範例所示

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