DeepSeek为什么这么慢?

目录

写在前面

一、什么是MoE

[二、MoE 的优势](#二、MoE 的优势)

[1. 参数量巨大但计算量几乎不变](#1. 参数量巨大但计算量几乎不变)

[2. 专家自动分工,能力更丰富(专精化)](#2. 专家自动分工,能力更丰富(专精化))

[3. 训练效率高](#3. 训练效率高)

[4. 扩展性极强(Scalability)](#4. 扩展性极强(Scalability))

[5. 专家之间天然并行(Parallelism-friendly)](#5. 专家之间天然并行(Parallelism-friendly))

[三、MoE 为什么会变慢?](#三、MoE 为什么会变慢?)

[1. Router 造成额外计算与同步开销](#1. Router 造成额外计算与同步开销)

[2. Token 需要在不同专家之间"分发"和"再聚合"](#2. Token 需要在不同专家之间“分发”和“再聚合”)

[3. 专家负载不均衡导致流水线堵塞](#3. 专家负载不均衡导致流水线堵塞)

[4. 批次小的时候 MoE 效率最差](#4. 批次小的时候 MoE 效率最差)

四、总结


写在前面

DeepSeek 的出现引发了广泛关注,它以极低的训练成本与高参数规模令人惊叹。但我们在实际体验中也遇到一个问题,相比ChatGPT、Kimi、豆包等同类型的NLP大模型"腹泻"式的推理速度:"为什么 DeepSeek 这么慢?"

许多人误以为 DeepSeek 的算力更强,因此理应速度更快,其实不然。DeepSeek 使用了极大规模的稀疏 Mixture-of-Experts (MoE) 架构 ,让模型在等价 FLOPs 基础上拥有远超 dense 模型的参数规模。
但在推理场景,越大的 MoE 参数规模往往意味着:路由复杂度增加、通信成本上升、跨设备同步放大、负载不均衡加剧。

深度学习工程界一个常识是:稀疏模型在训练时能用稀疏化减少计算,但在推理时绝大多数延迟源自通信,而不是计算。

一、什么是MoE

MoE 的核心思想是"不是所有 token 都由同一组参数处理",而是让不同的 token 动态选择最适合它们的"专家网络"(Expert)。它的优势是 大幅提升模型容量却几乎不增加计算量

MoE 是一种参数稀疏化架构,给定 token 表示 x,路由器计算各专家权重,用公式描述如下:

Top-K(通常 K=1 或 K=2)选择得分最高的 K 个专家集合

每个专家 ​ 是一个 FFN:

最终输出为:

MoE 模块结构示意图:

核心组件详解

1.输入

一个输入向量(例如,来自Transformer模型前一层输出的 token 表示)。

2.门控网络

功能: 这是 MoE 的"路由控制器"。它接收输入向量,并产生一个权重分布(通常通过 Softmax 函数)。

输出: 一个权重向量 [w1, w2, w3, ..., wN],其中每个 w_i 表示对应专家对于当前输入的重要性。通常,只有 Top-K(例如 Top-1, Top-2)的专家会被激活,其余权重置零,这实现了稀疏激活,是保证计算效率的关键。

3.专家网络

功能: 一群独立的、通常是结构相同的子网络(例如,每个专家都是一个前馈神经网络)。每个专家都专注于学习输入数据分布中的不同部分或模式。

**特点:**所有专家并行存在,但对于任何一个特定输入,只有少数(K个)专家被激活并参与计算。这使得模型总参数量巨大,但计算成本只与激活的专家数成比例。

4.加权求和

功能: 将门控网络计算出的权重,与对应激活专家的输出进行加权求和。

公式: Output = w1 * Expert1(x) + w2 * Expert2(x) + ... + wN * ExpertN(x)

结果: 最终生成一个与输入向量同维度的输出向量,传递给模型的下一层。

二、MoE 的优势

MoE 用更少的计算,获得更大的模型容量与更强的任务适应性,是现代大模型最具性价比的扩展技术。

1. 参数量巨大但计算量几乎不变

MoE 最大的强项是稀疏激活:只启用 Top-K 个专家,其余专家不参与计算。因此模型参数量可以做到 dense 的 10倍~100倍,但每个 token 的计算量几乎不增加,这让 MoE 可以用较低计算成本获得接近"超大模型"的能力。

2. 专家自动分工,能力更丰富(专精化)

路由器会将不同 token 分配给不同专家,使专家自动学习不同子任务,例如:文本推理、数学、翻译、代码、文本纠错等。

**MoE 内部形成多个专精子网络,使整体泛化能力更强。**Dense 模型无法天然做到这种"特化"。

3. 训练效率高

训练时每个 token 只激活少数专家,因此FLOPs 低、内存带宽压力小、可以用更大的 batch、训练吞吐率高。

大规模研究显示:MoE 的训练速度可比同性能 dense 模型快 3~7 倍。

4. 扩展性极强(Scalability)

Dense 模型参数一旦超过百亿级就很难继续扩展,因为GPU 内存不够、通信量爆炸、optimizer 状态占用率巨大等原因。

MoE 通过稀疏化规避了密集 FFN 的扩展瓶颈:MoE 非常适合构建万亿参数级 LLM

5. 专家之间天然并行(Parallelism-friendly)

MoE 的专家彼此独立,使其非常适合分布式并行,每个 GPU 可以负责多个独立专家\训练负载容易拆分。相比之下,dense FFN 很难做细粒度并行。

三、MoE 为什么会变慢?

虽然 MoE 理论上计算量低,但它在工程上会造成大量 延迟。DeepSeek 正是因为采用 MoE 才显得"慢"。

1. Router 造成额外计算与同步开销

每个 token 都要先经过路由器决定专家选择,这一步虽然轻量,但需要对所有 token 进行 softmax/排序、多 GPU 之间交换路由信息。这些操作会显著增加 通信延迟。

2. Token 需要在不同专家之间"分发"和"再聚合"

**这是MoE速度慢的最主要原因。**在 GPU 上,专家通常分布在不同显卡甚至不同机器上,因此每个 token 必须经过一个All-to-All 分布式通信的过程:

tokens -> router -> 分发到对应专家 -> 各专家计算 -> 再汇聚

这就导致:通信远大于计算、延迟剧烈增加,这一步通常比"推理本身"要慢得多。

3. 专家负载不均衡导致流水线堵塞

Router 不可能完美均衡 token 的分布,有些专家可能被大量选择,有些无人使用,结果会出现某些 GPU 堆积大量请求;整个推理速度由最慢的专家决定。这通常叫做 load imbalance(负载不均衡)。

4. 批次小的时候 MoE 效率最差

对于对话式推理(单用户、一个一个 token 地预测),MoE 的并行度利用率极低,因此专家利用率低、通信成本更显著就成为批次小的时候 MoE 效率最差的原因。

换言之,MoE 更适合大批量推理,但不适合单请求对话场景。

四、总结

DeepSeek 的慢来自 MoE 架构的系统性瓶颈,而不是工程不足。其根本原因包括:

1.Router 造成额外计算与同步开销

2.Token → Expert → 汇聚 的 All-to-All 通信主导延迟

3.专家负载不均衡导致流水线堵塞

4.MoE 在小 batch 推理时性能坍塌

5.专家数目大导致通信复杂度上升

6.每层 MoE 都叠加两次通信 + 路由开销

Dense 模型推理快,因为:所有计算都是矩阵乘法,没有任何跨设备不规则通信。

MoE 模型推理慢,因为:大部分时间都在跨 GPU 派发 token、等待最慢专家工作、再同步结果。

这就是 DeepSeek 的慢的技术本质。

关注不迷路(*^▽^*),暴富入口==》 https://bbs.csdn.net/topics/619691583

相关推荐
东哥说-MES|从入门到精通33 分钟前
数字化部分内容 | 十四五年规划和2035年远景目标纲要(新华社正式版)
大数据·人工智能·数字化转型·mes·数字化工厂·2035·十四五规划
极客BIM工作室1 小时前
从静态到动态:Sora与文生图潜在扩散模型的技术同异与AIGC演进逻辑
人工智能·aigc
松果财经1 小时前
长沙的青年友好,五年见“城”心
人工智能
秋邱1 小时前
智启未来:AGI 教育融合 × 跨平台联盟 × 个性化空间,重构教育 AI 新范式开篇:一场 “教育 ×AI” 的范式革命
人工智能·python·重构·推荐算法·agi
黑客思维者1 小时前
ChatGPT软件开发提示词库:开发者常用150个中文提示词分类与应用场景设计
人工智能·chatgpt·提示词·软件开发
IT_陈寒1 小时前
React性能优化:这5个Hooks技巧让我减少了40%的重新渲染
前端·人工智能·后端
七牛云行业应用1 小时前
解决 AI 视频角色闪烁与时长限制:基于即梦/可灵的多模型 Pipeline 实战
人工智能·音视频·ai视频
哔哩哔哩技术1 小时前
B站社群AI智能分析系统的实践
人工智能
xcLeigh1 小时前
AI的提示词专栏:“Re-prompting” 与迭代式 Prompt 调优
人工智能·ai·prompt·提示词