在Android上本地运行Llama-2-7b模型

自ChatGPT发布以来,大语言模型(Large language model, LLM)就成了AI乃至整个计算机科学的话题中心。学术界,工业界围绕大语言模型本身及其应用展开了广泛的讨论,大量的新的实践层出不穷。

由于LLM对计算资源的需求极大,有能力部署大语言模型的公司和实验室一般通过搭建集群,然后开放API或者网页demo的方式让用户可以使用模型。在人们纷纷发挥想象力尝试各种prompt与模型对话的时候,我们也注意到在一些应用场景中,出于定制化、个性化或者隐私性的目的,人们想要自己在各种终端设备中本地运行大语言模型,不需要/不希望连接互联网或者依赖于服务器,我们希望能够让每个人都可以开发,优化和部署AI大模型,让它工作在每个人都能方便获得的设备上。

来自 知乎

本文介绍了一种在Android平台上基于MLC-LLM本地运行Llama-2-7b的方法

演示视频

实践一:使用分发的APK

1:使用官方Demo

预设RedPajama-INCITE-Chat-3B-v1 config,可自行下载其他模型

2:使用我分发的Demo

预设Llama-2-7b-chat-hf config,安装后点击下载模型即可,Llama-2-7b模型需3.79GB,无需科学上网

实践二:自行编译

官方文档已给出编译流程,此处为在Mac上为Android平台编译MLC-LLM+Llama-2的一些补充

1: Git LFS

brew install git-lfs

2: PyTorch

pip3 install torch torchvision torchaudio

3: Conda

Conda

4: TVM

TVM,请注意TVM为Nightly Build,更新频繁,注意检查Hash是否与官方文档推荐的一致,否则如果在TVM调用过程中报错,可能需要考虑自行编译TVM

5: 获取Llama-2权限

注册Hugging Face账号,向Meta申请Llama-2权限

6:构建

按照官方文档编译模型

css 复制代码
python3 -m mlc_llm.build --hf-path togethercomputer/RedPajama-INCITE-Chat-3B-v1 --target android --max-seq-len 768 --quantization q4f16_1

此处对于Llama-2可修改为

css 复制代码
python3 -m mlc_llm.build --hf-path meta-llama/Llama-2-7b-chat-hf --target android --max-seq-len 768 --quantization q4f16_1

按照官方文档构建Android Package

bash 复制代码
cat android/MLCChat/app/src/main/assets/app-config.json
# "model_libs": [
#   ...
#   "vicuna-v1-7b-q4f16_1",
#   ...
# ],

此处app-config.json对于Llama-2可修改为

json 复制代码
{
  "model_libs": [
    "Llama-2-7b-chat-hf-q4f16_1"
  ],
  "model_list": [
    {
      "model_url": "https://huggingface.co/mlc-ai/mlc-chat-Llama-2-7b-chat-hf-q4f16_1/",
      "local_id": "Llama-2-7b-chat-hf-q4f16_1"
    }
  ],
  "add_model_samples": []
}

构建Android Package时,可能会遇到无文件权限写入模型问题,请合并我的这条commit来修复。当然,对于自己构建的APP,可使用adb push的方式直接将模型写入设备,避免重复下载

设备要求

对内存要求比较高,实测在华为nova 7 SE 5G(麒麟820+8G RAM)上可运行7b模型,如果更好的设备可尝试编译13b

相关推荐
氤氲息20 分钟前
Android 底部tab,使用recycleview实现
android
Clockwiseee1 小时前
PHP之伪协议
android·开发语言·php
小林爱1 小时前
【Compose multiplatform教程08】【组件】Text组件
android·java·前端·ui·前端框架·kotlin·android studio
小何开发2 小时前
Android Studio 安装教程
android·ide·android studio
开发者阿伟2 小时前
Android Jetpack LiveData源码解析
android·android jetpack
weixin_438150993 小时前
广州大彩串口屏安卓/linux触摸屏四路CVBS输入实现同时显示!
android·单片机
CheungChunChiu3 小时前
Android10 rk3399 以太网接入流程分析
android·framework·以太网·eth·net·netd
木头没有瓜4 小时前
ruoyi 请求参数类型不匹配,参数[giftId]要求类型为:‘java.lang.Long‘,但输入值为:‘orderGiftUnionList
android·java·okhttp
键盘侠0074 小时前
springboot 上传图片 转存成webp
android·spring boot·okhttp
江上清风山间明月4 小时前
flutter bottomSheet 控件详解
android·flutter·底部导航·bottomsheet