Bu sayfada, TensorFlow Lite kitaplığının CMake aracıyla nasıl oluşturulacağı ve kullanılacağı açıklanmaktadır.
Aşağıdaki talimatlar Ubuntu 16.04.3 64-bit PC (AMD64), macOS Catalina (x86_64), Windows 10 ve TensorFlow devel Docker image tensorflow/tensorflow:devel üzerinde test edilmiştir.
Adım 1. CMake aracını kurun
CMake 3.16 veya üstü gerektirir. Ubuntu'da aşağıdaki komutu çalıştırmanız yeterlidir.
sudo apt-get install cmake
Veya resmi cmake kurulum kılavuzunu takip edebilirsiniz.
Adım 2. TensorFlow deposunu klonlayın
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
Adım 3. CMake derleme dizini oluşturun
mkdir tflite_build
cd tflite_build
4. Adım. CMake aracını yapılandırmalarla çalıştırın
Yapıyı yayınla
Varsayılan olarak optimize edilmiş bir sürüm ikili dosyası oluşturur. İş istasyonunuz için oluşturmak istiyorsanız, aşağıdaki komutu çalıştırmanız yeterlidir.
cmake ../tensorflow_src/tensorflow/lite
Yapıda hata ayıklama
Sembol bilgisine sahip bir hata ayıklama yapısı üretmeniz gerekiyorsa, -DCMAKE_BUILD_TYPE=Debug
seçeneğini sağlamanız gerekir.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
Çekirdek birim testleriyle oluşturun
Çekirdek testlerini çalıştırabilmek için -DTFLITE_KERNEL_TEST=on
bayrağını sağlamanız gerekir. Birim testi çapraz derleme özellikleri bir sonraki alt bölümde bulunabilir.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
Kurulabilir paket oluşturun
find_package(tensorflow-lite CONFIG)
ile başka bir CMake projesi tarafından bağımlılık olarak kullanılabilecek kurulabilir bir paket oluşturmak için -DTFLITE_ENABLE_INSTALL=ON
seçeneğini kullanın.
İdeal olarak, kendi kitaplık bağımlılık sürümlerinizi de sağlamalısınız. Bunların ayrıca TF Lite'a bağlı proje tarafından kullanılması gerekecektir. -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
kullanabilir ve <PackageName>_DIR
değişkenlerini kitaplık kurulumlarınıza işaret edecek şekilde ayarlayabilirsiniz.
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
çapraz derleme
ARM64 veya Android hedef mimarileri için ikili dosyalar oluşturmak üzere CMake'i kullanabilirsiniz.
TF Lite'ı çapraz derlemek için, yani -DCMAKE_TOOLCHAIN_FILE
bayrağıyla SDK'ya giden yolu (örneğin, Android durumunda ARM64 SDK veya NDK) sağlamanız gerekir.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Android çapraz derlemesinin özellikleri
Android çapraz derlemesi için, Android NDK'yi yüklemeniz ve yukarıda belirtilen -DCMAKE_TOOLCHAIN_FILE
bayrağıyla NDK yolunu sağlamanız gerekir. Ayrıca -DANDROID_ABI
bayrağıyla hedef ABI belirlemeniz gerekir.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Çekirdek (birim) testleri çapraz derlemesinin özellikleri
Birim testlerinin çapraz derlemesi, ana bilgisayar mimarisi için düzc derleyici gerektirir. Bu amaçla, ana araç zincirini kullanarak ayrı bir yapı dizininde önceden CMake ile düzc derleyicisini oluşturmak için tensorflow/lite/tools/cmake/native_tools/flatbuffers
konumunda bulunan bir CMakeLists vardır.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
Flatc'yi özel bir kurulum konumuna da kurmak mümkündür (örn. CMake yapı dizini yerine yerel olarak oluşturulmuş diğer araçları içeren bir dizine):
cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
TF Lite çapraz derlemesinin kendisi için, yukarıda bahsedilen -DTFLITE_KERNEL_TEST=on
bayrağıyla birlikte yerel flatc ikilisini içeren dizini işaret eden -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
ek parametresinin sağlanması gerekir.
cmake -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} -DTFLITE_KERNEL_TEST=on -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> ../tensorflow/lite/
Çapraz derlenmiş çekirdek (birim) testleri hedefte başlatılır
Birim testleri, ayrı yürütülebilir dosyalar olarak veya CTest yardımcı programı kullanılarak çalıştırılabilir. CTest ile ilgili olarak, TF Lite yapısı için TFLITE_ENABLE_NNAPI, TFLITE_ENABLE_XNNPACK
veya TFLITE_EXTERNAL_DELEGATE
parametrelerinden en az biri etkinleştirilirse, ortaya çıkan testler iki farklı etiketle oluşturulur (aynı test yürütülebilir dosyasını kullanarak): - düz - testleri belirtir CPU arka ucunda çalıştırılanlar - temsilci - kullanılan temsilci belirtimi için kullanılan ek başlatma bağımsız değişkenlerini bekleyen testleri belirtir
Hem CTestTestfile.cmake
hem de run-tests.cmake
(aşağıda belirtildiği gibi) <build_dir>/kernels
içinde mevcuttur.
CPU arka ucuyla birim testlerinin başlatılması ( CTestTestfile.cmake
geçerli dizinde hedefte bulunması koşuluyla):
ctest -L plain
Delegeler kullanarak birim testi başlatma örnekleri ( CTestTestfile.cmake
ve run-tests.cmake
dosyasının geçerli dizinde hedefte bulunması koşuluyla):
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
Birim testlerine temsilci ile ilgili ek başlatma bağımsız değişkenleri sağlamanın bu yolunun bilinen bir sınırlaması , yalnızca 0 beklenen dönüş değerine sahip olanları etkili bir şekilde desteklemesidir. Farklı dönüş değerleri test hatası olarak bildirilecektir.
OpenCL GPU temsilcisi
Hedef makinenizde OpenCL desteği varsa, GPU gücünüzü artırabilen GPU temsilcisini kullanabilirsiniz.
OpenCL GPU temsilci desteğini yapılandırmak için:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
5. Adım. TensorFlow Lite'ı oluşturun
tflite_build
dizininde,
cmake --build . -j
6. Adım. TensorFlow Lite Karşılaştırma Aracı ve Etiket Görüntüsü Örneği Oluşturun (İsteğe Bağlı)
tflite_build
dizininde,
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
TensorFlow Lite oluşturmak için Kullanılabilir Seçenekler
İşte mevcut seçeneklerin listesi. -D<option_name>=[ON|OFF]
ile geçersiz kılabilirsiniz. Örneğin, varsayılan olarak etkin olan XNNPACK'i devre dışı bırakmak için -DTFLITE_ENABLE_XNNPACK=OFF
.
Seçenek Adı | Özellik | Android | linux | Mac os işletim sistemi | pencereler |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY | RUY matris çarpım kitaplığını etkinleştir | AÇIK | KAPALI | KAPALI | KAPALI |
TFLITE_ENABLE_NNAPI | NNAPI temsilcisini etkinleştir | AÇIK | KAPALI | Yok | Yok |
TFLITE_ENABLE_GPU | GPU temsilcisini etkinleştir | KAPALI | KAPALI | Yok | Yok |
TFLITE_ENABLE_XNNPACK | XNNPACK temsilcisini etkinleştir | AÇIK | AÇIK | AÇIK | AÇIK |
TFLITE_ENABLE_MMAP | MMAP'ı etkinleştir | AÇIK | AÇIK | AÇIK | Yok |
TensorFlow Lite kullanan bir CMake projesi oluşturun
İşte TFLite minimal örneğinin CMakeLists.txt dosyası.
TensorFlow Lite dizini için add_subdirectory()'ye sahip olmanız ve tensorflow-lite
target_link_libraries() ile bağlamanız gerekir.
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 kitaplığı oluşturun
C API için TensorFlow Lite paylaşılan kitaplığı oluşturmak istiyorsanız, önce 1. adımdan 3. adıma kadar olan adımları izleyin. Bundan sonra, aşağıdaki komutları çalıştırın.
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j
Bu komut, geçerli dizinde aşağıdaki paylaşılan kitaplığı oluşturur.
platformu | kitaplık adı |
---|---|
linux | libtensorflowlite_c.so |
Mac os işletim sistemi | libtensorflowlite_c.dylib |
pencereler | tensorflowlite_c.dll |
Bu sayfada, TensorFlow Lite kitaplığının CMake aracıyla nasıl oluşturulacağı ve kullanılacağı açıklanmaktadır.
Aşağıdaki talimatlar Ubuntu 16.04.3 64-bit PC (AMD64), macOS Catalina (x86_64), Windows 10 ve TensorFlow devel Docker image tensorflow/tensorflow:devel üzerinde test edilmiştir.
Adım 1. CMake aracını kurun
CMake 3.16 veya üstü gerektirir. Ubuntu'da aşağıdaki komutu çalıştırmanız yeterlidir.
sudo apt-get install cmake
Veya resmi cmake kurulum kılavuzunu takip edebilirsiniz.
Adım 2. TensorFlow deposunu klonlayın
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
Adım 3. CMake derleme dizini oluşturun
mkdir tflite_build
cd tflite_build
4. Adım. CMake aracını yapılandırmalarla çalıştırın
Yapıyı yayınla
Varsayılan olarak optimize edilmiş bir sürüm ikili dosyası oluşturur. İş istasyonunuz için oluşturmak istiyorsanız, aşağıdaki komutu çalıştırmanız yeterlidir.
cmake ../tensorflow_src/tensorflow/lite
Yapıda hata ayıklama
Sembol bilgisine sahip bir hata ayıklama yapısı üretmeniz gerekiyorsa, -DCMAKE_BUILD_TYPE=Debug
seçeneğini sağlamanız gerekir.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
Çekirdek birim testleriyle oluşturun
Çekirdek testlerini çalıştırabilmek için -DTFLITE_KERNEL_TEST=on
bayrağını sağlamanız gerekir. Birim testi çapraz derleme özellikleri bir sonraki alt bölümde bulunabilir.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
Kurulabilir paket oluşturun
find_package(tensorflow-lite CONFIG)
ile başka bir CMake projesi tarafından bağımlılık olarak kullanılabilecek kurulabilir bir paket oluşturmak için -DTFLITE_ENABLE_INSTALL=ON
seçeneğini kullanın.
İdeal olarak, kendi kitaplık bağımlılık sürümlerinizi de sağlamalısınız. Bunların ayrıca TF Lite'a bağlı proje tarafından kullanılması gerekecektir. -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
kullanabilir ve <PackageName>_DIR
değişkenlerini kitaplık kurulumlarınıza işaret edecek şekilde ayarlayabilirsiniz.
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
çapraz derleme
ARM64 veya Android hedef mimarileri için ikili dosyalar oluşturmak üzere CMake'i kullanabilirsiniz.
TF Lite'ı çapraz derlemek için, yani -DCMAKE_TOOLCHAIN_FILE
bayrağıyla SDK'ya giden yolu (örneğin, Android durumunda ARM64 SDK veya NDK) sağlamanız gerekir.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Android çapraz derlemesinin özellikleri
Android çapraz derlemesi için, Android NDK'yi yüklemeniz ve yukarıda belirtilen -DCMAKE_TOOLCHAIN_FILE
bayrağıyla NDK yolunu sağlamanız gerekir. Ayrıca -DANDROID_ABI
bayrağıyla hedef ABI belirlemeniz gerekir.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Çekirdek (birim) testleri çapraz derlemesinin özellikleri
Birim testlerinin çapraz derlemesi, ana bilgisayar mimarisi için düzc derleyici gerektirir. Bu amaçla, ana araç zincirini kullanarak ayrı bir yapı dizininde önceden CMake ile düzc derleyicisini oluşturmak için tensorflow/lite/tools/cmake/native_tools/flatbuffers
konumunda bulunan bir CMakeLists vardır.
mkdir flatc-native-build && cd flatc-native-build
cmake ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
Flatc'yi özel bir kurulum konumuna da kurmak mümkündür (örn. CMake yapı dizini yerine yerel olarak oluşturulmuş diğer araçları içeren bir dizine):
cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
TF Lite çapraz derlemesinin kendisi için, yukarıda bahsedilen -DTFLITE_KERNEL_TEST=on
bayrağıyla birlikte yerel flatc ikilisini içeren dizini işaret eden -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
ek parametresinin sağlanması gerekir.
cmake -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} -DTFLITE_KERNEL_TEST=on -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> ../tensorflow/lite/
Çapraz derlenmiş çekirdek (birim) testleri hedefte başlatılır
Birim testleri, ayrı yürütülebilir dosyalar olarak veya CTest yardımcı programı kullanılarak çalıştırılabilir. CTest ile ilgili olarak, TF Lite yapısı için TFLITE_ENABLE_NNAPI, TFLITE_ENABLE_XNNPACK
veya TFLITE_EXTERNAL_DELEGATE
parametrelerinden en az biri etkinleştirilirse, ortaya çıkan testler iki farklı etiketle oluşturulur (aynı test yürütülebilir dosyasını kullanarak): - düz - testleri belirtir CPU arka ucunda çalıştırılanlar - temsilci - kullanılan temsilci belirtimi için kullanılan ek başlatma bağımsız değişkenlerini bekleyen testleri belirtir
Hem CTestTestfile.cmake
hem de run-tests.cmake
(aşağıda belirtildiği gibi) <build_dir>/kernels
içinde mevcuttur.
CPU arka ucuyla birim testlerinin başlatılması ( CTestTestfile.cmake
geçerli dizinde hedefte bulunması koşuluyla):
ctest -L plain
Delegeler kullanarak birim testi başlatma örnekleri ( CTestTestfile.cmake
ve run-tests.cmake
dosyasının geçerli dizinde hedefte bulunması koşuluyla):
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
Birim testlerine temsilci ile ilgili ek başlatma bağımsız değişkenleri sağlamanın bu yolunun bilinen bir sınırlaması , yalnızca 0 beklenen dönüş değerine sahip olanları etkili bir şekilde desteklemesidir. Farklı dönüş değerleri test hatası olarak bildirilecektir.
OpenCL GPU temsilcisi
Hedef makinenizde OpenCL desteği varsa, GPU gücünüzü artırabilen GPU temsilcisini kullanabilirsiniz.
OpenCL GPU temsilci desteğini yapılandırmak için:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
5. Adım. TensorFlow Lite'ı oluşturun
tflite_build
dizininde,
cmake --build . -j
6. Adım. TensorFlow Lite Karşılaştırma Aracı ve Etiket Görüntüsü Örneği Oluşturun (İsteğe Bağlı)
tflite_build
dizininde,
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
TensorFlow Lite oluşturmak için Kullanılabilir Seçenekler
İşte mevcut seçeneklerin listesi. -D<option_name>=[ON|OFF]
ile geçersiz kılabilirsiniz. Örneğin, varsayılan olarak etkin olan XNNPACK'i devre dışı bırakmak için -DTFLITE_ENABLE_XNNPACK=OFF
.
Seçenek Adı | Özellik | Android | linux | Mac os işletim sistemi | pencereler |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY | RUY matris çarpım kitaplığını etkinleştir | AÇIK | KAPALI | KAPALI | KAPALI |
TFLITE_ENABLE_NNAPI | NNAPI temsilcisini etkinleştir | AÇIK | KAPALI | Yok | Yok |
TFLITE_ENABLE_GPU | GPU temsilcisini etkinleştir | KAPALI | KAPALI | Yok | Yok |
TFLITE_ENABLE_XNNPACK | XNNPACK temsilcisini etkinleştir | AÇIK | AÇIK | AÇIK | AÇIK |
TFLITE_ENABLE_MMAP | MMAP'ı etkinleştir | AÇIK | AÇIK | AÇIK | Yok |
TensorFlow Lite kullanan bir CMake projesi oluşturun
İşte TFLite minimal örneğinin CMakeLists.txt dosyası.
TensorFlow Lite dizini için add_subdirectory()'ye sahip olmanız ve tensorflow-lite
target_link_libraries() ile bağlamanız gerekir.
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 kitaplığı oluşturun
C API için TensorFlow Lite paylaşılan kitaplığı oluşturmak istiyorsanız, önce 1. adımdan 3. adıma kadar olan adımları izleyin. Bundan sonra, aşağıdaki komutları çalıştırın.
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j
Bu komut, geçerli dizinde aşağıdaki paylaşılan kitaplığı oluşturur.
platformu | kitaplık adı |
---|---|
linux | libtensorflowlite_c.so |
Mac os işletim sistemi | libtensorflowlite_c.dylib |
pencereler | tensorflowlite_c.dll |