概念|FLOPs、FLOPS还是MACs?

概要

  阅读大模型相关资料时,往往会看到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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>