是什么让 GPU 在神经网络计算中如此高效?
What makes GPUs so efficient in neural network computations?
最近我尝试在大型 CPU 服务器上实施和部署深度学习解决方案(多层 LSTM 网络,带有用于静态输入的附加层)。经过多次尝试,与我个人电脑上的性能相比,我的速度只提高了 3 倍。我听说 GPU 可能会做得更好。你能解释一下在深度神经网络计算方面 GPU 比 CPU 好得多的确切原因是什么吗?
GPU 的架构主要侧重于并行性,而 CPU 的架构则不然。这意味着一个 GPU 可以同时做很多简单的操作;例如,GPU 每秒可以处理屏幕(1920x1080 几乎是 200 万像素)每个像素的颜色 60 次。
通用 CPU 每个核心(物理或逻辑)可以有一个 ALU,因此您的 CPU 可能有 8/16 个 ALU。一个 GPU 可以有 thousands of them.
长话短说:CPU 可以非常快速地执行一些复杂的操作,而 GPU 可以非常快速地执行数千个非常简单的操作。此外,由于 GPU 同时处理大量数据,它通常配备非常高速的 RAM 以避免瓶颈。
神经网络基本上是很多并行工作的小"computers",所以 GPU 的架构更适合这个任务
训练深度神经网络的实际算法是反向传播算法。它涉及在网络的各个级别计算雅可比矩阵以及这些矩阵的乘法。 矩阵乘法步骤是 GPU 胜过 CPU 的地方,因为所涉及的操作是结构化的,不需要复杂的机制(如分支预测、无序调度) 存在于 CPU 中。另外,您可能会争辩说,通过使用高速缓存阻塞、预取和手动编码汇编等技术,CPU 在矩阵乘法方面变得更加出色。
除了训练之外,神经网络的推理部分还利用了高效的矩阵乘法。这是因为各个层的输入和权重(参数)向量通常以张量形式存储。
使用 GPU 的另一个好处是提供更好的内存带宽。 GDDR5x 接近 500 GB/s,而最先进的 DDR4 提供的约为 80-100 GB/s。因此,带宽提高了约 5 倍,内存密集型神经网络计算可以利用它。
最近我尝试在大型 CPU 服务器上实施和部署深度学习解决方案(多层 LSTM 网络,带有用于静态输入的附加层)。经过多次尝试,与我个人电脑上的性能相比,我的速度只提高了 3 倍。我听说 GPU 可能会做得更好。你能解释一下在深度神经网络计算方面 GPU 比 CPU 好得多的确切原因是什么吗?
GPU 的架构主要侧重于并行性,而 CPU 的架构则不然。这意味着一个 GPU 可以同时做很多简单的操作;例如,GPU 每秒可以处理屏幕(1920x1080 几乎是 200 万像素)每个像素的颜色 60 次。 通用 CPU 每个核心(物理或逻辑)可以有一个 ALU,因此您的 CPU 可能有 8/16 个 ALU。一个 GPU 可以有 thousands of them.
长话短说:CPU 可以非常快速地执行一些复杂的操作,而 GPU 可以非常快速地执行数千个非常简单的操作。此外,由于 GPU 同时处理大量数据,它通常配备非常高速的 RAM 以避免瓶颈。
神经网络基本上是很多并行工作的小"computers",所以 GPU 的架构更适合这个任务
训练深度神经网络的实际算法是反向传播算法。它涉及在网络的各个级别计算雅可比矩阵以及这些矩阵的乘法。 矩阵乘法步骤是 GPU 胜过 CPU 的地方,因为所涉及的操作是结构化的,不需要复杂的机制(如分支预测、无序调度) 存在于 CPU 中。另外,您可能会争辩说,通过使用高速缓存阻塞、预取和手动编码汇编等技术,CPU 在矩阵乘法方面变得更加出色。
除了训练之外,神经网络的推理部分还利用了高效的矩阵乘法。这是因为各个层的输入和权重(参数)向量通常以张量形式存储。
使用 GPU 的另一个好处是提供更好的内存带宽。 GDDR5x 接近 500 GB/s,而最先进的 DDR4 提供的约为 80-100 GB/s。因此,带宽提高了约 5 倍,内存密集型神经网络计算可以利用它。