所有关于GPU

这些文章将看一个主题,解释一些背景,并回答了一些我们从Matlab社区听到的问题。

本文的主题是深入学习的GPU。我会总结这个话题,然后看看三个问题:

1.当人们说它“加快训练”时,他们的意思有多大?

2.我是否需要购买(真的)快速的GPU,以便能够在Matlab训练神经网络?

3.没有GPU的深度学习选择是什么?

掺入GPU - 主要是NVIDIA®GPU - 是一些推动2010年代大深入学习狂热的燃料。使用大量数据(数百万或数百万个数据样本)和复杂的网络架构时,GPU可以显着加速处理时间来训练模型。在此之前,今天的许多深度学习解决方案是不可能的。金宝搏官方网站

是的,GPU很棒,但它们完全是什么?

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

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

与通常有四个或八个功能强大的核心的CPU不同,GPU可以具有数百个并行工作的核心。每个GPU核心都可以执行简单的计算,但本身就是不是很聪明。它的力量来自蛮力;将所有核心放在卷积,释放和汇集等深度学习计算上。

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

Q1

我看到了很多炒作,使用GPU加快深度学习培训,但细节很少。如果我无法承诺实际增速,我不想浪费我的时间争论GPU的预算。那么,我可以合理地期待多少增加?

这是事情 - 它真的依赖。有一些因素会影响您认为的增加程度:
  • 大输入数据大小:数据集更复杂,GPU越多,可以加快培训
  • 复杂的网络结构:您的卷曲和计算越多,这将越长
  • 硬件:你从中开始的东西以及你搬到的东西

这种情况将是罕见的,其中GPU没有加速培训,但是存在GPU可能是矫枉过正的情况,例如1D输入数据,矢量数据或小输入数据。采取这个简单的深度学习
分类示例
,其中图像很小(28 x 28 px),网络只有几层。此数据集仅需几分钟即可使用CPU培训,因此GPU根本不会产生太大差异。

有趣的事实:如果您有GPU,则可以使用MATLAB功能
gputimeit.
测量平均时间函数以在GPU上运行。此外,这也是如此
博客帖子
是2017年,但仍然是测量GPU速度的巨大资源,并比较CPU和GPU进行深度学习。

这应该是直观的意义:如果我有较小的输入大小,并要求网络执行较少的计算(使用较少的图层),那么对PPU提供的并行化和加速并没有多少机会。


我可以给您的最佳建议是看您是否可以借用GPU或注册一些基于云的GPU资源并测量培训时间的差异。无论如何,实际测量比争论比“预期的”或“预测”的好处更有说服力!


最后,每个新的GPU模型比最后一个更快,就像CPU一样,多年来并不是同样的。
查看NVIDIA性能数据。

Q2

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

我想在这个问题中挑选出两个词:“需要”和“快速”。需要意味着必要性,这是一个问题,只有你可以回答。您是否有管理层的授权,以便在紧张的截止日期内准备好的神经网络进行生产?然后,当然!您必须有一个。无论你在没有快速GPU的情况下训练工作吗?最终!所以,它真的取决于你。

现在,你需要一个“快”的gpu?与“需要”一样,这回回了您的实际要求 - 但我们已经过去的技术性,所以让我们假设你有一些时间压力并采取这个问题,“我如何知道我需要哪个gpu?”

与计算机硬件一样,GPU会随着时间的推移而年龄,所以你想跟踪当前研究在训练模型时使用的是什么。类似于最后一个问题,结果可能会根据您对这些问题的答案而有所不同:

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

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

一段时间后,我击中了自己的耐心阈值。我有一个深入的学习模式,我试图跑步,它是永远的。我看到了一位我的开发商朋友,并以为我挑选了他的大脑可能是什么问题。我们经历了网络的复杂性(基于Reset-inception),图像数量(几十万),以及类的数量(大约2000)。我们无法理解为什么培训需要超过几个小时。

然后我们到了硬件。我提到我正在使用2014年大约一个特斯拉K40,他真的开始笑。这是尴尬的。略显粗鲁。但是一旦他厌倦了硬件羞辱我,他就会给我使用他的使用。随着速度改善,在整个土地上都有和平。这个故事的寓意是,硬件进步迅速行动,并且有一个朋友分享他们的泰坦X确实是朋友。

这是一个更新的例子:我的同事希瑟·戈尔(
@heathergor.
)运行此视频分类
例子
从文档 - 两个不同硬件设置上的相同数据和网络导致处理时间的一些显着差异。
阅读更多关于她的经历

Windows笔记本电脑与GPU

nvidia Quadro M2200.

原模(50级):12.6小时,ACC:66.7%

小型模型(8级):90分钟,ACC:83.16%

带GPU的Linux桌面

nvidia titan xp.

原模(50级):2.7小时,ACC:67.8%

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

请注意:两个测试都有启用培训图,以便监控和截图目的。课程的数量不是这里的罪魁祸首;现在就是使用更少的类使用较少的输入样本。您可以影响对培训时间有形影响的部分是每个类中的数据量。

我编译了一个GPU的名单,从非常昂贵到非常不昂贵和一些标准规格:
Quadro GV100.
泰坦rtx.
GeForce RTX 2080.
CUDA平行加工核心

5120.

4608

2944

GPU记忆
32 GB HBM2.
24 GB GB G5X
8GB GDDR6.
内存带宽
870 GB / s
672 GB / s
448 GB / s
价格
8,999美元
$ 2,499
799美元
注意:截至4/2/2020,这些价格是正确的,可能会有所变化。

价格随着硬件年龄而下降,虽然我们早点笑了我的Tesla K40故事 - 它的500美元。如果你没有钱,不要愚弄最新和最伟大的。每年,GPU制造商都将继续抽出我们见过的最快GPU,这将使旧模型不太理想和昂贵。事实上,看看RTX 2080.不超过1,00美元的糟糕的小GPU。

Q3

我无法访问GPU。我能做什么?

好吧,好消息你还有选择。

首先:云资源

例如,对于NVIDIA GPU云(NGC)和云实例,您可以在云中提取4,8或更多GPU并并行运行多个迭代;您还可以通过多个GPU分发培训。这应该有助于速度速度,并且使用云资源的使用确保您的GPU与您购买和随着时间的推移时代的某些东西。云≠自由,所以虽然应该是更小的前线成本,但仍有一笔费用。

下一页:优化CPU

您可以运行多核CPU培训。您仍将在多个CPU内核上从低于绩效的GPU中受益,但它们比没有更好。

除此之外,您还可以切换算法。您可以从网络执行“激活”而不是培训。Gabriel HA在他的视频中使用Matlab中的神经网络的功能提取来讨论这一点。你也可以遵循一个
例子
显示使用激活。

转移学习往往比从头划伤的训练减少时间。您可以利用先前培训中学到的功能,并专注于网络中的一些稍后功能,以了解新数据集的唯一功能。

最后:借用GPU然后用CPU测试

假设你设法训练你的网络;CPU非常适合推理!与GPU相比,速度差异变得更加可管理,并且我们已经改善了CPU上这些网络的推理性能。

想要更多?

这就是我现在的全部!我希望你在GPU上享受这个专栏。如果您有其他深度学习主题,您希望看到讨论,弹出下面的表单中的主题或问题。

谢谢你的建议!