作业区相关接口

创建作业

接口描述

​ 往集群上提交一个用户定义算法逻辑的机器学习作业。

请求(Request)

  • 请求语法

    POST /v{version}/job HTTP/1.1
    host: infinite.{region}.baidubce.com
    content-type: application/json
    authorization:{bce-authorization-string}
    
  • 请求头域

    无特殊 Header 参数

  • 请求参数

    参数名 参数类型 必要性 参数描述
    version String 必选 API 版本号,当前取值 2
    jobName String 必选 作业名称,用户用来标志作业的自定义名字,可以重复
    只能由数字、英文字母、-或_组成且首尾只能是英文字母,最长40个字符
    jobDescription String 可选 作业描述,支持中文utf-8,最长140字符
    jobImage JobImage 可选 作业对应的机器学习镜像,默认取值 paddle-fluid-v0.14
    jobConfig JobConfig 必选 作业配置参数
    clusterConfig ClusterConfig 必选 集群配置参数

响应(Response)

  • 响应头域

    无特殊Header参数响应

  • 响应参数

    参数名 参数类型 参数描述
    jobId String 创建成功的作业 ID,全局唯一的作业标志

示例

  • 请求示例

    POST /v2/job/ HTTP/1.1
    host: infinite.bj.baidubce.com
    Content-Type: application/json
    Authorization: bce-auth-v1/46e01228b2d54080907e1a33a8bd1d6c/2018-10-16T03:05:24Z/1800/host/a19dafd03d45bf602d5b8e0c5ed11ee73ecfa0530d8775e566825859efbec5e9
    {
        "jobName": "test-fluid",
        "jobDescription": "paddle-fluid-v1.4.0",
        "jobImage": "paddle-fluid-v1.4.0",
        "jobConfig": {
            "codeURI": "bos:/paddle-sandbox-test/fluid_paddlebook/fit_a_line/script/trainer.py",
            "startCommand": "python trainer.py",
            "outputURI": "bos:/paddle-sandbox-test/tobycc-test/output",
            "trainDataURI": "bos:/paddle-sandbox-test/fluid_paddlebook/fit_a_line/data/train",
            "testDataURI": "bos:/paddle-sandbox-test/fluid_paddlebook/fit_a_line/data/test"
        },
        "clusterConfig": {
            "clusterId": "default",
            "wallTime": "10:00:00"
        }
    }
    
  • 响应示例

    {
        "jobId": "job-dnb2tatgktqe3pp8"
    }
    

查询作业列表

接口描述

查询在Infinite平台中成功创建的集群作业列表。

请求(Request)

  • 请求语法

    GET /v{version}/job?marker={marker}&maxKeys={maxKeys} HTTP/1.1
    host: infinite.{region}.baidubce.com
    content-type: application/json
    authorization:{bce-authorization-string}
    
  • 请求头域

    无特殊 Header 参数

  • 请求参数

    参数名 参数类型 必要性 参数描述
    version String 必选 API版本号,当前取值2
    marker String 可选 批量获取列表的查询的起始位置,是一个由系统生成的字符串
    maxKeys Int 可选 每页包含的最大数量,最大数量不能超过 1000。

响应(Response)

  • 响应头域

    无特殊Header参数响应

  • 响应参数

    参数名 参数类型 参数描述
    marker String 标记本次查询的起始位置
    truncated Bool true 表示后面还有数据,false 表示已经是最后一页
    nextMarker String 获取下一页所需要传递的 marker 值。当 truncated 为 false 时,该域不出现
    jobList List<JobBasicInfo> 当前查询页的作业基本信息列表
    当前查询页为末尾业时,列表长度为实际元素个数;其他情况列表长度等于pageSize

