答疑特辑:秩与 SVD、RoPE 旋转矩阵、投机解码原理与 AI 芯片全景

11728 字
59 分钟
答疑特辑:秩与 SVD、RoPE 旋转矩阵、投机解码原理与 AI 芯片全景

AI 生成内容声明

引言:这篇文章回答什么#

这是针对本站三篇文章《MLA 完全拆解》《DSpark:半自回归生成与置信度调度的投机解码》《TPU v1 完全拆解(一)》的读者问题汇总答疑。问题按来源分三组,共 16 个:

来源文章问题
MLA 完全拆解①什么是秩 ②什么是 SVD 截断 ③什么是正则化 ④DeepSeek-V2 Table 7 的基准分别是什么 ⑤分块对角矩阵是什么、为什么 RoPE 两个矩阵相乘得到 RstR_{s-t}qT(Wc)=(WTq)Tcq^\mathrm{T}(Wc)=(W^\mathrm{T}q)^\mathrm{T}c 是什么性质
DSpark(含 DFlash)⑦草稿 token 怎么被验证、什么情况接受、为什么验证能并行、草稿模型为什么更快 ⑧DFlash 是什么、为什么能一次生成 7 个 token ⑨推导加速比公式
TPU v1 完全拆解⑩TPU 不是只做推理吗?训练怎么办?Gemmini 是在 TPU 上训练和推理吗 ⑪目前所有 AI 芯片(GPU/TPU/NPU……)的全景对比

第一组问题集中在线性代数,是理解 MLA 低秩压缩的数学地基;第二组问题集中在投机解码的机制,回答”为什么敢并行”;第三组问题集中在芯片架构与产业全景。每个问题都从直觉讲起,再给严格推导。


第一部分:MLA 的数学基础(对应《MLA 完全拆解》)#

Q1:什么是秩(rank)?#

秩是线性代数里最核心的概念之一,它回答的问题是:一个矩阵作为一个线性变换,输出的空间是几维的?

严格定义:矩阵 ARm×nA \in \mathbb{R}^{m \times n} 的秩,等于 AA 中线性无关的的最大数目,也等于线性无关的的最大数目,记作 rank(A)\operatorname{rank}(A)。行秩等于列秩,这是线性代数里最重要的定理之一(秩定理)。

用几何语言说:AA 把一个 nn 维向量 xx 映射到 mm 维空间里的 AxAx。当 xx 遍历整个 nn 维空间时,AxAx 只会落在一个 rr 维的子空间里,这个 rr 就是秩。举几个例子:

  • 单位矩阵 InI_n 的秩是 nn:它把整个空间原样映射出去,什么都不丢;
  • 一个 2×22 \times 2 的矩阵 (1224)\begin{pmatrix} 1 & 2 \\ 2 & 4 \end{pmatrix} 秩是 1:因为第二列是第一列的 2 倍,两列共线,映射后的点全部落在一条直线上——平面被”压扁”成了一维;
  • 全零矩阵的秩是 0:所有向量都被映射到原点。

一个重要的特例是秩 1 矩阵:任何秩 1 矩阵都可以写成两个向量的外积

A=uvT,Aij=uivjA = u v^\mathrm{T}, \qquad A_{ij} = u_i v_j

其中 uRmu \in \mathbb{R}^mvRnv \in \mathbb{R}^n。这组记号后面会反复出现——下投影 + 上投影的结构本质上就是一系列秩 1 项的叠加

秩为什么和深度学习有关系?因为现实中的数据矩阵(词向量、隐藏状态、KV 矩阵)的秩通常远小于其维度——信息集中在少数几个方向上。如果一个 n×nn \times n 矩阵的秩只有 rnr \ll n,那么它虽然看起来有 n2n^2 个元素,实际只需要 r(n+mr)r(n + m - r) 个参数就能完全描述(秩 rr 矩阵可以分解成 Um×rVr×nTU_{m \times r} V_{r \times n}^\mathrm{T})。参数数量和秩成正比,而不是和维度平方成正比——这就是”低秩”能省钱的数学根源,也是 MLA 压缩 KV Cache 的根据。

Q2:什么是 SVD 截断?#

SVD(Singular Value Decomposition,奇异值分解)是把”矩阵的秩”这个抽象概念变成可计算、可操作的工具。

SVD 的分解式:任意矩阵 ARm×nA \in \mathbb{R}^{m \times n} 都可以分解成三个矩阵的乘积

A=UΣVTA = U \Sigma V^\mathrm{T}

其中:

  • URm×mU \in \mathbb{R}^{m \times m}VRn×nV \in \mathbb{R}^{n \times n} 都是正交矩阵UTU=IU^\mathrm{T}U = IVTV=IV^\mathrm{T}V = I),它们的列分别称为左奇异向量、右奇异向量;
  • ΣRm×n\Sigma \in \mathbb{R}^{m \times n}对角矩阵,对角线上是从大到小排列的非负实数 σ1σ2σmin(m,n)0\sigma_1 \ge \sigma_2 \ge \cdots \ge \sigma_{\min(m,n)} \ge 0,称为奇异值。

SVD 的几何意义极其直观,可以概括为三步:先旋转,再拉伸,再旋转VTV^\mathrm{T} 是一个旋转(正交变换不改变长度和角度),Σ\Sigma 沿各个坐标轴拉伸(σi\sigma_i 就是第 ii 个方向被拉伸的倍数),UU 再转一次。奇异值为 0 的方向被彻底压扁——非零奇异值的个数恰好等于秩。所以 SVD 是”看一个矩阵有多接近低秩”的天然工具:σk+1,σk+2,\sigma_{k+1}, \sigma_{k+2}, \dots 这些小奇异值对应的方向,就是矩阵”几乎不用的方向”。

截断(truncation) 就是:只保留前 kk 个最大的奇异值,把其余全部置零。记 Σk\Sigma_k 为只保留前 kk 个奇异值的对角矩阵,则

Ak=UkΣkVkTA_k = U_k \Sigma_k V_k^\mathrm{T}

其中 UkU_kVkV_k 分别只取前 kk 列。AkA_k 是一个秩至多 kk 的矩阵。为什么说截断是”最优”的?Eckart–Young 定理(1936 年)给出了严格保证:在所有秩不超过 kk 的矩阵中,AkA_kAA 的最佳近似,近似误差正好等于被丢弃的奇异值:

minrank(B)kAB2=σk+1,minrank(B)kABF=σk+12++σmin(m,n)2\min_{\operatorname{rank}(B) \le k} \|A - B\|_2 = \sigma_{k+1}, \qquad \min_{\operatorname{rank}(B) \le k} \|A - B\|_F = \sqrt{\sigma_{k+1}^2 + \cdots + \sigma_{\min(m,n)}^2}

其中 2\|\cdot\|_2 是谱范数,F\|\cdot\|_F 是 Frobenius 范数(所有元素平方和开根号)。也就是说:截断丢掉的信息量是可控的,等于被砍掉的奇异值的大小。如果 σk+1\sigma_{k+1}σ1\sigma_1 小几个数量级,丢掉它几乎无感。

这和 MLA 有什么关系?看《MLA 完全拆解》里那张四机制对比图:

