code wiki / (root) / nx_zimage_adaln_verify.nx

nx_zimage_adaln_verify.nx source

↩ module page · 98 lines · 3849 B

1// nx_zimage_adaln_verify.nx -- SOVEREIGN Z-Image block piece #1: adaLN modulation, verified vs the oracle. 2// 3// z_image.hpp JointTransformerBlock: m = adaLN_modulation.0(t_emb) [Linear 256->15360]; chunk 4 -> 4// {scale_msa, gate_msa, scale_mlp, gate_mlp}. Reads the oracle's dumped ada_w (15360x256 f32), t_emb (256), 5// and golden sm/gm/sl/gl; computes the linear sovereignly (f32); verifies all 15360 outputs to tol. 6// Reads reference dumps (oracle-only); the ORGAN is pure Nishi (nx_f32_*, raw syscalls, static ELF). 7// license_tier: ORIGINAL 8import "nx_syscalls.nx" 9import "nx_le.nx" 10import "nx_f32.nx" 11import "nx_f32_div.nx" 12import "nx_f32_cvt.nx" 13import "nx_strconv.nx" 14const K_MAGIC_15360: i64 = 15360 15const K_MAGIC_3840: i64 = 3840 16const K_MAGIC_7680: i64 = 7680 17const K_MAGIC_11520: i64 = 11520 18 19// load a .f32 file (n_floats floats) into a fresh byte buffer; f32 read via nx_le_read_u32. 20func zav_load(name: *u8, nl: i64, n_floats: i64) -> *u8 { 21 let base: *u8 = "/mnt/c/Users/elder/AppData/Local/Temp/claude/C--Users-elder/7be78b15-304c-449e-afe8-4d5bd7ddaa9c/scratchpad/zblk/" as *u8 22 let path: *u8 = sys_mmap(256) 23 var p: i64 = 0 24 var i: i64 = 0 25 while base[i] != 0 { path[p] = base[i]; p = p + 1; i = i + 1 } 26 i = 0 27 while i < nl { path[p] = name[i]; p = p + 1; i = i + 1 } 28 path[p] = 0x2E; p = p + 1 29 path[p] = 0x66; p = p + 1 30 path[p] = 0x33; p = p + 1 31 path[p] = 0x32; p = p + 1 32 path[p] = 0 33 let fd: i64 = sys_openat_rd(path) 34 if fd < 0 { return 0 as *u8 } 35 let bytes: i64 = n_floats * 4 36 let buf: *u8 = sys_mmap(bytes + 64) 37 var tot: i64 = 0 38 var go: i64 = 1 39 while go == 1 { 40 let r: i64 = sys_read(fd, ((buf as i64) + tot) as *u8, bytes - tot) 41 if r <= 0 { go = 0 } else { tot = tot + r; if tot >= bytes { go = 0 } } 42 } 43 sys_close(fd) 44 return buf 45} 46 47func main() -> i64 { 48 let IN: i64 = 256 49 let OUT: i64 = K_MAGIC_15360 50 let ada: *u8 = zav_load("ada_w" as *u8, 5, OUT * IN) 51 let temb: *u8 = zav_load("temb" as *u8, 4, IN) 52 let sm: *u8 = zav_load("sm" as *u8, 2, K_MAGIC_3840) 53 let gm: *u8 = zav_load("gm" as *u8, 2, K_MAGIC_3840) 54 let sl: *u8 = zav_load("sl" as *u8, 2, K_MAGIC_3840) 55 let gl: *u8 = zav_load("gl" as *u8, 2, K_MAGIC_3840) 56 if (ada as i64) == 0 { return 30 } 57 if (temb as i64) == 0 { return 31 } 58 if (sm as i64) == 0 { return 32 } 59 60 let tol: i64 = nx_f32_div(nx_i32_to_f32(1), nx_i32_to_f32(100)) // 0.01 61 var fails: i64 = 0 62 var first_bad: i64 = 0 - 1 63 var o: i64 = 0 64 while o < OUT { 65 var acc: i64 = 0 66 var i: i64 = 0 67 let rowb: i64 = o * IN * 4 68 while i < IN { 69 acc = nx_f32_add(acc, nx_f32_mul(nx_le_read_u32(ada, rowb + i * 4), nx_le_read_u32(temb, i * 4))) 70 i = i + 1 71 } 72 var g: i64 = 0 73 if o < K_MAGIC_3840 { g = nx_le_read_u32(sm, o * 4) } 74 if o >= K_MAGIC_3840 { if o < K_MAGIC_7680 { g = nx_le_read_u32(gm, (o - K_MAGIC_3840) * 4) } } 75 if o >= K_MAGIC_7680 { if o < K_MAGIC_11520 { g = nx_le_read_u32(sl, (o - K_MAGIC_7680) * 4) } } 76 if o >= K_MAGIC_11520 { g = nx_le_read_u32(gl, (o - K_MAGIC_11520) * 4) } 77 if (nx_f32_sub(acc, g) & 0x7FFFFFFF) >= tol { 78 fails = fails + 1 79 if first_bad < 0 { first_bad = o } 80 } 81 o = o + 1 82 } 83 84 let ofd: i64 = sys_openat_wr("/tmp/zav.txt" as *u8, 0x1a4) 85 if ofd >= 0 { 86 let dec: *u8 = sys_mmap(32) 87 sys_write(ofd, "fails=" as *u8, 6) 88 let n1: i64 = nx_strconv_format_i64(fails, dec) 89 sys_write(ofd, dec, n1) 90 sys_write(ofd, " first_bad=" as *u8, 11) 91 let n2: i64 = nx_strconv_format_i64(first_bad, dec) 92 sys_write(ofd, dec, n2) 93 sys_write(ofd, "\n" as *u8, 1) 94 sys_close(ofd) 95 } 96 if fails > 0 { return 20 } 97 return 0 98}