Bu sayfada, LiteRT kitaplığını CMake aracı.
Aşağıdaki talimatlar Ubuntu 16.04.3 64 bit PC (AMD64) üzerinde test edilmiştir , macOS Catalina (x86_64), Windows 10 ve TensorFlow geliştirme Docker görüntüsü tensorflow/tensorflow:devel.
1. Adım: CMake aracını yükleme
CMake 3.16 veya sonraki bir sürümü gerektirir. Ubuntu'da aşağıdaki komutu çalıştırarak komutuna dokunun.
sudo apt-get install cmake
İsterseniz resmi cmake kurulum kılavuzu
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ırma
Sürüm derlemesi
Varsayılan olarak optimize edilmiş bir sürüm ikili programı oluşturur. Belirli bir kitle için aşağıdaki komutu çalıştırmanız yeterlidir.
cmake ../tensorflow_src/tensorflow/lite
Derlemede hata ayıklama
Sembol bilgileri içeren bir hata ayıklama derlemesi oluşturmanız gerekiyorsa
-DCMAKE_BUILD_TYPE=Debug
seçeneğini sunun.
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şareti. Ünite testi çapraz derleme ayrıntıları
bulabilirsiniz.
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_KERNEL_TEST=on
Yüklenebilir paket derleyin
Başka bir kuruluş tarafından bağımlılık olarak kullanılabilecek yüklenebilir bir paket derlemek için
find_package(tensorflow-lite CONFIG)
ile CMake projesi için
-DTFLITE_ENABLE_INSTALL=ON
seçeneği.
İdeal olarak kendi kitaplık bağımlılık sürümlerini de sağlamanız gerekir.
Bunlar, LiteRT'e bağlı proje tarafından da kullanılmalıdır. Şunları yapabilirsiniz:
-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON
öğesini kullanın ve <PackageName>_DIR
ayarlayın
işaret edecek değişkenler kullanın.
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 programlar oluşturmak üzere CMake'i kullanabilirsiniz.
LiteRT'yi çapraz derlemek için öncelikle
-DCMAKE_TOOLCHAIN_FILE
içeren SDK (ör. ARM64 SDK veya Android'de NDK)
tıklayın.
cmake -DCMAKE_TOOLCHAIN_FILE=<CMakeToolchainFileLoc> ../tensorflow/lite/
Android çapraz derlemesinin ayrıntıları
Android çapraz derlemesi için,
Android NDK'ya gidin ve NDK yoluna
Yukarıda bahsedilen -DCMAKE_TOOLCHAIN_FILE
işareti. Ayrıca, hedef ABI'yı
-DANDROID_ABI
işareti.
cmake -DCMAKE_TOOLCHAIN_FILE=<NDK path>/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a ../tensorflow_src/tensorflow/lite
Çekirdek (birim) tarafından çapraz derleme testinin ayrıntıları
Birim testlerinin çapraz derlenmesi için ana makine için düzc derleyici gerekir
bahsedeceğim. Bu amaçla,
Flatc'i oluşturmak için tensorflow/lite/tools/cmake/native_tools/flatbuffers
ana makineyi kullanarak ayrı bir derleme dizininde önceden CMake ile derleyici
kullanabilirsiniz.
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 yüklemek de mümkündür. (ör. CMake yerine yerel olarak oluşturulmuş diğer araçları içeren bir dizine derleme dizini):
cmake -DCMAKE_INSTALL_PREFIX=<native_tools_dir> ../tensorflow_src/tensorflow/lite/tools/cmake/native_tools/flatbuffers
cmake --build .
LiteRT çapraz derlemesinin kendisi için ek parametre
-DTFLITE_HOST_TOOLS_DIR=<flatc_dir_path>
, şunu içeren dizini işaret eder:
yerel flatc ikili programının
Yukarıda bahsedilen -DTFLITE_KERNEL_TEST=on
işareti.
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 hedeflendiği gibi başlatılır
Birim testleri, ayrı yürütülebilir dosyalar olarak veya CTest yardımcı programı kullanılarak çalıştırılabilir. Şu ana kadar
(CTest açısından) parametrelerden en az biri
TFLITE_ENABLE_XNNPACKor
TFLITE_EXTERNAL_DELEGATE` LiteRT için etkinleştirildi
oluşturulan testler, iki farklı etiketle oluşturulur.
(aynı yürütülebilir test aracını kullanarak): - düz - üzerinde çalıştırılan testleri belirtir
CPU arka ucu - yetki ver - ek lansman bekleyen testleri belirtir
kullanılan delege spesifikasyonu için kullanılan bağımsız değişkenler
Hem CTestTestfile.cmake
hem de run-tests.cmake
(aşağıda belirtildiği gibi)
<build_dir>/kernels
içinde mevcut.
CPU arka ucu ile birim testlerinin başlatılması (CTestTestfile.cmake
öğesinin
mevcut dizindeki hedefte mevcut):
ctest -L plain
Yetki verilmiş kullanıcıları kullanarak birim testleri örnekleri oluşturun (
CTestTestfile.cmake
ve run-tests.cmake
dosya şurada hedeflendiği gibi mevcut:
şu dizinde olacaktır):
cmake -E env TESTS_ARGUMENTS=--use_xnnpack=true ctest -L delegate
cmake -E env TESTS_ARGUMENTS=--external_delegate_path=<PATH> ctest -L delegate
Bu şekilde, yetki verilmiş kullanıcılarla ilgili ek bilgilerin sağlanmasına ilişkin bilinen bir sınırlama için lansman argümanı, birim testlerine ilişkin belirli bir nedeni, yalnızca beklenen dönüş değeri 0. Farklı dönüş değerleri test hatasıdır.
OpenCL GPU delegesi
Hedef makinenizde OpenCL desteği varsa bunu yapmak için GPU temsilcisi, tam olarak bunu yapmanızı öneririm.
OpenCL GPU yetki verme desteğini yapılandırmak için:
cmake ../tensorflow_src/tensorflow/lite -DTFLITE_ENABLE_GPU=ON
5. Adım: LiteRT oluştur
tflite_build
dizininde,
cmake --build . -j
6. Adım: LiteRT Karşılaştırma Aracı ve Etiket Resmi Örneği (İsteğe Bağlı)
tflite_build
dizininde,
cmake --build . -j -t benchmark_model
cmake --build . -j -t label_image
LiteRT oluşturmak için Kullanılabilen Seçenekler
Kullanılabilir seçeneklerin listesi aşağıda verilmiştir. Bunu şununla geçersiz kılabilir:
-D<option_name>=[ON|OFF]
Örneğin, -DTFLITE_ENABLE_XNNPACK=OFF
ile
varsayılan olarak etkin olan XNNPACK'yı devre dışı bırakın.
Seçenek Adı | Özellik | Android | Linux | macOS | Windows |
---|---|---|---|---|---|
TFLITE_ENABLE_RUY
|
RUY'yi etkinleştir matris çarpma kütüphane | AÇIK | KAPALI | KAPALI | KAPALI |
TFLITE_ENABLE_GPU
|
GPU'yu etkinleştir delege | KAPALI | KAPALI | Yok | Yok |
TFLITE_ENABLE_XNNPACK
|
XNNPACK'ı etkinleştir delege | AÇIK | AÇIK | AÇIK | AÇIK |
TFLITE_ENABLE_MMAP |
MMAP'yi etkinleştir | AÇIK | AÇIK | AÇIK | Yok |
LiteRT kullanan bir CMake projesi oluşturma
Buradaki CMakeLists.txt dosyası Minimum TFLite örneği.
LiteRT dizini ve bağlantısı için add_subdirectory() işlevini kullanmanız gerekir
target_link_libraries() ile tensorflow-lite
.
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)
LiteRT C kitaplığı oluşturma
Şunun için LiteRT paylaşılan kitaplığı oluşturmak istiyorsanız: C API 1. adımı uygulayın: 3. adıma öncelik verin. Bundan sonra, ekleyebilirsiniz.
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 |