想象你在一间教室里,同学们正忙着互相传纸条。离你最近的前桌,你递纸条递得最勤;隔了五六排的角落,你基本懒得理他——因为纸条传那么远,要么丢失,要么被老师截获。这种“距离越远、热情越低”的直觉,不需要每人胸前挂号码牌,你只要看一眼他坐多远,心里就有了刻度。 ALiBi(Attention with Linear Biases,线性偏置注意力)位置编码,正是把这种生活直觉搬进了 Transformer。它不往词向量里拼位置号码,而是直接在“注意力打分”环节立规矩:两个词离得越远,分数就被扣得越多,扣多扣少由每个注意力头自己的“冷淡系数”决定。这条简单的规矩,让模型在短文本上训练、长文本上推理——业界称之为“外推性能优异”,还让训练与推理长度不一致时表现依旧稳健。

岗位关联

对 AI 从业者而言,掌握 ALiBi 意味着你多了一把“短训长测”的钥匙:长文本部署成本大幅下降、序列长度变化不再让人提心吊胆,还能和 RoPE 阵营的工程师正面掰手腕时讲出道理。

目录
  1. 可视化演示
  2. 位置编码困境
  3. 正弦偏置原理
  4. 外推性能优异
  5. 长度差异鲁棒性
  6. RoPE方案对比
  7. 长文本应用实践
  8. 局限与适配
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示ALiBi位置编码核心机制:偏置模式可视化注意力矩阵中基于距离的线性负偏置(B=-m|d|)与多头部不同斜率分配,外推模式对比ALiBi与RoPE在超出训练长度时的性能差异。

本节配有交互动效(进入视口后自动加载,约 3KB)。

ALiBi线性偏置机制 B=-m|d|: 距离越远偏置越大 多头部不同斜率:多尺度关注 m=2^(-1/2^h) 斜率几何级数递减

位置编码困境

回到那间教室。传纸条的人群里,如果每个人都只埋头写纸条,没人告诉你谁坐前排、谁坐后排,消息就会彻底乱套:你根本无法判断“班长从最后一排传话”和“同桌悄悄提醒”哪个更值得优先对待。Transformer 天生就是这样一所“混乱教室”——它一次性看到所有词,在结构上完全感知不到“你先说、我后说”的先后顺序。

为了让模型理解语序,经典方案是给每个位置发一张“座位号牌”。Transformer 原版用正弦函数生成位置向量(Sinusoidal Positional Encoding),或者干脆把位置号当作可学习参数,直接加在词向量上。这就是“显式位置编码”——词与位置就像学生和自己的号码牌,绑定在一起送进模型。

然而号码牌方案有个隐藏隐患:训练时教室只有 1024 个座位,号码牌最大只发到“1024“;推理时突然来了一间 8192 座的大教室,后 7168 个座位的号牌模型从未见过,自然乱了方寸——这正是著名的”外推难题”。经典注意力公式本身也不关心顺序,只做内容匹配:

所以经典框架下,位置信息必须从外部额外注入——要么加在向量上,要么像我们接下来要讲的 ALiBi 那样,直接在打分环节动手脚。教室的乱,必须用规矩来治。

