主要内容

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

多gpu深度学习

神经网络本质上是并行算法。您可以使用Parallel Computing Toolbox™在多核cpu、图形处理单元(gpu)和具有多个cpu和gpu的计算机集群之间分发训练,从而利用这种并行性。

深度网络的训练是非常密集的计算,你通常可以通过使用高性能的GPU加速训练。如果你没有合适的GPU,你可以在一个或多个CPU内核上训练,或者租用云中的GPU。您可以在单个GPU或CPU上训练卷积神经网络,或在多个GPU或CPU内核上训练卷积神经网络,或在集群上并行训练卷积神经网络。使用GPU或任何并行选项都需要并行计算工具箱。

提示

GPU支金宝app持是自动的。默认情况下,trainNetwork如果可用,则使用图形处理器。

如果您可以访问具有多个gpu的机器,只需指定培训选项“ExecutionEnvironment”、“multi-gpu”

如果您想使用更多的资源,可以将深度学习训练扩展到云。

深度学习内置并行支持金宝app

培训资源 设置 了解更多

本地机器上的单个GPU

自动的。默认情况下,trainNetwork如果可用,则使用图形处理器。

“ExecutionEnvironment”

创建简单的深度学习网络分类

本地机器上的多个gpu

指定“ExecutionEnvironment”、“multi-gpu”trainingOptions函数。

“ExecutionEnvironment”

选择特定的gpu用于培训

本地机器上的多个CPU内核

指定“ExecutionEnvironment”、“平行”

使用默认设置,“平行”使用本地集群配置文件。只有在没有GPU的情况下才使用cpu,因为在训练中cpu通常比GPU慢得多。

“ExecutionEnvironment”

集群或在云中

设置默认集群后,请指定“ExecutionEnvironment”、“平行”trainingOptions函数。

训练在集群上执行,并将内置的进度图返回给本地MATLAB®

使用自动并行支持的云列车网络金宝app

并行训练多个深度网络

训练的场景 建议 了解更多
交互式地在您的本地机器上或在云中 使用一个parfor循环来训练多个网络,并使用OutputFcn.默认情况下本地运行,或者选择不同的集群配置文件。 使用parfor训练多个深度学习网络
在本地机器的后台或云中 使用parfeval在不阻塞本地MATLAB的情况下进行训练,并使用OutputFcn.默认情况下本地运行,或者选择不同的集群配置文件。

并行训练深度学习网络

利用parfeval训练多个深度学习网络

在集群上,并关闭您的本地机器 使用批处理向集群发送训练代码。您可以关闭MATLAB并稍后获取结果。 将深度学习批作业发送到集群

云中的深度学习

如果您的深度学习培训需要数小时或数天,您可以在云中租用高性能gpu来加速培训。在云中工作需要一些初始设置,但是在初始设置之后使用云中可以减少训练时间,或者允许您同时训练更多的网络。要尝试在云中进行深度学习,您可以按照示例步骤设置帐户,将数据复制到云中,并创建集群。完成这个初始设置后,您就可以在云中运行您的培训代码,只需进行最小的更改。设置默认集群后,只需指定培训选项“ExecutionEnvironment”、“平行”在多个gpu上训练云集群上的网络。

在云中配置深度学习 笔记 了解更多
建立MathWorks云中心和亚马逊账户 一次性设置。 云中心入门
创建一个集群 使用Cloud Center在Amazon云中设置和运行集群。对于深度学习,选择具有gpu的机器类型,如P2或G3实例。 创建云集群
上传数据到云 要使用云中的数据,请上传到Amazon S3。使用数据存储从桌面客户端MATLAB或集群工作器访问S3中的数据,而不需要更改代码。 将深度学习数据上传到云端

高级支持快速多节点金宝appGPU通信

如果您使用的Linux计算集群具有机器之间的快速互连(如Infiniband),或者不同机器上的gpu之间的快速互连(如GPUDirect RDMA),那么您可能能够利用MATLAB中的快速多节点支持。金宝app通过设置环境变量,在池中金宝app的所有工作器上启用此支持PARALLEL_SERVER_FAST_MULTINODE_GPU_COMMUNICATION1.在集群配置文件管理器中设置这个环境变量。

这个特性是用于GPU通信的NVIDIA NCCL库的一部分。要配置它,您必须设置额外的环境变量来定义网络接口协议NCCL_SOCKET_IFNAME.有关更多信息,请参见NCCL文档特别是关于NCCL环境变量

相关的话题