自从我一头扎进本地大模型这个坑以来,我越来越喜欢把旧电脑改造成可靠的AI工作站。经过一番合适的调校,我甚至能在像那种10年前的老古董电脑上运行强大的大模型,性能能跟云端那些模型打个平手。话说回来,我大部分硬核的大模型实验都涉及正儿八经的x86游戏主机,带独立显卡、内存多得用不完。
尽管如此,树莓派5最多能跑40亿参数的模型,即使负载上来了也扛得住,所以拿来跑跑嵌入模型、做个简单聊天机器人,意外地还挺合适。但我想跑的模型原本在这块单板机上根本塞不下,于是我琢磨着能不能把闲置的几块板子组个集群。嗯,这可能是我做过的最邪门的项目之一(不过倒还真有那么一丁点用)。
搭个 llama.cpp 集群没那么难
不过,得在两台设备上都把推理引擎编译一遍
我本来想拿这些单板电脑当小白鼠,用三台设备组个集群。结果很快发现,我的大部分ARM板子都在忙着跑别的实验,最后能用的只剩树莓派5、Libre Computer Alta和Le Frite。可惜Le Frite跑这个项目太弱了,加上USB 2.0接口和100M网口,拖累这个本就单薄的配置。所以最后我搞了个双节点集群:一台树莓派5(8GB)加一台Libre Computer Alta(4GB),用llama.cpp的RPC后端把推理任务拆到两台机器上。
还好,装起来比我想的简单多了,虽然还得从头编译 llama.cpp。我给两台机器都装上了命令行版系统(Alta 上装旧版 Ubuntu,在你懂的那台设备上装 Raspberry Pi OS Lite),并配置好 openssh-server 后,通过 PuTTY 登录进去,然后运行 sudo apt install -y git build-essential cmake pkg-config 把需要的依赖包装上。接着,我用 git clone https://github.com/ggml-org/llama.cpp.git 克隆了 llama.cpp 仓库,然后执行 cd llama.cpp 进入这个刚克隆出来的目录。最后我又建了个文件夹,叫 build-rpc,用的 mkdir -p build-rpc,然后进去,跑下面的命令,编译带 RPC 功能的 llama.cpp:
cmake .. -DGGML_RPC=ON -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release -j$(nproc)
因为我想让 Alta SBC 当个备用服务器,我就在它上面跑了 ./bin/rpc-server -H 0.0.0.0 -p 50052,然后让 RPC 服务器一直开着跑一会儿。用 SCP 命令把几个大模型从我的主力电脑拷到树莓派节点上之后,我跑了 ./bin/llama-server -m /home/ayush/models/Qwen3.5-2B-Q4_K_M.gguf --rpc 192.168.0.150:50053 --host 0.0.0.0 --port 8080 命令,然后等它把模型加载完。
事实证明,这个集群的性能还不如单个 SBC
我将这个瓶颈归咎于缓慢的网络配置
由于我使用的是相当轻量级的 Gemma 3 4B,我原本期望我的集群至少能比单独使用 Raspberry Pi 表现得好一些。然而,通过 llama-server 的 Web UI 运行几个提示词后,结果却并非如此。我指的不是涉及 MCP 服务器的复杂提示词或推理任务。即使是像“告诉我一些酷的事情”这样简单的请求,集群也勉强能达到 2.20 tokens/秒。于是,我重启了 Raspberry Pi,再次运行了 llama-server 命令,只不过这次去掉了 --rpc 标志。果然,推理引擎成功达到了 4.37 t/s,几乎是集群设置速度的两倍!
理论上,集群要么应该达到更高的 token 生成速率,要么至少应该提供与仅使用 Raspberry Pi 相当的速度。但如果把网络和存储瓶颈考虑进去,这就完全说得通了。你看,这两个 SBC 都配备 1GbE 连接,对于高速 AI 推理任务来说有点慢。更糟糕的是,我的家庭实验室里 SSD 已经用完了,所以只能凑合着用 microSD 卡,这无疑影响了速度(或者说导致速度不足)。再加上 LLM 操作对延迟非常敏感,就很清楚为什么我的集群表现如此糟糕了。我正打算把这个项目标记为失败并就此收手,但在解散集群之前,我还想尝试最后一个实验……
不过这个集群能跑那些原本我的树莓派根本带不动的大模型
至于token生成速度嘛,就别看了
虽然这性能平平无奇,让人挺扫兴的,但我搞这个古怪项目,主要是想跑那种只有8G内存的树莓派根本跑不动的大模型。于是,我又把llama-server启动起来,这次不带RPC标志,然后从小的模型开始,一点一点往上加参数。结果试到Qwen 3.5(9B)的时候,llama-server直接崩了——这块板子根本装不下这么大的模型。
但当我把RPC指向Alta再运行时,llama-server轻轻松松就加载了这个大模型。我就是好奇,打开了网页界面,开始给LLM发提示词。嗯,确实能跑,就是每秒只能蹦出1.27个token。这速度对我来说,根本没法用来干活或写代码。不过拿它跑自动化任务还是凑合能用,比如给书签生成标签、给文档做OCR扫描,尤其是我这些板子可以二十四小时开机,根本不用心疼电费。
老实不客气地说,我原本以为最终测量出来的会是每个 token 的秒数,而不是每秒 token 数。因此,每秒 1.27 个 token 的生成速率有点出乎意料,尤其是这个模型,我的SBC一开始根本加载不了。虽然我可能不会用这个集群来处理SBC的推理任务,但RPC听起来确实很有用。事实上,我说不定会把它用在我目前基于LXC的LLM托管工作站上,这些工作站配备了完整的10G网卡。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.