작업 라이브러리를 사용한 GPU 가속 대리자

GPU(그래픽 처리 장치)를 사용하여 ML(기계 학습) 모델을 실행하면 ML 지원 애플리케이션의 성능과 사용자 경험을 크게 향상시킬 수 있습니다. Android 장치에서는 대리자 와 다음 API 중 하나를 사용하여 모델의 GPU 가속 실행을 활성화할 수 있습니다.

  • 인터프리터 API - 가이드
  • 작업 라이브러리 API - 이 가이드
  • 네이티브(C/C++) API - 이 가이드

이 페이지에서는 작업 라이브러리를 사용하여 Android 앱에서 TensorFlow Lite 모델에 GPU 가속을 활성화하는 방법을 설명합니다. 모범 사례 및 고급 기술을 포함하여 TensorFlow Lite용 GPU 대리자에 대한 자세한 내용은 GPU 대리자 페이지를 참조하세요.

Google Play 서비스에서 TensorFlow Lite와 함께 GPU 사용

TensorFlow Lite 작업 라이브러리는 머신러닝 애플리케이션 구축을 위한 작업별 API 세트를 제공합니다. 이 섹션에서는 Google Play 서비스에서 TensorFlow Lite를 사용하여 이러한 API와 함께 GPU 가속기 대리자를 사용하는 방법을 설명합니다.

Google Play 서비스가 포함된 TensorFlow Lite는 Android에서 TensorFlow Lite를 사용하는 데 권장되는 경로입니다. 애플리케이션이 Google Play를 실행하지 않는 장치를 대상으로 하는 경우 작업 라이브러리 및 독립 실행형 TensorFlow Lite가 포함된 GPU 섹션을 참조하세요.

프로젝트 종속성 추가

Google Play 서비스를 사용하여 TensorFlow Lite 작업 라이브러리로 GPU 대리자에 대한 액세스를 활성화하려면 앱의 build.gradle 파일 종속성에 com.google.android.gms:play-services-tflite-gpu 추가하세요.

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

GPU 가속 활성화

그런 다음 TfLiteGpu 클래스를 사용하여 장치에 GPU 대리자를 사용할 수 있는지 비동기적으로 확인하고 BaseOptions 클래스를 사용하여 작업 API 모델 클래스에 대해 GPU 대리자 옵션을 활성화합니다. 예를 들어 다음 코드 예제에 표시된 대로 ObjectDetector 에서 GPU를 설정할 수 있습니다.

코틀린

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

자바

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

독립형 TensorFlow Lite와 함께 GPU 사용

애플리케이션이 Google Play를 실행하지 않는 대상 장치인 경우 GPU 대리자를 애플리케이션에 번들로 묶어 TensorFlow Lite의 독립형 버전과 함께 사용할 수 있습니다.

프로젝트 종속성 추가

TensorFlow Lite의 독립 실행형 버전을 사용하여 TensorFlow Lite 작업 라이브러리로 GPU 대리자에 대한 액세스를 활성화하려면 앱의 build.gradle 파일 종속성에 org.tensorflow:tensorflow-lite-gpu-delegate-plugin 추가하세요.

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

GPU 가속 활성화

그런 다음 BaseOptions 클래스를 사용하여 Task API 모델 클래스에 대한 GPU 대리자 옵션을 활성화합니다. 예를 들어 다음 코드 예제에 표시된 대로 ObjectDetector 에서 GPU를 설정할 수 있습니다.

코틀린

    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)
      

자바

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