构建 ExecuTorch LLaMA Android 演示应用程序¶
此应用程序演示了 LLaMA 聊天应用程序的使用,展示了使用 ExecuTorch 的本地推理用例。
先决条件¶
如果您尚未按照 设置 ExecuTorch 设置存储库和开发环境,请先设置您的 ExecuTorch 存储库和环境。
安装 Java 17 JDK。
如果您已设置 Android Studio,则可以使用以下方法安装它们:
Android Studio 设置 -> 语言和框架 -> Android SDK -> SDK 平台 -> 选中 API 级别 34 的行。
Android Studio 设置 -> 语言和框架 -> Android SDK -> SDK 工具 -> 选中 NDK(并排)行。
或者,您可以按照 本指南 使用 CLI 设置 Java/SDK/NDK。
支持的主机操作系统:CentOS、Apple 芯片上的 macOS Sonoma。
注意:此演示应用程序和教程仅在 arm64-v8a ABI(使用 NDK 25.0.8775105)上经过验证。
获取模型¶
请参考 ExecuTorch Llama2 文档 导出模型。
导出模型并生成 tokenizer.bin 后,将它们推送到设备
adb shell mkdir -p /data/local/tmp/llama
adb push llama2.pte /data/local/tmp/llama
adb push tokenizer.bin /data/local/tmp/llama
注意:演示应用程序在 /data/local/tmp/llama
中搜索 .pte 和 .bin 文件作为 LLAMA 模型和标记器。
构建 JNI 库¶
打开一个终端窗口,并导航到
executorch
的根目录。设置以下环境变量
export ANDROID_NDK=<path_to_android_ndk>
export ANDROID_ABI=arm64-v8a
注意:<path_to_android_ndk>
是 NDK 的根目录,通常位于 macOS 上的 ~/Library/Android/sdk/ndk/XX.Y.ZZZZZ
下,包含 NOTICE 和 README.md。我们使用 <path_to_android_ndk>/build/cmake/android.toolchain.cmake
用于 CMake 进行交叉编译。
运行以下命令设置所需的 JNI 库
pushd examples/demo-apps/android/LlamaDemo
./gradlew :app:setup
popd
这将运行 shell 脚本 setup.sh,该脚本配置所需的 ExecuTorch 核心、LLAMA2 和 Android 库,构建它们,并将它们复制到 jniLibs。
构建 APK¶
方案 1:Android Studio(推荐)¶
打开 Android Studio 并选择“打开现有 Android Studio 项目”以打开 examples/demo-apps/android/LlamaDemo。
运行应用程序 (^R)。这将在手机上构建并启动应用程序。
方法 2:命令行¶
在没有 Android Studio UI 的情况下,我们可以直接运行 gradle 来构建应用程序。我们需要设置 Android SDK 路径并调用 gradle。
export ANDROID_HOME=<path_to_android_sdk_home>
pushd examples/demo-apps/android/LlamaDemo
./gradlew :app:installDebug
popd
在手机或模拟器上,您可以尝试运行模型:
要点¶
通过本教程,我们学习了如何构建 ExecuTorch LLAMA 库,并将其暴露给 JNI 层以构建 Android 应用程序。