当前位置:AIGC资讯 > AIGC > 正文

如何在Android上运行Llama 3.2

引言

随着Llama 3.2的发布,Meta在将强大的语言模型带到边缘和移动设备方面取得了重大进展。Llama 3.2包含了专为智能手机和平板电脑高效运行而设计的轻量级模型(1B和3B参数)。本教程将指导您通过MLC LLM库对Llama 3.2模型进行量化、转换和部署。

您将学习到

如何设置模型转换和部署的环境。 如何量化和转换Llama 3.2模型,以便在移动设备上兼容。 如何编译和构建Android应用程序,以便在设备上本地运行模型。

前提条件

一个Google Colab帐户(最好是Colab Pro或更高,以获取GPU资源)。 一台具有足够硬件能力的Android设备。 基本的Python和命令行工具知识。 访问Llama 3.2模型权重(可在Hugging Face上获取)。

目录

了解Llama 3.2 设置环境 量化和转换模型 为Android编译模型 设置Android环境 构建和运行Android应用 结论

了解Llama 3.2

Llama 3.2是Meta最新的开源语言模型版本,经过优化以适应边缘和移动设备。轻量级模型(1B和3B参数)支持高达128K令牌的上下文长度,并能够执行诸如摘要、指令跟随和重写等任务,均可在您的设备上本地运行。

关键特性:

轻量级模型: 专为设备部署设计的1B和3B参数模型。 高性能: 经过优化,以提高效率而不牺牲能力。 隐私友好: 本地运行模型确保您的数据保留在设备上。

设置环境

我们将使用Google Colab进行初步步骤,以利用其GPU资源。

步骤1:克隆存储库

首先,克隆包含必要脚本和笔记本的存储库。

!git clone https://github.com/YourUsername/Llama3.2-on-Mobile.git

步骤2:安装依赖项

安装MLC LLM库,并确保NumPy版本兼容。

!pip install --pre --force-reinstall mlc-ai-nightly-cu122 mlc-llm-nightly-cu122 -f https://mlc.ai/wheels
!pip install numpy==1.23.5

步骤3:导入库

import mlc_llm
import torch
from huggingface_hub import snapshot_download

步骤4:验证GPU可用性

确保Colab使用的是GPU。

import torch
torch.cuda.is_available()

如果返回True,则说明可以使用。

量化和转换模型

步骤1:下载Llama 3.2模型权重

登录Hugging Face账户并下载Llama 3.2模型。

from huggingface_hub import notebook_login
notebook_login()

# 将'meta-llama/Llama-3.2-3B'替换为实际模型库
snapshot_download(repo_id="meta-llama/Llama-3.2-3B", local_dir="/content/Llama-3.2-3B/")

步骤2:配置模型名称和量化类型

设置模型名称和所需的量化。

MODEL_NAME = "Llama-3.2-3B"
QUANTIZATION = "q4f16_1"

步骤3:转换和量化模型

使用MLC LLM工具对模型权重进行量化和转换。

!python -m mlc_llm convert_weight /content/$MODEL_NAME/ --quantization $QUANTIZATION -o /content/$MODEL_NAME-$QUANTIZATION-android/

步骤4:生成配置文件

创建必要的令牌文件和配置。

!python -m mlc_llm gen_config /content/$MODEL_NAME/ --quantization $QUANTIZATION \
    --conv-template llama-3 --context-window-size 8192 --prefill-chunk-size 1024  \
    -o /content/$MODEL_NAME-$QUANTIZATION-android/

步骤5:为Android编译模型

将模型编译为Android兼容格式。

!python -m mlc_llm compile /content/$MODEL_NAME-$QUANTIZATION-android/mlc-chat-config.json \
    --device android -o /content/$MODEL_NAME-$QUANTIZATION-android/$MODEL_NAME-$QUANTIZATION-android.tar

步骤6:将模型上传到Hugging Face

这将使您更容易直接在Android设备上下载模型权重。

from huggingface_hub import create_repo, upload_folder

repo_name = f"{MODEL_NAME}-{QUANTIZATION}-android"
username = "YourUsername"  # 将其替换为您的Hugging Face用户名
repo_id = f"{username}/{repo_name}"

create_repo(repo_id, exist_ok=True)

upload_folder(
    repo_id=repo_id,
    folder_path=f"/content/{MODEL_NAME}-{QUANTIZATION}-android/",
    commit_message="Quantized Llama 3.2 model for Android.",
)

为Android编译模型

步骤1:设置Linux环境(可选)

如果您使用的是Windows,建议使用Linux环境或云虚拟机(如Google Cloud Platform)以避免兼容性问题。

步骤2:安装Rust

Rust是交叉编译标记器所需的。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

安装后重启终端。

步骤3:安装Android NDK和CMake

打开Android Studio,通过SDK管理器安装NDK和CMake。

步骤4:安装其他依赖项

pip install --pre -U -f https://mlc.ai/wheels mlc-llm-nightly mlc-ai-nightly
sudo apt-get install cmake

步骤5:克隆必要的存储库

git clone https://github.com/mlc-ai/mlc-llm.git
git clone https://github.com/YourUsername/Llama3.2-on-Mobile.git

步骤6:下载量化模型权重

导航到mlc-llm/android/MLCChat/dist/prebuilt目录,克隆包含量化模型的Hugging Face存储库。

cd mlc-llm/android/MLCChat/dist/prebuilt
git clone https://huggingface.co/YourUsername/Llama-3.2-3B-q4f16_1-android.git

步骤7:复制编译后的模型

将之前生成的.tar文件复制到lib目录。

