分布式训练快速开始
- 准备一个网络连通的训练集群,在本文中我们使用4个训练节点使用 来表示节点的主机名称,您可以根据实际情况修改它。
下面使用一个非常简单的线性回归模型作为样例来解释如何启动一个包含2个 pserver server 节点以及2个 trainer 节点的分布式训练任务,您可以将本段代码保存为 dist_train.py
注: 环境变量只是获取运行时信息的一种方式,实际任务中可以采用命令行参数等方式获取运行时信息。
exe.close()
pserver 节点中会保存所有 trainer 节点的状态信息,在 trainer结束训练时需要调用 exe.close()
通知所有 PServer 节点释放当前 Trainer 节点的资源:
启动节点 | 启动命令 | 说明 |
---|---|---|
ps0.paddlepaddle.com | PADDLE_TRAINING_ROLE=PSERVER PADDLE_CURRENT_IP=ps0.paddlepaddle.com PADDLE_PSERVER_IPS=ps0.paddlepaddle.com,ps1.paddlepaddle.com PADDLE_TRAINERS=2 PADDLE_PSERVER_PORT=6174 python fluid_dist.py | 启动 pserver 节点 |
ps1.paddlepaddle.com | PADDLE_TRAINING_ROLE=PSERVER PADDLE_CURRENT_IP=ps1.paddlepaddle.com PADDLE_PSERVER_IPS=ps0.paddlepaddle.com,ps1.paddlepaddle.com PADDLE_TRAINERS=2 PADDLE_PSERVER_PORT=6174 python fluid_dist.py | 启动 pserver 节点 |
trainer0.paddlepaddle.com | 启动第0号 trainer 节点 | |
trainer1.paddlepaddle.com | PADDLE_TRAINING_ROLE=TRAINER PADDLE_PSERVER_IPS=ps0.paddlepaddle.com,ps1.paddlepaddle.com PADDLE_TRAINERS=2 PADDLE_TRAINER_ID=1 PADDLE_PSERVER_PORT=6174 python fluid_dist.py | 启动第1号 trainer 节点 |