L大语言模型从理论到实践
阅读 PDF ↗
CHAPTER 33

推理计算优化

缓存减少已经完成的计算,算子优化减少完成一次计算所需的数据移动与调度,推测解码则尝试在一次目标模型调用中确认多个输出。三者作用于不同成本项。判断一种优化是否成立,首先要确定它保留了什么:同一数学算子、同一概率分布,还是仅保留某项任务质量的近似水平。

第30章《增量解码》解释历史状态的复用。本章先推导在线归一化与分块注意力,再讨论融合、编译和形状,最后证明精确推测解码的分布保持性质。低精度误差在第34章《模型优化》展开,请求级调度在第31章《批处理调度》展开。

33.1计算、搬运及启动成本

本章主要符号见表33.1

表 33.1 推理计算优化的主要符号。

符号 含义
\(T_q,T_k,d_h,d_v\) 查询数、键数、键头维数和值头维数。
\(Q,K,V\) 单头矩阵,形状分别为 \(T_q\times d_h,T_k\times d_h,T_k\times d_v\)
\(z_j,v_j\) 某查询对第 \(j\) 个键的分数及对应值向量。
\(m,\ell,u\) 已处理键集合的最大分数、缩放指数和、缩放值加权和。
\(F,Q_b,R,b\) 运算量、搬运字节数、有效计算速率和有效带宽。
\(p,q\) 给定前缀下的目标采样分布与草稿采样分布。
\(k,\alpha\) 单轮草稿候选数及特定假设下的条件接受概率。

对一个执行片段,计算时间至少为 \(\frac{F}{R}\),数据传输时间至少为 \(\frac{Q_b}{b}\)。两者可部分重叠,因此 \(\max(\frac{F}{R},\frac{Q_b}{b})\) 是简化下界,而不是全部延迟。主机调度、设备启动、同步和布局变换还会增加成本。小矩阵可能受启动时延限制,大矩阵可能受计算或带宽限制,不能只比较浮点运算数。

若某优化仅加速原总时间中的比例 \(f\),该部分加速 \(s\) 倍,其他部分不变,则总加速比为

\[ S=\frac{1}{(1-f)+\frac{f}{s}}. \tag{33.1}\]

例如某算子占40%,即使加速4倍,总加速也只有 \(\frac{1}{0.6+0.1}\approx1.43\)。加入新的布局转换或同步后还会更低。算子收益必须沿完整路径核算。

33.2在线 Softmax 的充分统计量

分块归一化合并

单查询注意力输出为

\[ o=\frac{\sum_j e^{z_j}v_j}{\sum_j e^{z_j}},\qquad z_j=\frac{q^\mathsf Tk_j}{\sqrt{d_h}}+M_j. \tag{33.2}\]

\(M_j\) 表示允许的加性偏置或掩码。将键分为两组后,各组独立 Softmax 的分母不同,直接相加或等权平均两组输出通常错误;必须知道每组在全局分母中所占的质量。

对非空有效键集合 \(A\),保存

\[ m_A=\max_{j\in A}z_j,\quad \ell_A=\sum_{j\in A}e^{z_j-m_A},\quad u_A=\sum_{j\in A}e^{z_j-m_A}v_j. \tag{33.3}\]

\(m_A,\ell_A\) 是标量,\(u_A\in\Real^{d_v}\)。在线归一化通过更新最大值与归一化和,避免先遍历完整向量求最大值再单独计算分母(Milakov 和 Gimelshein 2018)

适配器合并定理

对不相交有效集合 \(A,B\),令 \(m=\max(m_A,m_B)\),则

\begin{align} \ell&=e^{m_A-m}\ell_A+e^{m_B-m}\ell_B,\tag{33.4}\\ u&=e^{m_A-m}u_A+e^{m_B-m}u_B. \tag{33.5}\end{align}

因为 \(e^{m_A-m}e^{z_j-m_A}=e^{z_j-m}\),第一行正好等于全体键的缩放指数和,第二行同理。因此合并结果仍满足式(33.3),最终输出为 \(o=\frac{u}{\ell}\)

只要每次合并保留这三个统计量,就可以按任意分块顺序处理同一键集合。在精确算术下,合并对应集合并集,因而结果与分块方式无关;浮点舍入会受顺序影响。不物化完整概率矩阵并不意味着省略某些键,也不意味着近似 Softmax。

