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

提交TensorFlow训练任务(submit tfjob)

  • 功能

    用于提交TensorFlow训练任务。

  • 格式

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

    #方式一:命令行参数的方式。
    dlc submit tfjob --name=<yourTaskName> \
      --command=<"yourStartCommand"> \
      [--<parameterName>=<parameterValue>]
    #方式二:任务参数描述文件的方式
    dlc submit tfjob --job_file=<yourJobFileName>
  • 参数

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

    参数 是否必选 描述 类型 任务参数描述文件中是否支持该参数
    name=<yourTaskName> 任务的名称,多个任务名称可以相同。 STRING
    command=<"yourStartCommand"> 各个节点的启动命令。 STRING
    <parameterName>=<parameterValue> <parameterName>为提交任务相关的可选参数名称,<parameterValue>为参数值。提交TensorFlow任务的相关可选参数列表如表 1所示。 具体参见下表中的每个可选参数 具体参见下表中的每个可选参数
    表 1. 提交TensorFlow任务的相关可选参数
    类别 参数名称 描述 类型 任务参数描述文件中是否支持该参数
    通用参数 code_source 代码源,只能传入单个代码源,默认值为空。 STRING
    data_sources 数据源,默认值为空。如果存在多个数据源,则数据源之间以半角逗号(,)分隔。 STRING
    job_file 任务参数描述文件,默认值为空。文件中的内容格式为<parameterName>=<parameterValue><parameterName>与命令行参数名称保持一致。

    如果指定了该参数,则系统优先使用job_file中的参数。

    STRING
    thirdparty_libs Python三方库,默认值为空。如果存在多个三方库,则三方库之间以半角逗号(,)分隔。 STRING
    thirdparty_lib_dir Python三方库安装时使用的requirements.txt文件所在的文件夹,默认值为空。 STRING
    TensorFlow特有参数 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
  • 示例
    • 通过命令行参数提交一个2 Worker+ 1 PS的分布式作业,示例如下。
      dlc submit tf --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/" \
        --data_sources=data-2021xxxxxxxxxx-xxxxxxxxxxxx
      系统返回如下类似结果。
      +----------------------------------+--------------------------------------+
      |              JobId               |              RequestId               |
      +----------------------------------+--------------------------------------+
      | dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx | xxxxxxxx-79AF-4EFC-9CE9-xxxxxxxxxxxx |
      +----------------------------------+--------------------------------------+
      [Info] Job [dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx] is [Running]
      [Info] Job [dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx] is [Running]
      [Info] Job [dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx] is [Running]
      [Info] Job [dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx] is [Running]
    • 通过任务参数描述文件提交一个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/
      data_sources=data-2021xxxxxxxxxx-xxxxxxxxxxxx

提交PyTorch训练任务(submit pytorchjob)

  • 功能

    用于提交PyTorch训练任务。

  • 格式

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

    #方式一:命令行参数的方式。
    dlc submit pytorchjob --name=<yourTaskName> \
      --command=<"yourStartCommand"> \
      [--<parameterName>=<parameterValue>]
    #方式二:任务参数描述文件的方式。
    dlc submit pytorchjob --job_file=<yourJobFileName>
  • 参数

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

    参数 是否必选 描述 类型 任务参数描述文件中是否支持该参数
    name=<yourTaskName> 任务的名称,多个任务名称可以相同,默认值为空。 STRING
    command=<"yourStartCommand"> 各个节点的启动命令,默认值为空。 STRING
    <parameterName>=<parameterValue> <parameterName>为提交任务相关的可选参数名称,<parameterValue>为参数值。提交PyTorch任务的相关可选参数列表如表 2所示。 具体参见下表中的每个可选参数 具体参见下表中的每个可选参数
    表 2. 提交PyTorch任务的相关可选参数
    类别 参数名称 描述 类型 任务参数描述文件中是否支持该参数
    通用参数 code_source 代码源,只能传入单个代码源,默认值为空。 STRING
    data_sources 数据源,默认值为空。如果存在多个数据源,则数据源之间以半角逗号(,)分隔。 STRING
    job_file 任务参数描述文件,默认值为空。文件的内容格式为<parameterName>=<parameterValue><parameterName>与命令行参数名称保持一致。

    如果指定了该参数,则系统优先使用job_file中的参数。

    STRING
    thirdparty_libs Python三方库,默认值为空。如果存在多个三方库,则三方库之间以半角逗号(,)分隔。 STRING
    thirdparty_lib_dir Python三方库安装时使用的requirements.txt文件所在的文件夹,默认值为空。 STRING
    PyTorch特有参数 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
  • 示例
    通过命令行参数提交一个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-2021xxxxxxxxxx-xxxxxxxxxxxx
    系统返回如下类似结果。
    +----------------------------------+--------------------------------------+
    |              JobId               |              RequestId               |
    +----------------------------------+--------------------------------------+
    | dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx | xxxxxxxx-79AF-4EFC-9CE9-xxxxxxxxxxxx |
    +----------------------------------+--------------------------------------+
    [Info] Job [dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx] is [Running]
    [Info] Job [dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx] is [Running]
    [Info] Job [dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx] is [Running]
    [Info] Job [dlc-2021xxxxxxxxxx-xxxxxxxxxxxxx] is [Running]