Arena是基于Kubernetes环境的一个适配AI的命令行工具。PAI-DLC支持ACK集群通过Arena的方式进行模型训练。

步骤一:安装客户端

  1. 登录Arena官网,下载对应系统的安装包(Mac系统下载arena-installer-xxx-xxx-darwin-amd64.tar.gz,Linux系统下载arena-installer-xxx-xxx-linux-amd64.tar.gz)。
  2. 执行如下命令,安装客户端。
    tar -xvf arena-installer-xxx-xxx.tar.gz
    cd arena-installer
    sudo ./install.sh
    arena-installer-xxx-xxx.tar.gz需要替换为实际的安装包名称。
  3. 执行如下命令,查看客户端安装情况。
    arena version

步骤二:配置KubeConfig

本地指定远程的ACK集群提交任务,需要在$HOME/.kube/config中配置ACK集群的Config信息。

  1. 登录PAI控制台
  2. 在左侧导航栏,选择模型开发和训练 > DLC-云原生深度学习训练平台
  3. 在PAI-DLC管理控制台页面,单击ACK集群ID/名称下的链接。
  4. 在集群基本信息页面的集群资源区域,单击复制复制配置
  5. 在本地创建.kube/config文件,并将复制的信息粘贴至该文件。
    vim $HOME/.kube/config

步骤三:提交TensorFlow模型训练任务

  1. 执行如下命令,提交任务。
    您可以执行以下任何一种命令:
    • # 启动一个TF训练任务。
      arena submit tfjob + paraname
    • # 启动一个TF训练任务。
      arena submit tf + paraname
    需要将paraname替换为实际的参数。可以执行arena submit tfjob —help命令,查看任务的所有paraname。其中必须配置的参数包括:
    • --name:任务名称。
    • --image:PAI-DLC支持的镜像,可以使用该镜像启动Pod进行深度学习训练。您可以根据PAI-DLC集群的地域、框架、Python版本及资源类型选择官方公共镜像,或指定自定义镜像,详情请参见PAI-DLC镜像
    • --data:数据源目录。格式为PVC名称:挂载目录
  2. 通过以下任何一种方式,查看任务日志。
    • 执行如下命令。
      arena logs yourTaskName
      其中yourTaskName需要替换为实际的任务名称。
    • 在PAI-DLC Dashboard页面,查看任务日志,详情请参见使用PAI-DLC Dashboard管理任务

示例

  • 单机任务
    arena submit tf \
    --name=pai-deeplearning-test-oss \
    --image=registry.cn-shanghai.aliyuncs.com/pai-dlc/pai-tensorflow-training:1.12-cpu-py2 \
    --data=pai-deeplearning-oss:/training_dir/ \
    "python /training_dir/code/main.py --max_steps=10000 --data_dir=/training_dir/data/"
    • --name:任务名称。提交任务后,可以执行arena logs ${name}命令,查看任务日志。
    • --image:镜像。例如:registry.cn-shanghai.aliyuncs.com/pai-dlc/pai-tensorflow-training:1.12-cpu-py2
    • --data:数据源目录。例如:pai-deeplearning-oss:/training_dir,其中pai-deeplearning-oss表示ACK集群创建的PVC,/training_dir表示将该PVC挂载到训练Pod的/training_dir目录。
    • python /training_dir/code/main.py --max_steps=10000 --data_dir=/training_dir/data/:Pod执行的命令。其中/training_dir/code/表示OSS中的代码目录,--max_steps和--data_dir表示main.py的参数(在main.py中,通过FALGS.max_steps和FLAGS.data_dir获取)。
  • 分布式任务
    arena submit tf \
    --name=pai-deeplearning-dist-test-nas \
    --workers=2 \
    --worker-image=registry.cn-shanghai.aliyuncs.com/pai-dlc/pai-tensorflow-training:1.12-cpu-py2 \
    --ps=1 \
    --ps-image=registry.cn-shanghai.aliyuncs.com/pai-dlc/pai-tensorflow-training:1.12-cpu-py2 \
    --data=pai-deeplearning-nas:/training_dir/ \
    "python /training_dir/code/dist-main.py --max_steps=10000 --data_dir=/training_dir/data/"
    • --name:任务名称。提交任务后,可以执行arena logs ${name}命令,查看任务日志。
    • --workers:Worker数量。
    • --worker-image:Worker镜像。
    • --ps:PS数量。
    • --ps-image:PS镜像。
    • --data:数据源目录。例如:pai-deeplearning-nas:/training_dir/,其中pai-deeplearning-nas表示ACK集群创建的PVC,/training_dir表示将该PVC挂载到训练Pod的/training_dir目录。
    • python /training_dir/code/dist-main.py --max_steps=10000 --data_dir=/training_dir/data/:Pod执行的命令。其中/training_dir/code/dist-main.py表示NAS中的代码目录,--max_steps和--data_dir表示main.py的参数(在main.py中,通过FALGS.max_steps和FLAGS.data_dir获取)。
  • GPU分布式任务
    arena submit tf \
    --name=pai-deeplearning-gpu-dist-test-oss \
    --gpus=1 \
    --workers=2 \
    --worker-image=registry.cn-shanghai.aliyuncs.com/pai-dlc/pai-tensorflow-training:1.12-gpu-py2 \
    --ps=1 \
    --ps-image=registry.cn-shanghai.aliyuncs.com/pai-dlc/pai-tensorflow-training:1.12-cpu-py2 \
    --data=pai-deeplearning-nas:/training_dir/ \
    "python /training_dir/code/dist-main.py --max_steps=10000 --data_dir=/training_dir/data/"
    • --name:任务名称。提交任务后,可以执行arena logs ${name}命令,查看任务日志。
    • --gpus:单个Worker的GPU卡数。该参数取值不能大于单个ACK GPU节点的最大卡数。
    • --workers:Worker数量。
    • --worker-image:Worker的GPU镜像。
    • --ps:PS数量。
    • --ps-image:PS的CPU镜像。
    • --data:数据源目录。例如:pai-deeplearning-oss:/training_dir/,其中pai-deeplearning-oss表示ACK集群创建的PVC,/training_dir表示将该PVC挂载到训练Pod的/training_dir目录。
    • python /training_dir/code/dist-main.py --max_steps=10000 --data_dir=/training_dir/data/:Pod执行的命令。其中/training_dir/code/dist-main.py表示OSS中的代码目录,--max_steps和--data_dir表示main.py的参数(在main.py中,通过FALGS.max_steps和FLAGS.data_dir获取)。