PAI-DLC支持ACK集群通过Arena的方式进行模型训练,您需要安装Arena客户端并配置KubeConfig,才能提交深度学习任务。
背景信息
Arena是基于Kubernetes环境的一个适配AI的命令行工具,您可以通过Arena管理深度学习任务。
步骤一:安装客户端
- 登录Arena官网,下载对应系统的安装包(Mac系统下载arena-installer-xxx-xxx-darwin-amd64.tar.gz,Linux系统下载arena-installer-xxx-xxx-linux-amd64.tar.gz)。
- 执行如下命令,安装客户端。
arena-installer-xxx-xxx.tar.gz需要替换为实际的安装包名称。tar -xvf arena-installer-xxx-xxx.tar.gz cd arena-installer sudo ./install.sh
- 执行如下命令,查看客户端安装情况。
arena version
步骤二:配置KubeConfig
本地指定远程的ACK集群提交任务,需要在$HOME/.kube/config中配置ACK集群的Config信息。
步骤三:提交模型训练任务
- 提交TensorFlow模型训练任务:
- 执行以下任何一种命令,提交TensorFlow任务。
需要将paraname替换为实际的参数,其中必须配置的参数如下(您可以执行# 方法一:启动一个TF训练任务。 arena submit tfjob paraname # 方法二:启动一个TF训练任务。 arena submit tf paraname
arena submit tfjob --help
命令,查看任务的所有paraname及其解释):- --name:任务名称。
- --image:PAI-DLC支持的镜像,可以使用该镜像启动Pod进行深度学习训练。您可以根据PAI-DLC集群的地域、框架、Python版本及资源类型选择官方公共镜像,或指定自定义镜像,详情请参见公共镜像列表。
- --data:数据源目录,格式为PVC名称:挂载目录。
- 通过以下任何一种方式,查看任务日志:
- 执行如下命令,查看任务日志。
其中yourTaskName需要替换为实际的任务名称。arena logs yourTaskName
- 在PAI-DLC Dashboard页面,查看任务日志,详情请参见使用PAI-DLC Dashboard管理任务。
- 执行如下命令,查看任务日志。
- 执行以下任何一种命令,提交TensorFlow任务。
- 提交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获取)。
- --name:任务名称。提交任务后,可以执行
- 分布式任务
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获取)。
- --name:任务名称。提交任务后,可以执行
- 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获取)。
- --name:任务名称。提交任务后,可以执行