您可以通过客户端工具提交训练任务。本文介绍提交任务相关的命令详情,包括调用格式、参数解释及使用示例。

提交任务的通用参数

使用DLC命令行提交TensorFlow,PyTorch,XGBoost任务时,存在通用的参数。通用参数列表如下

表 1. 提交任务的通用参数
参数 是否必选 描述 类型 任务参数描述文件中是否支持该参数
name 任务的名称,多个任务名称可以相同。 STRING
command 各个节点的启动命令。 STRING
data_sources 数据源。如存在多个,则以逗号分隔,默认为空。 STRING
code_source 代码源,只传入单个,默认为空。 STRING
thirdparty_libs python三方库;若存在多个,则以逗号分隔,默认为空。 STRING
thirdparty_lib_dir Python三方库安装使用的requirements.txt文件所在文件夹,默认为空。 STRING
vpc_id 任务可访问的专有网络VPC的ID,默认为空。 STRING
switch_id 否(若存在vpc_id则为必选) 任务访问的专有网络VPC中的交换器ID,默认为空。 STRING
security_group_id 否(若存在vpc_id则为必选) 任务访问的专有网络VPC中的安全组ID,默认为空。 STRING
job_file 任务参数描述文件;如果传入,会优先使用job_file中参数,格式为key=value的格式,key名称与命令行参数名称保持一致。 STRING
interactive 是否以交互模式启动任务 BOOL
job_max_running_time_minutes 任务的最大运行时长。默认值为0,表示不设置最大运行时长。 INT64
success_policy 目前仅支持TFJob,取值如下:
  • ChiefWorker:只要Chief节点的Pod成功结束,则整个任务就会成功结束。
  • AllWorkers:只有所有的节点都成功结束,才会认为任务成功结束。
默认为空表示AllWorkers。
STRING