示例

  • 请求示例

    GET /v2/job?maxKeys=2 HTTP/1.1
    host: infinite.bj.baidubce.com
    Content-Type: application/json
    Authorization: bce-auth-v1/46e01228b2d54080907e1a33a8bd1d6c/2018-10-16T03:07:54Z/1800/host/fc591c01a467cd33047e776541270ede5bf57c23c1fc1446487fa61814ee0cbb
    
  • 响应示例

    {
        "marker": "1k7",
        "jobList": [
            {
                "jobId": "job-dnb2tatgktqe3pp8",
                "jobName": "test-fluid",
                "jobStatus": "fail",
                "jobImage": "paddle-fluid-v0.14",
                "createTime": "2018-10-16T11:05:25Z",
                "startTime": "2018-10-16T11:05:31Z",
                "finishTime": "2018-10-16T11:06:38Z"
            },
            {
                "jobId": "job-csk63m55dcgrnu8b",
                "jobName": "test-fluid",
                "jobStatus": "success",
                "jobImage": "paddle-fluid-v0.14",
                "createTime": "2018-10-15T16:28:29Z",
                "startTime": "2018-10-15T16:28:30Z",
                "finishTime": "2018-10-15T16:29:54Z"
            }
        ],
        "truncated": true,
        "nextMarker": "PG0P-"
    }
    

查询作业

接口描述

查询一个在集群上成功创建的机器学习作业详细信息。

请求(Request)

  • 请求语法

    GET /v{version}/job/{jobId} HTTP/1.1
    host: infinite.{region}.baidubce.com
    content-type: application/json
    authorization:{bce-authorization-string}
    
  • 请求头域

    无特殊 Header 参数

  • 请求参数

    参数名 参数类型 必要性 参数描述
    version String 必选 API 版本号,当前取值 2
    jobId String 必选 作业 ID,集群作业的唯一标志

响应(Response)

  • 响应头域

    无特殊Header参数响应

  • 响应参数

    参数名 参数类型 参数描述
    jobId String 作业 ID,集群作业的唯一标志
    jobName String 作业名称,用户用来标志作业的自定义名字
    jobDescription String 用户自定义的作业描述
    jobStatus JobStatus 作业当前状态
    jobImage JobImage 用户创建作业时选择的机器学习镜像
    jobConfig JobConfig 用户创建作业时的作业配置参数
    clusterConfig ClusterConfig 用户创建作业时的集群配置参数
    createTime String 作业的创建时间,符合日期时间格式约束
    startTime String 作业开始执行的时间,符合日期时间格式约束;
    对应 jobStatus 字段更新为 running 的时间,即作业完成调度、排队后,在集群容器上实际开始执行的时间;
    作业未开始执行时,为空字符串
    usedTime String 作业已经执行的时间,格式为 hh:mm:ss; 作业未开始执行时,为空字符串。当 usedTime 超出了创建作业时集群配置参数 ClusterConfig 中的 wallTime,作业会超时而失败结束
    finishTime String 作业结束的时间,符合日期时间格式约束。作业未结束时,为空字符串
    logAnalysis List< String > 作业的异常日志分析,仅作业错误时有值,其他情况为空列表异常日志为 Infinite 平台对常见错误的自动分析结果,仅供用户参考,详细的错误信息需要用户自行查询作业的日志输出进行排查(日志存储在 jobConfig 下的 log 路径)
    trainerList List<ContainerInfo> 作业的 trainer 容器资源信息列表
    pserverList List<ContainerInfo> 作业的 pserver 容器资源信息列表

示例

  • 请求示例

    GET /v2/job/job-7fcth0qsasdwijhp HTTP/1.1
    host: infinite.bj.baidubce.com
    Content-Type: application/json
    Authorization: bce-auth-v1/46e01228b2d54080907e1a33a8bd1d6c/2018-10-16T13:36:51Z/1800/host/f2eef796bee7049ed772a6bee8034ece5569dead0a98497a82e1269eb02545f2
    
  • 响应示例

    {
        “jobId”: “job-7fcth0qsasdwijhp”,
        “jobName”: “test-fluid”,
        “jobDescription”: “paddle-fluid-v1.4.0”,
        “jobStatus”: “success”,
        “jobImage”: “paddle-fluid-v1.4.0”,
        “jobConfig”: {
            “codeURI”: “bos:/paddle-sandbox-test/fluid_paddlebook/fit_a_line/script/trainer.py”,
            “startCommand”: “python trainer.py”,
            “outputURI”: “bos:/paddle-sandbox-test/tobycc-test/output”,
            “trainDataURI”: “bos:/paddle-sandbox-test/fluid_paddlebook/fit_a_line/data/train”,
            “testDataURI”: “bos:/paddle-sandbox-test/fluid_paddlebook/fit_a_line/data/test”
        },
        “clusterConfig”: {
            “clusterId”: “default”,
            “wallTime”: “01:00:00”
        },
        “createTime”: “2018-10-16T20:32:44Z”,
        “startTime”: “2018-10-16T20:46:29Z”,
        “usedTime”: “00:00:58”,
        “finishTime”: “2018-10-16T20:47:27Z”,
        “logAnalysis”: [],
        “trainerList”: [
            {
                “containerId”: “job-7fcth0qsasdwijhp-trainer-b4m2f”,
                “containerStatus”: “STOPPED”,
                “cpuQuota”: “1”,
                “cpuUsage”: “0.28”,
                “memoryQuota”: “30Gi”,
                “memoryUsage”: “0.01”,
                “gpuQuota”: 1,
                “gpuUsage”: {
                    “type”: “nvidia-gpu”,
                    “usage”: “0.00”,
                    “memoryUsage”: “0.00”
                }
            }
        ],
        “pserverList”: []
    }
    

