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

DeepSeek有什么技术创新?为什么这么火

本人认为此文无晦涩难懂的知识,加入《人人都要了解DeepSeek》系列--1

一.Deepseek v3模型产生影响的技术点之Pre-Training

小tips:

模型的训练分为pre-train预训练,和post-train后训练

预训练(Pre-train)是做什么?

1.学习通用语言知识:使用大规模的无监督数据,让模型学习语言的一般规律,如语法、语义、语言的逻辑结构等。例如,在大量的文本数据上进行训练,模型可以学会识别词语之间的搭配关系、句子的基本构成方式等。

2.提取特征表示:通过对海量数据的学习,模型能够自动提取出各种语言特征,形成一种通用的特征表示。这些特征可以捕捉到语言的深层次信息,为后续的具体任务处理提供基础。比如,模型可以学习到不同词语在语义空间中的分布情况,以及文本的主题特征等。

3.初始化模型参数:预训练过程会对模型的参数进行初步的优化和调整,得到一组较好的初始参数。这些初始参数可以使模型在后续针对具体任务的训练中,更快地收敛,提高训练效率,并且有助于模型在新任务上取得更好的性能。

4.降低过拟合风险:大规模的数据预训练可以让模型接触到丰富多样的语言现象,增强模型的泛化能力,使其在面对新的、未见过的数据时,能够更好地适应和处理,减少过拟合的可能性。

1.模型的数据情况:

v3预训练总训练token量:14.8T,提高数学和编程代码比例(有论文表明增加数学和代码的比例,会提高语言能力);

增加除中英外,多语言数据占比(v2中文比英文高12%)

这个数据是什么概念如果想对比下:

Qwen最新的开源模型的总训练量到达20T token左右

23年,llama开源一代总训练量只有2-3T

2.代码训练策略

大模型训练一般使用的策略是next-token-prediction,就是预测下一个token嘛,这很好理解。

从DeepSeekCoder-v2 提出:deepseek代码训练使用的是Fill-in-Middle(FIM)基于上文和下文预测中间部分文本,在整个代码数据中,有0.1比例使用这个方式。

3.训练长度:

模型在训练过程中能够处理的序列长度

4K->32K-->128K 阶段性各1000 steps学习

例如,当训练长度为 4K 时, 模型在处理文本时,每次能够处理 4096 个连续的 token, 这意味着模型可以考虑上下文窗口为 4096 个 token 的信息来进行学习和预测。当 训练长度提升到 32K 甚至 128K 时,模型能够处理的上下文信息就大大增加了。

二.Deepseek v3模型产生影响的技术点之Post-Training

微调(Post-train 或 Fine-tuning)是做什么?

1.适应特定任务:在预训练的基础上,使用特定任务的有标注数据对模型进行进一步训练,使模型能够适应具体的任务需求。例如,在情感分类任务中,使用带有积极或消极情感标签的文本数据对模型进行微调,让模型学会识别和判断文本中的情感倾向。

2.优化任务性能:通过微调,可以根据特定任务的目标和评价指标,对模型的参数进行更精细的调整,以提高模型在该任务上的性能表现。比如,在机器翻译任务中,通过微调可以使模型在 BLEU 等评价指标上取得更好的分数,生成更准确、更符合语法和语义的译文。

3.融合领域知识:如果任务涉及到特定的领域,微调过程可以将领域相关的知识和信息融入到模型中。例如,在医学文本分类任务中,可以使用医学领域的文本数据进行微调,让模型更好地理解和处理医学术语、概念和文本结构,提高对医学文本的分类准确性。

4.个性化模型:对于不同的用户或应用场景,可以通过微调来实现模型的个性化。比如,为不同用户群体提供个性化的智能客服服务,根据用户的历史数据和偏好对模型进行微调,使模型能够更好地满足特定用户的需求。

1.数据情况:

使用150w多领域SFT数据,每个领域数据针对指定要求,采用不同的方式构建

2.推理数据:

引入了一个创新方法,长链式思维(CoT);

CoT是什么?

是一种提示方法,让大模型在输出最终答案前,显式输出中间逐步的推理步骤,将复杂问题分解为多个子问题依次求解。

原理:通过构建从输入到思维链再到输出的映射,即 input→reasoning chain→output,完整包含 CoT 的 prompt 通常由指令、逻辑依据、示例三部分组成,以引导模型按步骤推理。

3.RL训练(强化学习):

模型训练:

基于自研GRPO(Group Relative Policy Opinmization)强化学习算法

基于规则奖励:

针对数学,代码这种有明确结果可以校对的数据,通过约束模型答案格式,通过规则校验,进行奖励

基于模型奖励:

对于没有明确答案的数据,训练RM模型进行训练

三. Deepseek为什么强,有哪些创新?

1.MoE架构

基于MoE结构的大模型,总参数量达到671B,其中每个token会激活37B个参数

MoE包括1个共享专家,256个路由专家(每次激活8个)

为了更好保存模型效果,首三层参数完全共享无专家

