MiniRT / README.md
charliechin424's picture
model card: add the int8 build and state what it costs
67f7b67 verified
|
Raw
History Blame Contribute Delete
4.3 kB
---
license: mit
tags:
- robotics
- vision-language-action
- manipulation
- maniskill
library_name: pytorch
---
# MiniRT
A small autoregressive vision-language-action policy for the SO-101 arm, and the hierarchy it needs
to become selective.
Code, evaluation harness and the full report: **https://github.com/charliechin424/MiniRT**
**Act one.** One 96 MB weight drives eight ManiSkill3 manipulation tasks from free-form English at
90.3% mean success over 300 episodes per task.
**Act two.** The same architecture scores 0% when the task requires *choosing* β€” "put the blue can in
the bin" with four objects on the table. It reaches, grasps and lifts competently and takes the
wrong object; colour grounding is a cross-modal binding it cannot learn at the motor level. Moving
that job into a 0.1 M-parameter grounder that shares the policy's own vision backbone recovers 26%
end-to-end, with no privileged knowledge of which object is which.
## Files
| file | what it is |
|---|---|
| `v7_mt_generalist_fp16.pt` | act one β€” one weight, eight tasks. 47.9 M params, 96 MB fp16. |
| `v8_mt_colorsort_fp16.pt` | act one plus the ColorSort skill; the warm-start ancestor of the act-two policy. |
| `colorsort/v15cs_frozen_fp16.pt` | act two β€” the delivered position-conditioned VLA. Frozen vision backbone so the grounder and the policy genuinely share one encoder: 48.1 M total. |
| `colorsort/v15cs_frozen_int8.pt` | the same policy as W8A8 integer compute, 57.7 MB. Costs success β€” see below. Ships with `colorsort/v15cs_frozen_int8_params.json`, the per-layer quantisation parameter table. |
| `colorsort/grounder_r4_mix20.pt` | act two β€” the MiniRT-Grounder heads (0.104 M params on a DINOv2-S backbone). Trained at `img_size=448`. |
## Numbers
Act one, `success_at_end` over 300 episodes (3 Γ— 100, seed 3000), `physx_cpu`:
| Task | success |
|---|---|
| ReachCube | 99.3 |
| ReachCan | 99.0 |
| LiftCube | 95.7 |
| StackCube | 93.0 |
| PlaceCube | 91.3 |
| LiftCan | 89.3 |
| PlaceCan | 84.7 |
| StackCan | 70.3 |
| **mean** | **90.3** |
Unseen instruction phrasings: seven of eight tasks show no degradation.
Act two, 100 episodes, seed 3000:
| | privileged ceiling | grounded closed loop | n=2 | n=3 |
|---|---|---|---|---|
| **frozen 48.1 M (delivered)** | 29% | **26%** | 41% | 10% |
Perception costs three points; insisting one encoder serve both the grounder and the policy costs
about half the success rate. That is the trade-off, stated rather than hidden.
## Running these
The evaluation is **not** reproducible from the weights alone. It needs the ColorSort environment,
which is a modification to an upstream repository and ships in the code repo as `squint_patch/`, and
it needs several flags whose defaults are wrong for these checkpoints β€” `--min-area 6` in
particular silently costs eleven points if left at its default. The README has the exact commands:
**https://github.com/charliechin424/MiniRT**
## Notes
- Every number is measured on `physx_cpu`. `physx_gpu` diverges physically, per task and in either
direction; do not compare across backends.
- The act-two checkpoint has catastrophically forgotten the eight base tasks. Its ancestor
`v8_mt_colorsort` has not. This is a design consequence β€” six generations of fine-tuning with zero
base-task replay β€” not a defect, and it is recorded here so that comparing the two checkpoints
does not lead to the wrong conclusion.
- **The int8 build costs success and is labelled so.** fp16 26/100, int8 22/100; at the object level
58% against 47% over 249 objects. Both acceptance gates still pass, so it is usable β€” choose it for
the 40% size reduction, not because it is free. The four-point headline gap sits on the noise band
of a 100-episode run and read alone would suggest no effect; the paired per-seed comparison
(identical scenes and wording) shows int8 worse on 37 seeds and better on 17, p ~ 0.009. On the
single-task predecessor quantisation was genuinely free, which is why this is worth stating.
## Credit
Built on [squint](https://github.com/aalmuzairee/squint) (SO-101 ManiSkill3 environments),
[ManiSkill3](https://github.com/haosulab/ManiSkill), [LeRobot](https://github.com/huggingface/lerobot)
and [DINOv2](https://github.com/facebookresearch/dinov2).