ตัวแทนการเร่งความเร็ว GPU พร้อมไลบรารีงาน

การใช้หน่วยประมวลผลกราฟิก (GPU) เพื่อรันโมเดล Machine Learning (ML) ของคุณสามารถปรับปรุงประสิทธิภาพและประสบการณ์ผู้ใช้ของแอปพลิเคชันที่เปิดใช้งาน ML ได้อย่างมาก บนอุปกรณ์ Android คุณสามารถเปิดใช้งานการดำเนินการที่เร่งด้วย GPU สำหรับโมเดลของคุณโดยใช้ ผู้รับมอบสิทธิ์ และหนึ่งใน API ต่อไปนี้:

หน้านี้อธิบายวิธีเปิดใช้งานการเร่งความเร็ว GPU สำหรับรุ่น TensorFlow Lite ในแอป Android โดยใช้ไลบรารีงาน หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับตัวแทน GPU สำหรับ TensorFlow Lite รวมถึงแนวทางปฏิบัติที่ดีที่สุดและเทคนิคขั้นสูง โปรดดูที่หน้า ตัวแทน GPU

ใช้ GPU กับ TensorFlow Lite กับบริการ Google Play

ไลบรารีงาน TensorFlow Lite มอบชุด API เฉพาะงานสำหรับการสร้างแอปพลิเคชัน Machine Learning ส่วนนี้จะอธิบายวิธีใช้ตัวแทนตัวเร่งความเร็ว GPU กับ API เหล่านี้โดยใช้ TensorFlow Lite กับบริการ Google Play

TensorFlow Lite พร้อมบริการ Google Play เป็นเส้นทางที่แนะนำในการใช้ TensorFlow Lite บน Android หากแอปพลิเคชันของคุณกำหนดเป้าหมายอุปกรณ์ที่ไม่ได้ใช้ Google Play โปรดดู GPU พร้อมไลบรารีงานและส่วน 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 สำหรับคลาสโมเดล 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 สำหรับคลาสโมเดล 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);