Attention(Q,K,V)=softmax(QK⊤dk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V
注意力像是在说“谁的内容和我最像,我就多听谁的”,完全没提“谁离我近”。
  1. 查询矩阵 Q代表“我想找什么信息”的向量集合,每个位置一行。
    Q∈Rn×dkQ \in \mathbb{R}^{n \times d_k}
  2. 键矩阵 K代表“我能提供什么信息”的向量集合,同样每位置一行。
    K∈Rn×dkK \in \mathbb{R}^{n \times d_k}
  3. 点积打分拿查询和所有键做点积,得到“内容匹配度”矩阵。
    QK⊤∈Rn×nQK^\top \in \mathbb{R}^{n \times n}
  4. 缩放因子除以 $\sqrt{d_k}$,防止维度增大后分数爆炸,梯度不稳。
    QK⊤dk\frac{QK^\top}{\sqrt{d_k}}
  5. softmax 归一按行变成概率,数值大的位置获得更多关注权重。
    softmax(⋅)\text{softmax}(\cdot)
  6. 加权聚合用权重去加权求和值矩阵 V,得到输出。
    softmax(⋅)V\text{softmax}(\cdot)V

正弦偏置原理

老师终于颁布了教室铁律:“传纸条的热情,随距离衰减。隔得越远,热情越低,而且衰减是匀速的——每远一排,热情就按固定比例降一截。” 更有意思的是,不同的学生有不同性格:有的人只跟前后桌玩,衰减极快;有的人整个教室都能聊,衰减极慢。每个注意力头,就是这样一个性格不同的“传话者”。

ALiBi 把这个规矩落进了注意力公式。它不去给座位发号码牌,而是在“内容匹配分”算出来之后,减去一个与距离成正比的值。位置 i 的词看向位置 j 的词时,最终得分为内容分减去一个“冷淡罚单”:$m_h \times |i-j|$。$m_h$ 就是第 $h$ 个头的“冷淡系数”,系数越大,衰减越猛。

这里的“正弦偏置”名称需要澄清一下:ALiBi 本身的偏置是线性的(Linear Biases),它替代的对象正是经典 Transformer 里的 Sinusoidal(正弦)显式位置编码——所以全称意为“用基于距离的线性偏置,替代显式位置编码”。核心公式如下:

这套设计的精妙之处在于:没有任何可学习参数参与位置建模,斜率是纯数学预设。教室规矩写成校规贴墙上就行,不需要每个学生背一套复杂的座位表。

ALiBi(qi,kj)=softmax(qikj⊤dk−mh∣i−j∣)\text{ALiBi}(\mathbf{q}_i, \mathbf{k}_j) = \text{softmax}\left(\frac{\mathbf{q}_i \mathbf{k}_j^\top}{\sqrt{d_k}} - m_h |i - j|\right)
翻译成教室语言:先按内容算出“想聊度”,再按距离扣掉“传话损耗”,最后才决定纸条的优先级。
  1. 查询向量与键向量第 i 个位置的查询和第 j 个位置的键,点积衡量内容匹配度。
    qikj⊤\mathbf{q}_i \mathbf{k}_j^\top
  2. 缩放处理除以根号 $d_k$,让分数尺度稳定,利于 softmax 训练。
    qikj⊤dk\frac{\mathbf{q}_i \mathbf{k}_j^\top}{\sqrt{d_k}}
  3. 绝对距离两位置差值的绝对值,只关心隔了几排,不关心谁前谁后。
    ∣i−j∣|i - j|
  4. 头专属斜率 m_h每个注意力头有自己固定的衰减斜率,按几何级数递减。
    mh=2−8h/H,h=1,2,…,Hm_h = 2^{-8h/H}, \quad h = 1, 2, \ldots, H
  5. 线性惩罚项距离越远,减去越大,这个偏置加在 softmax 之前的 logits 上。
    −mh ∣i−j∣-m_h\,|i - j|
  6. softmax 归一对惩罚后的分数做概率化,距离近的词获得更高权重。
    softmax(⋅)\text{softmax}(\cdot)

外推性能优异

学校要开年级大会,把所有班级的教室合并成一间超大礼堂。发号码牌的同学傻眼了:号码牌只编排到 1024,礼堂有 8192 个座位,后半部分的号码从来没见过。而遵守“距离衰减”规矩的同学毫无压力——规矩没变:无论礼堂多大,隔三排就是隔三排,衰减比例照旧。

这就是 ALiBi“外推性能优异”的根源。显式位置编码(如 Sinusoidal)在训练时见过的绝对位置数字有限,一旦推理长度超过训练长度,模型面对“全新地址”会给出不可预测的注意力分布。而 ALiBi 的偏置只依赖相对距离 $d = |i-j|$,这个值在训练长度内已经覆盖了所有可能的相对距离模式——外推时只是把这些见过的模式,原样应用在更长的序列上而已。

论文《Train Short, Test Long》里的实验很直观:模型只训练 1024 长度的序列,测试时直接喂 2048、4096 甚至 8192 长度的文本,困惑度基本不飘;而原始 Transformer 从 1024 外推到 2048 时性能就断崖式下跌。数学上看,训练与外推时偏置函数的形状完全一致,没有任何新增的“怪形状”:

换个比喻:衰减曲线就是一条斜率为 $-m_h$ 的直线,训练只见过直线的前一段。外推时你沿着直尺把线画长,方向角度都不变——当然不会翻车。这就是外推性能优异最朴素的解释。

∀ d≤Ltrain−1,biash(d)=−mhd\forall\, d \le L_{\text{train}} - 1, \quad \text{bias}_h(d) = -m_h d
只要相对距离落在训练见过的范围内,偏置的取值就一模一样——外推不改变衰减规律,只是把直线延长。
  1. 训练最大长度训练序列长度为 $L_{\text{train}}$,最大相对距离就是 $L_{\text{train}} - 1$。
    dmax⁡=Ltrain−1d_{\max} = L_{\text{train}} - 1
  2. 距离取值外推时两个词的距离若在此区间内,偏置与训练时完全相同。
    ∀ d≤dmax⁡,−mhd\forall\, d \le d_{\max},\quad -m_h d
  3. 规律外延超过 $d_{\max}$ 的距离,偏置依然按同一斜率线性延伸,不引入突兀结构。
    biash(d)=−mhd,d>dmax⁡\text{bias}_h(d) = -m_h d, \quad d > d_{\max}
  4. 外推结论模型不需要“脑补”新位置的向量,所有行为都是训练模式的连续复制。
    ALiBitrain(d)=ALiBiextrap(d),d≤dmax⁡\text{ALiBi}_{\text{train}}(d) = \text{ALiBi}_{\text{extrap}}(d), \quad d \le d_{\max}

长度差异鲁棒性

话剧社排练时,每场台词只有两页纸;正式演出时,导演临时加戏,台词变成了八页。发号码牌的演员慌了:剧本里没有标注“第 200 句台词在哪个位置”,新页码完全陌生。而按“距离衰减”规矩演戏的演员很淡定:不管台词总共多少页,我只需要记住“前一句、后三句”这种相对关系,台词页数翻四倍,相对关系一丁点都没变。

“训练与推理长度差异的鲁棒性”,说的正是这个:训练时模型见到的序列短,推理时喂进来的序列长,模型不会因为“长度变了”而行为失稳。ALiBi 的偏置矩阵里没有任何一项依赖总长度 $L$,只依赖位置差 $|i-j|$。长度从 1024 变到 8192,偏置公式一个字符都不改。

相比之下,有些方法在推理长文本前需要做“位置插值”(把位置向量压缩或拉伸到新范围),相当于给所有号码牌重新编号。ALiBi 完全跳过这步,省去了重训或调参的麻烦。从数学上不难验证:

这种“换场地不换规矩”的特性,让 ALiBi 在生产环境特别省心:训练时用短序列省显存、省时间,上线时直接支持长上下文,不用因为序列长度变化重新适配。

Bij(h)=−mh∣i−j∣,∂Bij(h)∂L=0B_{ij}^{(h)} = -m_h |i-j|, \qquad \frac{\partial B_{ij}^{(h)}}{\partial L} = 0
偏置对总长度 L 的偏导数为零——长度无论如何变化,偏置岿然不动,这就是鲁棒性的数学根源。
  1. 偏置矩阵元素$B_{ij}^{(h)}$ 表示第 h 个头、第 i 行第 j 列的距离惩罚值。
    Bij(h)=−mh ∣i−j∣B_{ij}^{(h)} = -m_h\,|i - j|
  2. 独立变量检查公式中只含位置下标 i、j,找不到总序列长度 L 的踪影。
    不含 L 项\text{不含 } L \text{ 项}
  3. 偏导为零把偏置对 L 求偏导,结果为 0,说明长度变化不产生任何影响。
    ∂Bij(h)∂L=0\frac{\partial B_{ij}^{(h)}}{\partial L} = 0

RoPE方案对比

隔壁班的教室用了另一套秩序:每张课桌上画了一个“指南针”,指针会随着位置旋转。传纸条时,双方根据指南针的夹角判断相对方位。这就是 RoPE(Rotary Position Embedding,旋转位置编码)的思路——把位置信息编码成向量的旋转角度,两个词一旋转、一点积,相对位置自然浮现。

RoPE 的数学很漂亮。它给第 m 个位置的查询向量乘上一个旋转矩阵 $R_m$,给第 n 个位置的键向量乘上 $R_n$,点积时旋转矩阵相减,只留下相对角度:

既然 RoPE 也能表达相对位置,为什么还需要 ALiBi?关键在于外推行为。RoPE 直接外推到训练长度之外时,旋转角度超过训练见过的范围,高频维度误差累积,模型性能明显下滑;需要配合 NTK 缩放、YaRN 或动态插值等手段做“角度修正”,工程复杂度直线上升。而 ALiBi 无需任何插值,天然平滑外推。此外 ALiBi 的实现成本接近零——只是一张预计算的静态偏置矩阵;RoPE 则要在每层前向计算中额外做旋转。当然 RoPE 也有自己的主场:它不牺牲长距离建模精度,在大模型预训练中生态更成熟(LLaMA 系、Mistral 等皆用 RoPE)。两者并非谁绝对碾压谁,而是“极简外推”与“精细表达”之间的权衡。

⟨qm,kn⟩RoPE=q⊤Rn−m k,Rθ=[cos⁡θ−sin⁡θsin⁡θcos⁡θ]\langle \mathbf{q}_m, \mathbf{k}_n \rangle_{\text{RoPE}} = \mathbf{q}^\top R_{n-m}\,\mathbf{k}, \qquad R_\theta = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}
RoPE 像是“指南针教室”:相对方向由旋转角差决定,天然具备相对位置感知。
  1. 旋转矩阵二维旋转矩阵,角度为 θ,用来“拨动”向量方向。
    Rθ=[cos⁡θ−sin⁡θsin⁡θcos⁡θ]R_\theta = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}
  2. 位置注入第 m 个位置的查询被旋转 $R_m$,第 n 个位置的键被旋转 $R_n$。
    qm=Rmq,kn=Rnk\mathbf{q}_m = R_m \mathbf{q}, \quad \mathbf{k}_n = R_n \mathbf{k}
  3. 旋转相减两个旋转矩阵乘在一起,角度相减,绝对位置消失、只留相对位置。
    Rm⊤Rn=Rn−mR_m^\top R_n = R_{n-m}

