任何试图大规模推广训练模型性能的数据科学家或机器学习爱好者都将在某个时候达到顶峰,并开始经历不同程度的处理滞后。当数据集变得更大时,使用较小的训练集花费数分钟的任务现在可能需要花费更多的时间(在某些情况下是几周)。




SD共享GPU内存为什么用不了 共享gpu内存为0_SD共享GPU内存为什么用不了


那什么是GPU?它们如何与CPU相抗衡?我的深度学习项目需要一个吗?

如果您曾经问过自己这些问题,请继续阅读...

任何数据科学家或机器学习狂热者一生中至少会听说,深度学习需要大量硬件。有些人在笔记本电脑上训练了简单的深度学习模型几天(通常没有GPU),这导致深度学习需要大型系统才能运行执行。这创造了围绕深度学习的话题,为初学者创建了障碍。

我在过去几年中提到的每本书都总是提到以下内容:深度学习需要大量的计算能力才能继续运行。

但我没有数据中心在我的命令,当我建立我的第一个深度学习模型在一个相当大的笔记本电脑,我知道,达成的共识是要么错误或描绘一些道理。

为什么我们需要更多的硬件来进行深度学习?

对于任何神经网络来说,深度学习模型的训练阶段都是最耗费资源的任务

在训练过程中,神经网络会接受输入,然后使用在训练过程中调整的权重在隐藏层中对其进行处理,然后模型发出预测。调整权重以找到模式,以便做出更好的预测。

这两个运算本质上都是矩阵乘法。下图可以表示一个简单的矩阵乘法


SD共享GPU内存为什么用不了 共享gpu内存为0_SD共享GPU内存为什么用不了_02


在神经网络中,我们可以将第一个数组作为神经网络的输入,而第二个数组则形成其权重。

容易吧?

是的,如果您的神经网络具有大约10、100甚至100,000个参数。一台计算机仍将能够在几分钟甚至最多几小时内处理完这一问题。

但是,如果您的神经网络具有超过100亿个参数,该怎么办?采用传统方法来训练这种系统将需要数年时间。您的计算机可能甚至在十分之一之前就放弃了。

“一个采用搜索输入并根据1亿个输出或产品进行预测的神经网络,通常每个产品约有2,000个参数。因此,将它们相乘,神经网络的最后一层现在是2000亿个参数。而且我还没有做任何复杂的事情。我说的是一个非常非常简单的简单神经网络模型。” —博士 莱斯大学学生

如何使深度学习模型训练更快

深度学习模型可以被训练通过简单地在运行的所有操作变得更快同一时间,而不是一个接一个。

您可以通过使用GPU训练模型来实现。

GPU(图形处理单元)是具有专用内存的专用处理器,通常会执行渲染图形所需的浮点运算。

换句话说,它是用于大量图形和数学计算的单芯片处理器,从而释放了CPU周期用于其他作业。

GPU和CPU之间的主要区别在于,与CPU相比,GPU按比例分配了更多的晶体管用于算术逻辑单元,而减少了对高速缓存和流控制的投入。

尽管CPU最适用于需要解析或解释代码中复杂逻辑的问题,但GPU是专为计算机游戏的专用图形渲染而设计的,后来经过增强以加速其他几何计算(例如,变换多边形或旋转垂直线)进入不同的坐标系(如3D)。

GPU小于CPU,但与后者相比,GPU往往具有更多的逻辑核心(算术逻辑单元或ALU,控制单元和内存缓存)。


SD共享GPU内存为什么用不了 共享gpu内存为0_深度学习_03


在上表中,您可以看到GPU(红色/绿色)理论上可以完成CPU(蓝色)的操作的10–15倍。这种加速也非常适用于实践。

如果您将CPU视为玛莎拉蒂,那么GPU可以算是一辆大卡车。

CPU(玛莎拉蒂)可以在RAM中快速获取少量包裹(3-4位乘客),而GPU(卡车)速度较慢,但可以在一圈内获取大量内存(约20位乘客)。

为什么选择GPU进行深度学习

GPU经过优化,可训练人工智能和深度学习模型,因为它们可以同时处理多个计算。

它们具有大量内核,可以更好地计算多个并行进程。此外,深度学习中的计算需要处理大量数据-这使GPU的内存带宽最合适。

有一些决定性参数可以确定是使用CPU还是GPU来训练深度学习模型:

内存带宽:

带宽是GPU比CPU更快的计算速度的主要原因之一。对于大型数据集,CPU在训练模型时会占用大量内存。

计算庞大而复杂的作业需要占用CPU大量的时钟周期-CPU 依次处理作业,并且内核数量少于同类GPU。

另一方面,独立的GPU带有专用的VRAM(视频RAM)内存。因此,CPU的内存可用于其他任务。


SD共享GPU内存为什么用不了 共享gpu内存为0_深度学习_04

随时间比较CPU和GPU的带宽


数据集大小

在深度学习中训练模型需要大量的数据集,因此在内存方面需要大量的计算操作。为了有效地计算数据,GPU是最佳选择。计算量越大,GPU相对于CPU的优势就越大。

优化

在CPU中优化任务要容易得多。尽管CPU内核数量较少,但功能却比数千个GPU内核强大。

每个CPU内核可以执行不同的指令(MIMD架构),而通常组织在32个内核的块中的GPU内核在给定的时间并行执行同一条指令(SIMD架构)。

鉴于需要付出的努力,密集神经网络中的并行化非常困难。因此,与在CPU中相比,在GPU中难以实现复杂的优化技术。


SD共享GPU内存为什么用不了 共享gpu内存为0_SD共享GPU内存为什么用不了_05


我应该使用GPU吗?

与任何数据科学项目一样,这取决于。在速度,可靠性和成本之间需要权衡考虑:

  1. 如果您的神经网络规模相对较小,那么无需GPU就可以解决问题
  2. 如果您的神经网络涉及大量涉及数十万个参数的计算,那么您可能要考虑投资购买GPU

通常,GPU是进行快速机器学习的更安全的选择,因为从本质上讲,数据科学模型训练由简单的矩阵数学计算组成,如果并行执行计算,则其速度可能会大大提高。

Cloud GPU实例

您还应该考虑Cloud GPU。如果您不想购买一堆昂贵的GPU,则可以与云托管公司一起按需利用GPU。它们将使您免于配置硬件的麻烦,最重要的是,它们并不那么昂贵-使用时的成本可以低至每小时0.25美元。

您将租用一台外国计算机/服务器,而不是自己运行。仅仅关闭浏览器或关闭PC是不够的,它们仅会切断设备与该远程服务器之间的连接,而不会关闭您要付费的东西。否则,您将需要支付所有费用,并且会收到讨厌的账单!

CPU最擅长顺序处理单个更复杂的计算,而GPU更擅长并行处理多个但更简单的计算。

GPU计算实例的成本通常是CPU计算实例的2-3倍,因此,除非您在基于GPU的训练模型中看到2-3倍的性能提升,否则我建议使用CPU。