Instructions to use Aether258/pi05_bi_task2_all_step8000 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LeRobot
How to use Aether258/pi05_bi_task2_all_step8000 with LeRobot:
- Notebooks
- Google Colab
- Kaggle
Upload README.md with huggingface_hub
Browse files
README.md
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
language:
|
| 4 |
+
- en
|
| 5 |
+
library_name: lerobot
|
| 6 |
+
pipeline_tag: robotics
|
| 7 |
+
tags:
|
| 8 |
+
- lerobot
|
| 9 |
+
- robotics
|
| 10 |
+
- manipulation
|
| 11 |
+
- pi0
|
| 12 |
+
- tactile
|
| 13 |
+
- bimanual
|
| 14 |
+
---
|
| 15 |
+
|
| 16 |
+
# pi05_bi — task2 (dish washing), step 8000
|
| 17 |
+
|
| 18 |
+
openpi `pi05_bi` checkpoint for a bimanual dish-and-sponge task with tactile
|
| 19 |
+
inputs. Step 8000 (1.24 epochs), held-out validation loss
|
| 20 |
+
**0.0535** — the lowest of the run through step 10000.
|
| 21 |
+
|
| 22 |
+
## Task
|
| 23 |
+
|
| 24 |
+
Single unified instruction for every episode:
|
| 25 |
+
|
| 26 |
+
> Use the left hand to pick up the dish, and then use the right hand to pick up
|
| 27 |
+
> the sponge to brush the dish. Finally, put all things back.
|
| 28 |
+
|
| 29 |
+
Only `task2_01` shipped this string; `task2_02` and `task2_03` both carried the
|
| 30 |
+
placeholder `"perform manipulation task"` in their `meta/tasks.jsonl`. Since
|
| 31 |
+
`prompt_from_task=True` feeds that string straight to the model, all three
|
| 32 |
+
sources were forced onto the instruction above at merge time -- otherwise 76% of
|
| 33 |
+
the episodes (723 of 948) would have trained against an uninformative prompt.
|
| 34 |
+
A trailing space in the original string was stripped.
|
| 35 |
+
|
| 36 |
+
## Data
|
| 37 |
+
|
| 38 |
+
| source | episodes | frames |
|
| 39 |
+
|---|---:|---:|
|
| 40 |
+
| `KaiyueChen/task2_01` | 225 | 222,531 |
|
| 41 |
+
| `KaiyueChen/task2_02` | 298 | 291,661 |
|
| 42 |
+
| `KaiyueChen/task2_03` | 425 | 402,110 |
|
| 43 |
+
| **merged** | **948** | **916,302** |
|
| 44 |
+
|
| 45 |
+
LeRobot v2.1, 30 fps, `robot_type=bimanual`, images embedded in the parquet files
|
| 46 |
+
(`total_videos=0`). Six camera streams: `camera0`, `camera1`, and four tactile
|
| 47 |
+
sensors (`tactile_left_0/1`, `tactile_right_0/1`). Mean episode length ~966
|
| 48 |
+
frames.
|
| 49 |
+
|
| 50 |
+
### Split
|
| 51 |
+
|
| 52 |
+
Episodes are held out **per source repo** (10%, seed 42) so the held-out set keeps
|
| 53 |
+
the same source mix as train:
|
| 54 |
+
|
| 55 |
+
| split | episodes | held out from |
|
| 56 |
+
|---|---:|---|
|
| 57 |
+
| `train` | 854 | |
|
| 58 |
+
| `val_seen` (subset of train) | 94 | |
|
| 59 |
+
| `val_unseen` (held out) | 94 | 22 / 30 / 42 from sources 01 / 02 / 03 |
|
| 60 |
+
|
| 61 |
+
Normalization statistics (quantile q01/q99) are computed over the `train` split
|
| 62 |
+
only.
|
| 63 |
+
|
| 64 |
+
## Training
|
| 65 |
+
|
| 66 |
+
| | |
|
| 67 |
+
|---|---|
|
| 68 |
+
| config | `pi05_bi` |
|
| 69 |
+
| hardware | 2 x A100-80GB, FSDP |
|
| 70 |
+
| batch size | 128 |
|
| 71 |
+
| this checkpoint | step 8000 (~1.24 epoch; 1 epoch = 6,444 steps) |
|
| 72 |
+
| planned length | 20,000 steps |
|
| 73 |
+
| lr | peak 2e-4, 1,000 warmup steps, cosine decay over 100,000 |
|
| 74 |
+
| LoRA | rank 16 on the LLM, rank 32 on the action expert |
|
| 75 |
+
| vision tower | **fully fine-tuned** -- the freeze filter matches only `.*llm.*` |
|
| 76 |
+
|
| 77 |
+
## Validation curve
|
| 78 |
+
|
| 79 |
+
Flow-matching loss, 20 batches per split, evaluated on the same leading batches
|
| 80 |
+
each time so successive points are comparable.
|
| 81 |
+
|
| 82 |
+
| step | train | val_seen | val_unseen | gap |
|
| 83 |
+
|---:|---:|---:|---:|---:|
|
| 84 |
+
| 0 | 0.6399 | 0.6621 | 0.6508 | -0.0113 |
|
| 85 |
+
| 2000 | 0.0535 | 0.0671 | 0.0662 | -0.0009 |
|
| 86 |
+
| 4000 | 0.0470 | 0.0574 | 0.0573 | -0.0001 |
|
| 87 |
+
| 6000 | 0.0448 | 0.0565 | 0.0566 | +0.0001 |
|
| 88 |
+
| **8000** | 0.0430 | 0.0513 | **0.0535** | +0.0022 |
|
| 89 |
+
| 10000 | 0.0420 | 0.0514 | 0.0552 | +0.0038 |
|
| 90 |
+
|
| 91 |
+
`val_unseen` bottomed at step 8000 (0.0535) and rose to 0.0552 at step 10000.
|
| 92 |
+
Notably `val_seen` flattened at the same time (0.0513 -> 0.0514) while the training
|
| 93 |
+
loss kept falling (0.0430 -> 0.0420) -- both validation curves stalling together
|
| 94 |
+
suggests the model has extracted what it can from this data, not merely that
|
| 95 |
+
generalization has saturated.
|
| 96 |
+
|
| 97 |
+
The early-step `gap` is slightly **negative** (-0.0009 at step 2000). That is not
|
| 98 |
+
evidence of good generalization: each validation pass covers only ~2,560 frames,
|
| 99 |
+
which at ~966 frames per episode is about 2-3 episodes per split, so the sign of
|
| 100 |
+
the gap is dominated by which particular episodes landed in each split. Only the
|
| 101 |
+
`val_unseen` absolute trend is reliable, since the same episodes and the same rng
|
| 102 |
+
are used at every evaluation.
|
| 103 |
+
|
| 104 |
+
`val_seen` sits below the training loss from step 8000 onward. This is expected:
|
| 105 |
+
the training loss is measured on augmented images (random crop to 95%, +-5 deg
|
| 106 |
+
rotation, colour jitter, applied to all six streams including the four tactile
|
| 107 |
+
ones) while validation runs with `train=False`, which skips augmentation.
|
| 108 |
+
|
| 109 |
+
## Contents
|
| 110 |
+
|
| 111 |
+
```
|
| 112 |
+
checkpoint/
|
| 113 |
+
params/ # inference weights
|
| 114 |
+
train_state/ # optimizer state, for resuming
|
| 115 |
+
assets/task2_all/
|
| 116 |
+
norm_stats.json # computed over the train split only
|
| 117 |
+
```
|