长文本应用实践

礼堂实在太大了,传纸条横跨全场既慢又累。同学们开始分段合作:每片区域设一个“中转站”,纸条传到中转站就不再重复传;每个人也学会了“对讲机”——把已经说过的话存下来,下次只说新增内容。这就是长文本推理中的工程实践:KV cache 与增量生成。

ALiBi 的静态偏置矩阵天然适合这类工程优化。首先,偏置矩阵只由距离决定,可以在服务启动时一次性预计算,之后每次调用直接查表,不必反复生成;其次,配合 KV cache 做流式生成时,每新增一个 token 只需计算新位置与所有旧位置的偏置,而偏置只依赖距离差,直接查表即可;最后,ALiBi 的“距离衰减”特性天然把注意力约束在近邻范围,变相降低了远端无效计算,配合分块或稀疏注意力策略,长序列推理的显存和时间开销都能压下来。

这套工程组合拳,正是 ALiBi 能落地到超长上下文场景的原因:训练用短序列省钱,推理用缓存提速,偏置查表几乎免费。教室越大,这套“中转站+对讲机”的打法收益越明显。

Tper-step=O(1),总推理成本 O(N) vs 无缓存 O(N2)T_{\text{per-step}} = O(1), \qquad \text{总推理成本 } O(N) \ \text{vs 无缓存 } O(N^2)
有了 KV cache,每生成一个词只需要一次前向计算,成本与对话长度解耦;ALiBi 的偏置查表则让这一步的额外开销趋近于零。
  1. 缓存模式KV cache 把历史 key/value 存下来,新 token 只与缓存计算注意力。
    cache=(K1:t,V1:t)\text{cache} = (K_{1:t}, V_{1:t})
  2. 单步开销每步只处理新增位置,计算量恒定。
    Tper-step=O(1)T_{\text{per-step}} = O(1)
  3. 总复杂度对比整体从平方级降为线性,长文本推理才跑得动。
    O(N2)→O(N)O(N^2) \rightarrow O(N)

