Görev kitaplığıyla GPU hızlandırma temsilcisi

Makine öğrenimi (ML) modellerinizi çalıştırmak için grafik işlem birimlerini (GPU'lar) kullanmak, ML özellikli uygulamalarınızın performansını ve kullanıcı deneyimini önemli ölçüde artırabilir. Android cihazlarda, bir temsilci ve aşağıdaki API'lerden birini kullanarak modellerinizin GPU hızlandırmalı yürütülmesini etkinleştirebilirsiniz:

  • Tercüman API'si - kılavuz
  • Görev kitaplığı API'si - bu kılavuz
  • Yerel (C/C++) API - bu kılavuz

Bu sayfada, Görev kitaplığı kullanılarak Android uygulamalarında TensorFlow Lite modelleri için GPU hızlandırmanın nasıl etkinleştirileceği açıklanmaktadır. TensorFlow Lite için GPU temsilcisi hakkında en iyi uygulamalar ve gelişmiş teknikler de dahil olmak üzere daha fazla bilgi için GPU temsilcileri sayfasına bakın.

GPU'yu TensorFlow Lite ile Google Play hizmetleriyle kullanın

TensorFlow Lite Görev Kitaplıkları, makine öğrenimi uygulamaları oluşturmak için göreve özgü bir dizi API sağlar. Bu bölümde, Google Play hizmetleriyle TensorFlow Lite kullanılarak GPU hızlandırıcı temsilcisinin bu API'lerle nasıl kullanılacağı açıklanmaktadır.

Google Play hizmetleriyle birlikte TensorFlow Lite, TensorFlow Lite'ı Android'de kullanmanın önerilen yoludur. Uygulamanız Google Play'i çalıştırmayan cihazları hedefliyorsa Görev Kitaplığı içeren GPU'ya ve bağımsız TensorFlow Lite bölümüne bakın.

Proje bağımlılıkları ekleyin

Google Play hizmetlerini kullanarak TensorFlow Lite Görev Kitaplıkları ile GPU temsilcisine erişimi etkinleştirmek için uygulamanızın build.gradle dosyasının bağımlılıklarına com.google.android.gms:play-services-tflite-gpu ekleyin:

dependencies {
  ...
  implementation 'com.google.android.gms:play-services-tflite-gpu:16.0.0'
}

GPU hızlandırmayı etkinleştir

Ardından, TfLiteGpu sınıfını kullanarak cihaz için GPU temsilcisinin mevcut olduğunu eşzamansız olarak doğrulayın ve BaseOptions sınıfıyla Görev API modeli sınıfınız için GPU temsilcisi seçeneğini etkinleştirin. Örneğin, aşağıdaki kod örneklerinde gösterildiği gibi ObjectDetector GPU'yu ayarlayabilirsiniz:

Kotlin

        val useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context)

        lateinit val optionsTask = useGpuTask.continueWith { task ->
          val baseOptionsBuilder = BaseOptions.builder()
          if (task.result) {
            baseOptionsBuilder.useGpu()
          }
        ObjectDetectorOptions.builder()
                  .setBaseOptions(baseOptionsBuilder.build())
                  .setMaxResults(1)
                  .build()
        }
      

Java

      Task useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context);

      Task optionsTask = useGpuTask.continueWith({ task ->
        BaseOptions baseOptionsBuilder = BaseOptions.builder();
        if (task.getResult()) {
          baseOptionsBuilder.useGpu();
        }
        return ObjectDetectorOptions.builder()
                .setBaseOptions(baseOptionsBuilder.build())
                .setMaxResults(1)
                .build()
      });
      

GPU'yu bağımsız TensorFlow Lite ile kullanın

Uygulamanız Google Play çalıştırmayan cihazları hedefliyorsa GPU temsilcisini uygulamanıza paketleyip bunu TensorFlow Lite'ın bağımsız sürümüyle kullanmak mümkündür.

Proje bağımlılıkları ekleyin

TensorFlow Lite'ın bağımsız sürümünü kullanarak TensorFlow Lite Görev Kitaplıkları ile GPU temsilcisine erişimi etkinleştirmek için uygulamanızın build.gradle dosyasının bağımlılıkları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 BaseOptions sınıfıyla Görev API modeli sınıfınız için GPU temsilci seçeneğini etkinleştirin. Örneğin, aşağıdaki kod örneklerinde gösterildiği gibi ObjectDetector GPU'yu ayarlayabilirsiniz:

Kotlin

    import org.tensorflow.lite.task.core.BaseOptions
    import org.tensorflow.lite.task.gms.vision.detector.ObjectDetector

    val baseOptions = BaseOptions.builder().useGpu().build()

    val options =
        ObjectDetector.ObjectDetectorOptions.builder()
            .setBaseOptions(baseOptions)
            .setMaxResults(1)
            .build()

    val objectDetector = ObjectDetector.createFromFileAndOptions(
      context, model, options)
      

Java

    import org.tensorflow.lite.task.core.BaseOptions
    import org.tensorflow.lite.task.gms.vision.detector.ObjectDetector

    BaseOptions baseOptions = BaseOptions.builder().useGpu().build();

    ObjectDetectorOptions options =
        ObjectDetectorOptions.builder()
            .setBaseOptions(baseOptions)
            .setMaxResults(1)
            .build();

    val objectDetector = ObjectDetector.createFromFileAndOptions(
      context, model, options);