MicroVLA - LIBERO mixed-suite (smoke checkpoint)

An in-progress, unevaluated checkpoint of MicroVLA, a ~159M-parameter vision-language-action policy with no language model in the execution path.

This is not a released model. It is a partial checkpoint published to exercise the publishing path. Do not cite a success rate from it - there isn't one.

What this is

Training step 4,250 of 80,000
Objective ℓ₁ + 10·KL (ACT CVAE), total loss 0.148 at snapshot
Dataset HuggingFaceVLA/libero, all four suites jointly
Effective batch 256 (16 × 16 grad-accum), bf16, one RTX 3090
LIBERO success rate not measured

Checkpoint contents

The file is deliberately incomplete. The frozen towers are byte-identical in every checkpoint, so they are not written out - they are rebuilt from their Hub repos when the checkpoint loads:

Included Not included (rebuilt on load)
Fusion stack (26.6M) RADIO vision tower, nvidia/C-RADIOv2-B (98.2M)
Action decoder (14.2M) T5-small encoder blocks (18.9M)
CVAE style encoder (7.1M, training only)
Projections, state encoder, pos/view embeddings
Normalisation statistics and the pruned vocab map
80 rows of T5's embedding table (pruned to the LIBERO corpus)

48.8M tensors total, 195 MB.

Licensing

Code is Apache-2.0. This checkpoint carries no NVIDIA RADIO weights - the only vision.* entries are nine floats (summary indices and the input conditioner's mean/std). The sole pretrained weights included are 80×512 rows of T5-small's embedding table, which is Apache-2.0.

Loading the checkpoint downloads RADIO from NVIDIA, which carries its own licence. Check it before redistributing anything derived from a loaded model.

Usage

pip install "microvla[libero] @ git+https://github.com/khanhnd61-vr/microvla"
from microvla import checkpoint

model, meta = checkpoint.load("best.pt", device="cuda")
model.eval()
print(meta["step"])          # 4250

tok = model.text.tokenize(["pick up the black bowl and place it on the plate"], device="cuda")
chunk = model.predict_chunk(images, tok["input_ids"], tok["attention_mask"], state)
# -> (B, 12, 7) un-normalised delta end-effector actions

images is (B, 2, H, W, 3) uint8 in view order [wrist, top]; state is the 8-D LIBERO vector [eef_pos(3), axis_angle(3), gripper_qpos(2)].

The pruned 80-token vocabulary covers LIBERO's 40 instructions and nothing else. Out-of-vocabulary tokens degrade to <unk> with a warning.

config.yaml is the exact training configuration this checkpoint was produced from.

Downloads last month
8
Video Preview
loading