在开始深度学习之旅时,许多人认为需要昂贵的硬件设施才能运行复杂的深度学习模型。这种观点部分正确,但也存在误解。本文将探讨深度学习对硬件的需求,并提供一些实用的建议,帮助初学者选择合适的硬件配置。
深度学习模型训练过程中,主要涉及两个操作:前向传播和反向传播。前向传播是将输入数据通过神经网络处理后产生输出,而反向传播则是根据前向传播得到的错误来更新神经网络的权重。这两个操作本质上都是矩阵乘法。
以VGG16为例,这是一个拥有16个隐藏层的卷积神经网络,它大约有1.4亿个参数(即权重和偏置)。想象一下,仅将一个输入传递到这个网络中,需要进行多少矩阵乘法!如果采用传统方法,训练这样的系统可能需要数年时间。
由于神经网络的计算密集部分由多个矩阵乘法组成,可以通过同时执行所有操作而不是依次执行来加速这一过程。这就是使用GPU(图形处理单元)而不是CPU(中央处理单元)来训练神经网络的原因。
为了更直观地理解这一点,让回顾一下历史,看看GPU是如何在这项任务上超越CPU的。
为了理解CPU和GPU的区别,可以使用一个经典的类比。假设需要将货物从一个地方转移到另一个地方,可以选择法拉利或货运卡车。法拉利非常快,可以帮助迅速转移一批货物,但能携带的货物量很小,而且燃油消耗很高。而货运卡车虽然慢,转移货物需要更多时间,但它能携带的货物量比法拉利大得多,而且更省油。
因此,会选择哪种工具取决于任务是什么。如果需要紧急接女朋友,肯定会选择法拉利而不是货运卡车。但如果搬家,会使用货运卡车来搬运家具。
GPGPU(通用图形处理单元)是一种涉及GPU和CPU的并行编程设置,可以像处理图像或其他图形形式一样处理和分析数据。GPGPU最初是为了更好地进行图形处理而创建的,但后来发现它们也非常适合科学计算。这是因为大多数图形处理涉及对大型矩阵进行操作。
2001年,GPGPU在科学计算中的使用始于矩阵乘法的实现。2005年,第一个在GPU上以更快方式实现的常见算法是LU分解。但在当时,研究人员必须在GPU上编码每个算法,并理解低级别的图形处理。
2006年,Nvidia推出了高级语言CUDA,它帮助用高级语言编写图形处理器程序。这可能是研究人员与GPU互动方式中最显著的变化之一。
在选择GPU时,首先要确定任务需要什么样的资源。如果任务较小,或者可以适应复杂的顺序处理,不需要一个大系统来工作。甚至可以完全跳过使用GPU。
如果任务较为密集,并且数据量可管理,一个合理的GPU将是一个更好的选择。个人通常使用笔记本电脑来处理玩具问题,它有一个稍微过时的GPU(一个2GB的Nvidia GT 740M)。拥有一个带有GPU的笔记本电脑可以帮助在任何地方运行东西。