专栏名称: 天池大数据科研平台
天池,基于阿里云的开放数据处理服务ODPS,面向学术界开放海量数据和分布式计算资源,旨在打造“数据众智、众创”第一平台。在这里,人人都可以玩转大数据,共同探索数据众创新模式。
目录
相关文章推荐
艺恩数据  ·  春节档观众满意度亮眼 ... ·  6 天前  
数据派THU  ·  【ICLR2025】CUBEDIFF:将基于 ... ·  3 天前  
数据派THU  ·  时间序列平稳性的双重假设检验:KPSS与AD ... ·  3 天前  
大数据D1net  ·  2025年数据治理趋势与成功策略全解析 ·  2 天前  
51好读  ›  专栏  ›  天池大数据科研平台

一文漫谈DeepSeek及其背后的核心技术

天池大数据科研平台  · 公众号  · 大数据  · 2025-02-12 15:30

正文

注:本文不代表官方立场


一、 关于DeepSeek公司及其大模型


1.1 公司概况

DeepSeek 2023年7月成立于杭州,是幻方量化旗下的子公司,全称是杭州深度求索人工智能基础技术研究有限公司。
"成立时间才一年多"、"最近推出的V3已经能和OpenAI的4o媲美"、"训练成本不到600W美元"、"API定价仅是国内其他头部厂商几十分之一"、"APP已经在中美APP store登上免费应用榜首";
以上是最近关于DeepSeek的一些新闻热点信息,下面我们从官网看下:
DeepSeek近半年相继推出了3个主要的大模型版本,分别是DeepSeek V2.5、DeepSeek V3、DeepSeek-R1(无一例外的都是用了MOE架构)。在这之前还推出了 DeepSeek-VL DeepSeek Coder DeepSeek Math


1.2 模型能力

DeepSeek模型已经对标国内Qwen、海外Llama、GPT 4o,从公布的榜单评测上看:DeepSeek-V3 在开源模型中位列榜首,与世界上最先进的闭源模型不分伯仲。 




1.3训推成本

推理成本(API报价) :百万Token输入价格能达到1元。



训练成本 :从技术报告中看DeepSeek用的是H800的GPU做的训练,而且只有2千张左右的H800,整个V3的正式训练成本不超过600W美元。
1、预训练阶段,每万亿的Token 训练V3使用2048个H800GPU集群,只需要180K 个H800 GPU小时,大概3.7天(180000/2048/24)
2、整个预训练总耗时2664K GPU小时(不到2个月),加上 上下文扩展和后训练,总耗时大概2788KGPU耗时。
3、按照H800 每小时2美元租赁,总的训练成本不超过600W美元

  DeepSeek-V3 Technical Report 

这么低的推理和训练成本不由引出以下的问题:
模型采用了什么样的网络架构?
训练的精度、框架和并行策略是怎样的?
模型的部署和优化方案是怎样的?
在硬件层的计算和通信上做了什么优化?

二、 DeepSeek训推核心技术


2.1 DeepSeek-V3模型网络架构

DeepSeekV3 整体预训练用了14.8万亿的高质量Token,并且在后期做了SFT和RL,模型参数量达到671B,但是每个Token仅激活37B参数。为了做到高效的推理和训练,DeepSeekV3自研了MLA注意力机制和无辅助损失负载均衡策略的MoE架构。

从技术报告中看出,是经典的Transformer架构,比较亮眼的就是前馈网络使用的DeepSeekMoE架构、Attention机制使用MLA架构,其实这两个在DeepSeekV2模型已经被验证使用过。

与DeepSeek-V2相比,V3额外引入了一种 无辅助损失的负载均衡策略 ,用于DeepSeekMoE,以减轻因需要保证Expert负载均衡而导致的性能下降。




2.1.1 DeepSeekMoE

第一个将MoE架构引入Transformer网络的就是 GShard 架构了,与传统大模型架构相比,MoE架构在数据流转过程中集成了一个专家网络层。
可以看出传统的MoE基本两部分组成:Gating门控网络、稀疏MoE层;
稀疏 MoE 层: 这些层代替了传统 Transformer 模型中的前馈网络 (FFN) 层。MoE 层包含若干“专家”(例如 8 个),每个专家本身是一个独立的神经网络。在实际应用中,这些专家通常是前馈网络 (FFN),但它们也可以是更复杂的网络结构,甚至可以是 MoE 层本身,从而形成层级式的 MoE 结构。
门控网络或路由: 这个部分用于决定哪些Token被发送到哪个专家。Token的路由方式是 MoE 使用中的一个关键点,因为路由器由学习的参数组成,并且与网络的其他部分一同进行预训练。



和传统的MoE架构相比, DeepSeekMoE使用更细粒度的专家,并将一些专家隔离为共享专家,减少专家间的知识冗余。


门控网络路由策略 :TopK表示第t个Token和所有路由专家计算出的 亲和力分数中K个最高分数的集合 ,在DeepSeekV3中,使用sigmoid函数计算亲和力分数,然后在所有选择的亲和力分数中应用归一化来生成门控值。 
通常在MoE模型的训练过程中,不同专家因为路由策略的因素会导致接收的训练数据分布不均,比如所有的Token都被发送到只有少数几个受欢迎的专家,那么有些专家就可能没有被训练到。
业界通用的解决方案就是引入辅助损失,但是,有时候过大的辅助损失会损害模型性能。
为了在负载均衡和模型性能之间取得更好的平衡,DeepSeek开创了一种 无辅助损失的负载均衡策略 :为每个专家引入一个偏差项 ,并将其添加到相应的亲和力分数 中以确定top-K路由,具体来说:如果其对应的专家过载,我们将偏差项减少γ;如果其对应的专家负载不足,我们将偏差项增加γ,其中γ是一个称为偏差更新速度的超参数。

