Skip to content

Training Error KeyError: Column 'actions' not in the dataset when using lerobot v2.1 data #124

Open

Description

@zbzyjya

When I used the agibot2lerobot tool from an older version of any4lerobot (because I found that the latest any4lerobot generates lerobot v3.0, which is incompatible with this repository) to convert AgiBot data in the example to lerobot v2.1 format and proceeded with training, I encountered the following error:
File "/opt/conda/lib/python3.11/site-packages/datasets/formatting/formatting.py", line 541, in _check_valid_column_key
[rank0]: raise KeyError(f"Column {key} not in the dataset. Current columns in the dataset: {columns}")
[rank0]: KeyError: "Column actions not in the dataset. Current columns in the dataset: ['observation.states.effector.position', 'observation.states.end.orientation', 'observation.states.end.position', 'observation.states.head.position', 'observation.states.joint.current_value', 'observation.states.joint.position', 'observation.states.robot.orientation', 'observation.states.robot.position', 'observation.states.waist.position', 'actions.effector.position', 'actions.end.orientation', 'actions.end.position', 'actions.head.position', 'actions.joint.position', 'actions.robot.velocity', 'actions.waist.position', 'timestamp', 'frame_index', 'episode_index', 'index', 'task_index']"

0%| | 0/13200 [00:02<?, ?it/s]
[rank0]:[W1125 20:30:39.168193764 ProcessGroupNCCL.cpp:1496] Warning: WARNING: destroy_process_group() was not called before program exit, which can leak resources. For more info, please see https://pytorch.org/docs/stable/distributed.html#shutdown (function operator())
E1125 20:30:40.437000 297469 site-packages/torch/distributed/elastic/multiprocessing/api.py:869] failed (exitcode: 1) local_rank: 0 (pid: 297517) of binary: /opt/conda/bin/python

I noticed that each conversion tool corresponds to a different version of lerobot. How can I stably convert AgiBot-type data to the lerobot data required by the latest code in this repository?

Activity

  1. zbzyjya commented on Nov 25, 2025

    @zbzyjya
    Author

    请问main分支下最新的仓库训练需要使用v2.1版本的还是v2.0版本的lerobot数据呢? 从主readme里看到是用v2.1的数据,但是在其他issue里又看到使用v2.1和v3.0的数据需要额外适配代码。

  2. ModiShi commented on Nov 25, 2025

    @ModiShi
    Contributor

    Thanks for reporting this! The error stems from a key mapping issue, not the LeRobot version. The GO-1 training code expects an actions key, but the transformed dataset contains actions.effector.position, actions.end.orientation, etc.

    You can modify the key reading logic here to match your dataset structure.

    Alternatively, if training GO-1 on AgiBot World, consider using our pretrained checkpoint: https://huggingface.co/agibot-world/GO-1

  3. zbzyjya commented on Dec 4, 2025

    @zbzyjya
    Author

    已解决 通过修改dataset_lerobot.py改成适配的数据集内info.json的格式 已成功开始训练
    发现dataset_lerobot.py同时还要完成指定的action和state的拼接功能 拼成训练config中预设的维度 不然训练还会有其他错误

  4. allenwu-blip commented on Apr 30, 2026

    @allenwu-blip

    The nested-vs-flat action-key mismatch is exactly what embodied-data convert (repo) targets — it emits LeRobot v3 with the flat action column the current trainer expects (22-dim, head/body/arms/effectors subselection per the official AgiBot recipe). v0.1.0 ships batch conversion via --max-episodes / --resume / --workers, so larger AgiBot subsets convert in one command without re-entering the upstream cache path.

    v0.1.0 just released — pip install embodied-data to try (release notes).

    Happy to test on your AgiBot subset if you point at the task IDs.

  5. allenwu-blip commented on May 2, 2026

    @allenwu-blip

    Quick v0.3.0 update — building on the v0.2 batch path, v0.3.0 ships head_color video re-encode for Beta, so the converted LeRobot v3 dataset now contains both the flat action column the trainer expects AND the video stream needed for VLA training. The full pipeline embodied-data convert <beta-task-root> /tmp/out --from agibot --to lerobot-v3 produces a dataset that lerobot.policies.* can ingest directly. pip install --upgrade embodied-data. Release notes: https://github.com/allenwu-blip/embodied-data/releases/tag/v0.3.0. Happy to test on your AgiBot subset if you point at task IDs.

  6. allenwu-blip commented on May 17, 2026

    @allenwu-blip

    The mismatch is a LeRobot dataset-version thing, not your data. The older AgiBot convert_to_lerobot.py path emits the v2.1-style schema where the action is split into nested sub-features (actions.effector.position, actions.end.orientation, …). Current LeRobot training code expects the v3 schema, where the policy input is a single consolidated action vector feature (and observation.state likewise), with the per-component breakdown living in meta/ rather than as top-level columns. That's why the column it wants literally isn't there.

    So the fix is to convert with something that emits the v3 schema, not to patch the training script to chase v2.1 sub-columns — that breaks again on the next lerobot bump.

    (disclosure: I maintain embodied-data, an OSS lib that does AgiBot World → LeRobot v3 directly and emits the consolidated v3 action/state schema, and its validator includes an action-dim consistency check, so a schema like this is caught when you validate the output rather than mid-training. pip install embodied-data. The diagnosis above stands on its own.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions