FLOPS 和FLOPs的定义分别如下:
-
FLOPS = Floating point operations per second:每秒执行的浮点运算, 也会被写作flops 或者flop/s, 比如在GPT-3的论文中就用了flops和petaflop/s 的写法
-
FLOPs = Floating point operations 浮点运算,单数形式 FLOP=floating-point operation
FLOPS 用来描述一个GPU硬件的计算能力,也就是可以衡量用它训练一个模型需要花多长时间。一般在谈论FLOPS时,默认的浮点类型是双精度。实际上使用时一般会在FLOPS 前面加上如下表的前缀。
名字 | 单位 | 值 |
---|---|---|
kiloFLOPS | kFLOPS | 1 0 3 10^3 103 |
megaFLOPS | MFLOPS | 1 0 6 10^6 106 |
gigaFLOPS | GFLOPS | 1 0 9 10^9 109 |
teraFLOPS | TFLOPS | 1 0 12 10^{12} 1012 |
petaFLOPS | PFLOPS | 1 0 15 10^{15} 1015 |
exaFLOPS | EFLOPS | 1 0 18 10^{18} 1018 |
zettaFLOPS | ZFLOPS | 1 0 21 10^{21} 1021 |
yottaFLOPS | YFLOPS | 1 0 24 10^{24} 1024 |
ronnaFLOPS | RFLOPS | 1 0 27 10^{27} 1027 |
quettaFLOPS | QFLOPS | 1 0 30 10^{30} 1030 |
FLOPs 用来描述运行一个模型实例需要多少的计算量。假设有一个卷积层,其参数为 n × ( h × w × c + 1 ) n\times(h\times w \times c + 1) n×(h×w×c+1), n 为输出通道数, h × w h\times w h×w是卷积核的大小,c是输入通道数,输入的Feature Map尺寸为 H × W H \times W H×W, 那么有 F L O P s = H × W × n × ( h × w × c + 1 ) FLOPs = H \times W \times n \times (h \times w \times c + 1) FLOPs=H×W×n×(h×w×c+1)
参考资料
- https://stackoverflow.com/questions/58498651/what-is-flops-in-field-of-deep-learning
- https://kb.iu.edu/d/apeq
- https://en.wikipedia.org/wiki/FLOPS
- https://discuss.huggingface.co/t/understanding-flops-per-token-estimates-from-openais-scaling-laws/23133
- https://medium.com/@dzmitrybahdanau/the-flops-calculus-of-language-model-training-3b19c1f025e4