主要内容

在GPU和云中并行扩展深度学习

训练深度网络是计算密集型的,可能需要很多小时的计算时间;然而,神经网络本质上是并行算法。通过使用高性能GPU和计算机集群并行运行,可以利用这种并行性。

建议使用一个GPU或多个GPU进行训练。如果没有GPU,只能使用单CPU或多CPU。在训练和推理方面,CPU通常比GPU慢得多。在单个GPU上运行通常比在多个CPU核上运行提供更好的性能。

如果没有合适的GPU,可以在云中租用高性能GPU和集群。有关热处理的更多信息,请访问MATLAB®在云中进行深入学习,请参见云端深度学习.

使用GPU或并行选项需要并行计算工具箱™. 使用GPU还需要支持的GPU设备。有关支持的设备的信息,请参阅万博1manbetxGPU版万博1manbetx本支持(并行计算工具箱). 使用远程集群还需要MATLAB并行服务器™.

提示

对于列车网络工作流,GPU支持是自动的。默万博1manbetx认情况下列车网络函数使用GPU(如果有)。如果您可以访问具有多个GPU的计算机,请指定执行环境培训选项为“多gpu”.

运行自定义培训工作流,包括数据链路网络工作流,在GPU上,使用小型批处理队列将数据自动转换为gpuArray物体。

您可以使用并行资源来扩展单个网络的深度学习。您还可以同时培训多个网络。以下部分显示了在MATLAB中并行深度学习的可用选项:

笔记

如果在单个远程计算机(例如,通过ssh或远程桌面协议连接到的云计算机)上运行MATLAB,请按照本地资源的步骤操作。有关连接到云资源的更多信息,请参阅云端深度学习.

并行训练单网络

利用本地资源并行训练单个网络

下表显示了在本地工作站上使用单一网络进行培训和推理的可用选项。

资源 列车网络工作流程 自定义培训工作流 所需产品s manbetx 845
单CPU

如果没有可用的GPU,则为自动。

不建议使用单个CPU进行培训。

不建议使用单个CPU进行培训。

  • MATLAB

  • 深度学习工具箱™

多CPU核

如果您可以访问GPU,则不建议使用多个CPU核进行培训。

如果您可以访问GPU,则不建议使用多个CPU核进行培训。

  • MATLAB

  • 深度学习工具箱

  • 并行计算工具箱

单GPU

自动的默认情况下,如果GPU可用,则在GPU上运行训练和推理。

或者,指定执行环境培训选项为“gpu”

使用小型批处理队列将数据自动转换为gpuArray物体。有关详细信息,请参阅在GPU上并行运行自定义训练循环

有关示例,请参见使用自定义训练循环的训练网络.

多GPU

指定执行环境培训选项为“多gpu”.

有关示例,请参见使用自动多GPU支持的列车网络万博1manbetx.

启动本地并行池,使用尽可能多的工作GPU。有关详细信息,请参阅基于多gpu的MATLAB深度学习

使用帕尔普在每个工人身上使用小批量的一部分执行训练或推断。将每个小批量的部分数据转换为gpuArray物体。对于训练,在每次迭代后聚合梯度、损失和状态参数。有关详细信息,请参阅在GPU上并行运行自定义训练循环.

有关示例,请参见与自定义训练回路并行的训练网络. 设定执行环境可变到“自动”“gpu”.

使用远程群集资源并行训练单个网络

下表显示了使用远程集群上的单个网络进行培训和推理的可用选项。

资源 列车网络工作流程 自定义培训工作流 所需产品s manbetx 845
多重处理器

如果您可以访问GPU,则不建议使用多个CPU核进行培训。

如果您可以访问GPU,则不建议使用多个CPU核进行培训。

  • MATLAB

  • 深度学习工具箱

  • 并行计算工具箱

  • MATLAB并行服务器

多GPU

