Ky dokument përshkruan se si të ndërtoni vetë bibliotekën LiteRT për Android. Normalisht, nuk keni nevojë të ndërtoni lokalisht bibliotekën LiteRT për Android.
Përdorni pamjet e natës
Për të përdorur pamjet e çastit çdo natë, shtoni depon e mëposhtme në konfigurimin rrënjësor të ndërtimit të Gradle.
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'
}
}
}
shtoni pamje të çastit çdo natë në varësi (ose modifikoni sipas nevojës) në build.gradle tuaj
...
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'
...
}
...
Ndërto LiteRT në nivel lokal
Në disa raste, mund të dëshironi të përdorni një ndërtim lokal të LiteRT. Për shembull, mund të jeni duke ndërtuar një skedar binar të personalizuar që përfshin operacione të zgjedhura nga TensorFlow , ose mund të dëshironi të bëni ndryshime lokale në LiteRT.
Konfiguroni mjedisin e ndërtimit duke përdorur Docker
- Shkarkoni skedarin Docker. Duke shkarkuar skedarin Docker, ju pranoni që kushtet e mëposhtme të shërbimit rregullojnë përdorimin e tij nga ana juaj:
Duke klikuar për të pranuar, ju pranoni që çdo përdorim i Android Studio dhe Android Native Development Kit do të rregullohet nga Marrëveshja e Licencës së Android Software Development Kit, e disponueshme në https://developer.android.com/studio/terms (një URL e tillë mund të përditësohet ose ndryshohet nga Google herë pas here).
Duhet të pranoni kushtet e shërbimit për të shkarkuar skedarin.- Mund të ndryshoni opsionalisht versionin e Android SDK ose NDK. Vendosni skedarin e shkarkuar Docker në një dosje bosh dhe ndërtoni imazhin tuaj docker duke ekzekutuar:
docker build . -t tflite-builder -f tflite-android.Dockerfile
- Nisni kontejnerin docker në mënyrë interaktive duke montuar dosjen tuaj aktuale në /host_dir brenda kontejnerit (vini re se /tensorflow_src është depoja TensorFlow brenda kontejnerit):
docker run -it -v $PWD:/host_dir tflite-builder bash
Nëse përdorni PowerShell në Windows, zëvendësoni "$PWD" me "pwd".
Nëse dëshironi të përdorni një depo TensorFlow në host, montoni atë direktori host në vend të kësaj (-v hostDir:/host_dir).
- Pasi të jeni brenda kontejnerit, mund të ekzekutoni hapat e mëposhtëm për të shkarkuar mjete dhe biblioteka shtesë për Android (vini re se mund t'ju duhet të pranoni licencën):
sdkmanager \
"build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
"platform-tools" \
"platforms;android-${ANDROID_API_LEVEL}"
Tani duhet të vazhdoni te seksioni Konfiguro HAPËSIRËN E PUNËS dhe .bazelrc për të konfiguruar cilësimet e ndërtimit.
Pasi të keni përfunduar ndërtimin e bibliotekave, mund t'i kopjoni ato në /host_dir brenda kontejnerit në mënyrë që të keni akses në to në host.
Konfiguro mjedisin e ndërtimit pa Docker
Instaloni Bazel dhe Parakushtet për Android
Bazel është sistemi kryesor i ndërtimit për TensorFlow. Për të ndërtuar me të, duhet ta keni atë dhe Android NDK dhe SDK të instaluar në sistemin tuaj.
- Instaloni versionin më të fundit të sistemit të ndërtimit Bazel .
- Për të ndërtuar kodin vendas (C/C++) LiteRT kërkohet Android NDK. Versioni aktual i rekomanduar është 25b, i cili mund të gjendet këtu .
- Android SDK dhe mjetet e ndërtimit mund të merren këtu , ose si alternativë si pjesë e Android Studio . API-ja e mjeteve të ndërtimit >= 23 është versioni i rekomanduar për ndërtimin e LiteRT.
Konfiguro WORKSPACE dhe .bazelrc
Ky është një hap konfigurimi që kryhet vetëm një herë dhe kërkohet për të ndërtuar bibliotekat LiteRT. Ekzekutoni skriptin ./configure në direktorinë rrënjësore të kontrollit të TensorFlow dhe përgjigjuni "Po" kur skripti kërkon të konfiguroni në mënyrë interaktive ndërtimet ./WORKSPACE për Android. Skripti do të përpiqet të konfigurojë cilësimet duke përdorur variablat e mëposhtme të mjedisit:
-
ANDROID_SDK_HOME -
ANDROID_SDK_API_LEVEL -
ANDROID_NDK_HOME -
ANDROID_NDK_API_LEVEL
Nëse këto variabla nuk janë vendosur, ato duhet të ofrohen në mënyrë interaktive në njoftimin e skriptit. Konfigurimi i suksesshëm duhet të japë hyrje të ngjashme me sa vijon në skedarin .tf_configure.bazelrc në dosjen rrënjë:
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"
Ndërto dhe instalo
Pasi Bazel të jetë konfiguruar siç duhet, mund të ndërtoni LiteRT AAR nga direktoria rrënjë e kontrollit si më poshtë:
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
Kjo do të gjenerojë një skedar AAR në bazel-bin/tensorflow/lite/java/ . Vini re se kjo ndërton një AAR "të trashë" me disa arkitektura të ndryshme; nëse nuk ju nevojiten të gjitha, përdorni nëngrupin e përshtatshëm për mjedisin tuaj të vendosjes.
Mund të ndërtoni skedarë më të vegjël AAR që synojnë vetëm një grup modelesh si më poshtë:
bash tensorflow/lite/tools/build_aar.sh \
--input_models=model1,model2 \
--target_archs=x86,x86_64,arm64-v8a,armeabi-v7a
Skripti i mësipërm do të gjenerojë skedarin tensorflow-lite.aar dhe opsionalisht skedarin tensorflow-lite-select-tf-ops.aar nëse njëri nga modelet po përdor operacione Tensorflow. Për më shumë detaje, ju lutemi shihni seksionin Reduce binary size LiteRT .
Shtoni AAR direkt në projekt
Zhvendos skedarin tensorflow-lite.aar në një drejtori të quajtur libs në projektin tënd. Modifiko skedarin build.gradle të aplikacionit tënd për t'iu referuar drejtorisë së re dhe zëvendëso varësinë ekzistuese LiteRT me bibliotekën e re lokale, p.sh.:
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')
}
Instaloni AAR në repozitorin lokal Maven
Ekzekutoni komandën e mëposhtme nga direktoria juaj rrënjësore e kontrollit:
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
Në build.gradle të aplikacionit tuaj, sigurohuni që keni varësinë mavenLocal() dhe zëvendësoni varësinë standarde LiteRT me atë që mbështet operacione të caktuara TensorFlow:
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'
}
Vini re se versioni 0.1.100 këtu është thjesht për hir të testimit/zhvillimit. Me AAR-in lokal të instaluar, mund të përdorni API-të standarde të inferencës Java të LiteRT në kodin e aplikacionit tuaj.