Đại biểu tăng tốc GPU với thư viện Tác vụ

Việc sử dụng bộ xử lý đồ họa (GPU) để chạy mô hình máy học (ML) có thể cải thiện đáng kể hiệu suất và trải nghiệm người dùng của các ứng dụng hỗ trợ ML của bạn. Trên thiết bị Android, bạn có thể kích hoạt việc thực thi các mô hình của mình được tăng tốc bằng GPU bằng cách sử dụng đại biểu và một trong các API sau:

Trang này mô tả cách bật khả năng tăng tốc GPU cho các mẫu TensorFlow Lite trong ứng dụng Android bằng thư viện Tác vụ. Để biết thêm thông tin về đại biểu GPU cho TensorFlow Lite, bao gồm các phương pháp thực hành tốt nhất và kỹ thuật nâng cao, hãy xem trang đại biểu GPU .

Sử dụng GPU với TensorFlow Lite với các dịch vụ của Google Play

Thư viện tác vụ TensorFlow Lite cung cấp một bộ API dành riêng cho tác vụ để xây dựng các ứng dụng máy học. Phần này mô tả cách sử dụng ủy quyền bộ tăng tốc GPU với các API này bằng cách sử dụng TensorFlow Lite với các dịch vụ của Google Play.

TensorFlow Lite với dịch vụ Google Play là đường dẫn được khuyến nghị để sử dụng TensorFlow Lite trên Android. Nếu ứng dụng của bạn đang nhắm mục tiêu các thiết bị không chạy Google Play, hãy xem GPU với Thư viện tác vụ và phần TensorFlow Lite độc ​​lập .

Thêm phụ thuộc dự án

Để cho phép quyền truy cập vào đại biểu GPU bằng Thư viện tác vụ TensorFlow Lite bằng dịch vụ Google Play, hãy thêm com.google.android.gms:play-services-tflite-gpu vào phần phụ thuộc của tệp build.gradle của ứng dụng của bạn:

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

Bật tăng tốc GPU

Sau đó, xác minh không đồng bộ rằng tính năng ủy quyền GPU có sẵn cho thiết bị bằng lớp TfLiteGpu và bật tùy chọn ủy quyền GPU cho lớp mô hình API tác vụ của bạn bằng lớp BaseOptions . Ví dụ: bạn có thể thiết lập GPU trong ObjectDetector như trong các ví dụ về mã sau:

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

Sử dụng GPU với TensorFlow Lite độc ​​lập

Nếu ứng dụng của bạn nhắm mục tiêu đến các thiết bị không chạy Google Play, bạn có thể đóng gói đại biểu GPU cho ứng dụng của mình và sử dụng nó với phiên bản độc lập của TensorFlow Lite.

Thêm phụ thuộc dự án

Để cho phép quyền truy cập vào đại biểu GPU bằng Thư viện tác vụ TensorFlow Lite bằng phiên bản độc lập của TensorFlow Lite, hãy thêm org.tensorflow:tensorflow-lite-gpu-delegate-plugin vào phần phụ thuộc của tệp build.gradle trong ứng dụng của bạn:

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

Bật tăng tốc GPU

Sau đó kích hoạt tùy chọn ủy quyền GPU cho lớp mô hình API tác vụ của bạn với lớp BaseOptions . Ví dụ: bạn có thể thiết lập GPU trong ObjectDetector như trong các ví dụ về mã sau:

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