cd mlc-llm/android/MLCChat/dist
mkdir lib
cp /content/Llama-3.2-3B-q4f16_1-android.tar ./lib/

步骤8:配置mlc-package-config.json

编辑mlc-package-config.json文件以包含您的模型详细信息。

{
    "device": "android",
    "model_list": [
        {
            "model": "Llama-3.2-3B-q4f16_1-android",
            "bundle_weight": true,
            "model_id": "llama-3.2-3b-q4f16_1",
            "model_lib": "llama-q4f16_1",
            "estimated_vram_bytes": 1500000000,
            "overrides": {
                "context_window_size": 768,
                "prefill_chunk_size": 256
            }
        }
    ],
    "model_lib_path_for_prepare_libs": {
        "llama-q4f16_1": "./dist/lib/Llama-3.2-3B-q4f16_1-android.tar"
    }
}

步骤9:设置环境变量

export ANDROID_NDK=/path/to/your/ndk
export TVM_NDK_CC=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang
export TVM_HOME=/path/to/mlc-llm/3rdparty/tvm
export JAVA_HOME=/path/to/android-studio/jbr
export MLC_LLM_HOME=/path/to/mlc-llm

步骤10:生成Android构建文件

cd mlc-llm/android/MLCChat
python3 -m mlc_llm package

设置

Android环境

步骤1:打开Android项目

在Android Studio中打开位于Llama3.2-on-Mobile/mobile-llama3/MobileLlama3的Android项目。

步骤2:更新mlc-app-config.json

src/main/assets目录中,配置mlc-app-config.json文件。

{
  "model_list": [
    {
      "model_id": "llama-3.2-3b-q4f16_1",
      "model_lib": "llama-q4f16_1",
      "model_url": "https://huggingface.co/YourUsername/Llama-3.2-3B-q4f16_1-android",
      "estimated_vram_bytes": 1500000000
    }
  ]
}

步骤3:构建Android应用

在Android Studio中点击Build > Make Project,这可能需要一些时间。

构建和运行Android应用

步骤1:连接Android设备

确保您的设备启用了USB调试。

步骤2:运行应用

在Android Studio中点击Run > Run 'app'

步骤3:与设备上的Llama 3.2互动

应用安装后,您可以开始在Android设备上直接与Llama 3.2模型互动。

注意:在移动设备上运行大型语言模型需要相当大的计算资源。性能可能会根据设备的硬件能力而有所不同。

结论

恭喜您!您已成功在Android设备上部署Llama 3.2模型。这使得离线推理成为可能,并确保数据在您的设备上保持私密。欢迎尝试不同的模型和配置,以优化性能。

额外资源

Llama 3.2公告 MLC LLM GitHub存储库 Hugging Face上的Llama 3.2权重 Android Studio下载

致谢

本教程受到Nitin Tiwari和MLC LLM团队工作的启发。特别感谢Meta发布Llama 3.2并使其对全球开发者可用。

总结

本文详细指导用户如何将Meta最新发布的强大语言模型Llama 3.2量化、转换并部署至Android移动设备上。文章分为多个关键部分,确保读者不仅了解LLama 3.2的特性和优势,还能逐步完成整个流程。以下是对主要内容的总结:
### 引言
Meta发布的Llama 3.2模型包含专为移动端设计的轻量级版(1B和3B参数),支持大量令牌上下文及多种自然语言处理任务,已实现高效在移动设备的本地化运行。
### 您将学习到
- 设置转换和部署环境
- 模型量化和转换技术
- 为Android编译模型
- 编译构建Android应用程序
### 前提条件
读者需要有:
- Google Colab帐户(推荐使用Pro或以上等级以获取GPU资源)
- 硬件能力足够的Android设备
- 基本Python和命令行工具知识
- 访问Llama 3.2的模型权重(通过Hugging Face获取)
### 目录结构
- **了解Llama 3.2**:详细介绍LLama 3.2的优势和特性。
- **设置环境**:在Colab上设置必要的脚本和依赖项。
- **量化和转换模型**:通过MLC LLM库对模型进行量化和转换。
- **为Android编译模型**:详细步骤将模型编译为Android设备可运行格式。
- **设置Android环境**:安装Android Studio并准备开发环境。
- **构建和运行Android应用**:最终构建应用并在设备上实现模型运行。
- **结论**和**额外资源**:总结教程并列出参考资源。
### 步骤概述
#### 设置环境
1. 克隆存储库
2. 安装依赖项(MLC LLM、NumPy等)
3. 验证GPU可用性
#### 量化和转换模型
1. 下载Llama 3.2模型权重
2. 配置模型名称和量化类型
3. 对模型权重进行量化转换
4. 生成配置文件
5. 为Android编译模型
6. 将模型上传至Hugging Face
#### 为Android编译模型
1. 设置Linux环境(如Windows用户)
2. 安装Rust、Android NDK、CMake等
3. 克隆相关存储库并下载模型权重
4. 复制并配置文件
5. 设置环境变量
6. 生成Android构建文件
#### Android应用设置与构建
1. 在Android Studio中打开项目
2. 更新配置文件(指定模型信息和URL)
3. 构建项目
#### 构建和运行Android应用
1. 连接Android设备
2. 运行应用
3. 在设备上与模型互动
### 结论
通过这一教程,用户能够成功将Llama 3.2部署至Android设备上,实现离线推理功能,保障数据隐私。进一步可优化不同模型和配置,以达到最佳性能。
### 致谢
最后,文章感谢了Nitin Tiwari和MLC LLM团队,以及Meta公司对Llama 3.2的贡献和开源精神。

更新时间 2024-10-05