Java不加糖

读论文和代码,
把大模型拆成看得懂的图。 偶尔写点数学。

47篇文章
4个分类
2022年至今
专栏 · 6 个章节 · 8 篇DeepSeek-V4 模型结构

配合 DeepSeek-V4 技术报告 §2 一起读的连载:沿序列、深度、宽度三个维度,把压缩稀疏注意力(CSA)、重压缩注意力(HCA)、流形约束的 Hyper-Connections(mHC)、改过打分函数和路由的 DeepSeekMoE,以及 Muon 优化器一个模块一个模块拆开。每篇都有一张「你现在在这里」的总图,和该模块自己的方块图。

专栏 · 6 个章节 · 9 篇DeepSeek-V4.1 模型结构

配合 DeepSeek-V4.1-Flash 技术报告 §2 一起读的连载,是 DeepSeek-V4 连载的续篇,只讲这一代的改动:Causal Encoder-Decoder(CED)、跨层共享 KV 的 CSA2、Hierarchical Sparse Indexer、FP4 KV cache、Single-Pass mHC、Engram、DSpark 和视觉通路。每篇都有一张「你现在在这里」的总图。

专栏 · 6 个章节 · 11 篇Kimi K3 模型结构

配合 Kimi K3 技术报告 §2 一起读的连载:按论文自己的叙事,沿序列、深度、宽度三个维度,把 KDA、Gated MLA、Attention Residuals、Stable LatentMoE 和视觉通路一个模块一个模块拆开。每篇都有一张「你现在在这里」的总图,和该模块自己的方块图。

专栏 · 4 个章节 · 5 篇大模型笔记

从模型结构到训练系统:新开源模型的架构拆解、并行策略、训练框架的软件工程,以及性能优化。按知识结构组织,不按时间。

最近文章

全部 47 篇

DeepSeek-V4.1 模型结构(8):KV cache 的管理与 SWA Bounded Replay

连载收尾。890 字节是显存里的全局 KV,磁盘上的缓存还要再减一半:办法是滑窗 KV 不再存盘。这一篇讲滑窗 KV 为什么不适合放在保留 72 小时的磁盘缓存里,V4.1 把它挪到了哪,丢了之后怎么只用 128 个 token 的回放重建,这个近似的代价是什么;再讲 CSA2 的跨层共享在流水线并行下怎么训练,以及多模态训练的三处系统改动。

12 min

DeepSeek-V4.1 模型结构(7):输入端与优化器

主干之外的两头。输入端:从零训练的 DeepSeek-ViT,一张 1302 × 1302 的图怎么变成 994 个位置,文本和图像 token 为什么要各用一套负载均衡偏置。优化器:head-wise Muon 把 query 权重按头切开再正交化,用一个秩 1 的例子说明它改变了什么;Sinkhorn-balanced update 用行列交替归一化代替 Adam,只存一份动量就能训练 196B 参数的 Engram 表。

16 min

DeepSeek-V4.1 模型结构(6):解码,DSpark

主干一次前向只出一个 token。DSpark 是挂在主干后面的三层草稿模块:一次前向给出 5 个位置的 logits,用一个秩 256 的 Markov head 补上草稿 token 之间的依赖,再由 confidence head 和调度器按当前负载决定送几个给主干验证。这一篇从投机解码的接受规则讲起,推出并行草稿为什么越往后越不准,调度器的阈值为什么随负载变,以及按置信度截断在什么条件下不改变输出分布。

19 min

DeepSeek-V4.1 模型结构(5):记忆,Engram

Transformer 认出一个固定搭配要花掉前几层的计算。Engram 换一条路:按当前 token 结尾的 2、3、4-gram 做哈希,从一张 3.84 亿行的表里取出向量,经过一个门加进残差流。这一篇从「直接建 n-gram 表为什么不行」推到哈希的具体形式,用中国剩余定理说明 8 个头为什么足以区分不同的 n-gram,再讲门的公式、V4.1 去掉的卷积,以及 196B 参数怎么分配、训练和存放。

14 min

DeepSeek-V4.1 模型结构(4):深度维度,Single-Pass mHC

mHC 的计算量很小,开销在读写残差流。这一篇从一个子层边界上最少要读写多少个数推出访存量的下界 (2n+2)d,算出 V4 的实现是下界的两倍,再一步步合并 kernel:先把归一化挪到投影之后,再让读算子改用上一个子层算好的权重。最后对照官方代码看这个改动落在哪三处。

13 min

DeepSeek-V4.1 模型结构(3):序列维度(下),Hierarchical Sparse Indexer 与 FP4 KV cache

decoder 的 Reindex 层每生成一个 token 都要给 100 万条 KV 打分。Hierarchical Sparse Indexer 让第 20 层先圈出 16384 个候选位置,后面的层只在里面打分,把这部分计算变成常数。FP4 把每条 main KV 从 584 字节压到 288 字节:E2M1 能表示哪些数,为什么 22.6 是幅度的上界,scale 为什么选 E4M3。最后把 890 字节和 V4-Flash 的 3514 字节逐项对比。

14 min