查询作业实时日志

接口描述

查询一个运行中的作业,指定集群容器内的实时日志内容。

该接口只能查询 jobStatus=running 的作业,需要指定作业的 containerId 来查询具体容器内的运行中日志,并且只能查询标准输出 stdout 和标准错误 stderr 中的日志。

由于资源限制,运行中的实时日志只能查询头尾 5000 行内容,即最新的 5000 行日志,或最开始的 5000 行日志。

请求(Request)

  • 请求语法

    GET /v{version}/job/log?jobId={jobId}&containerId={containerId}&fromHead={fromHead}&marker={marker}&offset={offset} HTTP/1.1
    host: infinite.{region}.baidubce.com
    content-type: application/json
    authorization:{bce-authorization-string}
    
  • 请求头域

    无特殊 Header 参数

  • 请求参数

    参数名 参数类型 必要性 参数描述
    version String 必选 API 版本号,当前取值 2
    jobId String 必选 作业 ID,集群作业的唯一标志
    containerId String 必选 容器 Id,容器资源的唯一标志。用户根据查询作业信息接口返回的 trainerList 或 pserverList 中,选择容器信息中的 clusterId 字段,来查询对应容器运行过程中的实时日志。
    fromHead Boolean 可选 是否从头部开始查询日志,默认取值 true。为 true 时,从头部开始往后查询。即从最早的日志,按日志产生的时间顺序查询。为 false 时,从尾部开始往前查询。即从最新的日志,按日志产生的时间倒序查询。
    marker String 可选 查询的起始位置标志,默认为空。marker 是一个系统生成的字符串,查询作业实时日志接口的响应结果中包含 nextMarker 字段,标志当前查询状态下,获取下一页所需要传递的 marker 值。 marker 为空时,则从日志头部或尾部 (根据 fromHead 取值) 作为查询的起始位置。
    offset Int 可选 从起始位置查询的日志行数,默认取值为 100 取值范围为- 1000<=offset<=1000,绝对值代表查询日志行数,正负号代表与当前查询方向是否一致,为了满足各场景下的翻页需求。
    具体含义应用场景为fromHead=true,offset=100 代表从 marker 位置查询后续 100 条日志,即从前往后翻下一页;br>offset=-100 代表从 marker 位置查询前序 100 条日志,即从前往后翻上一页。br>fromHead=false,offset=100 代表从 marker 位置查询前序 100 条日志,即从后往前翻下一页;br>offset=-100 代表从 marker 位置查询后续 100 条日志,即从后往前翻上一页。

响应(Response)

  • 响应头域

    无特殊Header参数响应

  • 响应参数

    参数名 参数类型 参数描述
    marker String 标记本次查询的起始位置
    truncated Boolean 查询截断标志,true 表示后面 (按查询方向) 还有数据,false 表示已经是最后一页。运行中实时日志只能查询头尾 5000 行内容,当查询到此范围的边界时,truncated 就会返回 false。
    nextMarker String 获取下一页 (按查询方向) 所需要传递的 marker 值。当 truncated 为 false 时,该字段不出现。
    logs List<ContainerLog> 查询的日志结果,每一个元素为一行日志,包括日志的内容和时间戳。
    startTime String 查询日志结果区间的起始时间
    endTime String 查询日志结果区间的结束时间

