主要内容

在gpu和云上并行扩展深度学习

训练深度网络需要耗费大量的计算时间;然而,神经网络本质上是并行算法。您可以通过使用高性能gpu和计算机集群并行运行来利用这种并行性。

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

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

使用GPU或并行选项需要并行计算工具箱™。使用GPU还需要支持的GPU设备。金宝app有关支持的设备的信息,请参阅金宝appGPU支金宝app持情况(并行计算工具箱).使用远程集群还需要MATLAB并行服务器™

提示

为了trainNetwork工作流,GPU支持是自动的。金宝app默认情况下,trainNetwork功能使用GPU(如果可用)。如果你有机会获得多GPU的机器,指定ExecutionEnvironment训练选项,“multi-gpu”

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

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

笔记

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

单机并行训练

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

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

资源 trainNetwork工作流程 自定义工作流程培训 所需的产品下载188bet金宝搏
单CPU

自动,如果没有GPU可用。

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

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

  • MATLAB

  • 深度学习工具箱™

多个CPU核

如果使用GPU,不推荐使用多个CPU核进行培训。

如果使用GPU,不推荐使用多个CPU核进行培训。

  • MATLAB

  • 深度学习工具箱

  • 并行计算工具箱

单一的GPU

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

另外,指定ExecutionEnvironment训练选项,“GPU”

使用minibatchqueue自动地将数据转换为gpuArray对象。有关更多信息,请参阅在GPU和并行运行定制培训循环

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

多GPU

指定ExecutionEnvironment训练选项,“multi-gpu”

例如,请参见使用自动多gpu支持训练网络金宝app

用尽可能多的可用gpu启动一个本地并行池。有关更多信息,请参阅基于MATLAB的多gpu深度学习

使用parpool用小批量的一部分对每个工人进行培训或推理。每个局部小批量数据转换为gpuArray对象。对于训练,每次迭代后汇总梯度、损失和状态参数。有关更多信息,请参阅在GPU和并行运行定制培训循环

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

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

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

资源 trainNetwork工作流程 自定义工作流程培训 所需的产品下载188bet金宝搏
多个CPU

如果使用GPU,不推荐使用多个CPU核进行培训。

如果使用GPU,不推荐使用多个CPU核进行培训。

  • MATLAB

  • 深度学习工具箱

  • 并行计算工具箱

  • MATLAB并行服务器

多GPU

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

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

例如,请参见使用自动并行支持在云中训练网络金宝app

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

使用parpool成与每个工人一个小批量的一部分执行训练或推断。每个局部小批量数据转换为gpuArray对象。对于训练,每次迭代后汇总梯度、损失和状态参数。有关更多信息,请参阅在GPU和并行运行定制培训循环

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

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

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

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

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

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

列车在多个并行网络

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

来训练多个网络平行,训练每个网络上的不同的并行工作。您可以修改每个工人的网络或训练参数并行执行参数扫描。

使用PARFOR(并行计算工具箱)parfeval(并行计算工具箱)在每个工人身上训练一个网络。要在后台运行而不阻塞您的本地MATLAB,请使用parfeval.您可以使用OutputFcn培训选项。

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

资源 trainNetwork工作流程 自定义工作流程培训 所需的产品下载188bet金宝搏
多个CPU

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

使用PARFORparfeval同时执行每个工人培训或推断。指定ExecutionEnvironment训练选项,“中央处理器”为每个网络。

有关示例,请参见

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

使用PARFORparfeval同时执行每个工人培训或推断。有关更多信息,请参阅在GPU和并行运行定制培训循环

  • MATLAB

  • 深度学习工具箱

  • 并行计算工具箱

  • (可选)MATLAB并行服务器

多GPU

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

使用PARFORparfeval在每个工作人员上同时执行一个网络。指定ExecutionEnvironment训练选项,“GPU”为每个网络。

有关示例,请参见

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

使用PARFORparfeval同时执行每个工人培训或推断。有关更多信息,请参阅在GPU和并行运行定制培训循环

将每个小批数据转换为gpuArray.使用minibatchqueue并集OutputEnvironment属性“图形”自动地将数据转换为gpuArray对象。

使用实验管理器来平行运行多个网络

您可以使用实验管理器同时运行多个并行的工人试验。设置您的并行环境并启用使用并行选项,然后运行你的实验。实验管理器运行与并行池中工作人员数量相同的同时试验。有关更多信息,请参阅使用实验管理器并行训练网络

批处理深度学习

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

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

要并行运行,请使用包含本地或集群中并行运行相同代码的脚本或函数。例如,您的脚本或函数可以运行trainNetwork使用“执行环境”,“平行”选项,或者并行运行自定义的训练循环。使用将脚本或函数提交到集群并使用水池选项指定要使用的工作人员数量。以获取有关使用, 看运行批处理并行作业(并行计算工具箱)

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

您可以提交多个批处理作业。如果提交的作业需要更多的工人比目前可用的集群中,那么以后作业排队,直到前面的工作已经完成。当足够的工人都可以运行作业排队的作业开始。

工作人员的默认搜索路径可能与您的客户机MATLAB的搜索路径不同。要确保集群中的工作人员能够访问所需的文件,如代码文件、数据文件或模型文件,可以使用AdditionalPaths选择。

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

您可以使用日记(并行计算工具箱)捕获命令行输出,同时运行的批处理作业。在执行时,这可能是有用的trainNetwork函数与详细的选项设置为真正的

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

并行计算工具箱是预先配置的集群配置文件当地的为您的本地台式机上运行的并行代码。默认情况下,MATLAB开始使用所有并行池当地的群集配置文件。如果你想在远程集群中运行的代码,您必须使用远程群集配置文件启动并行池。您可以管理使用群集配置文件管理器集群配置文件。有关管理群集配置文件的详细信息,请参阅发现集群并使用集群配置文件(并行计算工具箱)

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

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

深度学习精度

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

如果你只使用GPU进行深度学习,然后单精度性能的GPU的最重要的特征之一。如果还使用了利用并行计算工具箱等计算的GPU,再高的双精度性能是非常重要的。这是因为在MATLAB很多功能在默认情况下使用双精度运算。有关更多信息,请参阅使用单精度计算提高性能(并行计算工具箱)

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

对于定制培训工作流程,建议把数据转换为单精度的培训和推理。如果您使用minibatchqueue为了管理小批量,您的数据在默认情况下被转换为单精度。

也可以看看

||||

相关的话题