Downloads · 30 days
0
m1b/kairos_press_button_full_train_16v3_reg_token_save_8pf_rms
kairos_press_button_full_train_16v3_reg_token_save_8pf_rms is a machine learning model from m1b. Use it for the machine learning task on the model card, and read the license before you ship it in a product. The card lists the license as other.
Final checkpoints from a 3-phase training run on RMBench pressbutton (single task), testing a flat register-token memory bank for WAM ("V16.3-RT"). Trained from scratch on this task — no task-pretrained init. The vide…
Downloads · 30 days
0
Access
Public
Updated Sep 14, 2026
Repo size
27.6 GB
Likes
0
Public
Click a slice to open those files.
.pt27.6 GB · 100%
From the Hugging Face model README
Final checkpoints from a 3-phase training run on RMBench press_button (single
task), testing a flat register-token memory bank for WAM ("V16.3-RT").
Trained from scratch on this task — no task-pretrained init. The video tower
warm-starts from training/kairos/step-4500.safetensors.
50 episodes, 26,352 trainable windows, LeRobot v2.1, mosaic camera,
action space aloha_agilex_absolute_joint_14d (14-dim absolute joint).
Topology: 1 node x 8 x A800-80GB.
A flat 64-token memory bank. Tokens are evicted independently rather than a whole frame-slot at a time, by
keep_i = region_rms_i * 0.5 ** (age_i / 8 chunks)
8 mosaic-aligned tokens are written per retained frame. The region grid is a 2x5 rectangular tiling — 12 regions of 10 patches on the 12x10 policy patch grid. Rectangular rather than square so that no region straddles the wrist-camera seam (patch column 5) or the wrist/head seam (patch row 4).
Each phase is a separate run directory with its own step counter.
INIT_CKPT between phases is a warm start (begins at step 0 from those
weights), not a resume — the 11K total steps below are 5000+5000+1000 across
three directories, not one continuous counter.
| phase | steps | bank | trains | ZeRO | LR | final loss |
|---|---|---|---|---|---|---|
| 1 p1_nomem | 5000 | off | towers | 2 | 2e-4 | 0.0030 |
| 2 p2_mem | 5000 | on | towers + bank | 2 | 1e-4 | 0.0019 |
| 3 p3_memonly | 1000 | on | bank only (~4.7M params) | 0 | 1e-4 | 0.0002 (action-only) |
Phase 1 is the control: it exists so that "memory helped" is measured against a backbone produced by this run on this task, not one inherited from another task.
Phase 2 is joint training and must be reported as one number. Its curve mixes "the towers got 5000 more steps" with "memory helped" — the two effects cannot be separated from it.
Phase 3's objective is not phase 1/2's objective. In phases 1-2 the logged
loss is video + action (final step: loss=0.0020 loss_video=0.0018 loss_action=0.0002). In phase 3 (KAIROS_MEM_FINETUNE_ONLY=1) the logged
loss equals loss_action exactly; video loss is reported but not
optimized. Phase-3 loss is not comparable to phase-1/2 loss.
Phase 3 moved the loss very little: action loss ~0.0003 -> ~0.0002 over 1000 steps, and the reported (unoptimized) video loss stayed flat around 0.0016-0.0018. At the log's 4-decimal precision these differences are 1-2 quantisation units — the logs cannot resolve whether phase 3 improved anything.
No held-out evaluation exists. EVAL_EVERY=0 in every phase, and this is
enforced rather than merely unset:
validate_kairos_memory_inline_eval_contract in training/little_wam/train.py
raises for memory modes, because inline eval uses the stateless
infer_action path, which does not reproduce the training-time memory cache.
Every loss quoted above is training loss over the same 50 episodes, seen for
roughly 833 epochs. These numbers speak to fit, not generalisation.
Not deployable as-is: the streaming counterpart for the flat bank is
unwritten (StreamingSlotState refuses a flat-bank policy), so closed-loop
inference from these weights is not yet supported.
token_half_life_chunks=8 and the gate threshold were set by argument, not
measurement. Re-derive them from logs/surprise.rank*.jsonl with
tools/measure_latent_surprise_rms.py before treating either as tuned.
Weights (last checkpoint of each phase; no trainer state/optimizer files):
p1_nomem_step_005000.ptp2_mem_step_005000.ptp3_memonly_step_001000.ptPer-phase metadata (<phase>_latest.json, <phase>_train_args.json,
<phase>_dataset_summary.json, <phase>_normalization_stats.json) and the
configs/env scripts used to launch each phase are included alongside the
weights.
surprise_logs/ holds the per-chunk surprise score dumps, rank 0 only, one
file per phase that produced them. Phase 1 produced none: its memory bank is
off, so there is no surprise signal to dump. These are the inputs to
tools/measure_latent_surprise_rms.py, which re-derives
token_half_life_chunks and the gate threshold from a run (both were set by
argument, not measurement, in this run — as noted above).
Branch run/kairos-press-button-16v3-reg-token, commit 24d6e76b,
ACP job pt-hu8vvvkq.