MHA、GQA、MQA 与 MLA 的注意力结构对比:MLA 先用下投影把 K/V 压进 512 维潜向量,再各自上投影恢复
MHA、GQA、MQA 与 MLA 的注意力结构对比:MLA 先用下投影把 K/V 压进 512 维潜向量,再各自上投影恢复

MHA/GQA/MQA 靠”让多个头共享同一份 K/V”省缓存,MLA 靠”把 K/V 压进低维潜向量”省缓存。MLA 的压缩矩阵在训练中学习,其数学本质是数据自适应的低秩近似。(来源:DeepSeek-V2 论文 Figure 3)

MLA 的下投影 WDKVRdc×dW^{DKV} \in \mathbb{R}^{d_c \times d} 和上投影 WUKRnhdh×dcW^{UK} \in \mathbb{R}^{n_h d_h \times d_c} 的复合 WUKWDKVW^{UK} W^{DKV},就是对完整 K/V 投影矩阵的低秩分解:潜变量维度 dc=512d_c = 512 就是”截断点”。SVD 截断是”按奇异值大小硬切”,MLA 是”让神经网络用梯度下降自己找该保留的方向”——两者殊途同归:都在找一个 kk 维子空间,把信息损失压到最小。区别在于 SVD 是最优的闭式解(对固定矩阵),MLA 是端到端学习的近似解(对数据分布整体)。这也解释了论文消融里为什么 MLA 压缩 57 倍后能力不降反升:K/V 的有效信息本来就集中在远低于 16,384 维的低维子空间里。

Q3:什么是正则化?#

正则化(regularization)是机器学习里一类防止过拟合的技术的总称。它的通用思想是:在”把训练数据拟合好”和”保持模型简单”之间加一个约束或惩罚,让模型不要记住训练集里的噪声,而是学到背后的规律。

最常见的几种形式:

  • L2 正则化(权重衰减):在损失函数里加 λw22\lambda \|w\|_2^2,惩罚权重过大。直观理解:权重小意味着输出对输入的变化不敏感,模型更”平滑”;
  • L1 正则化:加 λw1\lambda \|w\|_1,因为 1\|\cdot\|_1 在原点不可导,会把很多权重精确压到 0,产生稀疏解;
  • Dropout:训练时随机丢弃一部分神经元,强迫网络不依赖任何单个神经元;
  • 早停(early stopping):验证集指标不再变好就停止训练;
  • 数据增强、标签平滑、EMA 等:都是隐式的正则化手段。

比形式更重要的是理解正则化的作用机制:它缩小了模型的假设空间。不加正则化时,模型可以在所有可能的参数里找最优;加了约束,模型只能在”简单的那部分参数”里找。假设空间变小 → 方差变小 → 测试集上更稳,代价是可能欠拟合。

回到 MLA 的问题:为什么《MLA 完全拆解》说”低秩压缩本身带有正则化效果”?因为低秩约束和 L2/L1 一样,都是在限制参数的搜索空间。MHA 的 K/V 投影有 16,384 维自由度,MLA 把它压到 512 维潜变量——模型被迫只在这个低维子空间里表达 K/V 信息,那些”靠高维细节硬记训练集”的路径被直接堵死了。这就是为什么论文的消融实验(Table 7)里,大模型换用 MLA 后 MMLU 从 57.5 涨到 59.0、BBH 从 46.6 涨到 50.7——低秩不只是”省内存的代价”,它本身是一种归纳偏置。

但正则化不是免费的:注意同一个表里,小模型的 C-Eval 一项 MLA 反而低了 0.7 分(50.9 vs 51.6)。这说明低秩假设在个别任务上会损失表达能力——正则化总是”整体上赢、局部上亏”,判断它值不值,要看所有基准的综合收益,这正是论文敢下”MLA 强于 MHA”结论的依据。

Q4:DeepSeek-V2 论文 Table 7 里的基准分别是什么?#

Table 7 是 DeepSeek-V2 附录里的消融实验表,对比”只换注意力机制(MHA vs MLA)、其余不变”时模型在五个基准上的成绩。原表的五列是:BBH(EM,3-shot)、MMLU(5-shot)、C-Eval(5-shot)、CMMLU(5-shot)。逐个拆解全称和含义:

BBH(EM,3-shot)——BIG-Bench Hard,来自 Suzgun 等人 2022 年的论文(arXiv:2210.09261)。它是从更大的 BIG-Bench 套件(200+ 个任务)里筛选出的 23 个”此前最好的语言模型都赢不了人类平均分”的推理任务,包括布尔表达式求值、逻辑演绎、Dyck 语言括号匹配、对象追踪、多步算术、几何形状识别、因果判断等。计分方式是 EM(Exact Match,精确匹配):模型输出的答案和标准答案字符串完全一致才算对。3-shot 表示 prompt 里给出 3 个示例再让模型作答。为什么用 EM?BBH 的任务答案形式五花八门(布尔值、数字、选项字母),无法统一用选择题计分,精确匹配是 BIG-Bench 平台的通用计分器。

MMLU(5-shot)——Massive Multitask Language Understanding(大规模多任务语言理解),Hendrycks 等人 2020 年提出(arXiv:2009.03300)。57 个学科、约 15,908 道四选一选择题,覆盖人文、社会科学、STEM、专业领域(法律、医学、伦理等),是英文通用知识理解的行业标准。5-shot 即每个学科给 5 个示例。计分就是选择题正确率(对 MMLU 来说正确率等价于精确匹配,因为答案是选项字母)。

C-Eval(5-shot)——Huang 等人 2023 年提出的中文评估套件arXiv:2305.08322)。52 个学科、13,948 道题,难度覆盖小学到研究生到职业资格考试(公务员、会计、中医等),测试集 8,234 题。它是中文大模型评测的事实标准之一,5-shot。

CMMLU(5-shot)——Chinese Massive Multitask Language Understanding,Li 等人 2023 年提出(arXiv:2306.09212)。67 个学科、约 11,528 道题,比 C-Eval 更强调中国文化背景(中国文学、中国法律、中国历史、传统医学等)和自然科学专业深度。

汇总成一张速查表:

基准全称学科数题量语言计分示例数
BBHBIG-Bench Hard23 个推理任务约 6.5K英文精确匹配 EM3-shot
MMLUMassive Multitask Language Understanding57约 15.9K英文选择题正确率5-shot
C-EvalChinese Evaluation Suite52约 13.9K中文选择题正确率5-shot
CMMLUChinese Massive Multitask Language Understanding67约 11.5K中文选择题正确率5-shot

DeepSeek-V2 是双语(中英)模型,所以评测同时覆盖英文通用知识(MMLU、BBH)和中文能力(C-Eval、CMMLU)。括号里的”EM”和”3-shot/5-shot”是两个正交的信息:EM 是计分方式,N-shot 是提示方式——“给几个示例”和”怎么算对”,不要混淆。

Q5:分块对角矩阵是什么?为什么 RoPE 里两个矩阵相乘得到 RstR_{s-t}#

这是这批问题里最”绕”的一个,拆成三小步讲。

第一步:什么是分块对角矩阵。 分块对角矩阵(block diagonal matrix)是把几个小矩阵沿主对角线排成一串、其余位置全是零的矩阵:

Rt=(Rt(1)Rt(2)Rt(d/2))R_t = \begin{pmatrix} R_t^{(1)} & & & \\ & R_t^{(2)} & & \\ & & \ddots & \\ & & & R_t^{(d/2)} \end{pmatrix}

