Używanie jednostek przetwarzania grafiki (GPU) do uruchamiania modeli uczenia maszynowego (ML) może radykalnie poprawić wydajność i komfort korzystania z aplikacji obsługujących technologię ML. Na urządzeniach z systemem Android możesz włączyć wykonywanie modeli przyspieszane przez procesor graficzny, korzystając z delegata i jednego z następujących interfejsów API:
- Interpreter API - przewodnik
- API biblioteki zadań – ten przewodnik
- Natywne API (C/C++) – ten przewodnik
Na tej stronie opisano, jak włączyć akcelerację GPU dla modeli TensorFlow Lite w aplikacjach na Androida przy użyciu biblioteki zadań. Aby uzyskać więcej informacji na temat delegata procesora GPU dla TensorFlow Lite, w tym najlepszych praktyk i zaawansowanych technik, zobacz stronę delegatów procesora GPU .
Używaj procesora graficznego z TensorFlow Lite z usługami Google Play
Biblioteki zadań TensorFlow Lite zapewniają zestaw interfejsów API specyficznych dla zadań do tworzenia aplikacji do uczenia maszynowego. W tej sekcji opisano, jak używać delegata akceleratora GPU z tymi interfejsami API przy użyciu TensorFlow Lite z usługami Google Play.
TensorFlow Lite z usługami Google Play to zalecana ścieżka korzystania z TensorFlow Lite na Androidzie. Jeśli Twoja aplikacja jest przeznaczona dla urządzeń, na których nie działa Google Play, zobacz sekcję GPU z biblioteką zadań i samodzielnym TensorFlow Lite .
Dodaj zależności projektu
Aby umożliwić dostęp do delegata GPU za pomocą bibliotek zadań TensorFlow Lite przy użyciu usług Google Play, dodaj com.google.android.gms:play-services-tflite-gpu
do zależności pliku build.gradle
swojej aplikacji:
dependencies {
...
implementation 'com.google.android.gms:play-services-tflite-gpu:16.0.0'
}
Włącz akcelerację GPU
Następnie sprawdź asynchronicznie, czy delegat procesora GPU jest dostępny dla urządzenia przy użyciu klasy TfLiteGpu
i włącz opcję delegowania procesora GPU dla klasy modelu interfejsu API zadań za pomocą klasy BaseOptions
. Na przykład możesz skonfigurować procesor graficzny w ObjectDetector
, jak pokazano w poniższych przykładach kodu:
Kotlina
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() }
Jawa
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() });
Używaj procesora graficznego z samodzielnym TensorFlow Lite
Jeśli Twoja aplikacja jest przeznaczona dla urządzeń, na których nie działa Google Play, możliwe jest dołączenie delegata GPU do Twojej aplikacji i używanie go z samodzielną wersją TensorFlow Lite.
Dodaj zależności projektu
Aby umożliwić dostęp do delegata GPU za pomocą bibliotek zadań TensorFlow Lite przy użyciu samodzielnej wersji TensorFlow Lite, dodaj org.tensorflow:tensorflow-lite-gpu-delegate-plugin
do zależności pliku build.gradle
swojej aplikacji:
dependencies {
...
implementation 'org.tensorflow:tensorflow-lite'
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}
Włącz akcelerację GPU
Następnie włącz opcję delegowania procesora GPU dla klasy modelu interfejsu API zadań za pomocą klasy BaseOptions
. Na przykład możesz skonfigurować procesor graficzny w ObjectDetector
, jak pokazano w poniższych przykładach kodu:
Kotlina
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)
Jawa
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);