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