调用CreateJob提交任务到PAI-DLC后端运行。可以指定任务类型、数据源配置、代码源配置、启动命令、第三方Python库、以及任务运行的每个节点的计算资源配置。

请确保在使用该接口前,已充分了解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"
  } ],
  "UserCommand" : "String",
  "DataSources" : [ {
    "DataSourceId" : "String"
  } ],
  "CodeSource" : {
    "CodeSourceId" : "String",
    "Branch" : "String",
    "Commit" : "String"
  },
  "ThirdpartyLibs" : [ "String" ],
  "ThirdpartyLibDir" : "String"
}

请求参数

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

任务的名称

JobType String TFJob

任务类型,大小写敏感。目前支持TFJob和PyTorchJob两种任务类型,其他类型会陆续开放,敬请期待。

JobSpecs Array of JobSpec

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

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

UserCommand String python /root/code/mnist.py

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

DataSources Array

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

DataSourceId String data-20210114104214-xxxxxx

数据源(DataSource)的ID。

可以调用ListDataSources获取需要的数据源的ID;调用CreateDataSource的返回数据中也包含刚创建的数据源的ID。

CodeSource Object

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

CodeSourceId String code-20210111103721-xxxxxxx

代码源ID。调用ListCodeSources可以获取所有代码源的详细配置和ID。

Branch String master

本任务运行时,引用的代码仓库的分支

Commit String 44da109b5xxxxxxxx

本任务需要下载的代码Commit ID

UserVpc Object

用户VPC配置

VpcId String vpc-abcdef****

用户VPC的ID

SwitchId String vs-abcdef****

用户交换机的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

环境变量配置

String ENABLE_DEBUG_MODE

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

JobMaxRunningTimeMinutes Long 1024

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

WorkspaceId String ws-20210126170216-xxxxxxx

工作空间编号

Priority Integer 8

作业优先级

响应体语法

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

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

响应参数

表 2. 响应Body参数
参数名称 类型 示例 说明
JobId String dlc-20210126170216-xxxxxx

此次调用创建的任务ID

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

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

提交Tensorflow分布式GPU任务

使用kubeflow官方的all-reduce分布式GPU任务,详情见:https://github.com/kubeflow/tf-operator/tree/master/examples/v1/distribution_strategy/estimator-API。为了加快git clone的速度,这里使用github镜像地址作为例子:https://hub.fastgit.org/kubeflow/tf-operator.git。 任务会启动3个Worker类型的节点,每个节点使用一张NVIDIA V100卡 (EcsSpec:ecs.gn6e-c12g1.3xlarge)。其中的DataSourceId是提前调用CreateDataSource创建的数据源ID,MountPath是 /root/data/nas1。CodeSourceId是调用CreateCodeSource创建的代码源,地址是https://hub.fastgit.org/kubeflow/tf-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.12.2PAI-cpu-py27-ubuntu16.04",
    "PodCount" : 1,
    "EcsSpec" : "ecs.c6.large",
    "ExtraPodSpec" : {
      "SideCarContainers" : [ {
        "Name" : "data-init",
        "Image" : "registry.cn-hangzhou.aliyuncs.com/pai-dlc/curl:v1.0.0",
        "Command" : [ "curl www.aliyun.com" ],
        "Args" : [ ],
        "WorkingDir" : "/root",
        "Env" : [ {
          "Name" : "ENABLE_DEBUG",
          "Value" : "true"
        } ]
      } ],
      "InitContainers" : [ {
        "Name" : "data-init",
        "Image" : "registry.cn-hangzhou.aliyuncs.com/pai-dlc/curl:v1.0.0",
        "Command" : [ "curl www.aliyun.com" ],
        "Args" : [ ],
        "WorkingDir" : "/root",
        "Env" : [ {
          "Name" : "ENABLE_DEBUG",
          "Value" : "true"
        } ]
      } ],
      "SharedVolumeMountPaths" : [ "/root/share/" ]
    }
  } ],
  "UserCommand" : "python /root/code/mnist.py",
  "DataSources" : [ {
    "DataSourceId" : "data-20210114104214-xxxxxx"
  } ],
  "CodeSource" : {
    "CodeSourceId" : "code-20210111103721-xxxxxxx",
    "Branch" : "master",
    "Commit" : "44da109b5xxxxxxxx"
  },
  "UserVpc" : {
    "VpcId" : "vpcxxxxxxxx",
    "SwitchId" : "sxxxxxxxx",
    "SecurityGroupId" : "gxxxxxxx",
    "ExtendedCIDRs" : [ "ecxxxxxx" ]
  },
  "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" : "dlc-20210126170216-mtl37ge7gkvdz",
  "RequestId" : "473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E"
}

返回示例补充说明

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

错误码

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

开发者资源

  • SDK

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

  • OpenAPI Explorer

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

  • 阿里云CLI

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