神经网络本质上是并行算法。您可以使用Parallel Computing Toolbox™在多核cpu、图形处理单元(gpu)和具有多个cpu和gpu的计算机集群之间分配培训,从而利用这种并行性。
训练深度网络的计算非常密集,通常可以通过使用高性能GPU来加速训练。如果你没有合适的GPU,你可以在一个或多个CPU核上训练,或者租用云中的GPU。您可以在单个GPU或CPU上训练卷积神经网络,也可以在多个GPU或CPU核上训练卷积神经网络,也可以在集群上并行训练卷积神经网络。使用GPU或任何并行选项需要并行计算工具箱。
提示
GPU支万博1manbetx持是自动的。默认情况下,trainNetwork
功能使用GPU。
如果您可以访问具有多个gpu的机器,只需指定培训选项“ExecutionEnvironment”、“multi-gpu”
.
如果您想使用更多资源,可以将深度学习培训扩展到云。
培训资源 | 设置 | 了解更多 |
---|---|---|
本地机器上的单个GPU |
自动的。默认情况下, |
|
本地有多个gpu |
指定 |
|
本地机器上有多个CPU核 |
指定 使用默认设置, |
|
集群或在云中 |
设置默认集群后,指定 训练在集群上执行,并将内置的进度图返回到本地MATLAB®. |
训练的场景 | 建议 | 了解更多 |
---|---|---|
交互式地在您的本地机器或云中 | 使用一个parfor 循环来训练多个网络,并使用OutputFcn .默认情况下在本地运行,或者选择不同的集群配置文件。 |
使用parfor训练多个深度学习网络 |
在本地机器的后台或云中 | 使用parfeval 来训练而不阻塞您的本地MATLAB,并使用OutputFcn .默认情况下在本地运行,或者选择不同的集群配置文件。 |
|
,并关闭本地机器 | 使用批处理 函数向集群发送训练代码。您可以稍后关闭MATLAB并获取结果。 |
发送深度学习批作业到集群 |
如果您的深度学习培训需要数小时或数天,您可以租用云中的高性能gpu来加速培训。在云中工作需要一些初始设置,但是在初始设置之后使用云可以减少训练时间,或者允许您同时训练更多的网络。要尝试在云中进行深度学习,您可以按照示例步骤设置帐户、将数据复制到云中,并创建集群。在完成初始设置之后,您可以运行您的培训代码,只需要进行最小的更改就可以在云中运行。设置默认集群后,只需指定培训选项“ExecutionEnvironment”、“平行”
在多个gpu上训练云集群上的网络。
在云中配置深度学习 | 笔记 | 了解更多 |
---|---|---|
建立MathWorks云中心和Amazon账户 | 一次性设置。 | 云中心入门 |
创建一个集群 | 使用Cloud Center在Amazon云中设置和运行集群。对于深度学习,选择具有图形处理器的机器类型,如P2或G3实例。 | 创建云集群 |
上传数据到云 | 要使用云中的数据,请上传到Amazon S3。使用数据存储从桌面客户端MATLAB或集群工作器访问S3中的数据,而无需更改代码。 | 上传深度学习数据到云 |
如果您使用的Linux计算集群具有机器之间的快速互连(如Infiniband),或者不同机器上的gpu之间的快速互连(如GPUDirect RDMA),那么您可能能够利用MATLAB中的快速多节点支持。万博1manbetx通过设置环境变量,在池中万博1manbetx的所有工作人员上启用这种支持PARALLEL_SERVER_FAST_MULTINODE_GPU_COMMUNICATION
来1
.在集群概要文件管理器中设置此环境变量。
这个特性是NVIDIA NCCL库用于GPU通信的一部分。要配置它,您必须设置额外的环境变量来定义网络接口协议,尤其是NCCL_SOCKET_IFNAME
.有关更多信息,请参见NCCL文档特别是关于NCCL环境变量.