Distributed LLM inference. Connect home devices into a powerful cluster to accelerate LLM inference. More devices means faster inference.
以下内容由 AI 翻译,如有问题请 点此提交 issue 反馈

Distributed Llama
将家用设备连接成强大的集群,以加速LLM推理。设备越多,性能越快,借助张量并行技术和以太网高速同步实现高效计算。
支持Linux、macOS和Windows系统,针对ARM和x86_64 AVX2 CPU进行了优化。
运行方法
最新动态
- 2025年9月16日 - 现已支持在Vulkan上运行Qwen 3 MoE模型。
- 2025年9月5日 - 现已支持在CPU上运行Qwen 3 MoE模型。
- 2025年8月3日 - 现已支持Qwen 3系列的0.6B、1.7B、8B和14B模型。
- 2025年3月23日 - 🌋 实验性Vulkan支持
- 2025年2月12日 - 🚧 已合并基础代码库重构
- 2025年1月9日 - 🍎 在4台Mac Mini M4 Pro(24GB内存)上运行Llama 3.3 70B
🔥 单命令快速搭建根节点
需安装Python 3和C++编译器。该命令将自动下载模型和分词器。
| 模型 | 大小 | 命令 |
|---|---|---|
| Llama 3.1 8B Instruct Q40 | 6.32 GB | python launch.py llama3_1_8b_instruct_q40 |
| Llama 3.1 405B Instruct Q40 | 238 GB | python launch.py llama3_1_405b_instruct_q40. |
| Llama 3.2 1B Instruct Q40 | 1.7 GB | python launch.py llama3_2_1b_instruct_q40 |
| Llama 3.2 3B Instruct Q40 | 3.4 GB | python launch.py llama3_2_3b_instruct_q40 |
| Llama 3.3 70B Instruct Q40 | 40 GB | python launch.py llama3_3_70b_instruct_q40 |
| DeepSeek R1 Distill Llama 8B Q40 | 6.32 GB | python launch.py deepseek_r1_distill_llama_8b_q40 |
| Qwen 3 0.6B Q40 | 0.9 GB | python launch.py qwen3_0.6b_q40 |
| Qwen 3 1.7B Q40 | 2.2 GB | python launch.py qwen3_1.7b_q40 |
| Qwen 3 8B Q40 | 6.7 GB | python launch.py qwen3_8b_q40 |
| Qwen 3 14B Q40 | 10.9 GB | python launch.py qwen3_14b_q40 |
| Qwen 3 30B A3B Q40 | 17.0 GB | python launch.py qwen3_30b_a3b_q40 |
🛠️ 手动转换模型
🚧 已知限制
- 只能在 1、2、4……2^n 个节点上运行 Distributed Llama。
- 最大节点数量等于模型中的 KV 头数量 #70。
- 仅支持以下量化方式 #183:
- 采用
q80buffer-float-type的q40模型 - 采用
f32buffer-float-type的f32模型
- 采用
👷 架构
[🔀 SWITCH OR ROUTER]
| | | |
| | | |_______ 🔸 device1 (ROOT) 10.0.0.1
| | |_________ 🔹 device2 (WORKER 1) 10.0.0.2:9999
| |___________ 🔹 device3 (WORKER 2) 10.0.0.3:9999
|_____________ 🔹 device4 (WORKER 3) 10.0.0.4:9999
...
该项目分为两部分:
- 🔸 根节点 - 负责加载模型和权重并将其转发给工作节点。此外,它还负责同步神经网络的状态。根节点本身也是一个工作节点,处理其自身的神经网络分片。
- 🔹 工作节点 - 处理其自身的神经网络分片。它不需要任何与模型相关的配置。
您始终需要根节点,并且可以添加 2^n - 1 个工作节点来加快推理速度。神经网络的内存使用会在所有节点之间分配。根节点比工作节点需要稍多的内存。
🎹 命令
dllama inference- 运行推理并附带简单基准测试,dllama chat- 运行命令行聊天,dllama worker- 运行工作节点,dllama-api- 运行 API 服务器。
🎹 支持的参数
推理、聊天、API
| 参数 | 描述 | 示例 |
|---|---|---|
--model <path> |
模型路径。 | dllama_model_meta-llama-3-8b_q40.m |
--tokenizer <path> |
模型对应的分词器。 | dllama_tokenizer_llama3.t |
--buffer-float-type <type> |
同步时使用的浮点精度类型。 | q80 |
--workers <workers> |
工作节点地址(ip:port),以空格分隔。 | 10.0.0.1:9999 10.0.0.2:9999 |
--max-seq-len <n> |
最大序列长度,有助于减少内存使用。 | 4096 |
推理、聊天、工作节点、API
| 参数 | 描述 | 示例 |
|---|---|---|
--nthreads <n> |
线程数量。不要设置高于 CPU 核心数的值。 | 4 |
工作节点、API
| 参数 | 描述 | 示例 |
|---|---|---|
--host <addr> |
绑定地址。 | 127.0.0.1 |
--port <port> |
绑定端口。 | 9999 |
推理
| 参数 | 描述 | 示例 |
|---|---|---|
--prompt <prompt> |
初始提示词。 | "Hello World" |
--steps <steps> |
要生成的 tokens 数量。 | 256 |
📊 测量数据
请查看讨论区,其中发布了许多不同配置下的测量数据。
✋ 贡献指南
欢迎为该项目贡献力量。对于小的修改,直接创建新的合并请求即可。对于较大的变更,请先创建 issue 讨论你的计划。贡献时请遵循以下准则:
- 仅做必要的最小修改,避免改动无关文件。
- 确保代码在所有支持的系统和 CPU 上都能兼容运行。
- 本仓库的维护语言为英语。
💡 许可证
本项目基于 MIT 许可证发布。
📖 引用
@misc{dllama,
author = {Bartłomiej Tadych},
title = {Distributed Llama},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/b4rtaz/distributed-llama}},
commit = {7eb77ca93ec0d502e28d36b6fb20039b449cbea4}
}
