跳至主要内容

如何在安卓手机上用 Torchchat 运行 Llama 3.2 1B

按照分步说明,在您的安卓设备上使用 Torchchat 框架设置并运行 Llama 3.2 1B。
· 12分钟 阅读

使用 AI 探索

我最近写了一篇文章,介绍了如何用 Python 和 Torchchat 运行大语言模型(LLM)。Torchchat 是一个灵活的框架,旨在在多种硬件平台上高效执行 LLM。将 LLM 本地运行有多项好处,包括:

  • 离线访问:由于模型在我们的设备上运行,使用它无需连接互联网。
  • 隐私:因为我们自行运行模型,输入的提示与数据将保持私密。
  • 成本:可以免费运行模型。

在 Facebook 最近发布Llama 3.2之后,我决定在上一篇文章基础上扩展,讲解如何将其部署到我们的手机上,重点面向安卓平台。

以下是我们需要完成的高层步骤概览:

  • 下载模型文件。由于模型是开源的,可自由下载。
  • 生成在移动设备上运行该模型所需的文件。
  • 设置一个安卓聊天应用来执行模型。

Torchchat 可覆盖上述所有步骤。它提供命令来下载模型并生成所需的运行文件。更棒的是,它还附带一个安卓聊天演示应用,因此我们无需自行构建。

下载 Torchchat

第一步是使用 Git 克隆Torchchat 仓库:

git clone [email protected]:pytorch/torchchat.git

也可以不使用 Git,直接在 GitHub 上通过下载按钮获取:

从 GitHub 下载 Torchchat

重要提示:克隆(或下载)仓库后,我们的电脑上会出现一个名为 torchchat 的文件夹。本文中提到的所有命令都应在该文件夹内执行。

安装 Torchchat

我们假设已安装 Python 和 Anaconda。如未安装,请参阅这两篇教程:在 Windows 上安装 Anaconda 和 在 Mac OS X 上安装 Anaconda。

或者,按照Torchchat 仓库中的步骤操作,它使用虚拟环境而非 Anaconda。

我们先通过以下命令创建一个 Anaconda 环境:

conda create -yn llama python=3.10.0

这会创建一个名为 llama 的环境,并使用 3.10 版本的 Python。-yn 选项是 -y 与 -n 的组合:

  • -y 允许命令在创建环境前无需再次确认。
  • -n 用于指定环境名称,此处为 llama。创建完成后,我们激活该环境并安装依赖。

激活环境的命令如下:

conda activate llama

要安装必要依赖,我们使用 TorchChat 提供的安装脚本:

./install/install_requirements.sh

下载 Llama 3.2 1B 模型

在本教程中,我们将使用 Llama 3.2 1B(十亿参数)模型。可通过以下命令下载:

python torchchat.py download llama3.2-1b

试验其他模型的流程相同——需要将 llama3.2-1b 替换为目标模型的别名。务必仅选择标注为适合移动端的模型。

Torchchat 依托 Hugging Face 进行模型管理。因此,下载模型需要一个 Hugging Face 账户。关于如何创建账户并在终端登录的完整指南,请参阅这篇Torchchat 教程中的“下载模型”部分。

另外,也可以从Llama 官方网站下载模型。不过使用 Torchchat 更为便利,它还能帮助我们导出移动端部署所需的模型文件。

导出模型

要部署到移动设备,首先需要导出模型以生成 .pte 工件,该文件由 Executorch 使用。Executorch 是 Torchchat 在移动设备上运行 LLM 所用的引擎。

要生成 PTE 文件,须先安装 Executorch。运行以下命令:

export TORCHCHAT_ROOT=${PWD} 
./torchchat/utils/scripts/install_et.sh

安装完成后,可通过以下命令生成 PTE 文件:

python torchchat.py export llama3.2-1b --quantize torchchat/quant_config/mobile.json --output-pte-path llama3_2-1b.pte

该命令还会对模型进行量化,以减小体积并提升推理速度。这里使用 Torchchat 在 torchchat/quant_config/mobile.json 中的默认配置。

流程结束后,torchchat 文件夹中会生成一个名为 llama3_2-1b.pte 的文件。

准备移动应用

Torchchat 提供了一个安卓演示应用,让我们可以在智能手机上直接运行 Llama。该演示项目位于下载的 Torchchat 文件夹中,其相对路径为 torchchat/edge/android/torchchat。注意,路径中第一个 torchchat 指的是仓库内的子文件夹,而非仓库根目录。

下载并设置 Java 库

  1. 下载 Torchchat 提供的 .aar 文件。其中包含用于构建和运行应用的 Java 库及相应的 JNI 库。
  2. 进入应用目录:torchchat/edge/android/torchchat/app/
  3. 创建名为 libs 的目录(如尚不存在)
  4. 将下载的文件重命名为 executorch.aar,并粘贴到 libs 文件夹中。

在 Android Studio 中加载安卓项目

从官网下载并安装 Android Studio。安装完成后,打开项目:

在 Android Studio 中打开演示应用

演示项目位于 torchchat/edge/android/torchchat。

打开项目时,会弹出一个窗口询问我们是否信任该代码:

打开演示应用后的弹窗

此处选择“Trust Project”。

