استخدام وحدات معالجة الرسومات (GPU) لتشغيل نماذج تعلُّم الآلة (ML) تحسين أداء إعلاناتك وتجربة المستخدم التطبيقات التي تستخدم تعلُّم الآلة. على أجهزة Android، يمكنك تفعيل تفويض وإحدى واجهات برمجة التطبيقات التالية:
- واجهة برمجة التطبيقات للترجمة الفورية - هذا الدليل
- واجهة برمجة التطبيقات الأصلية (C/C++ ) - الدليل
توضح هذه الصفحة كيفية تفعيل تسريع وحدة معالجة الرسومات لنماذج LiteRT في تطبيقات Android التي تستخدم واجهة برمجة التطبيقات للترجمة الفورية لمزيد من المعلومات حول استخدام وحدة معالجة الرسومات (GPU) تفويضًا لـ LiteRT، بما في ذلك أفضل الممارسات والتقنيات المتقدمة، انتقِل إلى صفحة مفوَّضي معالجة الرسومات.
استخدام وحدة معالجة الرسومات مع LiteRT مع خدمات Google Play
The LiteRT مترجم فوري API هي مجموعة من واجهات برمجة التطبيقات ذات الأغراض العامة لإنشاء تطبيقات التعلم الآلي. هذا القسم تصف كيفية استخدام تفويض مسرِّع وحدة معالجة الرسومات مع واجهات برمجة التطبيقات هذه مع LiteRT مع خدمات Google Play.
يُنصَح باستخدام LiteRT مع خدمات Google Play مسار استخدام LiteRT على Android. إذا كان تطبيقك يستهدف أجهزة إذا كان لا يعمل على Google Play، فراجع وحدة معالجة الرسومات التي تتضمن واجهة برمجة التطبيقات للترجمة والتطبيقات المستقلة LiteRT.
إضافة تبعيات المشروع (باستخدام كتالوج إصدار .toml)
- تعديل ملف
libs.versions.toml
الخاص بمشروعك
[libraries]
...
tflite-gpu = { module = "com.google.ai.edge.litert:litert-gpu", version = "2.X.Y" }
tflite-gpu-api = { module = "com.google.ai.edge.litert:litert-gpu-api", version = "2.X.Y" }
...
- يمكنك إضافة العناصر التابعة للمشروع في
build.gradle.kts
للتطبيق.
dependencies {
...
implementation(libraries.tflite.gpu)
implementation(libraries.tflite.gpu.api)
...
}
إضافة تبعيات المشروع
للسماح بالوصول إلى تفويض وحدة معالجة الرسومات، أضف
في 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'
}
تفعيل "تسريع وحدة معالجة الرسومات"
بعد ذلك، يمكنك إعداد LiteRT باستخدام خدمات Google Play التي تتوافق مع وحدة معالجة الرسومات:
Kotlin
val useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context) val interpreterTask = useGpuTask.continueWith { useGpuTask -> TfLite.initialize(context, TfLiteInitializationOptions.builder() .setEnableGpuDelegateSupport(useGpuTask.result) .build()) }
Java
Task<boolean> useGpuTask = TfLiteGpu.isGpuDelegateAvailable(context); Task<Options> interpreterOptionsTask = useGpuTask.continueWith({ task -> TfLite.initialize(context, TfLiteInitializationOptions.builder() .setEnableGpuDelegateSupport(true) .build()); });
يمكنك في النهاية إعداد ميزة الترجمة الفورية بعد اجتياز GpuDelegateFactory
.
من خلال InterpreterApi.Options
:
Kotlin
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)
Java
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);
يمكن أيضًا استخدام تفويض وحدة معالجة الرسومات مع ربط نموذج تعلُّم الآلة في "استوديو Android". بالنسبة لمزيد من المعلومات، راجِع إنشاء واجهات نماذج باستخدام البيانات الوصفية.
استخدام وحدة معالجة الرسومات مع الإصدار LiteRT المستقل
إذا كان تطبيقك يستهدف أجهزة لا تعمل على تشغيل Google Play، يمكن تجميع تفويض وحدة معالجة الرسومات مع التطبيق واستخدامها مع إصدار مستقل من LiteRT.
إضافة تبعيات المشروع
للسماح بالوصول إلى تفويض وحدة معالجة الرسومات، أضف
في com.google.ai.edge.litert:litert-gpu-delegate-plugin
إلى تطبيقك
ملف build.gradle
:
dependencies {
...
implementation 'com.google.ai.edge.litert:litert'
implementation 'com.google.ai.edge.litert:litert-gpu'
implementation 'com.google.ai.edge.litert:litert-gpu-api'
}
تفعيل "تسريع وحدة معالجة الرسومات"
بعد ذلك، شغِّل LiteRT على وحدة معالجة الرسومات باستخدام "TfLiteDelegate
". في Java، يمكنك تحديد
من GpuDelegate
إلى Interpreter.Options
.
Kotlin
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)
Java
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 مع النماذج الكَمية تلقائيًا. أنت لا إجراء أي تغييرات على التعليمات البرمجية لاستخدام نماذج محددة الكمية مع تفويض وحدة معالجة الرسومات. تشير رسالة الأشكال البيانية يوضح القسم التالي كيفية إيقاف الدعم الكمّي للاختبار أو لأغراض تجريبية.
إيقاف إتاحة النموذج الكمي
يوضّح الرمز التالي كيفية إيقاف إتاحة النماذج الكَمية.
Java
GpuDelegate delegate = new GpuDelegate(new GpuDelegate.Options().setQuantizedModelsAllowed(false)); Interpreter.Options options = (new Interpreter.Options()).addDelegate(delegate);
لمزيد من المعلومات عن تشغيل نماذج الكمية باستخدام تسريع وحدة معالجة الرسومات، يُرجى الاطّلاع على نظرة عامة على تفويض وحدة معالجة الرسومات.