Makine öğrenimi (ML) modellerinizi çalıştırmak için grafik işlem birimlerini (GPU'lar) kullanma sitenizin performansını ve kullanıcı deneyimini önemli ölçüde iyileştirebilir. Makine öğrenimi özellikli uygulamalar. Android cihazlarda bir yetki verin ve aşağıdaki API'lerden birini kullanın:
- Çevirmen API'si - bu kılavuz
- Yerel (C/C++) API - kılavuz
Bu sayfada, Çevirmen API kullanan Android uygulamaları. GPU'yu kullanma hakkında daha fazla bilgi için en iyi uygulamalar ve gelişmiş teknikleri içeren LiteRT delegeleri ve GPU delegeleri sayfasına bakın.
Google Play Hizmetleri'nde LiteRT ile GPU'yu kullanma
LiteRT Çevirmeni API, genel amaçlı API'ler. Bu bölüm Bu API'lerle GPU hızlandırıcı yetkilendirmesinin nasıl kullanılacağını açıklar. Google Play Hizmetleri ile LiteRT
Google Play Hizmetleri ile LiteRT önerilir Android'de LiteRT'i kullanma yolundadır. Uygulamanız cihazları hedefliyorsa Google Play uygulamasını çalıştırmıyorsanız, tercüman API'sini ve bağımsız API'yi içeren GPU'ya LiteRT bölümü gösterilir.
Proje bağımlılıkları ekleme (.toml sürüm kataloğuyla)
- Projenizin
libs.versions.toml
dosyasını güncelleyin
[libraries]
...
tflite-gpu = { module = "com.google.ai.edge.litert:litert-gpu", version = "2.X.Y" }
tflite-gpu-api = { module = "com.google.ai.edge.litert:litert-gpu-api", version = "2.X.Y" }
...
- Proje bağımlılıklarını uygulamanın
build.gradle.kts
dosyasında ekleyin
dependencies {
...
implementation(libraries.tflite.gpu)
implementation(libraries.tflite.gpu.api)
...
}
Proje bağımlılıklarını ekleme
GPU yetki verilmiş kullanıcıya erişimi etkinleştirmek için
Uygulamanızın build.gradle
cihazına com.google.android.gms:play-services-tflite-gpu
dosya:
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'nde LiteRT'i 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, GpuDelegateFactory
değerini geçen çevirmeniyi ilk kullanıma hazırlayabilirsiniz.
InterpreterApi.Options
aracılığıyla:
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 yetkisi, Android Studio'da makine öğrenimi modeli bağlama ile de kullanılabilir. Örneğin, Daha fazla bilgi için Aşağıdakileri kullanarak model arayüzleri oluşturma: meta veriler için de kullanılabilecektir.
Bağımsız LiteRT ile GPU kullanma
Uygulamanız Google Play çalışmayan cihazları hedefliyorsa bu uygulamanızla paketlemenizi sağlar ve bunu, bağımsız sürümü olabilir.
Proje bağımlılıklarını ekleme
GPU yetki verilmiş kullanıcıya erişimi etkinleştirmek için
Uygulamanıza com.google.ai.edge.litert:litert-gpu-delegate-plugin
build.gradle
dosyası:
dependencies {
...
implementation 'com.google.ai.edge.litert:litert'
implementation 'com.google.ai.edge.litert:litert-gpu'
implementation 'com.google.ai.edge.litert:litert-gpu-api'
}
GPU hızlandırmayı etkinleştir
Ardından TfLiteDelegate
ile GPU'da LiteRT'i çalıştırın. Java'da,
GpuDelegate
- Interpreter.Options
.
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 verme kitaplıkları, varsayılan olarak nicel modelleri destekler. Şunları yapmayın: GPU yetkisiyle nicelenmiş modelleri kullanmak için herhangi bir kod değişikliği yapmak zorunda kalırsınız. İlgili içeriği oluşturmak için kullanılan Bu bölümde, test veya destek için nicel desteğin nasıl devre dışı bırakılacağı açıklanmaktadır. .
Miktarı ölçülmüş model desteğini devre dışı bırak
Aşağıdaki kodda, miktarlandırılmış modeller için desteğin nasıl devre dışı bırakılacağı gösterilmektedir.
Java
GpuDelegate delegate = new GpuDelegate(new GpuDelegate.Options().setQuantizedModelsAllowed(false)); Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
GPU hızlandırmalı olarak nicelenmiş modelleri çalıştırma hakkında daha fazla bilgi için bkz. GPU temsilcisine genel bakış.