PAI-DLC支持ACK集群通过Arena的方式进行模型训练,您需要安装Arena客户端并配置KubeConfig,才能提交深度学习任务。

背景信息

Arena是基于Kubernetes环境的一个适配AI的命令行工具,您可以通过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. 登录容器服务管理控制台
  2. 查看集群的连接信息,在集群资源区域,单击复制
    查看集群连接信息操作详情请参见 查看集群信息复制配置
  3. 在本地计算机创建.kube/config文件,并将复制的信息粘贴至该文件。
    vim $HOME/.kube/config

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

  • 提交TensorFlow模型训练任务:
    1. 执行以下任何一种命令,提交TensorFlow任务。
      # 方法一:启动一个TF训练任务。
      arena submit tfjob paraname
      
      # 方法二:启动一个TF训练任务。
      arena submit tf paraname
      需要将paraname替换为实际的参数,其中必须配置的参数如下(您可以执行arena submit tfjob --help命令,查看任务的所有paraname及其解释):
      • --name:任务名称。
      • --image:PAI-DLC支持的镜像,可以使用该镜像启动Pod进行深度学习训练。您可以根据PAI-DLC集群的地域、框架、Python版本及资源类型选择官方公共镜像,或指定自定义镜像,详情请参见公共镜像列表
      • --data:数据源目录,格式为PVC名称:挂载目录
    2. 通过以下任何一种方式,查看任务日志:
      • 执行如下命令,查看任务日志。
        arena logs yourTaskName
        其中yourTaskName需要替换为实际的任务名称。
      • 在PAI-DLC Dashboard页面,查看任务日志,详情请参见使用PAI-DLC Dashboard管理任务
  • 提交PyTorch模型训练任务。
    您可以通过如下命令,提交PyTorch任务。
    arena submit pytorch \
    --namespace=pai-dlc-system --name=ddptest \
    --gpus=8 --workers=2 \
    --image=registry-vpc.cn-hangzhou.aliyuncs.com/pai-dlc/pai-pytorch-training:1.5-gpu-py3 \
    --data=pai-hangzhou-cpfs-pvc:/mnt/luci-cpfs/ \
    --working-dir=/mnt/luci-cpfs/luci-hangzhou/yanhao/centernet/ \
    "bash experiments/ctdet_coco_ddp.sh"
    其中:
    • --namespace:PAI-DLC命名空间。
    • --name:任务名称。
    • --gpus:每个Worker申请的GPU数量。
    • --workers:Worker总数量。
    • --image:镜像名称,建议使用registry-vpc.cn-hangzhou.aliyuncs.com/pai-dlc/pai-pytorch-training:1.5-gpu-py3
    • --data:数据源目录,格式为PVC名称:挂载目录
    • --working-dir:程序执行的工作目录。
    • experiments/ctdet_coco_ddp.sh:指待执行的脚步,需要根据实际情况修改。

步骤四:管理任务

  • 您可以通过如下命令,查看作业运行情况。
    arena list -n pai-dlc-system
  • 您可以通过如下命令,查看日志。
    arena logs -f ddptest -n pai-dlc-system
  • 您可以通过如下命令,删除作业。
    arena delete ddptest -n pai-dlc-system

示例

  • 单机任务
    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获取)。