توضّح هذه الصفحة كيفية إنشاء مكتبة TensorFlow Lite واستخدامها باستخدام أداة CMake.
تم اختبار التعليمات التالية على أجهزة الكمبيوتر الشخصي التي تعمل بالإصدار 16.04.3 من Ubuntu 16.04.3 64 بت (AMD64) وmacOS Catalina (x86_64) وWindows 10 وTensorFlow Devel Docker tensorflow/tensorflow:devel.
الخطوة 1. تثبيت أداة CMake
ويتطلب الإصدار 3.16 من CMake أو إصدار أحدث. على 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
التصميم باستخدام اختبارات وحدات النواة
بهدف إجراء اختبارات النواة، عليك تقديم العلامة
-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
لإنشاء برنامج التحويل البرمجي لل مسطّحة مع 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، إذا تم تفعيل معلمة على الأقلor
يتوفر كل من CTestTestfile.cmake
وrun-tests.cmake
(كما هو موضح أدناه) في <build_dir>/kernels
.
تم إطلاق اختبارات الوحدات باستخدام واجهة وحدة المعالجة المركزية (CPU) (شرط أن تكون السمة CTestTestfile.cmake
موجودة في الدليل الحالي):
ctest -L plain
إطلاق أمثلة لاختبارات الوحدات باستخدام المفوَّضين (شرط أن يكون ملف CTestTestfile.cmake
وrun-tests.cmake
متوفّرًا في الدليل الحالي):
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
إذا كان جهازك المستهدف متوافقًا مع OpenCL، يمكنك استخدام تفويض وحدة معالجة الرسومات الذي يمكنه الاستفادة من طاقة وحدة معالجة الرسومات.
لضبط دعم تفويض وحدة معالجة الرسومات OpenCL:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
الخطوة الخامسة. إصدار 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 المفعَّل تلقائيًا.
اسم الخيار | الميزة | Android | Linux | macOS | Windows |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY
|
تفعيل مكتبة ضرب مصفوفة RUY | مفعَّلة | إيقاف | إيقاف | إيقاف |
TFLITE_ENABLE_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
يُنشئ هذا الأمر المكتبة المشتركة التالية في الدليل الحالي.
النظام الأساسي | اسم المكتبة |
---|---|
Linux | libtensorflowlite_c.so |
macOS | libtensorflowlite_c.dylib |
Windows | tensorflowlite_c.dll |