5分钟看懂Deepseek开源周之六:Deepseek-V3/R1推理系统设计----揭开深度求索模型系统设计和运营成本之谜

news2025/4/21 14:17:12

前言

        众所周知,四大天王一般有五个人。所以开源周五连发有第六天也很正常。贴上了开源周活动的github主贴,大家可以不上推特就能了解详情。

deepseek-ai/open-infra-index: Production-tested AI infrastructure tools for efficient AGI development and community-driven innovationhttps://github.com/deepseek-ai/open-infra-index/tree/main?tab=readme-ov-file


开源第六天:Deepseek-V3/R1推理系统设计

 open-infra-index/202502OpenSourceWeek/day_6_one_more_thing_deepseekV3R1_inference_system_overview.md at main · deepseek-ai/open-infra-indexhttps://github.com/deepseek-ai/open-infra-index/blob/main/202502OpenSourceWeek/day_6_one_more_thing_deepseekV3R1_inference_system_overview.md

中文版:DeepSeek-V3 / R1 推理系统概览 - 知乎

系统设计原则

DeepSeek-V3/R1模型的推理优化目标在于:实现更高的吞吐量和更低的延迟。

        为达成这两个目标,我们采用了跨节点的专家并行(Expert Parallelism, EP)解决方案。该方案通过两个核心机制实现优化:

专家并行(Expert Parallelism, EP)是一种专为混合专家模型(Mixture of Experts, MoE)设计的分布式训练/推理策略。其核心思想是通过将模型中的不同“专家”(Expert)分配到不同的计算节点或设备上,实现模型计算和资源的解耦优化。

  • 专家分布式部署
    MoE模型中包含多个独立专家(如128个),EP将这些专家分配到不同GPU或节点上。例如:

    • 若有8个GPU,每个GPU存放16个专家。

    • 输入数据(Token)根据门控(Gating)网络动态路由到对应专家所在的设备。

  • 计算与通信解耦

    • 前向传播: 数据按路由结果分发到对应设备,各设备独立计算分配的专家输出。

    • 结果聚合: 计算完成后,各设备将结果传回主节点进行聚合(All-to-All通信)。

        首先,专家并行显著扩展了批量处理规模,通过提升GPU矩阵运算效率实现吞吐量跃升。其次,该架构将专家模型分布式部署于多GPU环境,每个GPU仅需处理专家子集(大幅降低内存访问需求),从而有效控制延迟。但该方案也带来了系统复杂度的提升,主要体现在两个方面:

  1. 跨节点通信机制:为最大化吞吐量,需设计精细化的计算流程实现通信与计算的流水线重叠2

  2. 多节点协同架构:系统本质要求数据并行(Data Parallelism, DP)的支撑,并需确保不同DP实例间的负载均衡

本文将重点阐述我们攻克这些挑战的技术路径,包括:

  • 基于EP架构的批量扩展技术

  • 通信时延的算力掩蔽策略

  • 分布式系统的动态负载均衡方案


大规模跨节点的专家并行(Expert Parallelism, EP)解决方案

        由于DeepSeek-V3/R1模型中专家数量庞大(每层包含256个专家,但仅激活其中8个),模型的高稀疏性要求极大规模的整体批量处理(Batch Size),以确保每个专家分配到足够的子批量(Sub-batch),从而实现高吞吐与低延迟。为此,跨节点的大规模专家并行(EP)成为必需。

        基于我们采用的预填充-解码解耦架构(prefill-decode disaggregation),模型在预填充阶段和解码阶段分别采用了不同粒度的并行策略:

  • 预填充阶段
    [路由专家 EP32,MLA/共享专家 DP32]
    每个部署单元(Deployment Unit)跨4个节点,包含32路冗余路由专家。
    每个GPU处理:9个路由专家 + 1个共享专家。

  • 解码阶段
    [路由专家 EP144,MLA/共享专家 DP144]
    每个部署单元跨18个节点,包含32路冗余路由专家。
    每个GPU处理:2个路由专家 + 1个共享专家。

