code wiki / (root) / nx_coder_gen_f32.nx

nx_coder_gen_f32.nx source

↩ module page · 144 lines · 5257 B

1// nx_coder_gen_f32.nx -- L3b runner: F32 REFERENCE tower greedy generation on the CODER weights. 2// Mirrors nx_f32_llm_live_gen_test's proven flow (dims -> weights v4 -> BPE -> greedy run_v3) on 3// /home/elderwesto/nx_stage/nx_coder_model.gguf, two fixed prompts, 8 tokens each; writes the 4// SAME neutral line format as the no-float runner to /tmp/coder_gen_f32.txt for byte-compare. 5// license_tier: ORIGINAL expect_exit: 0 6import "nx_syscalls.nx" 7import "nx_tier.nx" 8import "nx_bpe.nx" 9import "nx_gguf.nx" 10import "nx_gguf_load.nx" 11import "nx_gguf_meta.nx" 12import "nx_f32.nx" 13import "nx_f32_kv_cache.nx" 14import "nx_f32_lazy_weight.nx" 15import "nx_f32_llama_block.nx" 16import "nx_f32_llama_block_v4.nx" 17import "nx_f32_llama_stack_v4.nx" 18import "nx_f32_llama_layer_lazy_load.nx" 19import "nx_f32_llm.nx" 20import "nx_f32_llm_v4.nx" 21import "nx_f32_llm_read_dims.nx" 22import "nx_f32_bpe_load.nx" 23import "nx_f32_llm_special_tokens.nx" 24import "nx_f32_sampler.nx" 25import "nx_f32_llm_run_v2.nx" 26import "nx_f32_llm_run_v3.nx" 27const K_MAGIC_8192: i64 = 8192 28const K_MAGIC_4000: i64 = 4000 29const K_MAGIC_67108864: i64 = 67108864 30const K_MAGIC_262144: i64 = 262144 31const K_MAGIC_524288: i64 = 524288 32 33func cf_wb(fd: i64, p: *u8, n: i64) -> i64 { 34 var off: i64 = 0 35 while off < n { 36 let q: *u8 = p + off 37 let rem: i64 = n - off 38 let w: i64 = sys_write(fd, q, rem) 39 if w <= 0 { return 0 - 1 } 40 off = off + w 41 } 42 return 0 43} 44 45func cf_ws(fd: i64, s: *u8) -> i64 { 46 var n: i64 = 0 47 while s[n] != (0 as u8) { n = n + 1 } 48 let r: i64 = cf_wb(fd, s, n) 49 return r 50} 51 52func cf_wdec(fd: i64, v: i64) -> i64 { 53 let b: *u8 = sys_mmap(28) as *u8 54 let t: *u8 = sys_mmap(28) as *u8 55 var m: i64 = v 56 if m < 0 { cf_ws(fd, "-" as *u8); m = 0 - m } 57 var k: i64 = 0 58 if m == 0 { t[0] = 48 as u8; k = 1 } 59 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 60 var i: i64 = 0 61 while i < k { b[i] = t[k - 1 - i]; i = i + 1 } 62 cf_wb(fd, b, k) 63 return 0 64} 65 66func cf_wtext(fd: i64, p: *u8, n: i64) -> i64 { 67 let o: *u8 = sys_mmap(K_MAGIC_8192) as *u8 68 var i: i64 = 0 69 var cap: i64 = n 70 if cap > K_MAGIC_4000 { cap = K_MAGIC_4000 } 71 while i < cap { 72 let c: i64 = p[i] as i64 73 var v: i64 = c 74 if c < 32 { v = 46 } 75 if c > 126 { v = 46 } 76 o[i] = v as u8 77 i = i + 1 78 } 79 cf_wb(fd, o, cap) 80 return 0 81} 82 83func main() -> i64 { 84 let path: *u8 = "/home/elderwesto/nx_stage/nx_coder_model.gguf\x00" as *u8 85 let len_out: *i64 = sys_mmap(8) as *i64 86 let buf: *u8 = sys_read_file(path, len_out) 87 if buf == (0 as *u8) { sys_exit(10); return 10 } 88 let hdr: *NxGgufHeader = sys_mmap(NX_GGUF_HDR_BYTES) as *NxGgufHeader 89 if nx_gguf_parse(buf, len_out[0], hdr) != NX_GGUF_OK { sys_exit(20); return 20 } 90 let model: *NxF32LlamaModel = nx_f32_llama_model_alloc() 91 let out_err: *i64 = sys_mmap(8) as *i64 92 if nx_f32_llm_read_dims_from_gguf(buf, len_out[0], hdr, model, out_err) != NX_FLD_OK { sys_exit(30); return 30 } 93 if nx_f32_llm_load_weights_v4_from_gguf(buf, hdr, model, out_err) != NX_FLV4_OK { sys_exit(40); return 40 } 94 let vocab: *NxBpeVocab = nx_bpe_vocab_new(K_MAGIC_67108864, K_MAGIC_262144, K_MAGIC_524288) 95 let nt: *i64 = sys_mmap(8) as *i64 96 let nm: *i64 = sys_mmap(8) as *i64 97 let bpe_v: nx_int = nx_f32_bpe_load_from_gguf(buf, len_out[0], hdr, vocab, nt, nm, out_err) 98 if bpe_v != NX_FBL_OK { sys_exit(50); return 50 } 99 let eos: nx_int = nx_f32_llm_read_eos(buf, len_out[0], hdr) 100 let cfg: *NxF32SamplerCfg = nx_f32_sampler_cfg_alloc() 101 let eps: i64 = 0x358637BD 102 let attn_scale: i64 = 0x3E000000 103 let rope_base: i64 = 0x415D0EAB 104 let fd: i64 = sys_openat_wr("knowledge/forge/coder_gen_f32.txt" as *u8, 420) 105 if fd < 0 { sys_exit(2); return 2 } 106 // p1 107 let cache1: *NxF32KVCache = nx_f32_kv_cache_alloc(model.n_layers, model.n_kv_heads, 64, model.head_dim) 108 let prng1: *i64 = sys_mmap(8) as *i64 109 prng1[0] = 1 110 let outb1: *u8 = sys_mmap(K_MAGIC_8192) as *u8 111 let n1: nx_int = nx_f32_llm_run_v3(model, vocab, cache1, "Hi\x00" as *u8, 2, 8, cfg, eps, attn_scale, rope_base, 1, prng1, eos, outb1, K_MAGIC_8192) 112 cf_ws(fd, "GEN p1 tl=" as *u8) 113 let n1i: i64 = n1 as i64 114 cf_wdec(fd, n1i) 115 cf_ws(fd, " text=[" as *u8) 116 if n1i > 0 { cf_wtext(fd, outb1, n1i) } 117 cf_ws(fd, "]\n" as *u8) 118 // p2 119 let cache2: *NxF32KVCache = nx_f32_kv_cache_alloc(model.n_layers, model.n_kv_heads, 64, model.head_dim) 120 let prng2: *i64 = sys_mmap(8) as *i64 121 prng2[0] = 1 122 let outb2: *u8 = sys_mmap(K_MAGIC_8192) as *u8 123 let n2: nx_int = nx_f32_llm_run_v3(model, vocab, cache2, "func add(a\x00" as *u8, 10, 8, cfg, eps, attn_scale, rope_base, 1, prng2, eos, outb2, K_MAGIC_8192) 124 cf_ws(fd, "GEN p2 tl=" as *u8) 125 let n2i: i64 = n2 as i64 126 cf_wdec(fd, n2i) 127 cf_ws(fd, " text=[" as *u8) 128 if n2i > 0 { cf_wtext(fd, outb2, n2i) } 129 cf_ws(fd, "]\n" as *u8) 130 sys_close(fd) 131 cf_ws(1, "F32 t1=" as *u8) 132 cf_wdec(1, n1i) 133 cf_ws(1, " t2=" as *u8) 134 cf_wdec(1, n2i) 135 cf_ws(1, "\n" as *u8) 136 if n1i > 0 { 137 if n2i > 0 { 138 sys_exit(0) 139 return 0 140 } 141 } 142 sys_exit(1) 143 return 1 144}