Explicit ECoT — MiniVLA-1B on LIBERO-90
Explicit embodied chain-of-thought VLA policy (reproduction of the ECoT-Lite "Full ECoT" recipe, arXiv:2505.08243): generates a structured reasoning chain (PLAN / VISIBLE OBJECTS / SUBTASK REASONING / SUBTASK / MOVE REASONING / MOVE / GRIPPER POSITION, ~250 tokens, ~3 s/decision) before emitting VQ action tokens.
- Base: MiniVLA-1B (Qwen2.5-0.5B + DINOv2/SigLIP 224px), VQ action chunking (10 steps -> 7 codes)
- Trained on LIBERO-90 with the Embodied-CoT reasoning annotations (batch 128, lr 2e-5)
Checkpoints
| File | Steps | LIBERO-90 (90 tasks x 10 trials) |
|---|---|---|
checkpoints/step-100000-epoch-22-loss=0.0261.pt |
100k | 87.0% (783/900) -- best |
checkpoints/step-140000-epoch-31-loss=0.0289.pt |
140k (from scratch) | 85.2% (767/900) -- matched-step vs. latent |
References: no-CoT Standard-VLA baseline 82.0% and Full ECoT 90.8% (200k steps, 50 trials/task)
as reported in ECoT-Lite Table 1. Companion latent-CoT model (89.1% at 140k, ~9x faster):
see the latent-ecot-coconut-libero90 repo.
Usage
Requires the latent-ecot codebase. Place the vq/
folder from this repo at the working directory root, then:
from prismatic.models import load_vla
vla = load_vla("<repo_dir>/checkpoints/step-100000-epoch-22-loss=0.0261.pt",
hf_token="", load_for_training=False)
action_chunk, info = vla.predict_action(
image, instruction, unnorm_key="libero_lm_90",
use_ecot=True, return_action_chunk=True, return_info=True) # info["reasoning_text"]
Citation
Please cite ECoT-Lite (arXiv:2505.08243), ECoT (arXiv:2407.08693), MiniVLA, and LIBERO alongside this artifact.
- Downloads last month
- 27