自注意力机制 20 年了,我们终于让它学会"压缩记忆"

一个 8KB 的参数,让 7B 大模型推理速度提升 4 倍,内存压缩 248 倍


问题:Attention 跑不了长序列

Transformer 的自注意力机制有个根本性问题:

r 复制代码
A_ij = exp(q_i^T k_j / √d) / Σ_l exp(q_i^T k_l / √d)

序列长度 n 翻倍 → 计算量翻 4 倍,KV Cache 也翻 4 倍。

一个 7B 模型处理 4K 序列,KV Cache 就要占 168MB;处理 64K 序列,需要 2GB+ ,普通笔记本根本跑不动。

20 年来,大家一直在想办法绕开这个 O(n²):

  • FlashAttention:优化 I/O 路径,不改变复杂度
  • MQA/GQA:多查询/分组查询注意力,共享 K/V
  • 稀疏注意力:预设稀疏模式,灵活度差
  • Mamba/RWKV:线性复杂度,但效果有差距

我们的思路不同:不是近似,而是"聪明地压缩"。


我们的方案:Signal Field Attention

想象你听一个人说话:

  • 刚刚说的(近场),你听得清清楚楚
  • 很久之前说的(远场),你记住了大概意思,不需要一字不差

SFA 就是让 LLM 学会这个机制:

双通道架构

scss 复制代码
                    ┌─────────────────────────┐
输入 Q_t  ───────→ │  SFA 注意力机制          │
                    │                         │
              ┌─────┴─────┐                   │
              │ 近场通道   │──→ softmax(k个token)───→ O_near
              │ 精确计算   │                   │
              └───────────┘                   │
         (最近 k 个 token,精确计算)            │
                                              │
              ┌───────────┐                   │
              │ 远场通道   │──→ EWMA 压缩状态 ──→ α · S_far
              │ 压缩存储   │                   │
              └───────────┘                   │
         (历史所有 token 的加权平均)           │
                                              │
              ┌─────────────────────────┐    │
              │  融合: O = O_near + α·S_far  │
              └─────────────────────────┘    │
                                            ↓
                                          输出

近场通道:对最近的 k 个 token 做标准 softmax 注意力(精确)

远场通道 :用 EWMA(指数加权移动平均) 压缩历史 KV 到固定大小的状态 S

融合:两个通道的输出加权求和

核心公式

ini 复制代码
S_t = γ · S_{t-1} + (1-γ) · mean(K_hist)

O = O_near + α · S_far
  • γ ∈ (0,1):衰变因子,控制"记忆"多远
  • α:可学习混合系数

整个 SFA 只需要约 8KB 的可学习参数。


实验结果(直接上图数据)

推理加速:4.16 倍

在 Qwen2.5-7B-Instruct (4-bit) 上的测试结果:

序列长度 标准注意力 SFA 加速比
128 tokens 45ms 12ms 3.75×
1,024 tokens 720ms 173ms 4.16×
4,096 tokens 11,520ms 2,769ms 4.16×

关键发现:序列越长,加速越稳定。

内存压缩:248 倍

序列长度 标准 KV Cache SFA KV Cache 压缩比
1,024 168 MB 4.2 MB 40×
4,096 672 MB 8.6 MB 78×
8,192 2.1 GB 8.6 MB 248×

到了 64K 序列,标准注意力内存溢出,SFA 正常运行。

困惑度:甚至更好!

在 Qwen2.5-0.5B 上,替换 3 个层做蒸馏训练后:

原始 PPL SFA PPL 变化
第 0 层(浅层) 22.375 23.062 +3.07%
第 11 层(中层) 22.375 22.255 -0.57%
第 23 层(深层) 22.375 20.011 -10.57%

深层反而更好了! 因为我们压缩掉的是冗余的语法细节,保留的是高层语义。

训练成本

指标 数值
额外参数 8.1 KB
训练步数 < 800 步
训练时间 < 2 分钟
显存占用 ~200 MB

为什么深层效果更好?

