ARM kartları için LiteRT oluşturma

Bu sayfada ARM tabanlı cihazlar için LiteRT kitaplıklarının nasıl oluşturulacağı açıklanmaktadır bilgisayarlar.

LiteRT, iki derleme sistemini ve her birinde desteklenen özellikleri destekler aynı olmadığını unutmayın. Uygun bir yapı seçmek için aşağıdaki tabloyu kontrol edin bahsedeceğim.

Özellik Bazel CMake
Önceden tanımlanmış araç zincirleri armhf, aarch64 armel, armhf, aarch64
Özel araç zincirleri kullanımı daha zor kullanımı kolay
TF işlemlerini seçme destekleniyor desteklenmiyor
GPU delegesi yalnızca Android'de kullanılabilir OpenCL'i destekleyen tüm platformlar
XNNPack destekleniyor destekleniyor
Python Çarkı destekleniyor destekleniyor
C API destekleniyor destekleniyor
C++ API Bazel projelerinde desteklenir CMake projelerinde desteklenir

CMake ile ARM için çapraz derleme

Bir CMake projeniz varsa veya özel bir araç zinciri kullanmak istiyorsanız için CMake'i daha iyi kullanabilirsiniz. Bu özellik için ayrı bir CMake ile LiteRT derlemesi kullanılabilir.

ARM için Bazel ile çapraz derleme

Bazel projeniz varsa veya TF operasyonlarını kullanmak istiyorsanız Bazel'i kullanmanız daha iyi olur geliştirmenizi sağlar. Entegre edilen ARM GCC 8.3 araç zincirleri oluşturmak için ARM32/64 paylaşılan bir kitaplık oluşturmak için Bazel ile birlikte çalıştık.

Hedef Mimari Bazel Yapılandırması Uyumlu Cihazlar
armhf (ARM32) --config=elinux_armhf 32 bit ile RPI3, RPI4 Raspberry Pi İşletim Sistemi
ARM64 (ARM64) --config=elinux_aarch64 Mercan, Ubuntu 64 ile RPI4 matkap ucu

Aşağıdaki talimatlar Ubuntu 16.04.3 64 bit PC (AMD64) üzerinde test edilmiştir ve TensorFlow devel Docker görüntüsü tensorflow/tensorflow:devel.

LiteRT'yi Bazel ile çapraz derlemek için aşağıdaki adımları uygulayın:

1. Adım: Bazel'i yükleme

Bazel, TensorFlow için birincil derleme sistemidir. Şu uygulamanın en son sürümünü yükleyin: Bazel derleme sistemi

2. adım: TensorFlow deposunu klonlama

git clone https://github.com/tensorflow/tensorflow.git tensorflow_src

3. Adım: ARM ikili programı oluşturma

C kitaplığı
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite/c:libtensorflowlite_c.so

Paylaşılan bir kitaplığı şuralarda bulabilirsiniz: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so

Kontrol Et LiteRT C API sayfasına bakın.

C++ kitaplığı
bazel build --config=elinux_aarch64 -c opt //tensorflow/lite:libtensorflowlite.so

Paylaşılan bir kitaplığı şuralarda bulabilirsiniz: bazel-bin/tensorflow/lite/libtensorflowlite.so

Şu anda, gerekli tüm başlık dosyalarını almanın kolay bir yolu yoktur. bu nedenle, TensorFlow'dan tüm başlık dosyalarını tensorflow/lite/ içerisine eklemeniz gerekir depodur. Ayrıca, FlatBuffers'tan başlık dosyalarına ve Abseil.

vs.

Araç zincirini kullanarak başka Bazel hedefleri de oluşturabilirsiniz. İşte size bazı faydalı belirler.

  • //tensorflow/lite/tools/benchmark:benchmark_model
  • //tensorflow/lite/examples/label_image:label_image