指定所需的群集作为默认群集配置文件。有关详细信息,请参阅管理群集配置文件和自动池创建

指定执行环境培训选项为“平行”.

有关示例,请参见使用自动并行支持在云中训练网络万博1manbetx.

在所需集群中启动一个并行池,使用尽可能多的可用GPU。有关详细信息,请参阅基于多gpu的MATLAB深度学习

使用帕尔普对每个工人进行小批量培训或推理。将每个部分小批量数据转换为gpuArray物体。对于训练,在每次迭代后聚合梯度、损失和状态参数。有关详细信息,请参阅在GPU上并行运行自定义训练循环

有关示例,请参见与自定义训练回路并行的训练网络. 设定执行环境可变到“自动”“gpu”.

使用Deep Network Designer和实验管理器并行训练单个网络

您可以使用Deep network Designer并行训练单个网络。您可以使用本地资源或远程群集进行训练。

  • 要使用多个GPU进行本地培训,请设置执行环境选择多gpu在“培训选项”对话框中。

  • 要使用远程群集进行培训,请设置执行环境选择平行的在“培训选项”对话框中。如果当前没有并行池,软件将使用默认群集配置文件启动一个并行池。如果池可以访问GPU,则只有具有唯一GPU的工作人员才能执行培训计算。如果池中没有GPU,那么将对所有可用的CPU工作人员进行培训。

您可以使用实验管理器使用多个并行工作程序运行单个试验。有关详细信息,请参阅使用实验管理器并行训练网络.

并行训练多个网络

使用本地或远程群集资源并行培训多个网络

要并行训练多个网络,请在不同的并行工作机上训练每个网络。您可以修改每个辅助对象上的网络或培训参数,以并行执行参数扫描。

使用帕弗(并行计算工具箱)帕菲尔(并行计算工具箱)为每个工人培训一个网络。要在后台运行而不阻塞本地MATLAB,请使用帕菲尔. 您可以使用输出FCN培训选项。

您可以在本地运行,也可以使用远程群集运行。使用远程群集需要MATLAB并行服务器.

资源 列车网络工作流程 自定义培训工作流 所需产品s manbetx 845
多重处理器

指定所需的群集作为默认群集配置文件。有关详细信息,请参阅管理群集配置文件和自动池创建

使用帕弗帕菲尔同时对每个工人进行培训或推理。指定执行环境培训选项为“cpu”对于每个网络。

有关示例,请参见

指定所需的群集作为默认群集配置文件。有关详细信息,请参阅管理群集配置文件和自动池创建

使用帕弗帕菲尔同时对每个工人进行培训或推理。有关详细信息,请参阅在GPU上并行运行自定义训练循环

  • MATLAB

  • 深度学习工具箱

  • 并行计算工具箱

  • (可选)MATLAB并行服务器

多GPU

在所需集群中启动一个并行池,使用尽可能多的可用GPU。有关详细信息,请参阅基于多gpu的MATLAB深度学习

使用帕弗帕菲尔在每个工作进程上同时执行网络。指定执行环境培训选项为“gpu”对于每个网络。

有关示例,请参见

在所需集群中启动一个并行池,使用尽可能多的可用GPU。有关详细信息,请参阅基于多gpu的MATLAB深度学习

使用帕弗帕菲尔同时对每个工人进行培训或推理。有关详细信息,请参阅在GPU上并行运行自定义训练循环

将每个小批量数据转换为gpuArray. 使用小型批处理队列设定户外环境财产“gpu”将数据自动转换为gpuArray物体。

使用实验管理器并行训练多个网络

您可以使用实验管理器同时在多个并行工作线程上运行试验。设置并行环境并启用使用并行选项,然后再运行您的实验。“实验管理器”运行的同步试验数量与并行池中的工作人员数量相同。有关详细信息,请参阅使用实验管理器并行训练网络.

批量深度学习

