所有关于gpu

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

本文的主题是用于深度学习的gpu。我会总结一下这个话题,然后看看三个问题:

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

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

3.没有GPU的深度学习有哪些选择?

gpu的合并——主要是NVIDIA®gpu是2010年代深度学习热潮的动力之一。当处理大量数据(成千上万的数据样本)和复杂的网络架构时,gpu可以显著加快模型训练的处理时间.在此之前,今天的许多深度学习解决方案都是不可能的。金宝搏官方网站

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

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

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

cpu通常有4或8个强大的核心,而gpu可以有数百个更小的核心并行工作。每个GPU核心都可以执行简单的计算,但它本身并不是很智能。它的力量来自蛮力;将所有这些核心用于深度学习计算,如卷积、ReLU和池化。

如果你想了解更多,看看
MATLAB支金宝app持GPU计算
看起来像,但现在我们来回答问题吧!

第一季度

我看到很多关于使用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的性能数据。

第二季

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

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

现在,你需要一个“快速”的GPU吗?和“需求”一样,这又回到了你的实际需求——但是我们已经超越了技术细节,所以让我们假设你有一些时间压力,“我怎么知道我需要哪个GPU ?”

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

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

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

前段时间,我的耐心也达到了极限。我想要运行一个深度学习模型,但它花了我很长时间。我看到我的一个开发人员朋友,我想问问他的问题是什么。我们讨论了网络的复杂性(基于ResNet-Inception)、图像的数量(几十万)和类的数量(大约2000)。我们不明白为什么训练要花几个小时以上。

然后我们谈到硬件。我提到我在2014年左右用特斯拉K40,他真的开始笑了。这是尴尬的。和有点粗鲁。但当他厌倦了用硬件羞辱我时,他让我用他的。速度的提高随之而来,整个国家一片和平。这个故事告诉我们,硬件的发展速度非常快,能够分享Titan X的朋友才是真正的朋友。

下面是一个更详细的例子:我的同事Heather Gorr (
@HeatherGorr
)进行了这个视频分类
例子
从文档中可以看出,在两个不同的硬件设置上使用相同的数据和网络会导致处理时间上的一些显著差异。
阅读更多关于她的经历

带GPU的Windows笔记本

英伟达方形住宅区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
24gb gb g5x
8 gb GDDR6
内存带宽
870 GB / s
672 GB / s
448 GB / s
价格
8999美元
2499美元
799美元
注:这些价格在2020年4月2日是正确的,可能会有变化。

随着硬件的老化,价格会下降,所以尽管我们之前对我的特斯拉K40的故事笑了,它的价格是500美元。如果你没有钱,不要被最新的和最好的愚弄。每一年,GPU制造商都将继续生产出我们所见过的最快的GPU,这将使老型号不那么受欢迎和昂贵。事实上,看看RTX 2080。一个不错的GPU,不到1000美元。

第三季

我没有GPU。我该怎么办?

好消息是你还有其他选择。

首先:云资源

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

接下来:针对cpu进行优化

您可以运行多核CPU训练。在多个CPU核上使用低性能的GPU仍然会让你受益,但总比没有好。

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

迁移学习比从头开始训练花费的时间要少。您可以利用在之前的训练中学习的特性,并关注网络中的一些较晚的特性,以理解新数据集的独特特性。

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

假设你已经成功训练了你的人际网络;cpu在推理方面工作得非常好!与gpu相比,速度差异变得更易于管理,我们还改进了这些网络在cpu上的推理性能。

想要更多吗?

这就是我现在的全部内容!我希望您喜欢这篇关于gpu的专栏文章。如果你有其他想要讨论的深度学习话题,请在下面的表格中选择一个话题或问题。

谢谢你的建议!