门控网络本质上就是一个softmax叠加一个分类网络,那么辅助loss往往就是添加一个惩罚项,对输出过大的 logits 进行惩罚,鼓励模型生成更加适度的 logits 值,防止模型生成过于极端的输出。


2.1.2 MLA 多头潜在注意力

 大模型推理过程KV Cache机制一般是限制推理效率的一大瓶颈 ,而标准的Transformer 架构里面的MHA架构会产出非常多的KV Cache,为了减少对应的KV Cache业界实践过很多方案,例如PagedAttention、多查询注意力(MQA)和分组查询注意力(GQA),但是性能相比原生的MHA有一定差距。 

DeepSeek-V2,提出一种创新的注意力机制:多头潜在注意力(MLA)。

相比MQA的KV共用和GQA的KV分组, MLA的核心是注意力键和值的低秩联合压缩,以减少推理过程中的键值(KV)缓存 。相比MHA具有更好的性能,但需要的 KV 缓存量要少得多。 

低秩矩阵是指其秩(rank)远小于其行数和列数的矩阵。

假设我们有一个矩阵,其实际结构允许它被分解为两个较小的矩阵的乘积。这种情况通常意味着原矩阵是低秩的。

假设我们有一个 4×5 的矩阵 A ,这个矩阵可以通过两个更小的矩阵的乘积来表示,比如一个 4×2 的矩阵 B 和一个 2×5 的矩阵 C 。这意味着原始矩阵 A 的信息可以通过这两个较小的矩阵来捕捉,表明 A 是一个低秩矩阵。


低秩压缩计算核心过程:

这里的 表示第t个Token的输入, 表示KV的向下投影矩阵,将 做降维压缩表示,实际得到 就是要缓存的KV压缩隐向量; 是向上做升维的投影矩阵,将Token的压缩隐向量 复原为原始KV矩阵;


MLA 模块架构图

具体的Attention计算推导过程可以参考: MLA的推导细节


2.2 训练推理核心技术



2.2.1 训练框架HAI-LLM 

DeepSeek-V3在一个配备了2048个NVIDIA H800 GPU的集群上进行训练,使用的是自研的HAI-LLM框架, 框架实现了四种并行训练方式: ZeRO 支持的数据并行、流水线并行、张量切片模型并行和序列并行

这种并行能力支持不同工作负载的需求,可以支持数万亿规模的超大模型并扩展到数千个 GPU,同时还自研了一些配套的高性能算子haiscale,可以帮助 HAI-LLM 极大优化大模型训练的显存效率和计算效率。


2.2.2 核心算法DualPipe-创新流水线并行算法

i. 通信计算重叠优化

DeepSeek-V3应用了16路流水线并行(PP),跨越8个节点的64路专家并行(EP),以及ZeRO-1数据并行(DP)。

与现有的流水线并行方法相比, DualPipe的流水线气泡更少。 同时 重叠了前向和后向过程中的计算和通信阶段,解决了跨节点专家并行引入的沉重通信开销的挑战。

DualPipe的关键思想是 重叠一对单独的前向和后向块中的计算和通信 :将每个块划分为四个组件:注意力、all-all调度、MLP和all-all组合

例如,假设我们有两个计算块,A和B:

1. 在块A进行前向传播计算时,可以同时进行块B的后向传播通信过程。

2. 当块A完成前向传播计算后,开始它的通信过程;而块B则开始它的前向传播计算。






通过优化排列这些功能模块,并精确调控用于通信和计算的 GPU SM资源分配比例,系统能够在运行过程中有效隐藏全节点通信和 PP 通信开销。
可以看出DeepSeek在PP这块,做了大量的通信计算重叠优化,从技术报告中看出,即使是细粒度的all-all专家通信,all-all的通信开销几乎为0。




计算通信重叠
在深度学习大规模分布式训练过程中,通信的速度往往落后于计算的速度,如何在通信的gap期间内并行做一些计算就是高性能计算和通信重叠,是实现高效训练的关键因素。
流水线并行气泡问题
一些大的模型会采用流水线并行策略,将模型的不同层放在不同的GPU上,但是不同层之间有依赖关系,后面层需要等前面的计算完才能开始计算,会导致GPU在一段时间是闲置的,如下图所示:


ii. 跨节点全对全通信
DeepSeek还专门定制了高效的跨节点all-all通信内核(包括调度和组合)。
具体来说:跨节点 GPU 通过 IB 完全互连,节点内通信通过 NVLink 处理,每个Token最多调度到 4 个节点,从而减少 IB 通信量。同时 使用warp专业化技术做调度和组合的优化



在调度过程中,(1) IB 发送,(2) IB 到 NVLink 转发,以及 (3) NVLink 接收分别由各自的 warp 处理。分配给每个通信任务的 warp 数会根据所有 SM 上的实际工作负载动态调整。

在合并过程中,(1) NVLink 发送,(2) NVLink 到 IB 的转发和累积,以及 (3) IB 接收和累积也由动态调整的 warp 处理。






请到「今天看啥」查看全文