目录问题描述v2.1 → v3.0 格式差异处理步骤步骤 1修复 episodes_stats.jsonl 格式步骤 2运行 v2.1 → v3.0 转换脚本步骤 3验证备注问题描述使用lerobot-train训练 pi0.5 模型时数据集加载失败NotImplementedError: Contact the maintainer on Discord.根本原因: 数据集的codebase_version为 v2.1但当前 lerobot 代码库要求 v3.0 格式。v2.1 和 v3.0 之间存在不兼容的结构变化。v2.1 → v3.0 格式差异内容v2.1 格式v3.0 格式数据文件data/chunk-000/episode_000000.parquetdata/chunk-000/file-000.parquet视频文件videos/chunk-000/{camera}/episode_000000.mp4videos/{camera}/chunk-000/file-000.mp4Episodes 元数据meta/episodes.jsonlmeta/episodes/chunk-000/file-000.parquetTasks 元数据meta/tasks.jsonlmeta/tasks.parquet统计数据meta/episodes_stats.jsonlmeta/stats.jsonmeta/stats.jsonaggregated处理步骤步骤 1修复 episodes_stats.jsonl 格式转换脚本对统计数据的格式有严格验证要求所有值包括count都是数组格式。原始episodes_stats.jsonl中count字段是标量如285需要转为数组如[285]。importjson input_pathdata/dataset_2026-03-13_17-00-18/meta/episodes_stats.jsonloutput_pathdata/dataset_2026-03-13_17-00-18/meta/episodes_stats_fixed.jsonlwithopen(input_path)asf_in,open(output_path,w)asf_out:forlineinf_in:entryjson.loads(line)forfeat_key,feat_statsinentry[stats].items():forstat_key,stat_valueinfeat_stats.items():ifnotisinstance(stat_value,list):feat_stats[stat_key][stat_value]f_out.write(json.dumps(entry)\n)然后替换原文件cpmeta/episodes_stats.jsonl meta/episodes_stats.jsonl.bakmvmeta/episodes_stats_fixed.jsonl meta/episodes_stats.jsonl步骤 2运行 v2.1 → v3.0 转换脚本cd/home/xxx/Project/xxxxxx_vla_train/lerobot python-mlerobot.datasets.v30.convert_dataset_v21_to_v30\--repo-iddataset_2026-03-13_17-00-18\--root/home/xxx/Project/fawbot_vla_train/data\--push-to-hubfalse\--force-conversion参数说明:--repo-id: 设置为数据集目录名因为本地转换时脚本会拼接root/repo-id作为数据集路径--root: 数据集的父目录--push-to-hubfalse: 不推送到 HuggingFace Hub--force-conversion: 跳过 Hub 上的 v3.0 检查转换过程:转换info.json更新版本号、路径模板等转换tasks.jsonl→tasks.parquet合并数据文件104 个episode_*.parquet→file-000.parquet合并视频文件4 个摄像头 × 104 集 → 按大小合并为多个file-*.mp4转换 episodes 元数据为 parquet 格式聚合统计数据写入stats.json自动完成目录替换原目录 →_old新目录 → 原路径步骤 3验证转换后的目录结构dataset_2026-03-13_17-00-18/ ├── data/chunk-000/file-000.parquet ├── meta/ │ ├── info.json (codebase_version: v3.0) │ ├── stats.json │ ├── tasks.parquet │ └── episodes/chunk-000/file-000.parquet └── videos/ ├── observation_images_chest/chunk-000/file-{000..003}.mp4 ├── observation_images_head/chunk-000/file-{000..001}.mp4 ├── observation_images_left_wrist/chunk-000/file-{000..003}.mp4 └── observation_images_right_wrist/chunk-000/file-{000..003}.mp4原始 v2.1 数据备份在dataset_2026-03-13_17-00-18_old/。备注训练脚本train.sh中的--dataset.root路径无需修改因为转换脚本自动将新数据放回原路径如需回滚可将_old目录重命名为原目录名
LeRobot 数据集 v2.1 → v3.0 迁移记录
目录问题描述v2.1 → v3.0 格式差异处理步骤步骤 1修复 episodes_stats.jsonl 格式步骤 2运行 v2.1 → v3.0 转换脚本步骤 3验证备注问题描述使用lerobot-train训练 pi0.5 模型时数据集加载失败NotImplementedError: Contact the maintainer on Discord.根本原因: 数据集的codebase_version为 v2.1但当前 lerobot 代码库要求 v3.0 格式。v2.1 和 v3.0 之间存在不兼容的结构变化。v2.1 → v3.0 格式差异内容v2.1 格式v3.0 格式数据文件data/chunk-000/episode_000000.parquetdata/chunk-000/file-000.parquet视频文件videos/chunk-000/{camera}/episode_000000.mp4videos/{camera}/chunk-000/file-000.mp4Episodes 元数据meta/episodes.jsonlmeta/episodes/chunk-000/file-000.parquetTasks 元数据meta/tasks.jsonlmeta/tasks.parquet统计数据meta/episodes_stats.jsonlmeta/stats.jsonmeta/stats.jsonaggregated处理步骤步骤 1修复 episodes_stats.jsonl 格式转换脚本对统计数据的格式有严格验证要求所有值包括count都是数组格式。原始episodes_stats.jsonl中count字段是标量如285需要转为数组如[285]。importjson input_pathdata/dataset_2026-03-13_17-00-18/meta/episodes_stats.jsonloutput_pathdata/dataset_2026-03-13_17-00-18/meta/episodes_stats_fixed.jsonlwithopen(input_path)asf_in,open(output_path,w)asf_out:forlineinf_in:entryjson.loads(line)forfeat_key,feat_statsinentry[stats].items():forstat_key,stat_valueinfeat_stats.items():ifnotisinstance(stat_value,list):feat_stats[stat_key][stat_value]f_out.write(json.dumps(entry)\n)然后替换原文件cpmeta/episodes_stats.jsonl meta/episodes_stats.jsonl.bakmvmeta/episodes_stats_fixed.jsonl meta/episodes_stats.jsonl步骤 2运行 v2.1 → v3.0 转换脚本cd/home/xxx/Project/xxxxxx_vla_train/lerobot python-mlerobot.datasets.v30.convert_dataset_v21_to_v30\--repo-iddataset_2026-03-13_17-00-18\--root/home/xxx/Project/fawbot_vla_train/data\--push-to-hubfalse\--force-conversion参数说明:--repo-id: 设置为数据集目录名因为本地转换时脚本会拼接root/repo-id作为数据集路径--root: 数据集的父目录--push-to-hubfalse: 不推送到 HuggingFace Hub--force-conversion: 跳过 Hub 上的 v3.0 检查转换过程:转换info.json更新版本号、路径模板等转换tasks.jsonl→tasks.parquet合并数据文件104 个episode_*.parquet→file-000.parquet合并视频文件4 个摄像头 × 104 集 → 按大小合并为多个file-*.mp4转换 episodes 元数据为 parquet 格式聚合统计数据写入stats.json自动完成目录替换原目录 →_old新目录 → 原路径步骤 3验证转换后的目录结构dataset_2026-03-13_17-00-18/ ├── data/chunk-000/file-000.parquet ├── meta/ │ ├── info.json (codebase_version: v3.0) │ ├── stats.json │ ├── tasks.parquet │ └── episodes/chunk-000/file-000.parquet └── videos/ ├── observation_images_chest/chunk-000/file-{000..003}.mp4 ├── observation_images_head/chunk-000/file-{000..001}.mp4 ├── observation_images_left_wrist/chunk-000/file-{000..003}.mp4 └── observation_images_right_wrist/chunk-000/file-{000..003}.mp4原始 v2.1 数据备份在dataset_2026-03-13_17-00-18_old/。备注训练脚本train.sh中的--dataset.root路径无需修改因为转换脚本自动将新数据放回原路径如需回滚可将_old目录重命名为原目录名