项目案例

LeRobot 数据协作与版本交付平台

从机器人 Episode 的来源、检查和复核出发,固定构建输入,交付可读取、可追溯的数据版本。

Java 后端 · 数据版本与任务可靠性

Spring Boot 3Vue 3TypeScriptMyBatis-PlusMySQLRedisMinIOPythonLeRobotRerun

背景:文件能打开之后还缺什么

一段机器人数据包含相机图像与状态、动作序列。把文件存进目录只解决了存储:它属于哪个来源版本、经过什么检查、交付了哪些内容,仍需要平台保存明确关系。

本项目聚焦数据协作与版本交付:Java 管业务状态、权限与事务,Python Worker 调用 LeRobot 官方工具处理数据,Rerun 辅助查看。目标是让每份交付都能回到当时的输入与处理依据。

数据链路

text2 行
来源及 revision → Episode → 结构检查 → 人工复核
→ 候选成员 → 冻结清单 → 官方构建与读回 → 交付记录

验证使用公开 LeRobot 数据;其中的机器人动作并非本项目采集,不能据此推断训练或真机控制已完成。

输入输出

  • 解决的问题:多人协作后,如何说明一份交付包含哪些输入、依据哪次检查复核、经过什么构建,重试后结果是否仍可信。
  • 输入:经 UploadSession(MinIO presigned 直传)上传的 LeRobot 文件或公开 fixture;来源身份为租户 + source + revision + episode_index,重复导入不产生重复 Episode。
  • 输出:不可变数据集版本(冻结清单 + manifest hash)与交付记录,经官方读取路径读回核对。训练 / 模型 / 评估目前为关联记录,未对接外部训练执行。
  • 平台实现:UploadSession 状态机、幂等物化、条件复核、Selection 冻结、Job claim / lease / attempt / retry、租户隔离;Python Worker 执行与 LeRobot 官方读写;结构 QC 与 Rerun 预览;Vue 工作区覆盖 devices / episodes / qc / datasets / training 等页面。

系统架构

Vue 3 + TypeScript · 管理端
Spring Boot 3 · 业务用例与权限控制
MySQL
业务记录
Redis
统计与状态缓存
文件路径与元信息
数据资源
平台逻辑架构:以业务记录、状态缓存与资源路径连接采集和训练管理。

Spring Boot 是唯一的业务权威,Python Worker 只领取任务并报告结果,大文件走对象存储,Java 不解析数据格式。

从采集到评估

从数据到模型LeRobot 数据平台从设备、采集片段和数据集版本流转至训练与评估。从数据到模型PROJECT PIPELINELEROBOT DATA PLATFORM数据生命周期Device设备与摄像头Episode采集片段Dataset version数据集版本Training训练记录Evaluation评估记录

质检通过的 Episode 进入候选集合,冻结为不可变版本后触发官方构建,产物登记后关联训练、模型与评估,形成交付链。

分工

部分 职责
Vue 工作区 查找数据、提交复核、组织候选、查看版本与任务
Java 服务 权限、版本关系、冻结成员、持久任务与产物登记
Python Worker 领取任务、执行处理、生成产物并报告结果
LeRobot / Rerun / 存储 官方读写与读回校验、多模态查看、MinIO / MySQL / Redis

约束集中在:谁有权操作、处理的是哪份输入、结果何时生效、重试与旧回调如何不污染已确定版本。

三个关键问题

1. 审核的是哪份输入

结构检查与人工复核回答不同问题:文件可读不等于动作成功,人工通过也不能补齐缺失的必需检查。因此复核记录来源 revision、QC run 与 decision revision,服务端校验写入依据是否仍有效。

相关机制见两个质检员同时审核一条数据。

2. 交付的是哪一组内容

候选集合可调,冻结版本固定。构建只读冻结的成员、来源、复核依据与配置,不查询“最新数据”。输入清单记录用了什么,输出清单记录产生了什么;文件校验查完整性,官方读回查可读性,两者缺一不可。

这延续了从 CRUD 到 AI 数据平台中提交、审核与交付分离的思路。

3. 执行失败后谁能提交结果

Job 表达一次业务处理,attempt 表达具体执行归属;lease 与结果校验识别失效执行,幂等规则处理重复请求。取消与完成竞争、Worker 失联、旧结果晚到都需要按执行证据验证,而非只看成功标签。

分工讨论见训练任务为何不塞进请求里。本项目当前处理 IMPORT / BUILD。

当前范围

已跑通:上传直传 → 来源识别 → 结构检查(帧序、维度、时间、帧率、可解码性)→ 人工复核 → 候选 → 冻结 → 官方构建与读回 → 交付记录;任务可靠性、租户隔离、构建输入输出一一对应均有自动化测试覆盖。

暂不包含:训练执行与 GPU 调度、实时采集与 MCAP、多相机硬件同步、VLM 辅助质检、HDF5 / RLDS / Hub 接入;质量通过不等于训练有效,无真实机械臂验证。

Roadmap

  • 版本化质量规则:规则版本、阈值、实测值与证据,补齐信号级算子与可观测性。
  • 数据集治理:不可变发布语义、版本 diff、血缘边、统一指标层。
  • 生态闭环:ROS 2 采集、流式质检、训练评测反馈(Data → Train → Eval → Data)。

阅读路线

  1. Episode 是什么:先理解数据对象与字段含义。
  2. 从 CRUD 到 AI 数据平台:理解协作为何需要不同业务对象。
  3. 两个质检员同时审核一条数据:看写入条件与事务。

前序案例是 AI 数据标注与模型训练管理平台,理解变化见从 AI 数据平台到 LeRobot。

← 返回项目