数据结构
ModelConfig
模型服务配置,被如下接口引用:创建评测任务(请求)、查询评测任务详情(响应)、查询模型的默认配置(响应 defaultModelConfig)
平台按此配置启动 replicas 个推理服务副本,评测集通过它们调用模型;modelType=selfHosted 时平台不启动副本,评测集直连 selfHosted.endpoints 里的地址。
| 参数名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| modelType | String | 是 | 模型来源:public 平台预置模型和权重;customCKPT 平台预置模型 + 自己的权重;customImage 自己的推理服务镜像;selfHosted 自建推理服务,平台不拉起模型服务 |
| modelName | String | 条件必须 | public、customCKPT 必填,取自查询可评测的模型及其评测集;customImage 不能填;selfHosted 不填或填 selfHosted |
| ckptPath | String | 条件必须 | 模型权重路径,对所有评测集生效;某个评测集的 modelOverride.ckptPath 非空时以后者为准。customCKPT 时它和每个评测集的 modelOverride.ckptPath 至少要填一个。以 / 开头表示容器内路径,必须在 dataSources 的某个 mountPath 下;否则按 Hugging Face 仓库名处理(如 openvla/openvla-7b) |
| replicas | Integer | 条件必须 | 推理服务副本数,大于 0,且是 benchmarkConfigs 个数的整数倍;selfHosted 不能传,其他类型必填 |
| maxBatchSize | Integer | 条件必须 | 单副本最大批大小,大于 0;selfHosted 不能传,其他类型必填 |
| resources | List<Resource> | 条件必须 | 单副本的资源。GPU 卡型必须在模型支持的卡型内(查询模型的默认配置返回的 minHardware.acceleratorTypes);selfHosted 不能传,其他类型必填 |
| customImage | CustomImage | 条件必须 | modelType=customImage 时必填,其他类型不能传 |
| selfHosted | SelfHosted | 条件必须 | modelType=selfHosted 时必填,其他类型不能传 |
CustomImage
自己的推理服务镜像,被如下接口引用:创建评测任务(请求)、查询评测任务详情(响应)
镜像必须满足总览文档《百舸具身评测 OpenAPI 参考》附录「自定义镜像要求」。
| 参数名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| image | String | 是 | 镜像地址,包含仓库和 tag,不超过 512 字节。填写 imageConfig 时镜像必须在 ccr-registry.baidubce.com 上 |
| command | String | 是 | 启动命令,不超过 4096 字节。按空格切分后直接执行(不经过 shell),不能写死监听端口 |
| envs | List<EnvVar> | 否 | 环境变量,最多 32 个,单个 value 不超过 1024 字节,全部合计不超过 8192 字节 |
| imageConfig | ImageConfig | 否 | 私有镜像仓库凭据 |
- 查询评测任务详情中自定义镜像任务不返回
modelConfig.modelName。
EnvVar
自定义镜像的环境变量,被如下接口引用:创建评测任务(请求)、查询评测任务详情(响应)
| 参数名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| name | String | 是 | 变量名,只能包含字母、数字、-、_、.,不能以数字开头,不能重名 |
| value | String | 是 | 变量值,不超过 1024 字节 |
- 以下名称由平台使用,不能填写(不区分大小写):
EVAL_SPEC、EVAL_SPEC_VERSION、EVAL_RESULT_FILE、EVAL_PLATFORM_MOUNT、EVAL_SRC_MOUNT、EVAL_RESULT_MOUNT、CUDA_VISIBLE_DEVICES、PYTHONPATH、MS_PORT、HTTP_PROXY、HTTPS_PROXY、NO_PROXY、ALL_PROXY,以及以RAY_开头的名称。 envs的值在详情里原样返回,不要在envs里放密码、密钥。镜像仓库密码只放在imageConfig.password。
ImageConfig
私有镜像仓库凭据,被如下接口引用:创建评测任务(请求)、查询评测任务详情(响应)
| 参数名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| username | String | 是 | 镜像仓库用户名,不超过 256 字节 |
| password | String | 是 | 镜像仓库密码,不超过 256 字节,不能是 ****** |
- 两项同时填或同时不填。
- 查询评测任务详情中
password固定返回******。拿详情重新创建任务时要重新填写真实密码,否则返回 400。
SelfHosted
自建推理服务配置,被如下接口引用:创建评测任务(请求)、查询评测任务详情(响应)
平台不拉起模型服务,评测节点直连你提供的地址。
| 参数名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| endpoints | List<SelfHostedEndpoint> | 是 | 推理服务地址。当前只支持 1 个,数量不对返回 400 endpoints count must be in [1, 1]。用数组是为了以后放开数量时不改协议 |
SelfHostedEndpoint
一个自建推理服务地址,被如下接口引用:创建评测任务(请求)、查询评测任务详情(响应)
| 参数名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| url | String | 是 | ws:// 或 wss:// 开头,不超过 512 字节,不能带 userinfo 和 #fragment。host 填 IP 或公共顶级域下的域名;不接受 localhost、回环、link-local(含 169.254.169.254)、未指定、组播、广播地址,以及 .local、.svc、单段名这类集群内部名;私网 IP 可以用。私有 DNS 区里的服务请直接填 IP |
| serverTimeoutSec | Integer | 否 | 单帧推理超时,1~900 秒,不传或 0 按 60 |
| attachTimeoutSec | Integer | 否 | 等待服务就绪的总时长,30~900 秒,不传或 0 按 300 |
| bearerToken | String | 否 | 评测节点建连时放进 Authorization: Bearer <token>。16~4096 字节,字符集是 RFC 6750 b64token,不要带 Bearer 前缀。只写不读 |
| hasBearerToken | Boolean | - | 只出现在查询评测任务详情的响应中,表示创建时是否传了 bearerToken |
- 查询评测任务详情中
url的 query 整段换成?***,两个超时返回生效值,不返回bearerToken。拿详情重新创建任务时,hasBearerToken为true要重新传bearerToken,url带?***要重新传完整地址。 - 带
bearerToken时,url的 query 不能再带token、access_token、auth、key这类凭据参数;自定义评测集不支持鉴权头,返回 400benchmarkConfs[i] does not support bearerToken。
BenchmarkConfig
一个评测集(子集)的配置,被如下接口引用:创建评测任务(请求)、查询评测任务详情(响应)、查询评测集的默认配置(响应 defaultBenchmarkConfig)
| 参数名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| name | String | 是 | 评测集名称,如 libero |
| subBench | String | 是 | 子集名称,如 libero_spatial,必须属于该评测集,且与模型兼容(source=public 时以查询可评测的模型及其评测集为准) |
| resources | List<Resource> | 是 | 评测集仿真环境的资源,所有分片共用。GPU 卡型必须在评测集支持的卡型内;GPU 为 0 只适用于 minHardware.acceleratorCount 为 0 的评测集 |
| parallelShards | Integer | 是 | 并行分片数,大于 0,不超过 episodesPerTask。分片越多跑得越快,需要的 CPU、内存也越多 |
| episodesPerTask | Integer | 是 | 每个任务(task)跑的 episode 数,大于 0,不超过 maxEpisodesPerTask |
| evalType | String | 否 | 评测方式:sync 同步(默认)、realtime 实时 |
| params | Object | 否 | 评测集参数,可填的键见查询评测集的默认配置返回的 paramsSchema。没填的键使用默认值。不要填 suite、task_name、tasks 等由子集决定的键 |
| recordVideo | Boolean | 否 | 是否录制每个 episode 的回放视频,默认 false。开启后可用查询回放视频播放地址接口播放 |
| modelOverride | ModelOverride | 条件必须 | 本评测集对模型的参数;modelType=selfHosted 时不传或全空,其他类型必填 |
- 查询评测任务详情中,
params、modelOverride.extraArgs是创建时传入的值,没传或为空对象时可能不返回该字段,按空对象处理即可。
ModelOverride
评测集级的模型参数,被如下接口引用:创建评测任务(请求)、查询评测任务详情(响应)
| 参数名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| chunkSize | Integer | 是 | 模型每次推理输出的动作步数,大于 0,建议不超过 chunkSizeLimit |
| ckptPath | String | 否 | 本评测集使用的权重路径,规则同 ModelConfig.ckptPath。不填时依次使用 modelConfig.ckptPath、平台推荐权重 |
| extraArgs | Object | 否 | 模型推理参数,可填的键见查询模型的默认配置返回的 extraArgsSchema。没填的键使用平台推荐值 |
DataSource
挂载到评测任务里的数据源,被如下接口引用:创建评测任务(请求)、查询评测任务详情(响应)
目前只支持 BOS,用于读取自己的模型权重。
| 参数名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| type | String | 是 | 数据源类型,目前只能是 bos |
| sourcePath | String | 是 | BOS 路径,格式 <bucket>/<prefix>,如 my-bucket/ckpt/openvla-ft |
| mountPath | String | 是 | 容器内的挂载路径,以 / 开头,每一段只能包含字母、数字、_、-,如 /mnt/ckpt |
| name | String | 否 | 数据源名称 |
| id | String | 否 | 数据源 ID |
| options | Object | 否 | 挂载选项。BOS 可以填 {"readOnly": true} |
- 当前账号需要对该 BOS 路径有读权限,建议桶与任务在同一地域。
/mnt/aihc-eval及其下的子路径、/mnt/aihc-eval-result由平台使用,不能作为mountPath。- 查询评测任务详情只返回创建时传入的数据源,不包含平台自动挂载的数据源。
Resource
资源配额,被如下接口引用:创建评测任务(请求)、查询评测任务列表(响应)、查询评测任务详情(响应)
| 参数名称 | 类型 | 必选 | 说明 |
|---|---|---|---|
| name | String | 是 | 资源名称:cpu(核)、memory(GB)、sharedMemory(共享内存,GB,不填时为 10)、GPU 卡型(如 baidu.com/a800_80g_cgpu、baidu.com/l20_cgpu) |
| quantity | Number | 是 | 数量,大于 0。cpu、memory、sharedMemory 保留一位小数 |
- GPU 卡型需要与队列里实际的卡一致。各模型、评测集支持的卡型见元数据接口返回的
minHardware.acceleratorTypes,一次评测里模型和评测集使用同一种卡。
EvalSummary
评测任务摘要,被如下接口引用:查询评测任务列表(响应 evals)
| 参数名称 | 类型 | 说明 |
|---|---|---|
| evalId | String | 评测任务 ID |
| name | String | 任务名称 |
| status | String | 任务状态,见任务状态 |
| resourcePoolId / queueId / resourcePoolType | String | 资源池、队列、资源池类型 |
| priority | String | 优先级 |
| visibleScope | Integer | 可见范围 |
| creator | String | 创建人用户名 |
| modelName / modelDisplayName | String | 模型名称和展示名称;自定义镜像任务为 custom |
| benchmarks | List | 评测集和子集,每项 {name, displayName, subBench} |
| resources | List<Resource> | 整个任务申请的资源合计 |
| runTimeSeconds | Integer | 累计运行秒数 |
| createdAt / finishedAt | String | 创建时间、结束时间 |
| region | String | 地域 |
任务状态
评测任务的状态取值,被如下接口引用:查询评测任务列表(请求 status 过滤、响应 evals[].status)、查询评测任务详情(响应 status)
| 状态 | 是否终态 | 说明 |
|---|---|---|
| Created | 否 | 已创建,正在提交 |
| ToBeSubmitted | 否 | 等待提交 |
| Scheduled | 否 | 已提交,排队等待资源 |
| Running | 否 | 运行中 |
| Scaling | 否 | 扩缩容中 |
| Restarting | 否 | 重启中 |
| Preempted | 否 | 被高优先级任务抢占,等待重新调度 |
| Stopping | 否 | 停止中 |
| Abnormal | 否 | 运行异常,或底层任务已不存在 |
| Unknown | 否 | 状态未知,稍后再查 |
| Succeeded | 是 | 运行成功,可以查询结果 |
| Failed | 是 | 运行失败 |
| ManualTermination | 是 | 已手动停止 |
| CreateFailed | 是 | 创建失败,只在详情中出现,不出现在列表中 |
EvalResult
评测结果,被如下接口引用:查询评测结果(响应 result)
字段名为下划线风格。result 内部字段随评测集变化,只保证下表列出的字段。
| 参数名称 | 类型 | 说明 |
|---|---|---|
| version | String | 结果格式版本,目前为 "1" |
| job_id | String | 底层任务 ID |
| started_at | String | 开始时间,UTC |
| finished_at | String | 结束时间,UTC;运行中为 null |
| video_summary | Object | 视频统计:enabled 是否开启录像,total 视频总数,ready 可播放数,failed 不可播放数 |
| benchmarks | List<EvalResultBenchmark> | 每个评测集(子集)一项 |
- 任务成功前
result可能是null,也可能是运行中的进度快照(benchmarks[].metrics、details为null,finished_at为null)。以任务状态为Succeeded后取到的结果为准。
EvalResultBenchmark
一个评测项(评测集 + 子集)的结果,被如下接口引用:查询评测结果(响应 result.benchmarks)
| 参数名称 | 类型 | 说明 |
|---|---|---|
| id | String | 评测项 ID,格式 <评测集>-<子集> |
| name | String | 评测集名称 |
| sub_bench | String | 子集名称 |
| status | String | running 运行中、succeeded 全部分片成功、partial 部分分片失败、failed 失败、stopped 已停止 |
| progress | Object | completed_episodes 已完成 episode 数、total_episodes 总数、num_errors 出错数、num_timeouts 达到最大步数仍未成功的数量 |
| config | Object | 本评测项实际使用的配置:mode、num_shards、episodes_per_task、max_steps、chunk_size、params 等 |
| metrics | Object | 评分:mean_success 平均成功率(0~1)、num_tasks 任务数。运行中为 null |
| details | Object | 明细:tasks[] 每个任务的 task 任务描述、mean_success、avg_steps、num_episodes、num_errors、num_timeouts、videos(List<EvalResultVideo>)。运行中为 null |
EvalResultVideo
一条 episode 回放视频,被如下接口引用:查询评测结果(响应 result.benchmarks[].details.tasks[].videos)、查询回放视频播放地址(请求 videoId 取自这里)
| 参数名称 | 类型 | 说明 |
|---|---|---|
| video_id | String | 视频 ID,传给查询回放视频播放地址 |
| episode_index | Integer | episode 序号 |
| success | Boolean | 该 episode 是否成功 |
| state | String | ready 可播放、failed 不可播放 |
ModelItem
可评测的模型,被如下接口引用:查询可评测的模型及其评测集(响应 models)
| 参数名称 | 类型 | 说明 |
|---|---|---|
| modelName | String | 模型名称,用于创建评测任务请求的 modelConfig.modelName |
| displayName | String | 展示名称 |
| benchmarks | List | 可以跑的评测集,每项 {name, displayName, subBenches},subBenches 是子集名称列表 |
MinHardware
最低硬件要求,被如下接口引用:查询模型的默认配置(响应 minHardware,模型服务单副本)、查询评测集的默认配置(响应 benchmarks[].minHardware,评测集仿真环境单分片)
| 参数名称 | 类型 | 说明 |
|---|---|---|
| acceleratorTypes | List |
支持的 GPU 卡型 |
| acceleratorCount | Integer | 最少 GPU 卡数,0 表示可以不用 GPU |
| cpu | Integer | 最少 CPU 核数 |
| memory | Integer | 最少内存,单位 GB |
ParamSchema
params 或 extraArgs 可以填的参数,被如下接口引用:查询模型的默认配置(响应 extraArgsSchema)、查询评测集的默认配置(响应 benchmarks[].paramsSchema)
| 参数名称 | 类型 | 说明 |
|---|---|---|
| requiredArgs | List |
必须有值的参数。平台推荐配置里已经给了值时可以不填 |
| optionalArgs | List |
可以填的参数 |
| properties | Object | 每个参数的说明,键是参数名,值包含 type(string、integer、number、boolean 等)、default 默认值、description 说明,以及可选的 enum 取值范围、nullable 是否可为 null |
BenchmarkMetadata
一个「模型 × 评测集 × 子集」组合的默认配置,被如下接口引用:查询评测集的默认配置(响应 benchmarks)
| 参数名称 | 类型 | 说明 |
|---|---|---|
| modelName / name / subBench | String | 模型、评测集、子集 |
| minHardware | MinHardware | 评测集仿真环境单分片的最低硬件要求 |
| defaultBenchmarkConfig | BenchmarkConfig | 推荐配置 |
| paramsSchema | ParamSchema | params 可以填的参数 |
| maxEpisodesPerTask | Integer | episodesPerTask 的上限,0 表示不限 |
评价此篇文章
