深度学习领域中的FLOPS是什么?

时间:2019-10-22 06:57:14

标签: performance deep-learning flops

深度学习领域中的FLOPS是什么?为什么我们不只使用术语FLO?

我们使用术语FLOPS来衡量冻结的深度学习网络的运行次数。

在Wikipedia之后,FLOPS =每秒的浮点操作。在测试计算单元时,应该考虑时间。但是在测量深度学习网络的情况下,我如何理解时间概念?我们不应该只使用FLO(浮点运算)一词吗?

为什么人们使用术语FLOPS?如果有什么我不知道的东西,那是什么?

====附件===

我提到的冻结的深度学习网络只是一种软件。这与硬件无关。在深度学习领域,人们使用术语FLOPS来衡量运行网络模型需要进行多少操作。我认为在这种情况下,我们应该使用术语FLO。我以为人们对FLOPS一词感到困惑,我想知道其他人是否也这么认为或我错了。

请查看以下情况:

how to calculate a net's FLOPs in CNN

https://iq.opengenus.org/floating-point-operations-per-second-flops-of-machine-learning-models/

3 个答案:

答案 0 :(得分:17)

将FLOP s (浮点操作)和FLOP S (每秒的浮点操作)混淆都用于引用机器学习。 FLOP通常用于描述运行给定模型(例如VGG19)的单个实例需要多少操作。这是您在发布的两个链接中都使用FLOP的方法,但是很遗憾,opengenus链接错误地错误地使用“每秒浮点操作”来引用FLOP。

您将看到FLOPS用于描述诸如GPU之类的给定硬件的计算能力,这在考虑给定硬件的功能有多强大,或者反之,在该硬件上训练模型可能需要多长时间时非常有用。 / p>

有时候人们在写FLOP时会写FLOPS。通常从上下文中可以清楚看出它们的意思。

答案 1 :(得分:6)

我不确定我的答案是否100%正确。但这是我的理解。

  • FLOPS =每秒钟 s

    Fl 起泡点 op
  • FLOPs = Fl 起泡点 op 迭代 s

FLOPS是速度的单位。 FLOP是数量单位。

答案 2 :(得分:1)

  

深度学习领域中的FLOPS是什么?为什么我们不只使用术语FLO?

FLOPS(每秒浮点运算)在大多数字段中都是相同的-它是硬件(如果您非常幸运的话)所能达到的(理论上)浮点运算的最大数量。

我们不使用FLO,因为FLO始终是无穷大的(给定无数的时间,硬件能够执行无数的浮点运算)。

请注意,一个“浮点运算”是一个乘法,一个除法,一个加法……通常(对于现代CPU)FLOPS是通过重复使用“融合的乘法然后加法”指令来计算的,因此一条指令算作2个浮点运算。与SIMD结合使用时,一条指令(并行执行8个“乘法和加法”)可能算作16个浮点指令。当然,这是一个计算出的理论值,因此您可以忽略诸如内存访问,分支,IRQ等之类的东西。这就是为什么在实践中几乎永远无法实现“理论FLOP”的原因。

  

为什么人们使用术语FLOPS?如果有什么我不知道的东西,那是什么?

主要用于描述用于营销目的的硬件功能(例如“我们的新CPU能够支持5 GFLOPS!”)。