提交TensorFlow训练任务(submit tfjob)

  • 功能

    用于提交TensorFlow训练任务。

  • 格式

    系统支持通过命令行参数或任务参数描述文件的方式提交TensorFlow任务。

    dlc submit tfjob [flags]
  • 参数

    如果通过命令行参数的方式提交TensorFlow任务,则需要将命令中的如下参数替换为实际值。如果通过任务参数描述文件的方式提交TensorFlow任务,则将任务参数描述文件中支持的参数以<parameterName>=<parameterValue>的形式写入文件中。提交TensorFlow任务的通用参数如文章开头的列表所示,以下为TensorFlow的任务特有参数

    表 2. 提交TensorFlow任务的特有参数
    参数 是否必选 描述 类型 任务参数描述文件中是否支持该参数
    workspace_id 工作空间的ID,(即作业提交DLC公共的工作空间)默认为空。如何创建工作空间可以参考创建工作空间 STRING
    chief 是否启用TensorFlow Chief节点,该参数取值包括:
    • false:默认值,表示关闭TensorFlow Chief节点。
    • true:表示开启TensorFlow Chief节点。
    BOOL
    chief_image TensorFlow Chief节点的镜像,默认值为空。 STRING
    chief_spec TensorFlow Chief节点使用的服务器型号,默认值为空。 STRING
    master_image TensorFlow Master节点的镜像,默认值为空。 STRING
    master_spec TensorFlow Master节点使用的服务器型号。 STRING
    masters TensorFlow Master节点的数量,默认值为0。 INT
    ps TensorFlow Parameter Server节点的数量,默认值为0。 INT
    ps_image TensorFlow Parameter Server节点的镜像,默认值为空。 STRING
    ps_spec TensorFlow Parameter Server节点使用的服务器型号,默认值为空。 STRING
    worker_image TensorFlow Worker节点的镜像,默认值为空。 STRING
    worker_spec TensorFlow Worker节点使用的服务器型号,默认值为空。 STRING
    workers TensorFlow Worker节点的数量,默认值为0。 INT
    evaluator_image TensorFlow Evaluators节点的镜像,默认值为空。 STRING
    evaluator_spec TensorFlow Evaluators节点使用的服务器型号,默认值为空。 STRING
    evaluators TensorFlow Evaluators节点的数量,默认值为0。 INT
    graphlearn_image TensorFlow GraphLearn节点的镜像,默认值为空。 STRING
    graphlearn_spec TensorFlow GraphLearn节点使用的服务器型号,默认值为空。 STRING
    graphlearns TensorFlow GraphLearn节点的数量,默认值为0。 INT
    表 3. 提交TensorFlow任务至专有资源组的特有参数
    参数 是否必选 描述 类型 任务参数描述文件中是否支持该参数
    resource_id 否(若要提交任务至专有资源组则为必选) 专有资源组的ID,默认为空。如何创建专有资源组可以参考准备及管理DLC资源组集群 STRING
    priority 任务优先级。默认为1 INT
    chief_cpu TesorFlow Chief节点使用CPU的个数,默认为空 STRING
    chief_gpu TesorFlow Chief节点使用GPU的个数,默认为空 STRING
    chief_gpu_type TesorFlow Chief节点使用GPU的类型,默认为空。示例值:A100 STRING
    chief_memory TesorFlow Chief节点使用内存资源,默认为空。示例值:500Mi,1Gi。 STRING
    chief_shared_memory TesorFlow Chief节点用于共享的内存资源,默认为空。示例值:500Mi,1Gi。 STRING
    master_cpu TesorFlow Master节点使用CPU的个数,默认为空 STRING
    master_gpu TesorFlow Master节点使用GPU的个数,默认为空 STRING
    master_gpu_type TesorFlow Master节点使用GPU的类型,默认为空。示例值:A100 STRING
    master_memory TesorFlow Master节点使用内存资源,默认为空。示例值:500Mi,1Gi。 STRING
    master_shared_memory TesorFlow Master节点用于共享的内存资源,默认为空。示例值:500Mi,1Gi。 STRING
    *_cpu TesorFlow *节点使用CPU的个数,默认为空。*可替换为(ps,worker,evaluator,graphlearn)。 STRING
    *_gpu TesorFlow *节点使用GPU的个数,默认为空。*可替换为(ps,worker,evaluator,graphlearn)。 STRING
    *_gpu_type TesorFlow *节点使用GPU的类型,默认为空。示例值:A100。*可替换为(ps,worker,evaluator,graphlearn)。 STRING
    *_memory TesorFlow *节点使用的内存资源,默认为空。示例值:500Mi,1Gi。*可替换为(ps,worker,evaluator,graphlearn)。 STRING
    *_shared_memory TesorFlow *节点用于共享内存资源,默认为空。示例值:500Mi,1Gi。*可替换为(ps,worker,evaluator,graphlearn)。 STRING
  • 示例
    • 通过命令行参数提交一个2 Worker+ 1 PS的分布式作业,示例如下。
      dlc submit tfjo --name=test_2021 --ps=1 \
        --ps_spec=ecs.g6.8xlarge \
        --ps_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04 \
        --workers=2 \
        --worker_spec=ecs.g6.4xlarge \
        --worker_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04 \
        --command="python /root/data/dist_mnist/code/dist-main.py --max_steps=10000 --data_dir=/root/data/dist_mnist/data/" \
        --workspace_id=***** \
        --data_sources=data-2021xxxxxxxxxx-xxxxxxxxxxxx
      系统返回如下类似结果。
      +----------------------------------+--------------------------------------+
      |              JobId               |              RequestId               |
      +----------------------------------+--------------------------------------+
      | dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx | xxxxxxxx-79AF-4EFC-9CE9-xxxxxxxxxxxx |
      +----------------------------------+--------------------------------------+
    • 通过任务参数描述文件提交一个2 Worker+ 1 PS的分布式作业,示例如下。
      dlc submit tfjob --job_file=job_file.dist_mnist.1ps2w
      其中job_file.dist_mnist.1ps2w为任务参数描述文件,采用<parameterName>=<parameterValue>的格式填写参数。job_file.dist_mnist.1ps2w的内容如下所示。
      name=test_2021
      workers=2
      worker_spec=ecs.g6.4xlarge
      worker_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04
      ps=1
      ps_spec=ecs.g6.8xlarge
      ps_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04
      command=python /root/data/dist_mnist/code/dist-main.py --max_steps=10000 --data_dir=/root/data/dist_mnist/data/
      workspace_id=*****
      data_sources=data-2021xxxxxxxxxx-xxxxxxxxxxxx

