Our policy is based on the π0.5 architecture, with modifications introduced by the 2025 BEHAVIOR Challenge winner:
- 100 learned task embeddings instead of a text prompt,
- correlated noise for flow matching,
- every action-expert layer reading all VLM layers,
- an auxiliary FAST loss,
- a voted task stage fed back as input.
Training phases
Phase 1: Demonstrations only.
The model starts from the winner’s released checkpoint and trains on the 20,000 demonstrations of the 100 challenge tasks of BEHAVIOR-1K 2026. The policy predicts chunks of 30 actions. The learning rate follows a cosine schedule that peaks at 1e-4, over a 200,000-step horizon. Its last checkpoint seeded the second phase.
Phase 2: Demonstrations and rollout.
In the second phase the policy also learns from its own rollouts. It trains on 8 B200 GPUs with a batch of 1,024 at a learning rate of 1e-5.
Collection A fleet of workstations and cluster nodes runs the newest published checkpoint on training instances and records every episode. Collection runs in waves of about one day. Each wave's budget is spread over the tasks according to the most recent success rate of each task:
- Tasks that rarely succeed but whose failures already complete part of the goal receive the largest budget, because they are closest to their first success.
- Tasks with uncertain outcomes receive a medium budget.
- Tasks that are already solved reliably, or that already have enough successes in training, receive only a few episodes.
- Tasks that make no progress at all keep a small minimum budget, so they are never dropped silently.
Iterations Training proceeds in iterations of up to 10,000 steps. When a wave finishes, its episodes are built into a dataset that joins the mixture at the next iteration boundary. The fleet then switches to the checkpoint published there, so it always collects with a checkpoint about one iteration old.
Training data and mixture Every successful rollout is used for training. A failed rollout is used only if the robot made real progress in it. Progress is measured by the task's goal conditions, the same ones that define the partial Q-score. A failed rollout must satisfy at least 10% of them through its own actions. In addition, a few datasets of failed episodes are used only as negative examples.
Data Balancing The batch is first balanced across tasks, using the demonstrations alone. Every task has 200 demonstrations, but their average length differs by a factor of 12 between the shortest and the longest task. If frames were drawn uniformly, a long task would therefore be drawn 12 times as often as a short one. Instead, a task's weight grows with the total length of its demonstrations raised to the power 0.35. A task whose demonstrations are twice as long is drawn 1.27 times as often, and the 12-fold spread in length shrinks to a 2.4-fold spread in weight. Three tasks on which the policy never made any progress are kept at one fifth of this weight. Rollouts are then added without changing these task weights. Each task's total share of the batch, demonstrations and rollouts together, stays equal to its demonstration-only weight. Rollouts only replace part of the task's demonstration frames. Inside each task, a rollout share is set from the rollout data the task has:
- its number of successes,
- the progress made by its failed rollouts,
- its recent success rate.
Rollout-Demonstration-Ratio Within the rollouts of a task, faster successes are drawn more often, and older waves fade out with a half-life of about 21,000 steps. Within the demonstrations frames where the whole robot stands still are also removed from the demonstrations. A frame counts as still when the base does not move and no joint target changes, for at least 30 frames in a row (1 s). A frame is removed only if its whole 30-action chunk lies inside such a pause, so the policy still learns when to move off again. This removes 2.0% of all demonstration frames, 4.4% lie inside pauses.
Labels Every frame carries a binary advantage label in the style of RECAP. Demonstrations and successful rollouts are labelled good. A failed rollout is labelled good up to the last goal predicate it satisfied. The run-up to each satisfied predicate is shortened to the time a successful episode of the same task needs for that step. Everything else is labelled bad: the trimmed run-up, everything after the last satisfied predicate, and failed rollouts without progress. Bad frames stay in the action loss under their label, so the policy learns what a stalled motion looks like. Each frame keeps its label with probability 0.8 during training, so the policy also learns to act without one. Phase 2 was not run with one fixed recipe. The rollout share, the per-task shares and the use of failed rollouts were adjusted over the course of training, and the settings above are the ones in use when the final checkpoint was produced.