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

关于deepseek R1模型分布式推理效率分析

1、引言

       DeepSeek R1 采用了混合专家(Mixture of Experts,MoE)架构,包含多个专家子网络,并通过一个门控机制动态地激活最相关的专家来处理特定的任务 。DeepSeek R1 总共有 6710 亿个参数,但在每个前向传播过程中仅激活 370 亿个参数 。模型的每一层都包含 256 个专家 ,并且每个 token 会并行路由到其中 8 个不同的专家("num_experts_per_tok": 8)进行评估 。

2、DeepSeek R1 的混合专家架构

      DeepSeek R1 由 61 个 Transformer 层组成 。MoE 架构主要在 Transformer 模块的前馈网络(Feed-Forward Network,FFN)层中实现 。每个 FFN 层都包含 256 个专家 。理解 MoE 位于 Transformer 层的 FFN 中,有助于理解计算的结构以及如何应用分布式。Transformer 层是像 DeepSeek R1 这样的模型的基本构建模块。DeepSeek R1模型的671B总参数中,并不是所有参数都在专家层中。MoE模型的参数可以分为两类:

  1. 稀疏参数:只在特定token激活的专家层参数
  2. 密集参数:每个token都会使用的共享参数
  • 在DeepSeek R1中每次激活的37B参数具体如下:
  • 1个共享专家(所有token都激活同一个共享专家)
  • 门控网络选择的8个普通专家(从255个普通专家中选择)
  • 所以总共是9个专家

参数计算:

  • 共享专家的参数量与普通专家相当(约2.6B参数)
  • 总共激活的参数 = 1个共享专家(~2.6B) + 8个普通专家(~21B) + 稠密层参数(~13.4B) ≈ 37B

DeepSeek R1专家分布分析

从配置文件中可以看到关键参数:

  1. MoE层的分布

    • "moe_layer_freq": 1 - 这表明每一层都是MoE层,而不是我之前猜测的隔层分布
    • "num_hidden_layers": 61 - 总共有61层Transformer块
    • 所有61层都包含MoE结构
  2. 专家配置

    • "n_routed_experts": 256 - 256个常规路由专家
    • "n_shared_experts": 1 - 1个共享专家
    • "num_experts_per_tok": 8 - 每个token激活8个路由专家(不包括共享专家)
  3. 专家参数量:

    • "hidden_size": 7168 - 隐藏层维度
    • "intermediate_size": 18432 - 稠密前馈网络的中间层大小
    • "moe_intermediate_size": 2048 - MoE专家内部的中间层大小

MoE计算细节

根据配置:

  • 专家参数主要集中在FFN部分,计算每个专家大小约为:
    • 7168 × 2048 × 2 ≈ 29.4M参数(输入和输出矩阵)
  • 257个专家(256常规+1共享)×61层 ≈ 约462B参数仅在专家部分

MoE层结构:
[共享专家(1个)] + [普通专家(255个)]
    ↑                  ↑
  总是激活         选择8个激活
    ↓                  ↓
   每个token激活9个专家(1+8) 

共享专家能接触到所有数据,学习通用模式,而普通专家则专注于特定类型的输入,两者结合提高了模型的整体能力和效率。共享专家相当于是一个"通用底层处理器",确保即使路由决策不理想,每个token也能得到基本处理。

3. 推理过程的分解:理解预填充和解码阶段

特征预填充阶段解码阶段
计算强度中等
并行化程度
内存需求高内存带宽中等(KV 缓存访问)
关键指标吞吐量延迟
典型硬件优化多 GPU,高计算能力快速内存访问,低延迟互连

预填充阶段在计算上受限且受内存带宽限制,特别是对于长输入序列 。它需要大量的并行处理能力和内存带宽来处理整个输入。解码阶段通常受内存限制,因为它主要涉及访问 KV 缓存并一次执行单个 token 的计算 。延迟是此阶段的关键问题。在预填充期间,模型一次性处理整个输入序列。这允许跨输入的不同部分以及跨模型的不同层进行并行计算。在分布式环境中,不同的节点可以并行处理输入的不同片段或不同的层,从而可能显着提高速度。

