创建一个任务到集群运行,可以指定数据源配置、代码源配置、启动命令以及任务运行的每个节点的计算资源配置

请确保在使用该接口前,已充分了解PAI-DLC产品的收费方式和价格

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求语法

POST /api/v1/jobs HTTP/1.1
Content-Type:application/json

{
  "DisplayName" : "String",
  "JobType" : "String",
  "JobSpecs" : [ {
    "Type" : "String",
    "Image" : "String",
    "PodCount" : Long,
    "EcsSpec" : "String",
    "ExtraPodSpec" : {
      "SideCarContainers" : [ {
        "Name" : "String",
        "Image" : "String",
        "Command" : [ "String" ],
        "Args" : [ "String" ],
        "WorkingDir" : "String",
        "Env" : [ {
          "Name" : "String",
          "Value" : "String"
        } ],
        "Resources" : { }
      } ],
      "InitContainers" : [ {
        "Name" : "String",
        "Image" : "String",
        "Command" : [ "String" ],
        "Args" : [ "String" ],
        "WorkingDir" : "String",
        "Env" : [ {
          "Name" : "String",
          "Value" : "String"
        } ],
        "Resources" : { }
      } ],
      "SharedVolumeMountPaths" : [ "String" ]
    },
    "ResourceConfig" : {
      "CPU" : "String",
      "GPU" : "String",
      "Memory" : "String",
      "SharedMemory" : "String",
      "GPUType" : "String"
    },
    "UseSpotInstance" : Boolean
  } ],
  "UserCommand" : "String",
  "DataSources" : [ {
    "DataSourceId" : "String",
    "MountPath" : "String"
  } ],
  "CodeSource" : {
    "CodeSourceId" : "String",
    "Branch" : "String",
    "Commit" : "String",
    "MountPath" : "String"
  },
  "UserVpc" : {
    "VpcId" : "String",
    "SwitchId" : "String",
    "SecurityGroupId" : "String",
    "ExtendedCIDRs" : [ "String" ]
  },
  "ThirdpartyLibs" : [ "String" ],
  "ThirdpartyLibDir" : "String",
  "JobMaxRunningTimeMinutes" : Long,
  "WorkspaceId" : "String",
  "ResourceId" : "String",
  "Priority" : Integer,
  "Settings" : {
    "BusinessUserId" : "String",
    "Caller" : "String",
    "PipelineId" : "String",
    "EnableTideResource" : Boolean,
    "EnableErrorMonitoringInAIMaster" : Boolean,
    "ErrorMonitoringArgs" : "String"
  },
  "Options" : "String"
}

请求参数

表 1. 请求Body参数
参数名称 类型 是否必选 示例 说明
DisplayName String tf-mnist-test

任务的名称。

JobType String TFJob

任务类型,大小写敏感。当前支持的任务类型:

  • TFJob
  • PyTorchJob
  • XGBoostJob
JobSpecs Array of JobSpec

JobSpecs描述任务运行时的各种配置,诸如镜像地址、启动命令、节点资源申明、副本数量等。

DLC任务由不同类型的节点组成,同一类型的节点拥有完全相同的配置,这种配置被称为一个JobSpec。JobSpecs描述所有类型节点的配置,是JobSpec的数组。

UserCommand String python /root/code/mnist.py

任务所有节点的启动命令。

DataSources Array

任务运行所使用的数据源列表。

DataSourceId String d-cn9dl*******

数据源的ID。

可以在工作空间-AI资源-数据集页面查看已创建的数据源的详细信息与ID。

MountPath String /root/data

本任务需要挂载的路径,可选参数,默认使用数据源中的挂载路径。

CodeSource Object

本任务使用的代码源。任务的节点启动之前,DLC会自动下载代码源中配置好的代码,并Mount到容器的本地目录。

CodeSourceId String code-20210111103721-xxxxxxx

代码源ID。可以工作空间-AI资源-代码集页面查看所有代码源的详细配置和ID。

Branch String master

本任务运行时,引用的代码仓库的分支,可选参数,默认使用代码源中的配置分支字段。

Commit String 44da109b5******

本任务需要下载的代码Commit ID,可选参数,默认使用代码源中的CommitID配置。

MountPath String /root/data

本次任务需要挂载的路径,可选参数,默认使用代码源中配置挂载路径。

UserVpc Object

用户VPC配置。

VpcId String vpc-abcdef****

用户VPC的ID。

SwitchId String vs-abcdef****

用户交换机的ID,可选参数

  • 参数值为空时系统会根据库存情况自动选择合适的交换机;
  • 也可以自己指定交换机ID。
SecurityGroupId String sg-abcdef****

用户安全组的ID。

ExtendedCIDRs Array of String 192.168.0.1/24

扩展网段。

ThirdpartyLibs Array of String numpy==1.16.1

指定一个第三方Python库和对应版本要求,比如numpy==1.16.1。

ThirdpartyLibDir String /root/code/

