Deepseek系列从v3到R易背面经版

news2025/2/11 5:04:02

deepseek v3 base要点

MTP : Multi-Token Prediction

训练时:

1. 把前一个block中input tokens经过embedding layer和transformer block的输出,进入output head之前的内容记为h,与下一个block的input tokens经过embedding layer输出的内容都经过rmsnorm后concat 再送入projection和block。这是causal chain的连接关系,在embedding层增加了残差链接。

2. 用k个tokens作为一个部分送入1个block然后输出k个output tokens和后移T个序列长度的target tokens做cross entropy loss。

推理时:

推理阶段要用上一个状态的预估值作为下一个状态的输入,和训练时不同。训练时用ground truth做输入;推理用上一个状态的估值。

MLA (多头潜在注意力)

一种注意力架构,通过将键和值联合压缩成一个潜在向量,显著降低了推理过程中的KV缓存。

主要公式:

1. 我的理解就是把KV Q用像lora的方法 拆开 降秩,一个高维度矩阵用两个矩阵表示;但是RoPE部分没有用到!

KV

Q

O

同样可以通过结合律优化矩阵乘

把 (WUQ)TWUK 离线融合成一个矩阵,可以像前面的优化一样,减少矩阵运算,注意力架构 也将MHA 转化成了 MQA

2. 常规的方法就是把 KV 降维到一个潜在向量C,当需要计算时再把C升维到 KV。另外这里对位置信息进行了解耦,原始的RoPE需要在query和key中融入相对位置信息。但在MLA中,由于KV Cache缓存的是压缩后的低秩key-value信息,不能对相对位置信息同样进行低秩处理。

3. 主要逻辑是一种通过改变矩阵乘法的计算顺序来优化注意力机制计算效率的方法。这种方法在DeepSeek-V2模型中得到了应用,特别是在解码阶段,能够有效减少计算量。方案来源于SGlang。在deepseekv3基于V2对MLA进一步改进,对Q矩阵也进行了低秩处理。主要是qk用降秩的向量来计算。

MOE (mixture of expert)

共享专家隔离策略(shared expert isolation)的整合。在这种情况下,一些专家被标记为共享专家,旨在捕捉共同知识并减轻激活专家之间的冗余。这种共享专家隔离策略有助于提高模型的性能和效率。

  • 子图(a):展示了具有传统top-2路由策略的MoE层。在这种情况下,每个令牌被分配给两个专家中的一个,即top-2。这是传统的MoE路由策略,其中每个令牌只与两个专家相关。
  • 子图(b):说明了细粒度专家分割(fine-grained expert segmentation)策略。相比于传统的top-2路由,DeepSeekMoE采用了更细粒度的专家划分,将专家进一步分为多个子专家。这样,每个令牌可以与更多的专家相关,实现更灵活的激活专家的组合。
  • 子图(c):展示了共享专家隔离策略(shared expert isolation)的整合。在这种情况下,一些专家被标记为共享专家,旨在捕捉共同知识并减轻激活专家之间的冗余。这种共享专家隔离策略有助于提高模型的性能和效率。

这里用的是C图方法

F8量化策略

量化精度:FP8(E4M3)

量化粒度:

权重:block-wise量化,shape是[128,128],静态离线量化

激活:per-token-group 量化, 动态在线量化

(1) 对于激活值,我们以 1x128 的 组 为基础对元素进行分组和缩放(每个 token 每 128 个通道);

(2) 对于权重,我们以 128x128 的 块 为基础对元素进行分组和缩放(每 128 个输入通道每 128 个输出通道)。

如图1的a部分input和weight的fp8量化rescale表示就是权重量化还有output部分就是激活量化部分。 b部分是对于下溢和精度损失的处理。使用FP8等低精度格式进行GEMM运算时,中间结果的累加容易出现下溢,导致精度损失。传统的做法是使用FP32进行累加,以保持精度。每当 Tensor Core 累加了 128 个 FP8 结果后,就会将这些结果转换(或缩放)到 FP32 精度,然后在 CUDA Cores 的 FP32 寄存器中进行累加。

图2 是对fp8量化策略使用的解释。 大部分GEMM运算采用FP8提升整体训练速度(前向传播、激活反向、权重反向)对应图中Fprop, Dgard, Wgrad模块。 对精度敏感模块仍保留原有精度(Embedding、RMSNorm) 。权重梯度和优化器状态均采用高精度存储fp32存储。

DualPipe

细粒度的计算通信并行:

• 将PP stage拆分为更细的模块,提升模块交替编排的灵活度

• 参考ZeroBubble,反向传递中权重更新和梯度传递独立操作

• 经细粒度的拆分和编排后,计算流和通信流barrier刚好可重叠

双向管道调度减少PP中的气泡

