Android için LiteRT oluşturun

Bu dokümanda, cihazınızda LiteRT Android kitaplığını nasıl oluşturacağınız açıklanmaktadır. sahip. Normalde LiteRT Android kitaplığını yerel olarak oluşturmanız gerekmez.

Gecelik Anlık Görüntüleri kullanma

Gecelik anlık görüntüleri kullanmak için aşağıdaki depoyu kök Gradle derlemenize ekleyin yapılandırma.

allprojects {
    repositories {      // should be already there
        mavenCentral()  // should be already there
        maven {         // add this repo to use snapshots
          name 'ossrh-snapshot'
          url 'https://oss.sonatype.org/content/repositories/snapshots'
        }
    }
}

Build.gradle dosyanıza bağımlılıklara gecelik anlık görüntüler ekleyin (veya gerektiği şekilde düzenleyin)

...
dependencies {
    ...
    implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly-SNAPSHOT'
    implementation 'com.google.ai.edge.litert:litert-gpu:0.0.0-nightly-SNAPSHOT'
    implementation 'com.google.ai.edge.litert:litert-support:0.0.0-nightly-SNAPSHOT'
    ...
}
...

Yerel olarak LiteRT oluşturun

Bazı durumlarda, LiteRT'in yerel bir derlemesini kullanmak isteyebilirsiniz. Örneğin, Örneğin, şunları içeren özel bir ikili program derliyor olabilirsiniz: TensorFlow'dan seçilen işlemleri, veya LiteRT'te yerel değişiklikler yapmak isteyebilirsiniz.

Docker'ı kullanarak derleme ortamı oluşturma

  • Docker dosyasını indirin. Docker dosyasını indirerek kullanımınız aşağıdaki hizmet şartlarına tabidir:

Kabul et seçeneğini tıklayarak Android Studio ve Android Yerel Geliştirme Kiti, Android Yazılımı'na tabi olacaktır Geliştirme Kiti Lisans Sözleşmesi şu adreste bulunabilir: https://developer.android.com/studio/terms (bu tür URL güncellenebilir veya değiştirilebilir) zaman zaman Google tarafından kullanılabilir).

. Uygulamayı indirmek için hizmet şartlarını kabul etmelisiniz. dosyası olarak kaydedebilirsiniz.

  • İsterseniz Android SDK veya NDK sürümünü değiştirebilirsiniz. İndirilen dosyayı Docker dosyasını boş bir klasöre yerleştirin ve Docker görüntünüzü aşağıdaki komutu çalıştırarak oluşturun:
docker build . -t tflite-builder -f tflite-android.Dockerfile
  • Mevcut klasörünüzü /host_dir örneğidir (/tensorflow_src öğesinin, TensorFlow olduğunu unutmayın. şu depoyu kullanın):
docker run -it -v $PWD:/host_dir tflite-builder bash

Windows'da TPU'yu kullanıyorsanız "$PWD" komutunu değiştirin "pwd" ile değiştirin.

Ana makinede bir TensorFlow deposu kullanmak istiyorsanız bu ana makineyi ekleyin dizinine ekleyin (-v hostsDir:/host_dir).

  • Kapsayıcıya girdikten sonra aşağıdaki komutu çalıştırarak ek Android araçları ve kitaplıkları ( lisans):
sdkmanager \
  "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
  "platform-tools" \
  "platforms;android-${ANDROID_API_LEVEL}"

Şimdi derleme ayarlarını yapılandırmak için WORKSPACE ve .bazelrc'i yapılandırma bölümüne geçmeniz gerekir.

Kitaplıkları oluşturmayı tamamladıktan sonra /host_dir konumuna kopyalayabilirsiniz. kapsayıcının içine yerleştirin. Böylece, bu öğelere ana makineden erişebilirsiniz.

Docker olmadan derleme ortamı kurma

Bazel ve Android Ön Koşullarını Yükleme

Bazel, TensorFlow için birincil derleme sistemidir. Onunla inşa etmek için sisteminizde Android NDK ve SDK yüklü olmalıdır.

  1. Bazel derleme sisteminin en son sürümünü yükleyin.
  2. Yerel (C/C++) LiteRT oluşturmak için Android NDK gerekir girin. Önerilen mevcut sürüm 25b'dir ve burada bulabilirsiniz.
  3. Android SDK ve derleme araçları edinilebilir burada veya alternatif olarak Android Studio'ya gidin. Derleme Tools API >= 23, LiteRT oluşturmak için önerilen sürümdür.

