更新时间:2023-12-14 GMT+08:00

创建训练作业

功能介绍

创建一个训练作业。

该接口为异步接口,作业状态请通过查询训练作业列表查询训练作业版本详情接口获取。

URI

POST /v1/{project_id}/training-jobs

参数说明如表1所示。
表1 参数说明

参数

是否必选

参数类型

说明

project_id

String

用户项目ID。获取方法请参见获取项目ID和名称

请求消息

请求参数如表2所示。
表2 请求参数

参数

是否必选

参数类型

说明

job_name

String

训练作业名称。限制为1-64位只含数字、字母、下划线和中划线的名称。

job_desc

String

对训练作业的描述,默认为“NULL”,字符串的长度限制为[0, 256]。

config

Object

创建训练作业需要的参数。详情请参见表3

workspace_id

String

指定作业所处的工作空间,默认值为“0”。

表3 config属性列表

参数

是否必选

参数类型

说明

worker_server_num

Integer

训练作业worker的个数。最大值请从查询作业资源规格接口返回的“max_num”值获取。

app_url

String

训练作业的代码目录。如:“/usr/app/”。应与boot_file_url一同出现,若填入model_id则app_url/boot_file_url和engine_id无需填写。

boot_file_url

String

训练作业的代码启动文件,需要在代码目录下。如:“/usr/app/boot.py”。应与app_url一同出现,若填入model_id则app_url/boot_file_url和engine_id无需填写。

parameter

Array<Object>

训练作业的运行参数,为“label-value”格式。取值可以为自定义的任何值,其中label为参数名称,value为参数值,该样例请参考请求示例;当为自定义镜像训练作业的时候,此参数为容器环境变量。详细请参见表8

data_url

String

训练作业需要的数据集OBS路径URL,默认为空。如:“/usr/data/”。不可与data_source或者dataset_id/dataset_version_id同时出现,但必须有其一。

dataset_id

String

训练作业的数据集ID。应与dataset_version_id同时出现,但不可与data_url或data_source同时出现。

dataset_version_id

String

训练作业的数据集版本ID。应与dataset_id同时出现,但不可与data_url或data_source同时出现。

data_source

Array<Object>

训练作业使用的数据集。不可与data_url或dataset_id/dataset_version_id同时使用。请查看表4

spec_id

Long

训练作业选择的资源规格ID。请从查询作业资源规格接口获取资源ID。创建公共池作业时,spec_id必选,且不能与pool_id同时出现。

pool_id

String

专属资源池ID。可在ModelArts管理控制台,单击左侧“专属资源池”,在专属资源池列表中查看资源池ID。创建专属池作业时,pool_id必选,且不能与spec_id同时出现。

engine_id

Long

训练作业选择的引擎规格ID,默认为“1”。填入model_id后app_url/boot_file_url和engine_id无需填写。请从查询作业引擎规格接口获取引擎规格ID。

model_id

Long

训练作业的内置模型ID。请通过查询预置算法接口获取model_id。填入model_id后app_url/boot_file_url和engine_id无需填写。

train_url

String

训练作业的输出文件OBS路径URL,默认为空,如:“/usr/train/”

log_url

String

训练作业的日志OBS输出路径URL,默认为空。如:“/usr/log/”

user_image_url

String

自定义镜像训练作业的自定义镜像的SWR-URL。如:“100.125.5.235:20202/jobmng/custom-cpu-base:1.0”

user_command

String

自定义镜像训练作业的自定义镜像的容器的启动命令。形式为: “bash /home/work/run_train.sh python /home/work/user-job-dir/app/train.py {python_file_parameter}”

create_version

Boolean

创建训练作业的同时是否创建版本。

  • true:默认值,创建训练作业的同时创建版本。
  • false:仅创建训练作业,不创建版本。

volumes

JSON Array

训练作业可使用的存储卷。具体说明请参见表5

表4 data_source属性列表

参数

是否必选

参数类型

说明

dataset_id

String

训练作业的数据集ID。应与dataset_version_id同时出现,但不可与data_url同时出现。

dataset_version

String

训练作业的数据集版本ID。应与dataset_id同时出现,但不可与data_url同时出现。

type

String

数据集类型。可选值:“obs”“dataset”。obs与dataset不可同时出现。

data_url

String

OBS的桶路径,不可与dataset_id/dataset_version同时出现。

表5 volumes属性列表

参数

是否必选

参数类型

说明

nfs

Object

共享文件系统类型的存储卷。仅支持运行于已联通共享文件系统网络的资源池的训练作业。具体说明请参见表6

host_path

Object

主机文件系统类型的存储卷。仅支持运行于专属资源池中的训练作业。具体说明请参见表7

表6 nfs属性列表

参数

是否必选

参数类型

说明

id

String

SFS Turbo 文件系统 ID。

src_path

String

SFS Turbo 文件系统地址。

dest_path

String

训练作业的本地路径。

read_only

Boolean

dest_path 是否为只读权限,默认为读写权限。

  • true:只读权限
  • false:默认值,读写权限
表7 host_path属性列表

参数

是否必选

参数类型

说明

src_path

String

