يمكن أن يؤدي استخدام وحدات معالجة الرسومات (GPUs) لتشغيل نماذج التعلم الآلي (ML) إلى تحسين الأداء وتجربة المستخدم للتطبيقات التي تدعم التعلم الآلي (ML) بشكل كبير. على أجهزة Android، يمكنك تمكين
المفوض وأحد واجهات برمجة التطبيقات التالية:
- مترجم API - هذا الدليل
- واجهة برمجة تطبيقات مكتبة المهام - الدليل
- واجهة برمجة التطبيقات الأصلية (C/C++) - الدليل
توضح هذه الصفحة كيفية تمكين تسريع GPU لنماذج TensorFlow Lite في تطبيقات Android باستخدام Interpreter API. لمزيد من المعلومات حول استخدام مندوب GPU لـ TensorFlow Lite، بما في ذلك أفضل الممارسات والتقنيات المتقدمة، راجع صفحة مندوبي GPU .
استخدم GPU مع TensorFlow Lite مع خدمات Google Play
توفر TensorFlow Lite Interpreter API مجموعة من واجهات برمجة التطبيقات للأغراض العامة لبناء تطبيقات التعلم الآلي. يصف هذا القسم كيفية استخدام مندوب تسريع GPU مع واجهات برمجة التطبيقات هذه مع TensorFlow Lite مع خدمات Google Play.
يعد TensorFlow Lite مع خدمات Google Play هو المسار الموصى به لاستخدام TensorFlow Lite على Android. إذا كان تطبيقك يستهدف الأجهزة التي لا تعمل على Google Play، فراجع وحدة معالجة الرسومات مع Interpreter API وقسم TensorFlow Lite المستقل .
إضافة تبعيات المشروع
لتمكين الوصول إلى مندوب GPU، أضف com.google.android.gms:play-services-tflite-gpu
إلى ملف build.gradle
الخاص بتطبيقك:
dependencies {
...
implementation 'com.google.android.gms:play-services-tflite-java:16.0.1'
implementation 'com.google.android.gms:play-services-tflite-gpu:16.1.0'
}
تمكين تسريع GPU
ثم قم بتهيئة TensorFlow Lite مع خدمات Google Play بدعم GPU:
كوتلين
val useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context) val interpreterTask = useGpuTask.continueWith { useGpuTask -> TfLite.initialize(context, TfLiteInitializationOptions.builder() .setEnableGpuDelegateSupport(useGpuTask.result) .build()) }
جافا
TaskuseGpuTask = TfLiteGpu.isGpuDelegateAvailable(context); Task interpreterOptionsTask = useGpuTask.continueWith({ task -> TfLite.initialize(context, TfLiteInitializationOptions.builder() .setEnableGpuDelegateSupport(true) .build()); });
يمكنك أخيرًا تهيئة المترجم من خلال تمرير GpuDelegateFactory
عبر InterpreterApi.Options
:
كوتلين
val options = InterpreterApi.Options() .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) .addDelegateFactory(GpuDelegateFactory()) val interpreter = InterpreterApi(model, options) // Run inference writeToInput(input) interpreter.run(input, output) readFromOutput(output)
جافا
Options options = InterpreterApi.Options() .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) .addDelegateFactory(new GpuDelegateFactory()); Interpreter interpreter = new InterpreterApi(model, options); // Run inference writeToInput(input); interpreter.run(input, output); readFromOutput(output);
يمكن أيضًا استخدام مندوب GPU مع ربط نموذج ML في Android Studio. لمزيد من المعلومات، راجع إنشاء واجهات نموذجية باستخدام بيانات التعريف .
استخدم وحدة معالجة الرسومات مع TensorFlow Lite المستقل
إذا كان تطبيقك يستهدف الأجهزة التي لا تعمل على Google Play، فمن الممكن تجميع مندوب GPU في تطبيقك واستخدامه مع الإصدار المستقل من TensorFlow Lite.
إضافة تبعيات المشروع
لتمكين الوصول إلى مندوب GPU، قم بإضافة org.tensorflow:tensorflow-lite-gpu-delegate-plugin
إلى ملف build.gradle
الخاص بتطبيقك:
dependencies {
...
implementation 'org.tensorflow:tensorflow-lite'
implementation 'org.tensorflow:tensorflow-lite-gpu-delegate-plugin'
}
تمكين تسريع GPU
ثم قم بتشغيل TensorFlow Lite على وحدة معالجة الرسومات باستخدام TfLiteDelegate
. في Java، يمكنك تحديد GpuDelegate
من خلال Interpreter.Options
.
كوتلين
import org.tensorflow.lite.Interpreter import org.tensorflow.lite.gpu.CompatibilityList import org.tensorflow.lite.gpu.GpuDelegate val compatList = CompatibilityList() val options = Interpreter.Options().apply{ if(compatList.isDelegateSupportedOnThisDevice){ // if the device has a supported GPU, add the GPU delegate val delegateOptions = compatList.bestOptionsForThisDevice this.addDelegate(GpuDelegate(delegateOptions)) } else { // if the GPU is not supported, run on 4 threads this.setNumThreads(4) } } val interpreter = Interpreter(model, options) // Run inference writeToInput(input) interpreter.run(input, output) readFromOutput(output)
جافا
import org.tensorflow.lite.Interpreter; import org.tensorflow.lite.gpu.CompatibilityList; import org.tensorflow.lite.gpu.GpuDelegate; // Initialize interpreter with GPU delegate Interpreter.Options options = new Interpreter.Options(); CompatibilityList compatList = CompatibilityList(); if(compatList.isDelegateSupportedOnThisDevice()){ // if the device has a supported GPU, add the GPU delegate GpuDelegate.Options delegateOptions = compatList.getBestOptionsForThisDevice(); GpuDelegate gpuDelegate = new GpuDelegate(delegateOptions); options.addDelegate(gpuDelegate); } else { // if the GPU is not supported, run on 4 threads options.setNumThreads(4); } Interpreter interpreter = new Interpreter(model, options); // Run inference writeToInput(input); interpreter.run(input, output); readFromOutput(output);
النماذج الكمية
تدعم مكتبات تفويض Android GPU النماذج الكمية بشكل افتراضي. ليس عليك إجراء أي تغييرات في التعليمات البرمجية لاستخدام النماذج الكمية مع مندوب GPU. يشرح القسم التالي كيفية تعطيل الدعم الكمي لأغراض الاختبار أو الاختبار.
تعطيل دعم النموذج الكمي
يوضح التعليمة البرمجية التالية كيفية تعطيل دعم النماذج الكمية.
جافا
GpuDelegate delegate = new GpuDelegate(new GpuDelegate.Options().setQuantizedModelsAllowed(false)); Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
لمزيد من المعلومات حول تشغيل النماذج الكمية مع تسريع GPU، راجع نظرة عامة على مندوب GPU .