نماینده شتاب GPU با Task Library

استفاده از واحدهای پردازش گرافیکی (GPU) برای اجرای مدل‌های یادگیری ماشینی (ML) می‌تواند عملکرد و تجربه کاربری برنامه‌های دارای ML را به‌طور چشمگیری بهبود بخشد. در دستگاه‌های Android، می‌توانید با استفاده از یک نماینده و یکی از APIهای زیر، اجرای مدل‌های خود را با سرعت GPU فعال کنید:

این صفحه نحوه فعال کردن شتاب GPU را برای مدل‌های TensorFlow Lite در برنامه‌های Android با استفاده از کتابخانه Task شرح می‌دهد. برای اطلاعات بیشتر در مورد نماینده GPU برای TensorFlow Lite، از جمله بهترین شیوه‌ها و تکنیک‌های پیشرفته، به صفحه نمایندگان GPU مراجعه کنید.

از GPU با TensorFlow Lite با خدمات Google Play استفاده کنید

TensorFlow Lite Task Libraries مجموعه‌ای از APIهای مختص کار را برای ساخت برنامه‌های یادگیری ماشین ارائه می‌کنند. این بخش نحوه استفاده از نماینده شتاب دهنده GPU با این APIها با استفاده از TensorFlow Lite با خدمات Google Play را توضیح می دهد.

TensorFlow Lite با خدمات Google Play مسیر توصیه شده برای استفاده از TensorFlow Lite در اندروید است. اگر برنامه شما دستگاه‌هایی را هدف قرار می‌دهد که از Google Play استفاده نمی‌کنند، به GPU با Task Library و بخش مستقل TensorFlow Lite مراجعه کنید.

وابستگی های پروژه را اضافه کنید

برای فعال کردن دسترسی به نماینده GPU با کتابخانه‌های وظیفه TensorFlow Lite با استفاده از خدمات Google Play، com.google.android.gms:play-services-tflite-gpu به وابستگی‌های فایل build.gradle برنامه خود اضافه کنید:

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

شتاب GPU را فعال کنید

سپس، به طور ناهمزمان بررسی کنید که نماینده GPU با استفاده از کلاس TfLiteGpu برای دستگاه در دسترس است و گزینه GPU delegate را برای کلاس مدل Task API خود با کلاس BaseOptions فعال کنید. برای مثال، می‌توانید GPU را در ObjectDetector تنظیم کنید، همانطور که در مثال‌های کد زیر نشان داده شده است:

کاتلین

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

از GPU با TensorFlow Lite مستقل استفاده کنید

اگر برنامه شما دستگاه‌هایی را هدف قرار می‌دهد که Google Play را اجرا نمی‌کنند، می‌توانید نماینده GPU را به برنامه خود اضافه کنید و از آن با نسخه مستقل TensorFlow Lite استفاده کنید.

وابستگی های پروژه را اضافه کنید

برای فعال کردن دسترسی به نماینده GPU با کتابخانه‌های وظیفه TensorFlow Lite با استفاده از نسخه مستقل TensorFlow Lite، org.tensorflow:tensorflow-lite-gpu-delegate-plugin به وابستگی‌های فایل build.gradle برنامه خود اضافه کنید:

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

شتاب GPU را فعال کنید

سپس گزینه GPU delegate را برای کلاس مدل Task API خود با کلاس BaseOptions فعال کنید. برای مثال، می‌توانید GPU را در ObjectDetector تنظیم کنید، همانطور که در مثال‌های کد زیر نشان داده شده است:

کاتلین

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