高通 QCS6490PI 集群架构支撑 DeepSeek 模型稳定运行的技术实现

发布于:2025-07-10 ⋅ 阅读:(35) ⋅ 点赞:(0)

背景介绍

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

硬件:多块 QCS6490PI 开发板

深度解析 QCS6490:硬件性能全揭秘_qcs6490算力多少-CSDN博客

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

 工具:distributed-llama

distributed-llama 是一个用于将家用设备连接成强大集群以加速大语言模型(LLM)推理的项目。该项目支持多种操作系统,包括 Linux,并针对 高通 CPU 进行了优化。以下是对该仓库的详细介绍:

项目概述

该项目的核心目标是利用张量并行和以太网高速同步技术,将多个家用设备连接成一个集群,从而加速 LLM 的推理过程。更多的设备意味着更快的性能。

主要特性

  1. 多操作系统支持:支持 Linux、macOS 和 Windows 操作系统。
  2. 硬件优化:针对 高通  CPU 进行了优化。
  3. 模型支持:支持多种 Llama 系列模型,如 Llama 3.1、Llama 3.2、Llama 3.3 等。
  4. 实验性 Vulkan 支持:自 2025 年 3 月 23 日起,提供实验性的 Vulkan 支持。

 

快速设置

一键设置根节点

运行以下命令可以下载模型和分词器:

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,具体转换方法可参考:

  • How to Convert Llama 3.1
  • How to Convert Hugging Face Model

已知限制

  • 只能在 1, 2, 4... 2^n 个节点上运行。
  • 最大节点数等于模型中 KV 头的数量。
  • 仅支持以下量化:
    • q40 模型搭配 q80 buffer-float-type
    • f32 模型搭配 f32 buffer-float-type

 

架构

项目分为两部分:

  • 根节点:负责加载模型和权重,并将其转发给工作节点。同时,同步神经网络的状态。根节点本身也是一个工作节点,处理自己的神经网络切片。
  • 工作节点:处理自己的神经网络切片,不需要与模型相关的任何配置。

命令

  • dllama inference:运行推理并进行简单的基准测试。
  • dllama chat:运行 CLI 聊天。
  • dllama worker:运行工作节点。
  • dllama-api:运行 API 服务器。

部署步骤

 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)

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

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

 这里采用命令行方式,也可以配合Chat web页面使用

 


网站公告

今日签到

点亮在社区的每一天
去签到