Core AI model zoo

BitVLA (1.58-bit Vision-Language-Action) — Core AI

🤗 mlboydaisuke/BitVLA-CoreAI · MIT · base lxsy/bitvla-bf16 · paper arXiv:2506.07530

The zoo’s first Vision-Language-Action model (its first robotics model) and first ternary multimodal — running fully on-device on iPhone through Apple Core AI. BitVLA takes an image + a natural-language instruction and predicts a 7-DoF robot end-effector action (Δx, Δy, Δz, Δroll, Δpitch, Δyaw, gripper) — OpenVLA-style discrete action tokens. Every transformer weight, in both the language model and the vision tower, is 1.58-bit ternary ({-1, 0, +1}), so the whole policy is ~32× smaller than a full-precision VLA (OpenVLA-7.5B ≈ 15 GB) and fits on a phone. The LLM’s per-layer linears run the custom 2-bit packed-ternary Metal kernel (shared with BitCPM-8B) on the iPhone GPU.

On-device (iPhone 17 Pro, A19 Pro — Core AI GPU, greedy)

One image + instruction → 7-DoF action:

stage cold (first run) warm
vision encode (BitSigLIP-SO400M, 256 tokens) 2.7 s 0.13 s
LLM prefill (≈308 positions = 256 image + text, M=1 loop) 11.9 s 8.8 s
action decode (7 tokens, ternary kernel) 0.30 s 0.26 s

Resident ≈ 2 GB, headroom ~6.4 GB, no jetsam. The first run pays the GPU specialization; it caches.

Parity (on-device vs the official model)

Same image + "pick up the remote", action-token argmax over the 256-bin head, then BOUNDS-Q99 un-normalization (bridge_orig):

  Δx Δy Δz Δroll Δpitch Δyaw gripper
BitVLA on iPhone 0.028 -0.000 0.040 0.081 -0.092 -0.207 0.996
official (fork transformers, Mac) 0.028 0.003 0.040 0.081 -0.092 -0.207 0.996

6/7 action tokens identical; the 7-DoF action is effectively the official model’s (the one differing dim is ~0 either way — a near-boundary bin flip). The vision tower + projector match the official image embeddings at per-token cosine 0.999.

Architecture

Conversion

Conversion scripts: ../conversion/export_bitvla_llm_decode_pipelined.py, ../conversion/export_bitvla_vision.py (+ conversion/bitvla/ for the torch reference, the official-model oracle, and the CPU/engine gates).

Run

On-device in the zoo’s CoreAIChat app (the BitVLA sheet): pick an image + a robot instruction → predict → 7-DoF action. Or drive the two .aimodels directly: pixel_values → vision → 256 embeds → [host splice] → LLM S=1 loop → 7 action tokens → bins → un-normalize.

Why a ternary VLA on iPhone

VLA / robotics policies don’t exist in Apple’s stock models or in MLX, and ternary VLA otherwise runs only on bitnet.cpp (CPU). 1.58-bit makes a 7-DoF manipulation policy small enough to run on the phone GPU — the durable Core AI edge (a kernel MLX lacks, on a device MLX doesn’t ship to), now for robotics.