Makine öğrenimi (ML) modellerinizi çalıştırmak için grafik işleme birimlerini (GPU) kullanmak, makine öğrenimi özellikli uygulamalarınızın performansını ve kullanıcı deneyimini önemli ölçüde iyileştirebilir. Android cihazlarda bir yetki verilmiş ve aşağıdaki API'lerden birini etkinleştirebilirsiniz:
- Translateer API - bu kılavuz
- Yerel (C/C++) API'si - kılavuz
Bu sayfada, Android uygulamalarında Translationer API kullanılarak 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 yetkilendirmesini kullanma hakkında daha fazla bilgi için GPU yetkileri sayfasına bakın.
GPU'yu Google Play Hizmetleri ile TensorFlow Lite ile kullanma
TensorFlow Lite Translateer 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ı yetkisinin Google Play Hizmetleri ile TensorFlow Lite ile bu API'lerle nasıl kullanılacağı açıklanmaktadır.
Google Play hizmetleri ile TensorFlow Lite, Android'de TensorFlow Lite'ı kullanmak için önerilen yoldur. Uygulamanız Google Play'i çalıştırmayan cihazları hedefliyorsa Yorumlayıcı API'si ile GPU ve bağımsız TensorFlow Lite bölümüne bakın.
Proje bağımlılıkları ekleyin (.toml sürüm kataloğuyla)
- Projenizin
libs.versions.toml
dosyasını güncelleyin
[libraries]
...
tflite-gpu = { module = "org.tensorflow:tensorflow-lite-gpu", version = "2.X.Y" }
tflite-gpu-api = { module = "org.tensorflow:tensorflow-lite-gpu-api", version = "2.X.Y" }
...
- Uygulamanın
build.gradle.kts
öğesine proje bağımlılıkları ekleyin
dependencies {
...
implementation(libraries.tflite.gpu)
implementation(libraries.tflite.gpu.api)
...
}
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, GPU desteğiyle Google Play hizmetleri ile TensorFlow Lite'ı başlatın:
Kotlin
val useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context) val interpreterTask = useGpuTask.continueWith { useGpuTask -> TfLite.initialize(context, TfLiteInitializationOptions.builder() .setEnableGpuDelegateSupport(useGpuTask.result) .build()) }
Java
Task<boolean> useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context); Task<Options> interpreterOptionsTask = useGpuTask.continueWith({ task -> TfLite.initialize(context, TfLiteInitializationOptions.builder() .setEnableGpuDelegateSupport(true) .build()); });
Son olarak, InterpreterApi.Options
aracılığıyla GpuDelegateFactory
geçiren çevirmeni 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ğlamasıyla da kullanılabilir. Daha fazla bilgi için Meta verileri kullanarak model arayüzleri oluşturma bölümüne bakın.
GPU'yu bağımsız TensorFlow Lite ile kullan
Uygulamanız Google Play'i çalıştırmayan cihazları hedefliyorsa GPU yetkilisini uygulamanızla birleştirip TensorFlow Lite'ın bağımsız sürümüyle kullanabilirsiniz.
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 TfLiteDelegate
ile GPU'da TensorFlow Lite'ı çalıştırın. Java'da GpuDelegate
ile Interpreter.Options
arasını 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);
Nicel modeller
Android GPU yetki kitaplıkları, sayısallaştırılmış modelleri varsayılan olarak destekler. GPU temsilcisiyle ölçülmüş modelleri kullanmak için herhangi bir kod değişikliği yapmanız gerekmez. Aşağıdaki bölümde, test veya deneysel amaçlar için nicelenmiş desteğin nasıl devre dışı bırakılacağı açıklanmaktadır.
Nicelleştirilmiş model desteğini devre dışı bırak
Aşağıdaki kod, ölçülmüş modeller için desteğin nasıl devre dışı bırakılacağını göstermektedir.
Java
GpuDelegate delegate = new GpuDelegate(new GpuDelegate.Options().setQuantizedModelsAllowed(false)); Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
GPU hızlandırması ile nicelenmiş modelleri çalıştırma hakkında daha fazla bilgi için GPU yetkisi'ne genel bakış bölümüne bakın.