In diesem Dokument wird beschrieben, wie Sie eine LiteRT-Android-Bibliothek auf Ihrem gehören. Normalerweise ist es nicht erforderlich, die LiteRT-Android-Bibliothek lokal zu erstellen.
Snapshots in der Nacht verwenden
Wenn Sie nächtliche Snapshots verwenden möchten, fügen Sie Ihrem Gradle-Root-Build das folgende Repository hinzu: config.
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'
}
}
}
Fügen Sie den Abhängigkeiten nächtliche Snapshots hinzu (oder bearbeiten Sie sie nach Bedarf) in Ihrer build.gradle-Datei
...
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'
...
}
...
LiteRT lokal erstellen
In einigen Fällen möchten Sie möglicherweise einen lokalen LiteRT-Build verwenden. Für Beispiel: Sie erstellen eine benutzerdefinierte Binärdatei, die aus TensorFlow ausgewählte Vorgänge, oder lokale Änderungen an LiteRT vornehmen.
Build-Umgebung mit Docker einrichten
- Laden Sie die Dockerfile herunter. Durch das Herunterladen der Dockerfile stimmen Sie zu, dass die gelten die folgenden Nutzungsbedingungen:
Indem du auf „Akzeptieren“ klickst, erklärst du dich damit einverstanden, dass jegliche Nutzung von Android Studio und Android Native Development Kit unterliegt der Android-Software Die Lizenzvereinbarung für das Development Kit ist verfügbar unter https://developer.android.com/studio/terms (Diese URL kann aktualisiert oder geändert werden) von Google veröffentlicht werden.
Sie müssen die Nutzungsbedingungen akzeptieren, um die -Datei.- Optional können Sie das Android SDK oder die NDK-Version ändern. Heruntergeladene Datei speichern in einem leeren Ordner öffnen und mit dem folgenden Befehl das Docker-Image erstellen:
docker build . -t tflite-builder -f tflite-android.Dockerfile
- Starten Sie den Docker-Container interaktiv, indem Sie den aktuellen Ordner hier bereitstellen: /host_dir innerhalb des Containers (beachten Sie, dass /tensorflow_src die TensorFlow-Konfiguration ist). Repository im Container):
docker run -it -v $PWD:/host_dir tflite-builder bash
Wenn Sie PowerShell unter Windows verwenden, ersetzen Sie „$PWD“ durch „pwd“.
Wenn Sie ein TensorFlow-Repository auf dem Host verwenden möchten, stellen Sie diesen Host bereit. (-v hostDir:/host_dir).
- Sobald Sie sich im Container befinden, können Sie den folgenden Befehl ausführen, um die Datei herunterzuladen. zusätzliche Android-Tools und -Bibliotheken verwenden (möglicherweise müssen Sie die Lizenz):
sdkmanager \
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
"platform-tools" \
"platforms;android-${ANDROID_API_LEVEL}"
Fahren Sie jetzt mit dem Abschnitt WORKSPACE und .bazelrc konfigurieren fort, um die Build-Einstellungen zu konfigurieren.
Nachdem Sie die Bibliotheken erstellt haben, können Sie sie nach /host_dir kopieren. im Container, sodass Sie auf dem Host darauf zugreifen können.
Build-Umgebung ohne Docker einrichten
Bazel- und Android-Voraussetzungen installieren
Bazel ist das primäre Build-System für TensorFlow. Um damit zu arbeiten, müssen Sie und das Android-NDK und SDK auf Ihrem System installiert haben.
- Installieren Sie die neueste Version des Bazel-Build-Systems.
- Das Android-NDK ist erforderlich, um das native LiteRT (C/C++) zu erstellen. Code. Die aktuell empfohlene Version ist 25b. Sie finden sie unter Umständen hier.
- Das Android SDK und die Build-Tools sind erhältlich, hier oder oder als Teil des Android Studio Erstellen Tools API >= 23 ist die empfohlene Version zum Erstellen von LiteRT.
ARBEITSBEREICH und .bazelrc konfigurieren
Dies ist ein einmaliger Konfigurationsschritt, der zum Erstellen von LiteRT erforderlich ist
Bibliotheken. Führen Sie das Skript ./configure
im Stammverzeichnis von TensorFlow Checkout aus.
und antworten Sie mit „Ja“. wenn das Skript anfordert, den ./WORKSPACE
interaktiv zu konfigurieren
für Android-Builds. Das Skript versucht, Einstellungen mithilfe der Methode
folgenden Umgebungsvariablen:
ANDROID_SDK_HOME
ANDROID_SDK_API_LEVEL
ANDROID_NDK_HOME
ANDROID_NDK_API_LEVEL
Wenn diese Variablen nicht festgelegt sind, müssen sie interaktiv im Skript bereitgestellt werden.
. Eine erfolgreiche Konfiguration sollte Einträge wie die folgenden ergeben
in der Datei .tf_configure.bazelrc
im Stammordner:
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"
Erstellen und installieren
Sobald Bazel ordnungsgemäß konfiguriert ist, können Sie den LiteRT AAR aus der folgenden Tabelle erstellen: das Stammverzeichnis für den Bezahlvorgang:
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
Dadurch wird eine AAR-Datei in bazel-bin/tensorflow/lite/java/
generiert. Hinweis
dass dadurch ein „Fett“ entsteht, AAE mit verschiedenen Architekturen wenn Sie nicht
alle brauchen, verwenden Sie die Teilmenge, die für Ihre Bereitstellungsumgebung geeignet ist.
So können Sie kleinere AAR-Dateien erstellen, die nur auf eine Gruppe von Modellen ausgerichtet sind:
bash tensorflow/lite/tools/build_aar.sh \
--input_models=model1,model2 \
--target_archs=x86,x86_64,arm64-v8a,armeabi-v7a
Das obige Skript generiert die Datei tensorflow-lite.aar
und optional den
tensorflow-lite-select-tf-ops.aar
-Datei, wenn eines der Modelle
TensorFlow-Vorgänge Weitere Informationen finden Sie in der
Reduzieren Sie die Größe des Binärprogramms für LiteRT.
AAE direkt zum Projekt hinzufügen
Verschieben Sie die Datei tensorflow-lite.aar
in ein Verzeichnis namens libs
in Ihrem
Projekt arbeiten. Ändern Sie die Datei build.gradle
Ihrer Anwendung so, dass sie auf das neue Verzeichnis verweist.
und ersetzen Sie die vorhandene LiteRT-Abhängigkeit durch die neue lokale Bibliothek.
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 im lokalen Maven-Repository installieren
Führen Sie den folgenden Befehl über das Stammverzeichnis für den Bezahlvorgang aus:
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
Achte darauf, dass in der build.gradle
deiner App die Abhängigkeit mavenLocal()
und
Ersetzen Sie die LiteRT-Standardabhängigkeit durch die Abhängigkeit, die unterstützt wird.
für ausgewählte TensorFlow-Operationen:
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'
}
Beachten Sie, dass die 0.1.100
-Version hier einzig
Tests/Entwicklung. Wenn die lokalen AAE installiert sind, können Sie den standardmäßigen
LiteRT-Java-Inferenz-APIs in Ihrem Anwendungscode