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

What is FLOPS in field of deep learning?

深度学习领域的FLOPS是什么?为什么我们不只使用 FLO 这个词?

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

根据维基百科,FLOPS = 每秒浮点运算。当我们测试计算单元时,我们应该考虑时间。但是在测量深度学习网络的情况下,我该如何理解这个时间概念呢?我们不应该只使用 FLO(浮点运算)这个术语吗?

为什么人们使用 FLOPS 这个词?如果有什么我不知道的,那是什么?

====附件===

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

请看这些案例:

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

What is FLOPS in field of deep learning? Why we don't use the term just FLO?

FLOPS(每秒浮点运算次数)在大多数领域都是相同的 - 它是硬件(如果您非常幸运)能够进行的(理论上的)最大浮点运算次数。

我们不使用 FLO,因为 FLO 总是无穷大(假设硬件有无限长的时间能够进行无限多的浮点运算)。

请注意,一个 "floating point operation" 是一次乘法,一次除法,一次加法,......通常(对于现代 CPU)FLOPS 是通过重复使用 "fused multiply then add" 指令计算的,因此一个指令计为 2 个浮点运算。与 SIMD 结合使用时,一条指令(并行执行 8 "multiple and add")可能算作 16 条浮点指令。当然这是一个计算出的理论值,所以你忽略了内存访问、分支、IRQ 等。这就是为什么 "theoretical FLOPs" 在实践中几乎永远无法实现的原因。

Why do people use the term FLOPS? If there is anything I don't know, what is it?

主要用于描述硬件在营销方面的强大程度(例如 "Our new CPU is capable of 5 GFLOPS!")。

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

  • FLOPS = Fl浮点ops

  • FLOPs = Fl浮动点operations

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

令人困惑的是,浮点运算 FLOPs 和每秒浮点运算 FLOPS 都用于引用机器学习。 FLOP 通常用于描述 运行 给定模型的单个实例需要多少操作,例如 VGG19。这是您发布的两个 link 中 FLOP 的用法,但不幸的是,opengenus link 错误地错误地使用 'Floating point operations per second' 来引用 FLOP。

您将看到 FLOPS 用于描述给定硬件(如 GPU)的计算能力,这在考虑给定硬件有多强大时很有用,或者相反,在该硬件上训练模型可能需要多长时间.

有时人们写 FLOPS 时他们指的是 FLOPs。从上下文中通常可以清楚地知道他们的意思。