它作用在向量上的效果是:把向量按块切开,每个块各自被对应的小矩阵变换,块与块之间互不干扰。为什么用分块而不是一个整体矩阵?因为”整块旋转”和”每对坐标各自旋转”是本质不同的变换——见第三步。

第二步:RoPE 的旋转块长什么样。 RoPE(RoFormer 论文 arXiv:2104.09864,2021 年苏剑林团队提出)对位置 tt 施加的旋转矩阵,每个对角块是一个 2×22 \times 2 旋转矩阵:

Rt(i)=(costθisintθisintθicostθi)R_t^{(i)} = \begin{pmatrix} \cos t\theta_i & -\sin t\theta_i \\ \sin t\theta_i & \cos t\theta_i \end{pmatrix}

不同块的角速度 θi\theta_i 不同(RoPE 里 θi=base2i/d\theta_i = \text{base}^{-2i/d}dd 是维度),所以不同维度对旋转”频率”不同:低维块转得快(对近距离位置敏感),高维块转得慢(对远距离位置敏感),这让位置编码有了”多尺度”能力。图中给出直观的旋转示意:

RoPE 的旋转机制:把二维平面内的向量旋转角度 tθ,位置编码通过旋转矩阵 R_t 施加
RoPE 的旋转机制:把二维平面内的向量旋转角度 tθ,位置编码通过旋转矩阵 R_t 施加

RoFormer 论文中的旋转示意图:对位置 t 的向量按角度 tθ 逐二维块旋转,不同块使用不同的 θ 频率。(来源:RoFormer 论文 Figure 1,arXiv:2104.09864)

把每个 2×22 \times 2 块看成复数乘法会非常清晰:把一对坐标 (x1,x2)(x_1, x_2) 写成复数 z=x1+ix2z = x_1 + ix_2,那么旋转块的作用就是 zzeitθiz \mapsto z \cdot e^{it\theta_i}——乘以一个单位复数就是旋转。所以 RoPE 本质上是”把向量的每个二维切面乘上一个位置相关的单位复数”,维度为 dd 的向量对应 d/2d/2 个独立的复平面。

第三步:为什么 (Rtq)T(Rsk)=qTRstk(\mathcal{R}_t q)^\mathrm{T}(\mathcal{R}_s k) = q^\mathrm{T}\mathcal{R}_{s-t}k 核心是旋转矩阵的三个代数性质:

  1. 旋转矩阵是正交矩阵RtTRt=I\mathcal{R}_t^\mathrm{T} \mathcal{R}_t = I,且转置等于逆,即 RtT=Rt1\mathcal{R}_t^\mathrm{T} = \mathcal{R}_t^{-1}
  2. 逆旋转等于负角度旋转Rt1=Rt\mathcal{R}_t^{-1} = \mathcal{R}_{-t}(转 tt 角度的逆操作就是转 t-t 角度);
  3. 旋转复合等于角度相加RtRs=Rst\mathcal{R}_{-t}\mathcal{R}_{s} = \mathcal{R}_{s-t}(先转 ss 再转 t-t,净效果是转 sts - t)。这是旋转矩阵组的核心性质,从复数视角看就是 eitθeisθ=ei(st)θe^{-it\theta} \cdot e^{is\theta} = e^{i(s-t)\theta},一目了然。

然后直接推导:

(Rtq)T(Rsk)=qTRtTRsk=qTRtRsk=qTRstk(\mathcal{R}_t q)^\mathrm{T} (\mathcal{R}_s k) = q^\mathrm{T} \mathcal{R}_t^\mathrm{T} \mathcal{R}_s k = q^\mathrm{T} \mathcal{R}_{-t} \mathcal{R}_s k = q^\mathrm{T} \mathcal{R}_{s-t} k

结果只依赖相对位置差 sts - t,这正是位置编码想要的平移不变性:“我打你”和”你打我”里的两个”你”虽然绝对位置不同,但 query 与 key 的相对距离决定了注意力分数。每个 2×22 \times 2 块独立满足这条性质(分块对角矩阵的乘法就是各块分别乘),所以整条性质对全维向量成立。

顺带一提:这个”旋转 = 复数乘法”的视角对理解 MLA 也很重要。MLA 的解耦 RoPE 把位置信息压缩到 64 维(32 个复平面),位置信号就是这 32 个单位复数的相位——位置编码的容量与复平面数量成正比,这是 partial RoPE 位置敏感度弱于全维度 RoPE 的一个直观解释。

Q6:qT(Wc)=(WTq)Tcq^\mathrm{T}(Wc) = (W^\mathrm{T}q)^\mathrm{T}c 是什么矩阵运算性质?#

这条恒等式由两个线性代数性质组合而成,缺一不可:

性质一:转置的乘积性质 (AB)T=BTAT(AB)^\mathrm{T} = B^\mathrm{T} A^\mathrm{T}——乘积的转置等于”各自转置后倒序相乘”。用它处理左边:

(WTq)T=qT(WT)T=qTW(W^\mathrm{T} q)^\mathrm{T} = q^\mathrm{T} (W^\mathrm{T})^\mathrm{T} = q^\mathrm{T} W

性质二:乘法结合律 (AB)C=A(BC)(AB)C = A(BC)——括号可以随便加。于是:

(WTq)Tc=(qTW)c=qT(Wc)(W^\mathrm{T}q)^\mathrm{T} c = (q^\mathrm{T} W) c = q^\mathrm{T} (W c)

左边是 qT(Wc)q^\mathrm{T}(Wc),两边相等,证毕。这是纯代数恒等式,任何矩阵都成立,不需要任何额外条件。

为什么这条恒等式如此重要?因为两边虽然数值相等,计算结构却可能差很多。设 qRnq \in \mathbb{R}^{n}WRn×mW \in \mathbb{R}^{n \times m}cRmc \in \mathbb{R}^{m}

  • 先算 WcWc:中间结果是一个 nn 维向量,之后 qTq^\mathrm{T} 与它做内积——整个流程里出现了一个 nn 维的中间量;
  • 先算 WTqW^\mathrm{T} q:中间结果是一个 mm 维向量,之后与 cc 做内积——中间量只有 mm 维。

两种算法的乘加次数都在 O(nm)O(nm) 量级,差不多;真正不同的是”谁被变换、变换几次”。在 MLA 的 decode 场景里,这个差异被放大了:cc 对应每一个历史 token 的潜变量(缓存里有 sks_k 个),而 qq 是当前这一个 query。等式左边要对每个历史 token 都做一次上投影(WUKcjW^{UK} c_j,每 token 一次 51216,384512 \rightarrow 16{,}384 的变换);等式右边只需要对当前 query 做一次变换(WUK,TqW^{UK,\mathrm{T}} q),历史 token 原样参与内积。所以矩阵吸收的本质是:把”对大量历史数据逐一遍历的变换”换成”对单个新数据的变换”——这也是为什么吸收后的 decode 每步只读 576 维/token 的 KV,而 naive 模式每步要读 40,960 维/token。

这正是 MLA 矩阵吸收(matrix absorption)的算术本质。《MLA 完全拆解》里的关键一步:

