يصف هذا المستند كيفية إنشاء مكتبة LiteRT Android على تمتلكه. لا تحتاج عادةً إلى إنشاء مكتبة LiteRT Android على الجهاز. إذا كنت تريد استخدامها فقط، فراجع البدء السريع في Android للاطّلاع على المزيد من التفاصيل حول كيفية استخدام في مشروعات Android.
استخدام اللقطات الليلية
لاستخدام اللقطات الليلية، أضِف المستودع التالي إلى إصدار Gradle الجذر. .
allprojects {
repositories { // should be already there
mavenCentral() // should be already there
maven { // add this repo to use snapshots
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
}
}
إضافة لقطات ليلية إلى العناصر التابعة (أو تعديلها حسب الحاجة) إلى create.gradle
...
dependencies {
...
implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly-SNAPSHOT'
implementation 'com.google.ai.edge.litert:litert-gpu:0.0.0-nightly-SNAPSHOT'
implementation 'com.google.ai.edge.litert:litert-support:0.0.0-nightly-SNAPSHOT'
...
}
...
إنشاء LiteRT على الجهاز
في بعض الحالات، قد ترغب في استخدام إصدار محلي من LiteRT. بالنسبة على سبيل المثال، ربما تكون بصدد إنشاء برنامج ثنائي مخصص يتضمن العمليات المحدّدة من TensorFlow، أو قد ترغب في إجراء تغييرات محلية على LiteRT.
إعداد بيئة الإصدار باستخدام Docker
- نزِّل ملف Docker. من خلال تنزيل ملف Docker، توافق على تنفيذ تحكم بنود الخدمة التالية استخدامك لها:
يعني النقر على "قبول" أنّك بموجب هذه الاتفاقية، توافق على أنّ جميع استخدامات "استوديو Android" ستخضع "حزمة تطوير البرامج الأصلية من Android" لبرامج Android تتوفر اتفاقية ترخيص أدوات التطوير على https://developer.android.com/studio/terms (قد يتم تعديل أو تغيير عنوان URL هذا Google من حين لآخر).
يجب الإقرار ببنود الخدمة لتنزيل الملف.- يمكنك اختياريًا تغيير إصدار حزمة تطوير البرامج (SDK) أو NDK لنظام التشغيل Android. ضع الملف الذي تم تنزيله Docker في مجلد فارغ وأنشِئ صورة Docker عن طريق تنفيذ:
docker build . -t tflite-builder -f tflite-android.Dockerfile
- يمكنك بدء حاوية Docker بشكل تفاعلي من خلال تثبيت المجلد الحالي. /host_dir داخل الحاوية (لاحظ أنّ /tensorflow_src هو TensorFlow المستودع داخل الحاوية):
docker run -it -v $PWD:/host_dir tflite-builder bash
إذا كنت تستخدم PowerShell على نظام التشغيل Windows، استبدل "$PWD" باستخدام "pwd".
إذا أردت استخدام مستودع TensorFlow على المضيف، حمِّل هذا المضيف الدليل بدلاً من ذلك (-vhostDir:/host_dir).
- بعد الوصول إلى الحاوية، يمكنك تشغيل ما يلي لتنزيله. أدوات ومكتبات إضافية من Android (لاحظ أنك قد تحتاج إلى قبول ):
sdkmanager \
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
"platform-tools" \
"platforms;android-${ANDROID_API_LEVEL}"
عليك الآن المتابعة إلى قسم ضبط WORKSPACE و .bazelrc لضبط إعدادات الإصدار.
بعد الانتهاء من إنشاء المكتبات، يمكنك نسخها إلى /host_dir. داخل الحاوية بحيث يمكنك الوصول إليها على المضيف.
إعداد بيئة الإصدار بدون Docker
تثبيت المتطلبات الأساسية لتطبيق Bazel وAndroid
Bazel هو نظام التصميم الأساسي لمنصة TensorFlow. للبناء باستخدامها، يجب عليك تثبيت Android NDK وحزمة تطوير البرامج (SDK) على نظامك.
- ثبِّت أحدث إصدار من نظام إصدار Bazel.
- يجب توفّر Android NDK لإنشاء الإصدار الأصلي (C/C++) LiteRT الرمز. الإصدار المقترَح الحالي هو 25b، ويمكن العثور عليه هنا.
- يمكن الحصول على حزمة تطوير البرامج (SDK) لنظام التشغيل Android وأدوات التصميم. هنا، أو بدلاً من ذلك كجزء من استوديو Android: طوِّر Tools API >= 23 هو الإصدار الموصى به لإنشاء LiteRT.
إعداد WORKSPACE و .bazelrc
هذه خطوة تكوين تتم لمرة واحدة ومطلوبة لإنشاء LiteRT
المكتبات. تنفيذ النص البرمجي "./configure
" في عملية الدفع الجذر TensorFlow
الدليل، والإجابة بـ "نعم" عندما يطلب النص البرمجي ضبط ./WORKSPACE
بشكل تفاعلي
لإصدارات Android. سيحاول النص البرمجي ضبط الإعدادات باستخدام
متغيرات البيئة التالية:
ANDROID_SDK_HOME
ANDROID_SDK_API_LEVEL
ANDROID_NDK_HOME
ANDROID_NDK_API_LEVEL
إذا لم يتم ضبط هذه المتغيرات، يجب تقديمها بشكل تفاعلي في البرنامج النصي.
مطالبة. يجب أن تؤدي التهيئة الناجحة إلى إدخالات مشابهة لما يلي
في ملف .tf_configure.bazelrc
في المجلد الجذر:
build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r25b"
build --action_env ANDROID_NDK_API_LEVEL="21"
build --action_env ANDROID_BUILD_TOOLS_VERSION="30.0.3"
build --action_env ANDROID_SDK_API_LEVEL="30"
build --action_env ANDROID_SDK_HOME="/usr/local/android/android-sdk-linux"
إنشاء وتثبيت
بعد ضبط Bazel بشكل صحيح، يمكنك إنشاء LiteRT AAR من دليل الدفع الجذري على النحو التالي:
bazel build -c opt --cxxopt=--std=c++17 --config=android_arm64 \
--fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
--define=android_dexmerger_tool=d8_dexmerger \
--define=android_incremental_dexing_tool=d8_dexbuilder \
//tensorflow/lite/java:tensorflow-lite
سيؤدي هذا الإجراء إلى إنشاء ملف AAR في bazel-bin/tensorflow/lite/java/
. ملاحظة
أن هذا يؤدي إلى بناء "سمين" ميزة "الاقتراحات المطبّقة تلقائيًا" ذات العديد من بُنى مختلفة إذا لم يكن لديك
تحتاج إليها جميعًا، فاستخدم المجموعة الفرعية المناسبة لبيئة النشر لديك.
يمكنك إنشاء ملفات AAR أصغر حجمًا تستهدف مجموعة من النماذج فقط على النحو التالي:
bash tensorflow/lite/tools/build_aar.sh \
--input_models=model1,model2 \
--target_archs=x86,x86_64,arm64-v8a,armeabi-v7a
سينشئ النص البرمجي أعلاه ملف tensorflow-lite.aar
ويمكنك اختياريًا
ملف tensorflow-lite-select-tf-ops.aar
إذا كان أحد النماذج يستخدم
عمليات Tensorflow لمزيد من التفاصيل، يُرجى مراجعة
قسم تقليل الحجم الثنائي لـ LiteRT
إضافة ميزة "التطبيق التلقائي للاقتراحات" مباشرةً إلى المشروع
انقل ملف tensorflow-lite.aar
إلى دليل يسمى libs
في
مشروعك. يُرجى تعديل ملف build.gradle
في تطبيقك للإشارة إلى الدليل الجديد.
واستبدال تبعية LiteRT الحالية بالمكتبة المحلية الجديدة،
e.g.:
allprojects {
repositories {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
flatDir {
dirs 'libs'
}
}
}
dependencies {
compile(name:'tensorflow-lite', ext:'aar')
}
تثبيت ميزة "التطبيق التلقائي للاقتراحات" في مستودع Maven المحلي
نفِّذ الطلب التالي من دليل الدفع الجذر:
mvn install:install-file \
-Dfile=bazel-bin/tensorflow/lite/java/tensorflow-lite.aar \
-DgroupId=org.tensorflow \
-DartifactId=tensorflow-lite -Dversion=0.1.100 -Dpackaging=aar
في build.gradle
لتطبيقك، تأكَّد من أنّ لديك اعتمادية mavenLocal()
يستبدل تبعية LiteRT القياسية بالتبعية التي تدعم
لعمليات TensorFlow المحددة:
allprojects {
repositories {
mavenCentral()
maven { // Only for snapshot artifacts
name 'ossrh-snapshot'
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
mavenLocal()
}
}
dependencies {
implementation 'org.tensorflow:tensorflow-lite:0.1.100'
}
تجدر الإشارة إلى أنّ الغرض من الإصدار 0.1.100
هنا هو فقط
للاختبار/التطوير. عند تثبيت ميزة "الاقتراحات المطبّقة تلقائيًا" المحلية، يمكنك استخدام
واجهات برمجة تطبيقات استنتاج LiteRT Java في الرمز البرمجي لتطبيقك.