空块不能直接通过 \(m=-\infty\) 与另一个空块相减来处理。实现应使用有效标志:全掩码块不贡献统计量;首个非空块直接初始化。若整个查询行没有合法键,数学分母为零,需要按模型接口明确定义输出或拒绝输入,不能让未定义值传播。

例25.1

设分数为 \((\log2,\log1,\log6)\),对应标量值为 \((1,4,5)\),前两个键组成块 \(A\),第三个键组成块 \(B\)。有 \[\begin{aligned} m_A&=\log2,&\ell_A&=\frac{3}{2},&u_A&=3,\\ m_B&=\log6,&\ell_B&=1,&u_B&=5. \end{aligned}\] 共同最大值为 \(\log6\),块 \(A\) 的缩放系数为 \(\frac{1}{3}\),因此 \[\ell=(\frac{1}{3})(\frac{3}{2})+1=\frac{3}{2},\qquad u=(\frac{1}{3})3+5=6,\qquad o=4.\] 完整计算为 \(\frac{2\times1+1\times4+6\times5}{2+1+6}=4\)。两个块的局部输出分别为2和5;直接相加得到7,等权平均得到3.5,均不等于正确结果,因为两块的全局指数质量分别为3和6。

算法33.1 单查询的分块精确注意力

输入:查询、按块读取的键值、可见性规则;输出:注意力值向量。

  1. 初始化为“尚无有效键”,不对空集合最大值作算术运算。

  2. 读取一块键值,计算分数与掩码。若无合法位置,跳到下一块。

  3. 计算本块 \((m_b,\ell_b,u_b)\);若是首个有效块,直接保存,否则按式(33.5)合并。

  4. 处理完所有块后,若存在有效键,返回 \(\frac{u}{\ell}\);否则执行预先定义的全掩码行处理。

33.3FlashAttention 及存储层次

显式实现通常先写出 \(T_q\times T_k\) 分数,再读出求 Softmax,最后读取概率矩阵计算与 \(V\) 的乘积。若 \(T_q=T_k=8192\),单头分数矩阵含67108864个元素;即使每元素仅2字节,也占128 MiB,32头则仅这一类矩阵已达4 GiB,尚未计批量和其他状态。

FlashAttention 将查询块、键值块及归一化状态安排在片上存储中,利用分块计算减少中间矩阵与高带宽显存之间的往返(Dao 等 2022)。核心收益在于数据移动,不是将稠密注意力的 \(O(T_qT_kd_h)\) 算术阶改成线性。因果掩码可以跳过某些完全不可见块,但仍保留对应可见集合内的完整注意力。

分块注意力的数据移动。完整分数矩阵不必写回显存,但查询仍处理全部合法键。
图 33.1 分块注意力的数据移动。完整分数矩阵不必写回显存,但查询仍处理全部合法键。

块大小、并行度及反向重算

较大的块可以复用更多数据,却占用更多寄存器和片上存储,降低同时驻留的执行单元数;过小的块则增加读取和循环开销。因此块大小由头维、精度、设备资源及并行映射共同决定,不能只追求最大块。

训练时无需保存全部注意力概率,也可以在反向中由保存的行归一化信息和重算分数恢复局部概率。令 \(P=\operatorname{softmax}(S)\)\(O=PV\),上游梯度为 \(G_O\),则

\begin{align} G_V&=P^\mathsf TG_O,&G_P&=G_OV^\mathsf T,\tag{33.6}\\ (G_S)_{ij}&=P_{ij}\left[(G_P)_{ij}-\sum_kP_{ik}(G_P)_{ik}\right],\tag{33.7}\\ G_Q&=\frac{G_SK}{\sqrt{d_h}},&G_K&=\frac{G_S^\mathsf TQ}{\sqrt{d_h}.} \tag{33.8}\end{align}

这些关系解释为什么反向可逐块重新计算所需概率。实际实现还须处理掩码、Dropout及浮点累计;不能在重算时更换随机掩码。

接口、后端及正确性条件

缩放点积注意力接口规定输入输出语义,具体后端由设备、形状、精度和支持条件选择。调用统一接口不等于确认使用了某个指定内核。采用优化路径时,掩码极性、非方形因果对齐、头分组、缩放因子和张量步幅均须保持一致。

例如缓存解码的查询只覆盖最新位置,而键包含整个历史。如果将一个 \(1\times T_k\) 因果掩码误按查询局部索引从零对齐,可能只允许读取第一个键。正确可见集合取决于查询的逻辑位置,不能只由矩阵左上角推断。此类错误输出可能仍有限,因此“没有 NaN”不是正确性证据。

