Caracal: Causal Architecture via Spectral Mixing¶
会议: ICML 2026
arXiv: 2605.00292
代码: 见论文 Appendix E
领域: LLM效率 / 序列建模 / 长上下文
关键词: FFT、注意力替代、因果建模、长序列、SSM 对比
一句话总结¶
Caracal 用 \(\mathcal{O}(L \log L)\) 的多头傅立叶(MHF)模块替换 Transformer 的 \(\mathcal{O}(L^2)\) 注意力,通过"pad-FFT-multiply-iFFT-truncate"实现频域内的严格因果掩码,并完全去掉位置编码,仅用标准 FFT 算子(不依赖 Mamba 那样的 CUDA kernel)就在 Tiny→Large 全尺度上与 Llama / Mamba / Mamba-2 / Jamba 性能相当。
研究背景与动机¶
领域现状:长序列建模有两条主流路线 —— Transformer 的注意力(强表达力但 \(\mathcal{O}(L^2)\) 复杂度且需位置编码);以 Mamba 为代表的 SSM(线性复杂度但靠定制 CUDA 内核,可移植性差)。傅立叶系(FNet、AFNO、SPECTRE)有 \(\mathcal{O}(L \log L)\) 复杂度,但因频域因果掩码难写,几乎都局限在 encoder-only。
现有痛点:(1) sparse attention(Longformer/BigBird)牺牲信息覆盖;(2) RoPE/YaRN/ALiBi 等位置编码都是"打补丁",外推性总有上限;(3) Mamba 类要写 SSD-style 算子,门槛高、调试困难、不同 GPU 上行为不一致;(4) 已有谱方法(FNet、Hyena)要么不因果要么 filter 是静态 position-based 的,缺乏 data-dependent mixing。
核心矛盾:自回归生成的因果性约束与 FFT 的"全局原子运算"天然冲突 —— 注意力可以中途把 weight 矩阵的 upper-triangle 置零,但 FFT 没有显式权重矩阵可掩。要因果就只能改输入(对每个 \(t\) 跑长度 \(t\) 的 FFT),结果反而比 \(\mathcal{O}(L^2)\) 还慢(\(\mathcal{O}(L^2 \log L)\))。
本文目标:(1) 让 FFT-based mixing 在自回归训练里做到单次并行 forward 也保持因果;(2) 去掉位置编码并保持外推能力;(3) 只用标准 torch/numpy FFT 算子,不要 Mamba 那样的硬件依赖;(4) 引入 data-dependent gating 弥补 FFT 静态权重的表达力短板。
切入角度:作者从"频域乘法 = 时域因果卷积"的等价性出发:把输入 pad 到 \(2L\) → 做 FFT → 元素乘 → iFFT → truncate 回 \(L\),整条流水在数学上等价于一次严格因果卷积,但所有步骤都用并行 FFT 完成。
核心 idea:把注意力替换成"内容自适应卷积核 × FFT 加速 × 频域因果"的统一模块,并保留少量 sliding-window attention 用于局部精度。
方法详解¶
整体框架¶
Caracal 要解决的是"如何让 \(\mathcal{O}(L \log L)\) 的 FFT 混合在自回归生成里保持严格因果"这个老大难。它的做法是把 GPT-2 几乎原样保留(Feed-forward / LN / 残差不动,可直接复用 Transformer 生态),只换两处:把全局 masked multi-head attention 替换为频域混合的 MHF 模块,并彻底删掉位置编码。为补上 FFT 在局部精度上的短板,每两层 MHF 之后插一层窗口 256 的 Sliding-Window Attention,整体复杂度落在 \(\mathcal{O}(L \log L + L \cdot W)\)。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400, 'subGraphTitleMargin': {'top': 8, 'bottom': 16}}}}%%
flowchart TD
A["输入序列(去位置编码)"] --> MHF
subgraph MHF["Multi-Head Fourier 模块"]
direction TB
B["因果 depthwise conv(kernel=3)<br/>注入局部归纳偏置"] --> C["LN + 并行投影<br/>value 流 x_v / gate 流 x_g"]
C --> D["zero-pad 到 2L → FFT → 频域元素乘<br/>V_fft ⊙ G_fft = 时域因果卷积"]
D --> E["iFFT + truncate 回 L(频域因果掩码)→ Linear_O"]
end
MHF --> G["Hybrid SWA 局部回补<br/>每 2 层 MHF 插 1 层、窗口 256"]
G --> H["next-token 预测"]
关键设计¶
1. Multi-Head Fourier 模块:用频域乘法做 \(\mathcal{O}(L \log L)\) 的内容自适应混合
注意力的本质是"query/key 算出的 data-dependent 权重对 value 求和",但 \(\mathcal{O}(L^2)\) 且必须配位置编码;MHF 把这套权重和改写成"由 gate 流当卷积核的 data-dependent 权重和",从而既保留 selectivity 又避开了 SSM 的串行 scan,全程只用标准 FFT 算子。具体是 4 步流水线:先用一个因果 depthwise 1D conv(kernel=3)注入局部归纳偏置,弥补移除位置编码后丢掉的局部模式;接着 LayerNorm 后并行投影出 value 流 \(x_v = \text{Linear}_V(x_{norm})\) 和 gate 流 \(x_g = \text{Conv1d}_{G2}(\sigma(\text{Linear}_{G1}(x_{norm})))\),其中 gate 流的 group conv 按 \(n_{head}\) 分组以实现 intra-head 通道交互;然后把序列 zero-pad 到 \(N=2L\) 做 FFT 得到 \(V_{fft}, G_{fft}\),在频域元素乘 \(X_{fft} = V_{fft} \odot G_{fft}\),这一步在时域上正好等价于因果卷积 \(r_t = \sum_{j=0}^{t} v_j g_{t-j}\);最后 iFFT 并 truncate 回长度 \(L\),再过 \(\text{Linear}_O\) 输出。gate 流由输入动态生成的卷积核,正是它把"静态 Fourier filter"升级成了 content-aware mixing。
2. 频域因果掩码:pad-FFT-multiply-iFFT-truncate 的几何安排
纯 FFT 想做因果是数学硬骨头——它没有像注意力那样的显式权重矩阵可掩,唯一直接的办法是对每个 \(t\) 单独跑长度 \(t\) 的 FFT,反而比 \(\mathcal{O}(L^2)\) 更慢。作者用一个 DSP 老技巧绕过:把长度 \(L\) 的序列右侧 zero-pad 到 \(2L\),做 FFT、乘 gate、iFFT 之后只保留前 \(L\) 个元素。\(2L\) 长 FFT 本对应圆卷积,但被 truncate 到前 \(L\) 维时恰好退化为线性卷积 \(r_t = \sum_{j=0}^{t} v_j g_{t-j}\),对未来 token 的依赖被自动截掉。本质上是用 \(2\times\) 序列长度换来"一次并行 forward 就完成因果卷积",训练时不必为每个位置重跑 FFT,因果性问题被转化成了 padding/truncation 的几何摆放。
3. 去位置编码 + Hybrid SWA 局部回补:让位置感知内置于架构
现代位置编码(RoPE、YaRN、ALiBi)越做越复杂却始终解决不了外推的根本问题,于是 Caracal 干脆全部删掉——FFT 的基 \(e^{-i \frac{2\pi}{L} tj}\) 本身就内置了序列位置信息,下游的 SWA 层同样不需要 PE,理论上更适配任意长上下文。但纯 MHF 在局部分辨率上偏弱(消融里 ARC-c 掉点),所以按 MHF:SWA = 2:1 的比例插入 Sliding-Window Attention:窗口 256、用 FlashAttention 实现以控制成本,专门兜住短语级的局部模式,与 MHF 的全局长程依赖互补。
损失函数 / 训练策略¶
沿用标准 next-token prediction CE loss,没有任何架构外的辅助损失。训练采用 GPT-3 风格的 hyperparam 设置,规模从 Tiny 63M sweep 到 Large 724M;为公平对比,所有 baseline 都启用各自的硬件优化 kernel(Mamba 用 mamba_ssm、Llama 用 FlashAttention)。
实验关键数据¶
主实验¶
9 项 zero-shot common-sense 推理 + LM 评测(LMB / Hellaswag / ARC-e/c / Wino / BoolQ / PIQA / SIQA),4 个尺寸全 sweep:
| Size | Model | LMB ppl↓ | Avg acc↑ |
|---|---|---|---|
| Tiny | Llama (64M) | 164.19 | 40.87 |
| Tiny | Mamba (66M) | 129.88 | 41.12 |
| Tiny | Caracal (63M) | 219.90 | 41.14 |
| Small | Llama (124M) | 79.94 | 43.02 |
| Small | Mamba (129M) | 86.33 | 43.60 |
| Small | Mamba2 (125M) | 100.76 | 42.64 |
| Small | Caracal (120M) | 92.05 | 43.35 |
| Medium | Llama (360M) | 32.65 | 47.07 |
| Medium | Caracal (345M) | 38.50 | 46.47 |
| Large | Llama (757M) | 24.92 | 48.73 |
| Large | Caracal (724M) | 29.39 | 49.01 |
Caracal 在所有 size 上 Avg accuracy 与 Llama / Mamba / Jamba 同档,Large 上 49.01 略超 Llama 的 48.73。
消融实验¶
与更广泛 baseline 在 345M 参数、15B token、4096 上下文设定下对齐:
| Model | LMB ppl↓ | Avg acc↑ |
|---|---|---|
| Transformer++ | 41.08 | 42.92 |
| RetNet | 49.73 | 42.54 |
| GLA | 43.02 | 44.09 |
| Mamba | 40.21 | 43.59 |
| Gated DeltaNet | 30.94 | 45.42 |
| Moneta | 29.31 | 46.45 |
| Yaad | 29.11 | 45.94 |
Caracal 与 Mamba / DeltaNet 同处第一梯队,明显优于早期 Transformer++/RetNet。
关键发现¶
- 算法上的"中间方案"取代硬件 trick:用 \(\mathcal{O}(L \log L)\) 换 SSM 的 \(\mathcal{O}(L)\),性能不掉但实现复杂度大幅降低,所有运算都是标准 FFT 算子。
- Tiny 上 LMB ppl 偏高 (219.90) 是 Caracal 的弱点 —— 小模型容量下 dynamic gating 拟合不充分;但 Avg acc 仍并列第一,说明 ppl ≠ task 表现。
- 去掉位置编码不掉点说明 FFT 基的隐式位置信息足够,给长上下文外推留下空间(论文未做直接外推实验,是个明显缺口)。
- SWA 是必要的:消融显示纯 MHF 在 ARC-c 上偏弱,加入 2:1 比例的 SWA 后局部能力补齐。
亮点与洞察¶
- 数学优雅的因果性 trick:pad-2L → FFT → multiply → iFFT → truncate 是经典 DSP 技巧的复用,但在生成式 LM 上下文里被首次完整论证、并配套了 data-dependent gating,把多年来 Fourier-based generative model 的"老大难"问题翻过去了。
- "内容自适应卷积核"的统一视角:把 attention、SSM、FFT 都看作 \(r_t = \sum_j w_{tj} v_j\) 的不同 weight 来源 —— attention 是 query/key 算的,S4 是 static,Mamba 是 input-dependent state,Caracal 是 gate-generated content-aware filter。这种 framing 让人能清楚理解三类架构的本质异同。
- 硬件无关是真正的工程价值。可以即插即用部署到任何带 FFT 的硬件(包括 TPU、专用 NPU),不像 Mamba 那样被绑死到 NVIDIA GPU。
- 整体思路("频域乘法 + 因果 padding")可迁移到:speech autoregressive、长视频生成、protein generation 等所有需要因果性 + 长上下文的任务。
局限与展望¶
- 作者自己承认理论 \(\mathcal{O}(L \log L)\) 慢于 SSM 的 \(\mathcal{O}(L)\),在 100k+ token 极长上下文下还是吃亏;论文也没做百万 token 级实验。
- 没有显式 length extrapolation 实验,"FFT 基天然带位置"的卖点只是理论论证,没有 50k→200k 这种 zero-shot 拉长的对比。
- 2L padding 浪费一半算力:实际 wall-clock throughput 是否真比 FlashAttention 强,要看具体 FFT 实现,论文没汇报针对短上下文 (1k–4k) 的真实速度对比。
- 改进方向:(a) 用 RFFT (real FFT) 进一步减半算力;(b) 探索更激进的 MHF:SWA 比例(如 4:1)做超长上下文;(c) 把这套用到 image autoregressive 上做 sub-quadratic 自回归 ViT。
相关工作与启发¶
- vs Mamba/Mamba-2:同样是 attention 替代品,但 Caracal 不需要硬件 kernel,可移植性强;性能在中小模型上打平。
- vs Hyena:Hyena 也用 FFT,但 filter 是 position-based (由 MLP 从 \(t\) 生成),不是 content-aware;Caracal 的 gate 流由 input 动态生成,更接近 Mamba 的 selectivity。
- vs FNet / FNO / AFNO:那些纯 encoder 模型完全不因果,无法做生成;Caracal 是首批严格因果的 FFT replacement。
- vs Monarch Mixer:M2 用 GEMM 近似卷积追求硬件利用率,Caracal 用标准 FFT 追求实现简单;二者取舍不同。
- vs FlashButterfly / SPECTRE:FlashButterfly 是 static global kernel,没有外推能力;SPECTRE 用 fixed sliding window 切断长程依赖;Caracal 通过 dynamic filter 解决这两个问题。
评分¶
- 新颖性: ⭐⭐⭐⭐ 频域因果 + content-aware gating 的组合首次完整落地于自回归 LM,单独看每个零件都不算全新但拼出了优雅的新架构。
- 实验充分度: ⭐⭐⭐ 4 个尺寸 sweep + 多 baseline 对比扎实,但缺真实长上下文 (≥32k) 与训练 throughput 的硬数据。
- 写作质量: ⭐⭐⭐⭐⭐ 从注意力/FFT 第一性原理推到因果掩码困境,再到 pad-truncate trick,论证链条清晰,是一篇极适合教学的架构论文。
- 价值: ⭐⭐⭐⭐ 给"非 NVIDIA 硬件"用户提供了一个真正 portable 的 SSM 替代方案,工业落地友好。