概要
阅读大模型相关资料时,往往会看到FLOPS、FLOPs以及MACs这种词汇。它们分别是什么意思、用途又是什么呢?本篇文章围绕这三个概念进行简单解析。
技术名词解释
- FLOPs
FLOPs(Floating Point Operations)指的是浮点运算次数,即深度学习模型训练或推理所用的计算量,用来衡量模型的复杂度。常见文章中使用的单位是GFLOPs,与FLOPs的换算是1GFLOPs = 10^9 FLOPs。
- MACs
MACs(Multiply–Accumulate Operations),另一种说法是MAdd,指的是乘加操作次数。类似于FLOPs也是用来衡量模型训练、推理时候的计算量,1 MACs约等于 2FLOPs(因为包含了一次加法和一次乘法的过程,而FLOPs将乘法或加法视为一次计算)。
- FLOPS
FLOPS(Floating Point Operations per Second)指的是每秒浮点运算次数,用来衡量显卡能提供给模型的最大运算速率,即计算性能。
下图是英伟达H100与A100的GPU在进行不同精度运算时计算性能的比较,其中单位都是TFLOPS,与FLOPS的换算公式是1TFLOPS=10^12FLOPS。


深入理解FLOPs
拿神经网络中最小的一部分举例,如下图所示,该部分中实际对输入的每个样本进行了一次矩阵运算,若输入矩阵是A(size是n×a),神经网络的参数矩阵是B(size是a×b)


该例子中,对输入进行前向计算即为进行了一次矩阵乘法O=A×B以及加上bias的过程。
因此,当忽略激活函数计算时(相比矩阵乘法的计算量数目可忽略不计),Feed Forward在前向计算中FLOPs运算量为:n×b×(a+(a-1)) + n×b = 2nab = 2×input数目×模型中的参数数目。
技术细节
参考引用直接给出以下结论
- 反向传播大约是前向计算计算量的两倍。
- 从0到1训练一个大模型所需大约计算量如下:
FLOPs≈(6|8)TP
其中T为token数目,P为模型参数量,若开启中间参数激活重计算取值为8。
因此,从0到1训练一个大模型所用的时长可按照如下公式估算:

- 关于大模型一个step训练、推理所需的确切FLOPs可以参考calflops框架得到结果
ref:
1.https://medium.com/@dzmitrybahdanau/the-flops-calculus-of-language-model-training-3b19c1f025e4
2.语言模型的训练时间:从估算到 FLOPs 推导 - 知乎 (zhihu.com)
3.https://epochai.org/blog/backward-forward-FLOP-ratio
1866

被折叠的 条评论
为什么被折叠?