局限与适配

规矩也有代价。全校大会上,坐在最后排的同学哪怕借着衰减规矩往前面传纸条,声音也已经小得听不清——距离衰减太狠,远端的信息基本被忽略。这意味着 ALiBi 的注意力天然“稀疏化”:模型擅长捕捉局部上下文,却可能漏掉长文开头埋下的伏笔。

这不算 bug,而是一种偏置:ALiBi 默认“靠得近的更重要”。对于摘要、对话、代码补全这类局部依赖主导的任务,这个偏置恰到好处;但对于“开头说了一句话,结尾要召回它”的全局关联任务(如长文档问答、全书检索),远处理论上还有信息,却被惩罚压成了零。极限情况下:

应对策略也很成熟:在稀疏注意力的基础上加几个“全局广播站”——即插入少量全局 token,让它们不受距离衰减约束、能看到整个序列;或把 ALiBi 与 Longformer/BigBird 的稀疏注意力模式结合,用局部窗口捕获细节、用全局 token 捕获主线。另一个调参要点是斜率序列:头的数量越大,几何级数 $m_h$ 覆盖范围越宽,模型越能兼顾近与远;若任务强依赖全局,可适当缩小斜率或改用可学习斜率变体。理解了这条衰减曲线,你就能在部署时判断:这个任务怕不怕“远端失联”——怕,就配全局 token;不怕,ALiBi 的极简与高效就是最优解。

