تصف هذه الصفحة كيفية إنشاء مكتبة 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 \
-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
مواصفات اختبارات 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 ، يتم إنشاء الاختبارات الناتجة باستخدام تسميتين مختلفتين (باستخدام نفس الاختبار القابل للتنفيذ): - عادي - تدل على الاختبارات تلك التي تعمل على الواجهة الخلفية لوحدة المعالجة المركزية - مفوض - تشير إلى الاختبارات التي تتوقع وسيطات تشغيل إضافية مستخدمة لمواصفات المفوض المستخدمة
يتوفر كل من 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 |
تصف هذه الصفحة كيفية إنشاء مكتبة 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 \
-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
مواصفات اختبارات 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 ، يتم إنشاء الاختبارات الناتجة باستخدام تسميتين مختلفتين (باستخدام نفس الاختبار القابل للتنفيذ): - عادي - تدل على الاختبارات تلك التي تعمل على الواجهة الخلفية لوحدة المعالجة المركزية - مفوض - تشير إلى الاختبارات التي تتوقع وسيطات تشغيل إضافية مستخدمة لمواصفات المفوض المستخدمة
يتوفر كل من 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 |