MXNet分布式训练
UAI Train MXNet的分布式训练环境实现基于 MXNet的分布式训练系统实现。PS和Worker采用混合部署的方式部署,PS使用纯CPU计算,Worker使用GPU+CPU计算。部署方式参见分布式训练简介。
MXNet 分布式训练简介
MXNet 分布式训练基于DMLC分布式机器学习框架来运行实现。在参数中指定kvstore为分布式形式(distsync或dist_async)后,MXNet系统会自动选择DMLC进行分布式训练。DMLC 执行分布式训练时包括三个部分:
- scheduler,调度器,负责调度Parameter Server和Worker
- server,Parameter Server,作为参数服务器
- worker,Worker Server,作为计算节点
DMLC的kvstore系统通过一系列DMLC环境变量来配置分布式训练环境,其包括5个环境变量:
- DMLC_NUM_WORKER: 一共多少个worker
- DMLC_NUM_SERVER: 一共多少个PS
- DMLC_ROLE`: 当前节点的角色,可以是worker, server, scheduler中任意一个
- DMLC_PS_ROOT_URI: scheduler 节点的URI地址
- DMLC_PS_ROOT_PORT: scheduler节点监听的端口
worker和ps server根据环境变量配置来向scheduler注册自己,并获取分布式训练的拓扑信息。scheduler在获取所有worker和ps server的信息之后就会发起训练任务,并同步控制流信息。
UAI Train 分布式训练简介
UAI Train系统将自动为分布式训练任务生成DMLC环境变量,系统在启动时会先创建scheduler容器进程,然后再创建ps server容器进程和worker容器进程,UAI Train 分布式训练系统在执行MXNet分布式任务时有如下约定:
- Scheduler、PS server 和 Worker Server的执行逻辑均使用Docker容器封装,且Scheduler、PS Server和Worker Server使用相同的Docker镜像执行。
- Parameter Server 和 Worker Server 代码执行逻辑的入口相同,MXNet的分布式训练系统会自行根据DMLC的环境变量执行对应逻辑。
- UAI Train 系统将自动为分布式任务的Scheduler、PS和Worker节点生成DMLC配置信息。
- 在UAI Train系统完成环境准备(包括拉取代码镜像和数据加载)后,系统将自动执行分布式训练。
- 当所有的Worker完成任务并自行退出后,系统将自动清理所有资源。
- Parameter Server 和 Worker Server将使用共享分布式文件系统UFS来保持数据,您需要将模型的输出路径指向/data/output目录,该目录为分布式系统的默认输出目录。
- UAI Train系统会分别将所有的Parameter Server和Worker Server的标准输出推送至图形界面,同时也会保存在您所指定的UFS存储中。
UAI Train系统在执行MXNet分布式训练scheduler、ps server和worker server的部署方式如下:
注意事项: 请不要改变PS_VERBOSE=1环境变量参数,这会导致分布式训练无法刷新日志并导致分布式训练系统无法执行。