一. 深度学习平台的特性
深度学习应用越来越多,也有越来越多的平台开源出来。我个人看好tensorflow,mxnet和百度的paddle。机器学习平台不同于之前的mapreduce和spark的模型,主要由于以下2点:
- 数据依赖性很强,运算过程中参与计算的各个机器之间经常需要交换大量的数据。通讯有可能成为集群线性性能增长的瓶颈
- 处理复杂,主要表现在整个处理过程需要反复地迭代计算,需要解决复杂计算依赖的问题
二. MPI环境搭建
mpi:message passing interface。 其支持千兆的网络(RDMA)和资源的调度。很适合深度学习的应用。
其架构如下图:
说明:
- submit_server: 提交/查询job的机器,一般会有权限验证
- head_node:头结点,一般会启动pbs_server和job调度进程pbs_sched
- compute_node:工作节点:需要启动pbs_mom进程,在实际的深度学习训练中,机器一般会配置gpu卡
具体的安装配置可以参考最后的参考资料1,主要的点有: - 配置pbs_server,使其知道管理compute_node 资源数量
node001 np=24 gpu=4 cluster_online
其中node001 是compute node 的hostname
np=24,cpu的个数
gpu=4,gpu的个数
cluster_online, 自定义标签,在提交job的时候可以根据该标签过滤
- 测试配置的是否正确
在submit_server上提交一个简单的job,得到如下信息,表示配置已经是正确的
su - testuser
echo "sleep 30" | qsub