注意力计算量
按序列长度、头数与隐藏维度估算单层及全模型注意力的浮点运算量 FLOPs,适用于大模型算力评估、推理成本测算与硬件选型。
🧮 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)
注意力和序列长度平方相关,长序列代价高。
📚 深度解析:注意力计算量
💡 常见使用场景
- 单头注意力 FLOPs≈2·S²·d(QKᵀ 与 AV 两次矩阵乘),S 为序列长、d 为维度。
- 多头总计算≈2·S²·h·d_head + 4·S·d²(含 Q/K/V/O 投影),S² 项使长序列算力平方增长。
- 与 FFN 相比,注意力在长序列时 dominated by S²,是推理成本优化的重点。
单层注意力算力
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,稀疏/蒸馏可同时降两者。