• 1F1B中每个batch拆分为1个forward和1个backward

• ZeroBubble中把backward拆分为input和weight两个部分

• DualPipe中使用对称处理,不同batch从不同device上流水

deepseek R系列:deepseek R1 zero

GRPO算法

deepseek R1 zero是deepseek v3 base上使用GRPO算法(Group Relative Policy Optimization)进行强化学习训练。 GRPO算法比PPO算法(Proximal Policy Optimization)用更少的算力达到大规模强化学习训练的目的,GRPO 的核心思想是简化这个过程:它不需要批评模型,而是通过组内相对奖励来优化策略模型。具体来说,GRPO 会从当前策略中采样一组输出,然后根据这些输出的相对表现来调整策略,而不是依赖一个单独的批评模型。

图2公式解释:这里O 是模型输出 Reference model用于和policy model的输出计算KL散度。这里r 是reward 是G个输出结果经过reward model得到的奖励,经过group computation得到相对优势A。

通俗解释:目标函数的核心是让模型生成高奖励的输出(通过相对优势 Ai和策略比率),同时避免新策略偏离旧策略太远(通过裁剪和 KL 散度)。

从deepseek R1 zero到deepseek R1

deepseek R1 zero在输出内容和表达方面略微逊色,于是在deepseek R1采用部分长思维链数据来冷启动。然后做强化学习训练。进行拒绝采样推理产出的数据,然后监督微调,最后做全场景的强化学习。全程使用了GRPO算法。

ref:

zomi酱的deepseek系列讲解

从DeepSeek V3的MTP,解析MTP技术的前世今生_deepseek mtp-CSDN博客

DeepSeek-R1-GRPO理解-CSDN博客

https://zhuanlan.zhihu.com/p/20565045592

DeepSeek-R1 技术全景解析:从原理到实践的“炼金术配方” ——附多阶段训练流程图与核心误区澄清 - 腾讯云开发者社区-腾讯云

https://zhuanlan.zhihu.com/p/17565919423 https://zhuanlan.zhihu.com/p/16213202688

https://zhuanlan.zhihu.com/p/20269638568

 https://zhuanlan.zhihu.com/p/16323685381

DeepSeek-V3 技术要点解析_deepseek v3知乎解析-CSDN博客

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

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

相关文章

Maven入门核心知识点总结

