项目介绍:分布式Llama
分布式Llama项目致力于利用张量并行技术,使得大型语言模型(LLMs)可以在性能较弱的设备上运行,同时还能通过分摊工作负载和分割内存使用,使得高性能设备变得更为强大。通过该项目,可以在多个设备上分配LLM的负载,显著提高处理速度。借助分布式Llama,即使在家中也可以运行庞大的LLM模型。项目采用TCP sockets同步状态,并且可以通过家用路由器轻松配置AI集群。
🔥 一键设置根节点
使用Python 3和C++编译器就可以完成设置。命令会自动下载模型和分词器。
常用模型及命令:
- TinyLlama 1.1B 3T Q40:用于基准测试,大小为844 MB,命令:
python launch.py tinyllama_1_1b_3t_q40
- Llama 3 8B Q40:用于基准测试,大小为6.32 GB,命令:
python launch.py llama3_8b_q40
- Llama 3.1 405B Instruct Q40:用于聊天和API,大小为238 GB,命令:
python launch.py llama3_1_405b_instruct_q40
🛠️ 手动转换模型
分布式Llama支持的架构包括:Llama、Mixtral和Grok。提供了详细的教程以帮助用户转换不同的模型,比如如何转换Llama 2, Llama 3, Llama 3.1和如何转换Hugging Face Model。
🚧 已知限制
- 专案目前仅支持1, 2, 4...2^n个节点。
- 最大节点数量等于模型中的KV头数。
- 现阶段只支持CPU,GPU支持计划中。优化的格式包括ARM和x86_64 AVX2 CPU。
👷 架构概述
分布式Llama分为两个主要部分:
- 根节点:负责加载模型及权重,并将其转发给工作节点,同时同步神经网络状态。根节点也是一个工作节点。
- 工作节点:负责处理自己的网络切片,不需要与模型相关的任何配置。
🎹 常用命令
dllama inference
:运行推理,并进行简单的基准测试。dllama chat
:运行命令行界面聊天。dllama worker
:运行工作节点。dllama-api
:运行API服务器。
这些命令提供多种参数选项,如模型路径、分词器、浮点精度、工作节点地址和最大序列长度等。
📊 性能测量
该项目在多种设备上进行测试,包括Raspberry Pi 5、Raspberry Pi 4B以及x86_64 CPU云服务器。这些设备以不同节点数量运行不同大小的模型,具体性能数据详见项目文档。
📟 Raspberry Pi设备设置
要在Raspberry Pi上运行分布式Llama,需要安装Raspberry Pi OS Lite (64 bit),连接设备至网络,并通过SSH进行远程连接。项目提供详细步骤,从安装Git到构建dllama及其API,以及配置静态IP地址。
💻 MacOS、Linux或Windows上的电脑设置
对MacOS及Linux用户来说,安装Git和GCC是关键步骤,对Windows用户而言,则需要安装Git和Mingw。构建过程相似,通过命令行进行配置,运行用于根节点和工作节点的指令以形成集群。
✋ 项目贡献
欢迎贡献者参与项目。对于小的改动,可以直接创建合并请求;对于大的更改,建议先创建问题讨论计划。贡献者需遵循以下指南:尽量减少不必要的修改,确保代码兼容所有支持的系统及CPU,提交英文文档。
💡 开源许可
该项目采用MIT许可,开放源代码供学习和使用。
📖 引用信息
如果在研究中使用分布式Llama,请按照提供的引用格式进行引用。