ngocdang83 commited on
Commit
4a3cdc9
·
verified ·
1 Parent(s): a2dffcd

moxhi c762e11

Browse files
assets/index-Cw4oawBZ.js DELETED
@@ -1,5 +0,0 @@
1
- import{_ as ot}from"./preload-helper-BSrbm-kb.js";const st=t=>t>=33&&t<=47||t>=58&&t<=64||t>=91&&t<=96||t>=123&&t<=126,rt=/\p{P}/u,it=/\p{Mn}/u,at=/[\p{Cc}\p{Cf}\p{Cn}\p{Co}\p{Cs}]/u,lt=/\s/u;function ct(t){return t>=19968&&t<=40959||t>=13312&&t<=19903||t>=131072&&t<=173791||t>=173824&&t<=177983||t>=177984&&t<=178207||t>=178208&&t<=183983||t>=63744&&t<=64255||t>=194560&&t<=195103}function ft(t,n){return st(n)||rt.test(t)}function dt(t,{unk:n="[UNK]",cls:o="[CLS]",sep:e="[SEP]",maxChars:i=100}={}){const r=new Map,s=t.split(`
2
- `);for(let c=0;c<s.length;c++){const g=s[c].replace(/\r$/,"");(g.length||c<s.length-1)&&r.set(g,c)}const a=r.get(n),l=r.get(o),b=r.get(e);if(a===void 0||l===void 0||b===void 0)throw new Error("vocab is missing [UNK]/[CLS]/[SEP]");function d(c,g){if(g===0||g===65533)return null;if(c===" "||c===`
3
- `||c==="\r")return" ";if(at.test(c))return null;if(lt.test(c))return" ";let I=c.normalize("NFD"),u="";for(const m of I)it.test(m)||(u+=m);return u.toLowerCase()}function p(c){const g=Array.from(c),I=[];let u=null;const m=()=>{u&&u.length&&I.push(u),u=null};for(let f=0;f<g.length;f++){const E=g[f],_=E.codePointAt(0),$=d(E,_);if($!==null){if($===" "){m();continue}if(ct(_)){m(),I.push([{ch:$,orig:f}]);continue}for(const C of $){const N=C.codePointAt(0);ft(C,N)?(m(),I.push([{ch:C,orig:f}])):(u||(u=[]),u.push({ch:C,orig:f}))}}}m();const A=[l],h=[[0,0]];for(const f of I){const E=f[0].orig,_=f[f.length-1].orig+1;if(f.length>i){A.push(a),h.push([E,_]);continue}const $=[];let C=0,N=!1;for(;C<f.length;){let k=f.length,y=-1;for(;k>C;){let S="";for(let x=C;x<k;x++)S+=f[x].ch;C>0&&(S=`##${S}`);const B=r.get(S);if(B!==void 0){y=B;break}k--}if(y<0){N=!0;break}$.push({id:y,start:C,end:k}),C=k}if(N)A.push(a),h.push([E,_]);else for(const k of $)A.push(k.id),h.push([f[k.start].orig,f[k.end-1].orig+1])}return A.push(b),h.push([0,0]),{ids:A,offsets:h}}return{tokenize:p,vocab:r,unkId:a,clsId:l,sepId:b}}const O=Object.freeze(["O","B-Nh","I-Nh","B-Ns","I-Ns","B-Ni","I-Ni"]),ut=Object.freeze({Nh:"Người",Ns:"Địa danh",Ni:"Tổ chức"});function J(t){const n=Array.from(t),o=new Uint32Array(n.length+1);let e=0;for(let i=0;i<n.length;i+=1)o[i]=e,e+=n[i].length;return o[n.length]=e,{points:n,utf16:o}}function F(t,n){if(!t)throw new Error(n)}function ht(t,n,o,e,{threshold:i}={}){F(Number.isFinite(i),"decodeBio requires an explicit threshold (τ is pinned per model artifact)"),F(t.length===n.length,"BIO labels/probabilities length mismatch"),F(t.length===o.length,"BIO labels/offsets length mismatch");const{points:r,utf16:s}=J(e),a=[];let l=0;for(;l<t.length;){const b=o[l];F(Array.isArray(b)&&b.length===2,`invalid token offset at ${l}`);const[d,p]=b,c=O[t[l]]??"O";if(d===p||c==="O"){l+=1;continue}const g=c.split("-",2)[1],I=[l];let u=p,m=l+1;for(;m<t.length;){const[h,f]=o[m],E=O[t[m]]??"O";if(h===f||E!==`I-${g}`||h>u)break;I.push(m),u=f,m+=1}const A=Math.min(...I.map(h=>n[h]));A>=i&&(F(Number.isInteger(d)&&Number.isInteger(u)&&d>=0&&u>=d&&u<=r.length,`entity offset ${d}:${u} outside text length ${r.length}`),a.push({type:g,typeLabel:ut[g]??g,startCodepoint:d,endCodepoint:u,startUtf16:s[d],endUtf16:s[u],text:r.slice(d,u).join(""),confidence:A,tokenCount:I.length})),l=m>l+1?m:l+1}return a}function gt(t){return`${t.type}\0${t.startCodepoint}\0${t.endCodepoint}`}const mt=/[\s,,。!?;:、…..!?;:))】》”"'』」]/u,pt=t=>t>=33&&t<=47||t>=58&&t<=64||t>=91&&t<=96||t>=123&&t<=126,wt=/\p{P}/u,V=/\s/u,X=new Set(["。","!","?","…","!","?"]),xt=new Set(["”","』","」",")"]);function z(t,n){if(!t)throw new Error(n)}function q(t,n,o,e){const i=n.slice(o,e).join(""),r=t.tokenize(i);return{text:i,...r}}function bt(t,n,o){for(let e=n;e<o;e+=1)if(!V.test(t[e]))return!0;return!1}function yt(t,n){let o=n;for(;o<t.length&&V.test(t[o]);)o+=1;return o}function Ct(t){const n=[];let o=0,e=0;for(;e<t.length;){let i=null;if(X.has(t[e])){for(e+=1;e<t.length&&X.has(t[e]);)e+=1;for(;e<t.length&&xt.has(t[e]);)e+=1;i="sentence"}else t[e]==="\r"||t[e]===`
4
- `?(t[e]==="\r"&&t[e+1]===`
5
- `?e+=2:e+=1,i="paragraph"):e+=1;i!==null&&(e=yt(t,e),bt(t,o,e)&&(n.push({start:o,end:e,boundary:e===t.length?"end":i}),o=e))}return o<t.length&&n.push({start:o,end:t.length,boundary:"end"}),n}function Et(t){return t>=19968&&t<=40959||t>=13312&&t<=19903||t>=131072&&t<=173791||t>=173824&&t<=177983||t>=177984&&t<=178207||t>=178208&&t<=183983||t>=63744&&t<=64255||t>=194560&&t<=195103}function G(t){const n=t.codePointAt(0);return V.test(t)||pt(n)||wt.test(t)||Et(n)}function Nt(t,n,o){let e=Math.min(t.length,Math.max(n+1,o));for(;e<t.length&&!G(t[e-1])&&!G(t[e]);)e+=1;return e}function kt(t,n,o,e){let i=e*2;for(;;){const r=Nt(n,o,o+i),s=q(t,n,o,r);if(s.ids.length>e||r===n.length)return{end:r,encoded:s};const a=r-o;i=Math.max(i*2,a*2)}}function _t(t,n,o,e,i){let r=e,s=q(t,n,o,r);for(;s.ids.length>i;){const a=s.offsets[i-2]?.[1];z(Number.isInteger(a)&&a>0,"unable to find a safe token cut"),r=Math.min(r-1,o+a),z(r>o,"segmentation made no progress"),s=q(t,n,o,r)}return{end:r,encoded:s}}function St(t,n,{maxTokens:o,overlapCodepoints:e,breakWindowCodepoints:i}){const r=Array.from(n),s=[];let a=0,l=0;for(;a<r.length;){const b=kt(t,r,a,o),d=b.encoded;if(b.end===r.length&&d.ids.length<=o){s.push({text:d.text,input_ids:d.ids,offsets:d.offsets,startCodepoint:a,endCodepoint:r.length,ownedStartCodepoint:l,ownedEndCodepoint:r.length,artificialLeftEdge:a<l,artificialRightEdge:!1,boundary:"end"});break}const p=d.offsets[o-2]?.[1];z(Number.isInteger(p)&&p>0,"tokenizer did not expose a cut offset");let c=Math.min(r.length,a+p),g=!1;const I=Math.max(a+1,c-i);for(let A=c;A>I;A-=1)if(mt.test(r[A-1])){c=A,g=!0;break}const u=_t(t,r,a,c,o),m=u.end;m!==c&&(g=!1),z(m>l,"overlap is too large for the active token window"),s.push({text:u.encoded.text,input_ids:u.encoded.ids,offsets:u.encoded.offsets,startCodepoint:a,endCodepoint:m,ownedStartCodepoint:l,ownedEndCodepoint:m,artificialLeftEdge:a<l,artificialRightEdge:!g,boundary:g?"safe":"hard"}),l=m,a=g?m:Math.max(a+1,m-e)}for(const b of s)z(b.input_ids.length<=o,"segmentation emitted an oversized row");return s}function It(t,n,{maxTokens:o=512,overlapCodepoints:e=64,breakWindowCodepoints:i=96}={}){z(Number.isInteger(o)&&o>=4,"maxTokens must be at least 4"),z(Number.isInteger(e)&&e>=0,"overlapCodepoints must be non-negative");const r=Array.from(n);if(r.length===0)return[];const s={maxTokens:o,overlapCodepoints:e,breakWindowCodepoints:i},a=[];for(const l of Ct(r)){const b=r.slice(l.start,l.end).join(""),d=St(t,b,s);for(let p=0;p<d.length;p+=1){const c=d[p],g=p+1===d.length;a.push({...c,startCodepoint:l.start+c.startCodepoint,endCodepoint:l.start+c.endCodepoint,ownedStartCodepoint:l.start+c.ownedStartCodepoint,ownedEndCodepoint:l.start+c.ownedEndCodepoint,boundary:g?l.boundary:c.boundary})}}return a}function At(t,n){const o=Array.from(n.text).length;return!(n.artificialLeftEdge&&t.startCodepoint===0||n.artificialRightEdge&&t.endCodepoint===o||n.startCodepoint+t.endCodepoint<=n.ownedStartCodepoint)}function R(t,n){if(!t)throw new Error(n)}function $t(){try{return new DOMException("The B2 analysis was aborted","AbortError")}catch{const t=new Error("The B2 analysis was aborted");return t.name="AbortError",t}}function D(t){if(t?.aborted)throw $t()}function vt(t,n,o){const e=[...t].sort((a,l)=>a.input_ids.length-l.input_ids.length||a.flatIndex-l.flatIndex),i=[];let r=[],s=0;for(const a of e)r.length>0&&(r.length>=n||s+a.input_ids.length>o)&&(i.push(r),r=[],s=0),r.push(a),s+=a.input_ids.length;return r.length&&i.push(r),i}async function Bt(t){const n=await crypto.subtle.digest("SHA-256",t);return[...new Uint8Array(n)].map(o=>o.toString(16).padStart(2,"0")).join("")}async function Y(t,{sha256:n,onProgress:o,stage:e}={}){const i=await fetch(t);if(!i.ok)throw new Error(`${t}: HTTP ${i.status}`);const r=Number(i.headers.get("content-length"))||0;let s;if(i.body&&typeof i.body.getReader=="function"){const a=i.body.getReader(),l=[];let b=0;for(;;){const{done:p,value:c}=await a.read();if(p)break;l.push(c),b+=c.byteLength,o?.({stage:e,loaded:b,total:r||b})}s=new Uint8Array(b);let d=0;for(const p of l)s.set(p,d),d+=p.byteLength}else s=new Uint8Array(await i.arrayBuffer()),o?.({stage:e,loaded:s.byteLength,total:s.byteLength});if(n){const a=await Bt(s);if(a!==n)throw new Error(`${t}: SHA-256 ${a} != ${n}`)}return s}const Tt=()=>new Promise(t=>{setTimeout(t,0)});async function Pt({assetBase:t="/model-b2",ortBase:n="/vendor-ort/1.27.0",onProgress:o=null}={}){const e=String(t??"").replace(/\/+$/,"");R(e.length>0,"assetBase must be a non-empty URL");const i=String(n??"").replace(/\/+$/,""),r=await fetch(`${e}/manifest.json`);if(!r.ok)throw new Error(`${e}/manifest.json: HTTP ${r.status}`);const s=await r.json();R(s?.schema==="moxhi.b2ner.v1",`unexpected manifest schema ${s?.schema}`),R(Number.isFinite(s.tau),"manifest.tau missing"),R(Number.isInteger(s.maxTokens)&&s.maxTokens>=16,"manifest.maxTokens missing"),R(Array.isArray(s.labels)&&s.labels.length===O.length&&s.labels.every((h,f)=>h===O[f]),"manifest label schema differs from the compiled decoder");const[a,l,b]=await Promise.all([ot(()=>import(`${i}/ort.wasm.bundle.min.mjs`),[]),Y(`${e}/${s.vocab}`,{sha256:s.vocabSha256,onProgress:o,stage:"vocab"}),Y(`${e}/${s.onnx}`,{sha256:s.onnxSha256,onProgress:o,stage:"weights"})]),d=a.default??a;d.env.wasm.wasmPaths=`${i}/`,d.env.wasm.numThreads=globalThis.crossOriginIsolated?Math.max(1,Math.min(8,(navigator.hardwareConcurrency??4)-2)):1,d.env.wasm.proxy=!1;const p=dt(new TextDecoder().decode(l));R(p.vocab.size===21128,`vocab size ${p.vocab.size} != 21128`);const c=await d.InferenceSession.create(b,{executionProviders:["wasm"]});for(const h of["input_ids","attention_mask","token_type_ids"])R(c.inputNames.includes(h),`ONNX graph is missing input ${h}`);R(c.outputNames.includes("logits"),"ONNX graph is missing output logits");let g=!1,I=0;const u=O.length;async function m(h){const f=h[h.length-1].input_ids.length,E=h.length,_=new BigInt64Array(E*f),$=new BigInt64Array(E*f),C=new BigInt64Array(E*f);for(let S=0;S<E;S+=1){const B=h[S].input_ids;for(let x=0;x<B.length;x+=1)_[S*f+x]=BigInt(B[x]),$[S*f+x]=1n}const N={input_ids:new d.Tensor("int64",_,[E,f]),attention_mask:new d.Tensor("int64",$,[E,f]),token_type_ids:new d.Tensor("int64",C,[E,f])},y=(await c.run(N)).logits;return R(y?.dims?.length===3&&y.dims[2]===u,`unexpected logits shape ${y?.dims}`),{data:y.data,maxLen:f}}function A(h,f,E,_){const $=new Int32Array(_),C=new Float64Array(_);for(let N=0;N<_;N+=1){const k=(E*f+N)*u;let y=0,S=h[k];for(let x=1;x<u;x+=1){const U=h[k+x];U>S&&(S=U,y=x)}let B=0;for(let x=0;x<u;x+=1)B+=Math.exp(h[k+x]-S);$[N]=y,C[N]=1/B}return{labels:$,probs:C}}return{manifest:s,tokenizer:p,async analyze(h,{batchSize:f=16,maxPackedTokens:E=4096,signal:_=null,onProgress:$=null}={}){R(!g,"B2 engine is destroyed");const C=typeof h=="string",N=C?[h]:h;R(Array.isArray(N),"analyze expects a string or an array of strings"),R(N.every(w=>typeof w=="string"),"analyze input contains a non-string"),D(_);const k=performance.now(),y=N.map((w,v)=>({index:v,text:w,entities:[],segmentCount:0,tokenCount:0,elapsedMs:0})),S=N.map(w=>J(w)),B=[];for(let w=0;w<N.length;w+=1){const v=It(p,N[w],{maxTokens:s.maxTokens,overlapCodepoints:32,breakWindowCodepoints:48});y[w].segmentCount=v.length;for(const T of v)y[w].tokenCount+=T.input_ids.length,B.push({...T,textIndex:w,flatIndex:B.length})}if(B.length===0){const w=performance.now()-k;for(const v of y)v.elapsedMs=w;return C?y[0]:y}const x=vt(B,f,E);let U=0;for(let w=0;w<x.length;w+=1){D(_);const v=x[w],{data:T,maxLen:P}=await m(v);D(_);for(let L=0;L<v.length;L+=1){const M=v[L],Q=M.input_ids.length,{labels:Z,probs:tt}=A(T,P,L,Q),et=ht(Z,tt,M.offsets,M.text,{threshold:s.tau}).filter(j=>At(j,M)),nt=y[M.textIndex],W=S[M.textIndex];for(const j of et){const H=M.startCodepoint+j.startCodepoint,K=M.startCodepoint+j.endCodepoint;nt.entities.push({...j,startCodepoint:H,endCodepoint:K,startUtf16:W.utf16[H],endUtf16:W.utf16[K],text:W.points.slice(H,K).join("")})}}U+=v.length,$?.({stage:"analysis",completedRows:U,totalRows:B.length,batch:w+1,batches:x.length}),await Tt()}for(const w of y){const v=new Map;for(const T of w.entities){const P=gt(T),L=v.get(P);(!L||T.confidence>L.confidence)&&v.set(P,T)}w.entities=[...v.values()].sort((T,P)=>T.startCodepoint-P.startCodepoint||T.endCodepoint-P.endCodepoint||T.type.localeCompare(P.type)),w.elapsedMs=performance.now()-k}return I+=1,C?y[0]:y},releaseWorkspaces(){},destroy(){if(!g){g=!0;try{c.release?.()}catch{}}},diagnostics(){return{model:{name:s.modelId,threshold:s.tau,labels:[...O],onnxSha256:s.onnxSha256,onnxBytes:s.onnxBytes},runtime:{name:"onnxruntime-web/wasm",version:s.ort,threads:1},assetBase:e,analysisCount:I,destroyed:g}}}}export{O as NER_LABELS,ut as NER_TYPES,Pt as createB2Ner};
 
 
 
 
 
 
assets/{main-Dao1c7Je.js → main-BBNVSS5C.js} RENAMED
The diff for this file is too large to render. See raw diff
 
index.html CHANGED
@@ -67,7 +67,7 @@
67
  ]
68
  }
69
  </script>
70
- <script type="module" crossorigin src="/assets/main-Dao1c7Je.js"></script>
71
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-B5Qt9EMX.js">
72
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-BSrbm-kb.js">
73
  <link rel="modulepreload" crossorigin href="/assets/models-QsPq0tJ5.js">
 
67
  ]
68
  }
69
  </script>
70
+ <script type="module" crossorigin src="/assets/main-BBNVSS5C.js"></script>
71
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-B5Qt9EMX.js">
72
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-BSrbm-kb.js">
73
  <link rel="modulepreload" crossorigin href="/assets/models-QsPq0tJ5.js">
model-tp-gpu/id-remap.7ba177d9aa95.u16.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7ba177d9aa9551a7369c44dff93ef112e69d6143e8244df5f2c5dbbce6e2b758
3
+ size 42256
model-tp-gpu/vocab.txt ADDED
The diff for this file is too large to render. See raw diff
 
model-tp-gpu/weights/manifest.json ADDED
@@ -0,0 +1,588 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "version": 1,
3
+ "stage": "TP-r6b-WebGPU",
4
+ "model": {
5
+ "modelId": "d25_r6b_tp_soup",
6
+ "dModel": 256,
7
+ "heads": 8,
8
+ "headDim": 32,
9
+ "ffn": 1024,
10
+ "encLayers": 6,
11
+ "embSize": 128,
12
+ "vocab": 21128,
13
+ "compressedVocab": 6144,
14
+ "adapterSize": 768,
15
+ "maxPos": 192,
16
+ "srcCap": 192,
17
+ "lnEps": 1e-12,
18
+ "pad": 0,
19
+ "cls": 101,
20
+ "sep": 102,
21
+ "unk": 100,
22
+ "tieMode": "linear-all",
23
+ "depthEmbed": true,
24
+ "threshold": 0.85
25
+ },
26
+ "labels": {
27
+ "ner": [
28
+ "O",
29
+ "B-Nh",
30
+ "I-Nh",
31
+ "B-Ns",
32
+ "I-Ns",
33
+ "B-Ni",
34
+ "I-Ni"
35
+ ]
36
+ },
37
+ "storage": {
38
+ "dtype": "f16",
39
+ "alignmentBytes": 256,
40
+ "imageBytes": 3736080,
41
+ "imageSha256": "291c2de621b0057c3e07802df62d3e96da6e64fc126f9d78882ec11153009419",
42
+ "tokenTypeRow0FoldedIntoPosition": true,
43
+ "qkvLayout": "q|k|v",
44
+ "classifierWeightLayout": "NK"
45
+ },
46
+ "idRemap": {
47
+ "file": "id-remap.7ba177d9aa95.u16.bin",
48
+ "dtype": "u16le",
49
+ "entries": 21128,
50
+ "byteLength": 42256,
51
+ "sha256": "7ba177d9aa9551a7369c44dff93ef112e69d6143e8244df5f2c5dbbce6e2b758"
52
+ },
53
+ "bins": [
54
+ {
55
+ "file": "weights.291c2de621b0.p0.bin",
56
+ "byteLength": 3736080,
57
+ "sha256": "291c2de621b0057c3e07802df62d3e96da6e64fc126f9d78882ec11153009419"
58
+ }
59
+ ],
60
+ "tensors": [
61
+ {
62
+ "name": "emb.word",
63
+ "dtype": "f16",
64
+ "shape": [
65
+ 6144,
66
+ 128
67
+ ],
68
+ "byteOffset": 0,
69
+ "byteLength": 1572864,
70
+ "source": [
71
+ "word_emb.weight"
72
+ ]
73
+ },
74
+ {
75
+ "name": "emb.proj.weight",
76
+ "dtype": "f16",
77
+ "shape": [
78
+ 128,
79
+ 256
80
+ ],
81
+ "byteOffset": 1572864,
82
+ "byteLength": 65536,
83
+ "layout": "KN",
84
+ "source": [
85
+ "emb_proj.weight"
86
+ ]
87
+ },
88
+ {
89
+ "name": "emb.pos",
90
+ "dtype": "f16",
91
+ "shape": [
92
+ 192,
93
+ 256
94
+ ],
95
+ "byteOffset": 1638400,
96
+ "byteLength": 98304,
97
+ "source": [
98
+ "pos_emb.weight",
99
+ "type_emb.weight[0]"
100
+ ]
101
+ },
102
+ {
103
+ "name": "emb.ln.weight",
104
+ "dtype": "f16",
105
+ "shape": [
106
+ 256
107
+ ],
108
+ "byteOffset": 1736704,
109
+ "byteLength": 512,
110
+ "source": [
111
+ "emb_ln.weight"
112
+ ]
113
+ },
114
+ {
115
+ "name": "emb.ln.bias",
116
+ "dtype": "f16",
117
+ "shape": [
118
+ 256
119
+ ],
120
+ "byteOffset": 1737216,
121
+ "byteLength": 512,
122
+ "source": [
123
+ "emb_ln.bias"
124
+ ]
125
+ },
126
+ {
127
+ "name": "enc.depth",
128
+ "dtype": "f16",
129
+ "shape": [
130
+ 6,
131
+ 256
132
+ ],
133
+ "byteOffset": 1737728,
134
+ "byteLength": 3072,
135
+ "source": [
136
+ "depth_emb"
137
+ ]
138
+ },
139
+ {
140
+ "name": "enc.0.qkv.weight",
141
+ "dtype": "f16",
142
+ "shape": [
143
+ 256,
144
+ 768
145
+ ],
146
+ "byteOffset": 1740800,
147
+ "byteLength": 393216,
148
+ "layout": "KN",
149
+ "source": [
150
+ "encoder.layer.0.attention.self.query.weight",
151
+ "encoder.layer.0.attention.self.key.weight",
152
+ "encoder.layer.0.attention.self.value.weight"
153
+ ]
154
+ },
155
+ {
156
+ "name": "enc.0.qkv.bias",
157
+ "dtype": "f16",
158
+ "shape": [
159
+ 768
160
+ ],
161
+ "byteOffset": 2134016,
162
+ "byteLength": 1536,
163
+ "source": [
164
+ "encoder.layer.0.attention.self.query.bias",
165
+ "encoder.layer.0.attention.self.key.bias",
166
+ "encoder.layer.0.attention.self.value.bias"
167
+ ]
168
+ },
169
+ {
170
+ "name": "enc.0.out.weight",
171
+ "dtype": "f16",
172
+ "shape": [
173
+ 256,
174
+ 256
175
+ ],
176
+ "byteOffset": 2135552,
177
+ "byteLength": 131072,
178
+ "layout": "KN",
179
+ "source": [
180
+ "encoder.layer.0.attention.output.dense.weight"
181
+ ]
182
+ },
183
+ {
184
+ "name": "enc.0.out.bias",
185
+ "dtype": "f16",
186
+ "shape": [
187
+ 256
188
+ ],
189
+ "byteOffset": 2266624,
190
+ "byteLength": 512,
191
+ "source": [
192
+ "encoder.layer.0.attention.output.dense.bias"
193
+ ]
194
+ },
195
+ {
196
+ "name": "enc.0.fc1.weight",
197
+ "dtype": "f16",
198
+ "shape": [
199
+ 256,
200
+ 1024
201
+ ],
202
+ "byteOffset": 2267136,
203
+ "byteLength": 524288,
204
+ "layout": "KN",
205
+ "source": [
206
+ "encoder.layer.0.intermediate.dense.weight"
207
+ ]
208
+ },
209
+ {
210
+ "name": "enc.0.fc1.bias",
211
+ "dtype": "f16",
212
+ "shape": [
213
+ 1024
214
+ ],
215
+ "byteOffset": 2791424,
216
+ "byteLength": 2048,
217
+ "source": [
218
+ "encoder.layer.0.intermediate.dense.bias"
219
+ ]
220
+ },
221
+ {
222
+ "name": "enc.0.fc2.weight",
223
+ "dtype": "f16",
224
+ "shape": [
225
+ 1024,
226
+ 256
227
+ ],
228
+ "byteOffset": 2793472,
229
+ "byteLength": 524288,
230
+ "layout": "KN",
231
+ "source": [
232
+ "encoder.layer.0.output.dense.weight"
233
+ ]
234
+ },
235
+ {
236
+ "name": "enc.0.fc2.bias",
237
+ "dtype": "f16",
238
+ "shape": [
239
+ 256
240
+ ],
241
+ "byteOffset": 3317760,
242
+ "byteLength": 512,
243
+ "source": [
244
+ "encoder.layer.0.output.dense.bias"
245
+ ]
246
+ },
247
+ {
248
+ "name": "enc.0.ln1.weight",
249
+ "dtype": "f16",
250
+ "shape": [
251
+ 256
252
+ ],
253
+ "byteOffset": 3318272,
254
+ "byteLength": 512,
255
+ "source": [
256
+ "encoder.layer.0.attention.output.LayerNorm.weight"
257
+ ]
258
+ },
259
+ {
260
+ "name": "enc.0.ln1.bias",
261
+ "dtype": "f16",
262
+ "shape": [
263
+ 256
264
+ ],
265
+ "byteOffset": 3318784,
266
+ "byteLength": 512,
267
+ "source": [
268
+ "encoder.layer.0.attention.output.LayerNorm.bias"
269
+ ]
270
+ },
271
+ {
272
+ "name": "enc.0.ln2.weight",
273
+ "dtype": "f16",
274
+ "shape": [
275
+ 256
276
+ ],
277
+ "byteOffset": 3319296,
278
+ "byteLength": 512,
279
+ "source": [
280
+ "encoder.layer.0.output.LayerNorm.weight"
281
+ ]
282
+ },
283
+ {
284
+ "name": "enc.0.ln2.bias",
285
+ "dtype": "f16",
286
+ "shape": [
287
+ 256
288
+ ],
289
+ "byteOffset": 3319808,
290
+ "byteLength": 512,
291
+ "source": [
292
+ "encoder.layer.0.output.LayerNorm.bias"
293
+ ]
294
+ },
295
+ {
296
+ "name": "enc.1.ln1.weight",
297
+ "dtype": "f16",
298
+ "shape": [
299
+ 256
300
+ ],
301
+ "byteOffset": 3320320,
302
+ "byteLength": 512,
303
+ "source": [
304
+ "encoder.layer.1.attention.output.LayerNorm.weight"
305
+ ]
306
+ },
307
+ {
308
+ "name": "enc.1.ln1.bias",
309
+ "dtype": "f16",
310
+ "shape": [
311
+ 256
312
+ ],
313
+ "byteOffset": 3320832,
314
+ "byteLength": 512,
315
+ "source": [
316
+ "encoder.layer.1.attention.output.LayerNorm.bias"
317
+ ]
318
+ },
319
+ {
320
+ "name": "enc.1.ln2.weight",
321
+ "dtype": "f16",
322
+ "shape": [
323
+ 256
324
+ ],
325
+ "byteOffset": 3321344,
326
+ "byteLength": 512,
327
+ "source": [
328
+ "encoder.layer.1.output.LayerNorm.weight"
329
+ ]
330
+ },
331
+ {
332
+ "name": "enc.1.ln2.bias",
333
+ "dtype": "f16",
334
+ "shape": [
335
+ 256
336
+ ],
337
+ "byteOffset": 3321856,
338
+ "byteLength": 512,
339
+ "source": [
340
+ "encoder.layer.1.output.LayerNorm.bias"
341
+ ]
342
+ },
343
+ {
344
+ "name": "enc.2.ln1.weight",
345
+ "dtype": "f16",
346
+ "shape": [
347
+ 256
348
+ ],
349
+ "byteOffset": 3322368,
350
+ "byteLength": 512,
351
+ "source": [
352
+ "encoder.layer.2.attention.output.LayerNorm.weight"
353
+ ]
354
+ },
355
+ {
356
+ "name": "enc.2.ln1.bias",
357
+ "dtype": "f16",
358
+ "shape": [
359
+ 256
360
+ ],
361
+ "byteOffset": 3322880,
362
+ "byteLength": 512,
363
+ "source": [
364
+ "encoder.layer.2.attention.output.LayerNorm.bias"
365
+ ]
366
+ },
367
+ {
368
+ "name": "enc.2.ln2.weight",
369
+ "dtype": "f16",
370
+ "shape": [
371
+ 256
372
+ ],
373
+ "byteOffset": 3323392,
374
+ "byteLength": 512,
375
+ "source": [
376
+ "encoder.layer.2.output.LayerNorm.weight"
377
+ ]
378
+ },
379
+ {
380
+ "name": "enc.2.ln2.bias",
381
+ "dtype": "f16",
382
+ "shape": [
383
+ 256
384
+ ],
385
+ "byteOffset": 3323904,
386
+ "byteLength": 512,
387
+ "source": [
388
+ "encoder.layer.2.output.LayerNorm.bias"
389
+ ]
390
+ },
391
+ {
392
+ "name": "enc.3.ln1.weight",
393
+ "dtype": "f16",
394
+ "shape": [
395
+ 256
396
+ ],
397
+ "byteOffset": 3324416,
398
+ "byteLength": 512,
399
+ "source": [
400
+ "encoder.layer.3.attention.output.LayerNorm.weight"
401
+ ]
402
+ },
403
+ {
404
+ "name": "enc.3.ln1.bias",
405
+ "dtype": "f16",
406
+ "shape": [
407
+ 256
408
+ ],
409
+ "byteOffset": 3324928,
410
+ "byteLength": 512,
411
+ "source": [
412
+ "encoder.layer.3.attention.output.LayerNorm.bias"
413
+ ]
414
+ },
415
+ {
416
+ "name": "enc.3.ln2.weight",
417
+ "dtype": "f16",
418
+ "shape": [
419
+ 256
420
+ ],
421
+ "byteOffset": 3325440,
422
+ "byteLength": 512,
423
+ "source": [
424
+ "encoder.layer.3.output.LayerNorm.weight"
425
+ ]
426
+ },
427
+ {
428
+ "name": "enc.3.ln2.bias",
429
+ "dtype": "f16",
430
+ "shape": [
431
+ 256
432
+ ],
433
+ "byteOffset": 3325952,
434
+ "byteLength": 512,
435
+ "source": [
436
+ "encoder.layer.3.output.LayerNorm.bias"
437
+ ]
438
+ },
439
+ {
440
+ "name": "enc.4.ln1.weight",
441
+ "dtype": "f16",
442
+ "shape": [
443
+ 256
444
+ ],
445
+ "byteOffset": 3326464,
446
+ "byteLength": 512,
447
+ "source": [
448
+ "encoder.layer.4.attention.output.LayerNorm.weight"
449
+ ]
450
+ },
451
+ {
452
+ "name": "enc.4.ln1.bias",
453
+ "dtype": "f16",
454
+ "shape": [
455
+ 256
456
+ ],
457
+ "byteOffset": 3326976,
458
+ "byteLength": 512,
459
+ "source": [
460
+ "encoder.layer.4.attention.output.LayerNorm.bias"
461
+ ]
462
+ },
463
+ {
464
+ "name": "enc.4.ln2.weight",
465
+ "dtype": "f16",
466
+ "shape": [
467
+ 256
468
+ ],
469
+ "byteOffset": 3327488,
470
+ "byteLength": 512,
471
+ "source": [
472
+ "encoder.layer.4.output.LayerNorm.weight"
473
+ ]
474
+ },
475
+ {
476
+ "name": "enc.4.ln2.bias",
477
+ "dtype": "f16",
478
+ "shape": [
479
+ 256
480
+ ],
481
+ "byteOffset": 3328000,
482
+ "byteLength": 512,
483
+ "source": [
484
+ "encoder.layer.4.output.LayerNorm.bias"
485
+ ]
486
+ },
487
+ {
488
+ "name": "enc.5.ln1.weight",
489
+ "dtype": "f16",
490
+ "shape": [
491
+ 256
492
+ ],
493
+ "byteOffset": 3328512,
494
+ "byteLength": 512,
495
+ "source": [
496
+ "encoder.layer.5.attention.output.LayerNorm.weight"
497
+ ]
498
+ },
499
+ {
500
+ "name": "enc.5.ln1.bias",
501
+ "dtype": "f16",
502
+ "shape": [
503
+ 256
504
+ ],
505
+ "byteOffset": 3329024,
506
+ "byteLength": 512,
507
+ "source": [
508
+ "encoder.layer.5.attention.output.LayerNorm.bias"
509
+ ]
510
+ },
511
+ {
512
+ "name": "enc.5.ln2.weight",
513
+ "dtype": "f16",
514
+ "shape": [
515
+ 256
516
+ ],
517
+ "byteOffset": 3329536,
518
+ "byteLength": 512,
519
+ "source": [
520
+ "encoder.layer.5.output.LayerNorm.weight"
521
+ ]
522
+ },
523
+ {
524
+ "name": "enc.5.ln2.bias",
525
+ "dtype": "f16",
526
+ "shape": [
527
+ 256
528
+ ],
529
+ "byteOffset": 3330048,
530
+ "byteLength": 512,
531
+ "source": [
532
+ "encoder.layer.5.output.LayerNorm.bias"
533
+ ]
534
+ },
535
+ {
536
+ "name": "adapter.weight",
537
+ "dtype": "f16",
538
+ "shape": [
539
+ 256,
540
+ 768
541
+ ],
542
+ "byteOffset": 3330560,
543
+ "byteLength": 393216,
544
+ "layout": "KN",
545
+ "source": [
546
+ "adapter.weight"
547
+ ]
548
+ },
549
+ {
550
+ "name": "adapter.bias",
551
+ "dtype": "f16",
552
+ "shape": [
553
+ 768
554
+ ],
555
+ "byteOffset": 3723776,
556
+ "byteLength": 1536,
557
+ "source": [
558
+ "adapter.bias"
559
+ ]
560
+ },
561
+ {
562
+ "name": "head.ner.weight",
563
+ "dtype": "f16",
564
+ "shape": [
565
+ 7,
566
+ 768
567
+ ],
568
+ "byteOffset": 3725312,
569
+ "byteLength": 10752,
570
+ "layout": "NK",
571
+ "source": [
572
+ "classifier.weight"
573
+ ]
574
+ },
575
+ {
576
+ "name": "head.ner.bias",
577
+ "dtype": "f16",
578
+ "shape": [
579
+ 7
580
+ ],
581
+ "byteOffset": 3736064,
582
+ "byteLength": 14,
583
+ "source": [
584
+ "classifier.bias"
585
+ ]
586
+ }
587
+ ]
588
+ }
model-tp-gpu/weights/weights.291c2de621b0.p0.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:291c2de621b0057c3e07802df62d3e96da6e64fc126f9d78882ec11153009419
3
+ size 3736080
sw.js CHANGED
@@ -1,5 +1,5 @@
1
- // Service worker TEMPLATE — deploy_pages.mjs stamps ccf98d0 and
2
- // ["/","/about.html","/board.html","/manifest.webmanifest","/icon-192.png","/assets/main-Dao1c7Je.js","/assets/modulepreload-polyfill-B5Qt9EMX.js","/assets/preload-helper-BSrbm-kb.js","/assets/models-QsPq0tJ5.js","/assets/main-CNSay7C8.css","/assets/about-BRw9WSHl.css","/assets/board-DQggw35t.js","/assets/board-DFM1bO4t.css","/assets/playfair-vietnamese-Cabi7G8-.woff2","/assets/playfair-latin-BOwq7MWX.woff2"] and writes the result to dist/sw.js. Never served in dev.
3
  //
4
  // Cache layers (all same-origin GET only):
5
  // moxhi-shell-<build> app shell: precached index + hashed /assets/*
@@ -12,12 +12,12 @@
12
  // them in its own Cache Storage bucket (content-addressed names).
13
  /* global self, caches, fetch, location */
14
 
15
- // 20260818143536 (yyyymmddHHMMSS, stamped by deploy_pages.mjs) makes shell
16
  // generations SORTABLE by name — activate keeps the newest previous
17
  // generation instead of guessing which cache an old tab still needs.
18
- const SHELL = 'moxhi-shell-20260818143536-ccf98d0';
19
  const DATA = 'moxhi-data-v1';
20
- const PRECACHE = ["/","/about.html","/board.html","/manifest.webmanifest","/icon-192.png","/assets/main-Dao1c7Je.js","/assets/modulepreload-polyfill-B5Qt9EMX.js","/assets/preload-helper-BSrbm-kb.js","/assets/models-QsPq0tJ5.js","/assets/main-CNSay7C8.css","/assets/about-BRw9WSHl.css","/assets/board-DQggw35t.js","/assets/board-DFM1bO4t.css","/assets/playfair-vietnamese-Cabi7G8-.woff2","/assets/playfair-latin-BOwq7MWX.woff2"];
21
  // Model/data files the app fetches during startup — often BEFORE this SW has
22
  // claimed the page on its very first visit, so runtime caching would miss
23
  // them and the first offline reload would fail engine init. Precache them
 
1
+ // Service worker TEMPLATE — deploy_pages.mjs stamps c762e11 and
2
+ // ["/","/about.html","/board.html","/manifest.webmanifest","/icon-192.png","/assets/main-BBNVSS5C.js","/assets/modulepreload-polyfill-B5Qt9EMX.js","/assets/preload-helper-BSrbm-kb.js","/assets/models-QsPq0tJ5.js","/assets/main-CNSay7C8.css","/assets/about-BRw9WSHl.css","/assets/board-DQggw35t.js","/assets/board-DFM1bO4t.css","/assets/playfair-vietnamese-Cabi7G8-.woff2","/assets/playfair-latin-BOwq7MWX.woff2"] and writes the result to dist/sw.js. Never served in dev.
3
  //
4
  // Cache layers (all same-origin GET only):
5
  // moxhi-shell-<build> app shell: precached index + hashed /assets/*
 
12
  // them in its own Cache Storage bucket (content-addressed names).
13
  /* global self, caches, fetch, location */
14
 
15
+ // 20260820024308 (yyyymmddHHMMSS, stamped by deploy_pages.mjs) makes shell
16
  // generations SORTABLE by name — activate keeps the newest previous
17
  // generation instead of guessing which cache an old tab still needs.
18
+ const SHELL = 'moxhi-shell-20260820024308-c762e11';
19
  const DATA = 'moxhi-data-v1';
20
+ const PRECACHE = ["/","/about.html","/board.html","/manifest.webmanifest","/icon-192.png","/assets/main-BBNVSS5C.js","/assets/modulepreload-polyfill-B5Qt9EMX.js","/assets/preload-helper-BSrbm-kb.js","/assets/models-QsPq0tJ5.js","/assets/main-CNSay7C8.css","/assets/about-BRw9WSHl.css","/assets/board-DQggw35t.js","/assets/board-DFM1bO4t.css","/assets/playfair-vietnamese-Cabi7G8-.woff2","/assets/playfair-latin-BOwq7MWX.woff2"];
21
  // Model/data files the app fetches during startup — often BEFORE this SW has
22
  // claimed the page on its very first visit, so runtime caching would miss
23
  // them and the first offline reload would fail engine init. Precache them