使用圖形處理單元 (GPU) 執行機器學習 (ML) 模型,可大幅提升 ML 應用程式的效能和使用者體驗。在 Android 裝置上,您可以使用 委派 和下列其中一種 API,啟用模型的 GPU 加速執行功能
本頁說明如何使用 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
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() });
搭配獨立版 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);