נציג האצת GPU עם ספריית משימות

שימוש ביחידות עיבוד גרפיות (GPU) להפעלת מודלים של למידת מכונה (ML) שלך יכול לשפר באופן דרמטי את הביצועים וחווית המשתמש של היישומים התומכים ב-ML שלך. במכשירי אנדרואיד, אתה יכול לאפשר הפעלה מואצת של GPU של הדגמים שלך באמצעות נציג ואחד מממשקי ה-API הבאים:

  • Interpreter API - מדריך
  • API של ספריית משימות - מדריך זה
  • API מקורי (C/C++) - מדריך זה

דף זה מתאר כיצד להפעיל האצת GPU עבור דגמי TensorFlow Lite באפליקציות אנדרואיד באמצעות ספריית המשימות. למידע נוסף על נציג GPU עבור TensorFlow Lite, כולל שיטות עבודה מומלצות וטכניקות מתקדמות, עיין בדף נציגי GPU .

השתמש ב-GPU עם TensorFlow Lite עם שירותי Google Play

ספריות המשימות של TensorFlow Lite מספקות קבוצה של ממשקי API ספציפיים למשימה לבניית יישומי למידת מכונה. סעיף זה מתאר כיצד להשתמש באציל מאיץ ה-GPU עם ממשקי API אלה באמצעות TensorFlow Lite עם שירותי Google Play.

TensorFlow Lite עם שירותי Google Play הוא הנתיב המומלץ לשימוש TensorFlow Lite באנדרואיד. אם האפליקציה שלך ממקדת למכשירים שבהם לא פועל 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()
        }
      

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

השתמש ב-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)
      

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