引言
随着Llama 3.2的发布,Meta在将强大的语言模型带到边缘和移动设备方面取得了重大进展。Llama 3.2包含了专为智能手机和平板电脑高效运行而设计的轻量级模型(1B和3B参数)。本教程将指导您通过MLC LLM库对Llama 3.2模型进行量化、转换和部署。
您将学习到
- 如何量化和转换Llama 3.2模型,以便在移动设备上兼容。
- 如何编译和构建Android应用程序,以便在设备上本地运行模型。
前提条件
- 一个Google Colab帐户(最好是Colab Pro或更高,以获取GPU资源)。
- 访问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:克隆存储库
首先,克隆包含必要脚本和笔记本的存储库。
!gitclonehttps://github.com/YourUsername/Llama3.2-on-Mobile.git
步骤2:安装依赖项
安装MLC LLM库,并确保NumPy版本兼容。
!pipinstall--pre--force-reinstallmlc-ai-nightly-cu122mlc-llm-nightly-cu122-fhttps://mlc.ai/wheels
!pipinstallnumpy==1.23.5
步骤3:导入库
importmlc_llm
importtorch
fromhuggingface_hubimportsnapshot_download
步骤4:验证GPU可用性
确保Colab使用的是GPU。
importtorch
torch.cuda.is_available()
如果返回True,则说明可以使用。
量化和转换模型
步骤1:下载Llama 3.2模型权重
登录Hugging Face账户并下载Llama 3.2模型。
fromhuggingface_hubimportnotebook_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-mmlc_llmconvert_weight/content/$MODEL_NAME/--quantization$QUANTIZATION-o/content/$MODEL_NAME-$QUANTIZATION-android/
步骤4:生成配置文件
创建必要的令牌文件和配置。
!python-mmlc_llmgen_config/content/$MODEL_NAME/--quantization$QUANTIZATION\
--conv-templatellama-3--context-window-size8192--prefill-chunk-size1024\
-o/content/$MODEL_NAME-$QUANTIZATION-android/
步骤5:为Android编译模型
将模型编译为Android兼容格式。
!python-mmlc_llmcompile/content/$MODEL_NAME-$QUANTIZATION-android/mlc-chat-config.json\
--deviceandroid-o/content/$MODEL_NAME-$QUANTIZATION-android/$MODEL_NAME-$QUANTIZATION-android.tar
步骤6:将模型上传到Hugging Face
这将使您更容易直接在Android设备上下载模型权重。
fromhuggingface_hubimportcreate_repo,upload_folder
repo_name=f"{MODEL_NAME}-{QUANTIZATION}-android"
username="YourUsername"#将其替换为您的HuggingFace用户名
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="QuantizedLlama3.2modelforAndroid.",
)
为Android编译模型
步骤1:设置Linux环境(可选)
如果您使用的是Windows,建议使用Linux环境或云虚拟机(如Google Cloud Platform)以避免兼容性问题。
步骤2:安装Rust
Rust是交叉编译标记器所需的。
curl--proto'=https'--tlsv1.2-sSfhttps://sh.rustup.rs|sh
安装后重启终端。
步骤3:安装Android NDK和CMake
打开Android Studio,通过SDK管理器安装NDK和CMake。
步骤4:安装其他依赖项
pipinstall--pre-U-fhttps://mlc.ai/wheelsmlc-llm-nightlymlc-ai-nightly
sudoapt-getinstallcmake
步骤5:克隆必要的存储库
gitclonehttps://github.com/mlc-ai/mlc-llm.git
gitclonehttps://github.com/YourUsername/Llama3.2-on-Mobile.git
步骤6:下载量化模型权重
导航到mlc-llm/android/MLCChat/dist/prebuilt目录,克隆包含量化模型的Hugging Face存储库。
cdmlc-llm/android/MLCChat/dist/prebuilt
gitclonehttps://huggingface.co/YourUsername/Llama-3.2-3B-q4f16_1-android.git
步骤7:复制编译后的模型
将之前生成的.tar文件复制到lib目录。
cdmlc-llm/android/MLCChat/dist
mkdirlib
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:设置环境变量
exportANDROID_NDK=/path/to/your/ndk
exportTVM_NDK_CC=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android24-clang
exportTVM_HOME=/path/to/mlc-llm/3rdparty/tvm
exportJAVA_HOME=/path/to/android-studio/jbr
exportMLC_LLM_HOME=/path/to/mlc-llm
步骤10:生成Android构建文件
cdmlc-llm/android/MLCChat
python3-mmlc_llmpackage
设置
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模型。这使得离线推理成为可能,并确保数据在您的设备上保持私密。欢迎尝试不同的模型和配置,以优化性能。