עמוד זה מתאר כיצד לבנות ולהשתמש בספריית TensorFlow Lite עם כלי CMake .
ההוראות הבאות נבדקו על אובונטו 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 ומעלה. באובונטו, אתה יכול פשוט להפעיל את הפקודה הבאה.
sudo apt-get install cmake
או שאתה יכול לעקוב אחר מדריך ההתקנה הרשמי של cmake
שלב 2. שיבוט מאגר TensorFlow
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
שלב 3. צור ספריית CMake build
mkdir tflite_build
cd tflite_build
שלב 4. הפעל את כלי CMake עם תצורות
שחרר build
זה יוצר גרסה בינארית אופטימלית כברירת מחדל. אם אתה רוצה לבנות עבור תחנת העבודה שלך, פשוט הפעל את הפקודה הבאה.
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 או אנדרואיד.
על מנת לבצע קומפילציה צולבת של TF Lite, אתה צריך לספק את הנתיב ל-SDK (למשל ARM64 SDK או NDK במקרה של אנדרואיד) עם דגל -DCMAKE_TOOLCHAIN_FILE
.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
פרטים של קומפילציה צולבת של אנדרואיד
עבור הידור צולב של 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
פרטים ספציפיים של בדיקות ליבה (יחידה) קומפילציה צולבת
קומפילציה צולבת של בדיקות היחידה דורשת מהדר flatc עבור ארכיטקטורת המארח. לצורך כך, קיים CMakeLists הממוקם ב- tensorflow/lite/tools/cmake/native_tools/flatbuffers
כדי לבנות את מהדר flatc עם CMake מראש בספריית build נפרדת באמצעות שרשרת הכלים המארח.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
אפשר גם להתקין את ה- flatc למיקום התקנה מותאם אישית (למשל לספרייה המכילה כלים אחרים שנבנו באופן מקורי במקום ספריית ה-Build 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 build, הבדיקות המתקבלות נוצרות עם שתי תוויות שונות (בשימוש באותו קובץ הפעלה לבדיקה): - רגיל - מציין את הבדיקות אלה פועלים ב-CPU backend - delegate - מציינים את הבדיקות המצפים לארגומנטים של השקה נוספים המשמשים למפרט הנציג בשימוש
הן CTestTestfile.cmake
והן run-tests.cmake
(כפי שיוצג להלן) זמינים ב- <build_dir>/kernels
.
השקת בדיקות יחידה עם CPU backend (בתנאי שה- 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 Delegate שיכול למנף את כוח ה-GPU שלך.
כדי להגדיר תמיכת נציגים של OpenCL GPU:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
שלב 5. בניית TensorFlow Lite
בספריית tflite_build
,
cmake --build . -j
שלב 6. בניית TensorFlow Lite Benchmark Tool ודוגמה לתמונת תווית (אופציונלי)
בספריית 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 .
ההוראות הבאות נבדקו על אובונטו 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 ומעלה. באובונטו, אתה יכול פשוט להפעיל את הפקודה הבאה.
sudo apt-get install cmake
או שאתה יכול לעקוב אחר מדריך ההתקנה הרשמי של cmake
שלב 2. שיבוט מאגר TensorFlow
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
שלב 3. צור ספריית CMake build
mkdir tflite_build
cd tflite_build
שלב 4. הפעל את כלי CMake עם תצורות
שחרר build
זה יוצר גרסה בינארית אופטימלית כברירת מחדל. אם אתה רוצה לבנות עבור תחנת העבודה שלך, פשוט הפעל את הפקודה הבאה.
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 או אנדרואיד.
על מנת לבצע קומפילציה צולבת של TF Lite, אתה צריך לספק את הנתיב ל-SDK (למשל ARM64 SDK או NDK במקרה של אנדרואיד) עם דגל -DCMAKE_TOOLCHAIN_FILE
.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
פרטים של קומפילציה צולבת של אנדרואיד
עבור הידור צולב של 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
פרטים ספציפיים של בדיקות ליבה (יחידה) קומפילציה צולבת
קומפילציה צולבת של בדיקות היחידה דורשת מהדר flatc עבור ארכיטקטורת המארח. לצורך כך, קיים CMakeLists הממוקם ב- tensorflow/lite/tools/cmake/native_tools/flatbuffers
כדי לבנות את מהדר flatc עם CMake מראש בספריית build נפרדת באמצעות שרשרת הכלים המארח.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
אפשר גם להתקין את ה- flatc למיקום התקנה מותאם אישית (למשל לספרייה המכילה כלים אחרים שנבנו באופן מקורי במקום ספריית ה-Build 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 build, הבדיקות המתקבלות נוצרות עם שתי תוויות שונות (בשימוש באותו קובץ הפעלה לבדיקה): - רגיל - מציין את הבדיקות אלה פועלים ב-CPU backend - delegate - מציינים את הבדיקות המצפים לארגומנטים של השקה נוספים המשמשים למפרט הנציג בשימוש
הן CTestTestfile.cmake
והן run-tests.cmake
(כפי שיוצג להלן) זמינים ב- <build_dir>/kernels
.
השקת בדיקות יחידה עם CPU backend (בתנאי שה- 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 Delegate שיכול למנף את כוח ה-GPU שלך.
כדי להגדיר תמיכת נציגים של OpenCL GPU:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
שלב 5. בניית TensorFlow Lite
בספריית tflite_build
,
cmake --build . -j
שלב 6. בניית TensorFlow Lite Benchmark Tool ודוגמה לתמונת תווית (אופציונלי)
בספריית 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 |