33.4算子融合及执行图

算子融合(Operator Fusion)把相邻运算放在同一执行内核中,减少中间张量写回和启动。以 \(y=\phi(xW+b)\) 为例,若矩阵乘法后写回 \(Z=xW\),偏置与激活再分别读写,额外流量与 \(Z\) 的元素数成正比。将偏置、激活作为矩阵乘法的尾部计算,可避免这些完整中间结果的显存往返。

融合也有边界:中间结果被多个分支使用时,重新计算可能比保存更贵;融合后寄存器压力过大可能使数据溢出到较慢存储;跨设备通信或跨线程全局归约常需要显式同步。数学表达能合并,不保证单个大内核一定更快。

图编译(Graph Compilation)将一段运算图转为特化执行程序;执行图回放(Execution Graph Replay)复用已记录的提交依赖,主要减少重复调度。两者并非同义:回放不必重新选择算子算法,编译也不保证所有动态控制流都能被捕获。

当主机读取设备张量的值以决定分支时,可能引入同步并切断可捕获区域。应把数据依赖与元数据依赖分开分析。不能为了避免图断裂而把用户要求的停止条件或可见性逻辑删去。

形状特化的摊销模型

设一次编译成本为 \(C\),未编译每次耗时 \(t_e\),编译后耗时 \(t_c<t_e\),调用 \(n\) 次,则净收益条件为

\[ C+nt_c<nt_e\quad\Longleftrightarrow\quad n>\frac{C}{t_e-t_c}. \tag{33.9}\]

\(C=3\)秒,每次由2毫秒降到1.5毫秒,需要超过6000次调用才能取得净时间收益。对每个形状分别编译时,应逐桶计算 \(C_i,n_i\),冷门桶可能始终无法摊平。

形状分桶(Shape Bucketing)把实际形状映射到有限执行形状。设长度随机变量为 \(T\),映射到桶上界 \(b(T)\),填充位置的期望为 \(\mathbb E[b(T)-T]\)。对稠密注意力,额外计算更接近 \(\mathbb E[b(T)^2-T^2]\),不能只按平均长度差估计。桶过多增加编译和缓存,桶过少增加无效计算与预留内存。

33.5推测解码的精确性

接受质量及残差质量

推测解码(Speculative Decoding)由较便宜的草稿过程提出候选,再由目标模型验证(Leviathan, Kalman, 和 Matias 2022)。下面讨论保持目标采样分布的精确形式,不将贪心匹配规则混入随机采样证明。

采样分布条件

\(p\)\(q\) 定义在同一离散词元空间,均为归一化概率。候选确实按 \(q\) 采样,计算的概率包括各自实际使用的温度、截断和约束。目标 \(p\) 是希望保留的分布;\(q\) 不必与 \(p\) 使用相同采样参数。所有概率对应同一个已确认前缀。

对候选 \(x\sim q\),当 \(q(x)>0\) 时以

\[ a(x)=\min\{1,\frac{p(x)}{q(x)}\} \tag{33.10}\]

接受。\(q(x)=0\) 的词元不会被提议,无需对其计算该比值。接受并输出 \(x\) 的无条件质量为 \(q(x)a(x)=\min(p(x),q(x))\)。总接受率为

\[ A=\sum_x\min(p(x),q(x)) =1-\frac12\sum_x|p(x)-q(x)|. \tag{33.11}\]

第二个等号由 \(\min(a,b)=\frac{a+b-|a-b|}{2}\) 得到。因此接受率等于1减去两个分布的总变差距离。

若拒绝,令 \(Z=1-A\),从残差分布

\[ r(x)=\frac{[p(x)-q(x)]_+}{Z} \tag{33.12}\]

采样,其中 \([u]_+=\max(u,0)\)。由于两分布和均为1,正差之和恰为 \(Z\),残差归一化成立。最终输出概率为

\[ \Pr(\mathrm{output}=x)=\min(p(x),q(x))+Zr(x)=p(x). \tag{33.13}\]

\(Z=0\),拒绝事件概率为零,不应执行除以零的残差构造。目标有质量而草稿为零的位置,可通过拒绝后的残差获得,因此草稿不必覆盖目标的完整支持集。

例25.2

