Translateer API ile GPU hızlandırma yetkisi

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)

  1. 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" } ... 
  1. Proje bağımlılıklarını uygulamanın build.gradle.kts dosyasında ekleyin
dependencies {   ...   implementation(libs.tflite.gpu)   implementation(libs.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.4.0'     implementation 'com.google.android.gms:play-services-tflite-gpu:16.4.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ış.