lim⁡d→∞wij(h)=lim⁡d→∞softmax(qikj⊤−mhd)→0\lim_{d \to \infty} w_{ij}^{(h)} = \lim_{d \to \infty} \text{softmax}\left(\mathbf{q}_i \mathbf{k}_j^\top - m_h d\right) \to 0
距离无穷远时,注意力权重被压到零——远端词对当前词彻底“失联”。
  1. 注意力权重$w_{ij}^{(h)}$ 是第 h 个头中位置 j 对位置 i 的注意力权重。
    wij(h)=softmax(qikj⊤−mhd)w_{ij}^{(h)} = \text{softmax}\left(q_i k_j^\top - m_h d\right)
  2. 惩罚项增长距离 d 增大时,$-m_h d$ 趋于负无穷,指数项趋近于零。
    −mhd→−∞-m_h d \to -\infty
  3. 权重极限softmax 中该项的指数贡献趋零,远端权重归零。
    lim⁡d→∞wij(h)=0\lim_{d \to \infty} w_{ij}^{(h)} = 0

AI 应用场景

LLM 超长上下文服务

阶段:推理部署 / 长文本推断

解决的问题:传统位置编码在长文本推理时外推失败,模型答非所问;直接训练长文本又面临显存和时间成本爆炸(注意力复杂度随长度平方增长)。ALiBi 用短序列训练、长序列部署,既省钱又能保证回答质量。

具体案例:某法律科技公司部署合同审查模型。训练时仅用 2048 token 的合同片段;上线时用户直接粘贴 5 万字(约 3 万 token)的完整合同,模型基于 MPT-7B(采用 ALiBi)顺畅完成条款摘要与风险标注,无需额外微调。

推荐系统长短行为序列建模

阶段:特征工程 / 序列建模

