VLA architecture atlas

How every policy in vla.cpp and vla.simd is wired.

Block diagrams of the vision-language-action policies the two engines serve, drawn from their C++ forward passes rather than from the papers. Layer counts, widths and token counts are the ones the engines actually run, and each figure marks what is computed once per observation and what repeats on every denoising step.

-policies
-in vla.cpp
-in vla.simd

vla.cpp runs them on GPUs, NPUs and CPUs through ggml; vla.simd runs them on CPU-only robots with hand-written SIMD kernels.

// archetypes

Where the policies differ: how the action head reads the scene

Every policy here turns cameras, an instruction and the robot's joint state into a chunk of future actions. They differ mostly in one connection: the path from the perception backbone into the action head. That connection is what makes some heads cheap to iterate and others free.

// compare

All policies side by side

Configurations of the checkpoints the engines ship with. Chunk is horizon × action dimension as emitted by the head, before any padding is stripped.

ModelEngineVisionLanguage / backboneAction headDecodingChunk
// models

Model by model

Each figure follows one inference call left to right. Open the specification under a figure for the layer-level numbers.

// contribute

Spot a mistake, or missing a policy?

Both buttons open a pre-filled issue on GitHub. Every diagram is meant to match the C++ that runs it, so a pointer to the source file or config value helps most.

// fix

Report an incorrect diagram

A wrong layer count, width or token count, a missing connection, or a block that runs at a different time than drawn.

Report an issue ↗
// request

Request a new VLA illustration

A policy you would like drawn the same way, whether it already runs in vla.cpp or vla.simd or not yet.

Request a VLA ↗