提交PyTorch训练任务(submit pytorchjob)

  • 功能

    用于提交PyTorch训练任务。

  • 格式

    系统支持通过命令行参数或任务参数描述文件的方式提交PyTorch任务。

    dlc submit pytorchjob [flags]
  • 参数

    如果通过命令行参数的方式提交PyTorch任务,则需要将命令中的如下参数替换为实际值。如果通过任务参数描述文件的方式提交PyTorch任务,则将任务参数描述文件中支持的参数以<parameterName>=<parameterValue>的形式写入文件中。提交PyTorch任务的通用参数如文章开头的列表所示,以下为PyTorch任务的特有参数

    表 4. 提交PyTorch任务的特有参数
    参数名称 是否必选 描述 类型 任务参数描述文件中是否支持该参数
    workspace_id 工作空间的ID,(即作业提交DLC公共的工作空间)默认为空。如何创建工作空间可以参考创建工作空间 STRING
    master_image PyTorch Master节点的镜像,默认值为空。 STRING
    master_spec PyTorch Master节点使用的服务器型号,默认值为空。 STRING
    masters PyTorch Master节点的数量,默认值为0。 INT
    worker_image PyTorch Worker节点的镜像,默认值为空。 STRING
    worker_spec PyTorch Worker节点使用的服务器型号,默认值为空。 STRING
    workers PyTorch Worker节点的数量,默认值为0。 INT
    表 5. 提交PyTorch任务至专有资源组的特有参数
    参数 是否必选 描述 类型 任务参数描述文件中是否支持该参数
    resource_id 否(若要提交任务至专有资源组则为必选) 专有资源组的ID,默认为空。如何创建专有资源组可以参考准备及管理DLC资源组集群 STRING
    priority 任务优先级。默认为1 INT
    master_cpu PyTorch Master节点使用CPU的个数,默认为空 STRING
    master_gpu PyTorch Master节点使用GPU的个数,默认为空 STRING
    master_gpu_type PyTorch Master节点使用GPU的类型,默认为空。示例值:A100 STRING
    master_memory PyTorch Master节点使用内存资源,默认为空。示例值:500Mi,1Gi。 STRING
    master_shared_memory PyTorch Master节点用于共享的内存资源,默认为空。示例值:500Mi,1Gi。 STRING
    worker_cpu PyTorch Worker节点使用CPU的个数,默认为空 STRING
    worker_gpu PyTorch Worker节点使用GPU的个数,默认为空 STRING
    worker_gpu_type PyTorch Worker节点使用GPU的类型,默认为空。示例值:A100 STRING
    worker_memory PyTorch Worker节点使用内存资源,默认为空。示例值:500Mi,1Gi。 STRING
    worker_shared_memory PyTorch Worker节点用于共享的内存资源,默认为空。示例值:500Mi,1Gi。 STRING
  • 示例
    通过命令行参数提交一个GPU的模型训练任务,示例如下。
    dlc submit pytorchjob --name=test_pt_face \
        --workers=1 \
      --worker_spec=ecs.gn6e-c12g1.3xlarge \
      --worker_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/pytorch-training:1.7.1-gpu-py37-cu110-ubuntu18.04 \
      --command="apt-get update; apt-get -y --allow-downgrades install libpcre3=2:8.38-3.1 libpcre3-dev libgl1-mesa-glx libglib2.0-dev; cd /root/data/face; python train.py --num_workers 0 --save_folder outputs" \
      --data_sources=data-20210410224621-gml01wz02m3k \
      --workspace_id=*****
    系统返回如下类似结果。
    +----------------------------------+--------------------------------------+
    |              JobId               |              RequestId               |
    +----------------------------------+--------------------------------------+
    | dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx | xxxxxxxx-79AF-4EFC-9CE9-xxxxxxxxxxxx |
    +----------------------------------+--------------------------------------+

