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(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ış.