qt,iC,Tkj,iC=qt,iC,T(WiUKcjKV)=(WiUK,Tqt,iC)TcjKVq_{t,i}^{C,\mathrm{T}} k_{j,i}^{C} = q_{t,i}^{C,\mathrm{T}} (W^{UK}_i c_j^{KV}) = (W^{UK,\mathrm{T}}_i q_{t,i}^{C})^{\mathrm{T}} c_j^{KV}

WiUKR128×512W^{UK}_i \in \mathbb{R}^{128 \times 512} 是”把 512 维潜变量恢复成第 ii 头 128 维 key”的上投影。左边要先把每个历史 token 的 cKVc^{KV} 上投影成完整 key(512128512 \rightarrow 128 每头,128 头就是 16,38416{,}384 维)再算内积;右边先把 query 变换进 512 维潜空间,内积全程在潜空间做——历史上每个 token 的 16,384 维 key 都不需要算出来了。这就是”WUKW^{UK} 被吸收进 query 侧”。

这条恒等式也解释了为什么 RoPE 会破坏吸收(这正是 MLA 必须做解耦 RoPE 的原因):如果对 key 直接施加旋转,分数变成 qt,iC,T(RsWiUKcjKV)q_{t,i}^{C,\mathrm{T}} (\mathcal{R}_s W^{UK}_i c_j^{KV}),中间夹了一个位置相关的 Rs\mathcal{R}_s。套用恒等式只能把”整个括号”当做一个整体向量搬到 query 侧:

qT(RsWUKc)=((RsWUK)Tq)Tcq^\mathrm{T} (\mathcal{R}_s W^{UK} c) = \big((\mathcal{R}_s W^{UK})^\mathrm{T} q\big)^{\mathrm{T}} c

问题出在括号里的 RsWUK\mathcal{R}_s W^{UK}:它是”位置矩阵 × 内容矩阵”的复合变换Rs\mathcal{R}_s 依赖历史 token 的位置 ss,而缓存里每个 token 的 ss 各不相同。想把投影预先吸收成与位置无关的矩阵,就要求 Rs\mathcal{R}_s 能挪到 WUKW^{UK} 外面,但矩阵乘法不满足交换律(RsWUKWUKRs\mathcal{R}_s W^{UK} \ne W^{UK} \mathcal{R}_s),挪不动;想在推理时对每个历史 token 实时算 (RsWUK)Tq(\mathcal{R}_s W^{UK})^\mathrm{T} q,又等于放弃”只缓存潜变量”的收益。两条路都堵死。DeepSeek 的解法就是让”位置”和”内容”分家:内容走低秩压缩(可吸收),位置单独走 64 维的 kRk^R(无法吸收,但只有 64 维,缓存代价可忽略)。

如果这组推导让你觉得吃力,说明线性代数基础需要补一轮。推荐两条经典路径:3Blue1Brown 的《线性代数的本质》视频系列(把矩阵乘法和旋转讲成几何直觉)和 MIT 18.06 线性代数公开课(Gilbert Strang 主讲,前四讲覆盖矩阵乘法、消元、逆矩阵、LULU 分解)。


第二部分:投机解码答疑(对应《DSpark》与《DFlash》)#

Q7:草稿 token 是怎么验证的?什么情况接受?为什么验证能并行?草稿模型为什么更快?#

这四个问题其实是投机解码的完整机制,从流程到原理逐层拆开。

验证流程:一次前向,逐位置比对#

投机解码的每一轮分两步。第一步,草稿模型(draft model,也叫 assistant model,通常是目标模型的几十分之一大小)自回归地快速生成 γ\gamma 个候选 token。第二步,目标模型(target model)把前缀和这 γ\gamma 个草稿 token 拼在一起,做一次完整的前向传播,一次性得到 γ\gamma 个位置上各自的条件分布。

投机解码总览:草稿模型先生成 γ 个候选 token,目标模型一次性并行验证全部候选,逐位置接受或拒绝
投机解码总览:草稿模型先生成 γ 个候选 token,目标模型一次性并行验证全部候选,逐位置接受或拒绝

投机解码的两阶段流程:draft 阶段逐 token 生成候选(串行),verify 阶段一次前向得到所有位置的分布(并行)。接受的部分直接输出,拒绝点之后全部丢弃并用目标模型重新采样。(来源:Leviathan et al., arXiv:2211.17192 Figure 1)

验证的数学规则(rejection sampling 风格,来自 Leviathan et al. 2023Chen et al. 2023):设目标模型在位置 kk 的分布是 pk()p_k(\cdot),草稿模型在该位置的分布是 qk()q_k(\cdot),草稿 token 是 x~k\tilde{x}_k,则

P(接受 x~k)=min(1,pk(x~k)qk(x~k))P(\text{接受 } \tilde{x}_k) = \min\left(1, \frac{p_k(\tilde{x}_k)}{q_k(\tilde{x}_k)}\right)

直观解释:

  • 如果目标模型给这个 token 的概率不低于草稿模型(比值 1\ge 1),无条件接受;
  • 如果目标模型觉得它没那么好(比值 <1< 1),则以这个比值的概率接受——即”抛一枚以 p/qp/q 为概率的硬币”,而不是直接拒绝;
  • 被拒绝时,从归一化的残余分布 max(0,pk(x)qk(x))\max(0, p_k(x) - q_k(x)) 里重新采样一个 token,作为这一轮的”bonus token”,同时丢弃该位置之后的所有草稿 token

为什么要用这种”带随机性的接受”而不是简单比对?为了保证输出分布完全等于目标模型自己的分布。验证一下:最终输出某个 token xx 的概率 = 从接受路径得到的 min(qk(x),pk(x))\min(q_k(x), p_k(x)) + 从拒绝后重采样路径得到的 max(0,pk(x)qk(x))\max(0, p_k(x) - q_k(x)) = pk(x)p_k(x)。两条路径加起来恰好还原目标分布——投机解码是数学上无损的加速,草稿模型再差也只是让加速变小,不会让输出质量变差。这是投机解码与所有”截断/采样近似加速”的本质区别。

贪婪解码(greedy,总是取 argmax)这个常见特例下,规则简化为:草稿 token 的 argmax 与目标模型的 argmax 相同就接受,否则拒绝(接受后输出与目标模型贪婪输出完全一致,分布不变性依然成立)。投机解码论文里报告接受率时大多默认这个口径——DSpark 在 GSM8K 上报告的 78.9% 就是一例。

为什么验证可以并行:条件里的”草稿 token”是已知常数#

这是投机解码最反直觉、也最核心的一点。直觉上,“位置 3 的分布依赖位置 2 输出了什么”,位置 2 都没定,位置 3 怎么能同时算?

关键在于区分两种”依赖”:

  • 自回归生成的依赖:位置 ii输入 token 是位置 i1i-1实际采样输出。采样输出没出来,输入就不存在——必须串行;
  • 投机验证的依赖:位置 ii 的输入 token 是草稿 token x~i\tilde{x}_i。而草稿在验证开始前就已经全部生成好了,是已知常数。验证阶段要算的是
pi(x前缀,x~1,x~2,,x~i1)p_i(x \mid \text{前缀}, \tilde{x}_1, \tilde{x}_2, \dots, \tilde{x}_{i-1})

注意条件里的 x~1,,x~i1\tilde{x}_1, \dots, \tilde{x}_{i-1} 都是这一轮固定不变的已知量,不依赖任何正在进行的采样。所以这 γ\gamma 个条件分布同时成立、互不等待,目标模型一次前向(一次 attention + FFN 的矩阵-矩阵乘法)就能把它们全部算出来——并行的是”算分布”,串行的才是”采样输出”,而采样发生在分布全部算完之后

