You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Training Error KeyError: Column 'actions' not in the dataset when using lerobot v2.1 data #124
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?
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.
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.
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.
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.)
Activity
zbzyjya commentedon Nov 25, 2025
请问main分支下最新的仓库训练需要使用v2.1版本的还是v2.0版本的lerobot数据呢? 从主readme里看到是用v2.1的数据,但是在其他issue里又看到使用v2.1和v3.0的数据需要额外适配代码。
ModiShi commentedon Nov 25, 2025
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
zbzyjya commentedon Dec 4, 2025
已解决 通过修改dataset_lerobot.py改成适配的数据集内info.json的格式 已成功开始训练
发现dataset_lerobot.py同时还要完成指定的action和state的拼接功能 拼成训练config中预设的维度 不然训练还会有其他错误
allenwu-blip commentedon Apr 30, 2026
The nested-vs-flat action-key mismatch is exactly what
embodied-data convert(repo) targets — it emits LeRobot v3 with the flatactioncolumn 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-datato try (release notes).Happy to test on your AgiBot subset if you point at the task IDs.
allenwu-blip commentedon May 2, 2026
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
actioncolumn the trainer expects AND the video stream needed for VLA training. The full pipelineembodied-data convert <beta-task-root> /tmp/out --from agibot --to lerobot-v3produces a dataset thatlerobot.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.allenwu-blip commentedon May 17, 2026
The mismatch is a LeRobot dataset-version thing, not your data. The older AgiBot
convert_to_lerobot.pypath 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 consolidatedactionvector feature (andobservation.statelikewise), with the per-component breakdown living inmeta/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.)