ARM kartları için LiteRT oluşturma

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

LiteRT iki derleme sistemini destekler ve her derleme sistemindeki desteklenen özellikler aynı değildir. Uygun bir derleme sistemi seçmek için aşağıdaki tabloya göz atın.

Ö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çin destekleniyor desteklenmiyor
GPU temsilcisi Yalnızca Android'de kullanılabilir. OpenCL'yi destekleyen herhangi bir platform
XNNPack destekleniyor destekleniyor
Python Wheel destekleniyor destekleniyor
C API destekleniyor desteklenir
C++ API Bazel projelerinde desteklenir CMake projeleri için desteklenir

CMake ile ARM için çapraz derleme

CMake projeniz varsa veya özel bir araç zinciri kullanmak istiyorsanız çapraz derleme için CMake'i kullanmanız daha iyi olur. Bu konuyla ilgili ayrı bir CMake ile LiteRT'nin çapraz derlenmesi sayfası mevcuttur.

Bazel ile ARM için çapraz derleme

Bazel projeniz varsa veya TF işlemleri kullanmak istiyorsanız Bazel derleme sistemini kullanmanız daha iyi olur. ARM32/64 paylaşılan kitaplığı oluşturmak için Bazel ile entegre ARM GCC 8.3 araç zincirlerini kullanacaksınız.

Hedef Mimarisi Bazel Yapılandırması Uyumlu cihazlar
armhf (ARM32) --config=elinux_armhf 32 bit Raspberry Pi OS ile RPI3, RPI4
AArch64 (ARM64) --config=elinux_aarch64 Coral, Ubuntu 64 bit ile RPI4

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

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

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

Bazel, TensorFlow'un birincil derleme sistemidir. Bazel derleme sisteminin en son sürümünü yükleyin.

2. adım: TensorFlow deposunu klonlama

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

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

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

Paylaşılan kitaplıkları şu konumlarda bulabilirsiniz: bazel-bin/tensorflow/lite/c/libtensorflowlite_c.so.

Ayrıntılar için LiteRT C API sayfasını inceleyin.

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

Paylaşılan kitaplıkları şu konumlarda bulabilirsiniz: bazel-bin/tensorflow/lite/libtensorflowlite.so.

Şu anda gereken tüm başlık dosyalarını doğrudan ayıklamanın bir yolu yoktur. Bu nedenle, TensorFlow deposundaki tensorflow/lite/ dizininde bulunan tüm başlık dosyalarını eklemeniz gerekir. Ayrıca FlatBuffers ve Abseil'den üstbilgi dosyalarına ihtiyacınız olacaktır.

Vb.

Araç zinciriyle başka Bazel hedefleri de oluşturabilirsiniz. İşte bazı faydalı hedefler.

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