CoolFace
Datasetpublic

mahgoobi/fan48-dense-data

fan48-dense-data At a state: several action chunks proposed from it, and how each one actually ended. A branch the search dropped was cut off mid-episode, so it is resumed from its own snapshot and carried to a finish — the action nobody executed still gets an answer to would this have worked. 321 searches · 12 tasks · 110,877 nodes, each with its own state and image. This repo hosts the data. What it means, how it was produced and how to use it live in the code that wrote it:… See the full description on the dataset page: https://huggingface.co/datasets/mahgoobi/fan48-dense-data.

sourceHugging Faceupdated 14d agoView on Hugging Face
0likes223downloads
Dataset Card

fan48-dense-data

At a state: several action chunks proposed from it, and how each one actually ended. A branch the search dropped was cut off mid-episode, so it is resumed from its own snapshot and carried to a finish — the action nobody executed still gets an answer to would this have worked.

321 searches · 12 tasks · 110,877 nodes, each with its own state and image.

This repo hosts the data. What it means, how it was produced and how to use it live in the code that wrote it: https://github.com/EAI-RSM/rewind — see its README for the format, the search strategies, and worked examples of loading a record.

Splits

Both halves live here, told apart by the split column of meta/searches rather than by path. The blocks are disjoint by construction, so a scorer trained on one can be measured on the other without having seen it.

splitseedsin this repo
traincollection seeds (50000+) — fans to learn from321 searches
testthe benchmark's own evaluation seeds (40000+) — what a scorer is measured onnot collected yet
python
from rewind.record.hub import index
runs  = index("mahgoobi/fan48-dense-data")
train = [r for r in runs if r["split"] == "train"]
test  = [r for r in runs if r["split"] == "test"]

Tasks

One row per task: how many searches it contributed, which splits, which scene configs, the seeds, and the benchmark commit whose code built those scenes.

That last column is not bookkeeping. The benchmark's success criteria change over time — put_milktea_on_shelf gained an upright requirement, put_milktea_next_to_laptop a 15° tolerance — so two runs of one task under different commits are scored by different rules and should not be pooled. Runs of a task the change did not touch stay comparable.

taskrunssplitsconfigsseedsbenchmark commit
drop_apple_in_bin_ks30trainkitchens_clean50000, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023, 50024, 50025, 50026, 50027, 50028, 50029RoboPRO @ `2a1adee`
move_can_from_cabinet_to_basket16trainkitchenl_clean50000, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50010, 50011, 50013, 50016, 50021, 50022, 50024RoboPRO @ `2a1adee`
move_cup_put_pen_in_cup5trainstudy_clean50000, 50002, 50003, 50011, 50012RoboPRO @ `2a1adee`
place_bowl_in_dishrack_ks30trainkitchens_clean50000, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023, 50024, 50025, 50026, 50027, 50028, 50029RoboPRO @ `2a1adee`
put_bottle_in_basket30trainkitchenl_clean50000, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023, 50024, 50025, 50027, 50028, 50029, 50030RoboPRO @ `2a1adee`
put_bottle_in_fridge30trainkitchenl_clean50000, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023, 50024, 50025, 50026, 50027, 50028, 50029RoboPRO @ `2a1adee`
put_can_in_cabinet30trainkitchenl_clean50000, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023, 50024, 50025, 50026, 50027, 50028, 50029RoboPRO @ `2a1adee`
put_cup_on_coaster30trainstudy_clean50000, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023, 50024, 50025, 50026, 50027, 50028, 50029RoboPRO @ `2a1adee`
put_milktea_on_shelf30trainoffice_clean50000, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023, 50024, 50025, 50026, 50027, 50028, 50029RoboPRO @ `2a1adee`
put_mouse_on_pad30trainoffice_clean50000, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023, 50024, 50025, 50026, 50027, 50028, 50029RoboPRO @ `2a1adee`
put_phone_on_holder30trainoffice_clean50000, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023, 50024, 50025, 50026, 50027, 50028, 50029RoboPRO @ `2a1adee`
put_stapler_next_to_mouse30trainoffice_clean50000, 50001, 50002, 50003, 50004, 50005, 50006, 50007, 50008, 50009, 50010, 50011, 50012, 50013, 50014, 50015, 50016, 50017, 50018, 50019, 50020, 50021, 50022, 50023, 50024, 50025, 50026, 50027, 50028, 50029RoboPRO @ `2a1adee`

Contents

tasksdrop_apple_in_bin_ks, move_can_from_cabinet_to_basket, move_cup_put_pen_in_cup, place_bowl_in_dishrack_ks, put_bottle_in_basket, put_bottle_in_fridge, put_can_in_cabinet, put_cup_on_coaster, put_milktea_on_shelf, put_mouse_on_pad, put_phone_on_holder, put_stapler_next_to_mouse
scene seeds50000–50030
searchbranch_once, fan of 48, horizon 12
policyroboresearch_policy — None @ 0
camerascountertopcamera, rightcamera, left_camera
action chunk50 steps
tablerowsfilescolumns
nodes110,87732110
steps5,527,8003215

Outcomes, best to worst: hard_success solved it cleanly, soft_success solved it after a collision, soft_failure missed, hard_failure missed and collided. terminal says whether the episode had ended when the outcome was read — tier is an outcome only where it is true, and only those are counted here.

outcomebranches
hard_success10,098
soft_success24
soft_failure5,182
hard_failure104

Loading it

python
from datasets import load_dataset
train = load_dataset("mahgoobi/fan48-dense-data", "nodes", split="train")   # the collection seeds

The library's splits ARE the split column of meta/searches: the frontmatter above names each run's shard under the block that column puts it in, so the two cannot drift. Only the blocks this repo actually holds are declared.

Every node carries its own state — poses, the robot's command, and one JPEG per camera — so nodes alone answers most questions. steps is what happened between two nodes. There is no video: rewind video builds one from these frames when you want to watch a branch.

Data is partitioned as data/<table>/task=<task>/<search_id>.parquet, so one task is one directory:

python
from huggingface_hub import snapshot_download
snapshot_download("mahgoobi/fan48-dense-data", repo_type="dataset",
                  allow_patterns=["meta/**", "data/*/task=drop_apple_in_bin_ks/*"])

Each run's config is stored verbatim at meta/configs/<search_id>.yml, so any run can be repeated from the record itself.

Full format, and everything else: https://github.com/EAI-RSM/rewind.