提交XGBoost训练任务(submit xgboostjob)

  • 功能

    用于提交XGBoost训练任务。

  • 格式

    系统支持通过命令行参数或任务参数描述文件的方式提交XGBoost任务。

    dlc submit xgboostjob [flags]
  • 参数

    如果通过命令行参数的方式提交XGBoost任务,则需要将命令中的如下参数替换为实际值。如果通过任务参数描述文件的方式提交XGBoost任务,则将任务参数描述文件中支持的参数以<parameterName>=<parameterValue>的形式写入文件中。提交XGBoost任务的通用参数如文章开头的列表所示,以下为XGBoost任务的特有参数

    表 6. 提交XGBoost任务的特有参数
    参数名称 是否必选 描述 类型 任务参数描述文件中是否支持该参数
    workspace_id 工作空间的ID,(即作业提交DLC公共的工作空间)默认为空。如何创建工作空间可以参考创建工作空间 STRING
    master_image XGBoost Master节点的镜像,默认值为空。 STRING
    master_spec XGBoost Master节点使用的服务器型号,默认值为空。 STRING
    masters XGBoost Master节点的数量,默认值为0。 INT
    worker_image XGBoost Worker节点的镜像,默认值为空。 STRING
    worker_spec XGBoost Worker节点使用的服务器型号,默认值为空。 STRING
    workers XGBoost Worker节点的数量,默认值为0。 INT
    表 7. 提交XGBoost任务至专有资源组的特有参数
    参数 是否必选 描述 类型 任务参数描述文件中是否支持该参数
    resource_id 否(若要提交任务至专有资源组则为必选) 专有资源组的ID,默认为空。如何创建专有资源组可以参考准备及管理DLC资源组集群 STRING
    priority 任务优先级。默认为1 INT
    master_cpu XGBoost Master节点使用CPU的个数,默认为空 STRING
    master_gpu XGBoost Master节点使用GPU的个数,默认为空 STRING
    master_gpu_type XGBoost Master节点使用GPU的类型,默认为空。示例值:A100 STRING
    master_memory XGBoost Master节点使用内存资源,默认为空。示例值:500Mi,1Gi。 STRING
    master_shared_memory XGBoost Master节点用于共享的内存资源,默认为空。示例值:500Mi,1Gi。 STRING
    worker_cpu XGBoost Worker节点使用CPU的个数,默认为空 STRING
    worker_gpu XGBoost Worker节点使用GPU的个数,默认为空 STRING
    worker_gpu_type XGBoost Worker节点使用GPU的类型,默认为空。示例值:A100 STRING
    worker_memory XGBoost Worker节点使用内存资源,默认为空。示例值:500Mi,1Gi。 STRING
    worker_shared_memory XGBoost Worker节点用于共享的内存资源,默认为空。示例值:500Mi,1Gi。 STRING
  • 示例
    通过命令行参数提交一个XGBoost任务,示例如下。
    dlc submit xgboostjob --name=test_xgboost \
      --workers=1 \
      --worker_spec=ecs.gn6e-c12g1.3xlarge \
      --worker_image=xgboost-training:1.6.0-cpu-py36-ubuntu18.04 \
      --command="python /root/code/horovod/xgboost/main.py --job_type=Train --xgboost_parameter=objective:multi:softprob,num_class:3 --n_estimators=50 --model_path=autoAI/xgb-opt/2" \
      --workspace_id=*****
    系统返回如下类似结果。
    +----------------------------------+--------------------------------------+
    |              JobId               |              RequestId               |
    +----------------------------------+--------------------------------------+
    | dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx | xxxxxxxx-79AF-4EFC-9CE9-xxxxxxxxxxxx |
    +----------------------------------+--------------------------------------+