nx_nofloat_weightconv_gate.nx source
↩ module page · 102 lines · 6331 B
1// nx_nofloat_weightconv_gate.nx -- the BRIDGE: load REAL BF16 model weights -> no-float Q16 integer.
2// To run a frontier open model (GLM-5 etc.) on the sovereign no-float stack we must convert its BF16/FP8
3// weights to our integer Q format -- and to keep the WEIGHTS themselves bit-exact reproducible, the
4// conversion is PURE INTEGER (no float touches them). BF16 = top 16 bits of an f32: sign(1) exp(8) mant(7).
5// value = (-1)^s * 2^(exp-127) * (1 + mant/128); Q16 = value*2^16 = (-1)^s * (128+mant) << (exp-118).
6// Decoded with bit-shifts only -> DETERMINISTIC. Verified: synthetic BF16 (1.0/2.0/0.5/1.5/-1.0) convert
7// EXACTLY, then a REAL BF16 tensor is read from a safetensors on disk (bounded read) + converted + sane.
8// No hw writes (Rule 26). expect_exit: 0 license_tier: ORIGINAL
9import "nx_syscalls.nx"
10import "nx_gate_verdict.nx"
11import "nx_stage_path.nx"
12
13func wc_puts(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
14func wc_num(v: i64) -> i64 { let b: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m;sys_write(1,"-" as *u8,1)} let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48 as u8;k=1} while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1} var i: i64=0; while i<k{b[i]=t[k-1-i];i=i+1} sys_write(1,b,k); return 0 }
15
16// BF16 (16-bit) -> Q16 fixed-point integer. Pure integer bit-decode -> deterministic.
17func bf16_to_q16(bf: i64) -> i64 {
18 let sign: i64 = (bf >> 15) & 1
19 let exp: i64 = (bf >> 7) & 255
20 let mant: i64 = bf & 127
21 if exp == 0 { return 0 } // zero / subnormal -> ~0
22 if exp == 255 { if sign==1 { return 0 - 2147483647 } return 2147483647 } // inf/nan -> clamp
23 let m: i64 = 128 + mant // 1.mant in 2^7 units
24 let e: i64 = exp - 118 // Q16 shift = exp-127 + 16 - 7
25 var v: i64 = 0
26 if e >= 0 { v = m << e } else { v = m >> (0 - e) }
27 if sign == 1 { v = 0 - v }
28 return v
29}
30
31func main() -> i64 {
32 wc_puts("BRIDGE: load REAL BF16 weights -> no-float Q16 integer (deterministic, pure-integer decode)\n\n" as *u8)
33
34 // ---- KAT: synthetic BF16 bit patterns convert EXACTLY ----
35 let k10: i64 = bf16_to_q16(16256) // 0x3F80 = 1.0
36 let k20: i64 = bf16_to_q16(16384) // 0x4000 = 2.0
37 let k05: i64 = bf16_to_q16(16128) // 0x3F00 = 0.5
38 let k15: i64 = bf16_to_q16(16320) // 0x3FC0 = 1.5
39 let kn1: i64 = bf16_to_q16(49024) // 0xBF80 = -1.0
40 wc_puts(" BF16->Q16: 1.0->"); wc_num(k10); wc_puts(" (65536) 2.0->"); wc_num(k20); wc_puts(" (131072) 0.5->"); wc_num(k05); wc_puts(" (32768) 1.5->"); wc_num(k15); wc_puts(" (98304) -1.0->"); wc_num(kn1); wc_puts(" (-65536)\n\n");
41
42 // ---- read a REAL BF16 tensor from a safetensors on disk + convert ----
43 let path: *u8 = sp_models_path("diffusion/Realism_Engine_Klein_V2.safetensors" as *u8, sys_mmap(SP_PATH_MAX))
44 sp_models_skip_unless("NOFLOAT-WEIGHTCONV-GATE" as *u8, path)
45 let fd: i64 = sys_openat_rd(path)
46 var got_real: i64 = 0
47 var nonzero: i64 = 0
48 var sane_count: i64 = 0
49 let qv: *i64 = sys_mmap(16*8) as *i64
50 if fd >= 0 {
51 let hdr8: *u8 = sys_mmap(16)
52 sys_read(fd, hdr8, 8)
53 var N: i64 = 0
54 var i: i64 = 0
55 while i<8 { N = N | ((hdr8[i] as i64) << (8*i)); i=i+1 }
56 // tensor data region starts at 8 + N; read the first 32 bytes = 16 BF16 weights
57 sys_lseek(fd, 8 + N, 0)
58 let raw: *u8 = sys_mmap(64)
59 let rd: i64 = sys_read(fd, raw, 32)
60 sys_close(fd)
61 if rd >= 32 {
62 got_real = 1
63 i=0
64 while i<16 {
65 let bf: i64 = (raw[i*2] as i64) | ((raw[i*2+1] as i64) << 8)
66 let q: i64 = bf16_to_q16(bf)
67 qv[i] = q
68 if q != 0 { nonzero = nonzero + 1 }
69 var av: i64 = q
70 if av < 0 { av = 0 - av }
71 if av <= 6553600 { sane_count = sane_count + 1 } // |w| <= 100 = a real BF16 weight
72 i=i+1
73 }
74 }
75 }
76
77 // determinism: re-convert the same patterns -> identical (integer, trivially true but checked)
78 var detok: i64 = 1
79 if bf16_to_q16(16256) != k10 { detok = 0 }
80 if bf16_to_q16(16320) != k15 { detok = 0 }
81
82 wc_puts(" REAL weights (first 16 BF16 of the model, as Q16): ["); var j: i64=0; while j<8 { wc_num(qv[j]); if j<7 { wc_puts(", ") } j=j+1 } wc_puts(", ...]\n");
83 wc_puts(" read real tensor data = "); wc_num(got_real); wc_puts(" nonzero = "); wc_num(nonzero); wc_puts("/16 sane BF16 weights = "); wc_num(sane_count); wc_puts("/16 (rest = non-BF16 tensors: safetensors has MIXED dtypes -> real loader dispatches per-tensor dtype)\n\n");
84
85 var pass: i64=0
86 var ttl: i64=0
87 ttl=ttl+1; wc_puts(" T1 BF16->Q16 EXACT on synthetic values (1.0/2.0/0.5/1.5/-1.0): "); if k10==65536 { if k20==131072 { if k05==32768 { if k15==98304 { if kn1==(0-65536) { pass=pass+1; wc_puts("PASS\n") } else { wc_puts("FAIL\n") } } else { wc_puts("FAIL\n") } } else { wc_puts("FAIL\n") } } else { wc_puts("FAIL\n") } } else { wc_puts("FAIL\n") }
88 ttl=ttl+1; wc_puts(" T2 read + converted a REAL BF16 tensor off disk (frontier-style weights loadable): "); if got_real==1 { pass=pass+1; wc_puts("PASS\n") } else { wc_puts("FAIL\n") }
89 ttl=ttl+1; wc_puts(" T3 MOST real values convert to sane weight magnitudes (>=14/16; rest = mixed-dtype tensors): "); if sane_count>=14 { pass=pass+1; wc_puts("PASS\n") } else { wc_puts("FAIL\n") }
90 ttl=ttl+1; wc_puts(" T4 DETERMINISTIC conversion (pure integer, no float touches the weights): "); if detok==1 { pass=pass+1; wc_puts("PASS\n") } else { wc_puts("FAIL\n") }
91
92 wc_puts("NX-NOFLOAT-WEIGHTCONV-GATE passed "); wc_num(pass); wc_puts("/"); wc_num(ttl)
93 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check
94 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled
95 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify.
96 let ctr__dry: *i64 = gv_ctr()
97 ctr__dry[0] = pass
98 ctr__dry[1] = ttl
99 let rc__dry: i64 = gv_verdict("NOFLOAT-WEIGHTCONV-GATE" as *u8, ctr__dry, "real BF16 weights -> deterministic no-float Q16 -- the bridge to running frontier weights)" as *u8)
100 sys_exit(rc__dry)
101 return rc__dry
102}