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

相关推荐
小鸡吃米…16 小时前
机器学习 - K - 中心聚类
人工智能·机器学习·聚类
好奇龙猫17 小时前
【AI学习-comfyUI学习-第三十节-第三十一节-FLUX-SD放大工作流+FLUX图生图工作流-各个部分学习】
人工智能·学习
沈浩(种子思维作者)17 小时前
真的能精准医疗吗?癌症能提前发现吗?
人工智能·python·网络安全·健康医疗·量子计算
minhuan17 小时前
大模型应用:大模型越大越好?模型参数量与效果的边际效益分析.51
人工智能·大模型参数评估·边际效益分析·大模型参数选择
Cherry的跨界思维17 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
MM_MS17 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
ASF1231415sd17 小时前
【基于YOLOv10n-CSP-PTB的大豆花朵检测与识别系统详解】
人工智能·yolo·目标跟踪
水如烟18 小时前
孤能子视角:“意识“的阶段性回顾,“感质“假说
人工智能
Carl_奕然18 小时前
【数据挖掘】数据挖掘必会技能之:A/B测试
人工智能·python·数据挖掘·数据分析
旅途中的宽~18 小时前
《European Radiology》:2024血管瘤分割—基于MRI T1序列的分割算法
人工智能·计算机视觉·mri·sci一区top·血管瘤·t1