主要内容

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

培训深网络是计算密集的,可以花费很多时间计算时间;但是,神经网络是固有的平行算法。您可以通过使用高性能GPU和计算机群集并行运行来利用这种并行性。

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

如果您没有合适的GPU,可以租用云中的高性能GPU和集群。欲了解更多信息,请访问MATLAB®在深度学习的云里,看云中的深度学习

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

提示

为了Trainnetwork.工作流程,GPU支持是自动的。万博1manbetx默认情况下,Trainnetwork.功能在有图形处理器的情况下使用图形处理器。如果您可以访问具有多个gpu的机器,请指定ExecutionEnvironment训练选项“多GPU”

运行自定义培训工作流,包括dlnetwork.工作流,在GPU上,使用minibatchqueue自动地将数据转换为GPUArray.对象。

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

请注意

如果您在单个远程机器(例如通过ssh或远程桌面协议连接到的云机器)上运行MATLAB,那么请按照以下步骤来获取本地资源。有关连接到云资源的更多信息,请参见云中的深度学习

并行列车单网

利用局部资源并行训练单个网络

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

资源 Trainnetwork.工作流 定制培训工作流程 需要产品s manbetx 845
单CPU

自动如果没有GPU可用。

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

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

  • 马铃薯

  • 深度学习工具箱™

多个CPU核心

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

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

  • 马铃薯

  • 深度学习工具箱

  • 并行计算工具箱

单一的GPU

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

或者,指定ExecutionEnvironment训练选项“图形”

minibatchqueue自动地将数据转换为GPUArray.对象。有关更多信息,请参见在GPU上并行运行自定义训练循环

例如,请参见使用自定义培训循环列车网络

多个gpu

指定ExecutionEnvironment训练选项“多GPU”

例如,请参见使用自动多gpu支持训练网络万博1manbetx

启动当地并行池,与众多工人一样可用GPU。有关更多信息,请参见在多个GPU上与MATLAB深入学习

parpool用小批量的一部分对每个工人进行培训或推理。将每个部分的小批数据转换为GPUArray.对象。每次迭代后培训,聚合渐变,损耗和状态参数。有关更多信息,请参见在GPU上并行运行自定义训练循环

例如,请参见与自定义训练循环并行的训练网络.设置executionEnvironment变量到“汽车”“图形”

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

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

资源 Trainnetwork.工作流 定制培训工作流程 需要产品s manbetx 845
多个cpu

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

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

  • 马铃薯

  • 深度学习工具箱

  • 并行计算工具箱

  • MATLAB并行服务器

多个gpu

将所需的群集指定为默认群集配置文件。有关更多信息,请参见管理集群配置文件和自动创建池

指定ExecutionEnvironment训练选项“平行线”

例如,请参见使用自动并行支持云中的火车网络万博1manbetx

在所需群集中启动一个并行池,与众多工人为可用GPU。有关更多信息,请参见在多个GPU上与MATLAB深入学习

parpool用小批量的一部分对每个工人进行培训或推理。将每个部分的小批数据转换为GPUArray.对象。每次迭代后培训,聚合渐变,损耗和状态参数。有关更多信息,请参见在GPU上并行运行自定义训练循环

例如,请参见与自定义训练循环并行的训练网络.设置executionEnvironment变量到“汽车”“图形”

使用深度网络设计器和实验管理器并行训练单个网络

您可以使用深度网络设计器并行训练单个网络。您可以使用本地资源或远程集群进行培训。

  • 要使用多个gpu进行本地培训,请设置exectionenvironment.选项multi-gpu在训练选项对话框中。

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

您可以使用实验管理器使用多个并行工人运行单个试验。有关更多信息,请参见使用实验管理器并行训练网络

并行训练多个网络

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

为了并行地训练多个网络,训练每个网络上不同的并行工作者。您可以修改每个worker的网络或训练参数,并行执行参数扫描。

parfor(并行计算工具箱)parfeval(并行计算工具箱)在每个工人训练一个网络。在后台运行而不阻止您当地的MATLAB,使用parfeval.你可以使用绘制结果OutputFcn培训的选择。

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

资源 Trainnetwork.工作流 定制培训工作流程 需要产品s manbetx 845
多个cpu

将所需的群集指定为默认群集配置文件。有关更多信息,请参见管理集群配置文件和自动创建池

parforparfeval同时对每个工人进行培训或推理。指定ExecutionEnvironment训练选项“cpu”为每个网络。

有关示例,请参见

将所需的群集指定为默认群集配置文件。有关更多信息,请参见管理集群配置文件和自动创建池

parforparfeval同时对每个工人进行培训或推理。有关更多信息,请参见在GPU上并行运行自定义训练循环

  • 马铃薯

  • 深度学习工具箱

  • 并行计算工具箱

  • (可选的)MATLAB并行服务器

多个gpu

在所需群集中启动一个并行池,与众多工人为可用GPU。有关更多信息,请参见在多个GPU上与MATLAB深入学习

parforparfeval同时在每个工人上执行网络。指定ExecutionEnvironment训练选项“图形”为每个网络。

有关示例,请参见

在所需群集中启动一个并行池,与众多工人为可用GPU。有关更多信息,请参见在多个GPU上与MATLAB深入学习

parforparfeval同时对每个工人进行培训或推理。有关更多信息,请参见在GPU上并行运行自定义训练循环

将每个迷你批次数据转换为GPUArray..用minibatchqueue并设置outputenvironment.财产“图形”自动地将数据转换为GPUArray.对象。

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

您可以使用实验管理器在多个并行工作器上同时运行试验。设置并行环境并启用使用并行在运行实验之前的选项。实验经理随着您的并行池中的工人运行多重试验。有关更多信息,请参见使用实验管理器并行训练网络

批处理深度学习

您可以卸载深度学习计算以使用(并行计算工具箱)功能。这意味着您可以在您的计算在后台运行时继续使用MATLAB,或者您可以在稍后关闭客户端MATLAB和获取结果。

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

要并行运行,请使用包含本地或集群中并行运行相同代码的脚本或函数。例如,您的脚本或函数可以运行Trainnetwork.使用“ExecutionEnvironment”、“平行”选项,或者并行运行自定义的训练循环。用将脚本或函数提交到集群并使用指定要使用的工人数量的选项。有关运行并行计算的更多信息,请参阅运行批处理并行作业(并行计算工具箱)

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

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

工人的默认搜索路径可能与客户端MATLAB的搜索路径不同。要确保群集中的工人可以访问所需的文件,例如代码文件,数据文件或模型文件,指定使用的路径添加到工人AdditionalPaths选择。

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

你可以使用日记(并行计算工具箱)在运行批处理作业时捕获命令行输出。这在执行Trainnetwork.函数与verb选项设置为真正的

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

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

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

如果希望在远程集群中使用多个gpu并行地训练多个网络或进行自定义训练循环,最佳实践是在所需集群中手动启动一个并行池,使用尽可能多的可用gpu。有关更多信息,请参见在多个GPU上与MATLAB深入学习

深度学习精确

为了获得最佳性能,建议对所有深度学习工作流使用GPU。因为gpu的单精度和双精度性能可能有很大的不同,所以知道在哪个地方执行精度计算是很重要的。通常,gpu在单精度计算中提供更好的性能。

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

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

对于自定义训练工作流,建议将数据转换为单一精度进行训练和推理。如果你使用minibatchqueue要管理迷你批处理,默认情况下,您的数据将转换为单精度。

另请参阅

||||

相关的话题