当前位置: 首页 > article >正文

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)单层级(仅下一个令牌)
参数共享嵌入层、输出头与主模型共享无共享
训练目标多损失加权优化单一交叉熵损失
推理灵活性支持推测解码加速仅自回归生成

相关文章:

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

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

【PostgreSQL】pg各版本选用取舍逻辑与docker安装postgres:15

企业常用 PostgreSQL 版本推荐 1. PostgreSQL 14(最常见,稳定) 目前许多企业仍在使用 PostgreSQL 14,因为它在性能、并发处理、JSON 支持等方面做了较多优化,同时又非常稳定。官方支持时间:2026 年 11 月…...

Python----计算机视觉处理(Opencv:图像亮度变换)

一、图像亮度变换 亮度调整:图像像素强度整体变高或者变低。 对比度调整:图像暗处像素强度变低,图像亮处像素强度变高,从而拉大中间某个区域范围的显示精 度。 A:原图 …...

无人机动平衡-如何在螺旋桨上添加或移除材料

平衡无人机螺旋桨是一项精细的工作,直接影响飞行稳定性和组件寿命。不同的方法适用于不同的情况,螺旋桨的材料和尺寸以及所需调整的幅度都会影响选择的方法。 本文将深入探讨添加如胶水和胶带等材料的方法,以及通过打磨和修剪来移除质量的方…...

基于python的租房网站-房屋出租租赁系统(python+django+vue)源码+运行步骤

该项目是基于python/django/vue开发的房屋租赁系统/租房平台,作为本学期的课程作业作品。欢迎大家提出宝贵建议。给师弟开发的课程作业,技术学习可以留言哦 功能介绍 平台采用B/S结构,后端采用主流的PythonDjango进行开发,前端采…...

C++ 的 if-constexpr

1 if-constexpr 语法 1.1 基本语法 ​ if-constexpr 语法是 C 17 引入的新语法特性,也被称为常量 if 表达式或静态 if(static if)。引入这个语言特性的目的是将 C 在编译期计算和求值的能力进一步扩展,更方便地实现编译期的分支…...

涨薪技术|k8s设计原理

01k8s介绍 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化 工作负载和服务,有助于实现声明性配置和自动化。它有一个庞大、快速增长的生态系统。Kubernetes 服务、支持和工具广泛可用。Kubernetes 这个名字起源于希腊语,意思是舵…...

基于FPGA的16QAM+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 16QAM调制解调原理 2.2 帧同步 3.Verilog核心程序 4.完整算法代码文件获得 1.算法仿真效果 vivado2019.2仿真结果如下(完整代码运行后无水印): 设置SNR12db 将FPGA数据导入到MATLAB显…...

QuecPython 外设接口之GPIO应用指南

基础知识 了解GPIO基础知识更有益于我们使用它。 框图 GPIO(通用输入输出)是指一种通用的数字输入/输出接口,用于与外部电子元件或设备进行通信。它通常存在于微处理器、微控制器和其他嵌入式系统中。 物理电路结构如下图所示&#xff1a…...

Spring Boot 整合 Nacos 注册中心终极指南

在微服务架构中,配置管理和动态路由是核心需求。Nacos 作为阿里巴巴开源的动态服务发现、配置管理和服务管理平台,能够帮助开发者实现配置热更新、多环境共享配置以及动态路由管理。本文将结合 Spring Boot 和 Spring Cloud Gateway,手把手教…...

清晰易懂的 Maven 彻底卸载与清理教程

一、Windows 系统卸载 Maven 步骤 1:删除 Maven 安装目录 找到 Maven 的安装路径(默认可能为 C:\Program Files\apache-maven-3.x.x 或自定义路径)。直接删除整个 Maven 文件夹(如 apache-maven-3.x.x)。 步骤 2&am…...

光流 | 基于KLT算法的人脸检测与跟踪原理及公式,算法改进,matlab代码

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 人脸检测与跟踪 一、KLT算法原理与分析1. 核心思想2. 数学模型二、人脸…...

Spring MVC请求与响应全解析:从参数绑定到异常处理

文章目录 一、请求映射的艺术:RequestMapping深度解析1. 多级路径配置2. 六大核心属性3. RESTful风格实践 二、参数绑定黑科技1. 智能绑定机制基础类型绑定对象嵌套绑定集合类型绑定 2. 参数处理三剑客 三、响应处理全攻略1. 视图跳转三种模式2. JSON交互实践 四、文…...

用免费的github的key调用gpt实现一个简单的rag自动打分评测系统,不用任何框架