打个比方:考试时每个考生必须等前一排交卷才能答题(自回归);但监考老师可以同时批改所有已交的卷子(验证),因为卷子内容已经固定了。草稿就是”提前交的卷子”,批改(验证)当然可以并行。

草稿模型为什么更快:三个数量级差在哪里#

草稿模型通常只有目标模型的 5%-10% 大小(DSpark 给 Qwen3-8B 配的草稿模型约 400M 参数),它快在三处:

  1. 每 token 计算量小:FLOPs 大致与参数量成正比,400M 模型每 token 的计算量约是 8B 模型的 1/20;
  2. 权重读取带宽小(decode 阶段最关键):自回归 decode 每一步都要把全部权重从 HBM 读一遍(权重是每 token 必读的),decode 是典型的 memory-bound 场景。8B 模型 bf16 权重约 16 GB,400M 模型约 0.8 GB——每生成一个 token,草稿模型要搬的数据少一个数量级以上;
  3. KV Cache 小:草稿模型的 KV Cache 只有目标模型的几十分之一,长上下文下读历史 KV 的带宽压力小得多。

下面这张论文里的时间线图把”快在哪里”画得很直观:

投机解码与自回归解码的墙钟时间线对比:自回归每 token 一个完整前向,投机解码一轮草稿加一次并行验证产出多个 token
投机解码与自回归解码的墙钟时间线对比:自回归每 token 一个完整前向,投机解码一轮草稿加一次并行验证产出多个 token

墙钟时间线(wall-clock trace):上方是纯自回归,每个 token 独占一个前向的耗时;下方是投机解码,草稿阶段(蓝)耗时远小于目标前向(红),一次目标前向同时验证多个位置,多个 token 的产出被”折叠”进同一段耗时。(来源:Leviathan et al., arXiv:2211.17192)

但这三个优势有一个前提:草稿必须足够小。如果草稿模型太大,草稿生成时间 TdT_d 会吞噬加速收益(这正是加速比公式里 Td/TtT_d/T_t 项的来源,见 Q9)。Leviathan 等人的经验是草稿模型要比目标模型小约两个数量级,或者浅得多(DFlash 用 5 层草稿模型,耗时约目标模型的 1%)。

Q8:DFlash 是什么?为什么”预测下一个 token 必须要前面的 token 结果”却可以一次生成 7 个?#

DFlash(Block Diffusion for Flash Speculative Decoding,块扩散快速投机解码)是 DeepSeek 与北京大学 z-lab 联合提出的投机解码框架,2026 年 2 月发布在 arXiv(arXiv:2602.06036),被 ICML 2026 接收。本站已有完整拆解《DFlash 块扩散解码》,这里只针对”为什么能并行生成”这个疑问讲透。

先回答直觉里的矛盾。“预测下一个 token 必须要前面的 token 结果”——这句话对生成(decoding)成立:生成出的序列必须因果一致,位置 ii 的输出会成为位置 i+1i+1 的输入,所以必须逐 token 串行。但草稿(drafting)不需要这个约束。草稿不是最终输出,它只是一份”猜测”,允许错——错了验证阶段会抓住并重采样(Q7 的机制保证最终分布不变)。既然是猜测,就没有”必须看到前一个真实输出”的义务,可以所有位置同时猜

DFlash 的具体做法:每一轮把草稿块构造成 [锚点, MASK, MASK, ..., MASK]——锚点是上一轮目标模型产出的真实 token(强条件),后面 k1k-1 个位置全部填掩码 token,然后草稿模型一次前向把所有 MASK 位置预测出来。关键在于草稿模型内部使用块内双向(非因果)注意力:位置 3 的预测可以同时”看到”位置 1、2、4、5 的表示——这在自回归模型里不可能,但在”一次填完一版草稿”的任务里是合法的,还能利用块内全局一致性(预测 for 时可以让块内其他地方同时倾向 range)。

代价是什么?每个位置的预测失去了”显式以实际前文为条件”的能力,单 token 准确率下降。DFlash 用两个设计补回来:

  1. 锚点 + KV 注入:锚点是目标模型的真实输出,提供强起点条件;更关键的是,目标模型多个中间层(默认 5 层)的隐藏状态被融合后注入草稿模型的每一层——草稿”看到”的是目标模型对整个前缀的深层理解,而不是自己从头算。这就是图里的设计:

DFlash 推理设计:目标模型多层隐藏状态融合后注入草稿模型每一层的 KV 缓存,让并行草稿获得目标模型的深层语义条件
DFlash 推理设计:目标模型多层隐藏状态融合后注入草稿模型每一层的 KV 缓存,让并行草稿获得目标模型的深层语义条件

KV 注入(KV injection):从目标模型第 [1, 8, 14, 20, 27] 层等位点提取隐藏状态,融合成单个上下文特征后写入草稿模型每一层的 KV 缓存,草稿的 query 同时对这些注入的 key/value 做注意力。(来源:DFlash 论文 Figure 2,arXiv:2602.06036)

  1. 接受率换接受长度:单 token 接受率低,但草稿块是一次前向同时给出的,草稿耗时接近常数。论文数据很说明问题(Gemma 4 26B 对比):DFlash 单 token 接受率只有 16%(EAGLE-3 是 48%),但平均接受长度 3.45 > EAGLE-3 的 2.44,端到端加速 2.19× > 1.69×。多猜一些、错得多一些、但猜的成本几乎为零——这就是”以并行换精度、以验证保正确”的权衡。

DFlash 用这种机制在 Qwen3-8B 上拿到了 MATH-500 6.08×、HumanEval 5.52× 的加速(EAGLE-3 分别是 2.4×、2.3×),在 NVIDIA Blackwell 上用 gpt-oss-120b 实现约 15× 的高并发吞吐提升。

Q9:加速比公式 加速比γ接受率1+TdTt+TvTt\text{加速比} \approx \frac{\gamma \cdot \text{接受率}}{1 + \frac{T_d}{T_t} + \frac{T_v}{T_t}} 是怎么来的?#

这是投机解码文章里最常见也最容易被误用的一条公式。先给出严格推导,再说明它和”≈“版本的关系。记号:γ\gamma 草稿块长度,α\alpha 平均逐位置接受率,TdT_d 草稿生成时间,TvT_v 目标模型验证时间,TtT_t 目标模型生成单 token 的时间。

无投机基线:每生成 1 个 token 耗时 TtT_t,吞吐 1/Tt1 / T_t

投机解码:每一轮耗时 Td+TvT_d + T_v(草稿 + 验证,验证是并行的),产出的 token 数 = 被接受的草稿数 τ\tau + 1 个 bonus token(拒绝点处目标模型重新采样的那个,或全部接受时位置 γ+1\gamma+1 的预测——总之每轮至少白拿一个)。在逐位置接受相互独立、概率均为 α\alpha 的假设下,期望接受数

E[τ]=i=1γP(前 i 个全部被接受)=i=1γαi=α(1αγ)1αE[\tau] = \sum_{i=1}^{\gamma} P(\text{前 } i \text{ 个全部被接受}) = \sum_{i=1}^{\gamma} \alpha^i = \frac{\alpha(1 - \alpha^{\gamma})}{1 - \alpha}