解决的问题:用户行为序列长度差异悬殊——日常训练截断到 100 个行为,但大促期间部分用户有上千条行为。传统位置编码面对“超长行为链”直接失效,ALiBi 的鲁棒性让模型在 100 条行为上训练、上千条行为上推理依然稳定。

具体案例:电商推荐场景中,用 ALiBi 改造行为序列 Transformer:用户点击序列若为 80 条,模型照常训练;双十一当天用户产生 1180 条行为时,模型直接上全量序列做兴趣推断,推荐候选集的点击率提升约 11%。

流式长对话生成

阶段:增量解码 / 在线推理

解决的问题:对话轮数越多,输入 token 越长,传统自回归生成每步重算全量注意力,延迟随历史增长而飙升。ALiBi 配合 KV cache 让每步生成耗时保持恒定,且偏置矩阵可预计算,天然适配实时对话。

具体案例:智能客服机器人在多轮售后中,输入长度从 300 token 逐步增长到 5000 token,得益于 ALiBi 的查表式偏置与缓存复用,单 token 生成延迟始终稳定在 50ms 以内,用户体验不因对话变长而卡顿。

Python 演示

python49 行
import numpy as np  def alibi_bias(n, num_heads):    """构造 ALiBi 偏置矩阵,形状为 (num_heads, n, n)。"""    rows = np.arange(n).reshape(n, 1)    cols = np.arange(n).reshape(1, n)    dist = np.abs(rows - cols)    slopes = 2.0 ** (-8.0 * np.arange(1, num_heads + 1) / num_heads)    bias = np.zeros((num_heads, n, n))    for h in range(num_heads):        bias[h] = -slopes[h] * dist    return bias  def alibi_attention(x, w_q, w_k, w_v, num_heads, d_head):    """最简 ALiBi 多头注意力示意实现。"""    d_model = x.shape[1]    n = x.shape[0]    q = x @ w_q    k = x @ w_k    v = x @ w_v    q = q.reshape(n, num_heads, d_head).transpose(1, 0, 2)    k = k.reshape(n, num_heads, d_head).transpose(1, 0, 2)    v = v.reshape(n, num_heads, d_head).transpose(1, 0, 2)    scores = (q @ k.transpose(0, 2, 1)) / np.sqrt(d_head)    scores = scores + alibi_bias(n, num_heads)    weights = np.exp(scores - scores.max(axis=-1, keepdims=True))    weights = weights / weights.sum(axis=-1, keepdims=True)    out = weights @ v    return out.transpose(1, 0, 2).reshape(n, d_model)  np.random.seed(42)n, d_model, num_heads, d_head = 6, 16, 4, 4x = np.random.randn(n, d_model)w_q = np.random.randn(d_model, num_heads * d_head) * 0.1w_k = np.random.randn(d_model, num_heads * d_head) * 0.1w_v = np.random.randn(d_model, num_heads * d_head) * 0.1 bias = alibi_bias(n, num_heads)print("第 1 个头第 0 行的偏置(距离 0,1,2,3,4,5):")print(bias[0, 0]) out = alibi_attention(x, w_q, w_k, w_v, num_heads, d_head)print("训练长度 6 的输出形状:", out.shape) probe = alibi_attention(np.random.randn(10, d_model), w_q, w_k, w_v, num_heads, d_head)print("外推长度 10 可直接计算:", probe.shape)
目的:用 50 行 numpy 复现 ALiBi 的核心机制,直观看到“距离越远、偏置越负”以及“训练短、测长”的外推能力。
  1. dist = np.abs(rows - cols)生成距离矩阵,第 i 行第 j 列就是两位置差的绝对值
  2. slopes = 2.0 ** (-8.0 * np.arange(1, num_heads + 1) / num_heads)按几何级数生成每个头的衰减斜率
  3. bias[h] = -slopes[h] * dist核心:距离越远,惩罚越重,负号实现“越远越冷淡”
  4. scores = (q @ k.transpose(0, 2, 1)) / np.sqrt(d_head)先算标准注意力内容分并缩放
  5. scores = scores + alibi_bias(n, num_heads)在 softmax 前把偏置加进 logits,这就是 ALiBi 的全部魔法
  6. probe = alibi_attention(...)用 6 长度的权重直接跑 10 长度输入,验证外推不需要重训

