使用Android手机运行AI模型
今天逛 Github,看到一个名为 ChatLM-mini-Chinese 的中文对话小模型项目,规模比较小,参数量为 0.2 B 。介绍写着推理最少只需要 512 MB 显存,而且支持 CPU,顿时吸引了我的兴趣,便想着跑个玩玩。
仓库地址:https://github.com/charent/ChatLM-mini-Chinese
服务器都跑着东西,不太想拿服务器折腾,就拿以前的旧手机来跑了。
因为之前那个旧手机跑成功了 ChatPLUG-240M,而 ChatPLUG-240M 的模型大小有 1 G 多,ChatLM-mini-Chinese 的模型大小为 751 M ,所以感觉跑这个应该也没问题。
有人可能问,手机怎么能跑模型呢?其实很简单,只要手机能运行 Python 就能跑模型。
我所知道的方法:
安装 Termux 软件。Termux 是一个适用于 Android 的终端模拟器,其环境类似于 Linux 环境。无需 Root 或设置即可使用。Github 下载地址:https://github.com/termux/termux-app
安装 LinuxDeploy 软件。Linux Deploy 是一款可以在 Android 设备上部署 Linux 环境的应用,其原理是在 Android 的 Linux 层跑一个 chroot 或者 proot 容器,然后再在容器中运行我们准备好的另外一个 Linux 系统。Github 下载地址:https://github.com/meefik/linuxdeploy。我之前也写过一篇 LinuxDeploy 运行 CentOS 的文章:https://www.5had0w.com/posts/66b25b9f.html
刷入 Kali NetHunter。Kali NetHunter 是一个基于 Kali Linux 的免费开源移动渗透测试平台,适用于 Android 设备。刷好之后手机就会有 Linux 环境,我的手机就是用的这种方式,正是我以前无聊的时候折腾的。Nethunter 官网:https://www.kali.org/docs/nethunter/
然后就是根据 README 文档的指引来运行模型,作者的 README 写的很详细。
先用 Git 把项目 Clone 下来。
1 | git clone --depth 1 https://github.com/charent/ChatLM-mini-Chinese.git |
接着安装依赖。按照作者的提示,最好是用 Python 3.10 版本来跑。
我手机上没有 Python 3.10 环境,不过之前有装 conda。我装的是 Miniconda,参考文档:https://docs.conda.io/projects/miniconda/en/latest/
那么,直接用 conda 新建一个 Python 3.10 环境,并激活该环境。
1 | conda create -n py310 python=3.10 |
我这有个小 bug,明明当前已经激活了 py310 环境,但是终端显示的当前环境,还是我默认的 py37,不知是不是 zsh 的问题,不过问题不大,实际是切换成功了的。
开始安装依赖。
1 | pip install -r ./requirements.txt |
试了好几次一直失败,似乎是网络的问题。
换成清华大学的源,成功安装。
1 | pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r ./requirements.txt |
接着是下载模型,我直接用电脑去 Hugging Face Hub 一个一个文件下载的,下载好后通过终端工具再传到手机的 Linux 环境。
Huggingface 下载地址:https://huggingface.co/charent/ChatLM-mini-Chinese/tree/main
按照 README,把下载的模型文件都放到 ChatLM-mini-Chinese/model_save 下。
尝试控制台运行。
1 | python cli_demo.py |
报错,发现是模型文件路径不对。
修改 ChatLM-mini-Chinese/config.py。
1 | # 15行 |
再次运行,成功。
速度还可以,而且是流式对话,大概 几秒 ~ 十几秒 出一个字。要知道,我手机的 CPU 可是 8 年前的 高通骁龙 625 ,很老的 U 了,居然也能 “流畅运行” AI 模型,哈哈。
至于说智能程度,小模型的话,受限于参数量,肯定是比不上大模型的,很多问题答不上也正常,这点不做深究。
顺便再提一提 ChatPLUG ,这是阿里达摩院训练的大模型,分为 ChatPLUG-3.7B 和 ChatPLUG-240M。
- ChatPLUG-3.7B:https://modelscope.cn/models/damo/ChatPLUG-3.7B/summary
- ChatPLUG-240M:https://modelscope.cn/models/damo/ChatPLUG-240M/summary
参考魔塔社区文档,安装相关环境。
然后即可使用示例代码来运行。
ChatPLUG 不是流式对话,需要等全部内容生成完,才会响应,一些简单的问题大概需要一两分钟的样子,因为手机性能实在差。
给大家看一张我和 ChatPLUG-240M 的对话,感觉答的还可以。
手机 8 个核几乎都 100 %。
因为这些都是小模型,我用手机跑,只是想验证用手机能不能跑。
如果用电脑或者服务器,使用显卡来跑的话,速度应该会很快。