所以每轮期望 token 数(Leviathan 论文公式 (1)):

E[τ]+1=1αγ+11αE[\tau] + 1 = \frac{1 - \alpha^{\gamma+1}}{1 - \alpha}

精确加速比 = 每轮 token 数 ÷ 每轮耗时,再除以基线的 1/Tt1/T_t

加速比=E[τ]+1Td+TvTt=1αγ+1(1α)(TdTt+TvTt)\text{加速比} = \frac{E[\tau] + 1}{T_d + T_v} \cdot T_t = \frac{1 - \alpha^{\gamma+1}}{(1 - \alpha)\left(\frac{T_d}{T_t} + \frac{T_v}{T_t}\right)}

这是不掺任何近似的结果。现在看”≈“版本是怎么来的,两个近似:

近似一(分子):把每轮产出粗略估计为”平均接受率 × 草稿长度”,即 E[τ]+1αγE[\tau] + 1 \approx \alpha\gamma。这个近似在 α\alpha 接近 1 时相当好(接受几乎总会发生,每轮几乎总拿到接近 γ+1\gamma + 1 个 token:α=0.95\alpha = 0.95γ=7\gamma = 7 时精确值 10.9580.05=6.73\frac{1 - 0.95^8}{0.05} = 6.73,粗略值 6.656.65);α\alpha 中等时它明显高估每轮收益(α=0.7\alpha = 0.7γ=7\gamma = 7 时精确值只有 10.780.3=3.14\frac{1 - 0.7^8}{0.3} = 3.14,粗略值 4.94.9)。所以它适合量级判断,不适合精确预测。

近似二(分母):验证 γ\gamma 个 token 的一次前向,耗时与单 token 前向差不多——因为目标模型的计算量主要由 FFN 的矩阵乘主导,处理 γ\gamma 个 query 位置相当于一次更宽的 GEMM,深度(层数)没变;只有注意力和 KV 读取随序列变长而增加。于是把验证时间拆成”一个基准前向 TtT_t + 序列变长带来的边际开销 Δ\Delta”:

Tv=Tt+ΔTd+Tv=Td+Tt+ΔT_v = T_t + \Delta \quad\Longrightarrow\quad T_d + T_v = T_d + T_t + \Delta

合并两个近似(每轮产出 αγ\alpha\gamma 个 token、耗时 Td+Tt+ΔT_d + T_t + \Delta),相对基线(每 token TtT_t):

加速比αγTtTd+Tt+Δ=αγ1+TdTt+ΔTt\text{加速比} \approx \frac{\alpha\gamma \cdot T_t}{T_d + T_t + \Delta} = \frac{\alpha\gamma}{1 + \frac{T_d}{T_t} + \frac{\Delta}{T_t}}

分母里的”1”就是目标模型那一个基准前向的耗时——投机解码每轮无论如何都要付一次目标前向的”底价”,这正是”验证 ≈ 单 token 生成”这一事实的体现。把公式里的 TvT_v 理解为这里的边际开销 Δ\Delta,就得到文章里的写法。注意文献里 TvT_v 的口径并不统一(有的指总验证时间,此时分母不应再额外加 1),这是这条公式最容易被误用的地方:用精确式推导、用近似式找感觉,别混着用。

代入数值验证。以 DSpark 在 Qwen3-8B 上 GSM8K 的数据为例:γ=7\gamma = 7α=0.789\alpha = 0.789,草稿模型约 400M(取 Td/Tt0.05T_d / T_t \approx 0.05),验证前向约等于一个基准前向(Δ0\Delta \approx 0TvTtT_v \approx T_t):

  • 精确式:10.7898(10.789)(0.05+1)=0.84980.211×1.053.84\frac{1 - 0.789^8}{(1 - 0.789)(0.05 + 1)} = \frac{0.8498}{0.211 \times 1.05} \approx 3.84
  • 近似式:7×0.7891+0.05+1=5.522.052.69\frac{7 \times 0.789}{1 + 0.05 + 1} = \frac{5.52}{2.05} \approx 2.69

论文实测 GSM8K 加速比是 4.06×,更贴近精确式(3.84×)。差别来自近似一丢掉的 bonus token:接受率高时”每轮白拿的 +1”不可忽略。这也解释了为什么 α\alpha阈值效应明显:α\alpha 低于约 0.5-0.6 时,αγ\alpha\gamma 掉得比分母快,投机解码可能连 1× 都保不住;高于 0.75 后,加速比随 α\alpha 的增长非常陡峭。

由这条公式可以直接读出三条工程结论:提高接受率 α\alpha(训练草稿模型对齐目标分布,DSpark 的串行头、DFlash 的 KV 注入都在干这个)、压低草稿耗时 TdT_d(草稿模型要小、要浅)、γ\gamma 不是越大越好γ\gamma 进分子线性增长,但尾部接受率衰减会拉低有效 α\alpha,且 TvT_v 随序列变长边际上涨)——DSpark 把 γ\gamma 定为 7、DFlash 用 8/16,都是在这三个方向上的折中。


第三部分:TPU 与 AI 芯片答疑(对应《TPU v1 完全拆解》)#

Q10:TPU 不是只做推理吗?训练怎么办?Gemmini 是在 TPU 上训练和推理的吗?#

这个问题里藏着两个需要分别澄清的误解。

误解一:“TPU 只做推理”。 这句话只对第一代 TPU 成立。TPU v1 是 2015 年设计、2017 年 ISCA 论文(arXiv:1704.04760)公开的纯推理芯片:8 位整数脉动阵列、没有为反向传播设计的高精度路径、不更新权重。但 Google 的 TPU 家族远不止 v1:

代际发布定位关键变化
TPU v12015 部署,2017 论文纯推理256×256 INT8 脉动阵列,92 TOPS
TPU v22018(Cloud TPU 上线)训练 + 推理新增向量单元与标量单元、bfloat16,支持反向传播
TPU v32018训练 + 推理算力翻倍,水冷
TPU v4 / v5p2021 / 2023训练 + 推理光交换(OCS)、3D torus 扩展
TPU v6e(Trillium)2024训练 + 推理每芯片 4.7× v5e 算力
TPU v7(Ironwood)2025推理为主每芯片约 4.6 PFLOPS FP8、192 GB HBM,9216 芯片 Superpod 达 42.5 EFLOPS FP8

注意一个有意思的循环:v2/v3 是”为训练而生”,而 2025 年的 v7 Ironwood 官方定位又回到了”inference era”——但这次它是训练推理都支持的高算力芯片,定位转变的原因不是能力受限,而是推理市场变大。所以准确的表述是:TPU v1 纯推理,TPU v2 及以后训练推理通吃。Google 自家的 Gemini 系列就是在 TPU v4/v5p 上训练的。

误解二:“Gemmini 是在 TPU 上训练和推理的”。 这是把两个都叫”脉动阵列加速器”的东西当成了一家。Gemmini 和 Google TPU 的血缘关系是架构上的(都采用脉动阵列),不是产品上的——Gemmini 是加州大学伯克利分校的开源硬件项目(GitHub: ucb-bar/gemmini),跟 Google 没有任何关系。

