🧠 图解记忆:RoPE是用旋转让位置变成向量的一部分,ALiBi是直接给分数贴衰减标签。
ALiBi (Attention with Linear Biases) = 一种简单而有效的绝对位置编码方法,直接在 Attention Score 上加一个与位置距离成比例的负向偏置项。
RoPE 回顾(已有的 Q35)
Rotary Positional Embedding:
- 将 Q 和 K 分别乘上一个旋转矩阵 R(θᵢ),旋转角度 θᵢ 依赖于位置 i
- 计算 QK^T 时,旋转自然转化为两个位置之间的相对位置信息
- 优势:天然建模相对位置,已在训练序列长度范围内表现优秀
- 劣势:超出训练长度的外推能力有限ALiBi 的设计思想
核心 idea:不在 embedding 层加位置信息,而是在 Attention Score 层面直接加偏置
公式:Attention(i, j) = Softmax( Q_i K_j^T / √d + b_i )
其中 b_i = -m × |i - j|
m 是斜率系数(每个 attention head 有不同的 m)
|i - j| 是位置之间的距离
越远的 token,score 越小(施加负向偏置)
注意:这个偏置是固定的(训练无关),不经过梯度更新!ALiBi vs RoPE 对比
| 维度 | RoPE | ALiBi |
|---|---|---|
| 位置编码方式 | 旋转矩阵作用于 Q/K 向量 | 线性偏置直接加到 Attention Score |
| 是否 learnable | ✅ 是(嵌入网络的一部分) | ❌ 否(固定的斜率参数) |
| 外推能力 | 中等(受训练长度限制) | ⭐ 强(天然适合外推) |
| 实现复杂度 | 中等(需要特殊的 rotary kernel) | 极低(一行代码即可) |
| 代表的模型 | LLaMA, Mistral, Qwen, Gemma | BigScience BLOOM, Meena |
| 与训练长度的关系 | 需要针对目标长度训练 | 无需调整,直接用 |
ALiBi 的外推优势详解
RoPE 的问题:
训练时在 4K 长度上学习的旋转模式,到了 8K 或 32K 可能不work
虽然有一些改进(NTK-aware scaling、Pi-Scale 等),但本质上是 heuristic
ALiBi 的优势:
线性衰减的模式在所有长度上都一致——没有"外推"的概念
因为偏置是固定的数学函数:b_i = -m × distance
实际验证:
- BLOOM 训练时最大长度 2K,测试时可以很好地外推到 8K+
- 2025 年的工作(如 RoFormer-Gen、YaRN)都在尝试结合 RoPE 的准确性和 ALiBi 的外推性Hybrid 趋势(2025-2026)
研究发现:RoPE 的精度高 + ALiBi 的外推好 = 最好的组合
代表性做法:
1. RoFormer++ : RoPE + ALiBi 联合使用
2. YaRN (Yet Another RoPE tuning) : 先用 NTK-aware scaling 修改 RoPE,再用 ALiBi-style bias 增强外推
3. 部分模型采用 "基础 RoPE + 可选 ALiBi head" 的双轨架构
工程实践:
- 如果只做常规训练(已知最大长度)→ RoPE 就够了
- 如果需要极致长文本外推 → 优先考虑 RoPE + 插值技巧,或在预算允许时考虑 Hybrid面试高频追问
ALiBi 为什么不学?为什么固定斜率反而更好? ALiBi 的斜率是通过 validation 搜索得到的固定值。研究表明,固定的线性衰减恰好匹配了人类语言中"近处相关性强、远处相关性弱"的自然规律, learned 的位置编码反而可能在推理时学到不适合外推的模式。
FlashAttention 兼容 ALiBi 吗? 原生 FlashAttention 不直接支持 ALiBi(因为它假设 Attention 是纯注意力形式)。但 FlashInfer 等新一代后端已经实现了带 ALiBi 偏置的高效 Attention kernel。
面试话术:
"ALiBi 和 RoPE 都是解决 Transformer '看不到位置' 问题的方案,但路子完全不同。RoPE 把位置信息揉进向量本身(用旋转变换),优点是训练时表达力强,缺点是换长度时要微调。ALiBi 则另辟蹊径——直接在 Attention Score 上加一个线性衰减的偏置,相当于告诉模型'离你越远的词影响力越小'。这个规则完全不随长度变化,所以外推能力极强。业界趋势是两者结合:RoPE 负责训练时的表达能力,ALiBi 负责推理时的外推鲁棒性。"
