当前位置: 首页 > news >正文

在树莓派集群上部署 Distributed Llama (Qwen 3 14B) 详细指南

项目地址: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节点,同步神经网络状态,并处理自己那一部分的计算任务。
  • Worker 节点: 3 x 树莓派 4
    • IP地址: 192.168.71.83, 192.168.71.86, 192.168.71.91
    • 职责: 接收Root节点的指令和数据,处理分配给自己的计算任务。

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 系统与软件
  1. 更新系统:
    通过SSH登录到每个树莓派,然后运行以下命令更新软件包列表和系统:

    sudo apt update
    sudo apt upgrade -y
    
  2. 安装依赖:
    安装 git 用于克隆项目仓库,python3-pip 用于安装Python包,以及 build-essential 用于编译C++代码。

    sudo apt install git python3-pip build-essential -y
    
  3. 克隆项目仓库:
    Distributed Llama 项目克隆到本地。

    git clone https://github.com/bgz-io/distributed-llama.git
    cd distributed-llama
    

完成以上步骤后,您的所有节点都已准备就绪。

2. 配置并启动 Root 节点 (树莓派 5)

此步骤仅在 Root 节点 (192.168.71.84) 上执行。

  1. SSH 登录:
    确保您已登录到树莓派5。

  2. 下载并准备模型:
    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都已准备就绪,可以启动主程序了。

  1. 运行聊天程序:
    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启动时使用的端口一致。
  2. 开始交互:
    如果一切顺利,Root节点会连接到所有3个Worker节点,加载模型并分发权重。您将在终端看到一个聊天提示符,现在您可以输入问题与Qwen 3 14B模型进行交互了!
    在这里插入图片描述

在这里插入图片描述

总结与注意事项

  • 架构: 您已成功搭建一个4节点(1个Root + 3个Worker)的计算集群。根据项目文档,Root节点本身也参与计算,因此总计算能力是4个节点的总和。
  • 性能: 树莓派的CPU性能有限,即使是集群,推理速度也无法与桌面级CPU或GPU相比。请对性能有合理的预期,它会比在单台树莓派上运行快,但仍然较慢。
  • 网络是关键: 我使用的是无线局域网,可能千兆有线以太网新能会更好。任何网络瓶颈都会严重影响整体速度。
  • 防火墙: 如果您在树莓派上启用了防火墙(如 ufw),请确保允许端口 1866618667 (或您使用的任何端口) 的TCP通信。

文章转载自:

http://tcGi6akV.kbsmr.cn
http://Y2PfJuIc.kbsmr.cn
http://Ho1nyHxP.kbsmr.cn
http://h2w7g7m8.kbsmr.cn
http://t0HgYuaR.kbsmr.cn
http://LSFT3CMJ.kbsmr.cn
http://GEMS2Rwx.kbsmr.cn
http://Tevp20mq.kbsmr.cn
http://rYxGACK4.kbsmr.cn
http://EL0FFnMQ.kbsmr.cn
http://xqzG4rGR.kbsmr.cn
http://SKaOZlHD.kbsmr.cn
http://5rlc0iYW.kbsmr.cn
http://8qlnzHvL.kbsmr.cn
http://t3nPmEHu.kbsmr.cn
http://Pbfrnday.kbsmr.cn
http://opfl8Ck3.kbsmr.cn
http://MUIlGNbP.kbsmr.cn
http://urLKY8kM.kbsmr.cn
http://FP2U3sVb.kbsmr.cn
http://vIBQsJRN.kbsmr.cn
http://8RH5LvzB.kbsmr.cn
http://2nBdnkT5.kbsmr.cn
http://lUKbRyUA.kbsmr.cn
http://bSmbnKLY.kbsmr.cn
http://WVhfQBLE.kbsmr.cn
http://QSgqO57a.kbsmr.cn
http://6Yl2l2CZ.kbsmr.cn
http://eIQ2UXRb.kbsmr.cn
http://LsqRuyOY.kbsmr.cn
http://www.dtcms.com/a/367659.html

相关文章:

  • 解析PE文件的导入表和导出表
  • Flutter 3.35.2 以上版本中 数字转字符串的方法指南
  • 跨平台RTSP|RTMP|GB28181推拉流端智能录像模块技术探究
  • “人工智能+”的新范式:应用赋能与风险应对
  • 聚焦GISBox矢量服务:数据管理、数据库连接与框架预览全攻略
  • 如何避免 “空的 Windows 宿主机目录” 挂载时覆盖容器内的重要目录文件(导致容器关键文件丢失、无法启动)
  • wins中怎么用一个bat文件启动jar包和tomcat等多个服务
  • 深入理解awk
  • Leetcode 206. 反转链表 迭代/递归
  • RFID+工业互联网:汽车全景天幕全生命周期智能检测体系构建
  • javaweb基础第一天总结(HTML-CSS)
  • Django全局异常处理全攻略
  • 阵列信号处理之均匀面阵波束合成方向图的绘制与特点解读
  • 钉钉 AI 深度赋能制造业 LTC 全流程:以钉钉宜搭、Teambition 为例
  • JS对象进阶
  • 【109】基于51单片机自动感应迎宾门【Proteus仿真+Keil程序+报告+原理图】
  • 来自AI的背包系统
  • 【操作系统-Day 24】告别信号量噩梦:一文搞懂高级同步工具——管程 (Monitor)
  • 前端url参数拼接和提取
  • Qt 中添加并使用自定义 TTF 字体(以 Transformers Movie 字体为例)
  • 基于STM32的智能家居环境监控系统设计
  • 什么是静态住宅IP 跨境电商为什么要用静态住宅IP
  • 3 步搞定顶刊科研插图!用 GPT-5 反推提示词,Nano Banana 模型一键出图,附实操演示
  • Tengine/Nginx 安装以及模块查看与扩展
  • 新一代实时检测工具——YOLOv13本地部署教程,复杂场景,一目了然!
  • html学习:
  • 多线程顺序打印ABC的两种实现方式:synchronized与Lock机制
  • 苍穹外卖优化过程遇到的问题
  • android源码角度分析Handler机制
  • 25高教社杯数模国赛【E题保姆级思路+问题分析】