主要内容

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

培训深网络是计算密集型和可以花许多小时的计算时间;然而,神经网络固有的并行算法。您可以利用这个并行使用高性能处理器和计算机集群并行运行。

建议使用GPU火车或多个GPU。如果你只使用单个CPU或多个CPU没有GPU。cpu通常要慢得多,gpu进行训练和推理。通常运行在一个单独的GPU提供了更好的性能比运行在多个CPU核心。

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

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

提示

trainNetwork工作流,GPU的支持是自动的。万博1manbetx默认情况下,trainNetwork函数使用一个GPU是可用的。如果你访问一个机器与多个gpu,指定ExecutionEnvironment训练选项“multi-gpu”

运行自定义工作流的培训,包括dlnetwork工作流,GPU,使用minibatchqueue自动转换数据gpuArray对象。

您可以使用并行资源为一个网络扩大深度学习。同时你也可以训练多个网络。以下部分显示并行深度学习在MATLAB的可用选项:

请注意

如果你运行MATLAB在一个远程机器例如,云机通过ssh连接到或远程桌面协议,然后对当地资源的步骤。连接到云资源的更多信息,请参阅云中的深度学习

火车单一网络并行

使用本地资源培养单一网络并行

下面的表显示了可用的选择培训和推理在本地工作站与单一的网络。

资源 trainNetwork工作流 定制培训工作流程 所需的产品s manbetx 845
单CPU

如果没有自动GPU是可用的。

培训不推荐使用一个CPU。

培训不推荐使用一个CPU。

  • MATLAB

  • 深度学习工具箱™

多个CPU核

培训使用多个CPU核不推荐如果你使用GPU。

培训使用多个CPU核不推荐如果你使用GPU。

  • MATLAB

  • 深度学习工具箱

  • 并行计算工具箱

单一的GPU

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

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

使用minibatchqueue自动转换数据gpuArray对象。有关更多信息,请参见在GPU上运行自定义训练循环和并行

例如,看到的列车网络的使用自定义训练循环

多个gpu

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

例如,看到的列车网络的使用自动Multi-GPU支持万博1manbetx

建立一个当地尽可能多的工人提供gpu并行池。有关更多信息,请参见深度学习与MATLAB在多个gpu

使用parpool执行培训或推理的部分mini-batch每个工人。每个部分mini-batch数据转换gpuArray对象。培训总梯度,每次迭代后损失和状态参数。有关更多信息,请参见在GPU上运行自定义训练循环和并行

例如,看到的列车网络与自定义训练循环。设置executionEnvironment变量来“汽车”“图形”

使用远程集群并行资源培养单一网络

下面的表显示了可用的选项与单一网络远程培训和推理集群。

资源 trainNetwork工作流 定制培训工作流程 所需的产品s manbetx 845
多个cpu

培训使用多个CPU核不推荐如果你使用GPU。

培训使用多个CPU核不推荐如果你使用GPU。

  • MATLAB

  • 深度学习工具箱

  • 并行计算工具箱

  • MATLAB并行服务器

多个gpu

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

指定ExecutionEnvironment训练选项“平行”

例如,看到的列车网络在云中使用自动并行的支持万博1manbetx

开始一个平行池所需的可用gpu集群和尽可能多的工人。有关更多信息,请参见深度学习与MATLAB在多个gpu

使用parpool执行培训或推理的一部分mini-batch每个工人。每个部分mini-batch数据转换gpuArray对象。培训总梯度,每次迭代后损失和状态参数。有关更多信息,请参见在GPU上运行自定义训练循环和并行

例如,看到的列车网络与自定义训练循环。设置executionEnvironment变量来“汽车”“图形”

使用深度网络设计者和实验管理者培训单一网络并行

你可以训练一个网络并行使用深层网络设计师。你可以训练使用本地或远程集群的资源。

  • 培训本地使用多个gpu,设置ExectionEnvironment选项multi-gpu在培训选项对话框。

  • 训练使用远程集群,设置ExectionEnvironment选项平行在培训选项对话框。如果没有当前并行池,集群软件开始使用默认概要文件。如果池访问GPU,那么只有工人有着独特的GPU计算执行培训。如果池没有gpu,那么培训工人发生在所有可用的CPU。

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

火车并行多个网络

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

并行训练多个网络,每个网络训练在另一个平行的工人。您可以修改网络或训练参数对每个工人并行执行参数扫描。

使用parfor(并行计算工具箱)parfeval(并行计算工具箱)训练一个网络在每个工人。不会堵塞你当地的MATLAB在后台运行,使用parfeval。你可以使用阴谋的结果OutputFcn培训的选择。

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

资源 trainNetwork工作流 定制培训工作流程 所需的产品s manbetx 845
多个cpu

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

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

有关示例,请参见

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

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

  • MATLAB

  • 深度学习工具箱

  • 并行计算工具箱

  • (可选)MATLAB并行服务器

多个gpu

开始一个平行池所需的可用gpu集群和尽可能多的工人。有关更多信息,请参见深度学习与MATLAB在多个gpu

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

有关示例,请参见

开始一个平行池所需的可用gpu集群和尽可能多的工人。有关更多信息,请参见深度学习与MATLAB在多个gpu

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

每个mini-batch数据转换gpuArray。使用minibatchqueue并设置OutputEnvironment财产“图形”自动转换数据gpuArray对象。

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

您可以使用实验经理同时试验运行多个并行的工作。设置并行环境和启用使用并行选择之前运行实验。实验管理器运行尽可能多的同时试验有工人在你平行池。有关更多信息,请参见并行使用实验管理器来训练网络

批处理深度学习

你可以卸载深度学习计算在后台运行使用批处理(并行计算工具箱)函数。这意味着您可以继续使用MATLAB当你计算在后台运行,或者你可以闭上你的客户以后MATLAB和获取结果。

您可以运行批处理作业在一个本地或远程集群。将你的深度学习计算,使用批处理提交一个脚本或函数,在集群中运行。您可以执行任何类型的深度学习计算作为批处理作业,包括并行计算。例如,看到的深度学习批处理作业发送到集群

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

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

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

默认搜索路径的工人可能不一样,你的客户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管理mini-batches,默认数据转化为单精度。

另请参阅

||||

相关的话题