通過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 [email protected]
// 再輸入密碼就遠程到手機了

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的大模型,有興趣的可以下載試玩一下。

如有資料更新我會第一時間進行處理。可以在我的公衆號:那個曾經的少年回來了 後臺回覆消息:手機部署大模型
即可看到最新的阿里雲盤工具和模型分享鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章