distributed-llama:基于分布式技术的LLM推理加速项目

Distributed LLM inference. Connect home devices into a powerful cluster to accelerate LLM inference. More devices means faster inference.

分支56Tags64
文件最后提交记录最后更新时间
9 个月前
2 年前
6 个月前
7 个月前
6 个月前
2 年前
1 个月前
8 个月前
1 年前
2 年前
1 年前
7 个月前
11 个月前

Distributed Llama

Distributed Llama

GitHub Actions Workflow Status License: MIT Discord

将家用设备连接成强大的集群,以加速LLM推理。设备越多,性能越快,借助张量并行技术和以太网高速同步实现高效计算。

支持Linux、macOS和Windows系统,针对ARM和x86_64 AVX2 CPU进行了优化。

运行方法

最新动态

🔥 单命令快速搭建根节点

需安装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
    • 采用 q80 buffer-float-typeq40 模型
    • 采用 f32 buffer-float-typef32 模型

👷 架构

[🔀 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}
}

项目介绍

“Tensor并行 suffice。在家中利用任意设备,在AI集群上运行大规模语言模型。分配工作负载,分割内存使用,提升推理速度。”【此简介由AI生成】

定制我的领域
523.05 K248访问 GitHub