训练深度网络是计算密集型的,可能需要很多小时的计算时间;然而,神经网络本质上是并行算法。通过使用高性能GPU和计算机集群并行运行,可以利用这种并行性。
建议使用一个GPU或多个GPU进行训练。如果没有GPU,只能使用单CPU或多CPU。在训练和推理方面,CPU通常比GPU慢得多。在单个GPU上运行通常比在多个CPU核上运行提供更好的性能。
如果您没有合适的GPU,可以租用云中的高性能GPU和集群。欲了解更多信息,请访问MATLAB®在深度学习的云里,看云中的深度学习.
使用GPU或并行选项需要并行计算工具箱™。使用GPU也需要支持的GPU设备。金宝app有关支持的设备的信息,请参见金宝appGPU版金宝app本支持(并行计算工具箱).使用远程集群还需要MATLAB并行服务器™.
提示
对于列车网络
工作流,GPU支持是自动的。默金宝app认情况下列车网络
函数使用GPU(如果有)。如果您可以访问具有多个GPU的计算机,请指定ExecutionEnvironment
训练选项“多gpu”
.
运行自定义培训工作流,包括数据链路网络
工作流,在GPU上,使用minibatchqueue
自动地将数据转换为gpuArray
对象。
您可以使用并行资源来扩展单个网络的深度学习。你也可以同时训练多个网络。以下部分展示了在MATLAB中并行进行深度学习的可用选项:
请注意
如果您在单个远程机器(例如通过ssh或远程桌面协议连接到的云机器)上运行MATLAB,那么请按照以下步骤来获取本地资源。有关连接到云资源的更多信息,请参见云中的深度学习.
下表显示了在本地工作站上使用单一网络进行培训和推理的可用选项。
资源 | 列车网络 工作流程 |
定制培训工作流程 | 所需产品下载188bet金宝搏 |
---|---|---|---|
单CPU | 如果没有可用的GPU,则为自动。 不建议使用单个CPU进行培训。 |
不建议使用单个CPU进行培训。 |
|
多CPU核 | 如果您可以访问GPU,则不建议使用多个CPU核进行培训。 |
如果您可以访问GPU,则不建议使用多个CPU核进行培训。 |
|
单一的GPU | 自动的。默认情况下,如果GPU可用,训练和推理将在GPU上运行。 或者,指定 |
使用 例如,请参见使用自定义训练循环的训练网络. |
|
多个gpu | 指定 例如,请参见使用自动多gpu支持训练网络金宝app. |
启动本地并行池,使用尽可能多的工作GPU。有关详细信息,请参阅基于多gpu的MATLAB深度学习 使用 例如,请参见与自定义训练循环并行的训练网络.设置 |
下表显示了使用远程集群上的单个网络进行训练和推断的可用选项。
资源 | 列车网络 工作流程 |
定制培训工作流程 | 所需产品下载188bet金宝搏 |
---|---|---|---|
多个cpu | 如果您可以访问GPU,则不建议使用多个CPU核进行培训。 |
如果您可以访问GPU,则不建议使用多个CPU核进行培训。 |
|
多个gpu | 指定所需的群集作为默认群集配置文件。有关详细信息,请参阅管理集群配置文件和自动创建池 指定 例如,请参见使用自动并行支持在云中训练网络金宝app. |
在所需集群中启动一个并行池,使用尽可能多的可用GPU。有关详细信息,请参阅基于多gpu的MATLAB深度学习 使用 例如,请参见与自定义训练循环并行的训练网络.设置 |
您可以使用深度网络设计器并行训练单个网络。您可以使用本地资源或远程集群进行培训。
要使用多个gpu进行本地培训,请设置执行环境
选项multi-gpu
在训练选项对话框中。
要使用远程群集进行培训,请设置执行环境
选项平行
在“培训选项”对话框中。如果当前没有并行池,软件将使用默认群集配置文件启动一个并行池。如果池可以访问GPU,则只有具有唯一GPU的工作人员才能执行培训计算。如果池中没有GPU,那么将对所有可用的CPU工作人员进行培训。
您可以使用实验管理器使用多个并行工作程序运行单个试验。有关详细信息,请参阅使用实验管理器并行训练网络.
为了并行地训练多个网络,训练每个网络上不同的并行工作者。您可以修改每个worker的网络或训练参数,并行执行参数扫描。
使用parfor
(并行计算工具箱)或parfeval
(并行计算工具箱)为每个工人培训一个网络。要在后台运行而不阻塞本地MATLAB,请使用parfeval
. 您可以使用OutputFcn
培训的选择。
您可以在本地运行,也可以使用远程集群。使用远程集群需要MATLAB并行服务器.
资源 | 列车网络 工作流程 |
定制培训工作流程 | 所需产品下载188bet金宝搏 |
---|---|---|---|
多个cpu | 指定所需的群集作为默认群集配置文件。有关详细信息,请参阅管理集群配置文件和自动创建池 使用 有关示例,请参见 |
指定所需的群集作为默认群集配置文件。有关详细信息,请参阅管理集群配置文件和自动创建池 使用 |
|
多个gpu | 在所需集群中启动一个并行池,使用尽可能多的可用GPU。有关详细信息,请参阅基于多gpu的MATLAB深度学习 使用 有关示例,请参见 |
在所需集群中启动一个并行池,使用尽可能多的可用GPU。有关详细信息,请参阅基于多gpu的MATLAB深度学习 使用 将每个小批量数据转换为 |
您可以使用实验管理器在多个并行工作器上同时运行试验。设置并行环境并启用使用并行选项,然后再运行您的实验。“实验管理器”运行的同步试验数量与并行池中的工作人员数量相同。有关详细信息,请参阅使用实验管理器并行训练网络.
您可以使用一批
(并行计算工具箱)作用这意味着您可以在后台运行计算时继续使用MATLAB,也可以关闭客户端MATLAB并稍后获取结果。
可以在本地集群或远端集群中运行批处理作业。要卸载您的深度学习计算,请使用一批
提交在集群中运行的脚本或函数。您可以作为批处理作业执行任何类型的深度学习计算,包括并行计算。例如,请参见发送深度学习批作业到集群
要并行运行,请使用包含本地或集群中并行运行相同代码的脚本或函数。例如,您的脚本或函数可以运行列车网络
使用“ExecutionEnvironment”、“平行”
选项,或者并行运行自定义的训练循环。使用一批
将脚本或函数提交到集群并使用池
选项指定要使用的工作进程数。有关使用运行并行计算的详细信息一批
,请参阅运行批处理并行作业(并行计算工具箱).
如果要在多个网络上进行深度学习计算,建议为每个网络提交单个批处理作业。这样做可以避免在集群中启动并行池所需的开销,并允许您使用作业监视器分别观察每个网络计算的进度。
您可以提交多个批处理作业。如果提交的作业需要比集群中当前可用的作业更多的工人,则稍后的作业将排队,直到较早的作业完成。当有足够的工作程序可以运行作业时,将启动排队作业。
Worker的默认搜索路径可能与客户端的路径不同。要确保群集中的辅助对象可以访问所需的文件,例如代码文件、数据文件或模型文件,请使用AdditionalPaths
选择。
要在作业完成后检索结果,请使用获取输出
(并行计算工具箱)作用获取输出
检索批处理工作空间中的所有变量。当您将批作业作为脚本提交时,默认情况下,工作区变量将从客户端复制到工作人员。为了避免工作空间变量的递归,请将批处理作业作为函数而不是脚本提交。
你可以使用日记
(并行计算工具箱)在运行批处理作业时捕获命令行输出。这在执行列车网络
函数与冗长的
选项设置为真正的
.
并行计算工具箱是预先配置的集群配置文件地方的
用于在本地桌面计算机上运行并行代码。默认情况下,MATLAB使用地方的
集群配置文件。如果要在远程集群上运行代码,必须使用远程集群配置文件启动并行池。您可以使用集群概要文件管理器管理集群概要文件。有关管理集群配置文件的更多信息,请参见发现集群并使用集群配置文件(并行计算工具箱).
一些功能,其中包括列车网络
,预测
,分类
,parfor
,parfeval
可以自动启动并行池。要利用自动并行池创建的优势,请在集群概要文件管理器中将所需的集群设置为默认集群概要文件。您也可以手动创建资源池,并在创建资源池时指定所需的集群资源。
如果希望在远程集群中使用多个gpu并行地训练多个网络或进行自定义训练循环,最佳实践是在所需集群中手动启动一个并行池,使用尽可能多的可用gpu。有关更多信息,请参见基于多gpu的MATLAB深度学习.
为了获得最佳性能,建议对所有深度学习工作流使用GPU。因为gpu的单精度和双精度性能可能有很大的不同,所以知道在哪个地方执行精度计算是很重要的。通常,gpu在单精度计算中提供更好的性能。
如果你只使用GPU进行深度学习,那么单精度性能是GPU最重要的特性之一。如果您还使用GPU进行其他计算,那么高双精度性能是很重要的。这是因为MATLAB中的许多函数默认使用双精度算法。有关更多信息,请参见使用单精度计算提高性能(并行计算工具箱)
当你用列车网络
函数,或使用预测或验证函数时DAGNetwork
和SeriesNetwork
对象时,软件使用单精度浮点运算执行这些计算。用于训练、预测和验证的功能包括列车网络
,预测
,分类
,激活
.当你同时使用cpu和gpu训练网络时,该软件使用单精度算法。
对于自定义训练工作流,建议将数据转换为单一精度进行训练和推理。如果你使用minibatchqueue
要管理小批量,默认情况下,数据将转换为单精度。
trainingOptions
|minibatchqueue
|列车网络
|深度网络设计器|实验管理器