Translateer API ile GPU hızlandırma yetkisi

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)

  1. 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" }
...
  1. 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.