是什么让GPU在神经网络计算中如此高效



最近,我尝试在大型CPU服务器上实现和部署一个深度学习解决方案(多层LSTM网络,具有用于静态输入的附加层)。经过多次尝试,与个人电脑的性能相比,我的速度仅提高了3倍。我听说GPU可能会做得更好。你能解释一下,在深度神经网络计算方面,GPU比CPU好得多的确切原因是什么吗?

GPU的体系结构主要关注并行性,而CPU的体系结构则不然。这意味着GPU可以同时进行许多简单的操作;例如,GPU每秒可以处理屏幕上每个像素的颜色(1920x1080几乎是200万像素)60次。通用CPU每个核心(物理或逻辑)可以有一个ALU,所以您的CPU可能有8/16个ALU。一个GPU可以有数千个。

长话短说:一个CPU可以非常快速地执行一些复杂的操作,而一个GPU可以非常迅速地执行数千个非常简单的操作。此外,由于GPU同时处理大量数据,它通常配有非常高速的RAM以避免瓶颈。

神经网络基本上是许多并行工作的小型"计算机",因此GPU的架构更适合此任务

训练深度神经网络的实际算法是反向传播算法。它涉及到在网络的不同级别上计算雅可比矩阵以及这些矩阵的乘积。矩阵乘法步骤是GPU胜过CPU的地方,因为所涉及的操作是结构化的,不需要CPU中存在的复杂机制(如分支预测、无序调度)。顺便说一句,你可以说CPU通过使用缓存阻塞、预取和手工编码组装等技术,在矩阵乘法方面变得更好了。

除了训练,神经网络的推理部分还利用了有效的矩阵乘法。这是因为不同层的输入和权重(参数)向量通常以张量形式存储

使用GPU的另一个好处是提供了更好的内存带宽。GDDR5x正在接近500 GB/s,而最先进的DDR4提供的速度约为80-100 GB/s。因此,您可以获得大约5倍的带宽改进因子,这是内存密集型神经网络计算可以利用的。

最新更新