高通QCS6490PI集群化运行deepseek模型

使用分布式架构部署模型


背景介绍:当单一硬件设备的性能边界难以承载复杂模型的运行需求时,分布式架构通过将多个轻量化设备协同组网,构建起弹性可扩展的算力网络,突破物理硬件的性能边界,可实现高效运行大规模的模型。

硬件:多块 QCS6490PI 开发板

工具:distributed-llama
项目地址:https://github.com/b4rtaz/distributed-llama

1.下载代码


首先打开终端,按照如下命令,在所有的板卡上均进行下载和编译(代码和模型下载中请使用科学方法)

git clone https://github.com/b4rtaz/distributed-llama.git
cd distributed-llama
make dllama
make dllama-api

2.下载模型


Python3 launch.py deepseek_r1_distill_llama_8b_q40
(Tips:使用Python3.8先注释掉launch.py第126行,使用python3.10则无需操作)

3.测试单节点运行


通过如下命令单节点运行模型, --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模型

4.尝试新增运行节点


在多个子节点设备上运行,节点数需为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)


子节点开始加载模型,加载完成后根节点显示各项信息

根节点运行模型,跳出对话框代表模型已运行

1 个赞

注意:节点数除了是2^n之外,最大不能超多KV heads的数量。

1 个赞