DeepSeek-V3 的核心技术创新

news2025/2/12 5:09:39

DeepSeek-V3 的核心技术创新

flyfish

DeepSeek-V3 的核心技术创新主要体现在其架构设计和训练目标上,通过 多头潜在注意力(MLA)DeepSeekMoE 架构无辅助损失的负载均衡策略多 Token 预测训练目标(MTP)
请添加图片描述

请添加图片描述

1. 多头潜在注意力(Multi-head Latent Attention, MLA)

MLA 是一种改进的注意力机制,旨在减少推理时的显存占用并提升效率。其核心原理是通过 低秩压缩技术 对键(Key)和值(Value)进行联合压缩:

  • KV 缓存优化:传统 Transformer 的 KV 缓存需存储所有历史键值对,显存占用随序列长度线性增长。MLA 通过低秩矩阵将键值投影到更低维度的潜在空间,减少缓存数据量。例如,键值压缩维度从 7168 降至 512,显存占用减少约 75%。
  • 计算效率提升:MLA 在保持与标准多头注意力(MHA)相似性能的同时,减少了推理时的计算量,尤其适合长序列任务(如 128K 上下文窗口)。

2. DeepSeekMoE 架构

DeepSeekMoE 是一种混合专家(Mixture-of-Experts, MoE)架构,结合了共享专家与路由专家,实现了细粒度的计算分配:

  • 专家分配策略:每个 MoE 层包含 1 个共享专家256 个路由专家,每个 Token 激活 8 个专家。共享专家处理通用特征,路由专家专注于特定模式,提升模型表达能力。
  • 经济高效的训练:通过动态路由策略,仅激活部分专家(如每个 Token 激活 37B 参数),大幅降低计算成本,使 671B 参数的模型训练成本仅为同类模型的 1/14。

3. 无辅助损失的负载均衡策略

传统 MoE 模型依赖辅助损失函数强制均衡专家负载,但可能导致模型性能下降。DeepSeek-V3 创新性地通过动态调整实现负载均衡:

  • 动态偏置调整:在路由过程中引入可学习的偏置项,根据专家负载动态调整路由决策。例如,当某专家负载过高时,降低其亲和分数,使 Token 更倾向于负载较低的专家。
  • 序列级均衡:额外引入序列级负载均衡损失,避免单个序列内的极端不平衡。实验表明,该策略在多数基准测试中优于传统方法,且不损害模型性能。

4. 多 Token 预测训练目标(MTP)

MTP 扩展了传统语言模型的单 Token 预测目标,要求模型同时预测多个未来 Token:

  • 训练目标设计:每个位置预测未来多个 Token(如 4 个),通过多个顺序模块实现因果链的完整性。例如,第 (i) 个模块基于当前 Token 预测第 (i+1) 至 (i+n) 个 Token。
  • 推理加速:MTP 模块支持 推测解码(Speculative Decoding),通过并行预测多个 Token 减少生成步骤,使推理速度提升 1.8 倍。
  • 性能提升:MTP 提高了训练信号的密度,增强模型对长程依赖的捕捉能力,尤其在代码和数学任务中表现显著。

技术协同与综合效果

这些技术通过 架构与训练的深度协同 实现突破:

  • FP8 混合精度训练:结合低精度计算(FP8)与高精度累加(FP32),在保持数值稳定性的同时降低显存占用。
  • 并行训练优化:采用 16 路流水线并行、64 路专家并行和 ZeRO-1 数据并行,结合 DualPipe 算法减少通信开销,提升训练效率。
  • 长上下文扩展:通过 YaRN 技术分阶段扩展上下文至 128K,在长文本任务中保持高性能。

FIM策略

FIM策略是指Prefix-Suffix-Middle(PSM)框架下的数据构造策略,全称为Fill-in-Middle策略。该策略应用于DeepSeek-V3模型的预训练过程,目的是让模型能够基于上下文线索准确预测中间文本,同时不影响其下一个令牌的预测能力。

  1. 具体内容:在数据构造时,FIM策略将数据结构化表示为<|fim_begin|> 𝑓pre<|fim_hole|> 𝑓suf<|fim_end|> 𝑓middle<|eos_token|>的形式。在文档层面的预打包过程中,按照0.1的比例应用该策略 ,即10%的数据采用这种结构进行处理。在这个结构中, 𝑓pre和 𝑓suf分别表示前缀和后缀文本, 𝑓middle表示需要模型根据上下文预测的中间文本。
  2. 应用效果:在DeepSeekCoder-V2的训练过程中,就观察到FIM策略不会损害模型的下一个令牌预测能力,还能使模型依据上下文准确预测中间文本。DeepSeek-V3沿用该策略后,在预训练阶段取得了良好的效果,有助于提升模型对文本的理解和生成能力,从而在后续的任务中表现更优。