关键设计解读

  1. 动态冗余路由专家

    • 通过冗余部署路由专家(如32路冗余),既保证高可用性,又能在稀疏激活(8/256)时维持每个专家的有效负载。

  2. 阶段化并行策略

    • 预填充阶段:侧重高吞吐,采用粗粒度EP(EP32),通过扩大节点规模(4节点)分摊路由专家计算压力。

    • 解码阶段:侧重低延迟,采用细粒度EP(EP144),通过更多节点(18节点)分散计算,减少单GPU负载。

  3. 混合并行架构

    • 同时集成专家并行(EP)数据并行(DP)

      • EP负责专家计算的横向扩展,DP(如DP32/DP144)处理同构任务的分片执行。

      • MLA(Multi-Level Attention)与共享专家(Shared Expert)通过DP实现跨节点协同。


 计算-通信重叠优化

        大规模跨节点专家并行(EP)会引入显著的通信开销。为此,我们在预填充阶段采用双微批次重叠策略,通过将请求批次拆分为两个微批次(microbatches),将通信成本隐藏在计算过程中,从而提升整体吞吐量:

 示意图:预填充阶段通信与计算流水线重叠

1.计算阶段(Computation):

  • 包含108个SMs(流式多处理器),分为多个步骤。
  • 主要步骤包括:ATTN(注意力层)、SHARED(共享专家层)、MLP(多层感知器)。

2. 通信阶段(Communication):

  • 包含24个SMs,主要用于COMBINE(合并)和DISPATCH(分发)操作。

3. 微批次(Micro-batches):

  • 微批次0(黄色)和微批次1(绿色)交替执行。
  • 在预填充阶段(Prefilling Phase),两个微批次交替执行,一个微批次的通信成本被另一个微批次的计算所隐藏。


        由于不同计算阶段的执行时长不均衡,我们将注意力层拆分为两步计算,并设计五级流水线(5-stage pipeline),实现通信与计算的无缝重叠

1计算阶段(Computation):

  • 包含132个SMs(流式多处理器),分为多个步骤。
  • 主要步骤包括:SHARED(共享专家层)、ATTN-0(注意力层0)、MLP(多层感知器)、ATTN-1(注意力层1)。

2通信阶段(Communication):

  • 包含0个SMs,主要用于DISPATCH(分发)和COMBINE(合并)操作。