这其实有一个理论直觉:

  • 浅层编码语法、词法细节 → 这些需要精确信息 → 压缩损失大
  • 深层编码语义、抽象概念 → 这些信息天然可压缩 → 压缩后反而更鲁棒

这和其他论文的观察一致:Transformer 的深层表示更"语义化"、更"抽象"。


和 LoRA 的对比

LoRA SFA
目的 微调 推理加速
额外参数 0.1-1% 模型大小 ~8KB
推理加速 4.16×
内存节省 248×
训练数据 需要任务数据 从基础模型蒸馏

两者不冲突,甚至可以组合使用。


局限性(说实话)

  1. 蒸馏训练能获得最优效果(虽然训练超快)
  2. 浅层有 ~3% 的 PPL 退化
  3. 目前只在自回归语言建模上测试过
  4. 最佳压缩窗口 k 可能因模型而异

我们做了什么

完整的技术栈

bash 复制代码
qn1-experiments/
├── 01-signal-field/     # SFA 核心算法(纯 Python)
├── 02-huayue/           # 混合架构探索
├── 03-guiyuan/          # 增量推理:预填/解码分离
├── 04-lingya/           # 正交基微调
├── 05-ring-buffer/      # 环形缓冲区 KV Cache
├── 06-rca/              # 频域注意力
├── 07-metal-kernel/     # Metal 加速内核
├── 08-ultra/            # 极致部署优化
├── src/                 # MLX 完整模型实现
│   ├── taicu_sf_v2.py           # SFA 完整替换
│   ├── taicu_0.5b_distill.py    # 0.5B 蒸馏
│   ├── taicu_7b_benchmark.py    # 7B 基准测试
│   └── ...
├── LICENSE              # MIT
└── TECHNICAL_REPORT.md  # 论文

特性

  • 纯 Python 实验01-08- 目录):零依赖,任何平台可跑
  • MLX 完整实现src/ 目录):Apple Silicon 原生加速
  • MIT 开源:可以商用
  • 论文:完整技术报告 + 参考文献

一键运行

bash 复制代码
cd 01-signal-field
python test_signal_field.py  # 验证 SFA 原理

cd src
python taicu_sf_v2.py        # 7B 模型完整推理

python ../run_all.py         # 运行所有实验

给 SFA 点个赞

代码全开源,MIT 协议:

github.com/CN-QN1-dali...

如果你也在做高效 LLM 推理、长序列处理、或者 Attention 的优化------这个方案值得一试。

8KB 的改动,4 倍的速度,248 倍的内存压缩。

这或许就是"让 AI 学会压缩记忆"的第一步。


本文代码和论文同步开源。欢迎 fork、PR、讨论。

相关推荐
Shell运维手记10 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
码流怪侠11 小时前
StereoCrafter 源码级深度拆解:腾讯如何把 2D 视频“抠“成 3D
github·音视频开发·webvr
fthux15 小时前
不必下载整个仓库:GitZip Pro 让 GitHub 文件与文件夹批量下载更简单
前端·chrome·ai·edge·开源·github·firefox
人工智能研究所19 小时前
GitHub 10k+ Star:用自然语言描述系统,AI 帮你生成可交互架构图
人工智能·github·交互·自然语言·系统架构图·archify
逛逛GitHub19 小时前
一个 Skill.md 拿下 1.8 万星,这个 GitHub 项目让 AI 先说重点。
github
云空19 小时前
《GitHub 从入门到进阶完整教程》
github
Timeless15920 小时前
Git与TortoiseGit使用教程:第二章 Git常用命令及TortoiseGit使用教程
github
用户693717500138420 小时前
深夜炸场!DeepSeek 没发新模型,却重构了整个 Agent 生态
前端·后端·github
fthux20 小时前
装闭 RenoPit 源码解析(08):多模态AI调用、重试与文本降级
人工智能·ai·开源·github·open source·renopit
笨鸟先飞,勤能补拙21 小时前
AI Agent应用领域深度解析:从概念到落地的全维度审视
大数据·人工智能·python·物联网·安全·网络安全·github