CanIEmbody

Action horizon

Also: prediction horizon, execution horizon, chunk size, n_action_steps

How many future action steps a policy predicts per call (prediction horizon) and how many it executes before replanning (execution horizon).

"Action horizon" names two different quantities, and published tables often mix them. The prediction horizon is the number of future actions the model outputs per inference call, which is the length of the action chunk. The execution horizon is how many of those actions the robot executes before the policy is called again. Chi et al.'s Diffusion Policy paper (2023) defines both: "T_o as the observation horizon, T_p as the action prediction horizon and T_a as the action execution horizon". It found an execution horizon of 8 steps optimal for most of its tasks, trading temporal consistency against reaction time.

Names differ by codebase. In LeRobot v0.6.1, ACT, SmolVLA and π0 call the prediction horizon chunk_size and the execution horizon n_action_steps; Diffusion Policy calls the prediction horizon horizon. The π0 configuration notes that chunk_size is what openpi calls action_horizon. Defaults are 100/100 for ACT, 50/50 for SmolVLA and π0, 64/32 for Diffusion Policy, and 40/40 for GR00T N1.7.

A horizon in steps means nothing without the control rate. Fifty steps is one second at 50 Hz and about 1.7 seconds at 30 Hz. In time units, the execution horizon is the longest the robot runs open-loop between observations under synchronous inference.

A common misconception is that longer horizons are simply better or worse. Longer chunks mean fewer model calls and smoother motion but slower reaction to change. LeRobot's async-inference docs also warn that larger chunks "might also result in less precise actions". The right value depends on the task, the control rate and inference latency.

Policies where this matters

ACT · SmolVLA · π0 · Diffusion Policy · GR00T N1.7

Related

Action chunking · Control rate · Inference latency · Diffusion policy · Real-time chunking

Sources

  1. T1 · upstream documentedpapersource 2023-03-07verified 2026-10-24 (1d ago)

    Diffusion Policy defines prediction and execution horizons; 8-step execution optimal for most tasks.

    “found the action horizon of 8 steps to be optimal for most tasks that we tested.”
    https://arxiv.org/html/2303.04137
  2. T1 · upstream documentedsource-codesource 2026-08-03verified 2026-10-24 (1d ago)lerobot 0.6.1

    LeRobot π0 chunk_size equals openpi action_horizon.

    “chunk_size: int = 50 # Number of action steps to predict, in openpi called "action_horizon"”
    https://github.com/huggingface/lerobot/blob/v0.6.1/src/lerobot/policies/pi0/configuration_pi0.py
  3. T1 · upstream documentedsource-codesource 2026-08-03verified 2026-10-24 (1d ago)lerobot 0.6.1

    LeRobot Diffusion Policy default horizon 64, n_action_steps 32.

    “horizon: int = 64”
    https://github.com/huggingface/lerobot/blob/v0.6.1/src/lerobot/policies/diffusion/configuration_diffusion.py
  4. T1 · upstream documentedsource-codesource 2026-08-03verified 2026-10-24 (1d ago)lerobot 0.6.1

    LeRobot GR00T N1.7 default chunk_size 40.

    “chunk_size: int = 40”
    https://github.com/huggingface/lerobot/blob/v0.6.1/src/lerobot/policies/groot/configuration_groot.py
  5. T1 · upstream documentedofficial-docssource 2026-08-03verified 2026-10-24 (1d ago)lerobot 0.6.1

    LeRobot async docs: larger chunks may reduce precision.

    “However, larger values of `actions_per_chunk` might also result in less precise actions, due to the compounding errors consequent to predicting actions over longer timespans.”
    https://github.com/huggingface/lerobot/blob/v0.6.1/docs/source/async.mdx