- b1k single-task checkpoints
task1/β picking_up_trash, human demos + recovery datatask2/β putting_away_Halloween_decorations, human demos + recovery data (round 0)task2/β¦_srcmeta_β¦β same round-0 fine-tune, with data-source metadata (pi0.7-style)task2/task2_demo_only_β¦β human-demos-only baseline (no recoveries)task5_human_only_21ktask10_taskfinetune
b1k single-task checkpoints
Params-only checkpoints for offline evaluation. train_state is not included, so these
cannot be resumed from β inference/eval only.
task1/ β picking_up_trash, human demos + recovery data
Single-task fine-tune of the 2025 winner's checkpoint_2 (the official checkpoint covering
task 1) on task 1 = picking_up_trash, using the 200 human demos plus 788 scripted recovery
episodes from fastwalker1118/B1k_Recovery (task1/Demo+Recovery). Planned 5 epochs; these are
the checkpoints nearest the epoch boundaries (one epoch = 15,089 steps).
| checkpoint | step | epochs | action_loss at that step (train set) |
|---|---|---|---|
task1/task1_demo_recovery_epoch1_15000 |
15,000 | 0.99 | 0.0635 |
task1/task1_demo_recovery_epoch2_30000 |
30,000 | 1.99 | 0.0461 |
task1/task1_demo_recovery_epoch3_45000 |
45,000 | 2.98 | 0.0368 |
| init | IliaLarchenko/behavior_submission checkpoint_2 (params) |
| config | pi_behavior_b1k_fast (FSDP 4, EMA, FAST aux loss), B1K_TASK_SPACE=100 |
| data | 988 episodes (200 demos + 788 recoveries), 1,931,447 samples per epoch; source videos (head 720Β², wrists 480Β²) re-encoded to 224Γ224 with lanczos + the upstream x265 option string (crf 28, keyint 8), frame alignment verified |
| batch | 128 on 4Γ H200 |
| LR | 2.5e-7 β 2.5e-6 at step 500 β cosine to 2.5e-7 at step 75,445 (5 epochs) |
| norm stats | 2025 stats + robot-frame base_qvel fix (state dims 0β2) + trunk_3 un-frozen: action dim 6 / state trunk_3 mean 0, std 0.1315, measured on the recoveries (the 2025 stats have std β 0 because the demos never rotate the waist; the recoveries do) |
| targets | normalized flow-matching action targets clipped to Β±10Ο (scripted-planner recoveries have rare far-out chunk starts) |
Eval: load the norm stats shipped in each checkpoint's
assets/, not the 2025checkpoint_2stats. With the 2025 stats the waist (trunk_3) input and output are mis-scaled.
action_loss is training-set loss only (no validation split, no rollouts yet).
task2/ β putting_away_Halloween_decorations, human demos + recovery data (round 0)
Single-task fine-tune of the 2025 winner's checkpoint_1 (the official checkpoint covering task 2) on
task 2 = putting_away_Halloween_decorations, using the 200 human demos plus 543 scripted recovery episodes
from fastwalker1118/B1k_Recovery (task2/Demo+Recovery_video_r0a). The recoveries start from failure frames
that a video-only inspection found in checkpoint_1 rollouts, and from edited variants of those frames
(no public-test instances). 2 epochs; one epoch =
31,262 steps.
| checkpoint | step | epochs | action_loss near that step (train set) |
|---|---|---|---|
task2/task2_demo_recovery_video_r0a_epoch1_30000 |
30,000 | 0.96 | 0.0476 |
task2/task2_demo_recovery_video_r0a_epoch2_62523 |
62,523 | 2.00 | 0.0372 |
| init | IliaLarchenko/behavior_submission checkpoint_1 (params) |
| config | pi_behavior_b1k_fast (FSDP 4, EMA, FAST aux loss), B1K_TASK_SPACE=100 |
| data | 743 episodes (200 demos + 543 recoveries), 4,001,658 samples per epoch; all videos re-encoded to 224Γ224 with lanczos + the full upstream x265 option string (crf 28, keyint 8) |
| batch | 128 on 4Γ H200 |
| LR | 2.5e-7 β 2.5e-6 at step 500 β cosine to 2.5e-7 at step 62,524 (2 epochs) |
| norm stats | 2025 checkpoint_1 stats + robot-frame base_qvel fix (state dims 0β2); trunk_3 stays frozen (the task-2 recoveries never rotate the waist) |
| targets | normalized flow-matching action targets clipped to Β±10Ο |
Eval: robot-frame base velocity in the state, and the norm stats shipped in each checkpoint's
assets/.
action_loss is training-set loss only (no validation split).
task2/β¦_srcmeta_β¦ β same round-0 fine-tune, with data-source metadata (pi0.7-style)
Identical to the task2/ round-0 fine-tune above (same data, init, recipe, seed, norm stats) except that every
training example carries its data source as prompt metadata, following Ο0.7 (arXiv 2604.15483, Sec. V-C/V-E):
Data source: human teleoperation. for the 200 human demos, Data source: scripted motion planner. for the 543
recovery episodes. The label is 7 Gemma text tokens embedded with the VLM's own token-embedding table and appended
to the prefix after the state tokens as a causal block (the image/task/stage/state tokens do not attend to it; the
action expert and FAST tokens do); no parameters are added. As in Ο0.7 the metadata is dropped entirely 15% of the
time and per component 5% of the time. At inference set the label (we evaluate human; planner for comparison)
β the patch is task2/source_meta.py; unpatched code runs these weights with no label block at all.
Recoveries come from fastwalker1118/B1k_Recovery (task2/Demo+Recovery_video_r0a). The recoveries start from failure frames
that a video-only inspection found in checkpoint_1 rollouts, and from edited variants of those frames
(no public-test instances). 2 epochs; one epoch =
31,262 steps.
| checkpoint | step | epochs | action_loss near that step (train set) |
|---|---|---|---|
task2/task2_demo_recovery_video_r0a_srcmeta_epoch1_30000 |
30,000 | 0.96 | 0.0476 |
task2/task2_demo_recovery_video_r0a_srcmeta_epoch2_62523 |
62,523 | 2.00 | 0.0358 |
| init | IliaLarchenko/behavior_submission checkpoint_1 (params) |
| config | pi_behavior_b1k_fast (FSDP 4, EMA, FAST aux loss), B1K_TASK_SPACE=100 |
| data | 743 episodes (200 demos + 543 recoveries), 4,001,658 samples per epoch; all videos re-encoded to 224Γ224 with lanczos + the full upstream x265 option string (crf 28, keyint 8) |
| batch | 128 on 4Γ H200 |
| LR | 2.5e-7 β 2.5e-6 at step 500 β cosine to 2.5e-7 at step 62,524 (2 epochs) |
| norm stats | 2025 checkpoint_1 stats + robot-frame base_qvel fix (state dims 0β2); trunk_3 stays frozen (the task-2 recoveries never rotate the waist) |
| targets | normalized flow-matching action targets clipped to Β±10Ο |
Eval: robot-frame base velocity in the state, and the norm stats shipped in each checkpoint's
assets/.
action_loss is training-set loss only (no validation split).
task2/task2_demo_only_β¦ β human-demos-only baseline (no recoveries)
Control for the task2/ round-0 recovery fine-tunes above: the same init, recipe, seed and norm stats, trained for
one epoch on the 200 task-2 human demos only (the demo half of task2/Demo+Recovery_video_r0a, read from the
same 224Γ224 files). It measures how much of the round-0 gain comes from the recoveries rather than from
fine-tuning checkpoint_1 on the 2026 demos.
| checkpoint | step | epochs | action_loss near that step (train set) |
|---|---|---|---|
task2/task2_demo_only_ckpt1_1epoch_21495 |
21,495 | 1.00 | 0.0555 |
| init | IliaLarchenko/behavior_submission checkpoint_1 (params) |
| config | pi_behavior_b1k_fast (FSDP 4, EMA, FAST aux loss), B1K_TASK_SPACE=100 |
| data | 200 human demos, 2,751,612 samples per epoch |
| batch | 128 on 4Γ H200 |
| LR | 2.5e-7 β 2.5e-6 at step 500 β cosine to 2.5e-7 at step 21,496 (1 epoch) |
| norm stats | 2025 checkpoint_1 stats + robot-frame base_qvel fix (state dims 0β2) |
Eval: robot-frame base velocity in the state, and the norm stats shipped in each checkpoint's
assets/.
action_loss is training-set loss only (no validation split).
task5_human_only_21k
Single-task fine-tune of the 50-task meta checkpoint on task 5 = setting_mousetraps,
using the 200 human demonstrations from the 2026 BEHAVIOR-1K challenge set and nothing else.
| init | IliaLarchenko/behavior_50t_checkpoint (params) |
| data | 2026-challenge-demos-224, activity setting_mousetraps, 200 episodes / 2,039,222 frames |
| step | 21,000 of a planned 30,000 (run stopped early; resumable copy retained locally) |
| batch | 224 (32/GPU Γ 7Γ H200), FSDP over 7 devices |
| LR | 8.75e-7 β 8.75e-5 β 1.75e-6, 2,000-step warmup (linear rule off BS-128 / 5e-5) |
| norm stats | norm-stats-fixed (sha256 2b42bdfbβ¦), i.e. 2025 stats with the robot-frame base_qvel correction on state dims 0β2 |
| task space | B1K_TASK_SPACE=100; setting_mousetraps is index 5 in both the 2025 and 2026 tables, so its task/stage embeddings are pretrained, not randomly initialised |
| final logged | action_loss = 0.0209 at step 21,775 |
task10_taskfinetune
Rollout evaluation: see
task10_taskfinetune/EVAL_RESULTS.mdβ 0.0 % success / avg q 0.1917 over 20public_testinstances, vs 5.0 % / 0.1750 for the officialcheckpoint_1. The difference is not statistically significant (sign test p = 1.000).
Single-task fine-tune of the 50-task meta checkpoint on task 10 =
set_up_a_coffee_station_in_your_kitchen, using the 200 human demonstrations from the
2026 BEHAVIOR-1K challenge set and nothing else. Run completed in full.
| init | IliaLarchenko/behavior_50t_checkpoint (params) |
| data | 2026-challenge-demos-224, activity set_up_a_coffee_station_in_your_kitchen, 200 episodes / 1,253,243 frames |
| step | 29,999 of 30,000 (completed, 16 h 54 m on 8Γ H200) |
| batch | 256 (32/GPU Γ 8Γ H200), FSDP over 8 devices |
| LR | flat 5e-6 β init = peak = decay = 5e-6, so no warmup ramp and no cosine decay |
| norm stats | 2025 stats with the robot-frame base_qvel correction on state dims 0β2 (same qvelfix stats as the task-5 runs) |
| task space | B1K_TASK_SPACE=100; set_up_a_coffee_station_in_your_kitchen is index 10 in both the 2025 and 2026 tables, so its task/stage embeddings are pretrained, not randomly initialised |
| final logged | action_loss = 0.0294, total_loss = 0.0565, fast_accuracy = 0.8208 at step 29,975 |
Because the LR is flat with no annealing, the final step is not necessarily the best checkpoint β there is no decay phase to settle into a minimum. Steps 4000/8000/.../28000 were retained locally and can be uploaded if you want to sweep across them.
Video encoding caveat for this checkpoint
Trained on the 2026-challenge-demos-224 build, whose bitstream reports x264 crf=20.0,
keyint=250. Measured against b1k-224x224-gop8-fixed (x265 crf=28.0, keyint=8) on
identical frames, this build is slightly softer: 0.886Γ Laplacian variance, 0.933Γ HF
spectral energy. The downscaling filter is not recorded in the bitstream and is unverified.
No task-success delta has been measured for this difference β it is an input-statistics
observation only.
One video file in the source data (right_realsense .../chunk-010/file-002.mp4, backing 46 of
the 200 episodes) had no moov atom and was unreadable; it was re-encoded from the intact
480Γ480 HEVC original at x264 CRF 23 / GOP 250 to match its neighbours, verified at 43β50 dB
PSNR against the source.
Reading the loss
action_loss here is training-set loss. There is no validation split and no rollout
evaluation has been run, so it says nothing about task success or generalisation. It is also
not comparable across tasks β episode length varies ~6Γ between activities.
Reproducing the input pipeline
The model consumes a 23-dim state extracted from the 61-dim observation.state
(base_qvel 0:3, arm_left 3:10, gripper_left 24:26, arm_right 28:35,
gripper_right 49:51, trunk 53:57), and predicts 23-dim actions with the trunk and both
arms as deltas relative to the current state (use_delta_joint_actions=True); base
velocity and both grippers stay absolute. Action normalisation is per-timestamp
(use_per_timestamp_norm=True) over a 30-step horizon β the scalar mean/std in
norm_stats.json are not what the pipeline divides by for actions.
Cameras are 224Γ224 h264: zed_link_camera_0 (head), left_realsense_link_camera_0,
right_realsense_link_camera_0.
Model tree for fastwalker1118/b1kcheckpoints
Base model
IliaLarchenko/behavior_50t_checkpoint