在百度云分布式训练CTR

Fluid支持数据并行的分布式训练,也支持基于Kubernetes的分布式部署。本文以百度云为例,说明如何通过在云服务器上分布式训练Click-Through-Rate(以下简称ctr)任务。

1. 使用前的准备

百度云容器引擎的使用流程基本概念可以参考 官网文档 做了解

2. 创建集群

具体请参考 帮助文档 说明文档来建立一个集群。

集群配置需要满足如下要求

  • CPU核数 > 4

示例图

../../../_images/ctr_node.png

创建完成后,即可查看 集群信息

3. 操作集群

集群的操作可以通过百度云web或者通过kubectl工具进行,推荐用 kubectl工具

从Kubernetes 版本下载页面下载对应的 kubectl 客户端,关于kubectl 的其他信息,可以参见kubernetes官方安装和设置 kubectl文档。

../../../_images/ctr_kubectl_download.png
  • 注意:

本操作指南给出的操作步骤都是基于linux操作环境的。

  • 解压下载后的文件,为kubectl添加执行权限,并放在PATH下
cd kubernetes/client/bin && chmod +x ./kubectl && sudo mv ./kubectl /usr/local/bin/kubectl
  • 配置kubectl,下载集群凭证。在集群界面下载集群配置文件,放在kubectl的默认配置路径(请检查~/.kube 目录是否存在,若没有请创建)
mv kubectl.conf  ~/.kube/config
  • 配置完成后,您即可以使用 kubectl 从本地计算机访问 Kubernetes 集群
kubectl get node

4. 设置访问权限

建立分布式任务需要pod间有API互相访问的权限,可以按如下步骤

sudo kubectl create rolebinding default-view --clusterrole=view --serviceaccount=default:default --namespace=default
  • 注意: --namespace 指定的default 为创建集群时候的名称

5. 部署任务

任务的所有脚本文件可以访问 这里 获取。

  • ctr:ctr任务对应的python脚本

  • ps-train:k8s任务对应的yaml文件

    • pserver.yaml: 部署psever任务
    • trainer.yaml: 部署trainer任务
  • Dockerfile:pod文件的docker镜像生成文件

  • Script:pod文件docker镜像中包含的脚本

通过执行

kubectl apply -f ps-train

即可以成功提交任务

6. 查看结果

百度云容器引擎CCE提供了web操作台方便查看pod的运行状态。

本次训练任务将启动2个pserver节点,2个trainer节点,示例图如下

../../../_images/ctr_pods.png

可以通过检查pserver和trainer的log来检查任务运行状态。 Trainer日志示例:

../../../_images/ctr_trainer_log.png

pserver日志示例:

../../../_images/ctr_pserver_log.png