无辅助损失的负载均衡策略

无辅助损失的负载均衡策略是DeepSeek-V3为解决MoE模型负载不均衡问题提出的创新方法,通过动态调整专家路由偏置平衡负载,避免传统辅助损失带来的性能下降。

  1. 提出背景:在MoE模型里,若专家负载不均衡,会出现路由崩溃,在专家并行场景下降低计算效率。传统方法借助辅助损失来平衡负载,但辅助损失过大会损害模型性能。
  2. 实现方式:为每个专家引入可学习的偏置项 b i b_{i} bi ,把它加到token与专家的亲和度得分 s i , t s_{i,t} si,t上,以此确定Top-K路由 。即 g i , t ′ = { s i , t , s i , t + b i ∈ T o p k ( { s j , t + b j ∣ 1 ≤ j ≤ N r } , K r ) 0 , o t h e r w i s e g_{i, t}'=\begin{cases}s_{i, t}, & s_{i, t}+b_{i} \in Topk(\{s_{j, t}+b_{j} | 1 \leq j \leq N_{r}\}, K_{r})\\0, & otherwise\end{cases} gi,t={si,t,0,si,t+biTopk({sj,t+bj∣1jNr},Kr)otherwise。训练时,持续监控每个训练步骤中整个批次的专家负载。若专家负载过高,就减小其偏置项;若负载过低,则增大偏置项。偏置项仅用于路由,门控值仍由原始亲和度得分计算。
  3. 优势效果:避免了因使用辅助损失而导致的性能下降,在保持负载均衡的同时,提升了模型性能。实验显示,相比仅用辅助损失平衡负载的模型,该策略能让专家负载更均匀,训练效率和推理性能也得到提高 。如在不同规模模型的实验中,采用无辅助损失负载均衡策略的模型在多数评估基准上表现更优。

Multi - Token Prediction

MTP指Multi - Token Prediction,是一种扩展预测范围的训练目标和技术,能提升模型性能并加速推理。

  1. 定义:MTP是一种在自然语言处理(NLP)任务中,扩展模型预测范围的训练目标和技术。与传统的单一token预测不同,它让模型在训练时同时预测多个未来的token,在一个时间步上,模型可以预测未来2个、3个或更多token,通过一次前向计算得到多个token的概率分布。
  2. 原理
    • 提高上下文感知能力:传统单token预测只关注当前上下文与下一个token的关系,而MTP使模型必须从更大范围的上下文中提取信息,对语言模式的学习更加全面,生成的句子更流畅且符合语义逻辑。
    • 增加训练信号的密度:单token预测每个时间步只提供一个训练信号,MTP在每个时间步上提供多个token的训练信号,使模型在相同训练迭代下能更快地学到语言结构,提高训练效率。
    • 改进序列建模的效率:MTP的目标更接近实际生成任务,能让模型更好地学习到多token的联合分布,而传统单token预测可能导致模型局限于逐步生成,MTP可提高建模性能。
  3. 运作机制
    • MTP模块:使用D个顺序模块来预测D个额外token。以第k个MTP模块为例,它由共享嵌入层Emb、共享输出头OutHead、一个Transformer块 T R M k ( ⋅ ) TRM_{k}(\cdot) TRMk()和投影矩阵 M k ∈ R d × 2 d M_{k} \in \mathbb{R}^{d ×2 d} MkRd×2d组成。对于第i个输入token t i t_{i} ti,在第k个预测深度,先将第i个token在第k - 1深度的表示 h i k − 1 h_{i}^{k - 1} hik1与第(i + k)个token的嵌入 E m b ( t i + k ) Emb(t_{i + k}) Emb(ti+k)通过线性投影组合,得到 h i ′ k h_{i}^{\prime k} hik h i ′ k h_{i}^{\prime k} hik作为第k深度Transformer块的输入,产生当前深度的输出表示 h i k h_{i}^{k} hik,最后共享输出头以 h i k h_{i}^{k} hik为输入,计算第k个额外预测token的概率分布 P i + 1 + k k P_{i + 1 + k}^{k} Pi+1+kk
    • MTP训练目标:对每个预测深度,计算交叉熵损失 L M T P k L_{MTP }^{k} LMTPk ,最后计算所有深度MTP损失的平均值,并乘以加权因子λ得到总体MTP损失 L M T P L_{MTP } LMTP,作为DeepSeek - V3的额外训练目标。
    • MTP在推理中的应用:MTP策略主要用于提高主模型性能,推理时可直接丢弃MTP模块,主模型能独立正常运行。也可将MTP模块用于推测式解码,模型一次性生成多个token的候选结果,通过某种机制验证和修正这些候选结果,若候选token验证通过则直接使用,从而跳过若干步推理,显著加速推理过程。

Multi-head Latent Attention(MLA)

Multi-head Latent Attention(MLA)是DeepSeek-V3中采用的创新注意力机制,旨在降低推理时的显存占用和计算开销,同时保持模型性能。

  1. 定义:MLA是一种应用于DeepSeek-V3模型的创新注意力机制,通过对注意力中的键(Key)和值(Value)进行低秩联合压缩,减少推理时的Key-Value(KV)缓存,进而降低显存占用和计算开销 ,同时保证模型性能不下降。
  2. 原理
    • 低秩联合压缩:传统多头注意力(MHA)需保存完整的Key和Value缓存,限制了batch size和序列长度。MLA通过低秩分解对注意力的Key和Value进行联合压缩,核心是将注意力输入 h t h_{t} ht通过下投影矩阵 W D K V W^{D K V} WDKV压缩成低维的 c t K V c_{t}^{K V} ctKV ,再通过上投影矩阵 W U K W^{U K} WUK W U V W^{U V} WUV分别得到用于注意力计算的键 k t , i k_{t, i} kt,i和值 v t , i C v_{t, i}^{C} vt,iC 。推理时,仅需缓存 c t K V c_{t}^{K V} ctKV和携带位置信息的 k t R k_{t}^{R} ktR,大幅减少了缓存占用 。
    • 查询的低秩压缩:为减少训练时激活函数的内存占用,MLA对查询(queries)也进行低秩压缩。将查询输入 h t h_{t} ht通过下投影矩阵 W D Q W^{D Q} WDQ压缩得到 c t Q c_{t}^{Q} ctQ ,再经上投影矩阵 W U Q W^{U Q} WUQ W Q R W^{Q R} WQR得到用于注意力计算的查询 q t , i q_{t, i} qt,i
    • 解耦Rotary Positional Embedding (RoPE):传统RoPE对Q和K分别应用位置编码,低秩分解KV后矩阵运算的交换律问题会使计算复杂。MLA新增独立维度保存位置信息,通过额外的多头queries( q t , i R q_{t, i}^{R} qt,iR)和共享的键( k t R k_{t}^{R} ktR)来支撑RoPE ,将RoPE的计算与低秩压缩解耦,既保留位置感知能力,又避免额外计算开销。
  3. 运作机制
    • 压缩与投影:输入的每个token的特征首先被压缩成低维潜在向量,如 c t K V c_{t}^{K V} ctKV c t Q c_{t}^{Q} ctQ ,然后通过特定的投影矩阵扩展到各个注意力头所需的键、值和查询空间。
    • 注意力计算:计算注意力时,利用压缩后的查询 q t , i q_{t, i} qt,i、键 k j , i k_{j, i} kj,i和值 v j , i C v_{j, i}^{C} vj,iC ,按照传统注意力机制的方式计算注意力得分并加权求和,得到每个头的注意力输出 o t , i o_{t, i} ot,i 。公式为 o t , i = ∑ j = 1 t S o f t m a x j ( q t , i T k j , i d h + d h R ) v j , i C o_{t, i}=\sum_{j = 1}^{t} Softmax_{j}(\frac{q_{t, i}^{T}k_{j, i}}{\sqrt{d_{h}+d_{h}^{R}}})v_{j, i}^{C} ot,i=j=1tSoftmaxj(dh+dhR qt,iTkj,i)vj,iC
    • 输出融合:将多个头的注意力输出 o t , i o_{t, i} ot,i进行拼接,再通过输出投影矩阵 W O W^{O} WO得到最终的注意力输出 u t u_{t} ut ,公式为 u t = W O [ o t , 1 ; o t , 2 ; . . . ; o t , n h ] u_{t}=W^{O}[o_{t, 1}; o_{t, 2};... ; o_{t, n_{h}}] ut=WO[ot,1;ot,2;...;ot,nh]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Elasticsearch】监控与管理:集群监控指标

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

鸿蒙接入支付宝SDK后模拟器无法运行,报错error: install parse native so failed.

鸿蒙项目接入支付宝后&#xff0c;运行提示error: install parse native so failed. 该问题可能由于设备支持的 Abi 类型与 C 工程中的不匹配导致. 官网error: install parse native so failed.错误解决办法 根据官网提示在模块build-profile.json5中添加“x86_64”依然报错 问…

react redux用法学习

参考资料&#xff1a; https://www.bilibili.com/video/BV1ZB4y1Z7o8 https://cn.redux.js.org/tutorials/essentials/part-5-async-logic AI工具&#xff1a;deepseek&#xff0c;通义灵码 第一天 安装相关依赖&#xff1a; 使用redux的中间件&#xff1a; npm i react-redu…

【Matlab优化算法-第13期】基于多目标优化算法的水库流量调度

一、前言 水库流量优化是水资源管理中的一个重要环节&#xff0c;通过合理调度水库流量&#xff0c;可以有效平衡防洪、发电和水资源利用等多方面的需求。本文将介绍一个水库流量优化模型&#xff0c;包括其约束条件、目标函数以及应用场景。 二、模型概述 水库流量优化模型…

Redis 集群(Cluster)和基础的操作 部署实操篇

三主三从 集群概念 Redis 的哨兵模式&#xff0c;提高了系统的可用性&#xff0c;但是正在用来存储数据的还是 master 和 slave 节点&#xff0c;所有的数据都需要存储在单个 master 和 salve 节点中。 如果数据量很大&#xff0c;接近超出了 master / slave 所在机器的物理内…

[2025年最新]2024.3版本idea无法安装插件问题解决

背景 随着大模型的持续发展&#xff0c;特别年前年后deepseek的优异表现&#xff0c;编程过程中&#xff0c;需要解决ai来辅助编程&#xff0c;因此需要安装一些大模型插件 问题描述 在线安装插件的时候会遇到以下问题&#xff1a; 1.数据一直在加载&#xff0c;加载的很满 2.点…

elasticsearch安装插件analysis-ik分词器(深度研究docker内elasticsearch安装插件的位置)

最近在学习使用elasticsearch&#xff0c;但是在安装插件ik的时候遇到许多问题。 所以在这里开始对elasticsearch做一个深度的研究。 首先提供如下链接&#xff1a; https://github.com/infinilabs/analysis-ik/releases 我们下载elasticsearch-7-17-2的Linux x86_64版本 …

【Unity3D】UGUI的anchoredPosition锚点坐标

本文直接以实战去理解锚点坐标&#xff0c;围绕着将一个UI移动到另一个UI位置的需求进行说明。 &#xff08;anchoredPosition&#xff09;UI锚点坐标&#xff0c;它是UI物体的中心点坐标&#xff0c;以UI物体锚点为中心的坐标系得来&#xff0c;UI锚点坐标受锚点(Anchors Min…

C++多态性之包含多态(一)—学习记录

一、C的包含多态 面向对象程序设计的四大特点为抽象、封装、继承和多态&#xff0c;其中&#xff0c;多态性可以提高代码的可拓展性和可维护性。 多态是指同样的消息被不同类型的对象接收时导致不同的行为。所谓消息是指对类的成员函数的调用&#xff0c;不同的行为是指不同的实…

KERL文献阅读分享:知识图谱与预训练语言模型赋能会话推荐系统

标题期刊年份Knowledge Graphs and Pre-trained Language Models enhanced Representation Learning for Conversational Recommender SystemsJournal of LaTeX Class Files2021 &#x1f4c8;研究背景 在数字时代&#xff0c;个性化推荐系统已经成为了我们生活的一部分。从电…

从零开始:使用Jenkins实现高效自动化部署

在这篇文章中我们将深入探讨如何通过Jenkins构建高效的自动化部署流水线&#xff0c;帮助团队实现从代码提交到生产环境部署的全流程自动化。无论你是Jenkins新手还是有一定经验的开发者&#xff0c;这篇文章都会为你提供实用的技巧和最佳实践&#xff0c;助你在项目部署中走得…

hive的几种复杂数据类型

Hive的几种复杂数据类型 Hive 提供了几种复杂数据类型&#xff0c;能够支持更灵活和多样的数据存储。这些复杂数据类型对于处理嵌套数据或不规则数据特别有用。主要包括以下几种&#xff1a; 文章目录 Hive的几种复杂数据类型1. 数组&#xff08;ARRAY&#xff09;2. 结构体&a…

序列化/反序列化与TCP通信协议

深入理解序列化/反序列化与TCP通信协议 一、序列化与反序列化 1.1 基本概念 序列化&#xff08;Serialization&#xff09;: 将数据结构或对象状态转换为可存储/传输格式的过程反序列化&#xff08;Deserialization&#xff09;: 将序列化后的数据恢复为原始数据结构的过程 …

Ollama 本地部署 体验 deepseek

下载安装ollama,选择模型 进行部署 # 管理员命令行 执行 ollama run deepseek-r1:70b浏览器访问http://ip:11434/ 返回 Ollama is runninghttp://ip:11434/v1/models 返回当前部署的模型数据 下载安装CherryStudio&#xff0c;本地对话UI 客户端 在设置中 修改API地址&#x…

Linux探秘坊-------4.进度条小程序

1.缓冲区 #include <stdio.h> int main() {printf("hello bite!");sleep(2);return 0; }执行此代码后&#xff0c;会 先停顿两秒&#xff0c;再打印出hello bite&#xff0c;但是明明打印在sleep前面&#xff0c;为什么会后打印呢&#xff1f; 因为&#xff…

postgreSQL16.6源码安装

1.获取源码 从PostgreSQL: File Browser获取tar.bz2或者tar.gz源码 2.解压 tar xf postgresql-version.tar.bz2 roothwz-VMware-Virtual-Platform:/usr/local# tar xf postgresql-16.6.tar.bz2 roothwz-VMware-Virtual-Platform:/usr/local# ll 总计 24324 drwxr-xr-x 12 ro…

树莓派上 基于Opencv 实现人脸检测与人脸识别

一&#xff0c;需求 基于树莓派4b&#xff0c;usb1080p摄像头&#xff0c;实现人脸检测与人脸识别。尝试了海陵科的模组和百度的sdk。海陵科的模组无法录入人脸&#xff0c;浪费了100多块钱。百度的sdk 在树莓派上也无法录入人脸&#xff0c;官方解决不了。最后只能用opencv自…

mac下dify+deepseek部署,实现私人知识库

目前deepseek 十分火爆&#xff0c;本地部署实现私有知识库&#xff0c;帮助自己日常工作&#xff0c;上一篇使用工具cherry studio可以做到私人知识库。今天学习了一下&#xff0c;使用Dify链接deepseek&#xff0c;实现私人知识库&#xff0c;也非常不错&#xff0c;这里分享…

CSS 实现下拉菜单效果实例解析

1. 引言 在 Web 开发过程中&#xff0c;下拉菜单是一种常见且十分实用的交互组件。很多前端教程都提供过简单的下拉菜单示例&#xff0c;本文将以一个简洁的实例为出发点&#xff0c;从 HTML 结构、CSS 样式以及整体交互逻辑三个层面进行详细解析&#xff0c;帮助大家理解纯 C…

x64、aarch64、arm与RISC-V64:详解四种处理器架构

x64、aarch64、arm与RISC-V64:详解四种处理器架构 x64架构aarch64架构ARM架构RISC-V64架构总结与展望在计算机科学领域,处理器架构是构建计算机系统的基石,它决定了计算机如何执行指令、管理内存和处理数据。x64、aarch64、arm与RISC-V64是当前主流的四种处理器架构,它们在…