Bu sayfa, TensorFlow Lite kitaplığının CMake aracıyla nasıl oluşturulacağını ve kullanılacağını açıklar.
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ı yükleyin
CMake 3.16 veya üstünü gerektirir. Ubuntu'da aşağıdaki komutu basitçe çalıştırabilirsiniz.
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
Adım 4. Konfigürasyonlarla CMake aracını çalıştırın
Sürüm derlemesi
Varsayılan olarak optimize edilmiş bir sürüm ikili dosyası oluşturur. İş istasyonunuz için derleme yapmak istiyorsanız, aşağıdaki komutu çalıştırmanız yeterlidir.
cmake ../tensorflow_src/tensorflow/lite
Hata ayıklama derlemesi
Sembol bilgisine sahip bir hata ayıklama yapısı oluşturmanız gerekiyorsa, -DCMAKE_BUILD_TYPE=Debug
seçeneğini sağlamanız gerekir.
cmake ../tensorflow_src/tensorflow/lite -DCMAKE_BUILD_TYPE=Debug
Çekirdek birim testleri ile derleme
Ç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 da 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ızı gösterecek şekilde ayarlayabilirsiniz.
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
çapraz derleme
ARM64 veya Android hedef mimarileri için ikili dosyalar oluşturmak için CMake'i kullanabilirsiniz.
TF Lite'ı çapraz derlemek için, -DCMAKE_TOOLCHAIN_FILE
bayrağıyla SDK'ya giden yolu (örneğin Android'in 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'yı yüklemeniz ve NDK yolunu yukarıda belirtilen -DCMAKE_TOOLCHAIN_FILE
bayrağıyla sağlamanız gerekir. Ayrıca -DANDROID_ABI
bayrağıyla hedef ABI'yi ayarlamanız gerekir.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Çekirdek (birim) testleri çapraz derlemenin özellikleri
Birim testlerinin çapraz derlenmesi, ana bilgisayar mimarisi için düz derleyici gerektirir. Bu amaçla, tensorflow/lite/tools/cmake/native_tools/flatbuffers
içinde, ana bilgisayar araç zincirini kullanarak ayrı bir derleme dizininde CMake ile flatc derleyicisini önceden oluşturmak için bir CMakeLists bulunur.
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 kurmak da mümkündür (örneğin, CMake derleme 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, yerel düzc ikili dosyasını içeren dizine işaret eden -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
ek parametresinin, yukarıda belirtilen -DTFLITE_KERNEL_TEST=on
bayrağıyla birlikte sağlanması gerekir.
cmake -DCMAKE_TOOLCHAIN_FILE=${OE_CMAKE_TOOLCHAIN_FILE} -DTFLITE_KERNEL_TEST=on -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path> ../tensorflow/lite/
Hedefte çapraz derlenmiş çekirdek (birim) testleri başlatıldı
Birim testleri, ayrı yürütülebilir dosyalar olarak veya CTest yardımcı programı kullanılarak çalıştırılabilir. CTest söz konusu olduğunda, TF Lite derlemesi için TFLITE_ENABLE_NNAPI, TFLITE_ENABLE_XNNPACK
veya TFLITE_EXTERNAL_DELEGATE
parametrelerinden en az biri etkinleştirilirse, elde edilen testler iki farklı etiketle oluşturulur (aynı test yürütülebilir dosyasını kullanarak): - düz - testleri belirtir CPU arka ucunda çalışan - temsilci - kullanılan delege belirtimi için kullanılan ek başlatma argümanları 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 ucu ile birim testlerinin başlatılması (geçerli dizinde hedefte CTestTestfile.cmake
bulunması şartıyla):
ctest -L plain
Temsilcileri kullanarak birim testlerinin örneklerini başlatın (geçerli dizinde hedefte CTestTestfile.cmake
ve run-tests.cmake
dosyasının bulunması şartıyla):
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 temsilciyle ilgili ek başlatma argümanları sağlamanın bu yolunun bilinen bir sınırlaması , yalnızca beklenen getiri değeri 0 olanları etkili bir şekilde desteklemesidir. Farklı dönüş değerleri bir test hatası olarak rapor edilecektir.
OpenCL GPU temsilcisi
Hedef makinenizde OpenCL desteği varsa, GPU gücünüzden yararlanabilecek GPU temsilcisini kullanabilirsiniz.
OpenCL GPU temsilci desteğini yapılandırmak için:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
Adım 5. TensorFlow Lite'ı Oluşturun
tflite_build dizininde,
cmake --build . -j
Adım 6. TensorFlow Lite Karşılaştırma Aracı ve Etiket Resmi Örneği Oluşturun (İsteğe Bağlı)
tflite_build dizininde,
cmake --build . -j -t benchmark_model
tutucu17 l10n-yercmake --build . -j -t label_image
TensorFlow Lite oluşturmak için Mevcut 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 | ÜZERİNDE | KAPALI | KAPALI | KAPALI |
TFLITE_ENABLE_NNAPI | NNAPI temsilcisini etkinleştir | ÜZERİNDE | KAPALI | Yok | Yok |
TFLITE_ENABLE_GPU | GPU temsilcisini etkinleştir | KAPALI | KAPALI | Yok | Yok |
TFLITE_ENABLE_XNNPACK | XNNPACK temsilcisini etkinleştir | ÜZERİNDE | ÜZERİNDE | ÜZERİNDE | ÜZERİNDE |
TFLITE_ENABLE_MMAP | MMAP'yi etkinleştir | ÜZERİNDE | ÜZERİNDE | ÜZERİNDE | Yok |
TensorFlow Lite kullanan bir CMake projesi oluşturun
TFLite minimal örneğinin CMakeLists.txt dosyası burada.
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 adım 1 ila adım 3'ü 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 |