通过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的大模型,有兴趣的可以下载试玩一下。

如有资料更新我会第一时间进行处理。可以在我的公众号:那个曾经的少年回来了 后台回复消息:手机部署大模型
即可看到最新的阿里云盘工具和模型分享链接

posted @ 2024-04-09 20:15  aehyok  阅读(963)  评论(0编辑  收藏  举报