使用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_package
和 job_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。