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 görüntüsü tensorflow/tensorflow:devel üzerinde test edilmiştir.
1. Adım: CMake aracını yükleyin
CMake 3.16 veya sonraki bir sürümü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
2. adım: TensorFlow deposunu klonlama
git clone https://github.com/tensorflow/tensorflow.git tensorflow_src
3. adım: CMake derleme dizini oluşturma
mkdir tflite_build
cd tflite_build
4. Adım: Yapılandırmalarla CMake aracını çalıştır
Derlemeyi yayınlayın
Varsayılan olarak, optimize edilmiş bir sürüm ikili programı oluşturur. İş istasyonunuz için derleme oluşturmak istiyorsanız aşağıdaki komutu çalıştırmanız yeterlidir.
cmake ../tensorflow_src/tensorflow/lite
Hata ayıklama derlemesi
Sembol bilgileri içeren bir hata ayıklama derlemesi 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
işaretini sağlamanız gerekir. Birim testi çapraz derlemeyle ilgili özellikler sonraki alt bölümde bulunabilir.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
Yüklenebilir paket derleyin
find_package(tensorflow-lite CONFIG)
ile başka bir CMake projesi tarafından bağımlılık olarak kullanılabilecek yüklenebilir bir paket oluşturmak için -DTFLITE_ENABLE_INSTALL=ON
seçeneğini kullanın.
İdeal olarak kendi kitaplık bağımlılıklarının sürümlerini de sağlamanız gerekir.
Bunların, TF Lite'ı kullanan proje tarafından da kullanılması gerekir. -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
kullanabilir ve <PackageName>_DIR
değişkenlerini kitaplık yüklemelerinize 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
CMake'i kullanarak ARM64 veya Android hedef mimarileri için ikili programlar oluşturabilirsiniz.
TF Lite'ı çapraz derlemek için SDK'nın yolunu (ör. Android'de ARM64 SDK veya NDK) -DCMAKE_TOOLCHAIN_FILE
işaretiyle sağlamanız gerekir.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Android çapraz derlemesinin ayrıntıları
Android çapraz derlemesi için Android NDK'yı yüklemeniz ve NDK yolunu yukarıda belirtilen -DCMAKE_TOOLCHAIN_FILE
işaretiyle sağlamanız gerekir. Ayrıca -DANDROID_ABI
işaretiyle hedef ABI'yı 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 ayrıntıları, çapraz derlemeyi test eder
Birim testlerinin çapraz derlemesi, ana makine mimarisi için düzc derleyici gerektirir. Bu amaçla, ana makine araç zincirini kullanarak ayrı bir derleme dizininde önceden CMake ile düzc derleyiciyi derlemek için tensorflow/lite/tools/cmake/native_tools/flatbuffers
konumunda bulunan bir CMakeList'ler 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 yükleme konumuna (ör. CMake derleme dizini yerine yerel olarak oluşturulmuş diğer araçları içeren bir dizine) de yükleyebilirsiniz:
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 belirtilen -DTFLITE_KERNEL_TEST=on
işaretiyle birlikte, yerel flatc ikili programını içeren dizine işaret eden ek -DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
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ıyor
Birim testleri, ayrı yürütülebilir dosyalar olarak veya CTest yardımcı programı kullanılarak çalıştırılabilir. CTest açısından bakıldığında, TFLITE_ENABLE_XNNPACKor
TFLITE_EXTERNAL_DELEGATE" parametrelerinden en az biri TF Lite derlemesi için etkinleştirilmişse sonuçta ortaya çıkan testler iki farklı etiketle oluşturulur (aynı test yürütülebilir): - düz (kullanılan arka uç testlerinin belirlenmesini beklediğini belirtir) net CPU'da çalıştırılan ek spesifikasyonları açıklayarak - TF Lite derlemesi için
Hem CTestTestfile.cmake
hem de run-tests.cmake
(aşağıda belirtildiği gibi) <build_dir>/kernels
içinde kullanılabilir.
CPU arka ucuyla birim testlerinin başlatılması (CTestTestfile.cmake
öğesinin geçerli dizinde hedef üzerinde olması koşuluyla):
ctest -L plain
Yetki verilmiş kullanıcıları kullanan birim test örneklerini başlatma (CTestTestfile.cmake
ve run-tests.cmake
dosyasının geçerli dizinde hedefte bulunması koşuluyla):
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ı, yöntemin yalnızca beklenen dönüş değeri 0'a sahip olanları etkin bir şekilde desteklemesidir. Farklı dönüş değerleri test hatası olarak raporlanır.
OpenCL GPU temsilcisi
Hedef makinenizde OpenCL desteği varsa GPU gücünden yararlanmak için GPU temsilcisi kullanabilirsiniz.
OpenCL GPU yetki verme desteğini yapılandırmak için:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
5. Adım: TensorFlow Lite'ı Derleme
tflite_build
dizininde,
cmake --build . -j
6. Adım: TensorFlow Lite Karşılaştırma Aracı Oluşturma ve Etiket Resmi Örneği (İsteğe bağlı)
tflite_build
dizininde,
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
TensorFlow Lite'ı geliştirmek için Kullanılabilecek Seçenekler
Kullanılabilir seçeneklerin listesi aşağıda verilmiştir. Bunu -D<option_name>=[ON|OFF]
ile geçersiz kılabilirsiniz. Örneğin, varsayılan olarak etkin olan XNNPACK'yi devre dışı bırakmak için -DTFLITE_ENABLE_XNNPACK=OFF
.
Seçenek Adı | Öne Çıkarın | Android | Linux | macOS | Windows |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY
|
RUY matrisi çoğaltmayı kitaplığı etkinleştir | AÇIK | KAPALI | KAPALI | KAPALI |
TFLITE_ENABLE_GPU
|
GPU yetkilendirmesini etkinleştir | KAPALI | KAPALI | Yok | Yok |
TFLITE_ENABLE_XNNPACK
|
XNNPACK yetkisini 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şturma
TFLite minimal örneğinin CMakeLists.txt dosyasını burada bulabilirsiniz.
TensorFlow Lite dizini için add_subdirectory() öğesine sahip olmanız ve tensorflow-lite
ile target_link_libraries() arasında bağlantı oluşturmanı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şturma
C API için TensorFlow Lite paylaşılan kitaplığı oluşturmak istiyorsanız önce 1. adımı ile 3. adımı uygulayın. Ardından 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.
Platform | Kütüphanenin adı |
---|---|
Linux | libtensorflowlite_c.so |
macOS | libtensorflowlite_c.dylib |
Windows | tensorflowlite_c.dll |