培训深网络是计算密集的;但是,神经网络是固有的平行算法。您通常可以通过在多核CPU,高性能GPU和具有多个CPU和GPU的集群上分发培训来加速对卷积神经网络的培训。使用GPU或并行选项需要并行计算工具箱™。
小费
如果您有万博1manbetx并行计算工具箱,GPU支持是自动的。默认情况下,Trainnetwork.
如果可用,则使用图形处理器。
如果您可以访问具有多个gpu的机器,那么只需指定培训选项'executionEnvironment','multi-gpu'
。
您不需要多台计算机来解决问题的问题,使用数据集太大而无法适合内存。你可以使用AugmentedimageGedataStore.
使用批量数据的功能而不需要一组机器。例如,看到增强图像的火车网络。但是,如果您有一个可用的集群,那么将您的代码放到数据存储库中会很有帮助,而不是到处移动大量的数据。
深度学习硬件和内存的考虑 | 建议书 | 所需的产品s manbetx 845 |
---|---|---|
数据太大而无法适合内存 | 如果从图像集合中导入数据过大,无法装入内存,请使用AugmentedimageGedataStore. 函数。此功能旨在读取批量图像,以更快地处理机器学习和计算机视觉应用。 |
马铃薯® 深度学习工具箱™ |
CPU | 如果你没有合适的GPU,那么你可以用CPU来代替训练。默认情况下,Trainnetwork. 如果没有可用的图形处理器,该功能将使用CPU。 |
马铃薯 深度学习工具箱 |
GPU. | 默认情况下,Trainnetwork. 如果可用,则使用图形处理器。需要支持的GPU设备。万博1manbetx有关支持的设备的信息,请参见万博1manbetxGPU支万博1manbetx持版本(并行计算工具箱)。使用GPU使用gpuDevice 。属性指定执行环境trainingOptions 函数。 |
马铃薯 深度学习工具箱 并行计算工具箱 |
在本地机器上使用多个gpu或CPU内核进行并行 | 通过指定执行环境来利用多个工作者trainingOptions 函数。如果您的机器上有多个GPU,请指定'多gpu' 。否则,指定'平行' 。 |
马铃薯 深度学习工具箱 并行计算工具箱 |
在群集中或云端并行 | 扩展到在集群或云中使用工作者来加速您的深度学习计算。使用trainingOptions 并指定'平行' 使用计算群集。有关更多信息,请参阅云中的深度学习。 |
马铃薯 深度学习工具箱 并行计算工具箱 MATLAB并行服务器™ |
小费
要了解更多,请查看平行和云中的深度学习。
当你训练一个网络使用Trainnetwork.
功能,或使用预测或验证功能时Dagnetwork.
和系列网络
对象,软件使用单精度浮点算术执行这些计算。培训,预测和验证的功能包括Trainnetwork.
那预测
那分类
,激活
。当你同时使用cpu和gpu训练网络时,该软件使用单精度算法。
因为GPU的单精度和双精度性能大大不同,所以重要的是知道在进行精确计算。如果您只使用GPU进行深度学习,则单精度性能是GPU最重要的特征之一。如果您还使用Parallet Computing Toolbox使用GPU进行其他计算,则高双精度性能很重要。这是因为Matlab中的许多函数默认使用双精度算术。有关更多信息,请参阅使用单精度计算提高性能(并行计算工具箱)。
Matlab支万博1manbetx持使用多个GPU并行培训单个网络。这可以在本地计算机上使用多个GPU,或在与GPU的工人的群集或云上实现。要使用多个GPU加速培训,请尝试增加迷你批量大小和学习率。
在本地机器上启用多gpu训练'executionenvironment'
选项'多gpu'
与trainingOptions
函数。
在群集或云上,设置'executionenvironment'
选项'平行'
与trainingOptions
函数。
卷积神经网络通常使用成批图像进行迭代训练。这样做是因为整个数据集太大,无法装入GPU内存。为了获得最佳性能,您可以使用MiniBatchSize
您使用的选项trainingOptions
函数。
最佳的批处理大小取决于您的确切网络,数据集和GPU硬件。当使用多个gpu进行训练时,每批图像都分布在多个gpu之间。这有效地增加了GPU可用内存总量,允许更大的批处理大小。因为它提高了每批的重要性,可以提高学习速率。一个好的一般指导方针是根据批大小的增加比例增加学习率。根据您的应用程序,更大的批处理规模和学习速率可以在不降低准确性的情况下加速训练,最高可达一定限度。
使用多个gpu可以显著加快训练速度。要决定你是否希望多gpu训练带来性能提升,考虑以下因素:
每个GPU上的迭代多长时间?如果每个GPU迭代都很短,那么GPU之间的通信的增加的开销可以占主导地位。尝试通过使用较大的批量大小来增加每个迭代的计算。
所有机器上的GPU都是GPU吗?GPU与不同机器上的通信引入了显着的通信延迟。如果您有合适的硬件,可以缓解此操作。有关更多信息,请参阅快速多节点GPU通万博1manbetx信的高级支持。
要了解更多,请查看平行和云中的深度学习和选择特定的GPU用于培训。
如果你没有合适的GPU来更快地训练卷积神经网络,你可以尝试在云中使用多个高性能GPU的深度学习应用程序,比如Amazon®弹性计算云(亚马逊EC2®)。MATLAB深度学习工具箱提供了示例,向您展示了如何使用Amazon EC2与P2或P3机器实例和存储在云中的数据在云中执行深度学习。
您可以通过在一台机器上使用多个gpu或在具有多个gpu的机器集群中使用多个gpu来加速培训。使用多个gpu训练单个网络,或在同一数据上同时训练多个模型。
有关完整云工作流的更多信息,请参见深度学习并行和云中。
当并行训练一个网络时,你可以在后台获取和预处理数据。若要在后台执行数据调度,请在使用的小批处理数据存储中启用后台调度Trainnetwork.
。您可以使用内置迷你批量数据存储,例如AugmentedimageGedataStore.
那denoisingimageageataTastore.
(图像处理工具箱), 或者PixellabelimagedAtastore.
(电脑视觉工具箱)。您还可以使用带有背景调度的自定义迷你批处理数据存储。有关创建自定义迷你批处理数据存储的详细信息,请参阅开发自定义小批量数据存储。
若要启用后台调度,请设置DispatchInBackground
数据存储的属性真正的
。
属性可以优化工人之间的培训计算和数据分派负载'Workload'
的名称-值对参数trainingOptions
。对于高级选项,您可以尝试修改并行池的工作者数量。有关更多信息,请参阅指定并行首选项(并行计算工具箱)