• 文档 >
  • ExecuTorch Llama Android 演示应用
快捷方式

ExecuTorch Llama Android 演示应用

[更新 - 10/24] 我们已添加对在演示应用中运行量化 Llama 3.2 1B/3B 模型(在 XNNPACK 后端上)的支持。我们目前支持使用 SpinQuant 和 QAT+LoRA 量化方法进行推理。

我们很高兴分享,全新改版的 Android 演示应用已上线,并包含许多新更新,旨在为聊天用例提供更直观、更流畅的用户体验!此应用的主要目标是展示 ExecuTorch 如何轻松集成到 Android 演示应用中,以及如何运用 ExecuTorch 和 Llama 模型提供的众多功能。

此应用是一个宝贵的资源,可以激发您的创造力,并提供您可以自定义和调整以适应您的特定用例的基础代码。

请深入了解并立即开始探索我们的演示应用!我们期待您的任何反馈,并很高兴看到您的创新想法。

关键概念

从这个演示应用中,您将学习许多关键概念,例如

  • 如何准备 Llama 模型、构建 ExecuTorch 库以及跨委托的模型推理

  • 通过 JNI 层公开 ExecuTorch 库

  • 熟悉当前 ExecuTorch 面向应用的功能

我们的目标是让您了解 ExecuTorch 提供的支持类型,并让您能够放心地将其用于您的用例。

支持的模型

总的来说,此应用支持的模型有(因委托而异)

  • Llama 3.2 量化 1B/3B

  • BF16 中的 Llama 3.2 1B/3B

  • Llama Guard 3 1B

  • Llama 3.1 8B

  • Llama 3 8B

  • Llama 2 7B

  • LLaVA-1.5 视觉模型(仅限 XNNPACK)

构建 APK

首先,重要的是要注意,目前 ExecuTorch 提供对 3 个委托的支持。一旦您确定了您选择的委托,请选择 README 链接以获取完整的端到端说明,从环境设置到导出模型,再到构建 ExecuTorch 库和应用以在设备上运行

委托

资源

XNNPACK(基于 CPU 的库)

链接

QNN(Qualcomm AI 加速器)

链接

MediaTek(MediaTek AI 加速器)

链接

如何使用应用

本节将提供使用应用的主要步骤,以及 ExecuTorch API 的代码片段。

对于加载应用、开发和在设备上运行,我们推荐使用 Android Studio

  1. 打开 Android Studio 并选择“打开现有 Android Studio 项目”以打开 examples/demo-apps/android/LlamaDemo。

  2. 运行应用 (^R)。这将在手机上构建并启动应用。

打开应用

以下是该应用的用户界面功能。

选择设置小部件以开始选择模型、其参数和任何提示。

选择模型和参数

一旦您选择了模型、分词器和模型类型,您就可以点击“加载模型”以让应用加载模型并返回到主聊天活动。

可选参数

  • 温度:默认为 0,您也可以调整模型的温度。模型将在任何调整后重新加载。

  • 系统提示:无需任何格式,您可以输入系统提示。例如,“你是一个旅行助手”或“用几句话给我一个回复”。

  • 用户提示:更适合高级用户,如果您想手动输入提示,则可以通过修改 {{user prompt}} 来完成。您也可以修改特殊标记。更改后,返回主聊天活动发送。

ExecuTorch 应用 API

// Upon returning to the Main Chat Activity
mModule = new LlamaModule(
            ModelUtils.getModelCategory(mCurrentSettingsFields.getModelType()),
            modelPath,
            tokenizerPath,
            temperature);
int loadResult = mModule.load();
  • modelCategory:指示是仅文本模型还是视觉模型

  • modePath:.pte 文件的路径

  • tokenizerPath:分词器 .bin 文件的路径

  • temperature:模型参数,用于调整模型输出的随机性

用户提示

模型成功加载后,输入任何提示并单击发送(即生成)按钮以将其发送到模型。

您也可以提供更多后续问题。

ExecuTorch 应用 API

mModule.generate(prompt,sequence_length, MainActivity.this);
  • prompt:用户格式化的提示

  • sequence_length:响应提示生成的标记数

  • MainActivity.this:指示回调函数 (OnResult(), OnStats()) 存在于此类中。

[LLaVA-1.5:仅适用于 XNNPACK 委托]

对于 LLaVA-1.5 实现,在“设置”菜单中选择导出的 LLaVA .pte 和分词器文件,然后加载模型。之后,您可以从您的图库发送图像或拍摄实时照片以及文本提示给模型。

输出已生成

为了显示后续问题的完成情况,这是模型提供的完整详细回复。

ExecuTorch 应用 API

确保您在您在 mModule.generate() 中提供的回调类中具有以下函数。对于此示例,它是 MainActivity.this

  @Override
  public void onResult(String result) {
    //...result contains token from response
    //.. onResult will continue to be invoked until response is complete
  }

  @Override
  public void onStats(float tps) {
    //...tps (tokens per second) stats is provided by framework
  }

报告问题

如果您在按照本教程操作时遇到任何错误或问题,请在此处 Github 上提交错误/问题。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取针对初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题解答

查看资源