Action chunking

  • action chunk
  • chunk size
  • chunkSize
  • nActionSteps
  • receding horizon execution
Definition

Action chunking means predicting a block of future actions from a single observation and executing part of that block before looking again. ACT is named after it: chunkSize is how many actions the model predicts, nActionSteps is how many of them the runtime executes, and the lerobot default is 100 for both.

Last updated 2026-08-09

The failure it is built to suppress

A policy that predicts one action per observation has to be right at every frame, and it never quite is. A slightly wrong command leaves the arm in a pose a little outside the demonstrations, the next prediction is made from that unfamiliar pose and is worse, and the error feeds on itself. The name for this is compounding error. On hardware it looks like a policy that starts confidently and wanders off partway through the episode.

Chunking attacks it from two sides at once. The number of decision points per episode drops by the factor nActionSteps, so there are fewer opportunities to step off the data. And the actions inside a chunk were produced in one pass from the same observation, so they form a trajectory the model committed to rather than a sequence of independent guesses that have to agree by luck.

The two numbers, and why they are not the same knob

ParameterFixed whenConstraintWhat moving it changes
chunkSizeTraining time, it is architecturalMust be at least nActionStepsHow far ahead the model plans. Raising it later means training again
nActionStepsExecution timeMust not exceed chunkSizeHow much of each plan runs before a fresh observation arrives
Inside the executed window the policy is blind

Actions between two observations run open loop. With nActionSteps at 100 that is a long stretch of motion in which a shifted object goes unnoticed until the window ends. Lowering nActionSteps while leaving chunkSize alone is the standard response, and it costs nothing but extra inferences.

On ACT those extra inferences really are close to free: about 20 ms per action step, against an arm running at tens of hertz. Models that refine noise over several passes cannot make the same trade, because a policy at about 485 ms per action step that replanned every few steps would spend most of its time thinking rather than moving.

ACT is the only model whose training form exposes chunkSize and nActionSteps. The rest of its recipe is prefilled and rarely worth touching on a first run: batch size 8, learning rate 1e-5, 100,000 steps and no gradient accumulation. The other four models chunk internally with values you do not set.

/policies/act works through both settings with the failure modes they fix, and /train/act-on-so-100 runs the configuration end to end on real hardware.