لدي سؤال؟ تواصل مع المجتمع في منتدى زيارة منتدى TensorFlow

تقليل حجم TensorFlow Lite الثنائي

ملخص

عند نشر نماذج لتطبيقات التعلم الآلي (ODML) على الجهاز ، من المهم أن تكون على دراية بالذاكرة المحدودة المتوفرة على الأجهزة المحمولة. ترتبط الأحجام الثنائية للنموذج ارتباطًا وثيقًا بعدد العمليات المستخدمة في النموذج. يمكّنك TensorFlow Lite من تقليل الأحجام الثنائية للنموذج باستخدام عمليات إنشاء انتقائية. تتخطى الإنشاءات الانتقائية العمليات غير المستخدمة في مجموعة النماذج الخاصة بك وتنتج مكتبة مدمجة بوقت التشغيل ونواة المرجع المطلوبة للنموذج للتشغيل على جهازك المحمول.

ينطبق البناء الانتقائي على مكتبات العمليات الثلاث التالية.

  1. مكتبة العمليات المدمجة في TensorFlow Lite
  2. عمليات TensorFlow Lite المخصصة
  3. حدد مكتبة TensorFlow ops

يوضح الجدول أدناه تأثير الإصدارات الانتقائية لبعض حالات الاستخدام الشائعة:

اسم النموذج اختصاص الهدف العمارة حجم (أحجام) ملف AAR
Mobilenet_1.0_224 (عائم) تصنيف الصورة armeabi-v7a tensorflow-lite.aar (296،635 بايت)
arm64-v8a tensorflow-lite.aar (382،892 بايت)
التوابل استخراج طبقة الصوت armeabi-v7a tensorflow-lite.aar (375،813 بايت)
tensorflow-lite-select-tf-ops.aar (1،676،380 بايت)
arm64-v8a tensorflow-lite.aar (421،826 بايت)
tensorflow-lite-select-tf-ops.aar (2،298،630 بايت)
i3d-kinetics-400 تصنيف الفيديو armeabi-v7a tensorflow-lite.aar (240،085 بايت)
tensorflow-lite-select-tf-ops.aar (1،708،597 بايت)
arm64-v8a tensorflow-lite.aar (273.713 بايت)
tensorflow-lite-select-tf-ops.aar (2،339،697 بايت)

المشكلات / القيود المعروفة

  1. البناء الانتقائي لـ C API وإصدار iOS غير مدعوم حاليًا.

قم ببناء TensorFlow Lite بشكل انتقائي باستخدام Bazel

يفترض هذا القسم أنك قمت بتنزيل أكواد مصدر TensorFlow وقمت بإعداد بيئة التطوير المحلية لـ Bazel.

بناء ملفات AAR لمشروع Android

يمكنك إنشاء TensorFlow Lite AARs المخصصة من خلال توفير مسارات ملفات النموذج الخاص بك على النحو التالي.

sh tensorflow/lite/tools/build_aar.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a

سينشئ الأمر أعلاه ملف AAR bazel-bin/tmp/tensorflow-lite.aar لعمليات TensorFlow Lite المدمجة والمخصصة ؛ واختياريا ، يقوم بإنشاء ملف aar bazel-bin/tmp/tensorflow-lite-select-tf-ops.aar إذا كانت النماذج الخاصة بك تحتوي على عمليات Select TensorFlow. لاحظ أن هذا يبني AAR "سمين" بعدة بنيات مختلفة ؛ إذا لم تكن بحاجة إليها جميعًا ، فاستخدم المجموعة الفرعية المناسبة لبيئة النشر الخاصة بك.

الاستخدام المتقدم: بناء مع العمليات المخصصة

إذا قمت بتطوير نماذج Tensorflow Lite مع عمليات مخصصة ، فيمكنك إنشاؤها عن طريق إضافة العلامات التالية إلى أمر الإنشاء:

sh tensorflow/lite/tools/build_aar.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a \
  --tflite_custom_ops_srcs=/e/f/file1.cc,/g/h/file2.h \
  --tflite_custom_ops_deps=dep1,dep2

تحتوي علامة tflite_custom_ops_srcs على ملفات مصدر من tflite_custom_ops_deps وتحتوي علامة tflite_custom_ops_deps على تبعيات لبناء تلك الملفات المصدر. لاحظ أن هذه التبعيات يجب أن تكون موجودة في TensorFlow repo.

قم بإنشاء TensorFlow Lite بشكل انتقائي باستخدام Docker

يفترض هذا القسم أنك قمت بتثبيت Docker على جهازك المحلي وقمت بتنزيل TensorFlow Lite Dockerfileهنا .

بعد تنزيل Dockerfile أعلاه ، يمكنك إنشاء صورة عامل الإرساء عن طريق تشغيل:

docker build . -t tflite-builder -f tflite-android.Dockerfile

بناء ملفات AAR لمشروع Android

قم بتنزيل البرنامج النصي للبناء باستخدام Docker عن طريق تشغيل:

curl -o build_aar_with_docker.sh \
  https://raw.githubusercontent.com/tensorflow/tensorflow/master/tensorflow/lite/tools/build_aar_with_docker.sh &&
chmod +x build_aar_with_docker.sh

بعد ذلك ، يمكنك إنشاء TensorFlow Lite AAR المخصص من خلال توفير مسارات ملفات النموذج على النحو التالي.

sh build_aar_with_docker.sh \
  --input_models=/a/b/model_one.tflite,/c/d/model_two.tflite \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a \
  --checkpoint=master \
  [--cache_dir=<path to cache directory>]

علامة checkpoint هي التزام أو فرع أو علامة من TensorFlow repo التي تريد سحبها قبل إنشاء المكتبات ؛ بشكل افتراضي هو أحدث فرع إصدار. سيؤدي الأمر أعلاه إلى إنشاء ملف AAR tensorflow-lite.aar أجل TensorFlow Lite المدمج في العمليات والمخصصة واختياريا ملف AAR tensorflow-lite-select-tf-ops.aar لـ Select TensorFlow ops في دليلك الحالي.

يحدد --cache_dir دليل ذاكرة التخزين المؤقت. إذا لم يتم توفيره ، فسيقوم البرنامج النصي بإنشاء دليل باسم bazel-build-cache ضمن دليل العمل الحالي للتخزين المؤقت.

أضف ملفات AAR إلى المشروع

أضف ملفات AAR عن طريق استيراد AAR مباشرة إلى مشروعك ، أو عن طريقنشر AAR المخصص إلى مستودع Maven المحلي الخاص بك . لاحظ أنه يجب عليك إضافة ملفات AAR لـ tensorflow-lite-select-tf-ops.aar أيضًا إذا قمت بإنشائه.