主要内容

gpu和并行的大数据深度学习

训练深度网络需要大量的计算;然而,神经网络本质上是并行算法。通常可以通过在多核cpu、高性能gpu和具有多个cpu和gpu的集群上并行分布训练来加速卷积神经网络的训练。使用GPU或并行选项需要并行计算工具箱™。

提示

GPU支金宝app持是自动的,如果你有并行计算工具箱。默认情况下,trainNetwork功能使用GPU。

如果您可以访问具有多个gpu的机器,那么只需指定培训选项“ExecutionEnvironment”、“multi-gpu”

您不需要多台计算机来解决使用过大而无法装入内存的数据集的问题。你可以使用augmentedImageDatastore功能来处理批数据,而不需要一组机器。例如,请参见带有增强图像的列车网络.但是,如果您有一个可用的集群,那么将您的代码带到数据存储库而不是移动大量的数据可能会很有帮助。

深度学习硬件和内存考虑 建议 所需的产品下载188bet金宝搏
数据太大,内存无法容纳 要从太大而无法放入内存的图像集合中导入数据,请使用augmentedImageDatastore函数。该功能旨在读取批量图像,以便在机器学习和计算机视觉应用程序中更快地处理。

MATLAB®

深度学习工具箱™

CPU 如果你没有合适的GPU,那么你可以在CPU上训练。默认情况下,trainNetwork功能在无图形处理器时使用CPU。

MATLAB

深度学习工具箱

GPU 默认情况下,trainNetwork功能使用GPU。需要支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU支金宝app持情况(并行计算工具箱).使用以下方法检查你的GPUgpuDevice.属性指定执行环境trainingOptions函数。

MATLAB

深度学习工具箱

并行计算工具箱

使用多个gpu或CPU核的本地机器上的并行 属性指定执行环境,从而利用多个工作人员trainingOptions函数。如果您的机器上有多个GPU,请指定“multi-gpu”.否则,指定“平行”

MATLAB

深度学习工具箱

并行计算工具箱

在集群或云上并行 扩展到集群或云上使用worker来加速深度学习计算。使用trainingOptions并指定“平行”使用计算集群。有关更多信息,请参见云中的深度学习

MATLAB

深度学习工具箱

并行计算工具箱

MATLAB并行服务器™

提示

想要了解更多,请看并行和在云中扩展深度学习

当你用trainNetwork函数,或使用预测或验证函数时DAGNetworkSeriesNetwork对象时,软件使用单精度浮点运算执行这些计算。用于训练、预测和验证的功能包括trainNetwork预测分类,激活.当你同时使用cpu和gpu训练网络时,该软件使用单精度算法。

因为gpu的单精度和双精度性能可能有很大的不同,所以知道在哪个地方执行精度计算是很重要的。如果你只使用GPU进行深度学习,那么单精度性能是GPU最重要的特性之一。如果您还使用GPU进行其他计算,那么高双精度性能是很重要的。这是因为MATLAB中的许多函数默认使用双精度算法。有关更多信息,请参见使用单精度计算提高性能(并行计算工具箱)

使用多个gpu进行培训

MATLAB支金宝app持使用多个gpu并行训练单个网络。这可以在您的本地机器上使用多个gpu来实现,也可以在集群或云上使用gpu工人来实现。要使用多个gpu来加速训练,可以尝试增加小批量的大小和学习率。

卷积神经网络通常使用批量图像进行迭代训练。这样做是因为整个数据集太大,无法装入GPU内存。为了获得最佳性能,您可以使用MiniBatchSize选项指定的trainingOptions函数。

最佳批处理大小取决于确切的网络、数据集和GPU硬件。当使用多个gpu进行训练时,每个图像批处理分布在多个gpu之间。这有效地增加了GPU可用的总内存,允许更大的批大小。因为它提高了每批的重要性,你可以提高学习速度。一个好的一般指导方针是按批大小的增加比例增加学习率。根据您的应用程序,较大的批量大小和学习率可以在不降低精确度的情况下加快训练,达到一定的限制。

使用多个gpu可以显著加快训练速度。要决定你是否期望多gpu训练带来性能提升,考虑以下因素:

  • 每个GPU的迭代时间有多长?如果每次GPU迭代都很短,那么GPU之间的通信开销就会占主导地位。尝试通过使用更大的批大小来增加每次迭代的计算量。

  • 所有的gpu都在一台机器上吗?不同机器上的gpu之间的通信引入了一个显著的通信延迟。如果你有合适的硬件,你可以减轻这个问题。有关更多信息,请参见高级支持快速多节点金宝appGPU通信

想要了解更多,请看并行和在云中扩展深度学习选择用于培训的特定图形处理器

云中的深度学习

如果您没有合适的GPU可用来更快地训练卷积神经网络,您可以尝试在云中使用多个高性能GPU的深度学习应用程序,例如Amazon®弹性计算云(Amazon EC2®).MATLAB深度学习工具箱提供了一些示例,向您展示了如何使用Amazon EC2和存储在云中的P2或P3机器实例和数据在云中执行深度学习。

您可以通过在一台机器上或在具有多个gpu的机器集群中使用多个gpu来加速培训。使用多个gpu训练单个网络,或者在同一数据上同时训练多个模型。

有关完整云工作流的更多信息,请参见并行和云中的深度学习

在后台获取和预处理数据

在并行训练网络时,可以在后台获取和预处理数据。如果需要在后台进行数据调度,请在使用的mini-batch数据存储中启用后台调度trainNetwork.您可以使用内置的迷你批处理数据存储,例如augmentedImageDatastoredenoisingImageDatastore(图像处理工具箱),或pixelLabelImageDatastore(计算机视觉工具箱).您还可以使用启用后台分派的自定义小批量数据存储。有关创建自定义小批量数据存储的详细信息,请参见开发自定义小批量数据存储

若要启用后台调度,请设置DispatchInBackground属性真正的

可以通过指定“WorkerLoad”的名称-值对参数trainingOptions.对于高级选项,可以尝试修改并行池的工作人员数量。有关更多信息,请参见指定并行首选项(并行计算工具箱)

另请参阅

|

相关的话题