Python三方库(requirements.txt)文件所在文件夹名称;每个节点在运行指定的UserCommand之前,PAI-DLC会从指定文件夹取出requirements.txt文件,并调用pip install -r 安装。

Envs Map ENABLE_DEBUG_MODE

环境变量配置。

String ENABLE_DEBUG_MODE

一个环境变量,格式:Key=Value。

JobMaxRunningTimeMinutes Long 1024

作业最长运行时长,单位为分钟。

WorkspaceId String ws-20210126170216-xxxxxxx

工作空间ID,如何创建工作空间可以参考文档

ResourceId String rs-xxx

资源组ID,可选参数

  • 参数值为空表示提交到公共资源组;
  • 如果当前工作空间已经绑定专有资源组,此处可以指定对应的资源组ID;如何创建专有资源组可以参考文档
Priority Integer 8

任务的优先级,可选参数,默认值1,参数值的范围是1~9;

  • 1为最低优先级
  • 9为最高优先级
Settings JobSettings

作业额外参数配置

ElasticSpec JobElasticSpec

该参数暂未支持,无需关注。

DebuggerConfigContent String “”

该参数暂未支持,无需关注。

Options String key1=value1,key2=value2

本任务的额外配置,通过此参数可以调整挂载的数据源的一些行为。如任务有挂载OSS类型的数据源时,可以通过将此参数配置为 fs.oss.download.thread.concurrency=4,fs.oss.download.queue.size=16 ,覆盖JindoFS的默认参数。

响应体语法

HTTP/1.1 200 OK
Content-Type:application/json

{
  "JobId" : "String",
  "RequestId" : "String"
}

响应参数

表 2. 响应Body参数
参数名称 类型 示例 说明
JobId String dlc7*******

此次调用创建的任务ID

RequestId String 473469C7-AA6F-4DC5-B3DB-xxxxxxx

本次请求的ID,用于诊断和答疑。

提交Tensorflow分布式GPU任务

使用kubeflow官方的all-reduce分布式GPU任务,详情见:https://github.com/kubeflow/training-operator/tree/master/examples/tensorflow/distribution_strategy/estimator-API。为了加快git clone的速度,这里使用github镜像地址作为例子:https://hub.fastgit.xyz/kubeflow/training-operator.git。 任务会启动3个Worker类型的节点,每个节点使用一张NVIDIA V100卡 (EcsSpec:ecs.gn6e-c12g1.3xlarge)。其中的DataSourceId是提前创建的数据源ID,MountPath是 /root/data/nas1。CodeSourceId是提前创建的代码源,地址是https://hub.fastgit.xyz/kubeflow/training-operator.git,MountPath是/root/code/kubeflow。

POST /api/v1/jobs HTTP/1.1
Host:pai-dlc.aliyuncs.com
Content-Type:application/json

{
  "DisplayName" : "tf-mnist-test",
  "JobType" : "TFJob",
  "JobSpecs" : [ {
    "Type" : "Worker",
    "Image" : "registry.cn-hangzhou.aliyuncs.com/pai-dlc/tensorflow-training:1.12PAI-gpu-py36-cu101-ubuntu18.04",
    "PodCount" : 3,
    "EcsSpec" : "ecs.gn6e-c12g1.3xlarge",
  } ],
  "UserCommand" : "python /root/code/mnist.py",
  "DataSources" : [ {
    "DataSourceId" : "d-*****"
  } ],
  "CodeSource" : {
    "CodeSourceId" : "code-****",
    "Branch" : "master",
    "Commit" : "44da109b5****"
  },
  "UserVpc" : {
    "VpcId" : "vpc******",
    "SecurityGroupId" : "g*****"
  },
  "ThirdpartyLibs" : [ "numpy==1.16.1" ],
  "ThirdpartyLibDir" : "/root/code/",
  "JobMaxRunningTimeMinutes" : 1024
}

请求示例补充说明

作业中引用的DataSource是提前通过CreateDataSource API创建好的NAS数据源,并挂载在/root/data/nas1目录下。本作业运行结束之后,在/root/data/nas1/test/models/目录下会看到Tensorflow的Checkpoint目录。

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<不支持/>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "JobId" : "dlc7*******",
  "RequestId" : "473469C7-AA6F-4DC5-B3DB-xxxxxxx"
}

返回示例补充说明

如果任务创建成功,可以使用返回JSON中的JobId调用GetJob API获取Job的运行状态和所有节点的详细运行情况。

错误码

访问错误中心查看更多错误码。

开发者资源

  • SDK

    阿里云为您提供多种语言的SDK,帮助您快速通过API集成阿里云的产品和服务,推荐您使用SDK调用API,已免除您手动签名验证。

  • OpenAPI Explorer

    快速检索,可视化调试API,在线命令行工具,同步动态生成可执行的SDK代码示例。

  • 阿里云CLI

    阿里云资产管理和配置工具,可通过命令方式同时管理多个阿里云产品和服务,简单快捷,是您上云好帮手。