在树莓派集群上部署 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://www.pswp.cn/diannao/98276.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 容器——unordered_xxx

自 C11 开始,STL 引入了基于 hash table 的 unordered_set、unordered_map 等容器,正如其名它们是无序容器。一定数量(据说有测试数据是10000000)元素时无序容器的性能要比对应的有序容器优。一、容器数据结构unordered_set、unor…

分布式常见面试题整理

一、分布式理论: CAP理论 分布式系统最多同时满足一致性(C)、可用性(A)、分区容错性(P)中的两个,无法三者兼得。 BASE理论 对CAP中一致性和可用性的权衡,强调基本可用&a…

Python基础入门常用198英语单词详解

最近,我总结了一份Python学习者入门常用单词表,列出了Python学习中常见的198个高频单词,供初学者学习使用。 这些单词都比较简单,非常易于理解,在掌握好单词的基础上,再去学Python可以达到事半功倍的效果。…

EP-SPY 網路追蹤規避實驗:山脈通聯測試

EP-SPY V3.0 https://github.com/MartinxMax/ep-spy 基於 GI6E 編碼的無線電通信工具,用於保護您的隱私。 https://github.com/MartinxMax/gi6e 編寫了偽協議以防止內容被解密無法通過網絡追蹤,抵抗官方監控無線音頻廣播,用於隱蔽信息傳輸…

苹果 FoundationModels 秘典侠客行:隐私为先的端侧 AI 江湖

引子 话说侠客岛之上,有一对年轻侠侣 ——「青锋剑客」凌云与「素心仙子」苏凝,二人自幼习武,尤擅拆解各路奇功秘籍。 近日听闻苹果谷(Apple)于 WWDC 2025 武林大会之上,亮出一门全新绝学「FoundationMod…

华为基于IPD的产品质量计划模板

目录 模板:产品质量计划模板....................................... 1 1. 介绍...................................................................... 5 1.1. 范围和目的.................................................... 5 1.2. 参考资料..…

事务管理的选择:为何 @Transactional 并非万能,TransactionTemplate 更值得信赖

在 Spring 生态的后端开发中,事务管理是保障数据一致性的核心环节。开发者常常会使用 Transactional 注解快速开启事务,一行代码似乎就能解决问题。但随着业务复杂度提升,这种“简单”的背后往往隐藏着难以察觉的隐患。本文将深入剖析 Spring…

CodePerfAI体验:AI代码性能分析工具如何高效排查性能瓶颈、优化SQL执行耗时?

前阵子帮同事排查用户下单接口的性能问题时,我算是真切感受到 “找性能瓶颈比写代码还磨人”—— 接口偶尔会突然卡到 3 秒以上,查日志只看到 “SQL 执行耗时过长”,但具体是哪个查询慢、为什么慢,翻了半天监控也没头绪&#xff0…

《sklearn机器学习——绘制分数以评估模型》验证曲线、学习曲线

估计器的偏差、方差和噪声 每一个估计器都有其优势和劣势。它的泛化误差可以分解为偏差、方差和噪声。估计器的偏差是不同训练集的平均误差。估计器的方差表示对不同训练集,模型的敏感度。噪声是数据的特质。 在下图中,可以看见一个函数 f(x)cos⁡32πxf…

2025年AI PPT必修课-汇报中AI相关内容的“陷阱”与“亮点”

《2025年AI PPT必修课-汇报中AI相关内容的“陷阱”与“亮点”》 (适用于方案汇报、战略PPT、标书/投资人演示)一、内容类坑(战略/趋势层面)❌ Pitfall (不要写)✅ Correct Expression (推荐写法)Why (原因)还在强调 Caffe / Theano / TF1.x / LSTM采用 P…

Java数据结构 - 顺序表模拟实现与使用

目录1.顺序表的基本介绍2.顺序表的模拟实现2.1 常见的功能2.2 基本框架2.3 方法的实现2.3.1 add方法2.3.2 size方法2.3.3 display方法2.3.4 add(int pos,E data)方法2.3.5 remove方法2.3.6 get方法2.3.7 contain方法2.3.8 indexOf方法2.3.9 set方法2.3.1…

rust语言 (1.88) egui (0.32.1) 学习笔记(逐行注释)(二十六)windows平台运行时隐藏控制台

1、主程序第一句添加: 必须放在所有代码第一句 #![cfg_attr(windows, windows_subsystem "windows")]2、 编译命令:cargo build --release3、 编译完成后运行可执行文件: 项目目录/target/release/项目名.exe

什么是静态住宅IP 跨境电商为什么要用静态住宅IP

静态住宅IP的定义静态住宅IP是指由互联网服务提供商(ISP)分配给家庭用户的固定IP地址。与动态IP不同,静态IP不会频繁变动,长期保持稳定。其特点包括:固定性:IP地址长期不变,适合需要稳定网络环境…

RabbitMQ 初步认识

目录 1. 基本概念 2. RabbitMq 的工作流程 3. 协议 4. 简单的生产者, 消费者模型 4.1 我们先引入 rabbitmq 的依赖 4.2 生产者 4.3 消费者 1. 基本概念 Pruducer : 生产者, 产生消息Consumer : 消费者, 消费消息Broker : RabbitMq Server, 用来接收和发送消息Connectio…

Redis(46) 如何搭建Redis哨兵?

搭建 Redis 哨兵(Sentinel)集群,确保 Redis 服务具有高可用性。以下是详细的步骤,从 Redis 安装、配置主从复制到配置和启动 Sentinel 集群,并结合相关的代码示例。 步骤 1:安装 Redis 首先,需要…

Grafana 多指标相乘

PromQL中多指标相乘 PromQL表达式: 0.045 * h9_daily_income{coin"nock"} * h9_pool_price_cny{coin"nock"}📈 基础:单指标运算 常数与指标相乘 在PromQL中,常数与指标的乘法是最简单的运算: # ✅…

【微服务】springboot3 集成 Flink CDC 1.17 实现mysql数据同步

目录 一、前言 二、常用的数据同步解决方案 2.1 为什么需要数据同步 2.2 常用的数据同步方案 2.2.1 Debezium 2.2.2 DataX 2.2.3 Canal 2.2.4 Sqoop 2.2.5 Kettle 2.2.6 Flink CDC 三、Flink CDC介绍 3.1 Flink CDC 概述 3.1.1 Flink CDC 工作原理 3.2 Flink CDC…

分布式数据架构

分布式数据架构是一种将数据分散存储在多台独立计算机(节点)上,并通过网络协调工作的系统设计。其核心目标是解决海量数据处理、高并发访问、高可用性及可扩展性等传统集中式数据库难以应对的挑战。以下是关键要点解析:一、核心原…

Spark 中spark.implicits._ 中的 toDF和DataFrame 类本身的 toDF 方法

1. spark.implicits._ 中的 toDF(隐式转换方法)本质这是一个隐式转换(implicit conversion),通过 import spark.implicits._ 被引入到作用域中。它的作用是为本地 Scala 集合(如 Seq, List, Array 等&#…

如何在MacOS上卸载并且重新安装Homebrew

Homebrew是一款针对macOS操作系统的包管理工具,它允许用户通过命令行界面轻松安装、升级和管理各种开源软件包和工具。Homebrew是一个非常流行的工具,用于简化macOS系统上的软件安装和管理过程。一、卸载 Homebrew方法1:官方卸载脚本&#xf…