您可以使用一批(并行计算工具箱)作用这意味着您可以在后台运行计算时继续使用MATLAB,也可以关闭客户端MATLAB并稍后获取结果。

您可以在本地或远程集群中运行批处理作业。若要卸载您的深度学习计算,请使用一批提交在群集中运行的脚本或函数。您可以作为批处理作业执行任何类型的深度学习计算,包括并行计算。有关示例,请参见将深度学习批处理作业发送到群集

要并行运行,请使用包含与本地或集群并行运行相同代码的脚本或函数。例如,您的脚本或函数可以运行列车网络使用“执行环境”、“并行”选项,或并行运行自定义训练循环。使用一批将脚本或函数提交到集群并使用水塘选项指定要使用的工作进程数。有关使用运行并行计算的详细信息一批看见运行批处理并行作业(并行计算工具箱).

要在多个网络上运行深度学习计算,建议为每个网络提交一个批处理作业。这样做可以避免在群集中启动并行池所需的开销,并允许您使用作业监视器单独观察每个网络计算的进度。

您可以提交多个批处理作业。如果提交的作业需要的工人数量超过集群中当前可用的工人数量,则稍后的作业将排队,直到较早的作业完成。队列作业在有足够的工作人员可运行作业时启动。

Worker的默认搜索路径可能与客户端的路径不同。要确保群集中的辅助对象可以访问所需的文件,例如代码文件、数据文件或模型文件,请使用附加路径选项

要在作业完成后检索结果,请使用获取输出(并行计算工具箱)作用获取输出检索批处理工作区中的所有变量。默认情况下,当您以脚本形式提交批处理作业时,工作区变量将从客户端复制到工作区。要避免工作区变量的递归,请将批处理作业作为函数而不是脚本提交。

你可以使用记事簿(并行计算工具箱)在运行批处理作业时捕获命令行输出。这在执行列车网络冗长的选项设置为符合事实的.

管理群集配置文件和自动池创建

并行计算工具箱预先配置了集群配置文件地方的用于在本地桌面计算机上运行并行代码。默认情况下,MATLAB使用地方的群集配置文件。如果要在远程群集上运行代码,必须使用远程群集配置文件启动并行池。您可以使用群集配置文件管理器管理群集配置文件。有关管理群集配置文件的更多信息,请参阅发现群集并使用群集配置文件(并行计算工具箱).

一些功能,包括列车网络,预测,分类,帕弗帕菲尔可以自动启动并行池。要利用自动并行池创建,请在群集配置文件管理器中将所需群集设置为默认群集配置文件。或者,您可以手动创建池,并在创建池时指定所需的群集资源。

如果要在远程群集中使用多个GPU并行训练多个网络或自定义训练循环,最佳做法是在所需群集中手动启动一个并行池,使用尽可能多的工作GPU。有关更多信息,请参阅基于多gpu的MATLAB深度学习.

深度学习精度

为了获得最佳性能,建议在所有深度学习工作流中使用GPU。由于GPU的单精度和双精度性能可能有很大差异,因此了解执行精度计算的方式非常重要。通常,GPU在单精度计算中提供更好的性能。

如果只使用GPU进行深度学习,那么单精度性能是GPU最重要的特性之一。如果您还使用GPU进行其他使用并行计算工具箱的计算,那么高双精度性能非常重要。这是因为MATLAB中的许多函数默认使用双精度算法。有关详细信息,请参阅使用单精度计算提高性能(并行计算工具箱)

当您使用列车网络函数,或者将预测或验证函数用于达格网络系列网络对象,软件使用单精度浮点算法执行这些计算。用于培训、预测和验证的功能包括列车网络,预测,分类激活。当您同时使用CPU和GPU训练网络时,软件使用单精度算法。

对于自定义培训工作流,建议将数据转换为单精度以进行培训和推理。如果你使用小型批处理队列要管理小批量,默认情况下,数据将转换为单精度。

另见

||||

相关话题