常见误区

误区我第一次接触 ALiBi 时,以为它和 Transformer 原版一样,是把一段位置向量加到 input embedding 上,只是把正弦函数换成了线性函数。

正解ALiBi 根本不碰词向量。它把偏置加在注意力分数(softmax 之前的 logits)上,词嵌入层面完全没有位置信息。它的位置感知全部来自“打分时按距离扣分”这一招——相当于不改座位号,改的是传纸条的热情规则。

为何常见:名字里有“位置编码”四个字,加上原版 Transformer 的加性位置向量太深入人心,很容易先入为主地类推。

误区看论文标题《Train Short, Test Long》和宣传语“外推性能优异”,很多人以为 ALiBi 训练 1024 就能测 100 万 token,完全无上限。

正解ALiBi 的外推是“模式复用”,偏置只依赖相对距离,距离差在训练长度内见过就能稳定工作;但距离超过一定程度后,远端注意力被压到接近零,信息断层依然存在,实际可靠外推范围通常是训练长度的 8-64 倍。

为何常见:“外推性能优异”被自媒体简化成“无限外推”,忽略了线性惩罚本身会稀释远端信息。

误区既然 ALiBi 不加位置向量,那模型应该完全不分前后顺序,妥妥是个“词袋模型”。

正解ALiBi 用的是隐式相对位置编码。偏置 $-m_h|i-j|$ 本身就是位置信息,只不过它不像显式位置编码那样“发号码牌”,而是用“距离衰减函数”直接告诉模型相对位置。模型完全分得清前后,只是感知方式换了。

为何常见:把“不显式加向量”和“没有位置信息”画了等号,忽略了位置信息可以有多种载体。

误区看到 ALiBi 的斜率是预设常数、零可学习参数,就觉得它比能旋转学习的 RoPE 低一等。

正解位置编码的优劣不取决于参数量,而取决于抽象方式是否匹配任务。ALiBi 用近乎零参数换来了稳健外推与工程极简;RoPE 则用旋转矩阵换取更细腻的相对位置表达。当前主流大模型多用 RoPE 是生态选择,并不代表 ALiBi 弱——MPT 等长上下文模型就用 ALiBi 做出了成绩。

为何常见:以参数量论英雄,加上市面上 LLaMA 系模型全用 RoPE,容易形成“RoPE 全面胜出”的错觉。

面试题

Q1. ALiBi 的“距离偏置”被加在哪个环节?

单选题 · easy

  • A.与词嵌入相加的位置向量处
  • B.注意力分数经过 softmax 之前← 正确答案
  • C.与位置编码拼接进输入通道
  • D.前馈网络非线性激活函数后

答案:B。ALiBi 不改动词嵌入,而是在注意力 logits 上加静态偏置矩阵,再进 softmax。就像传纸条的热情规则不改变座位,只改变传话的积极性。

Q2. ALiBi 偏置与两个 token 距离的关系是?

单选题 · easy

  • A.线性衰减,越远惩罚越大← 正确答案
  • B.正弦周期,随距离震荡
  • C.恒定常数,与距离无关
  • D.平方衰减,越远惩罚剧增

答案:A。ALiBi 的核心是线性偏置:惩罚值 $-m_h|i-j|$ 与距离成正比,方向为负。教室里的规矩是“每远一排,热情匀速降一截”,正是线性而非正弦。

Q3. 对于一个 8 头的 ALiBi 模型,第 4 个注意力头的斜率 m 约为?

单选题 · mid

  • A.1/2
  • B.1/4
  • C.1/16← 正确答案
  • D.1/128

答案:C。斜率按几何级数 $m_h = 2^{-8h/8}$,当 h=4 时 $m = 2^{-4} = 1/16$。对应教室中“第 4 排性格的同学”,冷淡程度处于中间档位。

Q4. ALiBi 外推性能优异最主要的原因是?

