DeepSeek面试——模型架构和主要创新点

本文将介绍DeepSeek的模型架构多头潜在注意力(MLA)技术,混合专家(MoE)架构, 无辅助损失负载均衡技术,多Token 预测(MTP)策略。

一、模型架构

DeepSeek-R1的基本架构沿用了DeepSeek-V3 的架构。其特点是多头潜在注意力 (MLA) 用于高效推理,混合专家模型(MoE)用于经济训练,多标记预测 (MTP) 提高评估基准的整体性能,辅助无损失负载均衡策略来减轻因确保负载平衡而引起的性能下降。其中前两个是DeepSeekV2使用并验证效果,后两个是DeepSeekV3提出。

总的来说,DeepSeek-R1 是一种改进的Transform 架构,其中每个Transform块由一个Attention模块和一个FFN组成。然而,对于Attention和 FFN,DeepSeek设计并采用了新的架构。针对注意力设计了 MLA,支持高效推理。针对 FFN采用高性能DeepSeekMoE 架构,能够以经济成本训练强大模型的架构。DeepSeek 的架构如下图所示:

二、MLA

多头潜在注意力MLA(Multi-Head Latent Attention)如上图右下角,核心原理是利用低秩KV联合压缩来消除推理时间键值缓存和计算量

其实现步骤可以看成三步:

第一步:输入映射到低秩潜在空间,输入h_{t}分别乘以QKV的低秩权重矩阵得到c_{t}^{Q}c_{t}^{KV}此时矩阵的秩远远小于h_{t}的秩。类似下图,利用矩阵乘法将输入映射到潜在空间,实现低秩压缩。

同时对输入h_{t}c_{t}^{Q}乘以携带旋转位置编码(RoPE)的解耦键的矩阵;apply RoPE表示应用 RoPE 矩阵的操作;多个框层叠在一起表示计算i次后拼接。需要注意的是,对于 MLA,在生成过程中仅需缓存c_{t}^{KV}k_{t}^{R},这在保持与标准多头注意力(MHA)相当性能的同时,显著减少了键值(KV)缓存量。

第二步:潜在空间中的多头注意力计算

在潜在空间上进行Multi head attention计算。

第三步:映射回原始空间

第一步的反向操作,将低秩潜在空间映射回原始空间

MLA的优势

1. 性能保持:MLA通过低秩压缩减少了KV缓存和激活内存,但仍然能够保持与标准多头注意力(MHA)相当的性能。

2. 效率提升:通过在低维潜在空间中执行注意力计算,复杂度由O(n2d) 降至 O(n2k),在推理过程中,MLA只需要缓存压缩后的键和值,显著减少了内存占用,有效降低复杂度。

3. 旋转位置嵌入(RoPE):RoPE通过旋转操作将位置信息嵌入到键和查询中,有效处理了长序列中的位置依赖问题,使得模型能够更好地捕捉长距离依赖关系。

三、MOE

混合专家架构MOE(Mixture-of-Experts)首次出现于1991年的论文Adaptive Mixture of Local Experts中。DeepSeekMoE中包含 2048 个领域专家模型,通过门控网络动态分配查询请求。与 传统 FFN 架构相比,DeepSeekMoE 使用更细粒度的专家,并将一些专家隔离为共享专家。

共享专家(share experts)所有输入均参与计算,路由专家(routed experts)使用 sigmoid 函数计算亲和分数,并对所有选中的亲和分数进行归一化以生成门控值。取门控制TopK的专家参与计算。

MoE的核心思想是“分而治之”,由多个专家组成,每个专家都是一个局部模型,专门处理输入空间的一个子集。MoE 使用门控网络来决定每个数据应该被哪个模型去训练,从而减轻不同类型样本之间的干扰,理想实现是某类数据由某类专家来判定结果。

MoE的优势:

1. 专家协作:能够处理不同输入数据中的共性特征,实现跨不同类型输入数据的知识共享,这有助于减少模型参数的冗余。而路由专家则专注于处理具有特定模式或特征的数据,从而提升模型对各种数据的适应性和处理效率。

2. 专家分配:引入了更为精细化的专家分配机制,使得门控网络能够更准确地分析输入数据的特征,并将其导向最匹配的专家,从而增强模型处理复杂数据的能力。

3. 专家激活:每个输入Token激活8个路由专家,这在确保模型处理效果的同时,有效避免了因过度激活专家而导致的计算资源浪费,从而提升了计算效率并降低了计算成本。

四、无辅助损失负载均衡技术

无辅助损失负载均衡技术(Auxiliary-Loss-Free Load Balancing)在MoE大模型训练过程中,输入会根据路由规则分配到不同的专家模型进行处理,这个过程中可能会出现负载不均衡的情况,即某些专家模型被频繁调用,而另一些专家模型则很少被使用,这会导致训练效率和模型性能下降。

