创建评测任务
更新时间:2026-11-04
创建评测任务 CreateEmbodiedEval
调用方式、签名、公共头域、错误返回格式和数据结构见总览文档《百舸具身评测 OpenAPI 参考》。
接口描述
创建一个评测任务:用一个模型服务配置,跑 1~20 个评测集(子集)。创建成功只表示任务已提交,任务会先排队再运行,用 DescribeEmbodiedEval 查进度。
权限说明
调用人需要是目标队列的成员,或者是该资源池的管理员。只有只读权限的用户不能创建。
请求结构
Plain Text
1POST /?action=CreateEmbodiedEval&clientToken={clientToken}
2Host: aihc.bj.baidubce.com
3Authorization: {authorization}
4version: v2
5Content-Type: application/json
请求头域
除公共头域外,无其它特殊头域。
请求参数
| 参数名称 | 类型 | 是否必须 | 参数位置 | 说明 |
|---|---|---|---|---|
clientToken |
String | 否 | Query参数 | 幂等键,长度不超过 64 字节,规则见下文 |
name |
String | 是 | RequestBody参数 | 任务名称,不超过 64 字节 |
resourcePoolId |
String | 是 | RequestBody参数 | 资源池 ID |
queueId |
String | 是 | RequestBody参数 | 队列 ID |
resourcePoolType |
String | 否 | RequestBody参数 | 资源池类型。使用全托管(Serverless)资源池时填 serverless,否则不传 |
priority |
String | 否 | RequestBody参数 | 任务优先级:high / normal / low,默认 normal |
visibleScope |
Integer | 否 | RequestBody参数 | 可见范围:1 队列内成员可见,0 仅创建人可见。默认 1 |
dataSources |
DataSource[] | 否 | RequestBody参数 | 挂载到任务里的数据源,用于读取自己的模型权重。目前只支持 bos 类型 |
modelConfig |
ModelConfig | 是 | RequestBody参数 | 模型服务配置 |
benchmarkConfigs |
BenchmarkConfig[] | 是 | RequestBody参数 | 评测集配置,1~20 个 |
clientToken 的使用规则:
- 每次创建生成一个新的值(如 UUID),只有重试同一次创建时才传回同一个值。不传时不做幂等,每次调用都新建任务。
- 同一账号下,同一个
clientToken只会创建一个任务:重试时返回原来的evalId;参数和第一次不一样时返回 403IdempotentParameterMismatch。 clientToken没有有效期,只有对应任务被删除或创建失败后才能再用。不要给所有请求写死同一个值,否则从第二个任务起都会返回第一个任务的evalId或报参数冲突。
响应头域
除公共头域外,无其它特殊头域。
响应参数
| 参数名称 | 类型 | 说明 |
|---|---|---|
requestId |
String | 请求 ID |
evalId |
String | 评测任务 ID,格式为 em- 加 12 位字符 |
请求示例
用平台预置的 OpenVLA 模型跑 LIBERO 的 libero_spatial 子集,每个任务 10 个 episode。把下面的内容保存为 create.json,资源池、队列换成自己的;GPU 卡型要和队列里的卡一致,且在 DescribeEmbodiedEvalModel 返回的 minHardware.acceleratorTypes 里。
JSON
1{
2 "name": "openvla-libero-spatial",
3 "resourcePoolId": "cce-xxxxxxxx",
4 "queueId": "default",
5 "priority": "normal",
6 "modelConfig": {
7 "modelType": "public",
8 "modelName": "openvla_7b",
9 "replicas": 1,
10 "maxBatchSize": 1,
11 "resources": [
12 {"name": "baidu.com/a800_80g_cgpu", "quantity": 1},
13 {"name": "cpu", "quantity": 8},
14 {"name": "memory", "quantity": 32}
15 ]
16 },
17 "benchmarkConfigs": [
18 {
19 "name": "libero",
20 "subBench": "libero_spatial",
21 "resources": [
22 {"name": "baidu.com/a800_80g_cgpu", "quantity": 1},
23 {"name": "cpu", "quantity": 8},
24 {"name": "memory", "quantity": 32}
25 ],
26 "parallelShards": 1,
27 "episodesPerTask": 10,
28 "recordVideo": true,
29 "modelOverride": {"chunkSize": 1}
30 }
31 ]
32}
Bash
1python3 call_eval.py POST CreateEmbodiedEval clientToken=$(uuidgen) --body create.json
响应示例
JSON
1{
2 "requestId": "1f2e3d4c-5b6a-4789-8a9b-0c1d2e3f4a5b",
3 "evalId": "em-6o004i76d88e"
4}
注意事项
- 最省事的写法是先调
DescribeEmbodiedEvalModel取defaultModelConfig、调DescribeEmbodiedEvalBenchmarks取defaultBenchmarkConfig,再填上资源池、队列和名称。 modelConfig.replicas必须是benchmarkConfigs个数的整数倍,模型服务副本会平均分给各评测集。- 每个评测集的
parallelShards不能超过episodesPerTask。部分评测集按 GPU 卡数分片(如 RoboDojo 要求parallelShards等于该评测集的 GPU 卡数,且 CPU、内存、共享内存不低于单分片最低配置乘以分片数),不满足时返回 400 并给出应填的值。 - 同一个评测集可以出现多次,每次用不同的
subBench。 - 跑哪些任务只由
subBench决定,不要在params里填suite、task_name、tasks这类由子集决定的键。 - 使用自己的权重(
customCKPT)时,先在dataSources里挂载 BOS 路径,再把ckptPath写成挂载点下的路径,见 ModelConfig。 - 使用自己的模型服务镜像(
customImage)时,镜像必须满足总览文档《百舸具身评测 OpenAPI 参考》附录「自定义镜像要求」,否则任务会失败或产出错误分数。 - 以下挂载点由平台使用,
dataSources[].mountPath不能用:/mnt/aihc-eval及其下的子路径、/mnt/aihc-eval-result。 - 请求体不是合法 JSON、为空,或字段类型不对(如
params不是对象)时返回 400。
错误码
| HTTP 状态码 | code | 场景 |
|---|---|---|
| 400 | InvalidParameter |
必填字段缺失、取值超出范围、模型或评测集不存在、模型与评测集不兼容、卡型不支持、挂载点被占用等,原因见 message |
| 403 | Forbidden |
没有该队列的操作权限 |
| 403 | IdempotentParameterMismatch |
同一个 clientToken 带了不同参数 |
评价此篇文章
