24

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

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

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

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

====附件===

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

请看这些案例:

如何在 CNN 中计算网络的 FLOPs

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

4

3 回答 3

39

令人困惑的是,浮点运算 FLOP 和每秒浮点运算都用于机器学习。FLOPs 通常用于描述运行给定模型的单个实例(如 VGG19)需要多少次操作。这是您发布的两个链接中 FLOP 的用法,但不幸的是,opengenus 链接错误地使用“每秒浮点运算”来指代 FLOP。

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

有时人们写 FLOPS 的意思是 FLOP。通常从上下文中可以清楚地看出它们的含义。

于 2020-05-26T18:29:08.050 回答
19

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

  • FLOPS =每秒浮点运算次数_

  • FLOPs =浮点运算_ _

FLOPS 是速度单位。FLOPs 是一个数量单位。

于 2020-02-18T07:01:30.317 回答
4

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

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

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

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

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

它主要用于描述硬件在营销方面的强大功能(例如,“我们的新 CPU 能够达到 5 GFLOPS!”)。

于 2019-10-22T07:53:57.417 回答