DeepSeekV4中RoPE设计解析
📅 2026/7/15 20:32:23
👁️ 次浏览
本文作者kaiyuanDeepSeekV4中RoPE设计解析想深耕AI Infra领域欢迎访问InfraTech库内容涵盖大模型基础、PyTorch/vLLM/SGLang框架入门、性能加速等核心方向配套50知识干货及适合初学者的notebook练习:https://github.com/CalvinXKY/InfraTechDeepSeek V4采用RoPE进行位置编码但由于注意力结构升级会带来两个核心问题在CSA/HCA中存在压缩操作多个token会被压缩为一个token位置信息应在压缩前注入还是压缩后注入Attention采用MQA模式K与V共享表示。若直接对KV旋转会将位置信息引入V该如何处理下面围绕这两个问题梳理DSV4的位置编码设计。1 MLA中的RoPE处理回顾在分析V4之前先回顾V2/V3的MLAMulti-headLatentAttention方案因为MLA同样涉及MQA与KV cache压缩问题。在标准RoPE中计算queryq m q_mqm与keyk n k_nkn内积时可写为( R m q m ) ⊤ ( R n k n ) q m ⊤ R m ⊤ R n k n q m ⊤ R n − m k n (R_m q_m)^\top(R_n k_n)q_m^\top R_m^\top R_n k_nq_m^\top R_{n-m}k_n(Rmqm)⊤(Rnkn)qm⊤Rm⊤Rnknqm⊤Rn−mkn其中R m R_mRm、R n R_nRn是位置m 、 n m、nm、n对应的旋转矩阵。由于旋转矩阵正交满足R ( θ ) ⊤ R ( θ ) − 1 R ( − θ ) R(\theta)^\topR(\theta)^{-1}R(-\theta)R(θ)⊤R(θ)−1R(−θ)因此内积只依赖相对位置n − m n−mn−m。具体介绍参考《彻底搞懂RoPE计算原理》[1]在MLA中KV下采样后K与V共享同一份cache值这样可以节省显存但也带来问题如果给K注入RoPEV会被一并旋转导致V值“掺杂”了位置信息。一种直观做法是将K、V拆开仅对K旋转。但这样需要分别存储K cache和V cache开销会回到接近GQA。MLA采用了一个折中的做法在Q、K隐藏维度中设置一部分专门用于RoPE计算。图片参考https://github.com/CalvinXKY/InfraTech/tree/main/models/deepseek_v3这样既能让K携带位置信息又能避免污染V同时只需额外存储较小的RoPE相关K cache如图中的k_pe远小于完整拆分K/V cache。公式推导参考part2、3[2]2 CSA/HCA中的RoPE处理在DSV4的CSA/HCA中同样存在KV cache压缩与MQA下KV共享的问题。CSA与HCA在RoPE处理上的思路一致下面以HCA为例说明。HCA中涉及RoPE的主要位置包括窗口通道SWA的KV值C128A压缩器输出的压缩KV值上采样后的Q值Attention输出的O值。图片参考https://github.com/CalvinXKY/InfraTech/blob/main/models/deepseek_v4看到这个设计思考问题如下2.1 为什么要对输出O做一次旋转前面在MLA中提到KV共享时直接旋转KV会让V也带上位置信息。HCA中窗口通道与压缩通道都在KV的最后rope_head_dim维度上施加RoPE。对应维度上的计算可写为o n ϕ ( ( R m q m ) ⊤ ( R n k n ) ) R n v n p ⋅ R n v n o_n\phi\big((R_m q_m)^\top(R_n k_n)\big)\,R_n v_np\cdot R_n v_nonϕ((Rmqm)⊤(Rnkn))Rnvnp⋅Rnvn这里多出的R n R_nRn等价于给输出引入绝对位置信息。绝对位置信息并非一定不可训练但在可扩展性尤其是长上下文外推上通常不如相对位置形式稳定。因此HCA会对输出再做一次逆旋转O ′ R − i ⋅ O R − i ϕ ( ( R m q m ) ⊤ ( R n k n ) ) R n v n p ⋅ R n − i v n OR_{-i}\cdot OR_{-i}\,\phi\big((R_m q_m)^\top(R_n k_n)\big)\,R_n v_np\cdot R_{n-i}v_nO′R−i⋅OR−iϕ((Rmqm)⊤(Rnkn))Rnvnp⋅Rn−ivn这样位置项从绝对位置转为相对位置。这里有个小问题是否能采用正向旋转 i ii答案是否定的因为从公式看到结果将仍偏向绝对位置表达。2.2 能否直接给P旋转不行。设V VV末两维为[seq,head_dim]而P PP维度为[seq,seq]。RoPE旋转作用在head_dim维P PP与旋转维度不匹配。 从计算上看P V PVPV可理解为“标量权重乘向量”P PP本身是标量权重集合不具备可旋转的向量维度。2.3 旋转应在压缩前还是压缩后RoPE角度与绝对位置相关θ ( m , i ) m ⋅ θ i m ⋅ 10000 − 2 i / d \theta(m,i)m\cdot\theta_im\cdot 10000^{-2i/d}θ(m,i)m⋅θim⋅10000−2i/d其中m mm是token位置索引d为注意力头维度即hidden_size/num_headsi的取值范围是0 , 1 , … , d / 2 − 1 0, 1, \dots, d/2 - 10,1,…,d/2−1。而C128A会将128个KV状态压缩为1个KV状态QK计算使用的是压缩后的K。核心问题是K旋转角度的系数位置m怎么选若在压缩前旋转每个token先带位置再压缩。这样看似直观但位置信息会在序列维累加混合容易破坏RoPE所需的相对位置结构。若在压缩后旋转给每个压缩K值指定一个标定位置即可。该位置可选起始、结束或中点只要映射规则全程一致。HCA采用的是“每128段取起始位置”旋转角度公式θ ( m ′ , i ) ( 128 ⋅ t ) ⋅ 10000 − 2 i / d \theta(m,i)(128\cdot t)\cdot 10000^{-2i/d}θ(m′,i)(128⋅t)⋅10000−2i/d其中t tt是当前压缩K值在压缩序列中的索引。C128A压缩计算中RoPE的位置建议的前置阅读彻底搞懂RoPE计算原理从1D到3D图解DeepSeek V4详细计算流程解析参考[1]https://zhuanlan.zhihu.com/p/2023493768003724514[2]https://spaces.ac.cn/archives/10091InfraTech申明未经允许不得转载
AI的工程能力与高效,让普通人梦想成真。当生成式人工智能以摧枯拉朽之势降临,技术乐观主义者欢呼着“效率革命”的黎明,悲观主义者则哀叹着“创意枯竭”的黄昏。然而,在这喧嚣的声浪之下,一场更为深刻的结构性变革正在…
📅 2026/7/15 20:32:23
1. 为什么需要Python虚拟环境刚接触Python开发时,我经常遇到这样的问题:昨天还能运行的项目,今天突然报错说找不到模块。后来发现是因为昨晚顺手升级了某个库,导致新旧版本冲突。这种"一个项目能用,另一个项目就崩…
📅 2026/7/15 20:32:23
1. 项目背景与硬件准备最近在做一个智能家居控制项目,需要STM32通过串口接收指令控制多个LED灯的状态。手头正好有块正点原子的精英版STM32F103ZET6开发板,板载4个LED和CH340G串口芯片,特别适合做这个实验。先说说硬件连接:开发板…
📅 2026/7/15 20:32:23
1. Vivaldi天线与HFSS建模基础Vivaldi天线作为一种超宽带天线,因其优异的阻抗匹配特性和方向性,在雷达、通信系统中广泛应用。它的核心结构是那个像喇叭一样逐渐张开的槽线——我们称之为指数渐变槽线。这个渐变曲线的形状直接决定了天线的性能表现。我第…
📅 2026/7/15 21:27:51
1. 时钟系统整体设计与思路拆解时钟系统之于一颗复杂的SoC,就如同心脏和神经系统之于人体。它不仅仅是提供“滴答”声的节拍器,更是协调内部数以亿计晶体管协同工作的指挥家。在TDA2P-ABZ这类面向高级驾驶辅助系统(ADAS)、车载信息…
📅 2026/7/15 21:27:51
1. 项目概述:为什么线程安全是C高并发编程的命门?如果你写过C多线程程序,大概率遇到过那种“幽灵”般的Bug:程序运行十次,有八次结果正确,剩下两次莫名其妙地崩溃或者数据错乱。你反复检查逻辑,…
📅 2026/7/15 21:27:51
💡 写在前面
今天是我第一次成功向 GitHub 提交并备份自己的个人项目! 在此之前,我的微信聊天机器人使用的是旧版 itchat(微信网页版登录方案)。由于该方案极其不稳定、经常掉线,我决定将其归档备份&#…
📅 2026/7/15 21:27:51
一.硅基流动官网介绍
推理引擎研发(SiliconLLM/OneDiff)
(1). 优化 LLM、MoE、文生图、视频模型推理算子,KV Cache、动态量化、算子融合、批量调度优化,降低延迟、提升吞吐量BOSS直…
(2).适配多芯片:英伟达…
📅 2026/7/15 21:26:51
1. 汽车音频放大器SAP接口基础 第一次拿到TAS6424和TAS6584芯片手册时,我被串行音频端口(SAP)的配置选项绕晕了。这两款TI的汽车级D类放大器支持I2S、左右对齐和TDM等多种音频格式,但寄存器配置逻辑完全不同。在实际车载音响系统开…
📅 2026/7/15 21:26:51
1. COM线程模型基础与CoInitializeEx核心作用在Windows平台开发中,组件对象模型(COM)的线程处理机制一直是开发者必须掌握的底层知识。作为COM初始化的门户函数,CoInitializeEx不仅决定了对象在何种线程环境下运行,更影响着整个组件的并发性能…
📅 2026/7/15 0:00:17
1. 为什么M芯片Mac用户需要降级到Monterey? 去年刚拿到M2芯片的MacBook Pro时,我第一时间升级到了Ventura系统。结果第三天就遇到了微信闪退、Final Cut Pro渲染卡顿的问题。后来在开发者论坛发现,不少专业软件对Ventura的适配都存在问题。这…
📅 2026/7/15 0:00:17
1. 背景与核心概念在AI大模型快速发展的今天,许多开发者和研究者都面临一个现实问题:如何在有限的硬件预算下实现高效的本地大模型部署。特别是对于个人开发者和小型团队来说,购买最新的高端显卡成本高昂,而利用现有的或二手硬件资…
📅 2026/7/15 0:00:17
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/14 6:35:02
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/15 19:03:10
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/15 14:09:20
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/14 15:11:56
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/15 2:24:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/14 15:11:56