注意力计算量

🧮 Attention FLOPs Estimator

Estimate the floating-point operations of a single attention layer and of the whole model from sequence length, head count and hidden size.

📐 计算公式 / 原理
单层 FLOPs ≈ 2S²d (QKᵀ) + 2S²d (AV) = 4S²d;全模型 GFLOPs = 单层 × 层数 / 10⁹
自注意力的两次矩阵乘各为 S×S×d 规模,乘加各算一次故乘 2,合计 4S²d,随序列长度呈平方增长——这正是长上下文成本暴涨的原因。线性注意力与稀疏注意力正是为打破这一 S² 项。

📐 计算公式与说明

单层注意力 ≈ 2·S²·d(QKᵀ) + 2·S²·d(·V)

注意力和序列长度平方相关,长序列代价高。

📚 深度解析:注意力计算量

💡 常见使用场景

单层注意力算力
S=1024, h=16, d_head=64(总 d=1024):S² 项≈2×1024²×1024≈2.15×10⁹ FLOPs;投影 4·S·d²=4×1024×1024²≈4.29×10⁹。单层约 6.4×10⁹ FLOPs,12 层约 7.7×10¹⁰。

❓ 常见问题(FAQ)

为什么长文本推理特别慢?
注意力核心项是 S²·d,序列翻倍算力翻约 4 倍;KV 缓存虽降重算,但注意力矩阵仍随上下文长度平方增长,故长上下文成本陡增。
FLOPs 和显存是一回事吗?
不是。FLOPs 衡量算力(时间),显存衡量参数与激活的存储(空间)。量化降显存但不降 FLOPs,稀疏/蒸馏可同时降两者。