\(p=(0.5,0.3,0.2)\)\(q=(0.2,0.5,0.3)\)。接受概率为 \((1,0.6,\frac{2}{3})\),接受路径质量为 \((0.2,0.3,0.2)\),总接受率0.7。拒绝概率0.3,正残差为 \((0.3,0,0)\),因此拒绝后必定输出第一个词元。合并得到 \((0.5,0.3,0.2)\),正好是目标分布。

若错误地在拒绝后直接从 \(p\) 重采样,最终质量为 \((0.2,0.3,0.2)+0.3p=(0.35,0.39,0.26)\),已改变目标。较高接受率不能补救错误的拒绝分支。

33.6多词元验证及缓存事务

草稿依次提出 \(k\) 个候选 \(x_1,\ldots,x_k\)。目标模型利用因果前向,一次计算这些候选对应前缀下的条件分布,以及全部接受之后的下一分布。验证必须按候选顺序进行:仅在前面候选全部接受时,当前目标条件才对应已确认前缀。

第一次拒绝发生在 \(j\) 时,保留 \(x_{<j}\),按该位置残差采样修正词元,并丢弃 \(x_{>j}\)。如果全部接受,则可从目标在完整草稿前缀后的分布再采样一个词元。逐位置应用式(33.13)并对已确认前缀归纳,可得最终序列仍服从目标自回归分布。

推测解码的提交边界。草稿产生的状态是暂存状态,拒绝后的后缀不能继续参与注意力。
图 33.2 推测解码的提交边界。草稿产生的状态是暂存状态,拒绝后的后缀不能继续参与注意力。

生成的修正词元尚未必被目标模型前向处理。因此实现需区分“已输出序列长度”和“已物化KV的长度”,下一次调用从未物化的后缀接续。草稿模型也要恢复到相同已确认前缀。简单删除输出文本却保留被拒绝词元的KV,会破坏下一步条件概率。

终止词元一旦接受或由修正分支生成,应立即结束请求,不再附加奖励词元。长度预算也应裁剪本轮可提交量。随机数流不同可以导致同一种子生成不同具体样本;分布保持不等于逐样本输出相同。1

算法33.2 保持目标分布的推测解码

输入:目标 \(p\)、草稿 \(q\)、已确认前缀、候选预算 \(k\)、停止规则;输出:目标分布下的新词元。

  1. 保存草稿与目标的已确认缓存边界。草稿自回归采样不超过 \(k\) 个候选,并保存或能够精确重建每步完整的条件提议分布 \(q_i(\cdot)\)。仅保存抽中词元的概率不足以构造拒绝后的残差分布;等价实现必须提供精确残差采样所需的分布表示。

  2. 目标因果验证候选,取得每个候选前缀下的实际目标概率及全部接受后的分布。

  3. 按顺序比较独立均匀随机数与接受概率;接受则提交该候选,遇停止标记立即结束。

  4. 第一次拒绝时,按式(33.12)采样修正词元,舍弃后续候选及其缓存,结束本轮。

  5. 若候选全部接受且尚未达到停止或长度条件,从额外目标分布采样一个词元。

  6. 同步两套逻辑前缀,标记尚未物化的KV后缀;继续下一轮或返回完成结果。

33.7推测收益及正确性边界

设一轮中每个候选在之前均已接受的条件下,接受概率都为常数 \(\alpha\),暂不考虑提前终止。至少提交 \(i+1\) 个词元需要前 \(i\) 个候选全部接受,因此一轮提交量 \(N\) 的期望为

\[ \mathbb E[N]=\sum_{i=0}^k\Pr(N\ge i+1) =\sum_{i=0}^k\alpha^i =\frac{1-\alpha^{k+1}}{1-\alpha}, \tag{33.14}\]

\(\alpha=1\) 时取极限 \(k+1\)。条件接受率不恒定时,应使用各级生存概率,不能把所有候选的总体平均接受率直接代入幂次。

设草稿每步代价 \(c_d\),目标验证一轮代价 \(c_v(k)\),缓存和采样管理代价 \(c_m\),普通目标单步代价 \(c_t\)。近似加速比为

\[ S\approx\frac{c_t\mathbb E[N]}{kc_d+c_v(k)+c_m}. \tag{33.15}\]

\(k=3,\alpha=0.8\),期望提交量为2.952。若 \(c_t=10\)毫秒、\(c_d=1\)毫秒、\(c_v=12\)毫秒、\(c_m=1\)毫秒,则近似加速比为 \(\frac{29.52}{16}=1.845\)。若验证代价增到30毫秒,则降到 \(\frac{29.52}{34}<1\)。这些是给定成本的构造算例,不是任何设备的实测。

