失败:有关LeRobot的CT Policy模型导出与编译 (在开发机上执行)

问题定位

从错误堆栈看,这次是 数据集加载失败 的问题。核心原因是数据集格式与 LeRobot v2.1 不匹配。


快速排查步骤

步骤 1:验证数据集目录结构

# 检查你的数据集目录结构
tree -L 3 /home/taoz123/datasets/so100_test

v2.1 格式的数据集应该包含:

so100_test/
├── meta.json          # 必须有
├── train/
│   ├── chunk-000/
│   │   ├── action.hdf5
│   │   ├── observation.image.hdf5
│   │   └── ...
└── info.json          # 可能有

步骤 2:测试数据集能否加载

python -c "
from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
try:
    dataset = LeRobotDataset(root='/home/taoz123/datasets/so100_test')
    print('✓ 数据集加载成功')
    print(f'数据量:{len(dataset)}')
    print(f'特征 keys: {dataset.camera_keys}')
except Exception as e:
    print('✗ 数据集加载失败')
    print(f'错误:{e}')
"

步骤 3:检查配置文件

# 查看当前配置
cat rdk_lerobot_tools/bpu_export_config.yaml

确保以下字段正确:

dataset:
  # repo_id: "dummy/dataset"  # 保持注释!
  root: "/home/taoz123/datasets/so100_test"  # 绝对路径

policy:
  type: "act"
  device: "cpu"
  # repo_id: "dummy/policy"  # 保持注释!

act_path: "/home/taoz123/lerobot/outputs/train/xxx/pretrained_model"
type: "nash-e"

根本原因分析

根据错误堆栈,问题可能是:

可能原因 概率 解决方案
数据集是 v3.x 格式 用 v2.1 环境重新采集或转换
数据集路径错误 检查路径是否存在
meta.json 缺失 检查数据集完整性
datasets 版本不对 确认 pip show datasets 是 2.19.0

解决方案

方案 A:用 v2.1 环境重新采集数据(推荐)

# 1. 确认环境正确
cd lerobot && git log -1 --oneline
pip show datasets | grep Version  # 应该是 2.19.0

# 2. 重新采集 1 组测试数据
python lerobot/scripts/control_robot.py \
  --robot.type=so100 \
  --control.type=record \
  --control.num_episodes=1 \
  --control.episode_time_s=30 \
  --control.root=datasets/so100_v2_test

# 3. 用新数据集重新训练
python lerobot/scripts/train.py \
  --dataset.root=datasets/so100_v2_test \
  --policy.type=act \
  --output_dir=outputs/act_v2_test

# 4. 导出模型
python rdk_lerobot_tools/export_bpu_actpolicy.py \
  --config bpu_export_config.yaml

方案 B:转换现有数据集

如果数据集是在新版 LeRobot 下采集的,需要转换格式:

# 检查是否有转换脚本
ls rdk_lerobot_tools/damo/

# 如果有 replace.py,运行转换
python rdk_lerobot_tools/damo/replace.py

请提供以下信息

如果上述方案仍无法解决,请提供:

# 1. 数据集目录结构
tree -L 3 /home/taoz123/datasets/so100_test

# 2. 环境版本
pip list | grep -E "lerobot|datasets"
cd lerobot && git log -1 --oneline

# 3. 完整错误文字(复制终端输出,不要截图)

# 4. 数据集是如何采集的?
#    - 用哪个 LeRobot 版本?
#    - 用哪个 commit?

参考资源