FLOPs(浮点运算次数)
FLOPs 就是模型做一次推理或训练要算多少次加减乘除,数越大说明模型越'重'、越费卡
亦作、亦称:浮点运算次数 · FLOPS · floating point operations · compute budget · 浮点运算量 · 算力
FLOPs 是衡量 AI 模型计算代价的通用货币,从单次推理到千亿参数预训练,所有算力讨论都绕不开它。理解 FLOPs 是读懂扩展定律、做好推理优化和算力规划的前提。
概述
FLOPs 是衡量 AI 模型计算代价的通用货币,从单次推理到千亿参数预训练,所有算力讨论都绕不开它。理解 FLOPs 是读懂扩展定律、做好推理优化和算力规划的前提。
概述:FLOPs 是什么
FLOPs 是深度学习与高性能计算领域最核心的算力度量单位之一。
- FLOPs(Floating Point Operations):完成某任务所需的浮点运算 总次数 ,静态描述计算量
- FLOPS(Floating Point Operations Per Second):硬件每秒能执行的浮点运算次数,描述硬件 吞吐能力 - 两者关系:理论运行时间 ≈ FLOPs ÷ FLOPS(忽略内存带宽等瓶颈)
- 常见量级前缀:MFLOPs(百万)、GFLOPs(十亿)、TFLOPs(万亿)、PFLOPs(千万亿)
- 在 AI 场景中,FLOPs 特指神经网络前向/反向传播中涉及的乘加运算(MAC) 总量
计算原理:FLOPs 怎么算
对于神经网络,FLOPs 从逐层统计到全网汇总,核心规则如下。
- 全连接层:输入维度 M、输出维度 N,FLOPs ≈ 2MN(乘法 + 加法各 MN 次,通常用 2MN 或 MN 视惯例而定)
- 卷积层:FLOPs ≈ 2 × 输入通道 × 输出通道 × 卷积核面积 × 输出特征图面积
- 注意力机制(Transformer):自注意力的 FLOPs 与序列长度 L 呈 O(L²) 增长,是长文本推理的主要瓶颈
- 训练 vs 推理:训练 FLOPs ≈ 3 × 推理 FLOPs(前向 1 份 + 反向 2 份)
- 工具支持:PyTorch 的
torchinfo、fvcore,ONNX 分析工具均可自动统计模型 FLOPs
类型与变体:精度与单位
随着混合精度训练普及,FLOPs 的统计口径也在细化。
- FP32 FLOPs:传统全精度,1 次乘加 = 2 FLOPs,是早期默认基准
- FP16 / BF16 FLOPs:现代 GPU(如 A100、H100)对半精度有专用 Tensor Core,理论峰值是 FP32 的 2-4 倍
- INT8 / FP8 FLOPs:量化推理场景,硬件吞吐进一步翻倍,但精度损失需评估
- MACs vs FLOPs:MAC(Multiply-Accumulate Operation)= 1 次乘 + 1 次加 = 2 FLOPs;部分框架以 MACs 上报,需注意换算
- 稀疏 FLOPs:剪枝后理论 FLOPs 下降,但实际加速依赖硬件对稀疏的支持程度
扩展定律:FLOPs 预算与最优分配
FLOPs 是 Scaling Laws 研究的核心变量,直接指导大模型训练策略。
- Kaplan et al. 2020(OpenAI):发现模型损失与模型参数量、数据量、计算量均呈幂律关系,奠定扩展定律基础
- Chinchilla 定律(Hoffmann et al., 2022):在固定 FLOPs 预算下,参数量与训练 token 数应等比增长(各约 20 tokens/参数)
- GPT-3(175B 参数)仅用约 1.7 tokens/参数,显著低于 Chinchilla 最优,属于「参数过多、数据不足」
- 实践意义:给定算力预算,Chinchilla 定律可指导选择更小参数量 + 更多数据的组合,同等 FLOPs 下性能更优
- FLOPs 预算(Compute Budget):预训练前明确总 FLOPs 上限,作为超参搜索和资源规划的约束条件
应用场景
FLOPs 在 AI 研发全链路中均有实际用途。
- 模型选型:在精度相近时,优先选 FLOPs 更低的模型(如 MobileNet vs ResNet)
- 推理优化:知识蒸馏、剪枝、量化的核心目标之一是在精度损失可控前提下降低 FLOPs
- 算力采购与规划:通过估算训练总 FLOPs 与 GPU 峰值 FLOPS,预估训练周期与成本
- 学术论文对比:FLOPs 作为与精度并列的效率指标,广泛出现在 CV、NLP 论文的 Pareto 曲线中
- AI 治理与监管:部分监管框架(如 EU AI Act)以训练 FLOPs 阈值(如 10²⁶)划定高风险模型边界
局限与常见误区
FLOPs 是有用但不完备的指标,使用时需警惕以下误区。
- FLOPs 低 ≠ 速度快:实际延迟还受内存带宽、并行度、缓存命中率影响;稀疏模型 FLOPs 减半但不一定提速
- 忽略内存访问开销:Attention 等内存密集型操作的瓶颈往往是 HBM 带宽而非算力,FLOPs 无法捕捉此类代价
- 大小写混用:将 FLOPS(速率)与 FLOPs(总量)混用是常见错误,导致数量级理解偏差
- 不同框架统计口径不同:部分工具统计 MACs,另一些统计 FLOPs(= 2×MACs),对比前须核实
- 训练 FLOPs 估算误差:梯度检查点、数据增强、评估步骤等会带来额外算力,理论估算常低于实际
发展脉络
FLOPs 从超算性能指标演变为 AI 时代的核心算力语言。
- 1974 年:David Kuck 提出 flops/megaflops,用于描述超级计算机性能,优于 MIPS 指标
- 1980s-1990s:Frank H. McMahon(Lawrence Livermore 实验室)将 FLOPS 系统化为超算排名标准(TOP500 前身)
- 1993 年:TOP500 榜单创立,以 FLOPS 为唯一排名指标,推动超算 FLOPS 军备竞赛
- 2012 年后:深度学习爆发,GPU FLOPs 成为训练效率核心指标,NVIDIA 以 TFLOPS 作为 GPU 性能宣传核心
- 2020 年:OpenAI Scaling Laws 论文将 FLOPs 正式引入大模型研究主流叙事
- 2022 年:Chinchilla 论文以 FLOPs 预算为框架重构最优训练策略,影响此后几乎所有主流大模型的设计
- 2024 年起:EU AI Act 等法规引入 FLOPs 阈值作为模型风险分级依据,FLOPs 进入政策语境
常见误解
日常交流中容易听到的简化说法,未必准确,但能帮助理解误解从何而来。
- 「FLOPs 就是模型做一次推理或训练要算多少次加减乘除,数越大说明模型越'重'、越费卡」
- 「很多人把 FLOPs 和 FLOPS 混用,其实前者是总运算量,后者是硬件每秒能跑多少,完全是两回事」
- 「训练大模型时说的'算力预算',本质上就是给这次训练划定一个 FLOPs 上限」
相关术语
和本术语关联紧密的其他词条,便于串联理解。
延伸阅读
从知识库精选 3 篇文章,帮助深入理解该术语。
外部参考
维基百科:查看「FLOPs」词条本页内容为本站原创撰写;维基百科链接仅作延伸参考。