常规解决方案通常依赖于辅助损失以避免负载不平衡,然而,过大的辅助损耗会损害模型性能。为了在负载均衡和模型性能之间实现更好的权衡,DeepSeek提出了一种辅助无损负载均衡策略来确保负载均衡。具体来说,为每个专家引入了可学习的一个偏差项B_{i},并且将其添加到相应专家的分数中。在训练过程中该偏置项会动态调整每个专家的匹配得分,基于得分和对各专家利用率的实时监测,动态调整路由策略,将输入Token分配给负载较低的专家。

即每个步骤结束时,如果相应的专家过载,则减少偏差项,如果相应的专家欠载,将增加偏差项。通过动态调整,DeepSeek在训练过程中保持平衡的专家负载,并取得了比通过纯辅助损失鼓励负载均衡的模型更好的性能。

序列平衡辅助损失(Complementary Sequence-Wise Auxiliary Loss)。虽然 DeepSeek-V3 主要依靠辅助无损失策略进行负载均衡,但为了防止任何单个序列内的极端不平衡,还采用了序列平衡损失。对序列中的每个 Token 进行精细化的分析和处理,根据 Token 在序列中的位置、上下文信息等更合理地分配到各个专家,序列平衡损失每个序列上的专家负载保持平衡。

五、MTP

多Token 预测MTP(Multi-Token Prediction)。包含主模型Main Model(基础的下一个令牌预测)和 D个顺序MTP模块MTP Module(扩展预测未来D个Token)。每个MTP模块由以下组件构成:
• 共享嵌入层(Embedding Layer):与主模型共用,减少参数冗余;
• 共享输出头(Output Head):与主模型共用输出层;
• 独立Transformer块(TRMₖ):每个模块有专属的Transformer块;
• 线性投影矩阵(Linear Projection):用于结合当前令牌表示与未来令牌嵌入;
• 均方根归一化(RMSNorm):替代传统LayerNorm,提升计算效率。

训练目标:每个MTP模块单独计算交叉熵损失L_{MTP},总损失为每个MTP模块损失的加权平均:

λ值调节:通过实验确定最优权重以平衡主模型与MTP模块的训练信号。最终使用L_{Main}+L_{MTP}作为最终损失函数。

优势:
训练阶段通过输入单个Token使用MTP的方式增加模型的学习能力,模型可以通过单Token得到多个平均后的损失,使模型增加单位数据的训练信号量,有利于模型稳定和加速收敛。

推理阶段可单独使用Main Model(丢弃MTP模块),保持常规生成能力。MTP模块仅作用于训练阶段,当然也可以用作推理阶段加速使用,不过要调整代码。

MTP和传统单Token预测区别

DeepSeek MTP传统单Token预测
预测深度多层级(D≥1)单层级(仅下一个令牌)
参数共享嵌入层、输出头与主模型共享无共享
训练目标多损失加权优化单一交叉熵损失
推理灵活性支持推测解码加速仅自回归生成

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

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

相关文章

基于HTML5的3D魔方项目开发实践

基于HTML5的3D魔方项目开发实践 这里写目录标题 基于HTML5的3D魔方项目开发实践项目概述核心技术实现1. 3D效果实现CSS3 3D变换魔方结构设计 2. 交互控制实现动画控制键盘控制触摸控制 技术难点与解决方案1. 3D变换控制2. 触摸体验优化3. 动画性能优化 项目收获总结项目展望 项…

23种设计模式-原型(Prototype)设计模式

原型设计模式 🚩什么是原型设计模式?🚩原型设计模式的特点🚩原型设计模式的结构🚩原型设计模式的优缺点🚩原型设计模式的Java实现🚩代码总结🚩总结 🚩什么是原型设计模式…

【MATLAB例程】交互式多模型(IMM),模型使用:CV,CT左转、CT右转,二维平面,三个模型的IMM,滤波使用EKF。订阅专栏后可查看代码

简单的介绍:本文所述的代码实现了一种基于交互多模型(IMM)算法的目标跟踪仿真,适用于复杂运动目标(如匀速、转弯运动)的状态估计。代码通过三个运动模型(匀速CV、左转弯CT1、右转弯CT2)的协同滤波,动态调整模型概率,最终输出综合跟踪结果。代码包含完整的仿真数据生成…

搭建私人对外git空间

# 创建用户,指定不可登录的 Shell(git-shell 或 /usr/sbin/nologin) sudo adduser --system --shell /usr/bin/git-shell --group git # 验证用户配置 grep git /etc/passwd # 预期输出:git:x:998:998::/home/git:/usr/bin/git-s…

PHP中yield关键字的使用

PHP版本>5.5 原理:yield关键字会生成一个Generator类的对象,PHP通过Generator实例计算出下一次迭代的值,再次返回一个Generator对象并停止循环(即循环一次执行一次)。 理解:使用在for/foreach/while循…

Vue3 实战:基于 mxGraph 与 WebSocket 的动态流程图构建

