关于GPU

这些文章将介绍一个主题,解释一些背景知识,并回答我们从MATLAB社区听到的一些问题。

本文的主题是用于深入学习的GPU。我将总结主题,然后看三个问题:

1.当人们说它“加速训练”时,他们指的是多大的加速?

2.我需要买一个(真的)快速GPU才能在MATLAB中训练神经网络吗?

3.在没有GPU的情况下,我有哪些深度学习的选择?

GPU的注册主要是NVIDIA®GPU是推动2010年代大深度学习热潮的燃料之一。在处理大量数据(数千或数百万个数据样本)和复杂的网络架构时,GPU可以显著加快训练模型的处理时间。在此之前,今天的许多深度学习解决方案都是不可能的。万博 尤文图斯

是的,GPU很棒,但它们到底是什么?

GPU或图形处理单元最初用于图形(顾名思义)。GPU可以并行执行许多计算,使它们非常擅长处理像素操作等大型简单任务。

GPU的主要用例是图像分类,但信号数据也可以从这种快速计算中受益。在许多情况下,“图像”是使用数据预处理技术从信号中创建的,该技术将信号转换为该信号的三维时频表示(
了解更多有关使用MATLAB进行信号处理的深入学习的信息
)。然后,这些图像用于深度学习训练,直接从时频图(图像)而不是原始信号学习特征。为了获得更高的速度,我们还可以使用GPU编码器™ 创建直接在NVIDIA GPU上运行的CUDA代码。

与通常有四个或八个强大内核的CPU不同,GPU可以有数百个并行工作的较小内核。每个GPU内核都可以执行简单的计算,但它本身并不十分智能。它的力量来自蛮力;将所有这些内核用于深入学习计算,如卷积、ReLU和池。

如果您想了解更多信息,请参见
MATLAB对万博1manbetxGPU计算的支持
看起来像,但现在让我们开始提问吧!

Q1

我看到很多关于使用GPU加速深度学习培训的宣传,但很少有细节。如果我不能保证真正的速度提高,我不想浪费时间为GPU的预算争论。那么,我可以合理地期望增加多少?

这是它真正要依赖的东西。有一些因素会影响您将看到的显著增长:
  • 输入数据量大:数据集越复杂,GPU就越能加快训练速度
  • 复杂的网络结构:你做的卷积和计算越多,花费的时间就越长
  • 硬件:你开始做什么和你要做什么

GPU不加速训练的情况很少见,但在某些情况下,GPU可能会过度使用,例如1D输入数据、矢量数据或小输入数据。以这个简单的深度学习为例
分类示例
,其中图像较小(28 x 28 px),网络只有几层。这个数据集只需要几分钟就可以使用CPU进行训练,所以GPU根本不会有什么不同。

有趣的事实:如果你有一个GPU,你可以使用MATLAB函数
gputimeit
测量函数在GPU上运行的平均时间。还有这个
博文
从2017年开始,但它仍然是测量GPU速度以及比较CPU和GPU进行深入学习的重要资源。

这在直觉上应该是有意义的:如果我有一个较小的输入大小,并要求网络执行较少的计算(使用较少的层),那么GPU提供的并行化和加速的机会就没有那么多了。


我能给你的最好建议是看看你是否可以借用一个GPU或注册一些基于云的GPU资源,并测量培训时间的差异。不管怎样,实际测量可能比“预期”或“预测”的好处更有说服力!


最后,每种新的GPU型号都比上一种型号快,就像CPU在过去的几年里并不是都保持不变一样。
查看NVIDIA性能数据。

问题2

我是一个MATLAB用户,想训练一个神经网络。我需要买一个快速GPU吗?

我想在这个问题中挑出两个词:“需要”和“快速”。需要意味着需要,这是一个只有你才能回答的问题。管理层是否要求您在紧迫的期限内准备好神经网络投入生产?那当然!你需要一个。如果没有快速的GPU,你正在训练的任何东西都能工作吗?最后所以,这真的取决于你。

现在,你需要一个“快速”的GPU吗?与“需要”一样,这可以追溯到您的实际需求,但我们已经过了技术层面,所以让我们假设您有一定的时间压力,并将此问题视为,“我如何知道我需要哪个GPU?”