Gemmini 到底是什么?它是用 Chisel 硬件描述语言写成的参数化脉动阵列生成器:给定阵列尺寸、数据类型、数据流(output-stationary 或 weight-stationary)、SRAM 容量等参数,自动生成一个完整的加速器 SoC。它挂载在伯克利开源的 Rocket Chip / Chipyard 芯片生态里,通过 RoCC 协处理器接口和自定义 RISC-V 指令被 CPU 调用。它既不是一颗固定芯片,也不是云服务——是造芯片的”模板”,用来做体系结构研究和教学(可以在 FPGA 上跑,也流片过 TSMC 16nm 和 Intel 22FFL 测试芯片)。下图是真正的 Google TPU v1 的框图,注意它和 Gemmini 的相似性恰恰只在”脉动阵列 + SRAM 缓冲 + 累加器”这个粗粒度骨架:

TPU v1 芯片框图:256×256 脉动阵列 MXU 居中,配 Unified Buffer、累加器与权重 FIFO,主机经 PCIe 发指令驱动(来源:TPU 论文 Figure 1)
TPU v1 芯片框图:256×256 脉动阵列 MXU 居中,配 Unified Buffer、累加器与权重 FIFO,主机经 PCIe 发指令驱动(来源:TPU 论文 Figure 1)

TPU v1 框图(Google,2017):这是一颗由主机 CPU 驱动的协处理器,没有自主调度。Gemmini 的骨架与之神似(脉动阵列 + 显式管理的 SRAM 缓冲 + 累加器),但 Gemmini 是伯克利开源的、可参数化的芯片生成器,两者不是同一个东西。

至于”Gemmini 能不能训练”:可以,但那是扩展能力,不是默认形态。Gemmini 最常用的配置是 INT8 量化推理(8 位输入、32 位累加),但它的数据类型是完全参数化的,可以生成浮点实例;伯克利的技术报告《End-to-end Model Inference and Training on Gemmini》(EECS-2021-37)就展示了在 ONNX Runtime 后端上把推理引擎扩展成训练引擎的完整方案。一句话总结:Gemmini 不是跑在 TPU 上的东西,它自己就是一颗(可以按参数生成、可以训练推理通吃的)脉动阵列加速器芯片

Q11:AI 芯片全景:GPU、TPU、NPU 以及各路”PU”怎么比较?#

2026 年 8 月的加速器市场已经非常拥挤。先把玩家按技术路线分成三类,再给全景表,最后讲怎么选。

路线一:通用可编程路线(GPU 血统)。以 NVIDIA 为代表,AMD、Intel、华为昇腾(910C 之后)都在这条线上。特征是 SIMT/可编程核心 + 统一内存 + 通用指令集,什么模型都能跑,靠软件生态(CUDA/ROCm/CANN)取胜。训练推理通吃,但通用性有代价:能效和面积效率低于专用 ASIC。

路线二:专用 ASIC 路线(脉动阵列/固定数据流)。Google TPU、寒武纪、百度昆仑芯、亚马逊 Trainium(可编程 NSIM 核心 + 定制互连)都在此列。特征是计算单元与数据流针对矩阵乘/注意力深度定制,能效高、确定性好,但灵活性和生态成熟度不如 GPU。

路线三:SRAM 大缓存路线(把内存搬到芯片上)。Groq LPU、Cerebras WSE 为代表。核心洞察:LLM decode 的瓶颈是 HBM 带宽,那就把权重全部放进片上 SRAM。Groq LPU 每芯片约 230 MB SRAM、80 TB/s 片上带宽;Cerebras WSE-3 直接把 44 GB SRAM 和 90 万核心做在一块晶圆上,片上带宽 21 PB/s。这条路线延迟极低(毫秒级 TTFT)、确定性极强,但显存容量小(大模型要跨多芯片切分)、训练支持有限(Groq 纯推理,Cerebras 支持训练)。

全景速查表(2026 年 8 月视角,厂商口径数据以”约”标注):

厂商芯片上市算力(厂商峰值)显存 / 带宽互连定位
NVIDIAH100 SXM2022989 TFLOPS FP16(稀疏 1979)80 GB HBM3 / 3.35 TB/sNVLink 4 900 GB/s训练推理通用标杆
NVIDIAH2002024同 H100141 GB HBM3e / 4.8 TB/s同上推理大显存改良
NVIDIAB200 / GB2002024约 9 PFLOPS FP4(稠密)192 GB HBM3e / 8 TB/sNVLink 5 1.8 TB/s训练推理旗舰
NVIDIAB300(Blackwell Ultra)/ GB3002025约 14-15 PFLOPS FP4(稠密)288 GB HBM3e / 8 TB/s同上推理强化版
NVIDIAVera Rubin(NVL72)2026 发布未完全公开NVLink 6 3.6 TB/s、机架 260 TB/s下一代旗舰
AMDMI300X20231.3 PFLOPS FP16192 GB HBM3 / 5.3 TB/sInfinity Fabric训练推理,ROCm
AMDMI355X202510.1 PFLOPS FP8 / 20.1 PFLOPS FP4288 GB HBM3e / 8 TB/s对标 B300,1400 W 液冷
GoogleTPU v7 Ironwood2025约 4.6 PFLOPS FP8/芯片192 GB HBM/芯片3D torus + OCS云推理训练,不外卖
AmazonTrainium22024 GA1.3 PFLOPS FP8(稠密)/芯片96 GB HBM / 2.9 TB/sEFA训练为主
AmazonTrainium32025.122.52 PFLOPS MXFP8/芯片144 GB HBM3e / 4.9 TB/sEFA训练推理
IntelGaudi 320241835 TFLOPS BF16128 GB HBM2e / 3.7 TB/s训练,性价比路线
华为Ascend 910B2023376 TFLOPS FP1664 GB HBM训练推理,CANN
华为Ascend 910C2025约 800 TFLOPS FP16(双 die)64 GB HBM3e昇腾高速互连训练推理主力
华为Ascend 950PR/950DT2026约 1 PFLOPS FP8128 / 144 GBUB-Mesh + 灵衢光互连推理(PR)/训练解码(DT)
寒武纪思元 590 / 6902025-2026未完全公开国产训练推理
百度昆仑芯 P8002025约 345 TFLOPS FP16推理为主
CerebrasWSE-3(CS-3)2024125 PFLOPS FP16(稀疏)44 GB 片上 SRAM / 21 PB/sSwarmX训练推理,超低延迟
GroqLPU(Groq 3)2024 / 2026188 TFLOPS FP16 / 750 TOPS INT8(每芯片)约 230 MB SRAM / 80 TB/sRealScale纯推理,确定性延迟

几点需要诚实标注:B300 的 FP4 数字在不同来源有 14/15 PFLOPS 两种口径;昇腾 910C 的算力有”800 TFLOPS FP16”和更高的两种传闻,这里采用多数来源口径;寒武纪 590/690 的具体算力官方未完整公开;Groq 与 NVIDIA 在 2025 年 12 月达成 20 亿美元 IP 授权协议(非排他),Groq 3 LPU 已进入 NVIDIA Vera Rubin 平台的第七芯片席位。这张表里的数字大多是厂商宣传口径,未经独立复测,对比时要按同一精度、同一稠密/稀疏口径,否则没有意义。

