PyTorch - 03 - CUDA之解释:为什么深度学习使用GPU?
为什么深度学习和神经网络使用GPU
这篇文章的目的是帮助初学者了解CUDA是什么以及它如何与PyTorch配合使用,更重要的是,为什么我们仍然在神经网络编程中甚至使用GPU。
Graphics Processing Unit (GPU)
要了解CUDA,我们需要对图形处理单元(GPU)有一定的了解。 GPU是一种擅长处理专门计算的处理器。
这与中央处理器(CPU)相反,后者是擅长处理一般计算的处理器。 CPU是支持我们电子设备上大多数典型计算的处理器。
GPU的计算速度可能比CPU快得多。 然而,这并非总是如此。 GPU相对于CPU的速度取决于所执行的计算类型。 最适合GPU的计算类型是可以并行完成的计算。
Parallel Computing
并行计算是一种计算类型,其中通过特定的计算将其分解为可以同时执行的独立的较小计算。 然后将所得的计算重新组合或同步,以形成原始较大计算的结果。
较大任务可以分解的任务数量取决于特定硬件上包含的内核数量。 内核是在给定处理器中实际执行计算的单元,CPU通常具有四个,八个或十六个内核,而GPU可能具有数千个。
还有其他重要的技术规范,但是此描述旨在推动总体思路。
有了这些工作知识,我们可以得出结论,并行计算是使用GPU完成的,我们还可以得出结论,最适合使用GPU解决的任务是可以并行完成的任务。 如果可以并行执行计算,我们可以使用并行编程方法和GPU加快计算速度。
神经网络:并行计算
现在让我们将注意力转向神经网络,看看为什么GPU在深度学习中被大量使用。 我们刚刚看到GPU非常适合并行计算,而关于GPU的事实就是深度学习使用GPU的原因。
在并行计算中,并行任务是需要很少或不需要任何努力就可以将整个任务分成一组要并行计算的较小任务的任务。并行执行的任务是很容易看到一组较小的任务彼此独立的任务。
因此,神经网络令人尴尬地并行。 我们使用神经网络进行的许多计算可以很容易地分解为较小的计算,从而使一组较小的计算彼此不依赖。 卷积就是这样一个例子。
卷积示例
让我们来看一个例子,卷积运算: