توضح هذه الصفحة كيفية إنشاء واستخدام مكتبة TensorFlow Lite باستخدام أداة CMake .
تم اختبار الإرشادات التالية على Ubuntu 16.04.3 PC 64 بت (AMD64) وmacOS Catalina (x86_64) وWindows 10 وTensorFlow devel Docker image Tensorflow/tensorflow:devel .
الخطوة 1. قم بتثبيت أداة CMake
يتطلب CMake 3.16 أو أعلى. على Ubuntu، يمكنك ببساطة تشغيل الأمر التالي.
sudo apt-get install cmake
أو يمكنك اتباع دليل تثبيت cmake الرسمي
الخطوة 2. استنساخ مستودع TensorFlow
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
الخطوة 3. إنشاء دليل بناء CMake
mkdir tflite_build
cd tflite_build
الخطوة 4. قم بتشغيل أداة CMake مع التكوينات
الافراج عن البناء
يقوم بإنشاء إصدار ثنائي محسّن بشكل افتراضي. إذا كنت ترغب في إنشاء محطة العمل الخاصة بك، فما عليك سوى تشغيل الأمر التالي.
cmake ../tensorflow_src/tensorflow/lite
بناء التصحيح
إذا كنت بحاجة إلى إنشاء نسخة تصحيح أخطاء تحتوي على معلومات الرمز، فأنت بحاجة إلى توفير خيار -DCMAKE_BUILD_TYPE=Debug
.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
البناء باستخدام اختبارات وحدة النواة
لتتمكن من تشغيل اختبارات kernel، تحتاج إلى توفير العلامة -DTFLITE_KERNEL_TEST=on
. يمكن العثور على تفاصيل التجميع المتقاطع لاختبار الوحدة في القسم الفرعي التالي.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
بناء حزمة قابلة للتثبيت
لإنشاء حزمة قابلة للتثبيت يمكن استخدامها كتبعية بواسطة مشروع CMake آخر باستخدام find_package(tensorflow-lite CONFIG)
، استخدم الخيار -DTFLITE_ENABLE_INSTALL=ON
.
يجب عليك أيضًا توفير الإصدارات الخاصة بك من تبعيات المكتبة. ستحتاج هذه أيضًا إلى استخدامها من قبل المشروع الذي يعتمد على TF Lite. يمكنك استخدام -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
وتعيين متغيرات <PackageName>_DIR
للإشارة إلى عمليات تثبيت مكتبتك.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_INSTALL=ON \
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON \
-DSYSTEM_FARMHASH=ON \
-DSYSTEM_PTHREADPOOL=ON \
-Dabsl_DIR=<install path>/lib/cmake/absl \
-DEigen3_DIR=<install path>/share/eigen3/cmake \
-DFlatBuffers_DIR=<install path>/lib/cmake/flatbuffers \
-Dgemmlowp_DIR=<install path>/lib/cmake/gemmlowp \
-DNEON_2_SSE_DIR=<install path>/lib/cmake/NEON_2_SSE \
-Dcpuinfo_DIR=<install path>/share/cpuinfo \
-Druy_DIR=<install path>/lib/cmake/ruy
التجميع المتقاطع
يمكنك استخدام CMake لإنشاء ثنائيات لبنيات ARM64 أو Android المستهدفة.
من أجل تجميع TF Lite، تحتاج على وجه التحديد إلى توفير المسار إلى SDK (على سبيل المثال ARM64 SDK أو NDK في حالة Android) مع علامة -DCMAKE_TOOLCHAIN_FILE
.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
تفاصيل التجميع المتقاطع لنظام Android
بالنسبة للتجميع المشترك لنظام Android، تحتاج إلى تثبيت Android NDK وتوفير مسار NDK مع علامة -DCMAKE_TOOLCHAIN_FILE
المذكورة أعلاه. تحتاج أيضًا إلى تعيين واجهة ABI المستهدفة باستخدام علامة -DANDROID_ABI
.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
تفاصيل اختبارات النواة (الوحدة) التجميع المتقاطع
يتطلب التجميع المتقاطع لاختبارات الوحدة مترجمًا مسطحًا للبنية المضيفة. لهذا الغرض، توجد قوائم CMakeLists الموجودة في tensorflow/lite/tools/cmake/native_tools/flatbuffers
لإنشاء مترجم flatc مع CMake مقدمًا في دليل بناء منفصل باستخدام سلسلة أدوات المضيف.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
من الممكن أيضًا تثبيت flatc في موقع تثبيت مخصص (على سبيل المثال، إلى دليل يحتوي على أدوات أخرى تم إنشاؤها محليًا بدلاً من دليل إنشاء CMake):
cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
بالنسبة للتجميع المتبادل لـ TF Lite نفسه، يجب توفير المعلمة الإضافية -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
التي تشير إلى الدليل الذي يحتوي على الملف الثنائي flatc الأصلي مع العلامة -DTFLITE_KERNEL_TEST=on
المذكورة أعلاه.
cmake -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} -DTFLITE_KERNEL_TEST=on -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> ../tensorflow/lite/
يتم إطلاق اختبارات النواة (الوحدة) المترجمة على الهدف
يمكن تشغيل اختبارات الوحدة كملفات تنفيذية منفصلة أو باستخدام الأداة المساعدة CTest. بقدر ما يتعلق الأمر بـ CTest، إذا تم تمكين واحد على الأقل من المعلمات TFLITE_ENABLE_NNAPI, TFLITE_ENABLE_XNNPACK
أو TFLITE_EXTERNAL_DELEGATE
لبناء TF Lite، فسيتم إنشاء الاختبارات الناتجة بمسميتين مختلفتين (باستخدام نفس الاختبار القابل للتنفيذ): - عادي - للإشارة إلى الاختبارات يتم تشغيل تلك الاختبارات على الواجهة الخلفية لوحدة المعالجة المركزية - المفوض - للإشارة إلى الاختبارات التي تتوقع وسائط تشغيل إضافية مستخدمة لمواصفات المفوض المستخدمة
يتوفر كل من CTestTestfile.cmake
و run-tests.cmake
(كما هو مشار إليه أدناه) في <build_dir>/kernels
.
إطلاق اختبارات الوحدة باستخدام الواجهة الخلفية لوحدة المعالجة المركزية (شريطة أن يكون CTestTestfile.cmake
موجودًا على الهدف في الدليل الحالي):
ctest -L plain
إطلاق أمثلة لاختبارات الوحدة باستخدام المفوضين (شريطة وجود CTestTestfile.cmake
بالإضافة إلى ملف run-tests.cmake
على الهدف في الدليل الحالي):
cmake -E env TESTS_ARGUMENTS=--use_nnapi=true\;--nnapi_accelerator_name=vsi-npu ctest -L delegate
cmake -E env TESTS_ARGUMENTS=--use_xnnpack=true ctest -L delegate
cmake -E env TESTS_ARGUMENTS=--external_delegate_path=<PATH> ctest -L delegate
أحد القيود المعروفة لهذه الطريقة في توفير وسيطات تشغيل إضافية متعلقة بالمفوض لاختبارات الوحدة هو أنها تدعم بشكل فعال فقط تلك التي لها قيمة إرجاع متوقعة تبلغ 0 . سيتم الإبلاغ عن قيم الإرجاع المختلفة كفشل اختبار.
مندوب OpenCL GPU
إذا كان جهازك المستهدف يتمتع بدعم OpenCL، فيمكنك استخدام مندوب GPU الذي يمكنه الاستفادة من قوة GPU لديك.
لتكوين دعم مندوب OpenCL GPU:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
الخطوة 5. إنشاء TensorFlow Lite
في الدليل tflite_build
،
cmake --build . -j
الخطوة 6. إنشاء أداة قياس الأداء TensorFlow Lite ومثال لصورة التسمية (اختياري)
في الدليل tflite_build
،
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
الخيارات المتاحة لبناء TensorFlow Lite
هنا قائمة الخيارات المتاحة. يمكنك تجاوزه باستخدام -D<option_name>=[ON|OFF]
. على سبيل المثال، -DTFLITE_ENABLE_XNNPACK=OFF
لتعطيل XNNPACK الذي يتم تمكينه افتراضيًا.
اسم الخيار | ميزة | ذكري المظهر | لينكس | ماك | شبابيك |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY | تمكين مكتبة مضاعفة مصفوفة RUY | على | عن | عن | عن |
TFLITE_ENABLE_NNAPI | تمكين مندوب NNAPI | على | عن | لا يوجد | لا يوجد |
TFLITE_ENABLE_GPU | تمكين مندوب GPU | عن | عن | لا يوجد | لا يوجد |
TFLITE_ENABLE_XNNPACK | تمكين مندوب XNNPACK | على | على | على | على |
TFLITE_ENABLE_MMAP | تمكين MMAP | على | على | على | لا يوجد |
قم بإنشاء مشروع CMake الذي يستخدم TensorFlow Lite
فيما يلي مثال الحد الأدنى لملف CMakeLists.txt الخاص بـ TFLite .
يجب أن يكون لديك add_subdirectory() لدليل TensorFlow Lite وربط tensorflow-lite
مع target_link_libraries().
cmake_minimum_required(VERSION 3.16)
project(minimal C CXX)
set(TENSORFLOW_SOURCE_DIR "" CACHE PATH
"Directory that contains the TensorFlow project" )
if(NOT TENSORFLOW_SOURCE_DIR)
get_filename_component(TENSORFLOW_SOURCE_DIR
"${CMAKE_CURRENT_LIST_DIR}/../../../../" ABSOLUTE)
endif()
add_subdirectory(
"${TENSORFLOW_SOURCE_DIR}/tensorflow/lite"
"${CMAKE_CURRENT_BINARY_DIR}/tensorflow-lite" EXCLUDE_FROM_ALL)
add_executable(minimal minimal.cc)
target_link_libraries(minimal tensorflow-lite)
بناء مكتبة TensorFlow Lite C
إذا كنت تريد إنشاء مكتبة TensorFlow Lite المشتركة لـ C API ، فاتبع الخطوة 1 إلى الخطوة 3 أولاً. بعد ذلك قم بتشغيل الأوامر التالية.
لينكس / ماك
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j
شبابيك
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j --config Release
المكتبة المجمعة
يقوم الأمر أعلاه بإنشاء المكتبة المشتركة التالية في الدليل الحالي.
منصة | اسم المكتبة |
---|---|
لينكس | libtensorflowlite_c.so |
ماك | libtensorflowlite_c.dylib |
شبابيك | tensorflowlite_c.dll |