Commit 18ae99d
committed
feat(v7-c03): self-describing checkpoint metadata + inspector CLI
Closes V7-C03 (cppmega-mlx-91h1): safetensors checkpoints now carry
a JSON-serialised metadata header with arch/train/opt/version so a
loader (or human via inspector CLI) can tell what's inside without
guessing.
Backend (cppmega_v4/runner/stages.py):
- _build_ckpt_metadata builds a metadata dict at save time:
* cppmega_version: "v7-c03"
* arch: {config_hash, config_json} (sha256 over nodes/edges/dim_env)
* train: {global_step}
* opt: {kind, lr}
- Both checkpoint_save_path and opt_state_save_path now pass this
dict to safetensors.mlx.save_file(metadata=...).
- On load, read_ckpt_metadata reads the header back and validates
arch.config_hash against the live spec; mismatch surfaces a
metadata_warning. opts.ckpt_strict=True rolls back the loaded_path
field (downstream sees the load as if it didn't happen).
- opt.kind mismatch (saved AdamW, loading into Lion context) also
appended to the warning.
CLI (cppmega_v4/tools/ckpt_inspect.py):
python -m cppmega_v4.tools.ckpt_inspect FILE → pretty-prints
metadata as sorted JSON, or 'no metadata' + exit 1.
Tests (tests/v4/test_checkpoint_metadata.py): 5/5 —
* Round-trip arch/train/opt/version keys after a 2-step save.
* Match → metadata populated, no warning.
* Mismatched intermediate_size → warning contains
"arch.config_hash mismatch".
* ckpt_strict=True on mismatch → loaded_path=None.
* CLI inspector emits parseable JSON with version + hash.
- Full stage_train + checkpoint regression: 75/75 passing.1 parent 3a742fc commit 18ae99d
4 files changed
Lines changed: 269 additions & 2 deletions
File tree
- cppmega_v4
- runner
- tools
- tests/v4
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1109 | 1109 | | |
1110 | 1110 | | |
1111 | 1111 | | |
| 1112 | + | |
| 1113 | + | |
1112 | 1114 | | |
1113 | 1115 | | |
1114 | 1116 | | |
| |||
1119 | 1121 | | |
1120 | 1122 | | |
1121 | 1123 | | |
| 1124 | + | |
| 1125 | + | |
| 1126 | + | |
| 1127 | + | |
| 1128 | + | |
| 1129 | + | |
| 1130 | + | |
| 1131 | + | |
| 1132 | + | |
| 1133 | + | |
| 1134 | + | |
| 1135 | + | |
| 1136 | + | |
| 1137 | + | |
| 1138 | + | |
| 1139 | + | |
| 1140 | + | |
| 1141 | + | |
| 1142 | + | |
| 1143 | + | |
| 1144 | + | |
| 1145 | + | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
1122 | 1164 | | |
1123 | 1165 | | |
1124 | 1166 | | |
| |||
1343 | 1385 | | |
1344 | 1386 | | |
1345 | 1387 | | |
| 1388 | + | |
| 1389 | + | |
1346 | 1390 | | |
1347 | 1391 | | |
1348 | 1392 | | |
| 1393 | + | |
| 1394 | + | |
| 1395 | + | |
| 1396 | + | |
1349 | 1397 | | |
1350 | 1398 | | |
1351 | 1399 | | |
1352 | 1400 | | |
1353 | | - | |
| 1401 | + | |
1354 | 1402 | | |
1355 | 1403 | | |
1356 | 1404 | | |
| |||
1370 | 1418 | | |
1371 | 1419 | | |
1372 | 1420 | | |
1373 | | - | |
| 1421 | + | |
| 1422 | + | |
1374 | 1423 | | |
1375 | 1424 | | |
1376 | 1425 | | |
| |||
1515 | 1564 | | |
1516 | 1565 | | |
1517 | 1566 | | |
| 1567 | + | |
| 1568 | + | |
1518 | 1569 | | |
1519 | 1570 | | |
1520 | 1571 | | |
| |||
1677 | 1728 | | |
1678 | 1729 | | |
1679 | 1730 | | |
| 1731 | + | |
| 1732 | + | |
| 1733 | + | |
| 1734 | + | |
| 1735 | + | |
| 1736 | + | |
| 1737 | + | |
| 1738 | + | |
| 1739 | + | |
| 1740 | + | |
| 1741 | + | |
| 1742 | + | |
| 1743 | + | |
| 1744 | + | |
| 1745 | + | |
| 1746 | + | |
| 1747 | + | |
| 1748 | + | |
| 1749 | + | |
| 1750 | + | |
| 1751 | + | |
| 1752 | + | |
| 1753 | + | |
| 1754 | + | |
| 1755 | + | |
| 1756 | + | |
| 1757 | + | |
| 1758 | + | |
| 1759 | + | |
| 1760 | + | |
| 1761 | + | |
| 1762 | + | |
| 1763 | + | |
| 1764 | + | |
| 1765 | + | |
| 1766 | + | |
| 1767 | + | |
| 1768 | + | |
| 1769 | + | |
| 1770 | + | |
| 1771 | + | |
| 1772 | + | |
| 1773 | + | |
| 1774 | + | |
| 1775 | + | |
| 1776 | + | |
| 1777 | + | |
| 1778 | + | |
| 1779 | + | |
| 1780 | + | |
| 1781 | + | |
| 1782 | + | |
| 1783 | + | |
| 1784 | + | |
| 1785 | + | |
| 1786 | + | |
| 1787 | + | |
| 1788 | + | |
| 1789 | + | |
| 1790 | + | |
| 1791 | + | |
| 1792 | + | |
| 1793 | + | |
| 1794 | + | |
| 1795 | + | |
| 1796 | + | |
| 1797 | + | |
| 1798 | + | |
| 1799 | + | |
| 1800 | + | |
1680 | 1801 | | |
1681 | 1802 | | |
1682 | 1803 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
0 commit comments