发布于 

使用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 就能跑模型。

我所知道的方法:

  1. 安装 Termux 软件。Termux 是一个适用于 Android 的终端模拟器,其环境类似于 Linux 环境。无需 Root 或设置即可使用。Github 下载地址:https://github.com/termux/termux-app

  2. 安装 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

  3. 刷入 Kali NetHunter。Kali NetHunter 是一个基于 Kali Linux 的免费开源移动渗透测试平台,适用于 Android 设备。刷好之后手机就会有 Linux 环境,我的手机就是用的这种方式,正是我以前无聊的时候折腾的。Nethunter 官网:https://www.kali.org/docs/nethunter/

然后就是根据 README 文档的指引来运行模型,作者的 README 写的很详细。

先用 Git 把项目 Clone 下来。

1
2
3
git clone --depth 1 https://github.com/charent/ChatLM-mini-Chinese.git

cd ChatLM-mini-Chinese

接着安装依赖。按照作者的提示,最好是用 Python 3.10 版本来跑。

我手机上没有 Python 3.10 环境,不过之前有装 conda。我装的是 Miniconda,参考文档:https://docs.conda.io/projects/miniconda/en/latest/

那么,直接用 conda 新建一个 Python 3.10 环境,并激活该环境。

1
2
3
conda create -n py310 python=3.10

conda activate py310

我这有个小 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
2
3
4
5
# 15行
model_dir: str = PROJECT_ROOT + '/model_save/dpo_model/'

# 改为
model_dir: str = PROJECT_ROOT + '/model_save/'

再次运行,成功。

速度还可以,而且是流式对话,大概 几秒 ~ 十几秒 出一个字。要知道,我手机的 CPU 可是 8 年前的 高通骁龙 625 ,很老的 U 了,居然也能 “流畅运行” AI 模型,哈哈。

至于说智能程度,小模型的话,受限于参数量,肯定是比不上大模型的,很多问题答不上也正常,这点不做深究。


顺便再提一提 ChatPLUG ,这是阿里达摩院训练的大模型,分为 ChatPLUG-3.7BChatPLUG-240M

  1. ChatPLUG-3.7B:https://modelscope.cn/models/damo/ChatPLUG-3.7B/summary
  2. ChatPLUG-240M:https://modelscope.cn/models/damo/ChatPLUG-240M/summary

参考魔塔社区文档,安装相关环境。

文档:https://modelscope.cn/docs

然后即可使用示例代码来运行。

ChatPLUG 不是流式对话,需要等全部内容生成完,才会响应,一些简单的问题大概需要一两分钟的样子,因为手机性能实在差。

给大家看一张我和 ChatPLUG-240M 的对话,感觉答的还可以。

手机 8 个核几乎都 100 %。


因为这些都是小模型,我用手机跑,只是想验证用手机能不能跑。

如果用电脑或者服务器,使用显卡来跑的话,速度应该会很快。


——end——