示例

  • 请求示例

    GET /v2/job/log/?containerId=job-ikb19k28t5brhbes-trainer-tkgsr&fromHead=&marker=&offset=&jobId=job-ikb19k28t5brhbes HTTP/1.1
    host: infinite.bj.baidubce.com
    Content-Type: application/json
    Authorization: bce-auth-v1/46e01228b2d54080907e1a33a8bd1d6c/2018-10-16T09:42:29Z/1800/host/e15e0e6f5b05fbbc02953b77d923e557898b9936a8a5e2d7ce73f88e232f1ab4
    
  • 响应示例

    {
        “truncated”: true,
        “logs”: [
            {
                “content”: “ ./tools/upload_log.sh: line 18: ./common.conf: No such file or directory”,
                “timestamp”: “2018-10-16T09:42:15.315242049Z”
            },
            {
                “content”: “ SYS_PRIVILEGE_AK=aca5d9bbd12711e8b7f1471c92c34529”,
                “timestamp”: “2018-10-16T09:42:15.339135524Z”
            },
            {
                “content”: “ K8S_TRAINERS_COUNT=1”,
                “timestamp”: “2018-10-16T09:42:15.339162902Z”
            }
        ],
        “startTime”: “2018-10-16T09:42:15.315242049Z”,
        “endTime”: “2018-10-16T09:42:15.339162902Z”,
        “marker”: “-xFEiZ-RAvIl5XTm6zBcS3xw4CcH2W4DJ25v_VD7aTrHR1aR1Sj6Pw3tx60IlvnTm2vBeEBOBJFd5nADvyx4jlzcYXpIlvnTm2vBeEBOBJFd5nA6v0CIv6P_NBxd”,
        “nextMarker”: “_XvlfIUYNTKA0n0mzdxMXTxj4kMN2I11g3C1DcQv9i0kv65r1pPuOG1quHFrg1_A3390QYBYXpR3AdOv7wJvGj3n6ABZBlXSeJ1AKh_elSB9ZIS4l3D3W-MhPnbNFGANdOTu9M”
    }
    

终止作业

接口描述

终止指定 ID 的作业。只能对于即将或正在运行的作业(处于 submit、schedule、queue、running 状态)执行终止操作。 发起终止作业请求后,作业状态转变为 killing,等待后台异步执行实际的终止操作,终止成功则作业状态转换为 killed。

请求(Request)

  • 请求语法

    PUT /v{version}/job/{jobId}?kill HTTP/1.1
    host: infinite.{region}.baidubce.com
    content-type: application/json
    authorization:{bce-authorization-string}
    
  • 请求头域

    无特殊 Header 参数

  • 请求参数

    参数名 参数类型 必要性 参数描述
    version String 必选 API 版本号,当前取值 2
    jobId String 必选 要终止的作业 ID

响应(Response)

  • 响应头域

    无特殊Header参数响应

  • 响应参数

示例

  • 请求示例

    PUT /v2/job/job-fpkvdcbhrjidhhw9?kill HTTP/1.1
    host: infinite.bj.baidubce.com
    Content-Type: application/json
    Authorization: bce-auth-v1/46e01228b2d54080907e1a33a8bd1d6c/2018-10-16T08:37:01Z/1800/host/d6694e5190c28458624d1461c8decfe261c281c9053ff8e73c509d603474cd7f
    

删除作业

接口描述

删除指定ID的作业。作业在任意时刻可以被删除,如果删除时作业尚未结束,则自动进行杀死操作。

请求(Request)

  • 请求语法

    DELETE /v{version}/job/{jobId} HTTP/1.1
    host: infinite.{region}.baidubce.com
    content-type: application/json
    authorization:{bce-authorization-string}
    
  • 请求头域

    无特殊 Header 参数

  • 请求参数

    参数名 参数类型 必要性 参数描述
    version String 必选 API 版本号,当前取值 2
    jobId String 必选 要删除的作业 ID

响应(Response)

  • 响应头域

    无特殊Header参数响应

  • 响应参数

示例

  • 请求示例

    DELETE /v2/job/job-fpkvdcbhrjidhhw9 HTTP/1.1
    host: infinite.bj.baidubce.com
    Content-Type: application/json
    Authorization: bce-auth-v1/46e01228b2d54080907e1a33a8bd1d6c/2018-10-16T08:38:25Z/1800/host/e562df91037e138e28b9e5d377c30855f40f05a98c14528589f5109b0685add5~~~~
    
  • 响应示例