31B regimes parsed (early persist bump L7-16, motor only terminal — E2B signature absent, matches E4B); exp4_regimes.py takes explicit out path / defaults next to input jbar (fix pushed to node before 26B stage)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Nils
2026-07-16 09:54:52 +02:00
co-authored by Claude Fable 5
parent 34497b8835
commit 272a7b1d1f
6 changed files with 185 additions and 4 deletions
+3 -3
View File
@@ -42,9 +42,9 @@
"hidden": 5376, "hidden": 5376,
"workspace_band": null, "workspace_band": null,
"kv_share_start": "none found in config (no num_kv_shared_layers key printed \u2014 verify in scan; if truly absent, all entrances structurally live)", "kv_share_start": "none found in config (no num_kv_shared_layers key printed \u2014 verify in scan; if truly absent, all entrances structurally live)",
"jbar": "pending (H100 pipeline v4)", "jbar": "bucket:results-lens/jbar_31b.pt (256/256 prompts)",
"scan": "pending", "scan": "results/exp4_31b.log (regimes_31b.pt reconstructed via parse_regimes_log.py; scan's own save hit the results/-CWD bug)",
"status": "probe passed; jbar scan running on H100 (2026-07-15 late)" "status": "mapped 2026-07-16, PROVISIONAL: E2B-style mid-depth workspace signature ABSENT (like E4B). Persistence+content bump sits EARLY instead \u2014 L7-16 (persist 0.30-0.49 peak L14, content 0.76-0.97, sensor/motor ~0). Sensor is two-lobed: L26-40 (peak 0.17@L26) and L49-56 (~0.12). Motor essentially absent until the final layer (0.06-0.07 L50-56, 0.20@L59). Ignition cross-check (in-log): commitment pinned hard through L38, collapses to ~0 at L42-46, becomes write-responsive at L54-58 (sign flips with w>=0.5 on all three pairs). Early persist zone vs late write-responsiveness disagree \u2014 no single band supported yet; needs jbar-side analysis before any band is entered."
}, },
"google/gemma-4-26B-A4B-it": { "google/gemma-4-26B-A4B-it": {
"revision": "01e5b3ee840d3a9e0b0b493c593e85398a30ef75", "revision": "01e5b3ee840d3a9e0b0b493c593e85398a30ef75",
+124
View File
@@ -0,0 +1,124 @@
Loading weights: 0%| | 0/1188 [00:00<?, ?it/s]
Loading weights: 99%|█████████▊| 1172/1188 [00:00<00:00, 11704.66it/s]
Loading weights: 100%|██████████| 1188/1188 [00:00<00:00, 11701.74it/s]
layer | sensor(top==cur) motor(top==next) persist(top10 Jaccard) content-word
L 0 | 0.02 | 0.00 | 0.04 | 0.36
L 1 | 0.02 | 0.00 | 0.00 | 0.62
L 2 | 0.04 | 0.00 | 0.02 | 0.48
L 3 | 0.03 | 0.00 | 0.03 | 0.51
L 4 | 0.02 | 0.00 | 0.08 | 0.31
L 5 | 0.01 | 0.00 | 0.18 | 0.65
L 6 | 0.01 | 0.00 | 0.15 | 0.59
L 7 | 0.00 | 0.00 | 0.38 | 0.49
L 8 | 0.00 | 0.00 | 0.47 | 0.47
L 9 | 0.00 | 0.00 | 0.40 | 0.83
L10 | 0.00 | 0.00 | 0.48 | 0.95
L11 | 0.00 | 0.00 | 0.31 | 0.97
L12 | 0.00 | 0.00 | 0.31 | 0.76
L13 | 0.00 | 0.00 | 0.36 | 0.88
L14 | 0.00 | 0.00 | 0.49 | 0.95
L15 | 0.00 | 0.00 | 0.30 | 0.97
L16 | 0.00 | 0.00 | 0.28 | 0.97
L17 | 0.01 | 0.00 | 0.24 | 0.68
L18 | 0.02 | 0.00 | 0.18 | 0.69
L19 | 0.01 | 0.00 | 0.25 | 0.66
L20 | 0.07 # | 0.00 | 0.11 | 0.64
L21 | 0.08 # | 0.00 | 0.07 | 0.77
L22 | 0.04 | 0.00 | 0.08 | 0.69
L23 | 0.05 | 0.00 | 0.13 | 0.83
L24 | 0.03 | 0.00 | 0.16 | 0.96
L25 | 0.04 | 0.00 | 0.19 | 0.93
L26 | 0.17 ### | 0.00 | 0.04 | 0.69
L27 | 0.07 # | 0.00 | 0.06 | 0.79
L28 | 0.11 ## | 0.00 | 0.05 | 0.83
L29 | 0.12 ## | 0.00 | 0.05 | 0.80
L30 | 0.11 ## | 0.01 | 0.05 | 0.63
L31 | 0.15 ## | 0.00 | 0.03 | 0.69
L32 | 0.14 ## | 0.00 | 0.03 | 0.49
L33 | 0.15 ## | 0.01 | 0.02 | 0.63
L34 | 0.12 ## | 0.00 | 0.02 | 0.69
L35 | 0.12 ## | 0.01 | 0.02 | 0.63
L36 | 0.10 # | 0.00 | 0.02 | 0.54
L37 | 0.08 # | 0.00 | 0.03 | 0.59
L38 | 0.09 # | 0.01 | 0.03 | 0.72
L39 | 0.11 ## | 0.01 | 0.03 | 0.74
L40 | 0.13 ## | 0.01 | 0.06 | 0.83
L41 | 0.03 | 0.00 | 0.05 | 0.86
L42 | 0.02 | 0.00 | 0.08 | 0.83
L43 | 0.02 | 0.00 | 0.05 | 0.85
L44 | 0.04 | 0.00 | 0.06 | 0.82
L45 | 0.06 # | 0.02 | 0.05 | 0.88
L46 | 0.06 # | 0.01 | 0.06 | 0.93
L47 | 0.02 | 0.02 | 0.05 | 0.83
L48 | 0.05 | 0.04 | 0.05 | 0.83
L49 | 0.08 # | 0.05 | 0.04 | 0.93
L50 | 0.12 ## | 0.06 # | 0.04 | 0.91
L51 | 0.14 ## | 0.06 # | 0.06 | 0.88
L52 | 0.12 ## | 0.07 # | 0.07 | 0.88
L53 | 0.12 ## | 0.07 # | 0.08 | 0.87
L54 | 0.12 ## | 0.07 # | 0.10 | 0.78
L55 | 0.09 # | 0.07 # | 0.12 | 0.79
L56 | 0.09 # | 0.06 # | 0.11 | 0.69
L57 | 0.06 # | 0.04 | 0.13 | 0.54
L58 | 0.02 | 0.02 | 0.35 | 0.44
L59 | 0.00 | 0.20 ### | 0.08 | 0.36
ignition: commitment C=(P1-P2)/(P1+P2) at read pos, by layer
pair | w: 0.00 0.25 0.50 0.75 1.00
dog/piano L 2 | -0.84 -0.83 -0.79 -0.76 -0.77
dog/piano L 6 | -0.98 -0.99 -0.99 -0.98 -0.99
dog/piano L10 | -0.97 -0.97 -0.97 -0.97 -0.98
dog/piano L14 | -0.98 -0.98 -0.98 -0.98 -0.99
dog/piano L18 | -0.99 -0.99 -0.99 -0.99 -0.99
dog/piano L22 | -0.85 -0.85 -0.86 -0.87 -0.87
dog/piano L26 | -0.83 -0.81 -0.82 -0.85 -0.85
dog/piano L30 | -0.41 -0.40 -0.35 -0.45 -0.50
dog/piano L34 | -0.46 -0.46 -0.63 -0.73 -0.78
dog/piano L38 | -0.56 -0.58 -0.74 -0.77 -0.84
dog/piano L42 | -0.00 +0.00 +0.01 +0.00 -0.00
dog/piano L46 | -0.00 +0.00 +0.00 +0.00 -0.00
dog/piano L50 | +0.01 +0.01 +0.06 +0.02 +0.02
dog/piano L54 | -0.03 -0.01 +0.10 +0.17 +0.12
dog/piano L58 | -0.21 -0.17 +0.32 +0.30 +0.24
ocean/violin L 2 | +0.92 +0.93 +0.93 +0.92 +0.89
ocean/violin L 6 | +0.96 +0.97 +0.97 +0.96 +0.95
ocean/violin L10 | +0.99 +0.99 +1.00 +0.99 +0.99
ocean/violin L14 | +0.99 +0.99 +0.99 +0.99 +0.99
ocean/violin L18 | +0.82 +0.87 +0.82 +0.72 +0.61
ocean/violin L22 | -0.89 -0.87 -0.87 -0.89 -0.92
ocean/violin L26 | -0.66 -0.59 -0.68 -0.76 -0.81
ocean/violin L30 | -0.30 -0.19 -0.15 -0.33 -0.46
ocean/violin L34 | +0.09 +0.22 -0.09 -0.39 -0.51
ocean/violin L38 | +0.51 +0.58 +0.19 -0.15 -0.22
ocean/violin L42 | +0.18 +0.14 +0.19 +0.02 -0.04
ocean/violin L46 | -0.02 -0.03 -0.00 -0.08 -0.09
ocean/violin L50 | +0.53 +0.48 +0.62 +0.33 +0.14
ocean/violin L54 | -0.99 -0.99 +0.18 +0.28 +0.34
ocean/violin L58 | -0.74 -0.82 +0.36 +0.38 +0.37
dragon/bicycle L 2 | -1.00 -1.00 -1.00 -1.00 -1.00
dragon/bicycle L 6 | -1.00 -1.00 -1.00 -1.00 -1.00
dragon/bicycle L10 | -0.99 -0.99 -0.99 -0.99 -0.99
dragon/bicycle L14 | -0.99 -0.99 -0.99 -0.99 -0.99
dragon/bicycle L18 | -0.99 -0.99 -0.99 -0.98 -0.98
dragon/bicycle L22 | -0.93 -0.93 -0.92 -0.90 -0.92
dragon/bicycle L26 | -0.96 -0.95 -0.95 -0.92 -0.94
dragon/bicycle L30 | -0.74 -0.77 -0.71 -0.67 -0.72
dragon/bicycle L34 | -0.79 -0.77 -0.77 -0.80 -0.80
dragon/bicycle L38 | -0.84 -0.84 -0.85 -0.81 -0.86
dragon/bicycle L42 | -0.04 -0.04 -0.03 -0.01 -0.02
dragon/bicycle L46 | -0.01 -0.01 -0.01 -0.00 -0.00
dragon/bicycle L50 | -0.47 -0.48 -0.36 -0.23 -0.23
dragon/bicycle L54 | -0.68 -0.81 +0.00 +0.10 +0.11
dragon/bicycle L58 | -0.74 -0.80 +0.04 +0.10 +0.07
Traceback (most recent call last):
File "/workspace/jspace/scripts/exp4_regimes.py", line 142, in <module>
main()
File "/workspace/jspace/scripts/exp4_regimes.py", line 137, in main
torch.save({"sensor": sensor, "motor": motor, "persist": persist,
File "/venv/main/lib/python3.12/site-packages/torch/serialization.py", line 1003, in save
with _open_zipfile_writer(f) as opened_zipfile:
^^^^^^^^^^^^^^^^^^^^^^^
File "/venv/main/lib/python3.12/site-packages/torch/serialization.py", line 865, in _open_zipfile_writer
return container(name_or_buffer) # type: ignore[arg-type]
^^^^^^^^^^^^^^^^^^^^^^^^^
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 188 KiB

+14 -1
View File
@@ -134,8 +134,21 @@ def main():
for l in range(2, len(sensor), 4): for l in range(2, len(sensor), 4):
print(f"{w1}/{w2:<9} L{l:>2} | " + print(f"{w1}/{w2:<9} L{l:>2} | " +
" ".join(f"{curves[wi, l]:+.2f}" for wi in range(5))) " ".join(f"{curves[wi, l]:+.2f}" for wi in range(5)))
if len(sys.argv) > 2:
out = Path(sys.argv[2])
elif len(sys.argv) > 1:
# default: save next to the input jbar (that dir is what node
# sidecars sync; CWD-relative "results/" has crashed 3 scans)
ckp = Path(sys.argv[1])
out = ckp.parent / ckp.name.replace("jbar", "regimes")
if out == ckp:
out = RES / "regimes.pt"
else:
out = RES / "regimes.pt"
out.parent.mkdir(parents=True, exist_ok=True)
torch.save({"sensor": sensor, "motor": motor, "persist": persist, torch.save({"sensor": sensor, "motor": motor, "persist": persist,
"content": content, "ignition": ign}, RES / "regimes.pt") "content": content, "ignition": ign}, out)
print("saved", out)
if __name__ == "__main__": if __name__ == "__main__":
+44
View File
@@ -0,0 +1,44 @@
"""Reconstruct regimes_*.pt from an exp4_*.log printed table (the scan's
torch.save crashes on its CWD-relative "results/" path — known bug; the
printed table is the durable artifact). Generalizes parse_e4b_regimes.py.
Usage: parse_regimes_log.py LOG OUT [--layers N] [--note TEXT]
"""
import argparse
import re
import torch
ap = argparse.ArgumentParser()
ap.add_argument("log")
ap.add_argument("out")
ap.add_argument("--layers", type=int, default=None,
help="assert this many table rows were parsed")
ap.add_argument("--note", default=None,
help="provenance note stored in the tensor dict")
args = ap.parse_args()
sensor, motor, persist, content = [], [], [], []
pat = re.compile(
r"^L\s*(\d+) \| ([\d.]+)\s*#* *\| ([\d.]+)\s*#* *\| ([\d.]+) \| ([\d.]+)")
for line in open(args.log):
m = pat.match(line.strip())
if m:
i, s, mo, p, c = m.groups()
assert int(i) == len(sensor), f"non-contiguous row L{i}"
sensor.append(float(s))
motor.append(float(mo))
persist.append(float(p))
content.append(float(c))
if args.layers is not None:
assert len(sensor) == args.layers, len(sensor)
note = args.note or f"reconstructed from {args.log}"
torch.save({"sensor": torch.tensor(sensor), "motor": torch.tensor(motor),
"persist": torch.tensor(persist),
"content": torch.tensor(content), "note": note}, args.out)
print(f"saved {len(sensor)} layers -> {args.out}")
print("sensor peak: L%d = %.2f" % (sensor.index(max(sensor)), max(sensor)))
print("persist peak: L%d = %.2f" % (persist.index(max(persist)),
max(persist)))
print("motor >=0.1 from: L%s" % next(
(i for i, v in enumerate(motor) if v >= 0.1), "never"))