使用fabric启动集群训练

准备一个Linux集群

可以在paddle/scripts/cluster_train_v2/fabric/docker_cluster目录下,执行kubectl -f ssh_servers.yaml启动一个测试集群,并使用kubectl get po -o wide获得这些节点的IP地址。

启动集群作业

paddle.py 提供了自动化脚本来启动不同节点中的所有 PaddlePaddle 集群进程。默认情况下,所有命令行选项可以设置为 paddle.py 命令选项并且 paddle.py 将透明、自动地将这些选项应用到 PaddlePaddle 底层进程。

paddle.py 为方便作业启动提供了两个独特的命令选项。

  • job_dispatch_package 设为本地 workspace 目录,它将被分发到 conf.py 中设置的所有节点。它有助于帮助频繁修改和访问工作区文件的用户减少负担,否则频繁的多节点工作空间部署可能会很麻烦。
  • job_workspace 设为已部署的工作空间目录,paddle.py 将跳过分发阶段直接启动所有节点的集群作业。它可以帮助减少分发延迟。

cluster_train/run.sh 提供了命令样例来运行 doc/howto/usage/cluster/src/word2vec 集群任务,只需用您定义的目录修改 job_dispatch_packagejob_workspace,然后:

sh run.sh

集群作业将会在几秒后启动。

终止集群作业

paddle.py能获取Ctrl + C SIGINT 信号来自动终止它启动的所有进程。只需中断 paddle.py 任务来终止集群作业。如果程序崩溃你也可以手动终止。

检查集群训练结果

详细信息请检查 $workspace/log 里的日志,每一个节点都有相同的日志结构。

paddle_trainer.INFO 提供几乎所有训练的内部输出日志,与本地训练相同。这里检验运行时间模型的收敛。

paddle_pserver2.INFO 提供 pserver 运行日志,有助于诊断分布式错误。

server.log 提供 parameter server 进程的 stderr 和 stdout。训练失败时可以检查错误日志。

train.log 提供训练过程的 stderr 和 stdout。训练失败时可以检查错误日志。

检查模型输出

运行完成后,模型文件将被写入节点 0 的 output 目录中。 工作空间中的 nodefile 表示当前集群作业的节点 ID。