单选题 · mid

  • A.偏置只依赖 token 相对距离← 正确答案
  • B.模型总参数量大幅减少
  • C.训练时使用的学习率更大
  • D.层归一化方式与众不同

答案:A。外推的本质是“训练见过的模式能否复用于更长序列”。ALiBi 偏置只与相对距离有关,训练长度内所有距离模式都被覆盖,外推新长度时只是复制已有偏置规律。参数量、学习率、归一化都与外推能力无关。

Q5. ALiBi 相对 RoPE 的优势有哪些?

多选题 · mid

  • A.无需插值即可较好地外推← 正确答案
  • B.实现简单几乎零额外计算← 正确答案
  • C.预训练在大模型界普及度更高
  • D.更易与稀疏注意力配合← 正确答案

答案:ABD。ALiBi 外推不需要 NTK/YaRN 插值,偏置是静态矩阵、实现成本极低,且线性衰减天然稀疏化,方便与稀疏注意力组合。C 说反了:大模型界普及度更高的是 RoPE(LLaMA 系),这正是 ALiBi 未占据主流生态的原因。

Q6. ALiBi 在因果语言模型中偏置通常只作用于下三角,原因是?

单选题 · hard

  • A.因果模型只能看左侧历史 token← 正确答案
  • B.下三角可以节省一半计算开销
  • C.上三角位置距离无法被定义
  • D.方便 KV cache 做增量复用

答案:A。因果语言模型的注意力掩码本来就只允许看左侧历史 token,所以 ALiBi 偏置配合掩码只需在下三角生效,右侧距离没有意义。省计算只是附带结果,不是设计初衷。

Q7. ALiBi 的已知局限包括哪些?

多选题 · hard

  • A.远端注意力被线性压制,长程依赖弱← 正确答案
  • B.斜率按头数几何预设,属于超参数← 正确答案
  • C.对全局信息强的任务需补充稀疏注意力← 正确答案
  • D.完全无法处理任何相对位置信息

答案:ABC。距离衰减越远越狠,远端注意力可能趋零,长程依赖确实弱;斜率序列是经验预设而非学习得到;全局依赖强的任务需要插入全局 token 或稀疏注意力补偿。D 是错的,ALiBi 本身就是一种隐式相对位置编码。

Q8. ALiBi 名称中“替代显式位置编码”指的是替代哪类方法?

单选题 · easy

  • A.Sinusoidal 等显式位置嵌入法← 正确答案
  • B.注意力内部的层归一化
  • C.前馈网络里的残差连接
  • D.推理时用到的动态规划

答案:A。ALiBi 的"Linear Biases"替代的是经典 Transformer 的 Sinusoidal(正弦)显式位置编码。它不再把位置向量加进词嵌入,而用距离偏置直接注入位置信息;层归一化、残差连接、动态规划与位置编码无关。

Q9. 训练长度 1024 的 ALiBi 模型推理 4096 时,距离差 1000 的偏置在训练中?

单选题 · mid

  • A.见过:距离 1000 小于训练长度← 正确答案
  • B.没见过:模型必然直接崩溃
  • C.必须先用插值处理再推理
  • D.是否见过的取决于学习率

答案:A。训练长度 1024 意味着模型见过最大相对距离 1023,距离差 1000 落在训练范围内,偏置模式完全复用。只有超过 1023 的距离才需要依靠线性外延,且 ALiBi 的直线延伸同样平滑稳定。

Q10. 推理长文本时,ALiBi 常与哪些技术配合以降低开销?

多选题 · hard

  • A.KV cache 增量缓存键值← 正确答案
  • B.稀疏注意力处理长文档← 正确答案
  • C.预计算静态偏置矩阵← 正确答案
  • D.线性层替换为卷积层

答案:ABC。KV cache 把历史 K/V 存下来,单步推理从 O(N) 关注变成 O(1);偏置矩阵静态可预计算,运行期查表即可;稀疏注意力强化 ALiBi 天然的局部聚焦。D 是干扰项,替换线性层与位置编码无关。