创建训练任务
更新时间:2026-09-18
描述
创建一个训练任务到集群中运行。可以指定数据源配置、启动命令以及任务运行的每个节点的计算资源配置等信息。
请求结构
Bash
1POST ?action=CreateJob&resourcePoolId=xxxx&queueID=xxxx
2Host:aihc.bj.baidubce.com
3Authorization:authorization string
4ContentType: application/json
5X-API-Version: v2
请求头域
除公共头域外,无其它特殊头域。
请求参数
| 参数名称 | 类型 | 是否必须 | 参数位置 | 说明 |
|---|---|---|---|---|
| resourcePoolId | String | 是 | Query参数 | 自运维资源池传递资源池唯一标识(示例:cce-1uji3ib5),托管资源池传递 aihc-serverless |
| queueID | String | 是 | Query参数 | 训练任务所属队列,自运维资源池须填入队列名称,托管资源池须填入队列Id |
| name | String | 是 | Body参数 | 名称 |
| jobType | String | 否 | Body参数 | 分布式框架类型,支持PyTorchJob,TFJob,MPIJob,RayJob。默认值:PyTorchJob |
| jobSpec | JobSpec /Map[string, JobSpec] | 是 | Body参数 | 训练任务配置,格式由 jobType 决定: ① 若 jobType=PyTorchJob:传递参数为单个JobSpec 对象; ② 若 jobType=TFJob:传递Map结构(Key 可选值:Chief/Worker/PS/Evaluator,Value 为对应角色的 JobSpec 配置);③ 若 jobType=RayJob:传递Map结构(Key必须包含Head,Value 为对应角色的 JobSpec 配置) |
| command | String | 是 | Body参数 | 启动命令 |
| labels | List<Label> | 否 | Body参数 | 训练任务标签,默认包含: 1. aijob.cce.baidubce.com/create-from-aihcp-api: "true" 2. aijob.cce.baidubce.com/ai-user-id: {userId} 3. aijob.cce.baidubce.com/ai-user-name: {userName} |
| priority | String | 否 | Body参数 | 调度优先级,支持高(high)、中(normal)、低(low),默认值:normal |
| datasources | List<Datasource> | 否 | Body参数 | 数据源配置,支持以下类型: • pfs:并行文件存储,填 name(pfsId)和 mountPath• hostpath:宿主机路径,填 sourcePath(宿主机路径)和 mountPath• bos:对象存储,填 sourcePath(桶名)和 mountPath• cfs:CFS 文件存储,填 sourcePath、mountPath,options 中须填 cfsInstanceId 和 cfsMountPoint• rapidfs:高速并行文件存储。 • dataset:平台数据集,填 id(数据集 ID)和 mountPath,options 中可填 datasetVersion• public_dataset:公开数据集,填 id 和 mountPath,服务端强制只读。详见数据源挂载示例 |
| enableBccl | Boolean | 否 | Body参数 | 是否开启BCCL自动注入,默认值为关闭。当前开启条件: 1.实例数大于等于 2 2.每个实例占整机 8 卡 3.任务开启 RDMA 4.卡型号为A800/HPAS |
| faultTolerance | Boolean | 否 | Body参数 | 是否开启容错, 默认值为 关闭,目前PyTorchJob支持容错 |
| faultToleranceArgs | String | 否 | Body | 容错配置字符串,由若干 --flag=value 用空格拼接而成。约束条件: • 与 faultToleranceConfig 互斥,二者只能二选一;• 仅支持 PyTorchJob。 支持的 flag: • --enable-replace(bool):开启 replace 容错(弹性 Agent 替换故障 worker)。• --enable-hang-detection(bool):开启 hang(卡死)检测;置为 true 后,下列三个参数方可生效。• --hang-detection-log-timeout-minutes(int):所有 worker 在该时长内无日志输出即判定卡死。• --hang-detection-startup-toleration-minutes(int):任务启动后的免检窗口分钟数,规避初始化/数据加载阶段误判。• --hang-detection-stack-timeout-minutes(int):日志仍在输出但进程堆栈在该时长内无变化时,判定为「假活」卡死。• --max-num-of-unconditional-retry(int,≤ 3):终态失败时无条件重试次数上限。• --custom-log-patterns(string,可重复):自定义容错日志 pattern,worker 日志命中任一即触发容错,最终以 JSON 数组写入 annotation。示例: "--enable-replace=true --enable-hang-detection=true --hang-detection-log-timeout-minutes=7 --hang-detection-startup-toleration-minutes=15 --hang-detection-stack-timeout-minutes=3 --max-num-of-unconditional-retry=2 --custom-log-patterns=timeout1 --custom-log-patterns=timeout2" |
| tensorboardConfig | TensorboardConfig | 否 | Body参数 | tensorboard相关配置,RayJob暂不支持tensorboard功能 |
| alertConfig | AlertConfig | 否 | Body参数 | 告警相关配置,PyTorchJob支持所有告警,TFJob支持任务状态相关告警,MPIJob暂不支持告警,RayJob支持任务状态相关告警 |
| retentionPeriod | String | 否 | Body参数 | 任务运行完成后的保留时间,参数格式参考:1m、1h、1d,分别代表1分钟、1小时、1天,RayJob暂不支持任务保留时间 |
| advancedSettings | AdvancedSettings | 否 | Body参数 | RayJob 高级配置(可选),用于控制运行时环境和 submitter 重试策略 |
| visibleScope | Integer | 否 | Body参数 | 训练任务可见范围,参数为1代表队列内可见,为0代表创建人可见,默认队列内可见 |
| portConfigs | PortConfigs | 否 | Body参数 | 自定义监控监听端口配置,当前仅支持 usage=Metrics,且仅允许配置 1 组端口。instanceId、agentId 由服务端自动查询集群绑定的监控实例并填充,无需传入(传入也会被忽略)。要求集群/队列已绑定监控实例,bhcmp 集群不支持该配置 |
数据源挂载示例
pfs(并行文件存储)
JSON
1{
2 "type": "pfs",
3 "name": "pfs-xxx",
4 "mountPath": "/mnt/cluster"
5}
pfsl3(并行文件存储)
JSON
1{
2 "type": "pfsl3",
3 "options": {
4 "pfsL3InstanceId": "pfs-bjiTxxSqQ",
5 "pfsL3MountPoint": "pfs-bjiTxxSqQ.lb-xxxzie99.pfs.bj.baidubce.com",
6 "readOnly": false
7 },
8 "sourcePath": "/",
9 "mountPath": "/mnt/pfs"
10}
hostpath(本地盘)
JSON
1{
2 "type": "hostpath",
3 "name": "hostpath-1",
4 "sourcePath": "/a",
5 "mountPath": "/b",
6 "options": {
7 "readOnly": true
8 }
9}
bos(对象存储)
sourcePath 填写 BOS 桶名,不需要填写 name。
JSON
1{
2 "type": "bos",
3 "sourcePath": "xxx-test-bos-bucket",
4 "mountPath": "/test",
5 "options": {
6 "readOnly": false
7 }
8}
cfs(CFS 文件存储)
options 中的 cfsInstanceId 和 cfsMountPoint 为必填项。
JSON
1{
2 "type": "cfs",
3 "name": "",
4 "mountPath": "/data",
5 "sourcePath": "/data",
6 "options": {
7 "cfsInstanceId": "cfs-xxx",
8 "cfsMountPoint": "cfs-xxx.lb-xxx.cfs.xx.baidubce.com"
9 }
10}
dataset(平台数据集)
id 填写数据集 ID,options.datasetVersion 不填则取最新版本。
JSON
1{
2 "type": "dataset",
3 "id": "ds-85uR2lP",
4 "sourcePath": "/testv2",
5 "mountPath": "/ddd",
6 "options": {
7 "datasetVersion": "2"
8 }
9}
public_dataset(公开数据集)
id 必填,mountPath 可选(不填则用数据集默认挂载路径),服务端强制只读。
JSON
1{
2 "type": "public_dataset",
3 "id": "ds-xxxxxx",
4 "mountPath": "/opt/aihc/models",
5 "options": {
6 "datasetVersion": "v1"
7 }
8}
返回头域
除公共头域,无其它特殊头域。
返回参数
| 参数名称 | 类型 | 说明 |
|---|---|---|
| requestId | String | 请求ID |
| jobId | String | 任务id |
| jobName | String | 任务名称 |
请求示例
JSON
1{
2 "name": "api-0513-2",
3 "queue": "default",
4 "jobType": "PyTorchJob",
5 "command": "sleep 1d",
6 "jobSpec": {
7 "replicas": 1,
8 "image": "registry.baidubce.com/aihc-aiak/aiak-megatron:ubuntu20.04-cu11.8-torch1.14.0-py38_v1.2.7.12_release",
9 "resources": [
10 ],
11 "envs": [
12 {
13 "name": "NCCL_DEBUG",
14 "value": "DEBUG"
15 },
16 {
17 "name": "NCCL_IB_DISABLE",
18 "value": "0"
19 }
20 ],
21 "enableRDMA": true
22 },
23 "labels": [
24 ],
25 "datasources": [
26 {
27 "type": "pfs",
28 "name": "pfs-pxE6jz",
29 "mountPath": "/mnt/cluster"
30 }
31 ]
32}
返回示例
JSON
1{
2 "requestId": "679dfe4a-7df0-4030-be01-ae4f87eeb458",
3 "jobId": "job-uVuy2Onhe4FS",
4 "jobName": "api-0513-2"
5}
评价此篇文章
