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.
1. Adım. CMake aracını yükleyin
CMake 3.16 veya üstünü 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
3. Adım. CMake derleme dizinini oluşturun
mkdir tflite_build
cd tflite_build
4. Adım. CMake aracını yapılandırmalarla çalıştırın
Derlemeyi yayınla
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
Derlemede hata ayıklama
Sembol bilgilerine 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 testleriyle derleme
Çekirdek testlerini çalıştırabilmek için -DTFLITE_KERNEL_TEST=on
bayrağını sağlamanız gerekir. Birim testi çapraz derleme özelliklerini bir sonraki alt bölümde bulabilirsiniz.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
Yüklenebilir 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, kütüphane bağımlılıklarının kendi sürümlerini de sağlamalısınız. Bunların ayrıca TF Lite'a bağlı proje tarafından da kullanılması gerekecektir. -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
komutunu kullanabilir ve <PackageName>_DIR
değişkenlerini kitaplık kurulumlarınızı 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 mimarilerine yönelik ikili dosyalar oluşturmak için CMake'i kullanabilirsiniz.
TF Lite'ı çapraz derlemek için, -DCMAKE_TOOLCHAIN_FILE
bayrağıyla SDK'nın yolunu (örneğin ARM64 SDK veya Android'in durumunda NDK) sağlamanız gerekir.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Android çapraz derlemenin ö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 hedef ABI'yi -DANDROID_ABI
bayrağıyla ayarlamanız gerekir.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Çekirdek (birim) testlerinin çapraz derlemesinin özellikleri
Birim testlerinin çapraz derlenmesi, ana bilgisayar mimarisi için düz derleyici gerektirir. Bu amaçla, CMake ile düz derleyiciyi ana bilgisayar araç zincirini kullanarak ayrı bir derleme dizininde önceden oluşturmak için tensorflow/lite/tools/cmake/native_tools/flatbuffers
konumunda 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 da kurmak 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üz kodlu ikili dosyayı içeren dizine işaret eden ek -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
parametresinin yukarıda bahsedilen -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/
Çapraz derlenmiş çekirdek (birim) testleri hedefte başlatılıyor
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, TFLITE_ENABLE_NNAPI, TFLITE_ENABLE_XNNPACK
veya TFLITE_EXTERNAL_DELEGATE
parametrelerinden en az biri TF Lite yapısı için 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ıştırılanlar - delege - kullanılan delege spesifikasyonu için kullanılan ek başlatma argümanlarını bekleyen testleri belirtir
Hem CTestTestfile.cmake
hem de run-tests.cmake
(aşağıda belirtildiği gibi) <build_dir>/kernels
dizininde mevcuttur.
CPU arka ucuyla birim testlerinin başlatılması ( CTestTestfile.cmake
geçerli dizinde hedefte bulunması koşuluyla):
ctest -L plain
Temsilcileri kullanarak birim testi örneklerini başlatın ( 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 temsilciyle ilgili ek başlatma bağımsız değişkenleri sağlamanın bu yolunun bilinen bir sınırlaması , yalnızca beklenen dönüş değeri 0 olanların etkili bir şekilde desteklenmesidir. Farklı dönüş değerleri 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
6. Adım. TensorFlow Lite Karşılaştırma Aracını 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 Mevcut Seçenekler
İşte mevcut seçeneklerin listesi. Bunu -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'yi 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 kütüphanesini oluşturun
C API için TensorFlow Lite paylaşımlı kitaplığı oluşturmak istiyorsanız önce adım 1'den adım 3'e kadar olan adımları izleyin. Bundan sonra aşağıdaki komutları çalıştırın.
Linux / MacOS
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j
pencereler
cmake ../tensorflow_src/tensorflow/lite/c
cmake --build . -j --config Release
Derlenmiş Kütüphane
Yukarıdaki komut geçerli dizinde aşağıdaki paylaşılan kitaplığı oluşturur.
platformu | Kütüphane adı |
---|---|
Linux | libtensorflowlite_c.so |
Mac os işletim sistemi | libtensorflowlite_c.dylib |
pencereler | tensorflowlite_c.dll |