- 技术有效性。 这段录制是否可用?Avala 根据验收标准和质量目标报告它。参见下文的“技术有效性”一节。
- 行为结果。 人或机器人做了什么?任务是否成功?Avala 将其存储为该序列的结果标签。
结果标签
每个序列最多有一个当前结果标签。每次写入都会记录一个新版本。较早的版本仍可在标签历史中读取。示例
下面是一次带有滑落和恢复的人类示范的标签,即GET .../sequences/<sequence-uid>/outcome/ 返回的内容:
字段
所有时间戳都是距序列开始的秒数。mistake_type、recovery_type 和 failure_stage 是自由文本。请使用计划的失败分类体系中的标记,以便序列能清晰地分组。
结果值
每个子任务可以带有取自同一列表的自身结果。
自主级别
子任务
每个子任务的形式为{label, start_ts, end_ts, outcome}。
一个标签最多包含 256 个子任务。列表必须按
start_ts 排序。任意两个子任务要么互不相交,要么一个完全包含另一个,例如一个阶段及其步骤。首尾相接视为不相交。部分重叠会被拒绝。当两个子任务同时开始时,先列出外层的那个。
手部动作
hand_actions 包含两个独立的流:left 和 right。每一项描述一只手在一个时间范围内所做的事。
- 在同一只手内,各项按
start_ts排序,且不得重叠。一项在上一项结束时或之后开始。首尾相接没有问题。 - 两只手之间可以自由重叠。
- 每只手最多 3,600 项,即按每秒一个标签计算的一小时。
left和right是仅有的两个键。两者都可以省略。省略的手存储为空列表。- 空的
object或verb存储为null。每个存储的项都包含全部六个字段。
序列时长
当 Avala 知道序列的时长时,每个子任务的end_ts 和每个手部动作的 end_ts 都不得超过时长加 1 秒。多出的这一秒是为按每秒一个写入的标签留出的余量。当序列恰好有一个已提取且记录了长度的 MCAP 文件时,Avala 知道其时长。对于其他序列,会跳过此项检查。
评估成员资格
evaluation_membership 把序列放入一个划分:
Avala 为每个评估组中的序列设置
held_out_eval。这些序列从不出现在训练发布版本中。参见评估。
泄漏组
泄漏组防止近似重复的数据同时落在训练集和评估集两侧。leakage_groups 接受以下键,每个键对应一个最多 255 个字符的组 ID:
其他任何键都会被拒绝。每个键都是可选的。
Avala 构建评估组时,确保评估组中的任何组值都不会出现在任何训练发布版本中。您可以用同样的方式划分自己的数据:按组留出,绝不按随机序列留出。Avala 的组 ID 是假名化的,因此您可以分组和划分,而无需知道涉及的人员或地点。
来源元数据
source_metadata 记录导入的标签来自哪里,例如 {"importer": "...", "run_id": "...", "task": "...", "log_path": "..."}。
- 它是一个扁平对象,最多 20 个键。
- 每个键为 1 到 64 个字符。
- 每个值是最多 512 个字符的字符串、有限数值或布尔值。
- 嵌套对象、列表和
null值会被拒绝。
写入方式
- 一次写入会整体替换当前标签,并记录一个新版本。您省略的任何可选字段都存储为未设置,不会从上一个版本复制。
- 写入需要数据集的编辑权限。读取所需的权限与读取该序列相同,包括公开数据集。
- 除非
source为model,否则confidence会被拒绝。 - 读取没有标签的序列会返回
404。
技术有效性
技术有效性不属于结果标签。Avala 根据验收引擎和质量目标报告它,它没有自己的 JSON 模式。 验收标准。 采集活动中的每次采集都会得到一个机器判定:accept、quarantine 或 reject。判定依据以下标准:
每项标准报告
pass、fail、insufficient_evidence 或 skipped。未通过的标准会记录一个原因代码,例如 acceptance_frame_rate_drop 或 hands_not_visible。随后由审核员确认或推翻该判定。原因代码列在验收小时中。
使用 MCP 工具读取验收结果:get_result_acceptance 用于单次采集,get_campaign_acceptance_summary 用于一个采集活动。list_capture_submissions 包含每次采集的机器验收摘要。
质量目标。 项目可以为质量指标设定阈值,例如验收率、拒收率和问题率。当某个指标越过阈值时,Avala 会发出警报。使用 MCP 工具 list_quality_targets 读取它们。
不属于机器标准的计划检查,例如标定、同意和时间戳同步,会作为拒收原因在覆盖报告中报告。参见验收小时。
读取和写入结果标签
REST 端点位于https://api.avala.ai/api/v1 之下:
数据集列表接受筛选条件
outcome、evaluation_membership、source 和 autonomy_level。每个条件接受一个值或逗号分隔的列表,序列匹配列表中的任意一个值即可。model_version 精确匹配一个版本。未知的筛选值返回 400。
序列列表 GET /datasets/{owner}/{slug}/sequences/ 以同样的形式接受 outcome 和 evaluation_membership,返回当前标签匹配的序列。
写入标签
sourceMetadata 中的键按原样发送。在 CLI 中,--hand-actions-file 接受一个内容为 {"left": [...], "right": [...]} 的 JSON 文件,--leakage-group KEY=ID 可以重复使用。
读取标签
cursor 即可继续读取。
通过 MCP 服务器读取标签
MCP 服务器读取结果标签,但不写入。get_sequence_outcome接受owner、slug和sequenceUid,返回当前标签。list_sequence_outcomes接受owner和slug,以及筛选条件outcome、evaluationMembership、source、autonomyLevel和modelVersion,还有limit和cursor。
detail: "full" 可包含子任务、手部动作、错误和恢复标记、泄漏组、来源元数据和标注者。连接方法参见与 AI 一起使用 Avala。
通过 LeRobot 导出结果标签
LeRobot 导出器可以把每个序列的当前结果标签写在数据集旁边。一个 Avala 序列成为一个 LeRobot episode。meta/avala_sequence_outcomes.jsonl:每行一个 JSON 对象,每个已保存的 LeRobot episode 对应一行。LeRobot 自身的 episode 表没有存放这些元数据的位置,因此它是一个单独的文件。每行包含以下键:
没有标签的序列会得到一行,其中只有
episode_index、avala_sequence_uid 和 "outcome": null。
失败与恢复通道
可恢复的失败作为独立的通道交付:即结果为mistake_and_recovery 或 intervention 的序列。每个序列的子任务和手部动作标出失败和恢复发生的位置。
该通道在发布版本中作为单独的切片交付。您可以在其上训练、为其加权或将其排除。您也可以用 ?outcome=mistake_and_recovery,intervention 自行构建同样的集合。不安全的序列不属于该通道。