
# 创建训练作业参数
#### 功能介绍
创建训练作业参数。
#### URI
POST /v1/{project_id}/training-job-configs
参数说明如[表1]所示。
 表1参数说明 
| 参数         | 是否必选 | 参数类型   | 说明                                                                                               |
|:---|:---|:---|:---|
| project_id | 是    | String | 用户项目ID。获取方法请参见[获取项目ID和名称](https://support.huaweicloud.com/api-modelarts/modelarts_03_0147.html)。 |
   
#### 请求消息
请求参数如[表2]所示。
 表2参数说明 
| 参数                 | 是否必选 | 参数类型            | 说明                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| config_name        | 是    | String          | 训练作业参数名称。限制为1-64位只含数字、字母、下划线或者中划线的名称。                                                                                                                                                                                                         |
| config_desc        | 否    | String          | 对训练作业的描述，默认为空，字符串的长度限制为\[0，256\]。                                                                                                                                                                                                             |
| worker_server_num  | 是    | Integer         | 训练作业worker的个数，最大值请从[查询作业资源规格](https://support.huaweicloud.com/api-modelarts/modelarts_03_0072.html)接口获取。                                                                                                                                      |
| 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无需填写。                                                                                                                                      |
| model_id           | 是    | Long            | 训练作业的模型ID。请通过[查询预置算法](https://support.huaweicloud.com/api-modelarts/modelarts_03_0056.html)接口获取model_id。填入model_id后app_url/boot_file_url和engine_id不需填写。                                                                                       |
| parameter          | 否    | Array\<Object\> | 训练作业的运行参数，为"label-value"格式，该样例请参考请求示例；当为自定义镜像训练作业的时候，此参数为容器环境变量。详细请参见[表4]                                                                                                                  |
| spec_id            | 是    | Long            | 训练作业选择的资源规格ID。请从[查询作业资源规格](https://support.huaweicloud.com/api-modelarts/modelarts_03_0072.html)接口获取资源规格ID。                                                                                                                                   |
| 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        | 否    | JSON Array      | 训练作业使用的数据集。不可与data_url或dataset_id/dataset_version_id同时使用。详情参数请见[表3]。                                                                                                                      |
| engine_id          | 是    | Long            | 训练作业选择的引擎ID，默认为"1"。填入model_id后app_url/boot_file_url和engine_id无需填写。请从[查询作业引擎规格](https://support.huaweicloud.com/api-modelarts/modelarts_03_0073.html)接口获取引擎规格ID。                                                                               |
| train_url          | 否    | String          | 训练作业的输出文件OBS路径URL，默认为空，如"/usr/train/"。                                                                                                                                                                                                        |
| log_url            | 否    | String          | 训练作业的日志OBS输出路径URL，默认为空。如："/usr/train/"。                                                                                                                                                                                                       |
| 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}"。需要调用通过启动脚本run_train.sh进行变量的初始化，如AK/SK。run_train.sh后跟python是保证python文件能在已经初始化的变量环境下执行，即使用run_train.sh去启动python。 |
   
 表3data_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同时出现。            |
   
 表4parameter属性列表 
| 参数    | 是否必选 | 参数类型   | 说明    |
|:---|:---|:---|:---|
| label | 否    | String | 参数名称。 |
| value | 否    | String | 参数值。  |
   
#### 响应消息
响应参数如[表5]所示。
 表5响应参数 
| 参数            | 参数类型    | 说明                                                                                                                                                    |
|:---|:---|:---|
| is_success    | Boolean | 请求是否成功。                                                                                                                                               |
| error_message | String  | 调用失败时的错误信息。 调用成功时无此字段。                                                                                |
| error_code    | String  | 调用失败时的错误码，具体请参见[错误码](https://support.huaweicloud.com/api-modelarts/modelarts_03_0095.html)。 调用成功时无此字段。 |
   
#### 请求示例
如下以创建名为"testConfig"，描述为"This is config"的训练作业参数为例。
```
POST    https://endpoint/v1/{project_id}/training-job-configs
{
    "config_name": "testConfig",
    "config_desc": "This is 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"
        }
    ],
    "spec_id": 1,
    "dataset_id": "38277e62-9e59-48f4-8d89-c8cf41622c24",
    "dataset_version_id": "2ff0d6ba-c480-45ae-be41-09a8369bfc90",
    "engine_id": 1,
    "train_url": "/usr/train/",
    "log_url": "/usr/log/",
    "model_id": 1
}
```
#### 响应示例
- 成功响应示例
  ```
  {
      "is_success": true
  }
  ```
  
- 失败响应示例
  ```
  {
      "is_success": false,
      "error_message": "Error string",
      "error_code": "ModelArts.0105"
  }
  ```
  
 
#### 状态码
状态码请参见[状态码](https://support.huaweicloud.com/api-modelarts/modelarts_03_0094.html)。
