clean50 — noise=0 デモ×50
Sawyer Task0(alphabet soup → basket)。open-loop 成功のみの scripted OSC v8 デモ50本(noise=0)で、 pi05_libero init の FullLoRA / VisAct / Full FT を比較。評価は共通で max_steps=1200 × 50 trials(seed=7)。 生成: 2026-09-20 · 学習予算・成功デモ注記: 2026-09-28
結論: 同じ成功デモ clean50・同じ学習予算(step=10000 · effbs=4)でも
FullLoRA だけ 8%。VisAct / Full FT は 0%。
Full FT は近傍到達(near)は 50/50 だが grasp は 0/50 → 失敗デモ学習ではなく掴み以降が破綻。
追記(2026-10-07): Full FT + stategauss 5mm は標準 eval で 2%、
学習と同じ初期状態 / clean100+5mm はいずれも 0%
→ 詳細は 学習条件まとめ。
「標準」と「学習と同じ初期状態」はどちらも closed-loop。違うのは初期配置だけ(標準は init 0–49 で学習デモと同じではない)。
「標準」と「学習と同じ初期状態」はどちらも closed-loop。違うのは初期配置だけ(標準は init 0–49 で学習デモと同じではない)。
結果サマリ
| 条件 | 成功率 | near | grasp | lift | transport | place | メモ |
|---|---|---|---|---|---|---|---|
| libero FullLoRA clean50 | 8.0% (4/50) | 50/50 | 18/50 | 18/50 | 18/50 | 7/50 | 唯一の非ゼロ |
| libero VisAct clean50 | 0.0% (0/50) | 40/50 | 7/50 | 5/50 | 5/50 | 1/50 | place 手前でほぼ終了 |
| libero Full FT clean50(s10000 · effbs4) | 0.0% (0/50) | 50/50 | 0/50 | 0/50 | 0/50 | 0/50 | 比較基準 · 接近は全成功・掴みが全滅 |
共通条件
| robot / task | sawyer · libero_object task0 |
|---|---|
| data | libero_sawyer_scripted_obj0_osc_v8_clean50(share7)· 3条件で同一 |
| デモの作り方 | scripted export で --require-open-loop · 120 試行 → open_loop_ok 106本 → 先頭50本 |
| デモの成否 | 全50本が lifted+placed+passed+open_loop_ok(失敗デモは未使用)· approach_noise=0 |
| demos | 50 ep · compact · ik_set · home_w30 · delta_osc · 20 Hz |
| init | pi05_libero_pytorch |
| config name | pi05_lora_b_object_sawyer(見た目は LoRA 名だが Full FT は freeze_filter=Nothing) |
| eval | seed=7 · 50 trials · max_steps=1200 · env_horizon=1260 · port 別 |
| storage | data / ckpt / log / video → /share7/yui.muranaka/openpi_appearance |
条件別の学習設定(比較基準)
step = パラメータ更新回数。effbs(effective batch)= 1GPUあたりの bs × GPU枚数 = 1回の更新で見る本数。 3条件とも step=10000 · effbs=4(GPU 割り方だけ Full FT が 2×2)。
| 項目 | FullLoRA | VisAct | Full FT |
|---|---|---|---|
| script | train_pytorch_lora.py | train_pytorch_lora_vision_action.py | train_pytorch.py |
| steps | 10000 | 10000 | 10000 |
| batch / GPU | 4 × 1 GPU | 4 × 1 GPU | 2 × 2 GPU |
| effective BS | 4 | 4 | 4 |
| lr | peak 5e-5 | peak 5e-5 | peak 5e-5 |
| merge | merge_lora_checkpoint.py | merge_lora_checkpoint_vision_action.py | 不要(素の PI0 重みを直接 serve) |
| exp | …fulllora_s10000_…clean50 | …visact_s10000_…clean50 | …fullft_s10000_clean50_effbs4 |
Full FT(s10000 · effbs4 · 2026-09-26):
LoRA と同じ学習予算・同じ成功デモでも成功率は 0%。
near=50/50 · grasp/lift/transport/place=0 → データの成否ではなく Full FT 側(レシピ / 制御 / 過適応など)を疑う。
診断図: Full FT vs FullLoRA smoke。
条件別・動画
libero FullLoRA clean50
8.0%
| 成功率 | 8.0%(4/50) |
|---|---|
| near | 50/50 |
| grasp | 18/50 |
| lift | 18/50 |
| transport | 18/50 |
| place | 7/50 |
| ckpt | …_merged_…fulllora_s10000_scripted_obj0_osc_v8_clean50 |
| eval_log | logs/clean50_libero/eval_clean50_libero_fulllora_max1200.log |
ep30 · success · lift=0.167m · min_eef=0.002m
ep44 · success · lift=0.147m · min_eef=0.001m
ep21 · success · lift=0.147m · min_eef=0.006m
ep14 · transport(成功手前) · lift=0.144m
libero VisAct clean50
0.0%
| 成功率 | 0.0%(0/50) |
|---|---|
| near | 40/50 |
| grasp | 7/50 |
| lift | 5/50 |
| transport | 5/50 |
| place | 1/50 |
| ckpt | …_merged_…visact_s10000_scripted_obj0_osc_v8_clean50 |
| eval_log | logs/clean50_libero/eval_clean50_libero_visact_max1200.log |
ep27 · place まで · lift=0.143m(成功ならず)
ep32 · transport · lift=0.149m
ep46 · transport · lift=0.131m
ep35 · transport · lift=0.110m
libero Full FT clean50(s10000 · effbs4)
0.0%
| 成功率 | 0.0%(0/50) |
|---|---|
| near | 50/50 |
| grasp | 0/50 |
| lift | 0/50 |
| transport | 0/50 |
| place | 0/50 |
| ckpt | …/libero_init_sawyer_obj0_fullft_s10000_clean50_effbs4/10000 |
| eval_log | logs/clean50_libero/eval_clean50_libero_fullft_s10000_effbs4_max1200.log |
| data | VisAct/FullLoRA と同じ open-loop 成功50本 |
| actnoise50 | action noise · Full FT(動画・曲線) |
| smoke | デモ vs ポリシー比較図 |
ep0 · near まで(grasp 失敗)
ep10 · near まで(grasp 失敗)
ep25 · near まで(grasp 失敗)
ep40 · near まで(grasp 失敗)