MoE架构是什么? MoE 架构的全称是 Mixture of Experts,即混合专家结构, 是一种在深度学习中用于提高模型性能和效率的架构,以下是对其及其中 “专家” 概念的简单介绍: 基本架构: MoE 结构包含多个 “专家” 网络和一个门控网络(gating network)。 每个专家网络都是一个独立的子模型, 负责处理输入数据的某一部分或某一类特征。 门控网络的作用是根据输入数据来决定每个专家网络在处理当前输入时的权重或贡献程度,将各个专家的输出进行加权组合,得到最终的模型输出。

2.会有什么问题吗?--当然,MoE负载均衡问题

训练时只分配某几个专家,导致推理的时候也会大量激活某几个专家,某些专家一直死掉,难以收敛提高精度,浪费

2.1 相比传统的MoE架构(如GShard).DeepSeekMoe采用更细粒度的专家分配机制,并创新性地将部分专家设置为共享专家,和用路由来激活的专家。网上的一个比喻,如果是一个学院,专家来解决问题,共享专家(有编制的正经老师)是一定会被激活,路由专家(客座专家)才是通过路由决定是否被激活。

2.2 DeepSeek-v3首创了无辅助损失的负载均衡策略,有效降低了负载均衡对模型性能的负面影响

为了在负载平衡和模型性能之间实现更好的权衡,开创一种无辅助损失负载均衡策略确保负载均衡

具体方式:除了考虑亲和度(专家是否专业),还为每个专家引入一个偏置项Bias(忙不忙),并将添置到相应的亲和度分数 确定Top-k路由,偏置项仅用于路由选择

而门控值仍基于原始相关度分数计算

通过这种动态调整机制,v3在训练过程中实现了专家的负载均衡分布,其性能优于传统仅靠辅助损失来实现负载均衡的模型。

2.3序列级辅助损失补充机制

为了防止单个序列中出现显著 负载不均衡现象,还引入了补充性的序列级平衡损失。

保持单个序列内专家负载均衡性,有利于缓解推理专家热点问题

3.MTP Multi-Token Prediction

目前大多数模型使用的是next-token-predicition,deepseek-v3采用多token预测训练目标,这种方法在评估基准测试中展现出显著性能提升

MTP多token预测,目标是增强模型的性能。

1.MTP预测

模型训练和推理阶段输入t1,预测t2,通过引入MTP,可以预测t2,t3,。。tk,增强模型理解效果

实现方式:对于输入的第i个token,在每个预测深度k,模型将前一个深度的输出表示与当前token的嵌入拼接,降维,

形成新的输入,该输入表示被送入transformer块以当前深度的输出表示,最后,输出头计算下一个token 的概率分布

2.MTP作用效果

增强了训练信号的密度,提升数据利用效率

能使模型预先规划表征,更好的预测未来的token

MTP可以作为投机采样部分大大提高token 接受成功率,预测接下来2个token接受率85%-95%,解码提升1.8倍

4.MLA 多头潜在注意力机制Multi-Head latent attention

Deepseek-v3采用MLA 多头潜在注意力机制,确保推理效率,并使用DeepSeekMoe来实现经济的高效训练

1、MHA推理过程,kv cahe占用现存,GQA通过组共享减少kv cache占用,但是组共享会影响模型效果

v3的MLA的cache大小只有MHA的1/25,但效果比肩MHA,deepseek 推理性能提升最重要的技术创新部门

2、核心创新:

对注意力key和value进行低秩联合压缩,降低推理过程中的kv缓存开销

3、实现方式:

MLA中,KV采用了一个共享的参数矩阵 做down-projection投影到一个低维空间,再有独立的参数矩阵做up-projection升维。

再升维时会有算力消耗,但是decode阶段会降低内存占用

推理的时候有两个阶段,Prefill (算力密集)和Decode(内存密集),


http://www.kler.cn/a/541772.html

相关文章:

  • iOS主要知识点梳理回顾-3-运行时消息机制
  • JAVA-枚举的使用
  • Linux下Gufw防火墙安装指南
  • CSDN 博客之星 2024:肖哥弹架构的社区耕耘总结
  • git rebase 和 git merge的区别
  • 数据源和 sqlSessionFactory 配置
  • 组合模式 + 访问者模式:树形结构与复杂操作的最佳拍档
  • 【算法学习】拓扑排序(Topological Sorting)
  • bazel 小白理解
  • 鸿蒙开发WebUrl跳转到手机浏览器
  • 第五篇:运放的“架构师”——BMS信号链中的虚短虚断法则
  • SwiftUI 中 .overlay 两种写法的区别及拓展
  • java和vue开发的图书馆借阅管理系统小程序
  • 在服务器部署JVM后,如何评估JVM的工作能力,比如吞吐量
  • 神经网络常见激活函数 8-SELU函数
  • 《easy3d与vtk数据类型相互转换》
  • vue3+ts+vite+element plus设置日期时间禁止选择小于当前时间精确到时分秒
  • 网络安全网格架构(CSMA) 网络安全框架csf
  • HTML全局属性与Meta元信息详解:优化网页的灵魂
  • DeepSeek-R1的蒸馏
  • 网络安全检查漏洞内容回复 网络安全的漏洞
  • Halcon.Net与Numpy、OpenCV联合编程
  • hi3516cv610用海思arm-v01c02-linux-musleabi-strip工具,对库进行瘦身
  • 从0开始C语言(8)
  • 本地部署DeepSeek-R1(Ollama+Docker+Dify知识库)
  • 强化学习概念入门