# 影片筆記:DeepSeek-V4.1 Flash:迄今为止最疯狂的优化 - bycloud - 英语原声/中配 p01 配音 ## ⚠️ 可先使用,仍有待修正項目 本筆記已完成可閱讀的逐字稿與時間跳轉;下列為待處理問題,建議播放原片確認。 - 待修正:完整校讀/語意翻譯仍待確認,保留可用逐字稿發布(ValueError('canonical_audit failed bounded JSON/schema retries')) - 待修正:自動摘要未完成(已先發布可跳轉的逐字稿版本;可稍後以現有逐字稿重新產生摘要。;note generator exit=1, timed_out=0) ## 處理狀態 已完成語音辨識與逐字時間軸。自動摘要階段未在時間預算內完成,因此先發布可用版本;可於後續從現有逐字稿補做摘要,不需重新辨識影片。 ## 來源 https://www.bilibili.com/video/BV1n2p765EMr/?buvid=Y7495475759B66B048429FDDC79433C6859B&from_spmid=main.push.51.6771562397565899980&is_story_h5=false&mid=NLjM5xBZitQgIUaCS7ilHQ%3D%3D&p=1&plat_id=116&share_from=ugc&share_medium=iphone&share_plat=ios&share_session_id=55EDED30-7892-473A-B7FC-BAA3FEA76029&share_source=COPY&share_tag=s_i&spmid=united.player-video-detail.0.0×tamp=1792039438&unique_k=JJ0ze0T&up_id=335691338 ## 完整逐字稿 几个月前我们惊掉下巴 当时发现Deep Seek 基本上重新设计了整个V4模型架构 核心就是让百万Token上下文便宜的离谱 我们花了足足两期总共50分钟的系列视频 拆解它们为打造这样一部杰作 做了什么 所以虽然我们本以为那已经是 有史以来优化最激进的长上下文模型 几周前我们却迎来了Deep Seek V4.1 Flash 这款最新模型的架构改造甚至更疯狂 V4.1Flash的参数量 几乎是V4Flash的2倍 从2840亿增长到5520亿 而且其新架构还做了多方面精简 足以把KV缓存再压缩4倍 为了让你明白这有多厉害 过去9个月里 DeepSeek已经把每个Token的KV 缓存大小压缩了54倍 实在太惊人了 所以在今天的视频里 我们就来看看 DeepSeek是如何降低前沿AI模型成本的 以及他们想出了哪些疯狂的新技术 才让这一切成为可能 总之回到视频正题 现在我觉得很明显 Deep Seek并没有追逐 基准测试中的最先进地位 而是把实际运行大元模型这件事 优化到了极致 你多少能从性能跃升中看出这一点 而事后看来 这种跃升也并不算特别疯狂 但当你进一步细看 他们创造并落地的所有创新 尤其是考虑到模型规模后的 每百万Token价格 他们无疑正在建立一种 其他实验室望尘莫及的惊人优势 而当你站在企业的角度想一想 如果一个模型质量能达到九成 成本却只要1% 你大概率会选这个方案对吧 再往高了吹点 在TerminalBench2.1上 它的成本仅为Opus 5的5% 是GPT5.6艘的5.8% 是KIMI K3的8% 同时性能还超过了这三款模型 这就是Deep Seek的优势所在 这是难度高得多的竞争赛道 因为做优化可比刷宝难多了 在这款全新的V4.1 Flash模型中 它们的核心思路 基本就是如何在做大模型的同时 大幅降低它的内存占用 这是一个优化问题 目标是降低大元模型的使用成本 更具体的说 是降低重度智能体场景的使用成本 因为如今大元模型的大部分工作负载 都需要反复读取 塞满了工具输出和代码库的海量历史记录 Deepsy基本是全新投入优化 投入优化 常上下文下 注意力开销过大的问题 虽然说他们现有的稀疏注意力方案 已经降低了注意力成本 但另一个问题开始浮现 那就是模型仍然需要存储 搬运重新加载巨量的KV缓存 下面我快速讲下 KV缓存和注意力的关系 大元模型生成一个Token时 每个注意力层都需要用到 此前所有Token的缓存键和纸 键主要用来帮它判断 哪些历史信息是相关的 职责包含它实际要调取的信息 但要是每生成一个Token 但要是每生成一个token都重新计算所有这些表征浪费会大的离谱 所以模型会把它们存下来 这些存储下来的状态就是kb缓存 token越多kb缓存就越大 层数越多kb缓存也越大 所以当上下文规模达到100万token时 瓶颈就不再只是算力速度了 kb缓存带来的延迟和成本问题会逐渐凸显 你需要一次性计算搬运的token数量 是注意力机制最初设计承载量的10到100倍 所有预天穷算力 HBM SSD 还有带宽 如今都得适配这类需求 这是因为我们大量使用智能体工具 至少也是当下的模型服务模式导致的 V4.1的优化思路从这里开始就很有意思了 因为在V4版本中 他们已经用压缩吸收注意力 CSA将多个Token压缩为更少的KV条目 之后再用吸收索引器 判断这些压缩后的内存里 哪些部分真正值得读取 因此为了应对不断增长的上下文长度 他们已经采用了大量压缩手段 但V4.1 Flash的论文指出 KV缓存还会随着模型深度的增加而变大 模型深度与模型规模高度相关 因为如果想要更大的模型 增加深度是最直接的选择之一 所以在其他条件相同的情况下 从12层增至120层 可能意味着要存储约10倍的层专属KV状态 即使你激进的压缩上下文本身 无论剩下多少KV 他们仍会沿网络深度成倍增加 这就引出一个问题 如果某一层已经生成了有用的 全局记忆表示 下一层真的需要从头构建一个 全新的表示吗 Deepsy发现 至少对某些层来说 答案是否定的 这基本上就是压缩 吸收注意力2 CSAR背后的思路 不再只沿Token纬度压缩 还开始沿层纬度压缩 他们的做法是将注意力层 分成三种不同模式 完整层模式 重索引模式 和复用模式 完整层会正常执行所有操作 它会生成全局KV 生成锁引起K 运行吸收锁引起 并选择自己的TopK记忆条目 如果需要快速回顾一下吸收注意力 吸收锁引起基本上就是KV缓存的一个低成本搜索引擎 它会给缓存的全局KV条目打分 选出最相关的TopK条目 而注意力只读取这些被选中的条目 接下来是重锁引模式 该层会使用上一层已经生成的全局KV 但它对哪些信息重要可能有不同判断 因此它会附用上一层的主KV和索引器K 但生成自己的query并重新选择TopK 最后一种是附用模式 这种模式会附用一切 包括主KV和TopK索引 甚至不需要再次运行索引器 它只对上一层已经选中的内容执行注意力 除了改造CSA2之外 V4.1 Flash还移除了V4中那种 在SWA与HCA或CSA之间 HCA或CSA之间交错的混乱混合注意力 它们的主要改动是彻底弃用HCA 于是全聚分支现在只剩纯CSAR 从而得到更简单的CSAR SWA混合架构 但即便CSAR已经减少了跨层所需存储的KV量 仍存在另一个相当巨大的低效问题 因为无论预填充阶段的注意力被压缩到什么程度 模型人必须先让所有这些输入Token通过网络 才能生成第一个Token 设想你给一个常规40层Transformer 一个常规40层Transformer 输入100万Token的提示词 全部100万个Token 仍必须从第一层一路通过到第40层 对智能体操作来说 这相当棘手 因为如今模型会不断调用工具 读取文件 获取搜索结果 浏览代码库 然后把所有这些再加回上下文理 这意味着模型会反复耗费多的离谱的算力 只是阅读 在推理场景下 大多数前沿实验室和推理服务商 已经将预填充和解码拆分到不同的 解码拆分到不同的GPU集群运行 因为这两种工作负载的需求差异极大 其中预填充属于算力密集型任务 解码则属于内存带宽密集型任务 DeepSea也采用了这一做法 但在架构层面进行了调整 推出了名为CED的方案 全称为因果编码器解码器架构 实际上CED背后的核心构想 并非DeepSea首创 这一构想的灵感来自2024年发表的一篇论文 论文题为You only catch once 简称Yoko 优酷方面发现 Yoko方面发现在常规Transformer架构中 每一层都会生成并存储专属的全局KB缓存 所以如果模型有40层 你实际上要保存40份不同版本的记忆数据 为了解决这种重复存储的问题 他们提出了名为解码器解码器架构的解决方案 模型的下半部分是自解码器 通过高效的因果自注意力机制处理输入序列 生成提示词的上下文化表示 随后Yoko基于下半部分的输出生成共享的全局KB缓存 模型上半部分则为交叉 模型上半部分则为交叉解码器 其中每一层都有独立的query 但所有层都会对同一份共享的k和v 执行注意力计算 这样一来无需每一层都存储 各自体量庞大的kv缓存 Yoko基本上只需要生成一次全局记忆 就能供所有层服用 这也是其you only cache once命名的由来 尽管Yoko将其称为解码器 解码器架构 但它的训练和使用方式 仍与常规自回规语言模型一致 这个名称听起来可能和编码器 解码器架构相似 容易让人联想到他与最终的 容易让人联想到它与最初的注意力机制存在关联 但它取这个名字仅仅是因为架构包含两种不同类型的解码器 下半部分名为自解码器 是因为它采用因果资注意力处理序列 构建共享的全局KV 上半部分名为交叉解码器 是因为每个上层都会生成独立的query 并对下半部分生成的KV执行交叉注意力计算 这种设计还有个更棒的好处 既然上半部分只需要用到下半部分生成的KV 那么在玉田充阶段 严格来说 你完全不需要让提示词 经过上半部分的计算 你只需要超长提示词 通过自解码器处理 生成共享全局记忆后 就可以停止操作 这意味着 Yoko其实首创了这一思路 预填充和解码阶段 未必要用到同等规模的模型 当输入规模 甚至达到100万tokens时 这个设计思路的优势 就十分突出了 因此Deepseek借鉴了这一构想 并对其进行适配 使其能兼容V4的现有架构 Deepseek不再把下半部分称为自解码器 而是称之为因果编码器 它没有像Yoko那样让上半部分共享同一份全局KV 而是让每个解码器层从最终编码器表示派生各自的全局KV 所以从功能上讲 Yoko在KV缓存共享方面要激进的多 而Deepseek的因果编码器 仍会在模型前半部分之后给出这一个最终表示 但它并没有把这个表示变成所有层都必须共享的同一层 所有层都必须共享的同一份KV缓存 而是让每个解码器层 都对该最终表示进行各自学习到的投影 第20层之后的每一层 都可以从该最终表示进行投影 并通过各自层专属的权重 得到不同结果 但这种做法为什么可行呢 他们的理由是 这是模型当前对该token已知信息的 一个庞大的学习性表示 因为在经过20个Transformer层之后 每个token表示都已经经历了 相当深度的上下文处理 基本上已经成为一个 丰富的公共信息源 注意力所使用的K和V 基本上就是 该信息源的不同学习试图 建会确定这条信息 要如何表示 以便后续的查询 能够与它匹配 值则决定当它被注意到时 应当返回哪一项内容 所以通常情况下 如果你想得到 第35层的KV 每个历史提示词 Token都必须先 实际留进第21层 一直到第35层 然后第35层 再把新的隐藏状态 投影成它的KV 这里DeepSeek基本上是在质疑 仅仅为了创建全局记忆库 是否真的需要所有这些非线性计算 于是直接砍掉中间的每一个串行流程 使用该隐藏状态 再交给第35层投影 借此获得KV信息 不过如果你还记得前面讲过的内容 DeepSeek其实并不是每次都为每一层生成 完全独立的庞大KV缓存 CSAR已经通过三种不同模式 让相邻层共享全局KV 所以只有真正需要创建新全局KV的解码器层 才会用自身层专属的投影 直接从最终编码器状态将其派生出来 至于每一层具体使用哪种模式 Deep Seek几乎是把这些模式硬编码进了层布局中 在编码器中 前两个仅使用SWA的层之后 剩余18层按每6层一组划分 一个完整层后面接5个复用层 而在解码器中20层按每4层一组划分 D组以一个完整层开头 后面接三个复用层 后面的各组则以一个众索引层开头 再接三个复用层 所以综合起来看 你基本上同时获得了两个层面的成本节省 首先 CD避免了仅仅为了生成解码器全局KV 就让整个预填充跑变模型上半部分 相反 它直接从最终编码器表示派生这份KV 然后借助CSAR 一旦某个解码器层生成了这份KV 接下来的几层 也不一定需要再生成 另一份副本 而这种组合 正是DeepSeq的方案激进的多 且专门针对V4.1优化的原因 除此之外 DeepSeq V4.1的情况 也要复杂的多 它在每一层中 都仍然保留着 滑动窗口注意力分支 所以每个解码器层 其实有两种不同的记忆 一种是来自编码器表示 并通过CSAR共享的全局记忆 另一种是来自 该解码器层自身 隐藏状态的局部进气记忆 所以这里有一点很需要澄清 CSAR的KV共享只适用于全局注意力分支 这并不意味着滑动窗口注意力的KV缓存 会在各层之间共享 每个层仍然保留自己的局部SWA KV缓存 因为这种局部记忆是由该层实际的隐藏状态产生的 因此即使5个CSAR曾共享同一个全局KV 它们仍然可以有5份不同的滑动窗口KV缓存 除此之外 SWA只保留最近的128个TOKENS 因此全局KV会随着整个100万Token的上下文增长 而运行时 SWA缓存实际上始终受限于那个固定窗口 但由于它仍未压缩且未每层独有 所以仍然不是零成本 尤其是要跨大量绘画持久保存这些状态时 那么如果我们不共享SWA KV缓存 这不就意味着还得把提示词送过这些解码7层吗 而麻烦的地方在于 这个128Token的窗口实际上会随着层深不断累积 第40层的SWA状态依赖第39层 第39层本身又依赖更早的局部窗口 依此类推 所以Deepseek基本上切断了这条依赖链 只把最后128个tokens重放给每个解码7层 这正是他们所说的 SWA有借重放发挥作用的地方 所以不是让100万个tokens经过全部40层 而是让100万个经过前20层 只让128个经过剩下的20层 这意味着现在完整的预填 这意味着现在完整的预填充成本 大致等于完整提示词经过一半模型 再加上128个tokens 经过其余各层 在100万tokens上下文的情况下 那128个tokens的重放 基本可以忽略不计 所以整体预填充仍接近减半 虽说只运行这128个tokens 重建出的状态严格来说是近似的 但Deepseek仍表示对质量的影响微乎其微 而且有借重放实际上还带来了 另一个相当大的好处 因为Deepseek基本意识到 基本意识到已经不值得再把SWA-KV缓存 当作长期记忆对待了 在Deepseek V4中 当它们缓存前缀已共复用时 固态硬盘上的持久化缓存 会同时存储全局KV和SWA-KV缓存 令人惊讶的是 尽管SWA只覆盖一个很小的局部窗口 那些未压缩逐层生成的SWA状态 仍几乎占了持久化KV存储的一半 除此之外 这两种缓存的生命周期完全不同 如果同一个长前缀被复用 全局KV缓存 可能在数小时或数天后 仍然有用 但SWAKV缓存 其实仅对活跃绘画的 当前局部状态有用 有效期通常只有几分钟 因此在V4.1中 Deepseek完全不再把SWAKV缓存 存入长生命周期的持久化缓存 而是将其临时存放在 小得多的主机内存池中 一旦过期或被驱逐 就直接用有界重放重建 最后128个Token 再来说Token 与此同时 与此同时全局KV可以存储在固态硬盘这类持久化存储中 这部分的持久化KV缩减幅度非常可观 CSAR搭配FP4已经能把全局KV压缩到V4时期容量的四分之一左右 而将SWAKV移出持久化存储后 缓存规模几乎直接再减一半 回看V4的设计 持久化KV的占用空间大概一半来自SWA 另一半来自全局KV V4.1首先通过CSAR和FP4把这占一半 和FP4把这占一半的全局KV 压缩到原大小的四分之一左右 这就使得全局KV本身的占用 降至每Token近890字节 在HBM存储上 直接节省了75%的空间 之后再把占一半的SWA KV 移出持久化存储固态硬盘存储空间 最多可节省87.5% 这也让这个总参数量达5520亿的模型 在实际运行时 呈现出一种很奇特的不对称性 因此V4.1仍然属于MOE模型 显然它不会为每个Token都激活全部5520亿参数 但借助CED与填充阶段的输入Token只需经过20层编码器 因此DeepSeq在这阶段仅激活约80亿个参数 但模型一旦开始生成内容 每个新Token都必须同时经过编码器和解码器 激活参数量随之升至160亿 所以即便整个模型的总规模几乎是VS Flash的两倍 模型中负责大部分繁重输入 读取工作的部分其实非常小 这对智能体场景非常友好 因为这里场景往往要读取几十万token 最终却只生成几千个token的内容 还有点不可思议的是 哪怕上下文从4000token提升到100万token 也就是上下文长度扩大到原来的256倍 单token解码所需算力 也仅从约20加全GFLOPs 甚至25加全GFLOPs 我认为这次版本更新的所有改动力 上述这些新增核心组件是最值得关注的 到了这个阶段 百万token上下文几乎已经不是这个模型 最有冲击力的特性了 因此Deepseek开始将注意力转向架构中 其他人在浪费内存带宽和算力的环节 接下来要讲的是Deepseek在V4.1中 重新实现时同样做了优化的其他组件 首先是MHC 我之前已经做过MHC的相关讲解视频 这里就长话短说 V4.1针对它的专属改动叫做单路径MHC 这种设计基本解决了原先棘手的依赖问题 该依赖会迫使GPU多次访问残差流 和原有实现相比 这种新实现能将仿存流量降低约一半 而且这次他们真的把Ngram落地到了模型中 Deepseek此前就推出过Ngram 它可以把需要记忆的信息和开销高昂的Transformer计算分离开来 我也做过Ngram的相关视频 但此前他们从未在自家模型中落地过这项设计 这种情况直到V4.1才改变 他们加入的Ngram总参数量达1960亿分布 达1960亿分布在两个模块中 所以从技术层面来说 该模型总共存储的参数量 约为5520亿加1960亿 合计7480亿 但这多出来的1960亿参数 是通过哈希Ngram查照表 进行悉数访问的条件记忆 而非每个Token都会激活的 另外1960亿个稠密参数 也就是说Ngram大幅提升了 模型的记忆容量 但它单Token所需的算力 仍和5520亿参数规模的 MOE模型相当 最后要介绍的是Spark 我也做过关于Spark的视频 这里简单概括 他们用Spark实现了更快的解码速度 且无需将草稿模型整合到主干网络的预训练流程中 但这次的架构升级并不只局限于文本领域 V4.1的另一项重大升级是Deep Seek 终于让模型实现了原生多模态 他们从零训练了自研视觉编码器Deep Seek VIT 随后采用3x3像素合并加混洗的方式压缩视觉特别 在混洗的方式压缩视觉特征 再将其输入语言模型 这一操作将视觉tokens的数量 压缩至原来的九分之一 同时仍支持分辨率 约为1344×1344的图像 为了帮你理清我刚才讲到的所有内容 我们来完整梳理一下 他们搭建的整套模型架构 我们从最底层开始讲起 模型有文本和图像两类输入 二者输入模型后 会被合并为一个嵌入项量 随后它会经过两个 纯滑动窗口注意力层 这两层会读取Ngram提供的记忆之后 之后会进入配比为1-5的CESAR 全量层与复用层 该结构会重复三次 这样加起来一共是18层 算下来英国编码器组件的总层数为20层 这里的数字2指的是 大约每两个TOKENS 会被压缩成一个主KV条目 且每个CESAR层都配套有滑动窗口注意力 至于MOE部分 他们仍在使用DeepseekMOE 到这一步为止的所有输出 就是供后续层使用的编码器引状态 而SWA有介重放机制 会直接基于该引状态运行 无需从解码器层依次获取数据 因此预填充阶段只需要运行英国编码器组件 而解码器运行时则需要两个组件同时启动 对应的激活参数量为81 解码器阶段则为160亿 接下来讲解码器的具体层结构 第一层是CSAR全量层 之后是三层CSAR副用层 接着是配比为1比3的重索引与副用结构 该结构重复4次 这里的数字已表示主KV不会进行Token维度的压缩 我个人的理解是 这大概率是为了保留完整的Token级分辨率 毕竟解码器已经在跨层大规模复用编码器生成的全局KV了 但即便采用了CSAR附用重索引层 仍然需要重新扫描整个百万级Token的上下文 因此DeepSeek加入了分层吸收索引器 避免这类搜索再次产生过高的算力开销 首个完整层会扫描全部内容 构建一个最多包含约1.6万 最多包含约1.6万个位置的候选池 后续的重锁隐层仅在该候选池内检索 筛选出各自排名前512的位置 这些层加起来共有20层处理结果会被输入Spark 模型架构部分的内容就到这里 训练方面也有几处很有意思的改动 首先 DeepSeek 没有先训练常规的稠密注意力模型 再再之后将其转换为稀疏架构 V4.1从0开始直接采用稀疏注意力训练 初始上下文长度为6.4万 完全没有做稠密注意力预热 等训练量达到约34万亿tokens时 他们会直接将上下文长度扩展到100万 最终在总计45万亿tokens的多莫态数据上完成预训练 因此CSAR CED和稀疏检索行为都不是后续才新增的 模型实际上是从头学习这些机制的 而如果一家实验室能够不依赖稠密注意力 从零成功训练出稀疏注意力 这通常就意味着这套注意力机制稳定可靠 且具备很高的潜力 后训练部分的思路转变相当有意思 因为Deep Seek明确表示 他们这次基本没有推出新的后训练算法 他们表示几乎所有提升 都来自扩大模型的训练数据规模 也就是靠数据扩容 而非涉及新的强化学习目标 我完全明白这是为什么 Deep Seek已拥有最强 且最稳定的后训练方案之一 批词不变性 让强化学习流程的可预测性大幅提升 此外还有多教师在线策略蒸流 他们现在将其称为 大规模同策略蒸流 V4.1会向不同领域的 40多个各有专攻的教师模型学习 这也说明DeepSeek目前认为 投入更多时间和资金优化数据 比继续研发新的后训练算法 更有价值 尤其是本篇论文中 他们十分重视 强化学习数据的 自动化合成与环境构建 说到底 我认为就是垃圾进 垃圾出 但这也意味着 当前的后训练范式 在一段时间内 可能会少很多有意思的新进展 不过客观来说 MOPT也是最近才推出的 所以这套范式问世的时间 本来也不算长 不过他们还做了一项 我认为之前没有明确提到过的小调整 那就是模型合并 我也做过一期关于模型合并的视频 在强化学习过程中 他们会合并来自不同脚手架 不同配置的独立训练运行的检查点 整合不同优化路径的提升效果 在用合并后的模型初始化 下一次强化学习运行 也就是说模型合并是用来持续汇总各次成功 强化学习运行带来的提升等到流程最后 他们会在不同领域和训练阶段开展大规模同策略蒸馏 将所有专家教师模型的能力整合到同一个模型中 另一方面推理力度也有一项升级 它不再像V4那样只设置Think High和Think Max模式 而是通过强化学习 让推理力度成为一个从1到100的数值 力度越低 Token惩罚越强 力度越高 就会逐步允许模型使用更多算力 因此 模型不是训练几个彼此孤立的推理模式 而是学会一条平滑的成本质量曲线 面向用户的Low High和Max 3档 基本上就是同一尺度上 力度值为50,75和100的设置 好啦 V4.1 Flash在技术报告中提出的 大部分重要进展就介绍到这里 这份51页的技术报告里 还有许多技术细节 但其中有些内容实在太深奥 或者需要更多背景知识才能解释清楚 比如DSEC缩放多莫态混合专家均衡 以及其他基础设施改进 所以如果你们想了解更多 一定要去看看他们的论文 谢谢大家观看 特别感谢Spamatch Chris Ledoux Degan Roberts Zaviasa Poof Inu DX Research Group Alex Leo Halawani 以及其他许多通过Patreon 或YouTube支持我的人 还没关注我的话到推特上关注我 我们下期再见