解码阶段以自回归方式逐个生成输出 token [用户查询。每个新 token 的预测都基于先前生成的 token 和来自预填充阶段的 KV 缓存 。由于 token 生成的顺序性质,此阶段通常比预填充阶段慢且并行化程度较低 。解码阶段的顺序性质给并行化带来了挑战。

通过分布专家,仍然可以通过减少每个节点在每个 token 生成步骤中的计算负载来提高效率。与预填充不同,解码是按顺序发生的。每个生成的 token 都依赖于前一个 token。这使得跨序列长度进行并行化变得更加困难。然而,在每个 token 生成步骤中,激活专家的计算仍然可以分布在多个节点上,从而降低每个步骤的延迟。

token在transformer层中传递的流程

  1. 每一层中,token首先通过自注意力机制
  2. 然后该层的门控网络会独立评估这个token
  3. 门控网络动态选择8个最相关的路由专家
  4. token同时也会通过1个共享专家处理
  5. 9个专家(8个路由+1个共享)的输出被加权合并
  6. 合并后的结果传递到下一层
  7. 在下一层,这个过程完全重复,重新选择专家

关键点是:

  • 所有层共享同一个专家池(257个专家)
  • 每层都有独立的门控网络做出独立的专家选择
  • 专家选择是动态的,完全基于token在当前层的表示
  • 不同层可能选择完全不同的专家组合

 

 4、DeepSeek R1 的分布式部署策略

通过将 256 个专家分布在不同的节点上,每个节点仅存储一部分专家的参数 。在推理期间,当一个 token 被路由到一组特定的 8 个专家时,只有托管这些专家的节点才需要执行涉及其参数的大量计算。这避免了每个节点都需要访问整个 6710 亿个参数,从而显着减少了需要本地获取和处理的数据量。这种有针对性的参数访问降低了内存带宽需求以及传输到每个节点的数据量。

 通过将计算负载分布到多个节点上,可以并行处理更多的 token 和请求,从而实现更高的吞吐量 。专家并行通过启用更大的批处理大小,进一步提高了 GPU 矩阵计算效率并提升了吞吐量 。DeepSeek 报告每个 H800 节点在预填充期间的平均输入 token 吞吐量约为 73.7k/s,在解码期间的平均输出 token 吞吐量约为 14.8k/s 。处理更大的批次和并行化计算的能力直接转化为在给定时间内服务更多用户或处理更多数据。当工作负载分布化时,系统的总处理能力会增加。

DeepSeek R1 推理并行策略

策略描述DeepSeek R1 的优势DeepSeek R1 中的应用
专家并行 (EP)将模型专家分布在节点上,允许每个节点处理模型参数的一个子集。扩展批处理大小,减少每个节点的内存访问,降低延迟。跨节点的 EP 用于预填充和解码,具有不同的配置。
数据并行 (DP)将输入数据分布在多个设备上,每个设备都持有模型的副本(或在某些情况下是分区)。通过避免注意力层中的 KV 缓存重复来提高内存效率(在 MLA 的上下文中)。DP 与 EP 结合使用,例如预填充期间的 MLA/共享专家 DP32。

 5、单机部署deepseek r1的局限性

主要性能影响排序

  1. 吞吐量严重受限(最主要影响)
    • 并发请求处理能力达到硬性上限,无法超越8卡能力
    • 无法通过增加节点横向扩展处理更多并发请求
    • 在高负载场景下,请求队列迅速增长
  2. 高负载下延迟不稳定
    • 随着并发请求增加,热门专家争抢造成性能波动
    • 无法通过分布式部署分散负载压力
    • 专家访问不均衡导致部分GPU成为系统瓶颈
  3. 上下文长度与批量处理互斥
    • 长上下文需要占用大量显存存储KV缓存
    • 在固定显存条件下,上下文越长,能处理的批次越少
    • 这种权衡限制了同时支持长上下文和高吞吐量的能力
  4. 资源利用率不均衡
    • 热门专家所在GPU可能负载过重
    • 冷门专家所在GPU可能相对闲置
    • 无法通过动态调整优化全局资源利用

单机部署的资源利用情况

  • 总显存: 8×141GB = 1128GB
  • FP8模型参数: ~671GB
  • 剩余显存在KV缓存与批处理空间之间权衡
  • 关键规律: 上下文长度增加→可处理批次减少→吞吐量下降

专家在H20 8卡上的实际分布

在H20 8卡(每卡141GB)部署时,专家分布如下:

  1. 专家分配策略
    • 256个路由专家均匀分布在8个GPU上
    • 每张GPU分配32个路由专家
    • 共享专家可能放在其中一张GPU上或复制到多个GPU
  2. 显存占用计算
    • 模型总参数:671B
    • 单个专家估算参数量:~2.62B (FP8精度下约2.62GB)
    • 每张GPU存储32个专家:~84GB
    • 基础模型部分(张量并行切分):~10-20GB
    • 总计每卡显存占用:~94-104GB
    • 剩余显存(~37-47GB):用于KV缓存、激活值等 

vLLM/SGLang加载流程

推理引擎加载过程:

  1. 解析模型结构:识别出总共257个专家
  2. 专家分配:将256个路由专家均匀分配到8张GPU
  3. 张量并行:基础层(注意力机制等)通过张量并行分布
  4. 专家并行:专家通过专家并行分布
  5. 建立路由表:创建专家ID到GPU位置的映射

推理过程中的专家调用

推理时:

  1. 门控决策:门控网络为每个token选择8个最相关专家
  2. 跨GPU通信:若选中的专家分布在不同GPU上,需要跨GPU通信
  3. 共享专家处理:所有token都通过共享专家
  4. 结果合并:9个专家(8个路由+1个共享)的结果合并形成输出

 适合的应用场景

单机部署适合以下场景:

  1. 稳定低并发环境
    • 用户数量少且稳定可预测
    • 无需处理流量高峰
  2. 对单次请求延迟敏感
    • 需要稳定的响应时间
    • 单机内部通信可能优于跨机通信
  3. 开发测试环境
    • 降低部署复杂度
    • 简化系统调试
  4. 中等上下文长度应用
    • 不要求极长的上下文窗口
    • 显存可以合理分配
  5. 预算有限场景
    • 避免多机集群的高成本
    • 减少网络设备投入

不适合的应用场景

单机部署不适合以下场景:

  1. 高并发生产环境
    • 需要同时服务大量用户
    • 需要高吞吐量处理能力
  2. 流量波动大的服务
    • 需要弹性扩展能力
    • 高峰期需要动态增加资源
  3. 极长上下文应用
    • 需要处理数万token的输入
    • 同时要求保持较高吞吐量
  4. 需要高可用性服务
    • 不能容忍单点故障
    • 需要冗余部署保障服务连续性
  5. 大规模批处理
    • 需要处理海量并行请求
    • 要求高计算吞吐能力

结论

H20单机8卡部署DeepSeek R1的最主要性能影响是吞吐量受限,而非长上下文处理能力。显存总量(1128GB)理论上足以支持较长的上下文,但会以牺牲吞吐量为代价。

该部署方式适合对延迟敏感、并发量可预测且不太高的场景,不适合需要大规模并发处理、高可用性或极长上下文同时保持高吞吐量的生产环境。在选择部署方案时,应根据实际应用特点和性能需求权衡单机与分布式方案。

相关文章:

关于deepseek R1模型分布式推理效率分析

1、引言 DeepSeek R1 采用了混合专家(Mixture of Experts,MoE)架构,包含多个专家子网络,并通过一个门控机制动态地激活最相关的专家来处理特定的任务 。DeepSeek R1 总共有 6710 亿个参数,但在每个前向传播…...

揭秘大数据 | 9、大数据从何而来?

在科技发展史上,恐怕没有任何一种新生事物深入人心的速度堪比大数据。 如果把2012年作为数据量爆发性增长的第一年,那么短短数年,大数据就红遍街头巷尾——从工业界到商业界、学术界,所有的行业都经受了大数据的洗礼。从技术的迭…...

使用Dependency Walker和Beyond Compare快速排查dll动态库损坏或被篡改的问题

目录 1、问题描述 2、用Dependency Walker工具打开qr.dll库,查看库与库的依赖关系以及接口调用情况,定位问题 3、使用Beyond Compare工具比较一下正常的msvcr100d.dll和问题msvcr100d.dll的差异 4、最后 C软件异常排查从入门到精通系列教程&#xff…...

3.14学习总结 排序算法

插入排序&#xff1a; 1.直接插入排序 维护一个有序区&#xff0c;把元素一个个插入有序区的适当位置&#xff0c;直到所有元素都有序为止。 for (int i 0;i < n - 1;i) {//升序int end i;int temp k[end 1];while (end > 0) {if (temp < k[end]) {k[end 1] …...

Hadoop、Spark、Flink Shuffle对比

一、Hadoop的shuffle 前置知识&#xff1a; Map任务的数量由Hadoop框架自动计算&#xff0c;等于分片数量&#xff0c;等于输入文件总大小 / 分片大小&#xff0c;分片大小为HDFS默认值128M&#xff0c;可调 Reduce任务数由用户在作业提交时通过Job.setNumReduceTasks(int)设…...

本地部署 RAGFlow - 修改默认端口

本地部署 RAGFlow - 修改默认端口 1. 前提条件2. 部署 RAGFlow 1. 前提条件 确保 vm.max_map_count 不小于 262144&#xff1a; 如需确认 vm.max_map_count 的大小&#xff1a; sysctl vm.max_map_count如果 vm.max_map_count 的值小于 262144&#xff0c;可以进行重置&…...

repo init 错误 Permission denied (publickey)

一、已经生成ssh-key并设置到gerrit上 二、已经设置.gitconfig &#xff08;此步骤是公司要求&#xff0c;设置gerrit地址为一个别名之类的&#xff0c;有的公司不需要&#xff09; 然后出现下面的错误&#xff0c;最后发现忘记设置git的用户名和邮箱 1. git config --globa…...

Django settings.py 文件全解析

本篇详细介绍 Django settings.py 文件各个配置项的教程&#xff0c;涵盖核心配置项的作用及最佳实践 一、基础配置 1. ​BASE_DIR BASE_DIR Path(__file__).resolve().parent.parent​作用&#xff1a;项目根目录路径&#xff0c;用于构建其他路径&#xff08;如模板、静态…...

TSB - AD 解读 — 迈向可靠、透明的 TSAD 任务

目录 一 文章动机 二 TSAD 领域内的两类缺陷 三 数据集的构建 四 实验结果及结论 项目宣传链接&#xff1a;TSB-AD 代码链接&#xff1a; TheDatumOrg/TSB-AD: TSB-AD: Towards A Reliable Time-Series Anomaly Detection Benchmark 原作者解读&#xff1a;NeurIPS 2…...

下载 CSS 文件阻塞,会阻塞构建 DOM 树吗?会阻塞页面的显示吗?

下载 CSS 文件会对页面的渲染过程产生影响&#xff0c;具体是否阻塞 DOM 树的构建和页面的显示&#xff0c;取决于浏览器的渲染机制。 1. CSS 文件下载是否会阻塞 DOM 树的构建&#xff1f; 一般情况下&#xff0c;CSS 文件下载不会阻塞 DOM 树的构建&#xff1a; DOM 树的构建…...

6个月的Go语言学习甘特图路线图 从零基础到项目实战

以下是为期6个月的Go语言学习甘特图&#xff08;2025年4月-2025年10月&#xff09;&#xff0c;包含详细阶段划分、对应资源及项目产出文档说明&#xff1a; #mermaid-svg-yQbkZCpCAXv6iXKC {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fi…...

论文阅读:2023-arxiv Can AI-Generated Text be Reliably Detected?

总目录 大模型安全相关研究&#xff1a;https://blog.csdn.net/WhiffeYF/article/details/142132328 文章目录 Abstract&#xff08;摘要&#xff09;1 Introduction&#xff08;引言&#xff09;Conclusion&#xff08;结论&#xff09; Can AI-Generated Text be Reliably D…...

查看IP地址/Ping 命令

目录 Windows Linux macOS Ping 命令 Windows 使用终端&#xff1a; 按下 Win R 键&#xff0c;打开“运行”对话框&#xff0c;输入 cmd 并按 Enter。 在命令提示符中输入 ipconfig&#xff0c;按 Enter。系统会显示网络适配器的详细信息&#xff0c;包括 IPv4 地址、子…...

Language Models are Few-Shot Learners,GPT-3详细讲解

GPT的训练范式&#xff1a;预训练Fine-Tuning GPT2的训练范式&#xff1a;预训练Prompt predict &#xff08;zero-shot learning&#xff09; GPT3的训练范式&#xff1a;预训练Prompt predict &#xff08;few-shot learning&#xff09; GPT2的性能太差&#xff0c;新意高&…...

鸿蒙编译框架@ohos/hvigor FileUtil用法

ohos/hvigor FileUtil用法 在鸿蒙&#xff08;HarmonyOS&#xff09;开发中&#xff0c;ohos/hvigor 的 FileUtil 是用于文件操作的实用工具类&#xff0c;提供了跨平台的文件读写、路径处理等常用方法。以下是其核心用法和示例&#xff1a; 一、核心方法说明 方法名功能描…...

Hoppscotch 开源API 开发工具

Hoppscotch 是一个开源的 API 开发工具&#xff0c;旨在为开发者提供一个轻量级、快速且功能丰富的 API 开发和调试平台。以下是对其主要特性和功能的详细介绍&#xff1a; 1. 轻量级与高效 Hoppscotch 采用简约的 UI 设计&#xff0c;注重易用性和高效性。它支持实时发送请求…...

Infura 简介

文章目录 Infura 简介Infura 的主要功能Infura 的替代方案&#xff08;类似服务&#xff09;AlchemyQuickNodeAnkrMoralisPocket Network 什么时候选择 Infura&#xff1f; Infura 简介 Infura 是一个 区块链基础设施即服务&#xff08;BaaS, Blockchain as a Service&#xf…...

【芯片验证】面试题·对深度为60的数组进行复杂约束的技巧

朋友发给我的芯片验证笔试题,觉得很有意思,和大家分享一下。 面试题目 class A中一个长度为60的随机数组rand int arr[60],如何写约束使得: 1.每个元素的值都在(0,100]之间,且互不相等; 2.最少有三个元素满足勾股数要求,比如数组中包含3,4,5三个点; 请以解约束最快…...

Manus “Less structure,More intelligence ”独行云端处理器

根据市场调研机构Statista数据显示&#xff0c;全球的AR/AR的市场规模预计目前将达到2500亿美元&#xff0c;Manus作为VR手套领域的领军企业&#xff0c;足以颠覆你的认知。本篇文章将带你解读Manus产品&#xff0c;针对用户提出的种种问题&#xff0c;Manus又将如何解决且让使…...

【再读】R1-Onevision通过跨模态形式化为复杂多模态推理任务提供了系统性解决方案

R1-Onevision:跨模态形式化驱动的多模态推理技术突破,R1-Onevision通过跨模态形式化、双阶段训练和教育级基准测试,为多模态推理树立了新标杆。其技术创新不仅提升了模型在复杂任务中的表现,更重要的是为行业提供了一种可解释、可迁移的多模态处理范式。随着形式化方法的不断…...

Mysql-经典实战案例(3): pt-archiver 实现 MySQL 千万级大表分库分表(上)

零基础实战&#xff1a;使用 pt-archiver 实现 MySQL 千万级大表的水平分表&#xff08;Hash分片&#xff09; 本文适合人群&#xff1a;MySQL新手、想低成本实践数据库分表的开发者 环境要求&#xff1a;MySQL 5.7、Linux系统&#xff08;建议CentOS/Ubuntu&#xff09; 你将学…...

使用JSON存储数据的场景

Json 作为一种通用的数据格式&#xff0c;由于其结构灵活、可拓展等特点&#xff0c;在某些场景下我们也会直接将数据以 Json 格式存储到数据库中。 本文将探讨在开发中使用 JSON 存储数据的常见场景&#xff0c;并通过具体的实例帮助大家更好地理解其应用。 1. 半结构化数据…...

文生图网站推荐(2025.3)

以下是2024-2025年期间值得推荐的文生图网站&#xff0c;综合了免费性、中文友好度、操作便捷性及功能特色&#xff0c;涵盖不同用户需求&#xff1a; 一、国内主流平台 通义万相&#xff08;阿里云&#xff09; 特点&#xff1a;每日免费50次生成&#xff0c;模型和风格多样&a…...

网页制作代码html制作一个网页模板

制作一个简单而实用的网页模板&#xff1a;HTML基础入门 在数字时代&#xff0c;网页已成为信息展示和交流的重要平台。HTML&#xff08;HyperText Markup Language&#xff09;作为网页制作的基础语言&#xff0c;为开发者提供了构建网页的基本框架。本文将带你了解如何使用H…...

AI视觉测试工具实战评测:以Applitools为例的技术解析与行业应用

在数字化转型的浪潮中&#xff0c;软件界面&#xff08;UI/UX&#xff09;的复杂性与迭代速度呈指数级增长。传统的人工视觉测试不仅耗时费力&#xff0c;且难以应对多平台、多分辨率下的界面一致性问题。AI视觉测试工具的出现&#xff0c;通过智能图像识别与自动化对比&#x…...

SSM框架——Spring面试题

Spring常见面试题 Spring框架中的单例bean是线程安全的吗 不是线程安全的 Spring框架中有一个Scope注解&#xff0c;默认的值就是singleton&#xff0c;单例的。 因为一般在spring的bean的中都是注入无状态的对象&#xff0c;没有线程安全问题&#xff0c;如果在bean中定义了可…...

华为OD机试 - 计算观看演唱会场次(Java 2023 B卷 200分)

题目描述 为了庆祝中国共产党成立100周年&#xff0c;某公园将举行多场文艺表演。由于演出分布在不同的场地&#xff0c;一个人只能同时观看一场演出&#xff0c;且不能迟到早退。连续观看的演出之间最少需要有15分钟的时间间隔。小明是一个狂热的文艺迷&#xff0c;想观看尽可…...

云原生大佬重生,记忆逐步复苏(十三:selinux模块)

目录 1&#xff1a;什么是selinux 1.1 SELinux 的作用 1.2. SELinux 的工作原理 1.3. SELinux 的运行模式 2:解析selinux文件上下文标签策略 3&#xff1a;selinux的布尔值 4:调查和解决selinux问题 1&#xff1a;什么是selinux SELinux&#xff08;Security-Enhanced L…...

Redis hyperloglog学习

背景知识 【伯努利试验】&#xff1a; 【伯努利试验】是一个概率论中的概念&#xff0c;指在相同的条件下重复进行n次独立的试验&#xff0c;每次试验只有两种可能的结果&#xff0c;且这两种结果发生的概率是固定的 抛硬币作为伯努利试验&#xff1a;在抛硬币时&#xff0c;我…...

MySQL高频八股——事务过程中Undo log、Redo log、Binlog的写入顺序(涉及两阶段提交)

大家好&#xff0c;我是钢板兽&#xff01; 在上一篇文章中&#xff0c;我分别介绍了 Undo Log、Redo Log 和 Binlog 在事务执行过程中的作用与写入机制。然而&#xff0c;实际应用中&#xff0c;这三种日志的写入是有先后顺序的。因此&#xff0c;本篇文章将深入探讨它们的写…...