怎么读这张表? 三个实用视角:

  1. 算力口径陷阱:FP4 数字大约是 FP8 的两倍、FP16 的四倍,还有稠密/稀疏(2:4 sparsity)之分。H100 的”989 TFLOPS FP16 稀疏”和 MI355X 的”10.1 PFLOPS FP8”根本不是同一把尺子。跨芯片对比一律换算到同一精度;
  2. 推理时代带宽压倒算力:decode 阶段是 memory-bound,这时显存带宽、显存容量比峰值算力更决定吞吐。AMD MI355X 的 288 GB / 8 TB/s、NVIDIA B300 的 288 GB、华为 950DT 的 144 GB,都是为”大模型 + 长上下文 + 高并发”配的;Groq/Cerebras 则直接把内存做到芯片上,用 10-100 倍的片上带宽换极致延迟;
  3. 生态是最大的护城河:CUDA 有 18 年积累的库和编译器生态,ROCm、CANN、XLA 都在追赶。选型时”能不能跑起主流框架(vLLM/SGLang/TensorRT)“往往比纸面算力更重要——这也是为什么昇腾 950 系列在 SIMD 之外补了 SIMT 编程模型、对 CANN 生态开放共建,本质上都是想复制 CUDA 的”软件锁定”。

当前市场的结构性结论:训练市场仍由 NVIDIA 主导(Rubin 平台 + Groq IP 授权巩固地位),Google 用 TPU 自给自足并外供云服务,华为昇腾在国产替代政策下高速放量(2026 年目标约 60 万颗),AMD 用显存容量和性价比卡位推理,Groq/Cerebras 吃下”延迟敏感 + 低并发”的利基,寒武纪、昆仑芯等国产厂商在推理和特定训练场景逐步渗透。对部署者来说,不存在”最好的芯片”,只有”和你的负载形态(延迟约束、并发、上下文长度、生态依赖)最匹配的芯片”。


小结:16 个问题的答案速查#

问题一句话答案
秩是什么矩阵作为线性变换输出空间的维数,等于线性无关行/列的最大数目;低秩 = 信息集中在少数方向
SVD 截断是什么保留前 k 个奇异值的最优 k 秩近似(Eckart–Young 定理),误差 = 被丢弃的奇异值
正则化是什么约束假设空间、防止过拟合的机制;低秩压缩就是隐式正则化
Table 7 的基准BBH=23 个困难推理任务的精确匹配评测;MMLU/C-Eval/CMMLU=英/中多学科选择题评测
分块对角与 RstR_{s-t}每对坐标独立旋转 = 复平面乘单位复数;旋转复合即角度相加,RtRs=RstR_{-t}R_s = R_{s-t}
重结合恒等式转置乘积性质 + 乘法结合律;本质是把大矩阵投影挪到小向量一侧,即 MLA 的矩阵吸收
投机解码验证min(1,pt/qd)\min(1, p_t/q_d) 概率接受、残余分布重采样;分布不变;验证并行是因为条件里是已知的草稿 token
草稿为什么快参数少(FLOPs 少)+ 权重小(带宽少)+ KV 小;decode 是 memory-bound,带宽差即速度差
DFlash 为什么能并行草稿允许错,猜测不需要因果依赖;双向注意力 + 锚点 + KV 注入弥补精度;验证兜底保证无损
加速比公式精确式 (1αγ+1)/((1α)(Td/Tt+Tv/Tt))(1-\alpha^{\gamma+1})/((1-\alpha)(T_d/T_t+T_v/T_t));≈ 式由”每轮 ≈ αγ 个 token”和”验证 ≈ 一个基准前向”两个近似而来
TPU 只做推理吗只有 v1 是纯推理;v2 起训练推理通吃;v7 Ironwood 又强调推理但能力是训练级的
Gemmini 是什么伯克利的开源参数化脉动阵列生成器(Chisel/Rocket Chip 生态),与 Google TPU 无关;默认 INT8 推理,可扩展训练
AI 芯片怎么比三条路线(通用 GPU / 专用 ASIC / SRAM 大缓存),按同一精度口径比算力,按带宽比推理,按生态比落地

这篇答疑对应三篇前作:《MLA 完全拆解》讲的是”低秩压缩 + 解耦 RoPE + 矩阵吸收”的完整机制,《DSpark》和《DFlash 块扩散解码》是投机解码的两条路线,《TPU v1 完全拆解(一)》讲的是推理专用芯片的架构哲学。数学、机制、硬件三层补完,再看这些文章会顺很多。

参考资料#

  1. DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model(论文全文,Table 7 消融实验出处)
  2. RoFormer: Enhanced Transformer with Rotary Position Embedding(RoPE 原始论文,Figure 1 旋转示意图)
  3. Fast Inference from Transformers via Speculative Decoding(Chen et al., 2023,验证与接受规则)
  4. Fast and Robust Next-Generation Machine Translation / Fast Drafting(Leviathan, Kalman & Matias, ICML 2023,加速比公式与最优 γ 分析)
  5. DFlash: Block Diffusion for Flash Speculative Decoding(论文全文)
  6. DeepSpec: A Full-Stack Codebase for Training and Evaluating Speculative Decoding Algorithms(DSpark/DFlash 训练框架)
  7. In-Datacenter Performance Analysis of a Tensor Processing Unit(TPU v1 论文,Figure 1 芯片框图)
  8. Gemmini: Berkeley’s Systolic Array Generator(伯克利开源脉动阵列生成器)
  9. End-to-end Model Inference and Training on Gemmini(伯克利技术报告 EECS-2021-37 全文 PDF)
  10. BIG-Bench Hard: Challenging BIG-Bench Tasks and Whether Chain-of-Thought Can Solve Them(BBH 定义与 EM 计分)
  11. Measuring Massive Multitask Language Understanding(MMLU 论文)
  12. C-Eval: A Multi-Level Multi-Discipline Chinese Evaluation Suite(C-Eval 论文)
  13. CMMLU: Measuring Massive Multitask Language Understanding in Chinese(CMMLU 论文)
  14. Chinese AI Chips Landscape 2026: Huawei Ascend, Cambricon, Biren, Moore Threads(国产 AI 芯片全景)
  15. 华为昇腾系列 AI 芯片详细参数对比(2025-2028)
  16. Google Ironwood TPU 与 NVIDIA 芯片对比(digit.in 解读)
  17. AMD Instinct MI350 系列与 Blackwell 对比(The Register)
  18. AI Accelerators Beyond GPUs: TPU, Trainium, Gaudi, Cerebras, Groq(各芯片规格汇总)
  19. AWS Trainium(官方产品页,Trainium2/Trainium3 规格)
  20. Boost Inference Performance up to 15x on NVIDIA Blackwell Using DFlash Speculative Decoding(NVIDIA 技术博客)
  21. MIT 18.06 线性代数公开课(矩阵乘法、转置与分解的系统复习)

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

答疑特辑:秩与 SVD、RoPE 旋转矩阵、投机解码原理与 AI 芯片全景
https://pinghaoyang.com.cn/aigc/posts/inference-qa/
作者
平昊阳
发布于
2026-08-21
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
平昊阳
乘长风,破巨浪, 展鸿图于未央!
--
总访问量
--
访客数
公告
欢迎来到我的个人博客!欢迎关注交流吖!
更多相关公告,见
社交-留言」。
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
站点统计
文章
66
分类
16
标签
93
总字数
477,284
运行时长
0
最后活动
0 天前

文章目录