WORKSPACE ve .bazelrc'i yapılandırın

Bu, LiteRT oluşturmak için gerekli olan tek seferlik bir yapılandırma adımıdır. kitaplıklar. Kök TensorFlow ödeme sayfasında ./configure komut dosyasını çalıştırın bulun ve "Evet" yanıtını verin komut dosyası, ./WORKSPACE öğesini etkileşimli olarak yapılandırmak istediğinde kullanıma sunuyoruz. Komut dosyası, şu ortam değişkenlerini kullanabilirsiniz:

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

Bu değişkenler ayarlanmazsa komut dosyasında etkileşimli olarak sağlanmalıdırlar. tıklayın. Başarılı yapılandırma, aşağıdakine benzer girişler sağlamalıdır: kök klasördeki .tf_configure.bazelrc dosyasında:

build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r25b"
build --action_env ANDROID_NDK_API_LEVEL="21"
build --action_env ANDROID_BUILD_TOOLS_VERSION="30.0.3"
build --action_env ANDROID_SDK_API_LEVEL="30"
build --action_env ANDROID_SDK_HOME="/usr/local/android/android-sdk-linux"

Geliştirme ve yükleme

Bazel doğru şekilde yapılandırıldıktan sonra LiteRT AAR'sini kök ödeme dizinini şu şekilde açın:

bazel build -c opt --cxxopt=--std=c++17 --config=android_arm64 \
  --fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
  --define=android_dexmerger_tool=d8_dexmerger \
  --define=android_incremental_dexing_tool=d8_dexbuilder \
  //tensorflow/lite/java:tensorflow-lite

Bu işlem, bazel-bin/tensorflow/lite/java/ içinde bir AAR dosyası oluşturur. Not bir "şişman" olup olmadığını Birkaç farklı mimariye sahip AAR; CANNOT TRANSLATE dağıtım ortamınıza uygun olan alt kümeyi kullanın.

Aşağıdaki gibi, yalnızca bir model grubunu hedefleyen daha küçük AAR dosyaları oluşturabilirsiniz:

bash tensorflow/lite/tools/build_aar.sh \
  --input_models=model1,model2 \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a

Yukarıdaki komut dosyası, tensorflow-lite.aar dosyasını ve isteğe bağlı olarak tensorflow-lite-select-tf-ops.aar dosyasını kullanarak modellerden birinde Tensorflow operasyonları Daha fazla bilgi için lütfen LiRT ikili boyutunu küçültme bölümü.

AAR'yi doğrudan projeye ekleyin

tensorflow-lite.aar dosyasını libs adlı dizindeki belirler. Uygulamanızın build.gradle dosyasını yeni dizine referans verecek şekilde değiştirin mevcut LiteRT bağımlılığını yeni yerel kitaplıkla değiştirebilirsiniz. e.g.:

allprojects {
    repositories {
        mavenCentral()
        maven {  // Only for snapshot artifacts
            name 'ossrh-snapshot'
            url 'https://oss.sonatype.org/content/repositories/snapshots'
        }
        flatDir {
            dirs 'libs'
        }
    }
}

dependencies {
    compile(name:'tensorflow-lite', ext:'aar')
}

AAR'yi yerel Maven deposuna yükleme

Kök ödeme dizininizden aşağıdaki komutu yürütün:

mvn install:install-file \
  -Dfile=bazel-bin/tensorflow/lite/java/tensorflow-lite.aar \
  -DgroupId=org.tensorflow \
  -DartifactId=tensorflow-lite -Dversion=0.1.100 -Dpackaging=aar

Uygulamanızın build.gradle öğesinde mavenLocal() bağımlılığının olduğundan emin olun ve standart LiteRT bağımlılığını destekleyen bir bağımlıyla değiştirin belirli TensorFlow işlemleri için:

allprojects {
    repositories {
        mavenCentral()
        maven {  // Only for snapshot artifacts
            name 'ossrh-snapshot'
            url 'https://oss.sonatype.org/content/repositories/snapshots'
        }
        mavenLocal()
    }
}

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:0.1.100'
}

Buradaki 0.1.100 sürümünün salt kullanım amaçlı olduğunu unutmayın test etme/geliştirme. Yerel AAR yüklendiğinde, Uygulama kodunuzdaki LiteRT Java çıkarım API'leri.