3微批次(Micro-batches):

  • 微批次0(黄色)和微批次1(绿色)交替执行。
  • 在预填充阶段(Prefilling Phase),两个微批次交替执行,一个微批次的通信成本被另一个微批次的计算所隐藏。

        深度求索公开了从训练和推理框架中获取的性能剖析数据,以帮助社区更好地理解通信-计算重叠策略和底层实现细节。该性能剖析数据通过 PyTorch Profiler 捕获,下载后可直接通过 Chrome浏览器(地址栏输入 chrome://tracing)或 Edge浏览器(输入 edge://tracing)加载并可视化。请注意,我们在性能剖析中模拟了绝对均衡的MoE路由策略。详情从以下链接获取:

deepseek-ai/profile-data: Analyze computation-communication overlap in V3/R1.https://github.com/deepseek-ai/profile-data


实现最优负载均衡

        大规模并行(包括DP和EP)引入了一个关键挑战:如果单个GPU因计算或通信过载,它将成为性能瓶颈,导致整个系统减速,而其他GPU则处于空闲状态。为了最大化资源利用率,我们致力于在所有GPU间平衡计算和通信负载。

1.预填充负载均衡器
关键问题:不同DP实例间的请求数量和序列长度差异导致核心注意力计算和分发发送负载不均衡。
优化目标

  • 跨GPU平衡核心注意力计算(核心注意力计算负载均衡)。
  • 均衡每个GPU的输入token数量(发送负载均衡),避免特定GPU处理耗时过长。

2.解码负载均衡器
关键问题:不同DP实例间的请求数量和序列长度差异导致核心注意力计算(与KVCache使用相关)和分发发送负载不均衡。
优化目标

  • 跨GPU平衡KVCache使用量(核心注意力计算负载均衡)。
  • 均衡每个GPU的请求数量(分发发送负载均衡)。

3.专家并行负载均衡器
关键问题:对于给定的MoE模型,存在固有高负载专家,导致不同GPU间的专家计算负载不均衡。
优化目标

  • 平衡每个GPU上的专家计算(即最小化所有GPU间的最大分发接收负载)。

深度求索的在线推理系统框架

框架概述

该框架主要分为两个阶段:预填充(Prefill)阶段和解码(Decode)阶段,并且每个阶段都有负载均衡器和服务。

组件详解

  1. API Server

    • 功能:接收外部请求并将其转发到相应的服务。
    • 作用:作为整个系统的入口点,负责路由和调度请求。
  2. Prefill Load Balancer

    • 功能:负责将预填充阶段的请求分发到多个预填充服务实例。
    • 作用:确保请求均匀分布,提高系统吞吐量和响应速度。
  3. Expert-Parallel Load Balancer (Prefill)

    • 功能:在预填充阶段进一步细化负载均衡,确保专家层的并行处理。
    • 作用:优化预填充阶段的计算资源分配。
  4. Prefill Service

    • 功能:执行预填充任务,包括初始化模型参数和其他预处理操作。
    • 作用:为后续的解码阶段准备数据。
  5. Decode Load Balancer

    • 功能:负责将解码阶段的请求分发到多个解码服务实例。
    • 作用:确保请求均匀分布,提高系统吞吐量和响应速度。
  6. Expert-Parallel Load Balancer (Decode)

    • 功能:在解码阶段进一步细化负载均衡,确保专家层的并行处理。
    • 作用:优化解码阶段的计算资源分配。
  7. Decode Service

    • 功能:执行解码任务,包括生成最终输出结果。
    • 作用:根据预填充阶段的数据生成最终的推理结果。
  8. External KVCache Storage (Optional)

    • 功能:可选的外部键值缓存存储,用于存储中间结果或常用数据。
    • 作用:减少重复计算,提高系统性能。

工作流程

  1. API Server 接收外部请求。
  2. 请求被转发到 Prefill Load Balancer
  3. Prefill Load Balancer 将请求分发到多个 Prefill Service 实例。
  4. Prefill Service 执行预填充任务,并将结果传递给 Decode Load Balancer
  5. Decode Load Balancer 将请求分发到多个 Decode Service 实例。
  6. Decode Service 执行解码任务,并生成最终结果。
  7. 结果返回给 API Server,并通过 API 返回给客户端。

DeepSeek在线服务统计

有DeepSeek-V3/R1推理服务均运行在H800 GPU上,其计算精度与训练阶段保持一致。具体配置如下:

  • 矩阵乘法分发传输采用与训练对齐的FP8格式

  • 核心MLA计算合并传输使用BF16格式
    以此确保服务性能最优。

此外,由于日间服务负载高、夜间负载低,我们实现了动态资源调度机制:

  • 日间高峰时段:推理服务全节点部署

  • 夜间低负载时段:减少推理节点,释放资源用于研究与训练任务

在过去24小时内(UTC+8 2025年2月27日12:00至2025年2月28日12:00):

  • V3与R1推理服务的合计峰值节点占用数达278个

  • 平均节点占用数为226.75个(每个节点含8块H800 GPU)
    按单块H800 GPU租赁成本2美元/小时计算,每日总成本为87,072美元

H800节点推理服务的成本

图表信息
标题:H800 Node Count For Inference Service
X轴:时间(Time),从12:00到次日12:00,以小时为单位。
Y轴:H800节点数量(Node Count),范围从0到300。
数据分析
初始阶段(12:00 - 24:00):
在12:00时,H800节点的数量稳定在约275个。
直到大约23:00左右,节点数量保持不变。
下降阶段(24:00 - 06:00):
从24:00开始,节点数量逐渐减少。
到06:00时,节点数量降至最低点,约为75个。
上升阶段(06:00 - 12:00):
从06:00开始,节点数量逐渐增加。
到12:00时,节点数量恢复到约275个。
总结
高峰期:从12:00到24:00,节点数量保持较高水平,表明这段时间内推理服务的需求较高。
低谷期:从24:00到06:00,节点数量显著减少,表明这段时间内推理服务的需求较低。
恢复期:从06:00到12:00,节点数量逐渐恢复到初始水平,表明需求再次回升。

1. H800 服务器的背景与定义

H800​ 是英伟达(NVIDIA)针对特定市场(如中国市场)推出的高性能计算(HPC)及人工智能(AI)加速 GPU,属于 ​Hopper 架构​ 的衍生型号。它的推出主要是为了适应美国出口管制政策,在保持核心功能的前提下,对部分性能参数进行调整(如显存带宽或算力限制),以满足合规要求。H800 可以看作是 ​H100 GPU 的定制版本,类似于此前 A100 与 A800 的关系。


2. H800 服务器的核心配置

一台典型的 ​H800 服务器​ 通常包含以下组件:

  • 多块 H800 GPU:单台服务器可能搭载 4-8 块 H800 GPU,提供强大的并行计算能力。
  • CPU 与内存:配备多路高性能 CPU(如 AMD EPYC 或 Intel Xeon),搭配大容量内存(通常 1TB 以上)。
  • 高速互联:支持 GPU 间的高速互联技术(如 NVLink 或 PCIe 5.0),以及节点间通信的 InfiniBand 或以太网。
  • 存储与散热:集成高速存储(如 NVMe SSD)和高效散热系统(液冷/风冷)。

3. H800 节点的概念

H800 节点​ 是指在一个分布式计算集群中,由 ​单台或多台 H800 服务器​ 组成的独立计算单元。节点的核心特征包括:

  • 硬件独立性:每个节点拥有独立的 CPU、GPU、内存和存储资源。
  • 任务分配单位:在分布式训练或 HPC 任务中,单个节点负责处理分配给它的子任务(例如模型的一部分计算或数据分片)。
  • 网络互联:节点之间通过高速网络(如 InfiniBand)连接,实现数据交换和同步。

DeepSeek在线服务统计(UTC+8 2025年2月27日12:00至2025年2月28日12:00)
V3与R1服务数据概览

  • 总输入token数:608B(其中342B token命中磁盘KV缓存,占比56.3%)

  • 总输出token数:168B

  • 平均输出速度:20–22 token/秒

  • 每个输出token的平均kvcache长度:4,989 token

  • 单H800节点吞吐量

    • 预填充阶段(含缓存命中)约73.7k token/秒输入

    • 解码阶段约14.8k token/秒输出

计费与成本分析

  • 统计范围:覆盖网页端、APP及API全量用户请求

  • 若按DeepSeek-R1定价标准计算(*):

    • 日总收入:562,027美元

    • 成本利润率:545%

  • 实际收入显著低于理论值的原因

    1. DeepSeek-V3定价显著低于R1

    2. 仅部分服务收费(网页端与APP访问仍免费)

    3. 夜间低峰时段自动启用折扣费率

定价说明 (*)

  • 输入token:

    • 缓存命中:0.14美元/百万token

    • 缓存未命中:0.55美元/百万token

  • 输出token:2.19美元/百万token

 

图表信息

  • 标题:Cost and Theoretical Income
  • X轴:时间(Time),从12:00到次日12:00,以小时为单位。
  • Y轴:金额(USD),范围从0到35K美元。
  • 颜色说明
    • 黄色柱状图:表示成本(Cost)。
    • 蓝色柱状图:表示理论收入(Theoretical Income*)。

数据分析

  1. 初始阶段(12:00 - 24:00)

    • 在12:00时,成本约为4K美元,理论收入约为27K美元。
    • 直到大约23:00左右,成本保持在约4K美元,理论收入逐渐增加到约30K美元。
  2. 下降阶段(24:00 - 06:00)

    • 从24:00开始,成本和理论收入均逐渐减少。
    • 到06:00时,成本降至最低点,约为1K美元,理论收入降至最低点,约为7K美元。
  3. 上升阶段(06:00 - 12:00)

    • 从06:00开始,成本和理论收入逐渐增加。
    • 到12:00时,成本恢复到约4K美元,理论收入恢复到约30K美元。

总结

  • 高峰期:从12:00到24:00,成本保持较低水平,理论收入较高,表明这段时间内推理服务的需求较高且收入可观。
  • 低谷期:从24:00到06:00,成本和理论收入均显著减少,表明这段时间内推理服务的需求较低且收入较少。
  • 恢复期:从06:00到12:00,成本和理论收入逐渐恢复到初始水平,表明需求再次回升。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++发展

目录 ​编辑C 的发展总结:​编辑 1. C 的早期发展(1979-1985) 2. C 标准化过程(1985-1998) 3. C 标准演化(2003-2011) 4. C11(2011年) 5. C14(2014年&a…

动态规划/贪心算法

一、动态规划 动态规划 是一种用于解决优化问题的算法设计技术,尤其适用于具有重叠子问题和最优子结构性质的问题。它通过将复杂问题分解为更简单的子问题,并保存这些子问题的解以避免重复计算,从而提高效率。 动态规划的核心思想 最优子结…

python全栈-Linux基础

python全栈-Linux基础 文章目录 Linux安装/配置网络配置配置Linux远程登录配置虚拟机内部ip配置真机的ip安装XShell和Xftp目录结构用户和用户组用户管理添加用户useradd查看用户id修改用户usermod (选项)(参数)用户密码设置passed (选项)(参数)删除用户userdel [选项] 用户名 用…

基于https虚拟主机配置

一、https介绍 http 明文,80/tcp https 密文,443/tcp 二、安全性保障 1、数据安全性 数据加密 2、数据完整性 3、验证身份的真实性、有效性 三、数据安全性 手段:加密 发送方加密数据,接收方解密数据 对称加密算法 加密、解密数据…

Kmeans算法来实现RFM指标计算步骤

K-Means(K均值)是一种经典的无监督聚类算法,主要用于将数据集划分为 KKK 个不同的簇(Cluster)。 它基于最小化簇内样本的平方误差,即最小化数据点与簇中心的距离之和。 1. K-Means 算法原理 (1) 主要步骤 …

Vue2-3 优雅的在子组件修改父组件传递过来的v-model

在子组件修改父组件传递过来的v-model,这样会破坏单向数据流,造成屎山代码,为了避免这个问题,需要给一个中间层来相对舒服的使用v-model。方法就是用computed去拦截v-model,然后在computed 里面去触发 emit 事件来修改父组件传来的…

threejs:用着色器给模型添加光带扫描效果

第一步:给模型添加光带 首先创建一个立方体,不进行任何缩放平移操作,也不要set position。 基础代码如下: 在顶点着色器代码里varying vec3 vPosition;vPosition position;获得threejs自动计算的顶点坐标插值(也就…

1.从0搭建前端Vue项目工程

我们通过vue官方提供的脚手架Vue-cli来快速生成一个Vue的项目模板。 **注意:**需要先安装NodeJS,然后才能安装Vue-cli。 环境准备好了,接下来我们需要通过Vue-cli创建一个vue项目,然后再学习一下vue项目的目录结构。Vue-cli提供了…

开放鸿蒙OpenHarmony 5.0.0 Release 兼容性测试实战经验分享

OpenHarmony 5.0版本的发布时间是2024年12月20日至21日。这个版本带来了许多新特性和改进。现在5.0出了两个release 版本,分别是5.0.0和5.0.1。 就在5.0版本发布不到2周的时间内,2025年01月01日起,不支持新产品基于老分支(OpenHar…

Chromium_src源码

Chromium_src源码 码云上有一个OpenHarmony-TPC/chromium_src项目,目前已经停止维护了,迁移到GitCode上了,源代码项目地址为:openharmony-tpc/chromium_chrome 特此记录一下老的项目的相关软件架构 Chromium 简介 软件架构 软…

深度学习的正则化深入探讨

文章目录 一、说明二、学习目标三、什么是机器学习中的正则化四、了解过拟合和欠拟合五、代价函数的意义六、什么是偏差和方差?七、机器学习中的正则化? 一、说明 在训练机器学习模型时,模型很容易过拟合或欠拟合。为了避免这种情况&#xf…

《OpenCV》——dlib(人脸应用实例)

文章目录 dlib库dlib库——人脸应用实例——表情识别dlib库——人脸应用实例——疲劳检测 dlib库 dlib库的基础用法介绍可以参考这篇文章:https://blog.csdn.net/lou0720/article/details/145968062?spm1011.2415.3001.5331,故此这篇文章只介绍dlib的人…

tauri2+typescript+vue+vite+leaflet等的简单联合使用(一)

项目目标 主要的目的是学习tauri。 流程 1、搭建项目 2、简单的在项目使用leaflet 3、打包 准备项目 环境准备 废话不多说,直接开始 需要有准备能运行Rust的环境和Node,对于Rust可以参考下面这位大佬的文章,Node不必细说。 Rust 和…

本地部署阿里万象2.1文生视频模型(Wan2.1-T2V)完全指南

在生成式AI技术爆发式发展的今天,阿里云开源的万象2.1(Wan2.1)视频生成模型,为创作者提供了从文字/图像到高清视频的一站式解决方案。本文针对消费级显卡用户,以RTX 4060 Ti 16G为例,详解本地部署全流程与性能调优方案,涵盖环境配置、多模型选择策略、显存优化技巧及实战…

【Vue CLI脚手架开发】——3.组件交互props配置

文章目录 前言一、props数据接收方式二、代码实现1. 父组件2.子组件 三、分析 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习…

FPGA之USB通信实战:基于FX2芯片的Slave FIFO回环测试详解

FPGA之Usb数据传输 Usb 通信 你也许会有疑问,明明有这么多通信方式和数据传输(SPI、I2C、UART、以太网)为什么偏偏使用USB呢? 原因有很多,如下: 1. 高速数据传输能力 高带宽:USB接口提供了较高的数据传…

【Office-Word】如何自动生成中英文目录

1.目录介绍 Word这个自动生成目录非常强大,涉及的功能很琐碎,想要完美的生成目录不仅仅是只会目录这么简单,前后涉及到的大纲级别、目标样式和域代码等操作是比较头疼的。 下面就一步一步开始介绍 2.多级标题级别编号设置 目录想要设置好…

CentOS 7 安装Nginx-1.26.3

无论安装啥工具、首先认准了就是官网。Nginx Nginx官网下载安装包 Windows下载: http://nginx.org/download/nginx-1.26.3.zipLinxu下载 wget http://nginx.org/download/nginx-1.26.3.tar.gzLinux安装Nginx-1.26.3 安装之前先安装Nginx依赖包、自行选择 yum -y i…

家政预约小程序用例图分析

在和客户进行需求沟通的时候,除了使用常规的问答的形式,我还使用图形化工具更深入的沟通。比如借助UML的用例图来开展系统分析,并且按照角色详细拆解了家政预约小程序的各个用例。在分析阶段思考的越多,沟通的越多,在系…

112页精品PPT | DeepSeek行业应用实践报告

这份文件是一份关于DeepSeek行业应用实践的报告,以PPT形式呈现,共112页,详细介绍了DeepSeek及其核心产品DeepSeek-R1的技术特点、市场表现、应用路径以及在多领域的实践案例。报告展示了DeepSeek在市场上的快速崛起,包括其日活用户…