Spiderweb Hierarchical Attention / run_benchmark.py
Beats tuned baseline
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))