Audit fixed D18 credit and conditional MBON transfer (Phase 4AL)

This commit is contained in:
Digital Drosophila Archive
2026-09-30 13:58:39 +08:00
parent c6444255fe
commit 6d5f66bcc3
1058 changed files with 120679 additions and 18 deletions
@@ -0,0 +1,61 @@
"""Rerun old deterministic-v2 references without changing their semantics."""
import json
import os
import sys
import time
import urllib.request
import numpy as np
import pandas as pd
import yaml
from context import ROOT, EXP, check, save, bit_equal
def preflight():
os.environ['CUDA_VISIBLE_DEVICES'] = 'GPU-79f3a85d-adce-7833-7003-6488140ca596'
os.environ['CUDA_HOME'] = '/usr/local/cuda'
os.environ['PATH'] = str(ROOT / 'models/male-cns-lif/.venv/bin') + ':/usr/local/cuda/bin:' + os.environ['PATH']
os.environ['MAX_JOBS'] = '2'
os.environ['TORCH_CUDA_ARCH_LIST'] = '8.9'
for port in (8188, 8189, 8190):
with urllib.request.urlopen(f'http://192.168.10.51:{port}/queue', timeout=5) as response:
queue = json.load(response)
assert not queue['queue_running'] and not queue['queue_pending'], 'Comfy busy: defer, do not evict'
def main():
check(); preflight()
assert not (EXP / 'regression/frozen-five.json').exists()
runtime_path = ROOT / 'models/male-cns-lif/deterministic-runtime-v2'
config = yaml.safe_load((runtime_path / 'phase4p.yaml').read_text())
sys.path.insert(0, str(ROOT / 'models/male-cns-lif'))
sys.path.insert(0, str(runtime_path))
import torch
import phase4p
assert torch.cuda.mem_get_info()[0] > 2 * 1024**3
torch.cuda.reset_peak_memory_stats()
started = time.perf_counter()
runtime = phase4p.CanonicalRuntime(config, runtime_path, EXP)
rows = []
for spec in config['reference_trials']:
preflight()
reference_dir = ROOT / 'experiments/phase4p-deterministic-runtime/phase4c-v2/reference' / spec['name']
events = pd.read_parquet(reference_dir / 'spike-events.parquet')
reference = dict(step=events.step.to_numpy(), neuron_idx=events.neuron_idx.to_numpy(),
counts=np.load(reference_dir / 'per-neuron-spike-counts.int32.npy'),
v=np.load(reference_dir / 'final-voltage.float32.npy'), g=np.load(reference_dir / 'final-g.float32.npy'))
result = runtime.run(np.flatnonzero(runtime.pops[spec['population']]), spec['rate_hz'], spec['seed'], spec['duration_ms'])
row = dict(trial=spec['name'], exact={k: bit_equal(v, result[k]) for k, v in reference.items()},
dtype_shape={k: dict(reference_dtype=str(v.dtype), actual_dtype=str(result[k].dtype),
reference_shape=list(v.shape), actual_shape=list(result[k].shape)) for k, v in reference.items()},
wall_seconds=result['metrics']['wall_seconds'])
rows.append(row)
print(row, flush=True)
passed = len(rows) == 5 and all(all(row['exact'].values()) for row in rows)
save(EXP / 'regression/frozen-five.json', dict(pass_all=passed, trials=rows,
wall_seconds=time.perf_counter() - started, peak_allocated_vram=int(torch.cuda.max_memory_allocated()),
scope='Old frozen deterministic-v2 reference only, not D18 equality to old dynamics'))
assert passed
if __name__ == '__main__':
main()