滑动窗口注意力(Sliding-Window Attention)只保留规定范围内的可见键。对原本全注意力的模型,删除窗口外质量通常改变输出,即使分块计算本身完全精确。若被删除的原注意力概率质量为 \(\delta\),所有值向量范数不超过 \(M\),保留部分重新归一化后输出 \(o'\),则当 \(\delta<1\)

\[ \|o-o'\|\le2\delta M. \tag{33.16}\]

证明是将原输出写成 \((1-\delta)o'+\delta o_{\mathrm{drop}}\),再用三角不等式。该上界需要知道被删除的质量,不能由“距离较远”自动推断 \(\delta\) 很小。原生窗口模型按照其既定掩码执行,则是在保留该模型自身的目标。

最终正确性需要区分算子数值容差、缓存逻辑一致、采样分布与任务质量。随机解码不能只比较一次文本是否相同;应结合分布证明与小词表概率算例。性能记录则区分首次编译、稳态执行、首词元、后续词元以及排队边界,避免把局部内核收益误认为端到端收益。


  1. 确定性贪心解码可采用与目标最大概率词元逐项比较的专门规则,但那是在复现贪心路径,不是证明随机目标分布保持。↩︎

WORKBOOK / 习题

配套习题与解析

先独立作答,再展开参考解析。选修题保留原书标记。

习题 33.1

推导在线统计量合并的三块表达,并说明精确算术下合并顺序无关的原因。

展开参考解析

\(m=\max(m_1,m_2,m_3)\)\(\ell=\sum_ie^{m_i-m}\ell_i,u=\sum_ie^{m_i-m}u_i\)。代回各块定义后,分别等于全体有效位置的 \(\sum e^{s_j-m}\)\(\sum e^{s_j-m}v_j\);这些有限和在精确算术中结合律成立,输出u/ell与合并次序无关。浮点舍入仍可能造成微小次序差。

习题 33.2

为两个输出不同且指数质量不等的键块构造数例,比较正确合并与局部等权平均。

展开参考解析

块A只有指数质量1、值0,块B只有指数质量3、值4。正确输出 \(\frac{1\times0+3\times4}{4}=3\);局部输出0和4等权平均为2。块权重必须正比全局指数质量,不能由块数或局部输出决定。

习题 33.3

说明全掩码块与全掩码行的区别,并设计不产生无穷相减的初始化规则。

展开参考解析

全掩码块仅表示本块对查询无贡献,可跳过;全掩码行表示所有块都无有效键,常规Softmax无定义。用显式empty状态,首个非空块直接赋值,之后合并,避免 \(-\infty-(-\infty)\)。全部空时按接口返回零/报错等明定规则,不能伪造概率归一化。

习题 33.4选修

从 Softmax Jacobian 推导本章反向公式的行内减均值项。

展开参考解析

对一行 \(p=\mathrm{softmax}(s)\),雅可比为 \(\mathrm{diag}(p)-pp^\mathsf T\)。设概率上游 \(g_p\),得 \(g_s=p\odot(g_p-\langle p,g_p\rangle\mathbf1)\)。注意力中 \(g_{p,j}=g_o^\mathsf Tv_j\),均值为 \(g_o^\mathsf To\);该减均值保证分数共同平移方向的梯度为零。

习题 33.5

某算子占总延迟20%,加速10倍,求端到端理论加速上限。

展开参考解析

其余80%不变,总时间比例 \(0.8+\frac{0.2}{10}=0.82\),加速 \(\frac{1}{0.82}\approx1.2195\)。即使该算子无限快也不超过1.25倍;需确认优化没有改变其他时间项或引入额外开销。

习题 33.6

三个形状桶的编译成本分别为2、10、1秒,预计调用次数分别为1000、100、20次,单次节省分别为3、50、10毫秒。忽略缓存维护等额外成本,判断哪些桶值得预编译。

展开参考解析

补充构造数据:三个桶编译成本分别2秒、10秒、1秒,调用次数1000、100、20,单次节省3毫秒、50毫秒、10毫秒。总节省3秒、5秒、0.2秒,扣编译后净收益1秒、-5秒、-0.8秒,故仅第一个值得在这些调用量下编译。缓存命中、内存和首请求期限也需纳入,调用量变化应重新求 \(n\Delta t>C\)

习题 33.7

\(p=(0.1,0.6,0.3)\)\(q=(0.5,0.2,0.3)\) 计算接受率、残差及最终输出质量。

展开参考解析

p=(.1,.6,.3),q=(.5,.2,.3),条件接受率为(.2,1,1),接受质量(.1,.2,.3),总接受.6。正残差(0,.4,0),拒绝后只出第二词元;加回拒绝质量后为(.1,.6,.3),恰为p。只有抽到q正支持的词元才计算p/q。

习题 33.8选修

证明接受率等于1减去总变差距离,并讨论草稿与目标支持集不相同的情况。

展开参考解析

\(\sum_v\min(p_v,q_v)=\frac12\sum_v(p_v+q_v-|p_v-q_v|)=1-\frac12\|p-q\|_1\)。q为0而p正的词元不会从草稿抽中,但可经正残差产生;p为0而q正的草稿必拒绝。只要两者为同空间规范分布,精确残差法不要求相同支持。

习题 33.9

构造温度不同的草稿和目标,说明精确采样为何不要求温度相同,却要求使用实际概率。

展开参考解析

同原始二元logits取 \((\log4,0)\),目标温度1给p=(.8,.2),草稿温度2给q=(\(\frac{2}{3}\),\(\frac{1}{3}\))。接受率为(1,.6),接受质量(\(\frac{2}{3}\),.2),拒绝质量\(\frac{2}{15}\)补到第一词元,得到p。若误把草稿概率记成温度1分布,接受与残差就不再对应实际采样。

习题 33.10

候选条件接受率依次为0.9、0.7、0.5,求每轮期望提交词元数。

展开参考解析

非终止且允许奖励词元时,\(\mathbb EK=1+0.9+0.9\times0.7+0.9\times0.7\times0.5=2.845\)。其中各接受率是给定前面已接受的条件概率;有EOS或剩余长度上限时截断相应项,不能仍用此无限续写表达。

习题 33.11

描述第二个候选拒绝后目标KV、草稿KV、已输出长度和未物化后缀应如何更新。

展开参考解析

第二候选拒绝意味着仅第一候选被确认,再从第二位置残差采样替代词元。丢弃目标/草稿中第二候选及后续候选的投机状态,保留已确认前缀和第一候选。替代词元先输出,但其KV若未物化需在下一轮先处理,或立即对齐两个模型缓存;逻辑输出长度与物化边界分别记录,不能保留被拒词元造成的隐藏后缀。

习题 33.12选修

推导窗口截断的输出误差上界,解释它为何不直接提供下游任务质量保证。

展开参考解析

设被删质量delta,保留归一均值a、删除归一均值b,则 \(o=(1-\delta)a+\delta b\),截断输出 \(o'=a\)。值范数\(\le\)M给 \(\|o-o'\|=\delta\|b-a\|\le2\delta M\)(delta<1)。多层传播、位置状态和采样可放大扰动,单行输出界不提供任务正确率保证。

习题 33.13

同一负载下,方案 A 每轮草稿生成、目标验证及同步共耗时 12 ms,平均提交3个词元;方案 B 的接受率更高,但每轮耗时 20 ms,平均提交4个词元。按长期平均成本判断应选哪一方案,并说明迁移到高并发服务时还应检查哪些条件。

展开参考解析

以总时间除以总提交词元数衡量长期成本,方案 A 为 \(\frac{12}{3}=4\) 毫秒每词元,方案 B 为 \(\frac{20}{4}=5\) 毫秒每词元,故题设下应选 A。接受率提高带来的提交量增长不足以抵消每轮成本增长。统计时应以累计时间与累计提交数的比值估计,避免对不同提交数的单轮比值直接等权平均。高并发下还需保持相同质量与采样协议,测量批量组成、长度分布、队列等待、设备利用率和尾延迟;草稿与验证争用资源后,单请求结论可能变化。

REFERENCES

参考文献

Dao, Tri, Daniel Y. Fu, Stefano Ermon, Atri Rudra, 和 Christopher Ré. 2022. 《FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness》. 2022年5月27日. https://arxiv.org/abs/2205.14135.
Leviathan, Yaniv, Matan Kalman, 和 Yossi Matias. 2022. 《Fast Inference from Transformers via Speculative Decoding》. 2022年11月30日. https://arxiv.org/abs/2211.17192.
Milakov, Maxim, 和 Natalia Gimelshein. 2018. 《Online normalizer calculation for softmax》. 2018年. https://arxiv.org/abs/1805.02867.

搜索全书

搜索全书正文、习题与解析