Document Kuavo checkpoint layout and pinned runtime
Browse files- 50_demos/HF_WATCHER.md +51 -0
- 50_demos/runtime_versions.json +20 -0
- README.md +48 -0
50_demos/HF_WATCHER.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Kuavo 50 demos HF watcher
|
| 2 |
+
|
| 3 |
+
User contract: all four policies at 5k, 10k, 15k and 20k updates (16 checkpoints).
|
| 4 |
+
Repository: private `RwH-Lab/Kuavo_ckpt`, authenticated account `Whalswp`, org write permission verified.
|
| 5 |
+
|
| 6 |
+
| Local native directory (unchanged) | HF directory |
|
| 7 |
+
| --- | --- |
|
| 8 |
+
| `/home/work/mntvol/RwH-Kuavo_ckpt/50_demos/<policy>/checkpoints/005000/` | `50_demos/<policy>/checkpoints/checkpoint-5K/` |
|
| 9 |
+
| `.../010000/` | `.../checkpoint-10K/` |
|
| 10 |
+
| `.../015000/` | `.../checkpoint-15K/` |
|
| 11 |
+
| `.../020000/` | `.../checkpoint-20K/` |
|
| 12 |
+
|
| 13 |
+
Policies: `smolvla`, `multi_task_dit`, `pi05`, `gr00t`.
|
| 14 |
+
Each directory contains the original `pretrained_model/` files plus a SHA256 manifest,
|
| 15 |
+
README and provenance (step proof, effective config, data manifest, pinned model assets,
|
| 16 |
+
policy YAMLs, inference compatibility source, training contract).
|
| 17 |
+
SmolVLA and Pi0.5 are LoRA adapters requiring their pinned base model. DiT and GR00T contain full policy weights.
|
| 18 |
+
Optimizer, scheduler and RNG files stay on KT. They are neither deleted nor uploaded.
|
| 19 |
+
|
| 20 |
+
## Save and integrity gates
|
| 21 |
+
|
| 22 |
+
1. Pin the current production run and its four result paths in `hf_watcher.json`.
|
| 23 |
+
2. Require a numeric native `last` symlink at or after the requested step. The native trainer updates this **after** saving model, processors and complete trainer state.
|
| 24 |
+
3. Require exact `training_step.json`, state20/action23, global64, seed42, 20k total and save interval5k. Require all processor state files and correct full/adapter weight files.
|
| 25 |
+
4. Require at least60 seconds since the last file write. Validate every saved model/processor tensor is finite, with CPU only and two threads.
|
| 26 |
+
5. At20k additionally require the runner's final tensor and offline inference checks to pass for that exact checkpoint. No simulator or real-robot success is claimed.
|
| 27 |
+
6. Record every source size/mtime and content hash; abort if source changes before/during upload. Never rename native checkpoint directories or update trainer links.
|
| 28 |
+
7. Publish one checkpoint in a single atomic HF commit. Resume missing files; reject existing extra or conflicting remote files without overwriting or deleting them.
|
| 29 |
+
8. Verify paths, file count, bytes and content (LFS SHA256 or Git blob SHA1) at the returned commit. Repeating an already matching upload creates no commit.
|
| 30 |
+
9. After all16, audit all trees at one current HF revision. Only `missing=0, extra=0, mismatch=0` marks complete and exits.
|
| 31 |
+
|
| 32 |
+
## Runtime and recovery
|
| 33 |
+
|
| 34 |
+
Start `bash launch_hf_watcher.sh` after the KT bootstrap. The verified tmux session is
|
| 35 |
+
`rwh-50demos-hf-watcher`; the CPU process has an exclusive flock and polls every120 seconds.
|
| 36 |
+
Transient per-checkpoint errors back off up to30 minutes; another checkpoint can proceed.
|
| 37 |
+
The supervisor restarts a failed process after120 seconds; verified state survives restarts.
|
| 38 |
+
Do not run two independent uploaders. The watcher stops after the16-tree final audit passes.
|
| 39 |
+
|
| 40 |
+
Operational state: `/home/work/mntvol/RwH-Kuavo_ckpt/50_demos/_hf_upload/status.json`.
|
| 41 |
+
Logs: the same directory's `watcher.log`; small provenance/manifests: `payloads/`.
|
| 42 |
+
These are production upload evidence, not smoke/test outputs. No large model staging copies are made.
|
| 43 |
+
Stopping the watcher does not stop or modify training. A reclaimed KT container requires re-entering its new session and restarting this launcher against persistent files.
|
| 44 |
+
|
| 45 |
+
Read-only remote re-audit after completion: invoke `hf_watcher.py --config hf_watcher.json --once --audit-remote` under the same bootstrap. While the daemon holds its lock, inspect its state or pause/restart the watcher before running that command; do not touch training processes.
|
| 46 |
+
|
| 47 |
+
## Verification performed
|
| 48 |
+
|
| 49 |
+
12 CPU lifecycle regression tests cover all16 checkpoints, restart/idempotency, missing completion marker, earlier marker, stability delay, wrong step, final-runner gate, missing processor state, NaN tensors, changed source, extra remote files and same-size corrupt remote weights.
|
| 50 |
+
All test fixture directories use `TemporaryDirectory` and are removed immediately.
|
| 51 |
+
An actual SmolVLA5k production upload passed19-file path/size/hash comparison. Repeating it passed with no additional commit. Production checkpoints are retained; no HF test prefix/repository was created.
|
50_demos/runtime_versions.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"torch": "2.9.1",
|
| 3 |
+
"torchvision": "0.24.1",
|
| 4 |
+
"transformers": "5.3.0",
|
| 5 |
+
"peft": "0.20.0",
|
| 6 |
+
"accelerate": "1.14.0",
|
| 7 |
+
"diffusers": "0.35.1",
|
| 8 |
+
"draccus": "0.10.0",
|
| 9 |
+
"av": "15.1.0",
|
| 10 |
+
"torchcodec": "0.8.0",
|
| 11 |
+
"numpy": "2.2.6",
|
| 12 |
+
"num2words": "0.5.14",
|
| 13 |
+
"huggingface-hub": "1.28.0",
|
| 14 |
+
"safetensors": "0.8.0",
|
| 15 |
+
"code_commits": {
|
| 16 |
+
"LeTools": "6d2002613241ae2a32c5d8fd753f80caa1383fba",
|
| 17 |
+
"LeRobot": "a07f22e22ce88cddff1f6eddced9ea008fbfc37c"
|
| 18 |
+
},
|
| 19 |
+
"python": "3.12.13"
|
| 20 |
+
}
|
README.md
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
tags:
|
| 3 |
+
- robotics
|
| 4 |
+
- kuavo
|
| 5 |
+
- imitation-learning
|
| 6 |
+
---
|
| 7 |
+
|
| 8 |
+
# RwH Kuavo checkpoints
|
| 9 |
+
|
| 10 |
+
Kuavo 5W policies trained on the private RwH-Lab/kuavo-dataset-skill dataset.
|
| 11 |
+
This repository receives saved checkpoints as training progresses; the presence
|
| 12 |
+
of an early checkpoint does not imply the full 20k run has finished.
|
| 13 |
+
|
| 14 |
+
## 50 demos
|
| 15 |
+
|
| 16 |
+
Four policies: SmolVLA (`smolvla`), MultiTask-DiT (`multi_task_dit`),
|
| 17 |
+
Pi0.5 (`pi05`), GR00T N1.5 (`gr00t`). Each policy publishes four checkpoints:
|
| 18 |
+
|
| 19 |
+
```text
|
| 20 |
+
50_demos/<policy>/checkpoints/
|
| 21 |
+
checkpoint-5K/
|
| 22 |
+
checkpoint-10K/
|
| 23 |
+
checkpoint-15K/
|
| 24 |
+
checkpoint-20K/
|
| 25 |
+
```
|
| 26 |
+
|
| 27 |
+
Every published directory contains `pretrained_model/`, `checkpoint_manifest.json`,
|
| 28 |
+
a loading note and provenance. Manifests record the source step and each payload
|
| 29 |
+
file's size and SHA256. Publishing verifies remote paths and content hashes.
|
| 30 |
+
Optimizer/scheduler/RNG state is retained on the training server.
|
| 31 |
+
|
| 32 |
+
SmolVLA and Pi0.5 are **LoRA adapters**, not standalone base weights. Their original
|
| 33 |
+
HF base model IDs and pinned revisions are recorded in provenance/model_assets.json.
|
| 34 |
+
GR00T and DiT contain full policy weights. Original upstream access requirements apply.
|
| 35 |
+
|
| 36 |
+
Training contract: 50 original episodes, 7 tasks, 30→10Hz, current state20D,
|
| 37 |
+
action23D (future actual torso position4D, recorded arm/gripper commands16D,
|
| 38 |
+
recorded base velocity commands3D), global batch64 per policy, seed42,
|
| 39 |
+
20k updates, no validation split. Samples do not cross task boundaries.
|
| 40 |
+
|
| 41 |
+
Use both saved processors and their normalization statistics when loading a checkpoint.
|
| 42 |
+
GR00T needs the included compatibility patch to preserve per-sample task text;
|
| 43 |
+
GR00T and DiT need aspect-preserving224×224 letterbox preprocessing. Follow each
|
| 44 |
+
checkpoint's provenance/CONTRACT.md and compat.py. Use runtime_versions.json to
|
| 45 |
+
identify the exact LeTools/LeRobot commits and package versions.
|
| 46 |
+
|
| 47 |
+
No simulator or real-robot task success is claimed by offline training checks.
|
| 48 |
+
See [watcher design](50_demos/HF_WATCHER.md) for save-completion and integrity gates.
|