打开项目后,Android Studio 需要一些时间加载配置并完成初始设置。务必等待其完成。我们可以在窗口右下角查看状态。准备就绪后,顶部的运行按钮会变成绿色:

如何判断项目已加载完成

在安卓设备上开启开发者模式

要通过 Android Studio 在手机上运行应用,我们需要在设备上启用开发者模式。步骤如下:

  1. 进入“设置”
  2. 选择“关于设备”或“关于手机”
  3. 打开“软件信息”
  4. 找到“版本号(Build number)”,连续点击七次

就这样!现在我们可以通过 Android Studio 在设备上运行应用。运行后,应用会保留在手机上,即使不连接电脑也能再次打开。

安装 adb

应用需要将模型文件放在手机上的特定文件夹中。为把这些文件传到手机,我们使用 adb(Android Debug Bridge)。可通过 Android Studio 按以下步骤安装:

  1. 打开设置,在搜索栏输入“Android SDK”
  2. 找到名为“Android SDK”的菜单并点击
  3. 勾选“Android SDK command line tools (latest)”选项
  4. 点击“Apply”进行安装

在 Android Studio 中安装 adb

注意,窗口顶部会显示 Android SDK 的位置:

查找 adb 路径

复制该路径,并执行以下命令(将下面的 <android_skd_location> 替换为刚复制的路径):

export PATH=$PATH:<android_skd_location>/platform-tools/

通过命令 adb --version 可确认 adb 是否安装成功,它会显示 adb 的版本。

在手机上配置应用

用数据线将手机连接到电脑。设备名称会出现在运行按钮旁的设备列表中:

Android Studio 中的设备选择

在手机上运行应用之前,我们先用 adb 将所需的模型文件复制到设备。

  1. 使用 adb devices 查找设备 id。输出可能包含多行,找到形如 <device_code> device 的那一行,并复制其中的设备代码。
  2. 使用 adb -s <device_code> shell mkdir -p /data/local/tmp/llama 创建存放模型文件的目录。
  3. 用 adb -s <device_code> push llama3_2-1b.pte /data/local/tmp/llama 将位于 torchchat 文件夹中的 .pte 文件复制到设备。
  4. 用 python torchchat.py where llama3.2-1b 定位模型的 tokenizer 文件。该命令会输出多行,我们只需关注最后一行显示的路径。

定位 tokenizer.model 文件

  1. 使用 adb -s <device_code> push <model_path>/tokenizer.model /data/local/tmp/llama 将 tokenizer 文件复制到设备,其中 <model_path> 替换为上一步获取的路径。

完成以上步骤后,模型文件应已位于我们的手机中并可使用。可通过列出刚创建的设备目录中的所有文件来检查:

adb -s <device_code> shell ls 

输出应包含我们刚复制的两个文件:

llama3_2-1b.pte
tokenizer.model

运行应用

现在一切就绪,可以在手机上运行演示应用了。点击绿色箭头即可运行。

在手机上运行应用

这会在我们的设备上打开应用。应用会提示我们选择模型和 tokenizer 文件。

选择模型与 tokenizer

使用 Llama 3.2 1B 应用

现在我们可以在手机上与 Llama3.2 1B 开始对话了!应用界面相当简洁。我们可以在“Prompt”文本框中输入提示词,并使用“Generate”按钮发送给模型。

由于模型离线运行,我甚至可以在飞往下一个目的地的飞机上使用它,例如请它推荐一些菜品:

应用使用示例

通过这次交互,我们可以观察到演示应用的一些局限性:

  1. 回答会重复我们的提示。
  2. 回答的格式以“I’ve been to Taiwan…”开头,说明该应用并未将模型直接作为助手使用进行设计。
  3. 回复会被突然截断,可能是因为达到 token 上限。

我们可以在终端运行同一模型进行对比,命令如下:

python torchchat.py chat llama3.2-1b

我们给出相同的提示,看看行为是否不同。实际确实如此,此时的回答更自然、更有用,尽管同样被截断:

模型在电脑上的表现

我联系了 Torchchat 团队,他们表示 Llama 3.2 发布较新,演示应用需要稍作更新以支持它。

不过,搭建流程将保持不变,这里学到的知识也同样适用于更新版本。很可能当您读到本文时,应用已经更新并能正常工作。

结语

在本指南中,我们学习了如何使用 Torchchat 在安卓设备上直接设置 Llama 3.2 1B。我们按步骤完成了必要组件的下载与安装,包括模型文件和安卓演示应用。

尽管当前的演示应用在响应格式和长度上存在一些限制,但这类实现的潜力十分可观。

如果您想进一步了解 Llama 3.2,推荐阅读以下博客:

François Aubry

作者

François Aubry

全栈工程师,CheapGPT 创始人。我一直热爱教学。从学生时代起,我就积极寻找机会为同学提供辅导与帮助。这份热情促使我攻读博士学位,并在此期间担任助教,以支持我的学术追求。那些年里,我在传统课堂环境中收获了极大的成就感,既建立联系也促进学习。随着在线学习平台的兴起,我也看到了数字教育的变革潜力。事实上,我曾参与我们大学一款此类平台的建设。我致力于将传统教学理念与创新的数字方法相融合。我的热情在于打造既有吸引力、信息量充足,又能让当代学习者轻松获取的课程。

主题