Buckets:
| Name | Size | Uploaded | Xet hash |
|---|---|---|---|
| all_rollouts | 160 items | ||
| memory_selection | 14 items | ||
| raw_memdumps | 3 items | ||
| results_csv | 16 items | ||
| showcase | 15 items | ||
| README.md | 3.42 kB xet | b6d8eae8 | |
| RESULTS.md | 1.04 kB xet | eee7750f | |
| TECHNICAL_REPORT.md | 8.58 kB xet | e67ca86c | |
| THE_FIX.md | 1.14 kB xet | 10427ba8 | |
| viz_aam_memory.py | 3.59 kB xet | f8308369 |
Temporal-VLA — HAMLET-AAM on GR00T N1.6 / RoboMME
AAM = Action-aware Adaptive Memory. A memory module on top of the known-good HAMLET
window architecture (GR00T-N1.6 backbone). It keeps a log-spaced 8-frame window of the
past ([-1024,-512,-256,-128,-64,-32,-16,0] env-steps) and a learned gate that assigns a
soft weight to each of the 8 memory slots every policy call — "how much to trust each past
observation right now" — before they enter the memory transformer that conditions the action
head. A second head predicts how the current observation follows from the (weighted) memory
plus the last action chunk (action-conditioned forward prediction).
This bucket is everything you need to observe, debug, and trace the model at checkpoint-60000.
TL;DR result (this checkpoint, our eval harness, 10 eps/task)
| Suite | AAM-60k | vanilla N1.6 | HAMLET | read |
|---|---|---|---|---|
| Counting | 5.0 | 14 | 17.5 | ✗ gate can't integrate a running count |
| Permanence | 20.0 | 9 | 19.5 | ✓ matches HAMLET — memory recall works |
| Reference | 12.5 | 11 | 15 | ~ between vanilla and HAMLET |
| Imitation | 5.0 | 6.5 | 14 | ✗ log-window samples the long demo too sparsely |
| Total | 10.6 | 10.12 | 16.5 | ≈ vanilla overall; a real, interpretable trade-off |
The headline finding: the adaptive gate is genuinely good at selective recall (Permanence,
where it ties HAMLET and doubles vanilla) but bad at temporal integration (Counting, where it
falls below even no-memory). See memory_selection/HOW_TO_READ.md and the showcase/ clips.
A severe inference bug was found and fixed first (memory history was reset every policy call, collapsing the 8-frame window to 8 copies of the current frame). All results here are AFTER the fix. See
THE_FIX.md.
How to navigate / trace
showcase/— start here. 5 curated episodes, each folder pairs:rollout.mp4— what the robot actually did (front + wrist cams; the red-bordered frames at the start are the demo the model "watched")memory_heatmap.png— what the memory gate selected, aligned to the same episodegate_weights_full_episode.jsonl— raw per-call gate weights for that task (trace it yourself) Folders:01_PERMANENCE_success,02_PERMANENCE_fail,03_COUNTING_success,04_COUNTING_fail,05_IMITATION_fail.
memory_selection/— all 13 gate heatmaps (VideoUnmask, BinFill, MoveCube episodes) +HOW_TO_READ.mdexplaining the visualization and the Permanence-vs-Counting contrast.all_rollouts/<Suite>/<Task>/— every one of the 160 rollout videos from the full 16-task eval, named..._episode_N-{success|failure}.mp4. Browse any task's successes/failures.results_csv/— the rawsimulation_results.csvfor all 16 tasks (col 3 = success bool).raw_memdumps/— the full per-call gate-weight logs (JSONL) for the 3 instrumented tasks. Each line:{reset, t_hist, steps_back[8], weight[8]}.reset:truemarks an episode start.THE_FIX.md— the inference bug and the one-line-ish fix, for reproducibility.
Reproduce a heatmap yourself
python scripts/viz_aam_memory.py <task_video_dir> <task_memdump.jsonl> <out_dir>
(script included as viz_aam_memory.py). Set AAM_MEMDUMP=/path/file.jsonl when running the
eval to regenerate the raw gate logs.
- Total size
- 367 MB
- Files
- 213
- Last updated
- Jul 22
- Pre-warmed CDN
- US EU US EU