DeepSeek v3 技术报告阅读笔记

注
- 本文参考 DeepSeek-v3 / v2 / v1 Technical Report 及相关参考模型论文
- 本文不包括基础的知识点讲解,为笔记/大纲性质而非教程,建议阅读技术报告原文
- 交流可发送至邮箱 henryhua0721@foxmail.com


架构核心
核心:
- MLA 高效推理
- DeepSeekMOE 更经济的训练
- MTP 提高模型性能
架构上看主要改进在于Attention层和FFN层:

MLA
参考deepseekv2的technical report内容
KV cache
类GPT模型的decoder架构在推理时一个个token输出,每一次输出都作为下一次输出的输入,带来大量重复计算。KV cache空间换时间,降低推理复杂度。
w/o KV cache:
每一次推理计算attention时,当前token前的token QK计算在前面步骤被重复计算,结果可以使用KV cache存储而非再次计算。

huggingface/transformers/gpt2的KV cache代码:
if layer_past is not None:past_key, past_value = layer_pastkey_states = torch.cat((past_key, key_states), dim=-2)value_states = torch.cat((past_value, value_states), dim=-2)if use_cache is True:present = (key_states, value_states)else:present = None
KV cache存在的问题:对GPU memory的需求巨大
解决办法:
- Quantization
- (Deepseek)减小输入以减小cache
Letent KV

使用letent KV替代传统KV存储到cache中。对kv压缩:

- 传统attention:k = Wh / v = Wh
- latent KV:使用更小的letent变量c作为中间变量,可以表示 k/v,存储cache
在推理的时候本质上不需要计算出单独的k和v变量:

计算q*kT的时候可以使用线性代数运算使得不需要单独提出参数矩阵,而是可以化为大的参数矩阵(图中 W^ QT 和 W^ UK 相乘)
同样对key压缩:

Decouple RoPE
参考:Multi-Head Latent Attention: Boosting Inference Efficiency
RoPE的引入导致q和k都被R矩阵加权,对KV cache造成的损害:

解决办法:引入新的multi-head queries(和不做低秩分解的q相同)

- 每个 attn 层额外增加 multi-head queries q^R
- 添加共享的key用于 k^R
- 再将 q^ R 和低秩分解的 q、k^R 和低秩分解的k concate起来
huggingface discussion上似乎提供了更sufficient方法:将rope part和none-rope part进行sum up而非concatenate
(链接找不到了qwq)

KV cache存储的:
- c^KV
- k^R
DeepSeekMOE
MOE
大语言模型主要的计算量集中在attention层,参数量集中在FFN层。
MoE的本质是将FFN分组。好处在于模型易于scale up以及降低cost。

Gate将输入计算前往各个FFN分组的概率:
- Dense MoE:计算每个分支的概率,并进行加权
- Sparse MoE:取概率top-k
每个expert是两个MLP层。
传统MoE的问题:学习知识重合、expert之间无法区分 -> DeepSeekMOE
Load Balance
传统MOE训练出现马太效应:某个单个expert训练较好,引导gate划分更多token给它训练,导致单个expert过拟合、其他expert欠拟合。
Load balance的解决办法:
- (Switch transformer) loss control:在损失函数中制约
- (DeepSeek) loss free:添加bias

DeepSeekMOE
- 划分更小的exert
- 设置某些共享expert学习常识

- Fine-grained Expert Segmentation
- N expert -> 2N expert,top2 -> top4。
- 降低每个expert(两层MLP)中间层宽度,使得model整体参数量没有变大,但是减小了模型variance
- Shared Expert Isolation:shared expert
- 具有error correction机制:大多数问题shared expert会回答(通),其他expert(专)进行correct
load balance
- 添加bias

通过添加bias手动提高softmax后某些expert的概率。在训练中,观察后不断进行调整(但是不属于loss的范畴)
- sequence-wise balance loss(区别于传统的token-wise)

- Node-limited Routing:训练时限制每个token只送到M个nodes中,降低通信成本。
- No token-dropping:token-dropping是对于load balance比较高的expert drop掉新的token input(直接过残差层不经过FFN)。这里不使用,因为上面的方法已解决load balance。
MTP
Deepseek MTP参考:
- Meta MTP
- EAGLE
当前language model的训练方式导致的问题:
- teaching force导致training每次输入的都是perfect content
- NTP导致近视👓,planning能力差
- 每次只预测下一个token,training signal较弱
-> 一次预测多个token :MTP
Meta MTP
将head分组,每个head负责一个token