与一般的计算机硬件一样,GPU也会随着时间的推移而老化,因此在训练模型时,您需要跟踪当前的研究使用了什么。与上一个问题类似,根据您对这些问题的回答,结果可能会有所不同:

  • 你有多少数据?
  • 有多少个培训班?
  • 网络的结构是什么?

即使你的笔记本电脑也有GPU,但这并不意味着它可以处理深度学习所需的计算。

不久前,我达到了我自己的耐心极限。我有一个深入的学习模型,我正试图运行,这是永远的。我看到我的一个开发人员朋友,我想我会挑选他的大脑,看看问题可能是什么。我们经历了网络的复杂性(基于ResNet Inception的),图像的数量(几十万),以及课程的数量(大约2000)。我们不明白为什么培训会花费超过几个小时的时间。

然后我们谈到了硬件。我提到我使用的是2014年左右的特斯拉K40,他真的开始大笑。这很尴尬。而且有点粗鲁。但一旦他厌倦了硬件羞辱我,他就让我使用他的。随之而来的是速度的提高,整个国家都实现了和平。这个故事的寓意是,硬件的进步很快分享泰坦X的朋友才是真正的朋友。

这里有一个更有记录的例子:我的同事希瑟·戈尔(
@希瑟戈尔
)运行此视频分类
实例
从文档中可以看出,相同的数据和网络在两种不同的硬件设置上导致了处理时间上的一些显著差异。
阅读更多关于她的经历
.

带GPU的Windows笔记本电脑

NVIDIA Quadro M2200

原始型号(50节课):12.6小时,Acc:66.7%

小型模型(8节课):90分钟,Acc:83.16%

带GPU的Linux桌面

英伟达泰坦XP

原始型号(50节课):2.7小时,Acc:67.8%

小型模型(8级):26分29秒,Acc 80%

需要注意的是:两个测试都启用了用于监视和屏幕截图目的的训练图。班级的数量不是罪魁祸首;这是因为使用更少的类使用更少的输入样本。对培训时间有实际影响的部分是每堂课的数据量。

我已经编制了一份从非常昂贵到非常不昂贵的GPU列表,以及一些标准规范:
夸德罗GV100
泰坦RTX
GeForce RTX 2080
CUDA并行处理核

5120

4608

2944

GPU存储器
32 GB HBM2
24 GB G5X
8GB GDDR6
内存带宽
870 GB/s
672 GB/s
448 GB/s
价格
$8,999
$2,499
$799
注:截至2020年4月2日,这些价格是正确的,可能会发生变化。

价格会随着硬件的老化而下降,所以尽管我们之前嘲笑过我的特斯拉K40的故事,但它是500美元。如果你没有钱,不要被最新和最好的产品所蒙蔽。每年,GPU制造商都会继续生产出我们见过的最快的GPU,这将使旧型号更不受欢迎和更便宜。事实上,就拿它来说吧看看RTX2080,不到1千美元的小GPU还不错。

第三季度

我没有访问GPU的权限。我能做什么?

好消息是你还有选择。

首先:云资源

例如,使用NVIDIA GPU云(NGC)在云实例中,您可以拉4个、8个或更多GPU在云中使用,并并行运行多个迭代;您还可以跨多个GPU分发培训。这将有助于加快速度,并且云资源的使用确保您的GPU不会像您购买的一样过时,也不会随着时间的推移而老化。云≠ 免费的,所以虽然它应该是一个较小的前期成本,但仍然有一个费用。

下一步:为CPU优化

您可以运行多核CPU培训。您仍然可以从多个CPU核上的低性能GPU中获益,但它们总比没有好。

除此之外,您还可以切换算法。您可以从网络执行“激活”操作,而不是进行训练。Gabriel Ha在其关于在MATLAB中使用神经网络进行特征提取的视频中谈到了这一点。您还可以按照
实例
显示激活的使用。

迁移学习往往比从头开始的培训花费更少的时间。您可以利用先前培训中学习的功能,并关注网络中的一些后续功能,以了解新数据集的独特功能。

最后:借用一个GPU,然后用CPU进行测试

假设您已经成功地训练了您的网络;CPU在推理方面工作得非常好!与GPU相比,速度差异变得更加易于管理,并且我们已经改进了这些网络在CPU上的推理性能。

还要吗?

这是我的全部!我希望你喜欢这个GPU专栏。如果您希望看到讨论其他深入学习主题,请在下表中弹出一个主题或问题。

谢谢你的建议!