本文将详细介绍如何在 Vue3 项目中集成 mxGraph 可视化库,并通过 WebSocket 实现画布元素的实时更新。适合有 Vue 基础的前端开发者学习参考。 一、技术栈准备 Vue3:采用 Composition API 开发mxGraph:JavaScript 流程图库(版本 …

Linux目录及文件管理

目录 一.Linux目录基本结构 1.常见目录及其作用 二.常用文件处理命令 1.七类常见的linux的文件 2.cat(查看文件内容) 3.more(分页查看文件内容) 4.less(分页查看文件内容) 5.head(从头部查看文件内容&#xff0…

电机控制常见面试问题(二十)

文章目录 一.整流电路绕组接法二.电机为什么需要转速器三.电机转矩产生原理四.电机控制中载波频率大小的确定五.开关周期 Tpwm 一.整流电路绕组接法 为了引出直流的输出,一定要在整流变压器的二次侧引出零线,所以二次侧绕组必须接成星形 一次绕组必须要…

arm之s3c2440的I2C的用法

基础概念 IC(Inter-Integrated Circuit)又称I2C,是是IICBus简称,所以中文应该叫集成电路总线。 IIC的总线的使用场景,所有挂载在IIC总线上的设备都有两根信号线,一根是数据线SDA,另一 根是时钟…

MyBatis-Plus(Ⅲ)IService详解

目录 一、逐一演示 1.save(插入一条) 结果 断言(引入概念) 2.saveBatch(批量插入) 结果 3.saveOrUpdateBatch(批量插入&更新) 结果 4.removeById(通过id删除…

可视化图解算法:删除有序(排序)链表中重复的元素-II

1. 题目 描述 给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。 例如: 给出的链表为1→2→3→3→4→4→5, 返回1→2→5. 给出的链表为1→1→1→2→3 返回2→3. 数据范围:链表长度 0≤…

23种设计模式-中介者(Mediator)设计模式

中介者设计模式 🚩什么是中介者设计模式?🚩中介者设计模式的特点🚩中介者设计模式的结构🚩中介者设计模式的优缺点🚩中介者设计模式的Java实现🚩代码总结🚩总结 🚩什么是…

基于云服务器的数仓搭建-hive/spark安装

mysql本地安装 安装流程(内存占用200M,升至2.1G) # 将资料里mysql文件夹及里面所有内容上传到/opt/software/mysql目录下 mkdir /opt/software/mysql cd /opt/software/mysql/ # 待上传文件 install_mysql.sh mysql-community-client-8.0.3…

华为配置篇-ISIS基础实验

ISIS 一、简述二、常用命令总结三、实验 一、简述 一、基本定义与历史背景 IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是一种链路状态路由协议,最初由ISO设计用于OSI(开放系统互联&#…

Python 练习项目:MBTI 命令行测试工具

在当今数字化的时代,心理测试工具越来越受到欢迎,它们帮助人们更好地了解自己,做出更明智的职业选择,甚至改善人际关系。MBTI(迈尔斯-布里格斯性格分类法)是其中一种广为人知的人格测试,通过评估个人在四个维度上的偏好(外向-内向、实感-直觉、理智-情感、判断-理解),…

github使用

登录github,创建仓库(repository) 如创建一个ADXL345名字的私有仓库 git下载安装 打开git:鼠标右键,选择“Open Git Bash here”,进入 ⭐Git 和 GitHub 绑定 Git 获取SSH keys $ cd ~/.ssh #查看 …

如何在Windows上下载并配置GO语言环境变量

本章教程,主要介绍如何在Windows操作系统上,下载并配置GO语言环境变量。 Go(又称为Golang)是一种开源的编程语言,由Google开发,于2009年首次公开发布。它旨在提供简洁、高效、可靠的软件开发解决方案。Golang是一种静态强类型、编译型语言,Golang具有很强的表达能力,得…

【Linux网络(五)】传输层协议

目录 1、UDP协议 1.1、UDP报头 2、TCP协议 2.1、tcp协议段格式 2.2、TCP三次握手的过程 2.3、TCP四次挥手的过程 2.4、流量控制 2.5、滑动窗口 2.6、延迟应答 2.7、拥塞控制 2.8、面向字节流 2.9、数据粘包 2.10、TCP连接异常问题 1、UDP协议 学习目标&#xff1a…

第十二:josn 传递参数 shouldBindJSON 和结构体的 db字段

链接: Golang教程三(结构体、自定义数据类型,接口)_golang 自定义数据类型-CSDN博客 结构体指向 json 和数据库的 db type User struct { ID int json:"id" db:"user_id" Name string json:…

Retinexformer:基于 Retinex 的单阶段 Transformer 低光照图像增强方法

开头发点牢骚:本来做的好好都都要中期了,导师怎么突然给我换题目啊。真是绷不住了......又要从头开始学了,唉! 原论文链接:Retinexformer: One-stage Retinex-based Transformer for Low-light Image Enhancement 低光…