- training singal更强(每一层都有反馈)
- 一次预测4个token,加强planning能力
- 缓解teaching force问题,不再过于local
但是并行heads违背了auto regression的想法,打破前后依赖 -> EAGLE(使用auto regression heads)
Speculative Decoding
LLM inference的问题 -> Slow
- KV cache
- speculative decoding
- quick guess(小模型,快但精度低)
- cheap verification(大模型,慢但精度高)
实现方式
- independent:两个LLM一大一小
- 简化过程:小LM生成sequence后给大LM计算每个token概率,若一致则accept,否则从reject token开始重新生成
- 实际上使用小LM加速大LM生成过程,大LM生成过程中实时纠错

- self:只借助大LLM中间某些head实现
- Medusa / EAGLE 模型

- Medusa / EAGLE 模型
DeepSeek MTP
使用类似EAGLE的casual arc(而不是parallel)替换META MTP中的实现:

相关文章:
DeepSeek v3 技术报告阅读笔记
注 本文参考 DeepSeek-v3 / v2 / v1 Technical Report 及相关参考模型论文本文不包括基础的知识点讲解,为笔记/大纲性质而非教程,建议阅读技术报告原文交流可发送至邮箱 henryhua0721foxmail.com 架构核心 核心: MLA 高效推理DeepSeekMOE 更…...
HCIA项目实践(网络)---NAT地址转化技术
十三 NAT网络地址转换技术 13.1 什么是NAT NAT(Network Address Translation)地址转换技术,是一种将内部网络的私有 IP 地址转换为外部网络的公有 IP 地址的技术。其主要作用是实现多个内部网络设备通过一个公有 IP 地址访问外部网络&#x…...
VS studio报错cmake version 3.29.5-msvc4,但是没有其他信息问题解决
背景: windows电脑用VS studio 2022打开一个cmake项目,编译cmake通过,但是没有产生exe文件,IDE也没有打印其他错误信息提示,只有下图: cmake version 3.29.5-msvc4 一开始以为是编译器等问题,…...
免费deepseek的API获取教程及将API接入word或WPS中
免费deepseek的API获取教程: 1 https://cloud.siliconflow.cn/中注册时填写邀请码:GAejkK6X即可获取2000 万 Tokens; 2 按照图中步骤进行操作 将API接入word或WPS中 1 打开一个word,文件-选项-自定义功能区-勾选开发工具-左侧的信任中心-信任中心设置…...
langchain学习笔记之小样本提示词Few-shot Prompt Template
langchain学习笔记之小样本提示词 引言 Few-shot Prompt Templates \text{Few-shot Prompt Templates} Few-shot Prompt Templates简单介绍示例集创建创建 ExamplePrompt \text{ExamplePrompt} ExamplePrompt与 ExampleSelector \text{ExampleSelector} ExampleSelector创建 Fe…...
【CS.SE】优化 Redis 商户号池分配设计:高并发与内存管理
优化 Redis 商户号池分配设计:高并发与内存管理 背景 在分布式交易系统中,商户号池管理是核心模块之一。传统的商户号生成方式,依赖数据库预分配号段,导致大量号段浪费,并且在高并发请求下,性能难以满足需…...
5、《Spring Boot自动配置黑魔法:原理深度剖析》
Spring Boot自动配置黑魔法:原理深度剖析 一、引言:为什么Spring Boot能“开箱即用”? Spring Boot的核心理念是**“约定优于配置”,开发者只需引入一个spring-boot-starter-web依赖,就能直接编写RESTful API…...
稀土抑烟剂——为纺织品安全加持,保护您的每一寸触感
一、稀土抑烟剂的基本概念 稀土抑烟剂是基于稀土元素(如稀土氧化物和稀土金属化合物)研发的一类新型阻燃材料。它能够有效提高纺织品的阻燃性,抑制火灾发生时产生的烟雾和有害气体,减少火灾对人体的危害。稀土抑烟剂具有更强的稳…...
如何使用CSS画一个三角形,原理是什么?
如何用 CSS 画一个三角形?原理和实战指南 一、核心原理 CSS 画三角形的本质是利用边框(border)的叠加特性。当一个元素的宽高为 0 时,其边框会以对角线形式相交,形成四个独立的三角形区域。通过控制某一边的边框颜色为…...
Docker拉不下来镜像问题解决法案
打开docker的设置界面 配置如下: vi /etc/docker/daemon.json {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["…...
DeepSeek 多模态大模型Janus-Pro本地部署教程
1.部署环境配置 我个人用的是Mac的m1pro 16512配置,我跑了1B的版本很流畅,7B的也可以跑起来,稍微感觉有一些卡顿。 需要安装Git-lfs,访问官网下载安装包安装,这个工具是用于下载大型文件必备的软件,这里用…...
笔记8——模式匹配 match语句(仅在Python 3.10及以上版本中可用)
文章目录 模式匹配 match语句(仅在 Python 3.10及以上版本 中可用)基本语法基本匹配操作应用场景 模式匹配 match语句(仅在 Python 3.10及以上版本 中可用) Python 3.10 及以上版本中才引入了 match 语句用于简化复杂的条件判断和数据解构;类似于其他语言中的 swit…...
maven-antrun-plugin插件的用法
maven-antrun-plugin 是 Maven 中一个非常强大的插件,它允许你在 Maven 构建过程中运行 Apache Ant 任务。通过这个插件,你可以在 Maven 构建的各个阶段(如 compile、package 等)中执行自定义的 Ant 任务,比如复制文件…...
iOS主要知识点梳理回顾-4-运行时类和实例的操作
类和实例的操作 iOS 运行时(Objective-C Runtime)提供了丰富的 API 来对类进行动态操作,包括创建类、修改类的结构、添加方法、替换方法等。这对于实现动态特性、AOP(面向切面编程)、方法拦截等功能非常重要。以下举例…...
vue2和vue3生命周期的区别通俗易懂
用最直白的对比帮你理解 Vue2 和 Vue3 生命周期的区别,就像对比手机系统的升级: 一、生命周期阶段对比表(老手机 vs 新手机) 阶段Vue2(老系统)Vue3(新系统)变化说明初始化beforeCre…...
使用 meshgrid函数绘制网格点坐标的原理与代码实现
使用 meshgrid 绘制网格点坐标的原理与代码实现 在 MATLAB 中,meshgrid 是一个常用函数,用于生成二维平面网格点的坐标矩阵。本文将详细介绍如何利用 meshgrid 函数生成的矩阵绘制网格点的坐标,并给出具体的代码实现和原理解析。 实现思路 …...
postgresql源码学习(59)—— 磁盘管理器 SMGR
一、 定义及作用 PostgreSQL 的磁盘管理器(Storage Manager,简称 SMGR)是数据库系统中负责管理底层存储的核心模块。磁盘管理器并非直接操作磁盘上的文件,而是通过VFD(虚拟文件描述符,将在后续学习…...
Spring Boot(8)深入理解 @Autowired 注解:使用场景与实战示例
搞个引言 在 Spring 框架的开发中,依赖注入(Dependency Injection,简称 DI)是它的一个核心特性,它能够让代码更加模块化、可测试,并且易于维护。而 Autowired 注解作为 Spring 实现依赖注入的关键工具&…...
UE_C++ —— Structs
目录 一,实现一个UStruct 二,Struct Specifiers 三,最佳做法与技巧 结构体(Struct)是一种帮助组织和操作相关属性的数据结构;在引擎中,结构体会被引擎反射系统识别为 UStruct,但不…...
ArcGISPro 新建shp+数据结构
import arcpy# 设置工作空间和 Shapefile 存放路径 shp_path r"C:\path\to\your\folder\PolygonZY.shp" # Shapefile 存放路径 fields [("CHBH", "TEXT", 20),("ZCMC", "TEXT", 100),("ZCLX", "TEXT"…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
基于单片机的宠物屋智能系统设计与实现(论文+源码)
本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢,连接红外测温传感器,可实时精准捕捉宠物体温变化,以便及时发现健康异常;水位检测传感器时刻监测饮用水余量,防止宠物…...

