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