宿主机的本地路径。

dest_path

String

训练作业的本地路径。

read_only

Boolean

dest_path 是否为只读权限,默认为读写权限。

  • true:只读权限
  • false:默认值,读写权限
表8 parameter属性列表

参数

是否必选

参数类型

说明

label

String

参数名称。

value

String

参数值。

响应消息

响应参数如表9所示。

表9 响应参数

参数

参数类型

说明

is_success

Boolean

请求是否成功。

error_message

String

调用失败时的错误信息。

调用成功时无此字段。

error_code

String

调用失败时的错误码,具体请参见错误码

调用成功时无此字段。

job_id

Long

训练作业的ID。

job_name

String

训练作业的名称

status

Int

训练作业的运行状态,详细作业状态列表请查看作业状态参考。

create_time

Long

训练作业的创建时间,时间戳格式。

version_id

Long

训练作业的版本ID。

resource_id

String

训练作业的计费资源ID。

version_name

String

训练作业的版本名称。

请求示例

  • 如下以创建名为“TestModelArtsJob”,描述为“This is a ModelArts job”为例。
    POST    https://endpoint/v1/{project_id}/training-jobs
    {
        "job_name": "TestModelArtsJob",
        "job_desc": "This is a ModelArts job",
        "workspace_id": "af261af2218841ec960b01ab3cf1a5fa",
        "config": {
            "worker_server_num": 1,
            "app_url": "/usr/app/",
            "boot_file_url": "/usr/app/boot.py",
            "parameter": [
                {
                    "label": "learning_rate",
                    "value": "0.01"
                },
                {
                    "label": "batch_size",
                    "value": "32"
                }
            ],
            "dataset_id": "38277e62-9e59-48f4-8d89-c8cf41622c24",
            "dataset_version_id": "2ff0d6ba-c480-45ae-be41-09a8369bfc90",
            "spec_id": 1,
            "engine_id": 1,
            "train_url": "/usr/train/",
            "log_url": "/usr/log/",
            "model_id": 1,
            "pool_id": "testpool"
        }
    }
  • 如下以创建名为“TestModelArtsJob2”,创建自定义镜像训练。
    POST    https://endpoint/v1/{project_id}/training-jobs
    {
        "job_name": "TestModelArtsJob2",
        "job_desc": "This is a ModelArts job",
        "workspace_id": "af261af2218841ec960b01ab3cf1a5fa",
        "config": {
            "worker_server_num": 1,
            "data_url": "/usr/data/",
            "app_url": "/usr/app/",
            "boot_file_url": "/usr/app/boot.py",
            "parameter": [
                {
                    "label": "CUSTOM_PARAM1",
                    "value": "1"
                }
            ],
            "spec_id": 1,
            "user_command": "bash -x /home/work/run_train.sh python /home/work/user-job-dir/app/mnist/mnist_softmax.py --data_url /home/work/user-job-dir/app/mnist_data",
            "user_image_url": "100.125.5.235:20202/jobmng/custom-cpu-base:1.0",
            "train_url": "/usr/train/",
            "log_url": "/usr/log/",
            "model_id": 1,
            "pool_id": "testpool",
            "engine_id": 1 
        }
    }
  • 如下以创建名为“TestModelArtsJob3”,创建使用存储卷的训练。
    POST    https://endpoint/v1/{project_id}/training-jobs
    {
        "job_name": "TestModelArtsJob3",
        "job_desc": "This is a ModelArts job",
        "workspace_id": "af261af2218841ec960b01ab3cf1a5fa",
        "config": {
            "worker_server_num": 1,
            "app_url": "/usr/app/",
            "boot_file_url": "/usr/app/boot.py",
            "parameter": [
                {
                    "label": "learning_rate",
                    "value": "0.01"
                },
                {
                    "label": "batch_size",
                    "value": "32"
                }
            ],
            "dataset_id": "38277e62-9e59-48f4-8d89-c8cf41622c24",
            "dataset_version_id": "2ff0d6ba-c480-45ae-be41-09a8369bfc90",
            "spec_id": 1,
            "engine_id": 1,
            "train_url": "/usr/train/",
            "log_url": "/usr/log/",
            "model_id": 1,
            "pool_id": "testpool",
            "volumes": [
                {
                    "nfs": {
                        "id": "43b37236-9afa-4855-8174-32254b9562e7",
                        "src_path": "192.168.8.150:/",
                        "dest_path": "/home/work/nas",
                        "read_only": false
                    }
                },
                {
                    "host_path": {
                        "src_path": "/root/work",
                        "dest_path": "/home/mind",
                        "read_only": false
                    }
                }
            ]
        }
    }

响应示例

  • 成功响应示例
    {
        "is_success": true,
        "job_id": "10",
        "job_name": "TestModelArtsJob",
        "status": "1",
        "create_time": "1524189990635",
        "version_id": "10",
        "version_name": "V0001",
        "resource_id": "jobafd08896"
    }
  • 失败响应示例
    {
        "is_success": false,
        "error_message": "Job name:TestModelArtsJob is existed",
        "error_code": "ModelArts.0103"
    }

状态码

状态码请参见状态码