Makine öğrenimi (ML) modellerinizi çalıştırmak için grafik işlem birimlerini (GPU'lar) kullanmak, ML özellikli uygulamalarınızın performansını ve kullanıcı deneyimini önemli ölçüde artırabilir. Android cihazlarda etkinleştirebilirsiniz
temsilci ve aşağıdaki API'lerden biri:
- Java/Kotlin Yorumlayıcı API'si - bu kılavuz
- Görev kitaplığı API'si - kılavuz
- Yerel (C/C++) API - kılavuz
Bu sayfada, Interpreter API kullanılarak Android uygulamalarında TensorFlow Lite modelleri için GPU hızlandırmanın nasıl etkinleştirileceği açıklanmaktadır. En iyi uygulamalar ve gelişmiş teknikler de dahil olmak üzere TensorFlow Lite için GPU temsilcisini kullanma hakkında daha fazla bilgi için GPU temsilcileri sayfasına bakın.
GPU'yu TensorFlow Lite ile Google Play hizmetleriyle kullanın
TensorFlow Lite Java/Kotlin Interpreter API, makine öğrenimi uygulamaları oluşturmak için bir dizi genel amaçlı API sağlar. Bu bölümde, GPU hızlandırıcı temsilcisinin Google Play hizmetleriyle TensorFlow Lite ile bu API'lerle nasıl kullanılacağı açıklanmaktadır.
Google Play hizmetleriyle birlikte TensorFlow Lite, TensorFlow Lite'ı Android'de kullanmanın önerilen yoludur. Uygulamanız Google Play'i çalıştırmayan cihazları hedefliyorsa Interpreter API'li GPU ve bağımsız TensorFlow Lite bölümüne bakın.
Proje bağımlılıkları ekleyin
GPU temsilcisine erişimi etkinleştirmek için uygulamanızın build.gradle
dosyasına com.google.android.gms:play-services-tflite-gpu
ekleyin:
dependencies {
...
implementation 'com.google.android.gms:play-services-tflite-java:16.0.1'
implementation 'com.google.android.gms:play-services-tflite-gpu:16.1.0'
}
GPU hızlandırmayı etkinleştir
Ardından TensorFlow Lite'ı GPU desteğiyle Google Play hizmetleriyle başlatın:
Kotlin
val useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context) val interpreterTask = useGpuTask.continueWith { useGpuTask -> TfLite.initialize(context, TfLiteInitializationOptions.builder() .setEnableGpuDelegateSupport(useGpuTask.result) .build()) }
Java
TaskuseGpuTask = TfLiteGpu.isGpuDelegateAvailable(context); Task interpreterOptionsTask = useGpuTask.continueWith({ task -> TfLite.initialize(context, TfLiteInitializationOptions.builder() .setEnableGpuDelegateSupport(true) .build()); });
Sonunda yorumlayıcıyı InterpreterApi.Options
aracılığıyla bir GpuDelegateFactory
ileterek başlatabilirsiniz:
Kotlin
val options = InterpreterApi.Options() .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) .addDelegateFactory(GpuDelegateFactory()) val interpreter = InterpreterApi(model, options) // Run inference writeToInput(input) interpreter.run(input, output) readFromOutput(output)
Java
Options options = InterpreterApi.Options() .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) .addDelegateFactory(new GpuDelegateFactory()); Interpreter interpreter = new InterpreterApi(model, options); // Run inference writeToInput(input); interpreter.run(input, output); readFromOutput(output);
GPU temsilcisi, Android Studio'da ML modeli bağlamayla da kullanılabilir. Daha fazla bilgi için bkz. Meta verileri kullanarak model arayüzleri oluşturma .
GPU'yu bağımsız TensorFlow Lite ile kullanın
Uygulamanız Google Play'i çalıştırmayan cihazları hedefliyorsa GPU temsilcisini uygulamanıza paketleyip bunu TensorFlow Lite'ın bağımsız sürümüyle kullanmak mümkündür.
Proje bağımlılıkları ekleyin
GPU temsilcisine erişimi etkinleştirmek için uygulamanızın build.gradle
dosyasına org.tensorflow:tensorflow-lite-gpu-delegate-plugin
ekleyin:
dependencies {
...
implementation 'org.tensorflow:tensorflow-lite'
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}
GPU hızlandırmayı etkinleştir
Ardından TensorFlow Lite'ı GPU'da TfLiteDelegate
ile çalıştırın. Java'da, GpuDelegate
Interpreter.Options
aracılığıyla belirtebilirsiniz.
Kotlin
import org.tensorflow.lite.Interpreter import org.tensorflow.lite.gpu.CompatibilityList import org.tensorflow.lite.gpu.GpuDelegate val compatList = CompatibilityList() val options = Interpreter.Options().apply{ if(compatList.isDelegateSupportedOnThisDevice){ // if the device has a supported GPU, add the GPU delegate val delegateOptions = compatList.bestOptionsForThisDevice this.addDelegate(GpuDelegate(delegateOptions)) } else { // if the GPU is not supported, run on 4 threads this.setNumThreads(4) } } val interpreter = Interpreter(model, options) // Run inference writeToInput(input) interpreter.run(input, output) readFromOutput(output)
Java
import org.tensorflow.lite.Interpreter; import org.tensorflow.lite.gpu.CompatibilityList; import org.tensorflow.lite.gpu.GpuDelegate; // Initialize interpreter with GPU delegate Interpreter.Options options = new Interpreter.Options(); CompatibilityList compatList = CompatibilityList(); if(compatList.isDelegateSupportedOnThisDevice()){ // if the device has a supported GPU, add the GPU delegate GpuDelegate.Options delegateOptions = compatList.getBestOptionsForThisDevice(); GpuDelegate gpuDelegate = new GpuDelegate(delegateOptions); options.addDelegate(gpuDelegate); } else { // if the GPU is not supported, run on 4 threads options.setNumThreads(4); } Interpreter interpreter = new Interpreter(model, options); // Run inference writeToInput(input); interpreter.run(input, output); readFromOutput(output);
Nicelenmiş modeller
Android GPU temsilci kitaplıkları varsayılan olarak nicelenmiş modelleri destekler. GPU temsilcisiyle nicelenmiş modelleri kullanmak için herhangi bir kod değişikliği yapmanız gerekmez. Aşağıdaki bölümde, test veya deneysel amaçlarla nicelenmiş desteğin nasıl devre dışı bırakılacağı açıklanmaktadır.
Nicelenmiş model desteğini devre dışı bırakın
Aşağıdaki kod, nicelenmiş modeller için desteğin nasıl devre dışı bırakılacağını gösterir.
Java
GpuDelegate delegate = new GpuDelegate(new GpuDelegate.Options().setQuantizedModelsAllowed(false)); Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
Nicelenmiş modelleri GPU hızlandırmayla çalıştırma hakkında daha fazla bilgi için bkz. GPU temsilcisine genel bakış.