3,513
社区成员




当单一硬件设备的性能边界难以承载复杂模型的运行需求时,分布式架构通过将多个轻量化设备协同组网,构建起弹性可扩展的算力网络,突破物理硬件的性能边界,可实现高效运行大规模的模型。
硬件:多块 QCS6490PI 开发板
深度解析 QCS6490:硬件性能全揭秘_qcs6490算力多少-CSDN博客
工具:distributed-llama
项目地址:https://github.com/b4rtaz/distributed-llama
distributed-llama
是一个用于将家用设备连接成强大集群以加速大语言模型(LLM)推理的项目。该项目支持多种操作系统,包括 Linux,并针对 高通 CPU 进行了优化。以下是对该仓库的详细介绍:
该项目的核心目标是利用张量并行和以太网高速同步技术,将多个家用设备连接成一个集群,从而加速 LLM 的推理过程。更多的设备意味着更快的性能。
一键设置根节点
运行以下命令可以下载模型和分词器:
python launch.py <model>
支持的模型包括:
Model | Size | Command |
---|---|---|
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 |
支持的架构为 Llama,具体转换方法可参考:
q40
模型搭配 q80
buffer-float-type
f32
模型搭配 f32
buffer-float-type
项目分为两部分:
dllama inference
:运行推理并进行简单的基准测试。dllama chat
:运行 CLI 聊天。dllama worker
:运行工作节点。dllama-api
:运行 API 服务器。首先打开终端,按照如下命令,在所有的板卡上均进行下载和编译
git clone https://github.com/b4rtaz/distributed-llama.git
cd distributed-llama
make dllama
make dllama-api
Python3 launch.py deepseek_r1_distill_llama_8b_q40
(Tips:使用Python3.8先注释掉launch.py第126行,使用python3.10则无需操作)
通过如下命令单节点运行模型, --model 、--tokenizer
分别选择指定路径下的模型、分词器, --buffer-float-type、--nthreads 、--max-seq-len
分别设置量化精度、线程数与序列长度限制。
./dllama chat --model models/deepseek_r1_distill_llama_8b_q40/dllama_model_deepseek_r1_distill_llama_8b_q40.m --tokenizer models/deepseek_r1_distill_llama_8b_q40/dllama_tokenizer_deepseek_r1_distill_llama_8b_q40.t --buffer-float-type q80 --nthreads 4 --max-seq-len 4096
可以发现设备性能不足以带动8b模型
在多个子节点设备上运行,节点数需为2的次方数,1、2、4等,此处使用1根2子共3个节点。
./dllama worker --port 9999 --nthreads 8
挑选一个节点(例:192.168.110.106)作为根节点,启动模型。
./dllama chat --model models/deepseek_r1_distill_llama_8b_q40/dllama_model_deepseek_r1_distill_llama_8b_q40.m --tokenizer models/deepseek_r1_distill_llama_8b_q40/dllama_tokenizer_deepseek_r1_distill_llama_8b_q40.t --buffer-float-type q80 --nthreads 8 --max-seq-len 4096 --workers 192.168.110.106:9999 192.168.110.229:9999 192.168.111.49:9999
(Tips: --workers 后面替换为自己的节点IP)
子节点开始加载模型,加载完成后根节点显示各项信息
根节点运行模型,跳出对话框代表模型已运行
这里采用命令行方式,也可以配合Chat web页面使用