Delegasi akselerasi GPU dengan pustaka Tugas

Menggunakan unit pemrosesan grafis (GPU) untuk menjalankan model pembelajaran mesin (ML) dapat meningkatkan performa dan pengalaman pengguna aplikasi Anda yang mendukung ML secara signifikan. Di perangkat Android, Anda dapat mengaktifkan eksekusi model yang dipercepat GPU menggunakan delegasi dan salah satu API berikut:

  • API Juru Bahasa - panduan
  • API perpustakaan tugas - panduan ini
  • API Asli (C/C++) - panduan ini

Halaman ini menjelaskan cara mengaktifkan akselerasi GPU untuk model TensorFlow Lite di aplikasi Android menggunakan Task Library. Untuk informasi selengkapnya tentang delegasi GPU untuk TensorFlow Lite, termasuk praktik terbaik dan teknik lanjutan, lihat halaman delegasi GPU .

Gunakan GPU dengan TensorFlow Lite dengan layanan Google Play

Pustaka Tugas TensorFlow Lite menyediakan serangkaian API khusus tugas untuk membuat aplikasi pembelajaran mesin. Bagian ini menjelaskan cara menggunakan delegasi akselerator GPU dengan API ini menggunakan TensorFlow Lite dengan layanan Google Play.

TensorFlow Lite dengan layanan Google Play adalah jalur yang disarankan untuk menggunakan TensorFlow Lite di Android. Jika aplikasi Anda menargetkan perangkat yang tidak menjalankan Google Play, lihat bagian GPU dengan Task Library dan TensorFlow Lite mandiri .

Tambahkan dependensi proyek

Untuk mengaktifkan akses ke delegasi GPU dengan Pustaka Tugas TensorFlow Lite menggunakan layanan Google Play, tambahkan com.google.android.gms:play-services-tflite-gpu ke dependensi file build.gradle aplikasi Anda:

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

Aktifkan akselerasi GPU

Kemudian, verifikasi secara asinkron bahwa delegasi GPU tersedia untuk perangkat menggunakan kelas TfLiteGpu dan aktifkan opsi delegasi GPU untuk kelas model Task API Anda dengan kelas BaseOptions . Misalnya, Anda dapat mengatur GPU di ObjectDetector seperti yang ditunjukkan dalam contoh kode berikut:

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()
        }
      

Jawa

      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()
      });
      

Gunakan GPU dengan TensorFlow Lite mandiri

Jika aplikasi Anda menargetkan perangkat yang tidak menjalankan Google Play, delegasi GPU dapat digabungkan ke aplikasi Anda dan menggunakannya dengan TensorFlow Lite versi mandiri.

Tambahkan dependensi proyek

Untuk mengaktifkan akses ke delegasi GPU dengan Pustaka Tugas TensorFlow Lite menggunakan TensorFlow Lite versi mandiri, tambahkan org.tensorflow:tensorflow-lite-gpu-delegate-plugin ke dependensi file build.gradle aplikasi Anda:

dependencies {
  ...
  implementation 'org.tensorflow:tensorflow-lite'
  implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}

Aktifkan akselerasi GPU

Kemudian aktifkan opsi delegasi GPU untuk kelas model Task API Anda dengan kelas BaseOptions . Misalnya, Anda dapat mengatur GPU di ObjectDetector seperti yang ditunjukkan dalam contoh kode berikut:

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)
      

Jawa

    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);