項目地址:https://github.com/b4rtaz/distributed-llama
本文檔將指導您如何使用一個樹莓派5作為Root節點和三個樹莓派4作為Worker節點,共同搭建一個4節點的分布式LLM推理集群,并運行10.9GB的Qwen 3 14B模型。
中間要用到github和huggingface的,
注意
將下面的IP和端口替換為你自己的,我電腦上開啟了**程序,我的電腦ip是192.168.71.70
export http_proxy=“http://192.168.71.70:7890”
export https_proxy=“http://192.168.71.70:7890”
集群架構概覽
- Root 節點 (兼Worker): 1 x 樹莓派 5
- IP地址:
192.168.71.84
- 職責: 加載模型和權重,分發給Worker節點,同步神經網絡狀態,并處理自己那一部分的計算任務。
- IP地址:
- Worker 節點: 3 x 樹莓派 4
- IP地址:
192.168.71.83
,192.168.71.86
,192.168.71.91
- 職責: 接收Root節點的指令和數據,處理分配給自己的計算任務。
- IP地址:
1. 準備工作 (所有節點)
在開始之前,請確保您的所有4個樹莓派都滿足以下條件。這些步驟需要在每一臺樹莓派上執行。
1.1 硬件與網絡
- 內存 (RAM): 強烈建議所有樹莓派都配備 8GB RAM。Qwen 3 14B模型大小為10.9GB,分攤到4個節點上,每個節點約需承載
10.9 / 4 ≈ 2.73 GB
的模型數據。加上操作系統和程序運行所需的內存,4GB內存的設備可能會非常勉強或失敗。 - 操作系統: 安裝最新版的 Raspberry Pi OS (64-bit)。64位系統對于性能和內存管理至關重要。
- 網絡連接: 簡易使用有線以太網。將所有4個樹莓派連接到同一個路由器或交換機。無線網絡(Wi-Fi)會有較高延遲。
1.2 系統與軟件
-
更新系統:
通過SSH登錄到每個樹莓派,然后運行以下命令更新軟件包列表和系統:sudo apt update sudo apt upgrade -y
-
安裝依賴:
安裝git
用于克隆項目倉庫,python3-pip
用于安裝Python包,以及build-essential
用于編譯C++代碼。sudo apt install git python3-pip build-essential -y
-
克隆項目倉庫:
將Distributed Llama
項目克隆到本地。git clone https://github.com/bgz-io/distributed-llama.git cd distributed-llama
完成以上步驟后,您的所有節點都已準備就緒。
2. 配置并啟動 Root 節點 (樹莓派 5)
此步驟僅在 Root 節點 (192.168.71.84
) 上執行。
-
SSH 登錄:
確保您已登錄到樹莓派5。 -
下載并準備模型:
在distributed-llama
目錄中,運行launch.py
腳本。這將自動下載Qwen 3 14B模型、tokenizer,并完成所有必要的轉換和設置。python3 launch.py qwen3_14b_q40
注意: 這是一個非常耗時的過程!您需要下載10.9GB的文件,并且腳本會進行一些處理。請確保您的網絡連接穩定,并耐心等待其完成。完成后,模型文件將存儲在本地。
3. 啟動 Worker 節點 (3 x 樹莓派 4)
此步驟需要在每一個 Worker 節點 (192.168.71.83
, 192.168.71.86
, 192.168.71.91
) 上分別執行。為方便操作,您可以為每個Worker節點打開一個獨立的SSH終端窗口。
在每個Worker節點的終端中,進入 distributed-llama
目錄,然后運行以下命令來啟動Worker進程:
# 在 192.168.71.83 上運行
# 在 192.168.71.86 上運行
# 在 192.168.71.91 上運行./dllama worker --port 9999 --nthreads 4
dllama worker
: 啟動Worker模式。--root-addr 192.168.71.84:18666
: 指定Root節點的IP地址和通信端口(18666
是一個常用默認端口,如果項目有特定端口,請相應修改)。
成功運行后,每個Worker終端會顯示等待連接或類似的信息。它們現在正在監聽來自Root節點的指令。
4. 啟動集群并開始聊天
現在,回到 Root 節點 (192.168.71.84
) 的終端窗口。所有Worker都已準備就緒,可以啟動主程序了。
-
運行聊天程序:
在distributed-llama
目錄中,運行dllama chat
命令,并通過--worker-addrs
參數告訴Root節點所有Worker的地址。./dllama chat --model dllama_model_qwen3_14b_q40.m --tokenizer dllama_tokenizer_qwen3.t --buffer-float-type q80 --max-seq-len 4096 --prompt "你好,世界" --steps 256 --nthreads 8 --workers 192.168.71.83:9999 192.168.71.86:9999 192.168.71.91:9999
dllama chat
: 啟動命令行聊天界面。--worker-addrs ...
: 提供一個用逗號分隔的Worker節點地址列表。18667
是Worker監聽的常用默認端口,請確保與Worker啟動時使用的端口一致。
-
開始交互:
如果一切順利,Root節點會連接到所有3個Worker節點,加載模型并分發權重。您將在終端看到一個聊天提示符,現在您可以輸入問題與Qwen 3 14B模型進行交互了!
總結與注意事項
- 架構: 您已成功搭建一個4節點(1個Root + 3個Worker)的計算集群。根據項目文檔,Root節點本身也參與計算,因此總計算能力是4個節點的總和。
- 性能: 樹莓派的CPU性能有限,即使是集群,推理速度也無法與桌面級CPU或GPU相比。請對性能有合理的預期,它會比在單臺樹莓派上運行快,但仍然較慢。
- 網絡是關鍵: 我使用的是無線局域網,可能千兆有線以太網新能會更好。任何網絡瓶頸都會嚴重影響整體速度。
- 防火墻: 如果您在樹莓派上啟用了防火墻(如
ufw
),請確保允許端口18666
和18667
(或您使用的任何端口) 的TCP通信。