1.环境准备 !pip install pymupdf numpy openai 2.导入依赖 import fitz import os import numpy as np import json from openai import OpenAI 3.pdf提取文本 def extract_text_from_pdf(pdf_path):"""从 PDF 文件中提取文本内容。参数:pdf_path (str): …...

SQLServer列转行操作及union all用法

1.创建测试表及数据sql如下 create table ScoresTable( Name varchar(50), ChineseScore int, MathScore int ) insert into ScoresTable values(小张,90,95) insert into ScoresTable values(小王,98,99) 2.表中查询结果如下 3.现需列转行显示,每行显示 姓名…...

深度学习框架PyTorch——从入门到精通(6.2)自动微分机制

本节自动微分机制是上一节自动微分的扩展内容 自动微分是如何记录运算历史的保存张量 非可微函数的梯度在本地设置禁用梯度计算设置requires_grad梯度模式(Grad Modes)默认模式(梯度模式)无梯度模式推理模式评估模式(n…...

Java面试10个“隐藏考点”

1. Java模块化系统(JPMS)的requires transitive作用 问题:如何在模块化项目中传递依赖? 解析: ​**requires transitive**:声明模块的依赖可被下游模块隐式继承。​示例:模块A依赖模块B并添加…...

【GL010】C++

1.C中的const关键字有哪些用法? 1.修饰变量:表示变量的值不可修改。 const int a 10; 2.修饰指针: const int* p: // 指针指向的内容不可修改。 int* const p: // 指针本身不可修改。 const int* const…...

(Arxiv-2025)MagicDistillation:用于大规模人像少步合成的弱到强视频蒸馏

MagicDistillation:用于大规模人像少步合成的弱到强视频蒸馏 paper是HKUST发布在Arxiv 2025的工作 paper title:MagicDistillation: Weak-to-Strong Video Distillation for Large-Scale Portrait Few-Step Synthesis Project page:地址 Abst…...

Linux paste命令

目录 一. 简介二. 基本语法三. 小案例 一. 简介 paste 命令用于合并多个文件的行&#xff0c;按列方式输出&#xff0c;默认以制表符&#xff08;Tab&#xff09;分隔。 ⏹基本语法 paste [选项] 文件1 文件2 ...二. 基本语法 <()的方式模拟文件流paste命令将2个文件流粘…...

大模型金融企业场景落地应用

一、商业银行体系 1. 江苏银行 企业背景&#xff1a;江苏银行是总部位于江苏南京的全国性股份制商业银行&#xff0c;在城商行中资产规模位居前列&#xff0c;积极拥抱金融科技&#xff0c;将数字化转型作为核心战略之一。近年来&#xff0c;江苏银行持续加大在人工智能、大数…...

Excel(进阶篇):powerquery详解、PowerQuery的各种用法,逆透视表格、双行表头如何制作透视表、不规则数据如何制作数据透视表

目录 PowerQuery工具基础修改现有数据理规则PowerQuery抓取数据的两种方式多文件合并透视不同表结构多表追加数据透视追加与合并整理横向表格:逆透视 数据用拆分工具整理数据算账龄 不等步长值组合合并文件夹中所有文件PowerQuery处理CSV文件双行表头、带合并单元格如何做数据…...

神经网络解决非线性二分类

这份 Python 代码实现了一个简单的神经网络&#xff0c;用于解决复杂的非线性二分类问题。具体步骤包含生成数据集、定义神经网络模型、训练模型、测试模型以及可视化决策边界。 依赖库说明 python import numpy as np import matplotlib.pyplot as plt from sklearn.datase…...

CentOS 8.2 上安装 JDK 17 和 Nginx

AI越来越火了&#xff0c;我们想要不被淘汰就得主动拥抱。推荐一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站 一、安装 JDK 17 1. 使用 dnf 安装&#xff08;推荐&#xff09…...

Python 爬虫(4)HTTP协议

文章目录 一、HTTP协议1、HTTP特点2、HTTP工作原理3、HTTP与HTTPS的区别 前言&#xff1a; HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最为广泛的一种网络协议&#xff0c;用于在客户端和服务器之间传输超文本&#xf…...

Simple-BEV的bilinear_sample 作为view_transformer的解析,核心是3D-2D关联点生成

文件路径models/view_transformers 父类 是class BiLinearSample(nn.Module)基于https://github.com/aharley/simple_bev。 函数解析 函数bev_coord_to_feature_coord的功能 将鸟瞰图3D坐标通过多相机&#xff08;针孔/鱼眼&#xff09;内外参投影到图像特征平面&#xff0…...

Midscene.js自然语言驱动的网页自动化全指南

一、概述 网页自动化在数据抓取、UI 测试和业务流程优化中发挥着重要作用。然而&#xff0c;传统工具如 Selenium 和 Puppeteer 要求用户具备编程技能&#xff0c;编写复杂的选择器和脚本维护成本高昂。Midscene.js 通过自然语言接口革新了这一领域&#xff0c;用户只需描述任…...

同一个局域网的话 如何访问另一台电脑的ip

在局域网内访问另一台电脑&#xff0c;可以通过以下几种常见的方法来实现&#xff1a; ‌直接通过IP地址访问‌&#xff1a; 首先&#xff0c;确保两台电脑都连接在同一个局域网内。获取目标电脑的IP地址&#xff0c;这可以通过在目标电脑上打开命令提示符&#xff08;Windows系…...

基于SpringBoot的名著阅读网站

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

Excel(实战):INDEX函数和MATCH函数、INDEX函数实战题

目录 经典用法两者嵌套查值题目解题分析 INDEX巧妙用法让数组公式&#xff0c;自动填充所有、有数据的行/列INDEX函数和SEQUENCE函数 经典用法两者嵌套查值 题目 根据左表查询这三个人的所有数据 解题分析 INDEX函数的参数&#xff1a;第1个参数是选定查找范围&#xff0c…...