تصف هذه الصفحة كيفية إنشاء مكتبة TensorFlow Lite واستخدامها باستخدام أداة CMake .
تم اختبار الإرشادات التالية على Ubuntu 16.04.3 64-bit PC (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 \
-Dabsl_DIR=<install path>/lib/cmake/absl \
-DEigen3_DIR=<install path>/share/eigen3/cmake \
-DFlatbuffers_DIR=<install path>/lib/cmake/flatbuffers \
-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
مواصفات اختبارات kernel (الوحدة) عبر التجميع
يتطلب التجميع المتقاطع لاختبارات الوحدة مترجمًا مسطحًا لمعمارية المضيف. لهذا الغرض ، توجد قوائم 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 build):
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/
يتم تشغيل اختبارات kernel (الوحدة) المجمعة على الهدف
يمكن تشغيل اختبارات الوحدة كملفات تنفيذية منفصلة أو باستخدام الأداة المساعدة CTest. بقدر ما يتعلق الأمر بـ CTest ، إذا تم تمكين واحدة على الأقل من المعلمات TFLITE_ENABLE_NNAPI, TFLITE_ENABLE_XNNPACK
أو TFLITE_EXTERNAL_DELEGATE
لبناء TF Lite ، يتم إنشاء الاختبارات الناتجة باستخدام تسميتين مختلفتين (باستخدام نفس الاختبار القابل للتنفيذ): - عادي - تدل على الاختبارات تلك التي تعمل على خلفية وحدة المعالجة المركزية (CPU) - مفوض - تشير إلى الاختبارات التي تتوقع وسيطات تشغيل إضافية مستخدمة لمواصفات المفوض المستخدمة
يتوفر كل من 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 الذي يمكنه الاستفادة من قوة وحدة معالجة الرسومات الخاصة بك.
لتكوين دعم مفوض OpenCL GPU:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
الخطوة 5. قم ببناء TensorFlow Lite
في دليل tflite_build ،
cmake --build . -j
الخطوة السادسة: إنشاء أداة قياس الأداء 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 الذي يتم تمكينه افتراضيًا.
اسم الخيار | ميزة | ذكري المظهر | لينكس | macOS | شبابيك |
---|---|---|---|---|---|
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
يقوم هذا الأمر بإنشاء المكتبة المشتركة التالية في الدليل الحالي.
برنامج | اسم المكتبة |
---|---|
لينكس | libtensorflowlite_c.so |
macOS | libtensorflowlite_c.dylib |
شبابيك | tensorflowlite_c.dll |