当前位置: 首页 > news >正文

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

背景介绍

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

硬件:多块 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>

支持的模型包括:

ModelSizeCommand
Llama 3.1 8B Instruct Q406.32 GBpython launch.py llama3_1_8b_instruct_q40
Llama 3.1 405B Instruct Q40.238 GBpython launch.py llama3_1_405b_instruct_q40.
Llama 3.2 1B Instruct Q401.7 GBpython launch.py llama3_2_1b_instruct_q40
Llama 3.2 3B Instruct Q403.4 GBpython launch.py llama3_2_3b_instruct_q40
Llama 3.3 70B Instruct Q4040 GBpython launch.py llama3_3_70b_instruct_q40
DeepSeek R1 Distill Llama 8B Q406.32 GBpython 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页面使用

 

http://www.dtcms.com/a/270675.html

相关文章:

  • upload-labs靶场通关详解:第19关 条件竞争(二)
  • Java-----韩顺平单例设计模式学习笔记
  • java项目maven编译的时候报错:Fatal error compiling: 无效的标记: --release
  • 【计算机组成原理——知识点总结】-(总线与输入输出设备)-学习笔记总结-复习用
  • Caffeine的tokenCache与Spring的CaffeineCacheManager缓存区别
  • uniapp,Anroid10+版本如何保存图片并删除
  • 缓存三大问题详解与工业级解决方案
  • 视频音频转换器V!P版(安卓)安装就解锁V!P!永久免费使用!
  • 【RK3568+PG2L50H开发板实验例程】FPGA部分 | DDR3 读写实验例程
  • 创客匠人:在 IP 变现浪潮中,坚守知识变现的本质
  • 飞算AI-idea强大的AI工具
  • 二分查找篇——在排序数组中查找元素的第一个和最后一个位置【LeetCode】
  • 如何把一个多行的RAS key放到环境变量中?
  • 最新全开源礼品代发系统源码/电商快递代发/一件代发系统
  • 红宝书单词学习笔记 list 26-50
  • 71、【OS】【Nuttx】【启动】启动函数分析
  • 股权结构解析
  • 首批 | 云轴科技ZStack加入施耐德电气技术本地化创新生态
  • 微算法科技从量子比特到多级系统,Qudits技术革新引领量子计算新时代
  • 从零开始学前端html篇2
  • Redis:分组与设备在 Redis 中缓存存储设计
  • K线训练关键代码
  • Laravel 动态生成 PDF:基于 KnpSnappy 实现多公司页眉页脚差异化配置
  • C++如何进行性能优化?
  • 安卓设备信息查看器 - 源码编译
  • PlantUML 在 IDEA 中文版中的安装与使用指南
  • Vim 编辑器常用操作详解(新手快速上手指南)
  • LKT4304稳定可靠高兼容性国产安全加密芯片
  • JAVA观察者模式demo【设计模式系列】
  • WebSocket实现多人实时在线聊天