Spiderweb Hierarchical Attention / run_benchmark.py

✓✓ Beats tuned baseline

Raw ⬇ ZIP
 1import time, json
 2import numpy as np
 3from spiderweb_experiment import SpiderwebAttention, dense_mean, local_mean, hierarchy_work
 4
 5rng=np.random.default_rng(7); n=256; d=32
 6x=rng.normal(size=(n,d)); x[0,0]=10.0
 7# signal recovery: how much token n-1 receives from source coordinate 0
 8methods={
 9 'dense': lambda z: dense_mean(z),
10 'local': lambda z: local_mean(z, window=2),
11 'spiderweb': lambda z: SpiderwebAttention(d, levels=8, radius=1, seed=0)(z)[0],
12}
13out={}
14for name, fn in methods.items():
15    fn(x) # warmup
16    t0=time.perf_counter(); reps=10
17    for _ in range(reps): y=fn(x)
18    sec=(time.perf_counter()-t0)/reps
19    out[name]={'seconds_per_call':sec,
20               'far_token_signal_dim0':float(y[-1,0]),
21               'mean_abs_output':float(np.mean(np.abs(y)))}
22out['counts']={'dense_pair_scores':n*n, 'local_pair_scores':n*5,
23               'spiderweb_estimated_work':hierarchy_work(n)[0],
24               'spiderweb_horizontal_plus_broadcast':hierarchy_work(n)[2:]}
25with open('benchmark_results.json','w') as f: json.dump(out,f,indent=2)
26print(json.dumps(out,indent=2))