通过termux tailscale huggingface 来手把手一步一步在手机上部署LLAMA2-7b和LLAMA2-70b大模型
前言
首先截图一下我的小米手机的配置
我这个配置其实一般,当时主要为了存储空间大,而我对配置要求又不高,买的。
在手机上安装termux app,然后在termux上就可以使用各种命令进行安装和使用,就像在linux操作系统上一样了。
再通过termux安装上openssh,这样你就可以在window、mac等电脑上远程这台手机了。
然后远程的时候ip如何处理呢?这个时候TailScale就派上用场了,可以组建局域网,识别出IP,这样在可信任的几台机器上使用类似局域网IP,就非常简单了。
这里先分享一下我现在使用的两个apk的下载地址。
https://www.alipan.com/s/kU8qpJ4m5cJ
手机上安装Tailscale
Tailscale 是一种基于 WireGuard 的虚拟组网工具,它在用户态实现了 WireGuard 协议,相比于内核态 WireGuard 性能会有所损失,但在功能和易用性上下了很大功夫:
- 开箱即用
- 无需配置防火墙
- 没有额外的配置
- 高安全性/私密性
- 自动密钥轮换
- 点对点连接
- 支持用户审查端到端的访问记录
- 在原有的 ICE、STUN 等 UDP 协议外,实现了 DERP TCP 协议来实现 NAT 穿透
- 基于公网的控制服务器下发 ACL 和配置,实现节点动态更新
- 通过第三方(如 Google) SSO 服务生成用户和私钥,实现身份认证
简而言之,我们可以将 Tailscale 看成是更为易用、功能更完善的 WireGuard。
我简单的来说明一下,我现在使用Tailscale的场景,我有以下几台设备:
- 一台阿里云的linux服务器(有域名的)
- 一台小米手机(也是常开的)
- 一台windows电脑(在公司,一般不关机的)
- 一台mac电脑(需要特定的地区哟)
也就是这几台设备,我可以进行组建局域网,例如我现在window电脑上部署了某个服务网站,按照常规来说我只能在我的window电脑上进行访问,但是现在我组建Tailscale局域网,我就可以在我的小米手机上访问这个服务网站,甚至在公司的mac电脑上访问这个服务网站。而且如果我想对外公开这个网站,我可以在我的阿里云服务器上通过nginx进行代理跳转,这样我就可以在任何地方访问这个服务网站了。但是其实它是部署在我公司的window电脑上的。
大致知道Tailscale是干什么的了。
那么首先我们在tailscale.com上进行注册一个账号,然后在对应的设备上安装上 Tailscale的客户端,然后绑定到Tailscale平台上就可以了
Tailscale平台对于服务端是没有进行开源的,所以就有了安全问题,如果你不放心的话,也可以选择完全开源的headscale,自己部署所有端进行管理使用
具体开源地址为:https://github.com/juanfont/headscale
所有不同linux系统上安装指南应该都在这里 https://tailscale.com/download/linux/debian-stretch
从我个人的角度,人家考虑商用要赚钱,安全性也是能保证的,同时对于免费版本有一些限制。
这里可以在官网或者我的阿里云盘分享链接中直接安装apk就可以了。
手机上安装Termux
首先说明一下Termux是一个成熟的 Linux 终端,这里我是直接安装到我的小米手机上的。它是免费的,并且不需要root访问权限。Termux 可以从 Google Play 下载,但是上面的版本已经很旧了,并且 Termux 中的“pkg update”命令不再起作用。我阿里云盘上分享的是比较新版本的APK文件,而且我使用下来是没什么问题的。较新版本也可以在 F-Droid 网站上以 APK 形式提供,建议下载该较新版本。
当 Termux 安装在安卓手机上以后,就可以看到如下图琐事的 Linux 命令行界面:
理论上讲,我们可以直接在手机上输入所有命令,但是在小键盘上打字很不方便。所以我们选择通过pkg update的方法,注意这里就需要在手机上的Termux使用如下命令来安装 SSH:
pkg update
pkg upgrade
pkg install openssh
然后再在termux中启动ssh程序。获取手机的ssh登录的用户和密码
sshd
whoami
// 可以看到用户名 u0_a461
passwd
// 可以进行设置密码
// 并且需要输入确认密码
sshd启动服务,记得在远程时要打开此服务,当然你也可以将sshd服务设置为开机自启,有需要的可以去查询,这里我不做详细的描述了。
现在我就可以在window电脑上通过命令
ssh -p 8022 u0_a461@xxx.xx.xx.xx
// 再输入密码就远程到手机了
ip记得从TailScale上获取即可,然后输入上面设置的密码,就能看到下图所示的界面,说明远程SSH成功了。
Hugging Face了解一下
现在可以远程了,那么我们就开始准备大模型,那么大模型从那里来呢?于是就有了这个Hugging Face
官网地址:https://huggingface.co/
Hugging Face 不仅是一个名字,它更象征着 AI 技术的民主化。想象有一个地方,AI 开发就像在 GitHub 上一样简易和互助,这就是 Hugging Face 的基本理念。由于 Hugging Face 的服务器设在海外,国内用户可能需要通过特定方式访问以获取最佳体验,这个我在文章标题中也有提到。Hugging Face 的魅力所在就是降低了 AI 开发的门槛。它不仅仅为大型企业服务,也支持个人开发者利用有限资源创造出惊人的 AI 应用。Hugging Face 的影响力正在重塑我们对机器学习开发方式的理解。通过提供简易、高效且开放的工具,它让每一个对 AI 技术充满热情的人,都有机会在这个领域内留下自己的足迹。
可以通过 python 进行安装 huggingface,那么这里首先可能要搭建好 python 的环境
通过pip进行安装huggingface_hub
pip3 install huggingface_hub
然后就可以直接在代码中调用,下面的代码也是举例子,具体的参数在使用时可以取查询一下
from huggingface_hub import snapshot_download
snapshot_download(repo_id="tatsu-lab/alpaca_eval", repo_type='dataset')
或者也可以通过huggingface-cli 命令行进行下载模型
huggingface-cli download --repo-type dataset tatsu-lab/alpaca_eval
准备大模型
大致知道了如何使用 huggingface 后,我们就来实际操作一下,这里准备的大模型是 Llama.CPP。
它非常适合在不同的硬件上测试 LLM。Llama.CPP几乎可以在任何地方工作——CPU、CUDA 或 Apple 芯片上。原始Llama.CPP是用 C++ 编写的,但我将使用 Python 库,它更容易使用。
开源仓库地址:https://github.com/ggerganov/llama.cpp
本文要下载的大模型:https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF
它上面也是会介绍如何下载模型的
安装所需的软件库
pkg install tur-repo libopenblas libandroid-execinfo ninja binutils
pkg install python3 python-numpy build-essential cmake clang git
pip3 install llama-cpp-python huggingface-hub
通过huggingface-cli下载大模型
huggingface-cli download TheBloke/Llama-2-7B-Chat-GGUF llama-2-7b-chat.Q4_K_M.gguf --local-dir . --local-dir-use-symlinks False
下载完毕后,准备代码,例如代码文件为main.py
from llama_cpp import Llama
llm = Llama(model_path="llama-2-7b-chat.Q4_K_M.gguf",
n_gpu_layers=0,
n_ctx=8192,
echo=True)
question = input(">>> 请输入你的问题: ")
template = f"""<s>[INST] <<SYS>>
你现在是一名优秀的专家,请使用中文回答我下面的问题。
<</SYS>>
{question}[/INST]"""
stream = llm(template, stream=True, max_tokens=2560, temperature=0.2)
for output in stream:
print(output['choices'][0]['text'], end="")
要注意下载的大模型文件和代码文件要在同一个路径下
然后执行命令
python3 main.py
如果能看到类似的截图,说明大模型跑起来了,然后我们来输入一个问题,来看一下效果吧
其实效果还算可以吧,最起码真的给我找到了深圳的五个地点,然后不太理想的是描述是英文的。输出的文字确实多了一些,所以我等待的时间也相应的长了很多。
如果你想更快一点的来查看效果可以租用带有GPU的服务器,来部署一下玩玩,或者在google的colab上,免费享用速度还贼快贼快了
附上享用链接:https://colab.research.google.com/
最后
如果通过命令下载模型比较慢,或者特殊网络达不到的话,可以直接在我的阿里云盘中进行打包下载,然后拷贝到对应的目录进行使用是一样的效果,同时我也提供下载一个38G的大模型,有兴趣的可以下载试玩一下。
如有资料更新我会第一时间进行处理。可以在我的公众号:那个曾经的少年回来了 后台回复消息:手机部署大模型
即可看到最新的阿里云盘工具和模型分享链接