我已经看到关于 GPU 的“开销”的讨论,对于“小型”网络,在 CPU(或 CPU 网络)上训练实际上可能比在 GPU 上更快。
“小”是什么意思?
例如,具有 100 个隐藏单元的单层 MLP 会“小”吗?
对于循环架构,我们对“小”的定义会改变吗?
在决定是在 CPU 还是 GPU 上进行训练时,是否还有其他标准需要考虑?
编辑1:
我刚刚发现了一篇博文(可能已经过时了?它是从 2014 年开始的):
“...大多数网卡 [s] 仅适用于向 CPU 注册的内存,因此两个节点之间的 GPU 到 GPU 传输将是这样的:GPU 1 到 CPU 1 到网卡 1 到网卡 2 到 CPU 2 到 GPU 2。这意味着,如果一个人选择慢速网卡,那么单台计算机可能没有加速。即使使用快速网卡,如果集群很大,与之相比,甚至无法从 GPU 获得加速到 CPU,因为 GPU 的工作速度太快,以至于网卡跟不上它们。
这就是为什么许多像谷歌和微软这样的大公司正在使用 CPU 而不是 GPU 集群来训练他们的大型神经网络的原因。"
所以在某些时候,根据这篇文章,使用 CPU 可能会更快。现在还是这样吗?
编辑 2:是的,那篇博文很可能已经过时了,因为:
现在看来,一个节点内的 GPU 是通过 PCIe 总线连接的,因此通信可以以大约 6GiB/s 的速度进行。(例如:https ://www.youtube.com/watch?v=el1iSlP1uOs ,大约 35 分钟)。演讲者暗示这比从 GPU1 到 CPU 再到 GPU2 更快。这意味着网卡不再是瓶颈。