グラフィックス プロセッシング ユニット (GPU) を使用して機械学習 (ML) モデルを実行すると、ML 対応アプリケーションのパフォーマンスとユーザー エクスペリエンスを大幅に向上させることができます。 Android デバイスでは、デリゲートと次の API のいずれかを使用して、モデルの GPU アクセラレーションによる実行を有効にすることができます。
このページでは、タスク ライブラリを使用して Android アプリで TensorFlow Lite モデルの GPU アクセラレーションを有効にする方法について説明します。ベスト プラクティスや高度なテクニックなど、TensorFlow Lite の GPU デリゲートの詳細については、 GPU デリゲートのページを参照してください。
Google Play サービスで TensorFlow Lite で GPU を使用する
TensorFlow Liteタスク ライブラリは、機械学習アプリケーションを構築するためのタスク固有の API のセットを提供します。このセクションでは、Google Play サービスで TensorFlow Lite を使用して、これらの API で GPU アクセラレータ デリゲートを使用する方法について説明します。
Google Play サービスを使用した TensorFlow Lite は、 Android で TensorFlow Lite を使用するための推奨パスです。アプリケーションが Google Play を実行していないデバイスをターゲットにしている場合は、 「タスク ライブラリを備えた GPU とスタンドアロン TensorFlow Lite」セクションを参照してください。
プロジェクトの依存関係を追加する
Google Play サービスを使用して TensorFlow Lite タスク ライブラリで GPU デリゲートへのアクセスを有効にするには、アプリのbuild.gradle
ファイルの依存関係にcom.google.android.gms:play-services-tflite-gpu
を追加します。
dependencies {
...
implementation 'com.google.android.gms:play-services-tflite-gpu:16.0.0'
}
GPUアクセラレーションを有効にする
次に、 TfLiteGpu
クラスを使用してデバイスで GPU デリゲートが使用できることを非同期的に確認し、 BaseOptions
クラスを使用してタスク API モデル クラスの GPU デリゲート オプションを有効にします。たとえば、次のコード例に示すように、 ObjectDetector
で GPU をセットアップできます。
コトリン
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() });
スタンドアロン TensorFlow Lite で GPU を使用する
アプリケーションが Google Play を実行していないデバイスをターゲットにしている場合は、GPU デリゲートをアプリケーションにバンドルし、TensorFlow Lite のスタンドアロン バージョンで使用することができます。
プロジェクトの依存関係を追加する
TensorFlow Lite のスタンドアロン バージョンを使用して TensorFlow Lite タスク ライブラリで GPU デリゲートへのアクセスを有効にするには、アプリのbuild.gradle
ファイルの依存関係にorg.tensorflow:tensorflow-lite-gpu-delegate-plugin
を追加します。
dependencies {
...
implementation 'org.tensorflow:tensorflow-lite'
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}
GPUアクセラレーションを有効にする
次に、 BaseOptions
クラスを使用してタスク API モデル クラスの GPU デリゲート オプションを有効にします。たとえば、次のコード例に示すように、 ObjectDetector
で GPU をセットアップできます。
コトリン
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);