Maven 1. POM(Project Object Model)2. 坐标(Coordinates)3. 依赖管理(Dependency Management)4. 常用五个生命周期(Life Circle)5. Maven 仓库(Maven Repository&#x…

Blocked aria-hidden on an element because its descendant retained focus.

在使用el-popover和el-radio-group实现弹窗选择数据后调用el-popover的doClose()方法时一直报错! 经过分析发现el-popover及el-radio__original有aria-hidden属性,具体aria-hidden属性应用自行搜索了解。既然是这个玩意引起的,则在显示时将a…

python爬虫--简单登录

1,使用flask框架搭建一个简易网站 后端代码app.py from flask import Flask, render_template, request, redirect, url_for, sessionapp Flask(__name__) app.secret_key 123456789 # 用于加密会话数据# 模拟用户数据库 users {user1: {password: password1}…

三次握手,四次挥手,服务器模型(多进程并发,线程),基于套接字的UDP通信

三次握手: 第一次握手:客户端向服务器发送SYN待确认数据x, 客户端进入SYN_SEND状态​ 第二次握手:服务器向客户端回传一条ACK应答数据x1, 同时发送一条SYN待确认数据y,服务器进入SYN_RECV状态​ 第三次握手:客户端向服…

Linux TCP 编程详解与实例

一、引言 在网络编程的领域中,TCP(Transmission Control Protocol)协议因其可靠的数据传输特性而被广泛应用。在 Linux 环境下,使用 C 或 C 进行 TCP 编程可以实现各种强大的网络应用。本文将深入探讨 Linux TCP 编程的各个方面&…

Elasticsearch 开放推理 API 增加了 Azure AI Studio 支持

作者:来自 Elastic Mark Hoy Elasticsearch 开放推理 API 现已支持 Azure AI Studio。在此博客中了解如何将 Azure AI Studio 功能与 Elasticsearch 结合使用。 作为我们持续致力于为 Microsoft Azure 开发人员提供他们选择的工具的一部分,我们很高兴地宣…

提示工程:少样本提示(Few-shot Prompting)

少样本提示(Few-shot Prompting)是一种利用大语言模型从少量示例样本中学习并处理任务的方法。它的核心思想是利用大语言模型的上下文学习能力,通过在提示中增加“示例样本”来启发大语言模型达到举一反三的效果。这种方法避免了重新训练或者…

封装descriptions组件,描述,灵活

效果 1、组件1&#xff0c;dade-descriptions.vue <template><table><tbody><slot></slot></tbody> </table> </template><script> </script><style scoped>table {width: 100%;border-collapse: coll…

数据中台是什么?:架构演进、业务整合、方向演进

文章目录 1. 引言2. 数据中台的概念与沿革2.1 概念定义2.2 历史沿革 3. 数据中台的架构组成与关键技术要素解析3.1 架构组成3.2 关键技术要素 4. 数据中台与其他平台的对比详细解析 5. 综合案例&#xff1a;金融行业数据中台落地实践5.1 背景5.2 解决方案5.3 成果与价值 6. 方向…

【Matlab优化算法-第14期】基于智能优化算法的VMD信号去噪项目实践

基于智能优化算法的VMD信号去噪项目实践 一、前言 在信号处理领域&#xff0c;噪声去除是一个关键问题&#xff0c;尤其是在处理含有高斯白噪声的复杂信号时。变分模态分解&#xff08;VMD&#xff09;作为一种新兴的信号分解方法&#xff0c;因其能够自适应地分解信号而受到…

ubuntu20使用tigervnc远程桌面配置记录

一、安装tigervnc sudo apt install tigervnc-common sudo apt install tigervnc-standalone-server二、增加配置文件 安装完后新增配置文件&#xff1a;vim ~/.vnc/xstartup #!/bin/sh #Uncomment the following two lines for normal desktop: #unset SESSION_MANAGER #ex…

【WB 深度学习实验管理】使用 PyTorch Lightning 实现高效的图像分类实验跟踪

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到&#xff0c;别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在机器学习项目中&#xff0c;实验跟踪和结果可视化是至关重要的环节。无论是调整超参数、优化模型架构&#xff0c;还是监…

编译spring 6.2.2

如何编译Spring 6.2.2 下载spring 6.2.2 首先&#xff0c;下载spring 6.2.2&#xff0c;地址&#xff1a;下载 解压到你的目录下。 下载gradle 下载gradle&#xff0c;这是spring项目的依赖管理工具&#xff0c;本文下载的是8.12.1。 gradle idea配置如下&#xff1a;在你的…

【centOS】搭建公司内网git环境-GitLab 社区版(GitLab CE)

1. 安装必要的依赖 以 CentOS 7 系统为例&#xff0c;安装必要的依赖包&#xff1a; sudo yum install -y curl policycoreutils openssh-server openssh-clients postfix sudo systemctl start postfix sudo systemctl enable postfix2. 添加 GitLab 仓库 curl -sS https:/…

【R语言】plyr包和dplyr包

一、plyr包 plyr扩展包主要是实现数据处理中的“分割-应用-组合”&#xff08;split-apply-combine&#xff09;策略。此策略是指将一个问题分割成更容易操作的部分&#xff0c;再对每一部分进行独立的操作&#xff0c;最后将各部分的操作结果组合起来。 plyr扩展包中的主要函…

《XSS跨站脚本攻击》

一、XSS简介 XSS全称&#xff08;Cross Site Scripting&#xff09;跨站脚本攻击&#xff0c;为了避免和CSS层叠样式表名称冲突&#xff0c;所以改为了XSS&#xff0c;是最常见的Web应用程序安全漏洞之一&#xff0c;位于OWASP top 10 2013/2017年度分别为第三名和第七名&…

Golang:精通sync/atomic 包的Atomic 操作

在本指南中&#xff0c;我们将探索sync/atomic包的细节&#xff0c;展示如何编写更安全、更高效的并发代码。无论你是经验丰富的Gopher还是刚刚起步&#xff0c;你都会发现有价值的见解来提升Go编程技能。让我们一起开启原子运算的力量吧&#xff01; 理解Go中的原子操作 在快…

代码随想录_二叉树

二叉树 二叉树的递归遍历 144.二叉树的前序遍历145.二叉树的后序遍历94.二叉树的中序遍历 // 前序遍历递归LC144_二叉树的前序遍历 class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> result new ArrayList<Integer&g…

【C语言标准库函数】浮点数分解与构造: frexp() 和 ldexp()

目录 一、头文件 二、函数简介 2.1. frexp(double x, int *exp) 2.2. ldexp(double x, int exp) 三、函数实现&#xff08;概念性&#xff09; 3.1. frexp 的概念性实现 3.2. ldexp 的概念性实现 四、注意事项 五、示例代码 在C语言标准库中&#xff0c;frexp() 和 ld…

【Git】tortoisegit使用配置

1. 安装 首先下载小乌龟&#xff0c;下载地址:https://tortoisegit.org/download/, 可以顺便下载语言包&#xff01; 安装时&#xff0c;默认安装就可以&#xff0c;一路next。也可以安装到指定目录中 目前已完成本地安装&#xff0c;接下来就需要与远程仓库建立连接&…