关于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)理论上足以支持较长的上下文,但会以牺牲吞吐量为代价。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/35274.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣hot100二刷——二叉树

第二次刷题不在idea写代码,而是直接在leetcode网站上写,“逼”自己掌握常用的函数。 标志掌握程度解释办法⭐Fully 完全掌握看到题目就有思路,编程也很流利⭐⭐Basically 基本掌握需要稍作思考,或者看到提示方法后能解答⭐⭐⭐Sl…

网络安全 --- 基于网络安全的 Linux 最敏感目录及文件利用指南

目录 基于网络安全的 Linux 最敏感目录及文件利用指南 Linux 中最敏感的目录及文件 1. /etc 2. /root 3. /var/log 4. /proc 5. /tmp 6. /home 7. /boot 8. /dev 如何利用这些敏感文件 你可能没想到的知识点 总结 Linux 中最敏感的目录及文件 1. /etc 存放内容&a…

深入浅出:Java实现斐波那契数列的七种武器与性能调优指南

​​​ 引言:当数学之美邂逅算法之力 斐波那契数列——这个诞生于13世纪的数学瑰宝,在计算机科学中焕发出新的生命力。作为递归与动态规划的经典案例,它不仅是算法入门的必修课,更是性能优化的试金石。本文将带您深入探索Java实现斐波那契数列的七种核心方法,并揭秘不同…

音视频入门基础:RTP专题(17)——音频的SDP媒体描述

一、引言 在《音视频入门基础:RTP专题(3)——SDP简介》中对SDP协议进行了简介,以H.264为例介绍了视频的SDP的媒体描述。本文对该文章进行补充,以AAC为例,讲述音频的SDP媒体描述。 二、文档下载 《RFC 364…

MyBatis-Plus防全表更新与删除插件BlockAttackInnerInterceptor

防全表更新与删除插件 BlockAttackInnerInterceptor 是 MyBatis-Plus 框架提供的一个安全插件,专门用于防止恶意的全表更新和删除操作。该插件通过拦截 update 和 delete 语句,确保这些操作不会无意中影响到整个数据表,从而保护数据的完整性…

嵌入式开发之STM32学习笔记day06

基于STM32F103C8T6的开发实践——从入门到精通01 1. 引言 STM32系列微控制器是STMicroelectronics推出的一款高性能、低功耗的32位微控制器,广泛应用于嵌入式系统中。STM32F103C8T6是其中非常受欢迎的一款,凭借其强大的性能、丰富的外设接口和低廉的价格…

TCP/IP 协议精讲-精华总结版本

序言 本文旨在介绍一下TCP/IP涉及得所有基础知识,为大家从宏观上俯瞰TCP/IP提供一个基石,文档属于《TCP/IP图解(第五版)》的精简版本。 专业术语 缩写 全称 WAN Wide area network广域网 LAN Local area network局域网 TC…

Ubuntu22.04虚拟机里安装Yolov8流程

1. 安装pytorch sudo apt install nvidia-cuda-toolkit nvcc --version # 官方适配地址:https://download.pytorch.org/whl/torch/import torch print(torch.__version__) print(torch.cuda.is_available())2. 安装环境 # cuDNN 安装:https://develop…

stm32第五天按键的基础知识

一:按键连接示意图 按键控制LED灯 软件设计流程 初始化系统 o 初始化GPIO外设时钟 o 初始化按键和LED的引脚 • 检测按键输入电平来控制LED灯 o SW2控制灯开 。 SW3控制灯关 1:key.c工程 #include"key.h" #include"stm32f10x.h"v…

Xposed模块开发:运行时修改技术

1. Xposed框架核心原理 1.1 运行时架构解析 Android ART Hook机制: graph TD A[目标APP进程] --> B{系统Zygote} B -->|加载Xposed| C[XposedBridge] C --> D[模块1] C --> E[模块2] D --> F[Hook目标方法] E --> F 1.1.1 核心组件交…

【Python学习笔记】一些关于多线程,xls文件读取,PyQt5,PyInstaller打包等问题的解决方案记录

背景: 最近利用休息时间写了个小型exe程序,主要涉及的技术点有:多线程,读取xls文件,基于PyQt5的简单GUI页面,利用PyInstaller打包成exe。虽然有ChatGPT等协助,但难免还是在开发过程中遇到了一些…

基于javaweb的SpringBoot智能相册管理系统图片相册系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

【AI知识管理系统】(一)AI知识库工具测评

嘿,朋友们!🧐你们有没有想过,咱们平日里那些一闪而过的知识笔记、各种碎片化的idea,记录下来之后都是怎么管理的呀? 还有啊,咱们读过的那些书,大家会不会随手写点东西记录一下呢?📝要知道,如果不写的话,很可能过不了多久就全忘得一干二净啦。 😭那多年前记下的…

JVM并发编程AQSsync锁ReentrantLock线程池ThreadLocal

并发编程2 synchronized锁实现**AQS****ReentrantLock实现****JUC 常用类**池的概念 ThreadLocalThreadLocal原理内存泄露强引用:软引用弱引用虚引用ThreadLocal内存泄露 synchronized锁实现 synchronized是一个关键字,实现同步,还需要我们提供一个同步锁对象,记录锁状态,记录…

C++从入门到入土(八)——多态的原理

目录 前言 多态的原理 动态绑定与静态绑定 虚函数表 小结 前言 在前面的文章中,我们介绍了C三大特性之一的多态,我们主要介绍了多态的构成条件,但是对于多态的原理我们探讨的是不够深入的,下面这这一篇文章,我们将…

自带多个接口,完全免费使用!

做自媒体的小伙伴们,是不是经常为语音转文字的事儿头疼? 今天给大家推荐一款超实用的语音转文字软件——AsrTools,它绝对是你的得力助手! AsrTools 免费的语音转文字软件 这款软件特别贴心,完全免费,而且操…

国内首款载重1吨级无人运输机TP1000首飞成功 2026年投入应急救援

大湾区经济网珠海快讯,据央视新闻报道,3月15日上午,国内首款载重1吨级大型无人运输机TP1000在山东成功首飞。该机由中国民航适航标准完全自主研发,起飞重量3.3吨,满载航程达1000公里,具备智能空投功能&…

设计模式Python版 访问者模式

文章目录 前言一、访问者模式二、访问者模式示例 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式:关注类和对象之间的组…

(性能测试)性能测试工具 2.jmeter的环境搭建 3jmeter元件和4使用实例 5jmeter元件和参数化

目录 性能测试工具 性能测试工具 jemeter环境搭建 jmeter的常用目录介绍 jmeter修改语言和主题--jmeter界面的汉化 jmeter元件 jmeter元件和组件的介绍 jmeter的作用域原则 jmeter的执行顺序 案例:执行顺序 jmeter使用案例 jmeter线程组的介绍 jmeter…

书摘 ASP.NET Core技术内幕与项目实战:基于DDD与前后端分离

IT行业的发展瞬息万变,新技术层出不穷,很多技术人员出于个人兴趣、个人职业发展等考虑而选择一些流行的新技术,他们会把各种复杂的架构模式、高精尖的技术都加入架构中,这增加了项目的复杂度、延长了交付周期、增加了项目的研发成本。有些技术并不符合公司的情况,最后项目…