@slexisvn/mlfw 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.browser.js +1 -1
- package/dist/index.d.ts +3552 -0
- package/dist/index.node.js +2 -2
- package/package.json +5 -2
package/dist/index.node.js
CHANGED
|
@@ -9,7 +9,7 @@ var mN=Object.defineProperty;var l=(n,e)=>mN(n,"name",{value:e,configurable:!0})
|
|
|
9
9
|
`,t),t<0&&(t=n.length);continue}if(r==="("&&n[t+1]===";"){t=n.indexOf(";)",t+2),t=t<0?n.length:t+2;continue}if(r==="("||r===")"){e.push(r),t++;continue}if(r==='"'){let o=t+1;for(;o<n.length&&n[o]!=='"';)o++;e.push(n.substring(t,o+1)),t=o+1;continue}let s=t;for(;s<n.length&&n[s]>" "&&n[s]!=="("&&n[s]!==")";)s++;e.push(n.substring(t,s)),t=s}return e}function z$(n){let e=0,t=l(()=>n[e++],"eat"),r=l(()=>n[e],"peek"),s=l(y=>{if(t()!==y)throw new Error("expected "+y+" at "+(e-1))},"expect");s("("),s("module");let o=[],i=1,a=256,u="",p=[],c=[],f=[],d=[],h=-1,m=-1;for(;r()!==")";){if(r()!=="("){e++;continue}e++;let y=t();if(y==="memory"){for(;r()==="(";)g();r()!==")"&&(i=parseInt(t())||1),r()!==")"&&(a=parseInt(t())||256),s(")")}else if(y==="import"){let _=t().replace(/"/g,""),b=t().replace(/"/g,"");s("("),s("func"),r().startsWith("$")&&e++;let w=[],x=[];for(;r()==="(";){e++;let S=t();if(S==="param")for(;r()!==")";){let T=t();T==="f32"?w.push(Rp):T==="f64"?w.push(Bp):T==="i32"?w.push(Op):T==="v128"&&w.push(Mp)}else if(S==="result")for(;r()!==")";){let T=t();T==="f32"?x.push(Rp):T==="f64"?x.push(Bp):T==="i32"?x.push(Op):T==="v128"&&x.push(Mp)}s(")")}s(")"),s(")"),o.push({module:_,name:b,params:w,results:x})}else if(y==="func"){for(;r()==="(";){let b=e;e++;let w=t();if(w==="export")u=t().replace(/"/g,""),s(")");else if(w==="param"){let x="";for(;r()!==")";){let S=t();if(S.startsWith("$")){x=S.replace("$","");continue}let T=null;S==="i32"?T=Op:S==="i64"?T=Q0:S==="f32"?T=Rp:S==="f64"?T=Bp:S==="v128"&&(T=Mp),T!==null&&(p.push(T),c.push(x),x="")}s(")")}else if(w==="result"){for(;r()!==")";)t();s(")")}else if(w==="local"){for(;r()!==")";){let x=t();x.startsWith("$")?d.push(x.replace("$","")):x==="i32"?f.push(Op):x==="i64"?f.push(Q0):x==="f32"?f.push(Rp):x==="f64"?f.push(Bp):x==="v128"&&f.push(Mp)}s(")")}else{e=b;break}}h=e;let _=1;for(;_>0;){let b=t();b==="("?_++:b===")"&&_--}m=e-1}else g()}function g(){if(r()!=="("){e++;return}let y=0;do{let _=t();_==="("?y++:_===")"&&y--}while(y>0)}return l(g,"skipSExpr"),{imports:o,memMin:i,memMax:a,funcExportName:u,funcParams:p,funcParamNames:c,funcLocals:f,funcLocalNames:d,bodyTokens:n.slice(h,m)}}function V$(n,e,t){let r=[],s=0,o=l(()=>n[s],"peek"),i=l(()=>n[s++],"eat"),a=[],u=-1;for(let y of e.values())y>u&&(u=y);function p(y){let _=y.replace("$","");if(e.has(_))return e.get(_);let b=parseInt(_,10);if(!isNaN(b))return b>u&&(u=b),b;let w=u+1;return u=w,e.set(_,w),w}l(p,"localIdx");function c(){return o()&&o().startsWith("$")?i().replace("$",""):""}l(c,"eatLabel");function f(y,_){let b=y.indexOf(_);return b>=0?y.substring(b+_.length):""}l(f,"extractName");function d(){for(;s<n.length&&o()!==")";){let y=o();if(y==="("){s++;let _=i();if(_==="i32.const")r.push(65),r.push(...C$(parseInt(i()))),m(")");else if(_==="i64.const")r.push(66),r.push(...D$(i())),m(")");else if(_==="f32.const")r.push(67),r.push(...P$(parseFloat(i()))),m(")");else if(_==="f64.const")r.push(68),r.push(...$$(parseFloat(i()))),m(")");else if(_==="local.get")r.push(32),r.push(...re(p(i()))),m(")");else if(_==="local.set")r.push(33),r.push(...re(p(i()))),m(")");else if(_==="block"){let b=i().replace("$","");a.push(b),r.push(2,J0),d(),r.push(11),a.pop(),m(")")}else if(_==="loop"){let b=i().replace("$","");a.push(b),r.push(3,J0),d(),r.push(11),a.pop(),m(")")}else if(_==="if"){let b=J0;if(o()==="("){let w=s;if(s++,o()==="result"){i();let x=i();b=x==="f32"?Rp:x==="f64"?Bp:x==="v128"?Mp:x==="i64"?Q0:Op,m(")")}else s=w}for(r.push(4,b),a.push("_if");s<n.length&&o()!==")"&&o()==="(";){let w=s;s++;let x=i();if(x==="then")d(),m(")");else if(x==="else")r.push(5),d(),m(")");else{s=w;break}}r.push(11),a.pop(),m(")")}else s-=2,g();continue}if(s++,y==="br_if")r.push(13),r.push(...re(h(c())));else if(y==="br")r.push(12),r.push(...re(h(c())));else if(y.startsWith("call")){r.push(16);let _=f(y,"math_")||(o()&&o().startsWith("$")?f(i(),"math_"):""),b=t.get(_);if(b===void 0)throw new Error(`WAT encoder: call to unresolved import '${_}'`);r.push(...re(b))}else y==="local.get"?(r.push(32),r.push(...re(p(c())))):y==="local.set"?(r.push(33),r.push(...re(p(c())))):y.endsWith(".extract_lane")||y.endsWith(".replace_lane")?(r.push(...Z0.get(y)),r.push(parseInt(i(),10))):Z0.has(y)&&r.push(...Z0.get(y))}}l(d,"emitBlock");function h(y){for(let _=a.length-1;_>=0;_--)if(a[_]===y)return a.length-1-_;return 0}l(h,"resolveBr");function m(y){if(i()!==y)throw new Error("expect "+y)}l(m,"expect");function g(){if(o()!=="("){s++;return}let y=0;do{let _=i();_==="("?y++:_===")"&&y--}while(y>0)}return l(g,"skipSExpr"),d(),r}function Sl(n){let e=F$(n),t=z$(e),r=new Map,s=t.funcParams.length;for(let T=0;T<t.funcParamNames.length;T++)t.funcParamNames[T]&&r.set(t.funcParamNames[T],T);for(let T=0;T<t.funcLocalNames.length;T++)r.set(t.funcLocalNames[T],s+T);let o=new Map;for(let T=0;T<t.imports.length;T++)o.set(t.imports[T].name,T);let i=[],a=new Map;function u(T,v){let A=T.join(",")+">"+v.join(",");if(a.has(A))return a.get(A);let N=i.length;return i.push({params:T,results:v}),a.set(A,N),N}l(u,"getType");for(let T of t.imports)T.typeIdx=u(T.params,T.results);let p=u(t.funcParams,[]),c=xl(O$,Ua(i.map(T=>[L$,...re(T.params.length),...T.params,...re(T.results.length),...T.results]))),f=[];t.imports.length>0&&(f=xl(B$,Ua(t.imports.map(T=>[...qm(T.module),...qm(T.name),0,...re(T.typeIdx)]))));let d=xl(R$,Ua([[...re(p)]])),h=xl(M$,Ua([[1,...re(t.memMin),...re(t.memMax)]])),m=t.imports.length,g=xl(I$,Ua([[...qm("memory"),2,...re(0)],[...qm(t.funcExportName),0,...re(m)]])),y=[];if(t.funcLocals.length>0){let T=[],v=t.funcLocals[0],A=1;for(let N=1;N<t.funcLocals.length;N++)t.funcLocals[N]===v?A++:(T.push([...re(A),v]),v=t.funcLocals[N],A=1);T.push([...re(A),v]),_o(y,Ua(T))}else y.push(0);let _=V$(t.bodyTokens,r,o),b=[];_o(b,y),_o(b,_),b.push(11);let w=[];_o(w,re(b.length)),_o(w,b);let x=xl(E$,Ua([w])),S=[];for(let T of[N$,A$,c,f,d,h,g,x])_o(S,T);return new Uint8Array(S)}var N$,A$,O$,B$,R$,M$,I$,E$,Op,Q0,Bp,Rp,Mp,L$,J0,Z0,Wm=M(()=>{"use strict";N$=[0,97,115,109],A$=[1,0,0,0],O$=1,B$=2,R$=3,M$=5,I$=7,E$=10,Op=127,Q0=126,Bp=124,Rp=125,Mp=123,L$=96,J0=64;l(re,"uleb");l(C$,"sleb");l(D$,"slebBig");l(qm,"encStr");l(P$,"encF32");l($$,"encF64");l(_o,"pushAll");l(xl,"section");l(Ua,"vec");Z0=new Map([["i32.const",[65]],["f32.const",[67]],["local.get",[32]],["local.set",[33]],["i32.add",[106]],["i32.sub",[107]],["i32.mul",[108]],["i32.div_s",[109]],["i32.rem_s",[111]],["i32.eq",[70]],["i32.ne",[71]],["i32.lt_s",[72]],["i32.gt_s",[74]],["i32.le_s",[76]],["i32.ge_s",[78]],["i32.eqz",[69]],["i32.lt_u",[73]],["i32.gt_u",[75]],["i32.le_u",[77]],["i32.ge_u",[79]],["i32.and",[113]],["i32.or",[114]],["i32.xor",[115]],["i32.shl",[116]],["i32.shr_s",[117]],["i32.shr_u",[118]],["i32.reinterpret_f32",[188]],["f32.reinterpret_i32",[190]],["i32.trunc_f32_s",[168]],["f32.add",[146]],["f32.sub",[147]],["f32.mul",[148]],["f32.div",[149]],["f32.neg",[140]],["f32.abs",[139]],["f32.ceil",[141]],["f32.floor",[142]],["f32.sqrt",[145]],["f32.min",[150]],["f32.max",[151]],["f32.eq",[91]],["f32.ne",[92]],["f32.lt",[93]],["f32.gt",[94]],["f32.le",[95]],["f32.ge",[96]],["f32.convert_i32_s",[178]],["f64.add",[160]],["f64.sub",[161]],["f64.mul",[162]],["f64.div",[163]],["f64.min",[164]],["f64.max",[165]],["f64.neg",[154]],["f64.abs",[153]],["f64.ceil",[155]],["f64.floor",[156]],["f64.sqrt",[159]],["f64.eq",[97]],["f64.ne",[98]],["f64.lt",[99]],["f64.gt",[100]],["f64.le",[101]],["f64.ge",[102]],["f64.convert_i32_s",[183]],["f64.promote_f32",[187]],["f32.demote_f64",[182]],["i32.trunc_f64_s",[170]],["i64.load",[41,3,0]],["i64.store",[55,3,0]],["i64.add",[124]],["i64.sub",[125]],["i64.mul",[126]],["i64.div_s",[127]],["i64.rem_s",[129]],["i64.and",[131]],["i64.or",[132]],["i64.xor",[133]],["i64.shl",[134]],["i64.shr_s",[135]],["i64.shr_u",[136]],["i64.eqz",[80]],["i64.eq",[81]],["i64.ne",[82]],["i64.lt_s",[83]],["i64.gt_s",[85]],["i64.le_s",[87]],["i64.ge_s",[89]],["i64.extend_i32_s",[172]],["i32.wrap_i64",[167]],["f64.convert_i64_s",[185]],["i64.trunc_f64_s",[176]],["f32.convert_i64_s",[180]],["i64.trunc_f32_s",[174]],["select",[27]],["f32.load",[42,2,0]],["f32.store",[56,2,0]],["f64.load",[43,3,0]],["f64.store",[57,3,0]],["i32.load",[40,2,0]],["i32.store",[54,2,0]],["i32.load8_s",[44,0,0]],["i32.load8_u",[45,0,0]],["i32.store8",[58,0,0]],["i32.load16_s",[46,1,0]],["i32.load16_u",[47,1,0]],["i32.store16",[59,1,0]],["v128.load",[253,...re(0),4,0]],["v128.store",[253,...re(11),4,0]],["v128.bitselect",[253,...re(82)]],["v128.and",[253,...re(78)]],["v128.or",[253,...re(80)]],["v128.not",[253,...re(77)]],["f32x4.splat",[253,...re(19)]],["i32x4.splat",[253,...re(17)]],["f32x4.add",[253,...re(228)]],["f32x4.sub",[253,...re(229)]],["f32x4.mul",[253,...re(230)]],["f32x4.div",[253,...re(231)]],["f32x4.neg",[253,...re(225)]],["f32x4.abs",[253,...re(224)]],["f32x4.sqrt",[253,...re(227)]],["f32x4.ceil",[253,...re(103)]],["f32x4.floor",[253,...re(104)]],["f32x4.min",[253,...re(232)]],["f32x4.max",[253,...re(233)]],["f32x4.eq",[253,...re(65)]],["f32x4.ne",[253,...re(66)]],["f32x4.lt",[253,...re(67)]],["f32x4.gt",[253,...re(68)]],["f32x4.le",[253,...re(69)]],["f32x4.ge",[253,...re(70)]],["f32x4.extract_lane",[253,...re(31)]],["f32x4.replace_lane",[253,...re(32)]],["i32x4.add",[253,...re(174)]],["i32x4.sub",[253,...re(177)]],["i32x4.mul",[253,...re(181)]],["i32x4.abs",[253,...re(160)]],["i32x4.min_s",[253,...re(182)]],["i32x4.max_s",[253,...re(184)]],["i32x4.eq",[253,...re(55)]],["i32x4.ne",[253,...re(56)]],["i32x4.lt_s",[253,...re(57)]],["i32x4.gt_s",[253,...re(58)]],["i32x4.le_s",[253,...re(59)]],["i32x4.ge_s",[253,...re(60)]],["i32x4.extract_lane",[253,...re(27)]],["i32x4.replace_lane",[253,...re(28)]],["f64x2.splat",[253,...re(20)]],["f64x2.add",[253,...re(240)]],["f64x2.sub",[253,...re(241)]],["f64x2.mul",[253,...re(242)]],["f64x2.div",[253,...re(243)]],["f64x2.neg",[253,...re(237)]],["f64x2.abs",[253,...re(236)]],["f64x2.sqrt",[253,...re(239)]],["f64x2.min",[253,...re(244)]],["f64x2.max",[253,...re(245)]],["f64x2.eq",[253,...re(71)]],["f64x2.ne",[253,...re(72)]],["f64x2.lt",[253,...re(73)]],["f64x2.gt",[253,...re(74)]],["f64x2.le",[253,...re(75)]],["f64x2.ge",[253,...re(76)]],["f64x2.extract_lane",[253,...re(33)]],["f64x2.replace_lane",[253,...re(34)]]]);l(F$,"tokenize");l(z$,"parseModule");l(V$,"encodeBody");l(Sl,"encodeWat")});function N1(n){let{source:e,name:t,metadata:r}=n,{bufferOffsets:s,imports:o}=r,i=[...s.entries()],a=Sl(e),u=[];if(u.push("(async () => {"),u.push(""),u.push("const binary = new Uint8Array(["+a.join(",")+"]);"),u.push(""),o&&o.size>0){u.push("const mathImports = {");for(let[c]of o)c==="fmod"?u.push(" fmod: (a, b) => a % b,"):c==="rsqrt"?u.push(" rsqrt: x => 1 / Math.sqrt(x),"):u.push(` ${c}: Math.${c},`);u.push("};"),u.push("const { instance } = await WebAssembly.instantiate(binary, { math: mathImports });")}else u.push("const { instance } = await WebAssembly.instantiate(binary);");u.push("const memory = instance.exports.memory;"),u.push("");for(let[c,f]of i)u.push(`// ${c}: new Float32Array(memory.buffer, ${f}, N).set(data);`);u.push(""),u.push(`instance.exports.${t}(${i.map(([,c])=>c).join(", ")});`),u.push("");let p=i[i.length-1];return p&&(u.push(`const result = new Float32Array(memory.buffer, ${p[1]}, N);`),u.push("console.log(result);")),u.push("})();"),u.join(`
|
|
10
10
|
`)}var A1=M(()=>{"use strict";Wm();l(N1,"buildSnippet")});function O1(n){let{source:e,name:t,metadata:r}=n,{bindings:s,dispatchSize:o}=r,i=[];i.push("(async () => {"),i.push("const adapter = await navigator.gpu.requestAdapter();"),i.push("const device = await adapter.requestDevice();"),i.push(""),i.push("const wgsl = "+JSON.stringify(e)+";"),i.push(""),i.push("const pipeline = device.createComputePipeline({"),i.push(' layout: "auto",'),i.push(" compute: { module: device.createShaderModule({ code: wgsl }), entryPoint: "+JSON.stringify(t)+" }"),i.push("});"),i.push(""),i.push("const entries = [];"),i.push("const gpuBuffers = [];"),i.push("");for(let a of s)a.name==="_shapes"?G$(i,a):a.packed?j$(i,a):a.mode==="read_write"?U$(i,a):q$(i,a),i.push("");return i.push("const bindGroup = device.createBindGroup({ layout: pipeline.getBindGroupLayout(0), entries });"),i.push("const encoder = device.createCommandEncoder();"),i.push("const pass = encoder.beginComputePass();"),i.push("pass.setPipeline(pipeline);"),i.push("pass.setBindGroup(0, bindGroup);"),i.push(`pass.dispatchWorkgroups(${o[0]}, ${o[1]}, ${o[2]});`),i.push("pass.end();"),i.push(""),W$(i,s),i.push(""),i.push("gpuBuffers.forEach(b => b.destroy());"),i.push("device.destroy();"),i.push("})();"),i.join(`
|
|
11
11
|
`)}function G$(n,e){n.push(`// binding ${e.index}: uniform (_shapes)`),n.push("{"),n.push(" const shapeData = new Uint32Array([/* shape values */]);"),n.push(" const size = Math.max(Math.ceil(shapeData.byteLength / 16) * 16, 16);"),n.push(" const buf = device.createBuffer({ size, usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST });"),n.push(" device.queue.writeBuffer(buf, 0, shapeData);"),n.push(" entries.push({ binding: "+e.index+", resource: { buffer: buf } });"),n.push(" gpuBuffers.push(buf);"),n.push("}")}function j$(n,e){let t=e.mode==="read_write",r=t?"GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST":"GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST";if(n.push(`// binding ${e.index}: packed ${e.name} (${e.packed.length} buffers, ${e.packedSize} elems)`),n.push("{"),n.push(` const buf = device.createBuffer({ size: ${e.packedSize*4}, usage: ${r}, mappedAtCreation: true });`),n.push(" const mapped = new Float32Array(buf.getMappedRange());"),t)n.push(" mapped.fill(0);");else for(let s of e.packed)n.push(` // mapped.set(${s.name}_data, ${s.offset}); // size=${s.size}`);n.push(" buf.unmap();"),n.push(" entries.push({ binding: "+e.index+", resource: { buffer: buf } });"),n.push(" gpuBuffers.push(buf);"),n.push("}")}function U$(n,e){n.push(`// binding ${e.index}: output ${e.name}`),n.push("{"),n.push(" const size = N * 4; // N = output element count"),n.push(" const buf = device.createBuffer({ size, usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST, mappedAtCreation: true });"),n.push(" new Float32Array(buf.getMappedRange()).fill(0);"),n.push(" buf.unmap();"),n.push(" entries.push({ binding: "+e.index+", resource: { buffer: buf } });"),n.push(" gpuBuffers.push(buf);"),n.push("}")}function q$(n,e){n.push(`// binding ${e.index}: input ${e.name}`),n.push("{"),n.push(` const data = ${e.name}_data; // Float32Array`),n.push(" const buf = device.createBuffer({ size: Math.max(data.byteLength, 4), usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST, mappedAtCreation: true });"),n.push(" new Float32Array(buf.getMappedRange()).set(data);"),n.push(" buf.unmap();"),n.push(" entries.push({ binding: "+e.index+", resource: { buffer: buf } });"),n.push(" gpuBuffers.push(buf);"),n.push("}")}function W$(n,e){if(e.filter(r=>r.mode==="read_write").length===0){n.push("device.queue.submit([encoder.finish()]);");return}for(let r=0;r<e.length;r++){let s=e[r];if(s.mode==="read_write")if(s.packed)for(let o of s.packed)n.push("{"),n.push(` const rb = device.createBuffer({ size: ${o.size*4}, usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST });`),n.push(` encoder.copyBufferToBuffer(gpuBuffers[${r}], ${o.offset*4}, rb, 0, ${o.size*4});`),n.push(" device.queue.submit([encoder.finish()]);"),n.push(" await rb.mapAsync(GPUMapMode.READ);"),n.push(` console.log("${o.name}:", new Float32Array(rb.getMappedRange()));`),n.push(" rb.unmap(); rb.destroy();"),n.push("}");else n.push("{"),n.push(` const src = gpuBuffers[${r}];`),n.push(" const rb = device.createBuffer({ size: src.size, usage: GPUBufferUsage.MAP_READ | GPUBufferUsage.COPY_DST });"),n.push(" encoder.copyBufferToBuffer(src, 0, rb, 0, src.size);"),n.push(" device.queue.submit([encoder.finish()]);"),n.push(" await rb.mapAsync(GPUMapMode.READ);"),n.push(` console.log("${s.name}:", new Float32Array(rb.getMappedRange()));`),n.push(" rb.unmap(); rb.destroy();"),n.push("}")}}var B1=M(()=>{"use strict";l(O1,"buildSnippet");l(G$,"emitShapeBinding");l(j$,"emitPackedBinding");l(U$,"emitOutputBinding");l(q$,"emitInputBinding");l(W$,"emitReadback")});function R1(n){let{source:e,name:t,metadata:r}=n,{blockDim:s,gridDim:o,sharedMemBytes:i,params:a}=r,u=[];return u.push(e),u.push(""),u.push("// Launch:"),u.push(`// dim3 block(${s[0]}, ${s[1]}, ${s[2]});`),u.push(`// dim3 grid(${o[0]}, ${o[1]}, ${o[2]});`),i>0?u.push(`// ${t}<<<grid, block, ${i}>>>(${a.join(", ")});`):u.push(`// ${t}<<<grid, block>>>(${a.join(", ")});`),u.join(`
|
|
12
|
-
`)}var M1=M(()=>{"use strict";l(R1,"buildSnippet")});function Km(n,e){I1.set(n,e),e.runtimeKind&&e.snippet&&E1.set(e.runtimeKind,e.snippet)}function L1(n){return I1.get(n)||null}function C1(n){return E1.get(n)||null}var I1,E1,D1=M(()=>{"use strict";yo();d1();b1();w1();S1();k1();A1();B1();M1();I1=new Map,E1=new Map;l(Km,"registerCodegen");l(L1,"getCodegenEntry");l(C1,"getSnippetBuilder");Km(Dt.CPU,{runtimeKind:"js",snippet:v1,compile(n,e){return{source:new Fm(e).generate(n),metadata:{kind:"js",paramCount:n.params.length}}}});Km(Dt.WASM,{runtimeKind:"wasm",snippet:N1,compile(n,e){let t=new Vm(e).generate(n),r={kind:"wasm",memoryPages:t.memoryPages,bufferOffsets:t.bufferOffsets,imports:t.imports,params:t.params,bufferMap:n.bufferMap};return t.parallel&&(r.parallel=t.parallel),{source:t.wat,metadata:r}}});Km(Dt.WEBGPU,{runtimeKind:"webgpu",snippet:O1,compile(n,e){let t=new Um(e).generate(n);return{source:t.source,metadata:{kind:"webgpu",workgroupSize:t.workgroupSize,dispatchSize:t.dispatchSize,sharedMemBytes:t.sharedMemBytes,params:t.params,bindings:t.bindings}}}});Km(Dt.CUDA,{runtimeKind:"cuda",snippet:R1,compile(n,e,t){if(t&&t.matmulBackend==="cublas"&&n.cublasInfo)return{source:"",metadata:{kind:"cuda",cublas:n.cublasInfo,outputIndices:[n.cublasInfo.cIdx]}};let r=new zm(e).generate(n);return{source:r.source,metadata:{kind:"cuda",blockDim:r.blockDim,gridDim:r.gridDim,sharedMemBytes:r.sharedMemBytes,params:r.params,outputIndices:r.outputIndices,scratch:r.scratch}}}})});function P1(n){let e=[],t=[n.body];for(;t.length>0;){let m=t.pop();if(m){if(m.type==="BlockNode"){e.push(m),t.push(m.body);continue}if(m.body&&t.push(m.body),m.stmts)for(let g of m.stmts)t.push(g);m.thenBody&&t.push(m.thenBody),m.elseBody&&t.push(m.elseBody)}}let r=null;for(let m of e)if(m.name.includes("matmul"))m.reads.length>=2&&m.writes.length>=1&&(r=m);else return null;if(!r)return null;let s=r.reads[0].buffer,o=r.reads[1].buffer,i=r.writes[0].buffer;if(s.dtype!=="f32"||o.dtype!=="f32"||i.dtype!=="f32"||s.shape.length!==2||o.shape.length!==2||i.shape.length!==2)return null;let a=i.shape[0],u=i.shape[1],p=s.shape[1];if(![a,u,p].every(m=>typeof m=="number"))return null;let c=[];for(let[,m]of n.bufferMap)c.push(m.name);let f=c.indexOf(s.name),d=c.indexOf(o.name),h=c.indexOf(i.name);return f<0||d<0||h<0?null:{M:a,N:u,K:p,aIdx:f,bIdx:d,cIdx:h}}var Ip,bo,Ep=M(()=>{"use strict";D1();l(P1,"detectPureMatmul");Ip=class{static{l(this,"CompiledKernel")}constructor(e,t,r,s={}){this.name=e,this.source=t,this.target=r,this.metadata=s}snippet(){let e=C1(this.metadata.kind);if(!e)throw new Error(`No snippet for kind: ${this.metadata.kind}`);return e(this)}},bo=class{static{l(this,"BackendPipeline")}constructor(e,t={}){this.target=e,this.matmulBackend=t.matmulBackend||"native",this.context=t.context||null}compile(e){let t=this.context&&this.context.getCodegenEntry(this.target.kind)||L1(this.target.kind);if(!t)throw new Error(`Unsupported target kind: ${this.target.kind}`);let{source:r,metadata:s}=t.compile(e,this.target,this);return new Ip(e.name,r,this.target,s)}compileAll(e){return e.map(t=>this.compile(t))}}});function Hm(n,e){$1.set(n,e)}function F1(n){return $1.get(n)||null}var $1,Ym=M(()=>{"use strict";$1=new Map;l(Hm,"registerMeasurer");l(F1,"getMeasurer")});var z1={};at(z1,{runWasmParallel:()=>Z$});import{Worker as K$}from"
|
|
12
|
+
`)}var M1=M(()=>{"use strict";l(R1,"buildSnippet")});function Km(n,e){I1.set(n,e),e.runtimeKind&&e.snippet&&E1.set(e.runtimeKind,e.snippet)}function L1(n){return I1.get(n)||null}function C1(n){return E1.get(n)||null}var I1,E1,D1=M(()=>{"use strict";yo();d1();b1();w1();S1();k1();A1();B1();M1();I1=new Map,E1=new Map;l(Km,"registerCodegen");l(L1,"getCodegenEntry");l(C1,"getSnippetBuilder");Km(Dt.CPU,{runtimeKind:"js",snippet:v1,compile(n,e){return{source:new Fm(e).generate(n),metadata:{kind:"js",paramCount:n.params.length}}}});Km(Dt.WASM,{runtimeKind:"wasm",snippet:N1,compile(n,e){let t=new Vm(e).generate(n),r={kind:"wasm",memoryPages:t.memoryPages,bufferOffsets:t.bufferOffsets,imports:t.imports,params:t.params,bufferMap:n.bufferMap};return t.parallel&&(r.parallel=t.parallel),{source:t.wat,metadata:r}}});Km(Dt.WEBGPU,{runtimeKind:"webgpu",snippet:O1,compile(n,e){let t=new Um(e).generate(n);return{source:t.source,metadata:{kind:"webgpu",workgroupSize:t.workgroupSize,dispatchSize:t.dispatchSize,sharedMemBytes:t.sharedMemBytes,params:t.params,bindings:t.bindings}}}});Km(Dt.CUDA,{runtimeKind:"cuda",snippet:R1,compile(n,e,t){if(t&&t.matmulBackend==="cublas"&&n.cublasInfo)return{source:"",metadata:{kind:"cuda",cublas:n.cublasInfo,outputIndices:[n.cublasInfo.cIdx]}};let r=new zm(e).generate(n);return{source:r.source,metadata:{kind:"cuda",blockDim:r.blockDim,gridDim:r.gridDim,sharedMemBytes:r.sharedMemBytes,params:r.params,outputIndices:r.outputIndices,scratch:r.scratch}}}})});function P1(n){let e=[],t=[n.body];for(;t.length>0;){let m=t.pop();if(m){if(m.type==="BlockNode"){e.push(m),t.push(m.body);continue}if(m.body&&t.push(m.body),m.stmts)for(let g of m.stmts)t.push(g);m.thenBody&&t.push(m.thenBody),m.elseBody&&t.push(m.elseBody)}}let r=null;for(let m of e)if(m.name.includes("matmul"))m.reads.length>=2&&m.writes.length>=1&&(r=m);else return null;if(!r)return null;let s=r.reads[0].buffer,o=r.reads[1].buffer,i=r.writes[0].buffer;if(s.dtype!=="f32"||o.dtype!=="f32"||i.dtype!=="f32"||s.shape.length!==2||o.shape.length!==2||i.shape.length!==2)return null;let a=i.shape[0],u=i.shape[1],p=s.shape[1];if(![a,u,p].every(m=>typeof m=="number"))return null;let c=[];for(let[,m]of n.bufferMap)c.push(m.name);let f=c.indexOf(s.name),d=c.indexOf(o.name),h=c.indexOf(i.name);return f<0||d<0||h<0?null:{M:a,N:u,K:p,aIdx:f,bIdx:d,cIdx:h}}var Ip,bo,Ep=M(()=>{"use strict";D1();l(P1,"detectPureMatmul");Ip=class{static{l(this,"CompiledKernel")}constructor(e,t,r,s={}){this.name=e,this.source=t,this.target=r,this.metadata=s}snippet(){let e=C1(this.metadata.kind);if(!e)throw new Error(`No snippet for kind: ${this.metadata.kind}`);return e(this)}},bo=class{static{l(this,"BackendPipeline")}constructor(e,t={}){this.target=e,this.matmulBackend=t.matmulBackend||"native",this.context=t.context||null}compile(e){let t=this.context&&this.context.getCodegenEntry(this.target.kind)||L1(this.target.kind);if(!t)throw new Error(`Unsupported target kind: ${this.target.kind}`);let{source:r,metadata:s}=t.compile(e,this.target,this);return new Ip(e.name,r,this.target,s)}compileAll(e){return e.map(t=>this.compile(t))}}});function Hm(n,e){$1.set(n,e)}function F1(n){return $1.get(n)||null}var $1,Ym=M(()=>{"use strict";$1=new Map;l(Hm,"registerMeasurer");l(F1,"getMeasurer")});var z1={};at(z1,{runWasmParallel:()=>Z$});import{Worker as K$}from"worker_threads";import H$ from"os";function J$(){if(!X0){let n=Math.max(1,Math.min(H$.cpus().length-1,16));X0=new eT(n)}return X0}async function Z$(n,e,t,r,s,o){let i=J$();i._ensureWorkers();let{binary:a,bufferOffsets:u}=n,p=[...u.values()],c=Math.min(p.length,t.length),{extent:f,outputIndices:d}=s,h=new Set(d||[]),m=Math.min(i.numWorkers,Math.max(1,f)),g=Math.ceil(f/m),y=[];for(let T=0;T<c;T++){let v=t[T],N=(v instanceof Float32Array?v.length:0)/f;y.push(N>=1&&Number.isInteger(N)?N:0)}let _=p.slice(0,c);if(r)for(let T of r)_.push(T);let b=new SharedArrayBuffer(4*m),w=a.buffer.slice(a.byteOffset,a.byteOffset+a.byteLength),x=[];for(let T=0;T<m;T++){let v=T*g,A=Math.min(v+g,f);if(v>=f)break;let N=[];for(let O=0;O<c;O++){let R=t[O];R instanceof Float32Array&&N.push({offset:p[O],length:R.length,data:R.buffer.slice(0),fullLength:R.length,elemStart:0})}let k=[..._,v,A];x.push(i.dispatch(T,{wasmBinary:w,mathImportNames:o,bufferEntries:N,callArgs:k,controlBuffer:b,workerIdx:T,outputIndices:d||[]}))}let S=await Promise.all(x);for(let T=0;T<c;T++){if(!h.has(T)&&h.size>0)continue;let v=t[T];if(!(v instanceof Float32Array))continue;let A=y[T];if(A>0)for(let N of S){let k=N.outputs[T];if(!k)continue;let R=N.workerIdx*g,B=Math.min(R+g,f),E=new Float32Array(k),F=R*A,C=B*A;v.set(E.subarray(F,C),F)}else{let N=S.find(k=>k.workerIdx===0);N&&N.outputs[T]&&v.set(new Float32Array(N.outputs[T]))}}}var Y$,X0,eT,V1=M(()=>{"use strict";Yi();Y$=`
|
|
13
13
|
const { parentPort } = require('node:worker_threads');
|
|
14
14
|
|
|
15
15
|
const LANCZOS_G = ${7};
|
|
@@ -419,7 +419,7 @@ ${iG("cd","r","col","delta","n",e)}
|
|
|
419
419
|
(local.get $maxChange) (local.get $tol) f64.lt br_if $ie
|
|
420
420
|
(local.get $iter) (i32.const 1) i32.add local.set $iter
|
|
421
421
|
br $il))`;return Af("coord_descent",[["xc","i32"],["n","i32"],["d","i32"],["r","i32"],["w","i32"],["z","i32"],["l1","f64"],["l2","f64"],["maxIter","i32"],["tol","f64"]],[["iter","i32"],["jc","i32"],["nf","f64"],["maxChange","f64"],["zj","f64"],["col","i32"],["dot","f64"],["wold","f64"],["rho","f64"],["thr","f64"],["wj","f64"],["delta","f64"],["absd","f64"],["j","i32"],["nmain","i32"],["acc","v128"],["j2","i32"],["nmain2","i32"],["sv","v128"],["ya","i32"],["vy","v128"]],t)}l(LI,"coordDescentWat");var aG=5e5;function CI(n,e,t){let r=Po("gram_sym",II,"gram_sym"),s=r.allocF64(e*t),o=r.allocF64(e*e);return r.writeF64(s,n),r.run(s,e,t,o),Float64Array.from(r.f64(o,e*e))}l(CI,"gramSym");function uG(n,e,t,r){if(r){let s=new Float64Array(t*e);for(let o=0;o<e;o++)for(let i=0;i<t;i++)s[i*e+o]=n[o*t+i];return CI(s,t,e)}return CI(n,e,t)}l(uG,"wasmGram");function lG(n,e,t,r,s){let o=Po("matmul_rows",EI,"matmul_rows"),i=o.allocF64(e*t),a=o.allocF64(s*t),u=o.allocF64(e*s);return o.writeF64(i,n),o.writeF64(a,r),o.run(i,e,t,a,s,u),Float64Array.from(o.f64(u,e*s))}l(lG,"wasmMatmulRows");function DI(n,e){let{data:t,rows:r,cols:s}=Ye(e);if(Math.max(r,s)*Math.min(r,s)*Math.min(r,s)<aG)return Fy(n,e);let{U:i,S:a,V:u,k:p}=mu(t,r,s,void 0,uG,lG);return[Q(i,[r,p],e.dtype,e.device),Q(a,[p],e.dtype,e.device),Q(u,[s,p],e.dtype,e.device)]}l(DI,"wasmSvd");var PI={svd:DI},cG={eigh:"Jacobi rotation sweeps use strided column access; not SIMD-friendly",cholesky:"sequential dependent updates; not vectorizable at f64x2 width",solve:"triangular back-substitution is inherently sequential",cov:"single O(n*d) pass dominated by the eigen-free reduction"},$I=!1;function FI(){let n={enabled:Object.keys(PI),skipped:Object.keys(cG)};if($I)return n;$I=!0,$l();let e=new Vt("mlc","IMPL");for(let[t,r]of Object.entries(PI))e.impl(t,2,r);return n}l(FI,"registerWasmLinalg");ys();An();var pG=8e3,fG=5e4,dG=2654435769;function zI(n,e,t,r,s,o,i,a,u,p){return n.writeF64(t,u),n.run(e,o,i,t,a,r,s),p.set(n.i32(r,o)),n.f64(s,1)[0]}l(zI,"assignWasm");function VI(n,e,t,r,s,o){let{data:i,rows:a,cols:u}=Ye(e);if(a*u*t<pG)return Vy(n,e,t,r,s,o);let p=Po("kmeans_assign",AS,"nearest_centroid"),c=null;for(let d=0;d<s;d++){p.reset();let h=p.allocF64(a*u),m=p.allocF64(t*u),g=p.allocI32(a),y=p.allocF64(1);p.writeF64(h,i);let _=xr(o+d*dG),b=_S(i,a,u,t,_),w=new Int32Array(a),x=1/0;for(let S=0;S<r&&(x=zI(p,h,m,g,y,a,u,t,b,w),!!bS(i,a,u,t,w,b));S++);x=zI(p,h,m,g,y,a,u,t,b,w),(!c||x<c.inertia)&&(c={centers:Float64Array.from(b),labels:Int32Array.from(w),inertia:x})}let f=new Float64Array(a);for(let d=0;d<a;d++)f[d]=c.labels[d];return[Q(c.centers,[t,u],e.dtype,e.device),Q(f,[a],e.dtype,e.device),Q(new Float64Array([c.inertia]),[1],e.dtype,e.device)]}l(VI,"wasmKmeans");function GI(n,e,t){let{data:r,rows:s,cols:o}=Ye(e),i=Ye(t);if(s*o*i.rows<fG)return Gy(n,e,t);let a=Po("kmeans_assign",AS,"nearest_centroid");a.reset();let u=a.allocF64(s*o),p=a.allocF64(i.rows*o),c=a.allocI32(s),f=a.allocF64(1);a.writeF64(u,r),a.writeF64(p,i.data),a.run(u,s,o,p,i.rows,c,f);let d=new Float64Array(s),h=a.i32(c,s);for(let m=0;m<s;m++)d[m]=h[m];return Q(d,[s],e.dtype,e.device)}l(GI,"wasmKmeansPredict");var hG=2e4;function jI(n,e,t,r,s,o){let i=Ye(e),a=Ye(r),u=$t(t),p=i.cols;if(a.rows*i.rows*p<hG)return jy(n,e,t,r,s,o);let c=Po("knn_dist",MI,"dist_row");c.reset();let f=c.allocF64(a.rows*p),d=c.allocF64(i.rows*p),h=c.allocF64(i.rows);c.writeF64(f,a.data),c.writeF64(d,i.data);let m=Math.min(s,i.rows),g=new Float64Array(a.rows),y=new Int32Array(i.rows),_=p*pt;for(let b=0;b<a.rows;b++){c.run(f+b*_,d,i.rows,p,h);let w=c.f64(h,i.rows);wS(w,y,i.rows,m),g[b]=TS(u.data,y,m,o)}return Q(g,[a.rows],r.dtype,r.device)}l(jI,"wasmKnnPredict");var mG=3e6;function UI(n,e,t,r,s,o,i,a){let{data:u,rows:p,cols:c}=Ye(e);if(p*c*o<mG)return Uy(n,e,t,r,s,o,i,a);let f=$t(t),{xc:d,r:h,z:m,meanX:g,meanY:y}=SS(u,p,c,f.data,a),_=new Float64Array(p*c);for(let O=0;O<c;O++)for(let R=0;R<p;R++)_[O*p+R]=d[R*c+O];let b=r*s,w=r*(1-s),x=Po("coord_descent",LI,"coord_descent");x.reset();let S=x.allocF64(p*c),T=x.allocF64(p),v=x.allocF64(c),A=x.allocF64(c);x.writeF64(S,_),x.writeF64(T,h),x.writeF64(A,m),x.f64(v,c).fill(0),x.run(S,p,c,T,v,A,b,w,o,i);let N=Float64Array.from(x.f64(v,c)),k=vS(g,y,N,c);return[Q(N,[c],e.dtype,e.device),Q(new Float64Array([k]),[1],e.dtype,e.device)]}l(UI,"wasmElasticNet");var qI={kmeans:VI,kmeans_predict:GI,knn_predict:jI,elastic_net:UI},WI=!1;function KI(){let n={enabled:Object.keys(qI)};if(WI)return n;WI=!0,zy();let e=new Vt("mlc","IMPL");for(let[t,r]of Object.entries(qI))e.impl(t,2,r);return n}l(KI,"registerWasmMl");An();sp();Ma();ou();Ao();be();kt();var Wy=class extends ve{static{l(this,"AddBackward")}constructor(){super(2)}apply(e){let t=e[0];return[t,t]}},Ky=class extends ve{static{l(this,"SubBackward")}constructor(){super(2)}apply(e){let t=e[0];return[t,is(t)]}},Hy=class extends ve{static{l(this,"MulBackward")}constructor(){super(2)}apply(e){let t=e[0],[r,s]=this.savedTensors();return[ee(t,s.detach()),ee(t,r.detach())]}},Yy=class extends ve{static{l(this,"DivBackward")}constructor(){super(2)}apply(e){let t=e[0],[r,s]=this.savedTensors(),o=Kt(t,s.detach()),i=is(Kt(ee(t,r.detach()),ee(s.detach(),s.detach())));return[o,i]}},Jy=class extends ve{static{l(this,"NegBackward")}constructor(){super(1)}apply(e){let t=e[0];return[is(t)]}},Zy=class extends ve{static{l(this,"PowBackward")}constructor(){super(2)}apply(e){let t=e[0],[r,s]=this.savedTensors(),o=tn(s.shape,{dtype:s.dtype,device:s.device}),i=ee(t,ee(s.detach(),vo(r.detach(),ze(s.detach(),o)))),a=ee(t,ee(vo(r.detach(),s.detach()),ko(r.detach())));return[i,a]}};Ao();be();kt();Yi();var gG=2/Math.sqrt(Math.PI);function HI(n){let e=ot(n.shape,gG,{dtype:n.dtype,device:n.device});return ee(e,as(is(ee(n,n))))}l(HI,"_erfDeriv");function YI(n){let e=ae(n,ii),t=vo(e,-1),r=ze(ko(e),ee(t,.5)),s=ee(t,t),o=s;for(let i of Ga)r=ae(r,ee(o,i)),o=ee(o,s);for(let i=0;i<ii;i++)r=ze(r,vo(ae(n,i),-1));return r}l(YI,"_digammaTensor");var Qy=class extends ve{static{l(this,"ErfBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors();return[ee(e[0],HI(t.detach()))]}},Xy=class extends ve{static{l(this,"ErfcBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors();return[is(ee(e[0],HI(t.detach())))]}},e_=class extends ve{static{l(this,"LgammaBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors();return[ee(e[0],YI(t.detach()))]}},t_=class extends ve{static{l(this,"GammaBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors(),r=t.detach();return[ee(e[0],ee(kg(r),YI(r)))]}},n_=class extends ve{static{l(this,"ExpBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors();return[ee(e[0],as(t.detach()))]}},r_=class extends ve{static{l(this,"LogBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors();return[Kt(e[0],t.detach())]}},s_=class extends ve{static{l(this,"SqrtBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors(),r=t.detach(),s=na(r),o=ot(r.shape,2,{dtype:r.dtype,device:r.device});return[Kt(e[0],ee(o,s))]}},o_=class extends ve{static{l(this,"TanhBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors(),r=t.detach(),s=Hs(r),o=tn(r.shape,{dtype:r.dtype,device:r.device});return[ee(e[0],ze(o,ee(s,s)))]}},i_=class extends ve{static{l(this,"SigmoidBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors(),r=t.detach(),s=wr(r),o=tn(r.shape,{dtype:r.dtype,device:r.device});return[ee(e[0],ee(s,ze(o,s)))]}},a_=class extends ve{static{l(this,"SoftmaxBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors(),r=this.opArgs(),s=r&&r.length>1&&r[1]!=null?r[1]:-1,o=e[0],i=mi(t.detach(),s),a=wt(ee(o,i),s,!0);return[ee(i,ze(o,a))]}},u_=class extends ve{static{l(this,"LogSoftmaxBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors(),r=this.opArgs(),s=r&&r.length>1&&r[1]!=null?r[1]:-1,o=e[0],i=mi(t.detach(),s),a=wt(o,s,!0);return[ze(o,ee(i,a))]}},l_=class extends ve{static{l(this,"ReluBackward")}constructor(){super(1)}apply(e){let[t]=this.savedTensors(),r=t.detach();return[ee(e[0],Og(Ml(r)))]}},c_=class extends ve{static{l(this,"GeluBackward")}constructor(){super(1)}apply(e){let t=e[0],[r]=this.savedTensors(),s=r.detach(),o=s.shape,i=s.dtype,a=s.device,u=ot(o,1.702,{dtype:i,device:a}),p=tn(o,{dtype:i,device:a}),c=ee(u,s),f=wr(c),d=ee(f,ae(p,ee(c,ze(p,f))));return[ee(t,d)]}},p_=class extends ve{static{l(this,"SiluBackward")}constructor(){super(1)}apply(e){let t=e[0],[r]=this.savedTensors(),s=r.detach(),o=wr(s),i=tn(s.shape,{dtype:s.dtype,device:s.device}),a=ee(o,ae(i,ee(s,ze(i,o))));return[ee(t,a)]}};Ao();be();kt();be();function JI(n,e){if(n==null){let r=[];for(let s=0;s<e;s++)r.push(s);return r}return(Array.isArray(n)?n:[n]).map(r=>r<0?r+e:r).sort((r,s)=>r-s)}l(JI,"_normalizeDims");function ZI(n,e,t,r){let s=n;if(!r)for(let i of t)s=Lr(s,i);let o=Ve(e,{dtype:s.dtype,device:s.device});return ae(o,s)}l(ZI,"_unreduce");var f_=class extends ve{static{l(this,"SumBackward")}constructor(){super(1)}apply(e){let t=e[0],s=this.inputMetadata(0).shape,o=this.opArgs(),i=o?o[1]:void 0,a=o?o[2]:!1,u=JI(i,s.length);return[ZI(t,s,u,a)]}},d_=class extends ve{static{l(this,"MeanBackward")}constructor(){super(1)}apply(e){let t=e[0],s=this.inputMetadata(0).shape,o=this.opArgs(),i=o?o[1]:void 0,a=o?o[2]:!1,u=JI(i,s.length),p=1;for(let d of u)p*=s[d];let c=ZI(t,s,u,a),f=ot(s,p,{dtype:t.dtype,device:t.device});return[Kt(c,f)]}};Ao();be();be();function QI(n,e){let t=n;for(;t.ndim>e.length;)t=wt(t,0,!1);for(let r=0;r<e.length;r++)e[r]===1&&t.shape[r]!==1&&(t=wt(t,r,!0));return t}l(QI,"_sumToShape");var h_=class extends ve{static{l(this,"MatmulBackward")}constructor(){super(2)}apply(e){let t=e[0],[r,s]=this.savedTensors(),o=r.detach(),i=s.detach(),a=o.ndim,u=i.ndim;if(a===1&&u===1)return[ee(t,i),ee(t,o)];if(a===2&&u===1){let f=Lr(t,1),d=Lr(i,0);return[tt(f,d),Cl(tt(vt(o,0,1),f),1)]}if(a===1&&u===2){let f=tt(t,vt(i,0,1)),d=tt(Lr(o,1),Lr(t,0));return[f,d]}let p=tt(t,vt(i,u-2,u-1)),c=tt(vt(o,a-2,a-1),t);return p=QI(p,o.shape),c=QI(c,i.shape),[p,c]}},m_=class extends ve{static{l(this,"DotBackward")}constructor(){super(2)}apply(e){let t=e[0],[r,s]=this.savedTensors();return[ee(t,s.detach()),ee(t,r.detach())]}};UT();Ao();be();kt();be();function yG(n,e,t){n[e]+=t}l(yG,"_addAt");var ic=class extends ve{static{l(this,"ReshapeBackward")}constructor(){super(1)}apply(e){let t=this.inputMetadata(0);return[Hn(e[0],t.shape)]}},g_=class extends ve{static{l(this,"TransposeBackward")}_dim0;_dim1;constructor(e,t){super(1),this._dim0=e,this._dim1=t}apply(e){return[vt(e[0],this._dim0,this._dim1)]}},Of=class extends ve{static{l(this,"SliceBackward")}_dim;_start;_end;_step;constructor(e,t,r,s){super(1),this._dim=e,this._start=t,this._end=r,this._step=s}apply(e){let t=e[0],r=this.inputMetadata(0),s=this._dim,o=r.shape[s],i=this._step||1,a=this._start<0?this._start+o:this._start,u=this._end<0?this._end+o:this._end;if(a=Math.max(0,Math.min(a,o)),u=Math.max(0,Math.min(u,o)),i===1){let w=r.shape.map(()=>0),x=r.shape.map(()=>0);return w[s]=a,x[s]=o-u,[tu(t,w,x,0)]}let p=Ve(r.shape,{dtype:t.dtype,device:t.device}),c=p._impl.storage.data,f=t._impl.storage.data,d=t._impl.storageOffset,h=t.shape,m=t.strides,g=p.strides,y=h.length,_=new Int32Array(y),b=d;for(let w=0;w<t.numel;w++){let x=0;for(let S=0;S<y;S++){let T=S===s?a+_[S]*i:_[S];x+=T*g[S]}yG(c,x,f[b]);for(let S=y-1;S>=0;S--){if(_[S]++,_[S]<h[S]){b+=m[S];break}b-=(h[S]-1)*m[S],_[S]=0}}return[p]}},y_=class extends ve{static{l(this,"SelectBackward")}_dim;_index;constructor(e,t){super(1),this._dim=e,this._index=t}apply(e){let t=e[0],r=this.inputMetadata(0),s=this._dim,o=r.shape[s],i=this._index<0?this._index+o:this._index,a=Lr(t,s),u=r.shape.map(()=>0),p=r.shape.map(()=>0);return u[s]=i,p[s]=o-1-i,[tu(a,u,p,0)]}},Bf=class extends ve{static{l(this,"ExpandBackward")}constructor(){super(1)}apply(e){let t=e[0],s=this.inputMetadata(0).shape,o=t.shape,i=[],a=o.length-s.length;for(let p=0;p<a;p++)i.push(p);for(let p=0;p<s.length;p++)s[p]===1&&o[p+a]!==1&&i.push(p+a);let u=t;return i.length>0&&(u=wt(t,i,!0)),[Hn(u,s)]}},__=class extends ve{static{l(this,"PermuteBackward")}_dims;constructor(e){super(1),this._dims=e}apply(e){let t=this._dims.length,r=new Array(t);for(let s=0;s<t;s++){let o=this._dims[s]<0?t+this._dims[s]:this._dims[s];r[o]=s}return[El(e[0],r)]}};var BS=new Map;function Ge(n,e){BS.set(n,e)}l(Ge,"_register");Ge("add",()=>new Wy);Ge("sub",()=>new Ky);Ge("mul",()=>new Hy);Ge("div",()=>new Yy);Ge("neg",()=>new Jy);Ge("pow",()=>new Zy);Ge("exp",()=>new n_);Ge("log",()=>new r_);Ge("sqrt",()=>new s_);Ge("tanh",()=>new o_);Ge("erf",()=>new Qy);Ge("erfc",()=>new Xy);Ge("lgamma",()=>new e_);Ge("gamma",()=>new t_);Ge("sigmoid",()=>new i_);Ge("relu",()=>new l_);Ge("softmax",()=>new a_);Ge("log_softmax",()=>new u_);Ge("gelu",()=>new c_);Ge("silu",()=>new p_);Ge("sum",()=>new f_);Ge("mean",()=>new d_);Ge("matmul",()=>new h_);Ge("dot",()=>new m_);Ge("cat",()=>new Ug);Ge("stack",()=>new qg);Ge("clamp",()=>new Wg);Ge("pad",()=>new Kg);Ge("index_select",()=>new Pl);Ge("where",()=>new Hg);Ge("reshape",()=>new ic);Ge("transpose",n=>new g_(n[1],n[2]));Ge("permute",n=>new __(n[1]));Ge("broadcast_in_dim",()=>new Bf);Ge("expand",()=>new Bf);Ge("slice",n=>new Of(n[1],n[2],n[3],n[4]));Ge("narrow",n=>new Of(n[1],n[2],n[2]+n[3],1));Ge("select",n=>new y_(n[1],n[2]));Ge("unsqueeze",()=>new ic);Ge("squeeze",()=>new ic);function XI(n,e=null){let t=BS.get(n);return t?t(e):null}l(XI,"getGradFn");function eE(n){return BS.has(n)}l(eE,"hasGradFn");Xg();Wp();di();sr();qn();fi();sr();kt();be();function tE(n,e){let t=n.gradFn;if(!t)throw new Error("Cannot call backward on a tensor that does not require grad");let r=e;if(!r){if(n.numel!==1)throw new Error("grad must be specified for non-scalar tensors");r=tn(n.shape,{dtype:n.dtype,device:n.device})}let s=new Map;bG(t,s,new Set);let i=new Map;i.set(t.id,[r]);let a=[];for(let[p,c]of s)c===0&&a.push(p);let u=[];for(;a.length>0;){let p=a.pop();if(p){u.push(p);for(let c of p.nextEdges){if(!c||!c.node)continue;let f=c.node,d=s.get(f)-1;s.set(f,d),d===0&&a.push(f)}}}for(let p of u){let c=i.get(p.id);if(!c)continue;let f=p.apply(c),d=f;if(f&&(d=f.map((m,g)=>{if(!m)return m;let y=p.inputMetadata(g);return y?_G(m,y.shape):m})),p.releaseVariables(),!d)continue;let h=p.nextEdges;for(let m=0;m<h.length;m++){let g=h[m];if(!g||!g.node||m>=d.length||!d[m])continue;let y=d[m],_=g.node.id,b=i.get(_);if(b){let w=b[g.inputNr];b[g.inputNr]=b[g.inputNr]?ae(w,y):y}else{let w=[];w[g.inputNr]=y,i.set(_,w)}}}}l(tE,"backward");function _G(n,e){let t=n.shape;if(t.length===e.length&&t.every((o,i)=>o===e[i]))return n;let r=n,s=t.length-e.length;for(let o=0;o<s;o++)r=wt(r,0,!1);for(let o=e.length-1;o>=0;o--)e[o]===1&&r.shape[o]!==1&&(r=wt(r,o,!0));return r}l(_G,"_reduceBroadcastGrad");function bG(n,e,t){let r=[n];for(e.set(n,0);r.length>0;){let s=r.shift();if(!t.has(s.id)){t.add(s.id);for(let o of s.nextEdges){if(!o||!o.node)continue;let i=o.node;e.has(i)||e.set(i,0),e.set(i,e.get(i)+1),t.has(i.id)||r.push(i)}}}}l(bG,"_countDeps");WO({backward:tE});function wG(n){let e=n._impl;if(In()&&e.device&&e.device.type==="gpu"){e.storage.retain();let s=new Pt(e.storage,e.storageOffset,e.sizes(),e.strides(),e.dtype,e.device);return new Ze(s)}let t=e.storage.clone(),r=new Pt(t,e.storageOffset,e.sizes(),e.strides(),e.dtype,e.device);return new Ze(r)}l(wG,"_snapshotTensor");function Rf(n){return typeof n=="object"&&n!==null&&"_impl"in n}l(Rf,"_isTensor");function TG(n){for(let e=0;e<n.length;e++){let t=n[e];if(Rf(t)&&t.requiresGrad)return!0;if(Array.isArray(t)){for(let r=0;r<t.length;r++)if(Rf(t[r])&&t[r].requiresGrad)return!0}}return!1}l(TG,"_anyRequiresGrad");function xG(n){let e=[];for(let t=0;t<n.length;t++){let r=n[t];if(Rf(r))e.push(r);else if(Array.isArray(r))for(let s=0;s<r.length;s++)Rf(r[s])&&e.push(r[s])}return e}l(xG,"_extractTensors");function SG(n){let e=n._impl.autogradMeta;if(!e)return null;let t=e.getGradAccumulator();return t||(t=new Xp(n),e.setGradAccumulator(t)),t}l(SG,"_getOrCreateAccumulator");function vG(n,e){let t=Lt.dispatch.bind(Lt);return(r,...s)=>{let o=r;if(!Oo.isEnabled()||!TG(s)){let c=o.subtract(ip);return Lt.redispatch(e,c,...s)}let i=XI(n,s);if(!i){let c=o.subtract(ip);return Lt.redispatch(e,c,...s)}let a=xG(s);i.setOpArgs(s);for(let c=0;c<a.length;c++)i.saveTensor(wG(a[c])),i.saveInputMetadata(c,[...a[c].shape],a[c].dtype);for(let c=0;c<a.length;c++){let f=a[c];if(f.requiresGrad){let d=f.gradFn;if(d){let h=f._impl.autogradMeta?f._impl.autogradMeta.outputNr:0;i.setNextEdge(c,d,h)}else{let h=SG(f);h&&i.setNextEdge(c,h,0)}}}let u=o.subtract(ip),p=Lt.redispatch(e,u,...s);if(Rf(p)){p._impl.setAutogradMeta(new So);let c=p._impl.autogradMeta;c.setGradFn(i,0),c.requiresGrad=!0,p._impl._updateKeySet()}return p}}l(vG,"wrapWithAutograd");function kG(n){return(e,...t)=>{let r=e.subtract(ip);return Lt.redispatch(n,r,...t)}}l(kG,"_makePassthrough");function nE(){let n=Lt.listOps(),e=[40,41,42,43];for(let t of n){let r=Lt.findOp(t);if(!r)continue;let s=r.name,o=eE(s)?vG(s,r):kG(r),i=Mr.fromUnboxed(o);for(let a of e)r.entry.registerKernel(a,i)}}l(nE,"registerAutogradKernels");be();os();var If=Ht,NG=["neg","exp","log","sqrt","rsqrt","abs","sin","cos","tanh","erf","erfc","lgamma","gamma","sigmoid","relu","gelu","silu","sign","floor","ceil","clone","contiguous"],AG=["add","sub","mul","div","pow","remainder","maximum","minimum","eq","ne","lt","le","gt","ge","matmul","dot","flip","unsqueeze"],OG=["sum","mean","max","min","argmax","argmin","prod"],BG={softmax:[-1],log_softmax:[-1],roll:[void 0,0],cumsum:[0],sort:[-1,!1],argsort:[-1,!1],topk:[void 0,-1,!0],split:[void 0,0],chunk:[void 0,0],squeeze:[null]};function RG(n,e){let t=[];for(let r=0;r<e.length;r++)t[r]=n[r]===void 0?e[r]:n[r];for(let r=e.length;r<n.length;r++)t[r]=n[r];return t}l(RG,"withDefaults");function MG(n){for(let e of NG)n[e]=function(){return If[e](this)}}l(MG,"installSelfMethods");function IG(n){for(let e of AG)n[e]=function(t){return If[e](this,t)}}l(IG,"installOneArgMethods");function EG(n){for(let[e,t]of Object.entries(BG))n[e]=function(...r){return If[e](this,...RG(r,t))}}l(EG,"installDefaultedMethods");function LG(n){for(let e of OG)n[e]=function(t,r){return If[e](this,t,r)}}l(LG,"installReductionMethods");function Mf(n){return n.length===1&&Array.isArray(n[0])?n[0]:n}l(Mf,"arrayArg");function rE(n){let e=n.prototype;e.to=function(t){if(this.device.equals(t))return this;let s=If.contiguous(this).data.slice(0,this.numel);return eu(s,this.shape,this.dtype,{device:t})},MG(e),IG(e),EG(e),LG(e),e.mm=function(t){return tt(this,t)},e.requires_grad=function(t=!0){return this.requiresGrad_(t)},e.gather=function(t,r){return Eg(this,t,r)},e.scatter_add=function(t,r,s){return nu(this,t,r,s)},e.scatter=function(t,r,s){return Lg(this,t,r,s)},e.transpose=function(t,r){return vt(this,t,r)},e.slice=function(t,r,s,o){return Dg(this,t,r,s,o)},e.narrow=function(t,r,s){return ir(this,t,r,s)},e.select=function(t,r){return en(this,t,r)},e.reshape=function(...t){return Hn(this,Mf(t))},e.permute=function(...t){return El(this,Mf(t))},e.expand=function(...t){return Ll(this,Mf(t))},e.repeat=function(...t){return Dl(this,Mf(t))},e.tile=function(...t){return Pg(this,Mf(t))},e.t=function(){if(this.ndim!==2)throw new Error("t() expects a 2D tensor");return vt(this,0,1)}}l(rE,"installOps");sr();sr();qn();ou();yu();nn();RS();_f();yx();Ma();kt();kt();function Lf(n,e){return{dtype:e?.dtype??n.dtype,device:e?.device??n.device,requiresGrad:e?.requiresGrad??!1}}l(Lf,"_likeOpts");function $G(n,e){return Tn(n.shape,Lf(n,e))}l($G,"emptyLike");function FG(n,e){return Ve(n.shape,Lf(n,e))}l(FG,"zerosLike");function zG(n,e){return tn(n.shape,Lf(n,e))}l(zG,"onesLike");function VG(n,e,t){return ot(n.shape,e,Lf(n,t))}l(VG,"fullLike");function GG(n,e){return Gg(n.shape,Lf(n,e))}l(GG,"randnLike");os();be();var dE={};at(dE,{AdaptiveAvgPool2d:()=>Xf,AvgPool2d:()=>Qf,BCELoss:()=>rd,BatchNorm1d:()=>cc,BatchNorm2d:()=>Jf,Conv1d:()=>zf,Conv2d:()=>Ff,CrossEntropyLoss:()=>td,Dropout:()=>Sr,ELU:()=>Kf,Embedding:()=>sd,F:()=>fE,Flatten:()=>cd,GELU:()=>Gf,GRU:()=>id,GRUCell:()=>pc,GroupNorm:()=>E_,LSTM:()=>ad,LSTMCell:()=>fc,LayerNorm:()=>no,LeakyReLU:()=>Wf,Linear:()=>Sn,LogSoftmax:()=>Yf,MSELoss:()=>ed,MaxPool2d:()=>Zf,Module:()=>ge,ModuleDict:()=>ld,ModuleList:()=>aa,MultiheadAttention:()=>ua,NLLLoss:()=>nd,Parameter:()=>At,PositionalEncoding:()=>fd,ReLU:()=>Vf,Sequential:()=>ud,SiLU:()=>jf,Sigmoid:()=>Uf,Softmax:()=>Hf,Tanh:()=>qf,Transformer:()=>pd,TransformerDecoder:()=>hc,TransformerDecoderLayer:()=>wu,TransformerEncoder:()=>dc,TransformerEncoderLayer:()=>bu,functional:()=>lc,init:()=>T_});sr();var At=class extends Ze{static{l(this,"Parameter")}constructor(e,t=!0){e instanceof Ze?super(e._impl):super(e),t&&this.requiresGrad_(!0)}get isParameter(){return!0}};var ge=class n{static{l(this,"Module")}_parameters;_buffers;_modules;_training;_detected;constructor(){this._parameters=new Map,this._buffers=new Map,this._modules=new Map,this._training=!0}forward(...e){throw new Error(`${this.constructor.name}.forward() not implemented`)}call(...e){return this.forward(...e)}registerParameter(e,t){if(t!==null&&!(t instanceof At))throw new Error("Expected Parameter instance");this._parameters.set(e,t)}registerBuffer(e,t){this._buffers.set(e,t)}registerModule(e,t){if(t!==null&&!(t instanceof n))throw new Error("Expected Module instance");this._modules.set(e,t)}*parameters(e=!0){this._autoDetect();for(let[,t]of this._parameters)t!==null&&(yield t);if(e)for(let[,t]of this._modules)t!==null&&(yield*t.parameters(!0))}*namedParameters(e="",t=!0){this._autoDetect();let r=e?e+".":"";for(let[s,o]of this._parameters)o!==null&&(yield[r+s,o]);if(t)for(let[s,o]of this._modules)o!==null&&(yield*o.namedParameters(r+s,!0))}*buffers(e=!0){for(let[,t]of this._buffers)t!==null&&(yield t);if(e)for(let[,t]of this._modules)t!==null&&(yield*t.buffers(!0))}*children(){this._autoDetect();for(let[,e]of this._modules)e!==null&&(yield e)}*namedChildren(){this._autoDetect();for(let[e,t]of this._modules)t!==null&&(yield[e,t])}*modules(){yield this,this._autoDetect();for(let[,e]of this._modules)e!==null&&(yield*e.modules())}*namedModules(e=""){yield[e,this],this._autoDetect();let t=e?e+".":"";for(let[r,s]of this._modules)s!==null&&(yield*s.namedModules(t+r))}stateDict(e=""){this._autoDetect();let t=new Map,r=e?e+".":"";for(let[s,o]of this._parameters)o!==null&&t.set(r+s,o);for(let[s,o]of this._buffers)o!==null&&t.set(r+s,o);for(let[s,o]of this._modules)if(o!==null)for(let[i,a]of o.stateDict(r+s))t.set(i,a);return t}loadStateDict(e){this._autoDetect();for(let[t,r]of this._parameters){let s=t;if(e.has(s)&&r!==null){let o=e.get(s),i=r._impl.storage.data,a=o._impl?o._impl.storage.data:o.data;for(let u=0;u<i.length;u++)i[u]=a[u]}}for(let[t,r]of this._modules)if(r!==null){let s=new Map,o=t+".";for(let[i,a]of e)i.startsWith(o)&&s.set(i.substring(o.length),a);s.size>0&&r.loadStateDict(s)}}train(e=!0){this._autoDetect(),this._training=e;for(let[,t]of this._modules)t!==null&&t.train(e);return this}eval(){return this.train(!1)}get training(){return this._training}to(e){this._autoDetect();for(let[t,r]of this._parameters){let s=r;r!==null&&typeof s?.to=="function"&&(this._parameters.set(t,new At(s.to(e),r.requiresGrad)),this[t]=this._parameters.get(t))}for(let[t,r]of this._buffers){let s=r;r!==null&&typeof s?.to=="function"&&(this._buffers.set(t,s.to(e)),this[t]=this._buffers.get(t))}for(let[,t]of this._modules)t!==null&&t.to(e);return this}apply(e){this._autoDetect();for(let[,t]of this._modules)t!==null&&t.apply(e);return e(this),this}zeroGrad(){for(let e of this.parameters())if(e.grad){let t=e.grad._impl.storage.data;t&&t.fill(0)}return this}_autoDetect(){if(this._detected)return;this._detected=!0;let e=Object.keys(this);for(let t of e){if(t.startsWith("_"))continue;let r=this[t];r instanceof At&&!this._parameters.has(t)?this._parameters.set(t,r):r instanceof n&&!this._modules.has(t)&&this._modules.set(t,r)}}toString(){return this._buildRepr("")}_buildRepr(e){this._autoDetect();let t=this.constructor.name;if(this._modules.size===0)return t+"()";let r=[t+"("];for(let[s,o]of this._modules)o!==null&&r.push(e+" ("+s+"): "+o._buildRepr(e+" "));return r.push(e+")"),r.join(`
|
|
422
|
-
`)}};var T_={};at(T_,{_calculateFanInFanOut:()=>ac,constant_:()=>qG,kaiming_normal_:()=>HG,kaiming_uniform_:()=>sE,normal_:()=>Cf,ones_:()=>UG,resetLinearParameters:()=>uc,uniform_:()=>w_,xavier_normal_:()=>KG,xavier_uniform_:()=>WG,zeros_:()=>jG});function ac(n){let e=n.shape,t=e.length;if(t<2)throw new Error("Fan in/out requires at least 2D tensor");let r=e[1],s=e[0],o=1;for(let i=2;i<t;i++)o*=e[i];return{fanIn:r*o,fanOut:s*o}}l(ac,"_calculateFanInFanOut");function uc(n,e){if(sE(n,Math.sqrt(5)),e){let{fanIn:t}=ac(n),r=1/Math.sqrt(t);w_(e,-r,r)}}l(uc,"resetLinearParameters");function w_(n,e=0,t=1){let r=n._impl.storage.data;if(!r)return n;let s=t-e;for(let o=0;o<r.length;o++)r[o]=e+Math.random()*s;return n._impl.bumpVersion(),n}l(w_,"uniform_");function Cf(n,e=0,t=1){let r=n._impl.storage.data;if(!r)return n;for(let s=0;s<r.length;s+=2){let o=Math.random()||1e-10,i=Math.random(),a=Math.sqrt(-2*Math.log(o)),u=6.283185307179586*i;r[s]=e+t*a*Math.cos(u),s+1<r.length&&(r[s+1]=e+t*a*Math.sin(u))}return n._impl.bumpVersion(),n}l(Cf,"normal_");function jG(n){let e=n._impl.storage.data;return e&&e.fill(0),n._impl.bumpVersion(),n}l(jG,"zeros_");function UG(n){let e=n._impl.storage.data;return e&&e.fill(1),n._impl.bumpVersion(),n}l(UG,"ones_");function qG(n,e){let t=n._impl.storage.data;return t&&t.fill(e),n._impl.bumpVersion(),n}l(qG,"constant_");function WG(n,e=1){let{fanIn:t,fanOut:r}=ac(n),s=e*Math.sqrt(2/(t+r)),o=Math.sqrt(3)*s;return w_(n,-o,o)}l(WG,"xavier_uniform_");function KG(n,e=1){let{fanIn:t,fanOut:r}=ac(n),s=e*Math.sqrt(2/(t+r));return Cf(n,0,s)}l(KG,"xavier_normal_");function sE(n,e=0,t="fan_in",r="leaky_relu"){let{fanIn:s,fanOut:o}=ac(n),i=t==="fan_in"?s:o,u=oE(r,e)/Math.sqrt(i),p=Math.sqrt(3)*u;return w_(n,-p,p)}l(sE,"kaiming_uniform_");function HG(n,e=0,t="fan_in",r="leaky_relu"){let{fanIn:s,fanOut:o}=ac(n),i=t==="fan_in"?s:o,u=oE(r,e)/Math.sqrt(i);return Cf(n,0,u)}l(HG,"kaiming_normal_");function oE(n,e=.01){switch(n){case"linear":case"sigmoid":return 1;case"tanh":return 5/3;case"relu":return Math.sqrt(2);case"leaky_relu":return Math.sqrt(2/(1+e*e));default:return 1}}l(oE,"_calculateGain");var lc={};at(lc,{elu:()=>PS,gelu:()=>Pf,leaky_relu:()=>DS,log_softmax:()=>CS,relu:()=>Df,sigmoid:()=>IS,silu:()=>MS,softmax:()=>LS,tanh:()=>ES});be();kt();function Df(n){return Ml(n)}l(Df,"relu");function Pf(n){return Ng(n)}l(Pf,"gelu");function MS(n){return Ag(n)}l(MS,"silu");function IS(n){return wr(n)}l(IS,"sigmoid");function ES(n){return Hs(n)}l(ES,"tanh");function LS(n,e=-1){return mi(n,e)}l(LS,"softmax");function CS(n,e=-1){return $g(n,e)}l(CS,"log_softmax");function DS(n,e=.01){let t=ee(n,ot(n.shape,e,{dtype:n.dtype,device:n.device}));return ta(n,t)}l(DS,"leaky_relu");function PS(n,e=1){let t=ot(n.shape,0,{dtype:n.dtype,device:n.device}),r=ot(n.shape,1,{dtype:n.dtype,device:n.device}),s=ot(n.shape,e,{dtype:n.dtype,device:n.device}),o=Il(n,t),i=ee(s,ze(as(n),r));return or(o,n,i)}l(PS,"elu");var S_={};at(S_,{batch_norm:()=>zS,group_norm:()=>FS,layer_norm:()=>$S});be();kt();yu();function $S(n,e,t,r,s=1e-5){if((n instanceof bt||n.isSymbolic)&&t&&r){let m=n.ndim-e.length;return PT(n,t,r,m,s)}let o=n.ndim-e.length,i=[];for(let m=o;m<n.ndim;m++)i.push(m);let a=n;for(let m=i.length-1;m>=0;m--)a=Tr(a,i[m],!0);let u=ze(n,a),c=ee(u,u);for(let m=i.length-1;m>=0;m--)c=Tr(c,i[m],!0);let f=ot([],s),d=Kt(ot([],1),na(ae(c,f))),h=ee(u,d);return t&&(h=ee(h,t)),r&&(h=ae(h,r)),h}l($S,"layer_norm");function FS(n,e,t,r,s=1e-5){let o=n.shape,i=o[0],a=o[1],u=o.slice(2),p=n.reshape([i,e,a/e,...u]),c=[];for(let w=2;w<p.ndim;w++)c.push(w);let f=p;for(let w=c.length-1;w>=0;w--)f=Tr(f,c[w],!0);let d=ze(p,f),m=ee(d,d);for(let w=c.length-1;w>=0;w--)m=Tr(m,c[w],!0);let g=ot([],s),y=Kt(ot([],1),na(ae(m,g))),_=ee(d,y).reshape(o),b=[1,a,...u.map(()=>1)];return t&&(_=ee(_,t.reshape(b))),r&&(_=ae(_,r.reshape(b))),_}l(FS,"group_norm");var x_=1;function YG(n,e){let t=new Array(n).fill(1);return t[x_]=e,t}l(YG,"channelShape");function iE(n,e){let t=n;for(let r=e.length-1;r>=0;r--)t=Tr(t,e[r],!0);return t}l(iE,"reduceMeanOver");function aE(n,e,t){let r=n.data;if(!r)return;let s=e.reshape([n.shape[0]]).toArray();for(let o=0;o<r.length;o++)r[o]=r[o]*(1-t)+s[o]*t}l(aE,"blendRunning");function zS(n,e,t,r,s,o=!0,i=1e-5,a=.1){let u=n instanceof bt||n.isSymbolic;if(!o)return $T(n,r,s,e,t,x_,i);let p=[];for(let y=0;y<n.ndim;y++)y!==x_&&p.push(y);let c=iE(n,p),f=ze(n,c),d=iE(ee(f,f),p),h=Kt(ot([],1),na(ae(d,ot([],i)))),m=ee(f,h),g=YG(n.ndim,n.shape[x_]);return r&&(m=ee(m,r.reshape(g))),s&&(m=ae(m,s.reshape(g))),u||(e&&aE(e,c,a),t&&aE(t,d,a)),m}l(zS,"batch_norm");var GS={};at(GS,{linear:()=>VS});be();be();yu();function VS(n,e,t){let r;n instanceof bt||n.isSymbolic?r=vt(e,0,1):r=vt(e,0,1);let s=tt(n,r);return t?ae(s,t):s}l(VS,"linear");var k_={};at(k_,{conv1d:()=>jS,conv2d:()=>v_});be();be();function v_(n,e,t,r=[1,1],s=[[0,0],[0,0]],o=[1,1],i=1){let a=Array.isArray(r)?r:[r,r],u=JG(s),p=Array.isArray(o)?o:[o,o],c=FT(n,e,a,u,p,i);if(t){let f=Hn(t,[1,t.shape[0],1,1]);return ae(c,f)}return c}l(v_,"conv2d");function jS(n,e,t,r=1,s=0,o=1,i=1){let a=Lr(n,2),u=Lr(e,2),p=[1,Array.isArray(r)?r[0]:r],c=[[0,0],ZG(s)],f=[1,Array.isArray(o)?o[0]:o],d=v_(a,u,null,p,c,f,i),h=Cl(d,2);if(t){let m=Hn(t,[1,t.shape[0],1]);return ae(h,m)}return h}l(jS,"conv1d");function JG(n){return typeof n=="number"?[[n,n],[n,n]]:Array.isArray(n)&&typeof n[0]=="number"?n.map(e=>[e,e]):n}l(JG,"_normalizePadding");function ZG(n){return typeof n=="number"?[n,n]:n}l(ZG,"_normalizePadding1d");var A_={};at(A_,{adaptive_avg_pool2d:()=>qS,avg_pool2d:()=>N_,max_pool2d:()=>US});be();function US(n,e,t,r=[[0,0],[0,0]]){let s=Array.isArray(e)?e:[e,e],o=t?Array.isArray(t)?t:[t,t]:s,i=uE(r);return Fg(n,"max",s,o,i)}l(US,"max_pool2d");function N_(n,e,t,r=[[0,0],[0,0]]){let s=Array.isArray(e)?e:[e,e],o=t?Array.isArray(t)?t:[t,t]:s,i=uE(r);return Fg(n,"avg",s,o,i)}l(N_,"avg_pool2d");function qS(n,e){let[t,r]=Array.isArray(e)?e:[e,e],s=n.shape[2],o=n.shape[3],i=Math.floor(s/t),a=Math.floor(o/r);return N_(n,[i,a],[i,a],[[0,0],[0,0]])}l(qS,"adaptive_avg_pool2d");function uE(n){if(typeof n=="number")return[[n,n],[n,n]];if(Array.isArray(n)&&typeof n[0]=="number"){let e=n.map(t=>[t,t]);return e.length===1?[e[0],e[0]]:e}return n}l(uE,"_normalizePadding");var WS={};at(WS,{dropout:()=>$f});be();kt();function $f(n,e=.5,t=!0){if(!t||e===0)return n;if(e===1)return ot(n.shape,0,{dtype:n.dtype,device:n.device});let r=QG(n.shape,1-e,n.dtype,n.device),s=ot(n.shape,1/(1-e),{dtype:n.dtype,device:n.device});return ee(ee(n,r),s)}l($f,"dropout");function QG(n,e,t,r){let s=Tn(n,{dtype:t,device:r}),o=s._impl.storage.data;if(o)for(let i=0;i<o.length;i++)o[i]=Math.random()<e?1:0;return s}l(QG,"_bernoulliMask");var B_={};at(B_,{binary_cross_entropy:()=>YS,cross_entropy:()=>HS,mse_loss:()=>KS,nll_loss:()=>O_});be();kt();be();ss();function KS(n,e,t="mean"){let r=ze(n,e),s=ee(r,r);return lE(s,t)}l(KS,"mse_loss");function XG(n,e){let t=e6(n,e),r=ze(n,t),s=as(r),o=t6(s,e),i=ko(o);return ze(r,i)}l(XG,"_logSoftmaxAutograd");function e6(n,e){let t=e<0?n.ndim+e:e;return No(n,t,!0)}l(e6,"_dimMax");function t6(n,e){let t=e<0?n.ndim+e:e;return wt(n,t,!0)}l(t6,"_dimSum");function O_(n,e,t="mean",r=null){let s=n.ndim-1,o=n.shape[s],i=Ig(e,o),a=wt(ee(n,i),s),u=a,p=null;if(r!==null){let f=en(i,s,r),d=ae(is(f),1);u=ee(a,d),p=wt(d)}let c=is(wt(u));if(t==="sum")return c;if(t==="mean")return p!==null?Kt(c,p):Kt(c,bn(e.shape));throw new Error(`nll_loss: unknown reduction '${t}'`)}l(O_,"nll_loss");function HS(n,e,t="mean",r=null){let s=XG(n,-1);return O_(s,e,t,r)}l(HS,"cross_entropy");function YS(n,e,t="mean"){let r=ot(n.shape,1e-7,{dtype:n.dtype,device:n.device}),s=ot(n.shape,1,{dtype:n.dtype,device:n.device}),o=ko(ae(n,r)),i=ko(ae(ze(s,n),r)),a=is(ae(ee(e,o),ee(ze(s,e),i)));return lE(a,t)}l(YS,"binary_cross_entropy");function lE(n,e){if(e==="mean")return Tr(n);if(e==="sum")return wt(n);if(e==="none")return n;throw new Error(`Unknown reduction: ${e}`)}l(lE,"_reduce");var ZS={};at(ZS,{embedding:()=>JS});be();function JS(n,e){let t=n.shape[n.shape.length-1],r=e.shape.reduce((o,i)=>o*i,1);return ra(n,0,e.reshape([r])).reshape([...e.shape,t])}l(JS,"embedding");var XS={};at(XS,{scaled_dot_product_attention:()=>QS});be();be();yu();_u();kt();function r6(n,e){if(n instanceof bt||n.isSymbolic)return mi(n,e);let t=e<0?n.ndim+e:e,r=No(n,t,!0).detach(),s=ze(n,r),o=as(s),i=wt(o,t,!0);return Kt(o,i)}l(r6,"_softmax");function s6(n){let e=n.ndim;return n instanceof bt||n.isSymbolic?vt(n,e-2,e-1):vt(n,e-2,e-1)}l(s6,"_transposeLastTwo");function o6(n,e){let t=Tn([n,e]),r=t._impl.storage.data,s=e-n;for(let o=0;o<n;o++)for(let i=0;i<e;i++)r[o*e+i]=i<=o+s?0:-1/0;return t}l(o6,"_generateCausalMask");function QS(n,e,t,r=null,s=0,o=!1,i=!1){let a=n.shape[n.ndim-1],u=n.shape[n.ndim-2],p=e.shape[e.ndim-2],c=As();if(c&&!r&&!(s>0&&i)&&n instanceof bt&&e instanceof bt&&t instanceof bt&&n.ndim===4)return c.recordOp("scaled_dot_product_attention",[n,e,t],{scale:1/Math.sqrt(a),causal:o});let d=ot([],1/Math.sqrt(a)),h=s6(e),m=tt(n,h);m=ee(m,d),o&&(m=ae(m,o6(u,p))),r&&(m=ae(m,r));let g=r6(m,-1);return s>0&&i&&(g=$f(g,s,!0)),tt(g,t)}l(QS,"scaled_dot_product_attention");kt();var Sn=class extends ge{static{l(this,"Linear")}inFeatures;outFeatures;weight;bias;constructor(e,t,r=!0){super(),this.inFeatures=e,this.outFeatures=t,this.weight=new At(Tn([t,e])),this.bias=r?new At(Ve([t])):null,this._resetParameters()}_resetParameters(){uc(this.weight,this.bias)}forward(e){return VS(e,this.weight,this.bias)}};kt();var Ff=class extends ge{static{l(this,"Conv2d")}inChannels;outChannels;kernelSize;stride;padding;dilation;groups;weight;bias;constructor(e,t,r,s={}){super(),this.inChannels=e,this.outChannels=t,this.kernelSize=Array.isArray(r)?r:[r,r],this.stride=s.stride?Array.isArray(s.stride)?s.stride:[s.stride,s.stride]:[1,1],this.padding=s.padding??0,this.dilation=s.dilation?Array.isArray(s.dilation)?s.dilation:[s.dilation,s.dilation]:[1,1],this.groups=s.groups??1;let o=this.kernelSize[0],i=this.kernelSize[1];this.weight=new At(Tn([t,e/this.groups,o,i])),this.bias=s.bias!==!1?new At(Ve([t])):null,this._resetParameters()}_resetParameters(){uc(this.weight,this.bias)}forward(e){return v_(e,this.weight,this.bias,this.stride,this.padding,this.dilation,this.groups)}},zf=class extends ge{static{l(this,"Conv1d")}inChannels;outChannels;kernelSize;stride;padding;dilation;groups;weight;bias;constructor(e,t,r,s={}){super(),this.inChannels=e,this.outChannels=t,this.kernelSize=Array.isArray(r)?r[0]:r,this.stride=s.stride??1,this.padding=s.padding??0,this.dilation=s.dilation??1,this.groups=s.groups??1,this.weight=new At(Tn([t,e/this.groups,this.kernelSize])),this.bias=s.bias!==!1?new At(Ve([t])):null,uc(this.weight,this.bias)}forward(e){return jS(e,this.weight,this.bias,this.stride,this.padding,this.dilation,this.groups)}};var Vf=class extends ge{static{l(this,"ReLU")}forward(e){return Df(e)}},Gf=class extends ge{static{l(this,"GELU")}forward(e){return Pf(e)}},jf=class extends ge{static{l(this,"SiLU")}forward(e){return MS(e)}},Uf=class extends ge{static{l(this,"Sigmoid")}forward(e){return IS(e)}},qf=class extends ge{static{l(this,"Tanh")}forward(e){return ES(e)}},Wf=class extends ge{static{l(this,"LeakyReLU")}negativeSlope;constructor(e=.01){super(),this.negativeSlope=e}forward(e){return DS(e,this.negativeSlope)}},Kf=class extends ge{static{l(this,"ELU")}alpha;constructor(e=1){super(),this.alpha=e}forward(e){return PS(e,this.alpha)}},Hf=class extends ge{static{l(this,"Softmax")}dim;constructor(e=-1){super(),this.dim=e}forward(e){return LS(e,this.dim)}},Yf=class extends ge{static{l(this,"LogSoftmax")}dim;constructor(e=-1){super(),this.dim=e}forward(e){return CS(e,this.dim)}};kt();var no=class extends ge{static{l(this,"LayerNorm")}normalizedShape;eps;weight;bias;constructor(e,t=1e-5,r=!0){super(),this.normalizedShape=Array.isArray(e)?e:[e],this.eps=t,this.weight=r?new At(tn(this.normalizedShape)):null,this.bias=r?new At(Ve(this.normalizedShape)):null}forward(e){return $S(e,this.normalizedShape,this.weight,this.bias,this.eps)}},E_=class extends ge{static{l(this,"GroupNorm")}numGroups;numChannels;eps;weight;bias;constructor(e,t,r=1e-5,s=!0){super(),this.numGroups=e,this.numChannels=t,this.eps=r,this.weight=s?new At(tn([t])):null,this.bias=s?new At(Ve([t])):null}forward(e){return FS(e,this.numGroups,this.weight,this.bias,this.eps)}},cc=class extends ge{static{l(this,"BatchNorm1d")}numFeatures;eps;weight;bias;runningMean;runningVar;constructor(e,t=1e-5,r=!0){super(),this.numFeatures=e,this.eps=t,this.weight=r?new At(tn([e])):null,this.bias=r?new At(Ve([e])):null,this.runningMean=Ve([e]),this.runningVar=tn([e]),this.registerBuffer("runningMean",this.runningMean),this.registerBuffer("runningVar",this.runningVar)}forward(e){return zS(e,this.runningMean,this.runningVar,this.weight,this.bias,this.training,this.eps)}},Jf=class extends cc{static{l(this,"BatchNorm2d")}constructor(e,t=1e-5,r=!0){super(e,t,r)}};var Zf=class extends ge{static{l(this,"MaxPool2d")}kernelSize;stride;padding;constructor(e,t,r=0){super(),this.kernelSize=Array.isArray(e)?e:[e,e],this.stride=t?Array.isArray(t)?t:[t,t]:this.kernelSize,this.padding=r}forward(e){return US(e,this.kernelSize,this.stride,this.padding)}},Qf=class extends ge{static{l(this,"AvgPool2d")}kernelSize;stride;padding;constructor(e,t,r=0){super(),this.kernelSize=Array.isArray(e)?e:[e,e],this.stride=t?Array.isArray(t)?t:[t,t]:this.kernelSize,this.padding=r}forward(e){return N_(e,this.kernelSize,this.stride,this.padding)}},Xf=class extends ge{static{l(this,"AdaptiveAvgPool2d")}outputSize;constructor(e){super(),this.outputSize=Array.isArray(e)?e:[e,e]}forward(e){return qS(e,this.outputSize)}};var Sr=class extends ge{static{l(this,"Dropout")}p;constructor(e=.5){super(),this.p=e}forward(e){return $f(e,this.p,this.training)}};var ed=class extends ge{static{l(this,"MSELoss")}reduction;constructor(e="mean"){super(),this.reduction=e}forward(e,t){return KS(e,t,this.reduction)}},td=class extends ge{static{l(this,"CrossEntropyLoss")}reduction;ignoreIndex;constructor(e="mean",t=-100){super(),this.reduction=e,this.ignoreIndex=t}forward(e,t){return HS(e,t,this.reduction,this.ignoreIndex===-100?null:this.ignoreIndex)}},nd=class extends ge{static{l(this,"NLLLoss")}reduction;ignoreIndex;constructor(e="mean",t=-100){super(),this.reduction=e,this.ignoreIndex=t}forward(e,t){return O_(e,t,this.reduction,this.ignoreIndex===-100?null:this.ignoreIndex)}},rd=class extends ge{static{l(this,"BCELoss")}reduction;constructor(e="mean"){super(),this.reduction=e}forward(e,t){return YS(e,t,this.reduction)}};kt();var sd=class extends ge{static{l(this,"Embedding")}numEmbeddings;embeddingDim;weight;constructor(e,t){super(),this.numEmbeddings=e,this.embeddingDim=t,this.weight=new At(Tn([e,t])),Cf(this.weight)}forward(e){return JS(this.weight,e)}};kt();be();be();_u();be();be();function i6(n){if(Array.isArray(n[0])){let e=n[0],t=new Array(e.length);for(let r=0;r<t.length;r++)t[r]=us(n.map(s=>s[r]),0);return t}return us(n,0)}l(i6,"stackSteps");function od(n,e,t){let r=Array.isArray(e),s=Array.isArray(t),o=s?t:[t],i=r?e:[e],a=As();if(!a){let d=e,h=[],m=o[0].shape[0];for(let g=0;g<m;g++){let y=s?o.map(w=>en(w,0,g)):en(o[0],0,g),[_,b]=n(d,y);d=_,h.push(b)}return[d,i6(h)]}let u=!1,p=l((d,h)=>{let[m,g]=n(r?d:d[0],s?h:h[0]);return u=Array.isArray(g),[r?m:[m],u?g:[g]]},"step"),[c,f]=a.scan(o,i,p);return[r?c:c[0],u?f:f[0]]}l(od,"scan");_u();wn();qn();var pc=class extends ge{static{l(this,"GRUCell")}inputSize;hiddenSize;x2h;h2h;constructor(e,t,r=!0){super(),this.inputSize=e,this.hiddenSize=t,this.x2h=new Sn(e,3*t,r),this.h2h=new Sn(t,3*t,r)}forward(e,t=null){let r=t!==null?t:Ve([e.shape[0],this.hiddenSize],{device:e.device}),s=this.x2h.forward(e),o=this.h2h.forward(r),[i,a,u]=hi(s,this.hiddenSize,-1),[p,c,f]=hi(o,this.hiddenSize,-1),d=wr(ae(i,p)),h=wr(ae(a,c)),m=Hs(ae(u,ee(d,f)));return ae(m,ee(h,ze(r,m)))}},id=class extends ge{static{l(this,"GRU")}inputSize;hiddenSize;numLayers;batchFirst;cells;constructor(e,t,r=1,s=!1,o=!0){super(),this.inputSize=e,this.hiddenSize=t,this.numLayers=r,this.batchFirst=s,this.cells=[];for(let i=0;i<r;i++){let a=new pc(i===0?e:t,t,o);this.cells.push(a),this.registerModule("cell_"+i,a)}}forward(e,t=null){let r=uS();if(r&&e.device.type==="gpu"&&!As()){let c=this.batchFirst?e.transpose(0,1):e,f={inputSize:this.inputSize,hiddenSize:this.hiddenSize,seqLen:c.shape[0],batch:c.shape[1]},[d,h]=r(c,this.cells,f,t);return[this.batchFirst?d.transpose(0,1):d,h]}let s=Sf();if(s&&e.device.type==="webgpu"&&!As()){let c=this.batchFirst?e.transpose(0,1):e,f={kind:"gru",inputSize:this.inputSize,hiddenSize:this.hiddenSize,seqLen:c.shape[0],batch:c.shape[1]},d=s(c,this.cells,f,t,null);if(d){let[h,m]=d;return[this.batchFirst?h.transpose(0,1):h,m]}}let o=this.batchFirst?e.transpose(0,1):e,i=o.shape[1],a=o,u=[];for(let c=0;c<this.numLayers;c++){let f=t!==null?en(t,0,c):Ve([i,this.hiddenSize],{device:o.device}),d=this.cells[c],[h,m]=od((g,y)=>{let _=d.forward(y,g);return[_,_]},f,a);u.push(h),a=m}let p=a;return this.batchFirst&&(p=p.transpose(0,1)),[p,us(u,0)]}};kt();be();be();_u();wn();qn();var fc=class extends ge{static{l(this,"LSTMCell")}inputSize;hiddenSize;x2h;h2h;constructor(e,t,r=!0){super(),this.inputSize=e,this.hiddenSize=t,this.x2h=new Sn(e,4*t,r),this.h2h=new Sn(t,4*t,r)}forward(e,t=null){let r=t!==null?t[0]:Ve([e.shape[0],this.hiddenSize],{device:e.device}),s=t!==null?t[1]:Ve([e.shape[0],this.hiddenSize],{device:e.device}),o=ae(this.x2h.forward(e),this.h2h.forward(r)),[i,a,u,p]=hi(o,this.hiddenSize,-1),c=wr(i),f=wr(a),d=Hs(u),h=wr(p),m=ae(ee(f,s),ee(c,d));return[ee(h,Hs(m)),m]}},ad=class extends ge{static{l(this,"LSTM")}inputSize;hiddenSize;numLayers;batchFirst;cells;constructor(e,t,r=1,s=!1,o=!0){super(),this.inputSize=e,this.hiddenSize=t,this.numLayers=r,this.batchFirst=s,this.cells=[];for(let i=0;i<r;i++){let a=new fc(i===0?e:t,t,o);this.cells.push(a),this.registerModule("cell_"+i,a)}}forward(e,t=null){let r=aS();if(r&&e.device.type==="gpu"&&!As()){let f=this.batchFirst?e.transpose(0,1):e,d={inputSize:this.inputSize,hiddenSize:this.hiddenSize,seqLen:f.shape[0],batch:f.shape[1]},[h,m,g]=r(f,this.cells,d,t?t[0]:null,t?t[1]:null);return[this.batchFirst?h.transpose(0,1):h,[m,g]]}let s=Sf();if(s&&e.device.type==="webgpu"&&!As()){let f=this.batchFirst?e.transpose(0,1):e,d={inputSize:this.inputSize,hiddenSize:this.hiddenSize,seqLen:f.shape[0],batch:f.shape[1]},h=s(f,this.cells,d,t?t[0]:null,t?t[1]:null);if(h){let[m,g,y]=h;return[this.batchFirst?m.transpose(0,1):m,[g,y]]}}let o=this.batchFirst?e.transpose(0,1):e,i=o.shape[1],a=o,u=[],p=[];for(let f=0;f<this.numLayers;f++){let d=t!==null?en(t[0],0,f):Ve([i,this.hiddenSize],{device:o.device}),h=t!==null?en(t[1],0,f):Ve([i,this.hiddenSize],{device:o.device}),m=this.cells[f],[[g,y],_]=od((b,w)=>{let[x,S]=m.forward(w,b);return[[x,S],x]},[d,h],a);u.push(g),p.push(y),a=_}let c=a;return this.batchFirst&&(c=c.transpose(0,1)),[c,[us(u,0),us(p,0)]]}};var ud=class extends ge{static{l(this,"Sequential")}_length;constructor(...e){super();for(let t=0;t<e.length;t++)this[String(t)]=e[t],this.registerModule(String(t),e[t]);this._length=e.length}forward(e){let t=e;for(let r=0;r<this._length;r++)t=this[String(r)].forward(t);return t}get length(){return this._length}*[Symbol.iterator](){for(let e=0;e<this._length;e++)yield this[String(e)]}push(e){let t=this._length;return this[String(t)]=e,this.registerModule(String(t),e),this._length++,this}},aa=class extends ge{static{l(this,"ModuleList")}_list;constructor(e){if(super(),this._list=[],e)for(let t=0;t<e.length;t++)this._list.push(e[t]),this.registerModule(String(t),e[t])}get length(){return this._list.length}get(e){return this._list[e]}push(e){let t=this._list.length;return this._list.push(e),this.registerModule(String(t),e),this}*[Symbol.iterator](){for(let e of this._list)yield e}forward(){throw new Error("ModuleList does not implement forward()")}},ld=class extends ge{static{l(this,"ModuleDict")}_dict;constructor(e){if(super(),this._dict=new Map,e)for(let[t,r]of Object.entries(e))this._dict.set(t,r),this.registerModule(t,r)}get(e){return this._dict.get(e)}set(e,t){return this._dict.set(e,t),this.registerModule(e,t),this}has(e){return this._dict.has(e)}get size(){return this._dict.size}*keys(){yield*this._dict.keys()}*values(){yield*this._dict.values()}*[Symbol.iterator](){yield*this._dict.entries()}forward(){throw new Error("ModuleDict does not implement forward()")}};be();var cd=class extends ge{static{l(this,"Flatten")}startDim;endDim;constructor(e=1,t=-1){super(),this.startDim=e,this.endDim=t}forward(e){let t=e.shape,r=t.length,s=this.startDim<0?r+this.startDim:this.startDim,o=this.endDim<0?r+this.endDim:this.endDim,i=1;for(let u=s;u<=o;u++)i*=t[u];let a=[];for(let u=0;u<s;u++)a.push(t[u]);a.push(i);for(let u=o+1;u<r;u++)a.push(t[u]);return Hn(e,a)}};be();kt();kt();function pE(n){return n==="gelu"?Pf:Df}l(pE,"_getActivation");var ua=class extends ge{static{l(this,"MultiheadAttention")}embedDim;numHeads;headDim;batchFirst;dropout;qProj;kProj;vProj;outProj;constructor(e,t,r=0,s=!0,o=null,i=null,a=!0){super(),this.embedDim=e,this.numHeads=t,this.headDim=Math.floor(e/t),this.batchFirst=a,this.dropout=r,this.qProj=new Sn(e,e,s),this.kProj=new Sn(o??e,e,s),this.vProj=new Sn(i??e,e,s),this.outProj=new Sn(e,e,s)}forward(e,t,r,s=null,o=null,i=!1){this.batchFirst||(e=e.transpose(0,1),t=t.transpose(0,1),r=r.transpose(0,1));let a=e.shape[0],u=e.shape[1],p=t.shape[1],c=this.qProj.forward(e),f=this.kProj.forward(t),d=this.vProj.forward(r);if(c=c.reshape([a,u,this.numHeads,this.headDim]).permute([0,2,1,3]),f=f.reshape([a,p,this.numHeads,this.headDim]).permute([0,2,1,3]),d=d.reshape([a,p,this.numHeads,this.headDim]).permute([0,2,1,3]),o){let g=ot(o.shape,-1/0),y=ot(o.shape,0),_=or(o,g,y);_=_.unsqueeze(1).unsqueeze(2),s=s?ae(s,_):_}let h=QS(c,f,d,s,this.dropout,i,this.training);h=h.permute([0,2,1,3]).reshape([a,u,this.embedDim]);let m=this.outProj.forward(h);return this.batchFirst||(m=m.transpose(0,1)),m}},bu=class extends ge{static{l(this,"TransformerEncoderLayer")}selfAttn;linear1;linear2;norm1;norm2;dropout1;dropout2;dropoutFFN;_activation;_activationName;normFirst;_dModel;_nhead;_dimFeedforward;_dropout;_layerNormEps;_batchFirst;constructor(e,t,r=2048,s=.1,o="relu",i=1e-5,a=!0,u=!1){super(),this.selfAttn=new ua(e,t,s,!0,null,null,a),this.linear1=new Sn(e,r),this.linear2=new Sn(r,e),this.norm1=new no(e,i),this.norm2=new no(e,i),this.dropout1=new Sr(s),this.dropout2=new Sr(s),this.dropoutFFN=new Sr(s),this._activation=pE(o),this._activationName=o,this.normFirst=u,this._dModel=e,this._nhead=t,this._dimFeedforward=r,this._dropout=s,this._layerNormEps=i,this._batchFirst=a}forward(e,t=null,r=null,s=!1){return this.normFirst?this._forwardPreNorm(e,t,r,s):this._forwardPostNorm(e,t,r,s)}_forwardPostNorm(e,t,r,s){let o=this.selfAttn.forward(e,e,e,t,r,s);o=this.norm1.forward(ae(e,this.dropout1.forward(o)));let i=this._activation(this.linear1.forward(o));return i=this.linear2.forward(this.dropoutFFN.forward(i)),o=this.norm2.forward(ae(o,this.dropout2.forward(i))),o}_forwardPreNorm(e,t,r,s){let o=this.norm1.forward(e),i=this.selfAttn.forward(o,o,o,t,r,s);i=ae(e,this.dropout1.forward(i));let a=this._activation(this.linear1.forward(this.norm2.forward(i)));return a=this.linear2.forward(this.dropoutFFN.forward(a)),i=ae(i,this.dropout2.forward(a)),i}},wu=class extends ge{static{l(this,"TransformerDecoderLayer")}selfAttn;crossAttn;linear1;linear2;norm1;norm2;norm3;dropout1;dropout2;dropout3;dropoutFFN;_activation;_activationName;normFirst;_dModel;_nhead;_dimFeedforward;_dropout;_layerNormEps;_batchFirst;constructor(e,t,r=2048,s=.1,o="relu",i=1e-5,a=!0,u=!1){super(),this.selfAttn=new ua(e,t,s,!0,null,null,a),this.crossAttn=new ua(e,t,s,!0,null,null,a),this.linear1=new Sn(e,r),this.linear2=new Sn(r,e),this.norm1=new no(e,i),this.norm2=new no(e,i),this.norm3=new no(e,i),this.dropout1=new Sr(s),this.dropout2=new Sr(s),this.dropout3=new Sr(s),this.dropoutFFN=new Sr(s),this._activation=pE(o),this._activationName=o,this.normFirst=u,this._dModel=e,this._nhead=t,this._dimFeedforward=r,this._dropout=s,this._layerNormEps=i,this._batchFirst=a}forward(e,t,r=null,s=null,o=null,i=null,a=!1){return this.normFirst?this._forwardPreNorm(e,t,r,s,o,i,a):this._forwardPostNorm(e,t,r,s,o,i,a)}_forwardPostNorm(e,t,r,s,o,i,a){let u=this.selfAttn.forward(e,e,e,r,o,a);u=this.norm1.forward(ae(e,this.dropout1.forward(u)));let p=this.crossAttn.forward(u,t,t,s,i);u=this.norm2.forward(ae(u,this.dropout2.forward(p)));let c=this._activation(this.linear1.forward(u));return c=this.linear2.forward(this.dropoutFFN.forward(c)),u=this.norm3.forward(ae(u,this.dropout3.forward(c))),u}_forwardPreNorm(e,t,r,s,o,i,a){let u=this.norm1.forward(e),p=this.selfAttn.forward(u,u,u,r,o,a);p=ae(e,this.dropout1.forward(p));let c=this.norm2.forward(p),f=this.crossAttn.forward(c,t,t,s,i);p=ae(p,this.dropout2.forward(f));let d=this._activation(this.linear1.forward(this.norm3.forward(p)));return d=this.linear2.forward(this.dropoutFFN.forward(d)),p=ae(p,this.dropout3.forward(d)),p}};function a6(n){return new bu(n._dModel,n._nhead,n._dimFeedforward,n._dropout,n._activationName,n._layerNormEps,n._batchFirst,n.normFirst)}l(a6,"_cloneEncoderLayer");function u6(n){return new wu(n._dModel,n._nhead,n._dimFeedforward,n._dropout,n._activationName,n._layerNormEps,n._batchFirst,n.normFirst)}l(u6,"_cloneDecoderLayer");var dc=class extends ge{static{l(this,"TransformerEncoder")}layers;norm;constructor(e,t,r=null){super(),this.layers=new aa(Array.from({length:t},()=>a6(e))),this.norm=r}forward(e,t=null,r=null,s=!1){let o=e;for(let i of this.layers)o=i.forward(o,t,r,s);return this.norm&&(o=this.norm.forward(o)),o}},hc=class extends ge{static{l(this,"TransformerDecoder")}layers;norm;constructor(e,t,r=null){super(),this.layers=new aa(Array.from({length:t},()=>u6(e))),this.norm=r}forward(e,t,r=null,s=null,o=null,i=null,a=!1){let u=e;for(let p of this.layers)u=p.forward(u,t,r,s,o,i,a);return this.norm&&(u=this.norm.forward(u)),u}},pd=class extends ge{static{l(this,"Transformer")}encoder;decoder;dModel;constructor({dModel:e=512,nhead:t=8,numEncoderLayers:r=6,numDecoderLayers:s=6,dimFeedforward:o=2048,dropout:i=.1,activation:a="relu",batchFirst:u=!0,normFirst:p=!1,layerNormEps:c=1e-5}={}){super();let f=new bu(e,t,o,i,a,c,u,p),d=new wu(e,t,o,i,a,c,u,p);this.encoder=new dc(f,r),this.decoder=new hc(d,s),this.dModel=e}forward(e,t,r=null,s=null,o=null,i=null,a=null,u=null){let p=this.encoder.forward(e,r,i);return this.decoder.forward(t,p,s,o,a,u)}static generateSquareSubsequentMask(e){let t=Tn([e,e]),r=t._impl.storage.data;for(let s=0;s<e;s++)for(let o=0;o<e;o++)r[s*e+o]=o<=s?0:-1/0;return t}};be();kt();var fd=class extends ge{static{l(this,"PositionalEncoding")}dropoutLayer;pe;constructor(e,t=5e3,r=.1){super(),this.dropoutLayer=new Sr(r);let s=Ve([1,t,e]),o=s._impl.storage.data;for(let i=0;i<t;i++)for(let a=0;a<e;a+=2){let u=i*Math.exp(-(a*Math.log(1e4))/e);o[i*e+a]=Math.sin(u),a+1<e&&(o[i*e+a+1]=Math.cos(u))}this.pe=s,this.registerBuffer("pe",s)}forward(e){let t=e.shape[1],r=this.pe.narrow(1,0,t);return this.dropoutLayer.forward(ae(e,r))}};var fE={...lc,...S_,...GS,...k_,...A_,...WS,...B_,...ZS,...XS};var hE={};at(hE,{BatchSampler:()=>vu,DataLoader:()=>md,Dataset:()=>Tu,MapDataset:()=>hd,RandomSampler:()=>Su,Sampler:()=>la,SequentialSampler:()=>xu,TensorDataset:()=>dd,defaultCollate:()=>ku});be();var Tu=class{static{l(this,"Dataset")}get length(){throw new Error("Subclass must implement get length()")}get(e){throw new Error("Subclass must implement get(index)")}*[Symbol.iterator](){let e=this.length;for(let t=0;t<e;t++)yield this.get(t)}},dd=class extends Tu{static{l(this,"TensorDataset")}_tensors;_length;constructor(...e){if(super(),e.length===0)throw new Error("TensorDataset requires at least one tensor");let t=e[0].shape[0];for(let r=1;r<e.length;r++)if(e[r].shape[0]!==t)throw new Error(`Size mismatch at dim 0: tensor 0 has ${t}, tensor ${r} has ${e[r].shape[0]}`);this._tensors=e,this._length=t}get length(){return this._length}get(e){let t=new Array(this._tensors.length);for(let r=0;r<this._tensors.length;r++)t[r]=en(this._tensors[r],0,e);return t}},hd=class extends Tu{static{l(this,"MapDataset")}_dataset;_transform;constructor(e,t){super(),this._dataset=e,this._transform=t}get length(){return this._dataset.length}get(e){return this._transform(this._dataset.get(e))}};var la=class{static{l(this,"Sampler")}*[Symbol.iterator](){throw new Error("Subclass must implement [Symbol.iterator]()")}},xu=class extends la{static{l(this,"SequentialSampler")}_dataSource;constructor(e){super(),this._dataSource=e}*[Symbol.iterator](){let e=this._dataSource.length;for(let t=0;t<e;t++)yield t}},Su=class extends la{static{l(this,"RandomSampler")}_dataSource;constructor(e){super(),this._dataSource=e}*[Symbol.iterator](){let e=this._dataSource.length,t=new Int32Array(e);for(let r=0;r<e;r++)t[r]=r;for(let r=e-1;r>0;r--){let s=Math.floor(Math.random()*(r+1)),o=t[r];t[r]=t[s],t[s]=o}for(let r=0;r<e;r++)yield t[r]}},vu=class extends la{static{l(this,"BatchSampler")}_dropLast;_sampler;_batchSize;constructor(e,t,r=!1){super(),this._sampler=e,this._batchSize=t,this._dropLast=r}*[Symbol.iterator](){let e=[];for(let t of this._sampler)e.push(t),e.length===this._batchSize&&(yield e,e=[]);e.length>0&&!this._dropLast&&(yield e)}};sr();os();rs();function l6(n,e=0){let t=n.length,r=n[0].shape,s=n[0].dtype,o=[...r];o.splice(e,0,t);let i=r.reduce((c,f)=>c*f,1),a=St(s),u=new a(t*i),p=u;for(let c=0;c<t;c++){let f=n[c],d=f.data,h=f._impl?f._impl.storageOffset:0;if(f.isContiguous)p.set(d.subarray(h,h+i),c*i);else{let m=f.shape,g=f.strides,y=f._impl.storage.data,_=m.length,b=new Int32Array(_),w=h;for(let x=0;x<i;x++){p[c*i+x]=y[w];for(let S=_-1;S>=0;S--){if(b[S]++,b[S]<m[S]){w+=g[S];break}w-=(m[S]-1)*g[S],b[S]=0}}}}return eu(u,o,s)}l(l6,"stackTensors");function ku(n){let e=n[0];if(e instanceof Ze)return l6(n,0);if(typeof e=="number")return Wt(n);if(Array.isArray(e)){let t=new Array(e.length);for(let r=0;r<e.length;r++){let s=new Array(n.length);for(let o=0;o<n.length;o++)s[o]=n[o][r];t[r]=ku(s)}return t}if(e!==null&&typeof e=="object"&&e.constructor===Object){let t=Object.keys(e),r={};for(let s=0;s<t.length;s++){let o=t[s],i=new Array(n.length);for(let a=0;a<n.length;a++)i[a]=n[a][o];r[o]=ku(i)}return r}throw new Error(`defaultCollate: unsupported element type ${typeof e}`)}l(ku,"defaultCollate");var md=class{static{l(this,"DataLoader")}_dataset;_collate;_batchSampler;_batchSize;_dropLast;constructor(e,t={}){if(this._dataset=e,this._collate=t.collate??(r=>ku(r)),t.batchSampler!=null){if(t.batchSize!=null||t.shuffle||t.sampler!=null||t.dropLast)throw new Error("batchSampler is mutually exclusive with batchSize, shuffle, sampler, and dropLast");this._batchSampler=t.batchSampler,this._batchSize=null,this._dropLast=null}else{let r=t.batchSize??1,s=t.dropLast??!1;this._batchSize=r,this._dropLast=s;let o;if(t.sampler!=null){if(t.shuffle)throw new Error("sampler and shuffle are mutually exclusive");o=t.sampler}else o=t.shuffle?new Su(e):new xu(e);this._batchSampler=new vu(o,r,s)}}get dataset(){return this._dataset}get length(){let e=this._dataset.length;if(this._batchSize==null){let t=0;for(let r of this._batchSampler)t++;return t}return this._dropLast?Math.floor(e/this._batchSize):Math.ceil(e/this._batchSize)}*[Symbol.iterator](){for(let e of this._batchSampler){let t=new Array(e.length);for(let r=0;r<e.length;r++)t[r]=this._dataset.get(e[r]);yield this._collate(t)}}};var TE={};at(TE,{DEFAULT_SPECIALS:()=>F_,TOKENIZER_FORMAT:()=>yc,TOKENIZER_VERSION:()=>_c,Tokenizer:()=>yd,Vocab:()=>ca});var ca=class n{static{l(this,"Vocab")}_tokenToId;_idToToken;constructor(e=[]){this._tokenToId=new Map,this._idToToken=[];for(let t of e)this.add(t)}add(e){let t=this._tokenToId.get(e);return t===void 0&&(t=this._idToToken.length,this._tokenToId.set(e,t),this._idToToken.push(e)),t}getId(e,t=-1){let r=this._tokenToId.get(e);return r===void 0?t:r}getToken(e){return e>=0&&e<this._idToToken.length?this._idToToken[e]:void 0}has(e){return this._tokenToId.has(e)}get size(){return this._idToToken.length}tokens(){return this._idToToken.slice()}static fromTokens(e){if(!Array.isArray(e))throw new Error("mlfw tokenizer: vocab must be an array");let t=new n,r=new Set;for(let s of e){if(typeof s!="string")throw new Error("mlfw tokenizer: vocab entries must be strings");if(r.has(s))throw new Error(`mlfw tokenizer: duplicate vocab token '${s}'`);r.add(s),t.add(s)}return t}};var L_=class n{static{l(this,"WordStrategy")}_lowercase;constructor({lowercase:e=!1}={}){this._lowercase=e}fit(e,t){}segment(e){return(this._lowercase?String(e).toLowerCase():String(e)).split(/\s+/).filter(Boolean)}detokenize(e){return e.join(" ")}toJSON(){return{lowercase:this._lowercase}}static fromJSON(e={}){return new n({lowercase:e.lowercase??!1})}};var C_=class n{static{l(this,"CharStrategy")}_lowercase;constructor({lowercase:e=!1}={}){this._lowercase=e}fit(e,t){}segment(e){let t=this._lowercase?String(e).toLowerCase():String(e);return Array.from(t)}detokenize(e){return e.join("")}toJSON(){return{lowercase:this._lowercase}}static fromJSON(e={}){return new n({lowercase:e.lowercase??!1})}};function D_(n,e){return n+""+e}l(D_,"pairKey");var P_=class n{static{l(this,"BpeStrategy")}_numMerges;_lowercase;_eow;_ranks;_encodeCache;constructor({numMerges:e=1e3,lowercase:t=!1,endOfWord:r="</w>"}={}){this._numMerges=e,this._lowercase=t,this._eow=r,this._ranks=new Map,this._encodeCache=new Map}_pretokenize(e){return(this._lowercase?String(e).toLowerCase():String(e)).split(/\s+/).filter(Boolean)}_baseSymbols(e){let t=Array.from(e);return t.push(this._eow),t}fit(e,t){this._encodeCache=new Map;let r=new Map;for(let h of e)for(let m of this._pretokenize(h))r.set(m,(r.get(m)||0)+1);let s=new Map;for(let h of r.keys())s.set(h,this._baseSymbols(h));let o=new Map,i=new Map,a=[],u=l((h,m)=>h[0]>m[0]||h[0]===m[0]&&h[1]<m[1],"higher"),p=l((h,m)=>{a.push([h,m]);let g=a.length-1;for(;g>0;){let y=g-1>>1;if(u(a[g],a[y])){let _=a[y];a[y]=a[g],a[g]=_,g=y}else break}},"pushHeap"),c=l(()=>{let h=a[0],m=a.pop();if(a.length>0){a[0]=m;let g=0,y=a.length;for(;;){let _=g,b=2*g+1,w=2*g+2;if(b<y&&u(a[b],a[_])&&(_=b),w<y&&u(a[w],a[_])&&(_=w),_===g)break;let x=a[_];a[_]=a[g],a[g]=x,g=_}}return h},"popHeap"),f=l(h=>{let m=s.get(h),g=r.get(h);for(let y=0;y+1<m.length;y++){let _=D_(m[y],m[y+1]),b=(o.get(_)||0)+g;o.set(_,b),p(b,_);let w=i.get(_);w||(w=new Set,i.set(_,w)),w.add(h)}},"addWordPairs"),d=l(h=>{let m=s.get(h),g=r.get(h);for(let y=0;y+1<m.length;y++){let _=D_(m[y],m[y+1]),b=(o.get(_)||0)-g;b<=0?o.delete(_):(o.set(_,b),p(b,_));let w=i.get(_);w&&w.delete(h)}},"removeWordPairs");for(let h of r.keys())f(h);this._ranks=new Map;for(let h=0;h<this._numMerges;h++){let m=null,g=0;for(;a.length>0;){let[S,T]=c(),v=o.get(T);if(v===S&&v>0){m=T,g=v;break}}if(m===null||g<=0)break;let y=m.indexOf(""),_=m.slice(0,y),b=m.slice(y+1),w=_+b;this._ranks.set(m,h);let x=i.get(m);if(!x||x.size===0)break;for(let S of[...x]){d(S);let T=s.get(S),v=[];for(let A=0;A<T.length;A++)A+1<T.length&&T[A]===_&&T[A+1]===b?(v.push(w),A++):v.push(T[A]);s.set(S,v),f(S)}}}_encodeWord(e){let t=this._encodeCache.get(e);if(t!==void 0)return t;let r=this._baseSymbols(e);for(;r.length>1;){let s=1/0,o=-1;for(let i=0;i+1<r.length;i++){let a=this._ranks.get(D_(r[i],r[i+1]));a!==void 0&&a<s&&(s=a,o=i)}if(o<0)break;r=r.slice(0,o).concat(r[o]+r[o+1],r.slice(o+2))}return this._encodeCache.set(e,r),r}segment(e){let t=[];for(let r of this._pretokenize(e))for(let s of this._encodeWord(r))t.push(s);return t}detokenize(e){let t="";for(let r of e)t+=r;return t.split(this._eow).join(" ").trim()}toJSON(){let e=[...this._ranks.entries()].map(([t])=>{let r=t.indexOf("");return[t.slice(0,r),t.slice(r+1)]});return{numMerges:this._numMerges,lowercase:this._lowercase,endOfWord:this._eow,merges:e}}static fromJSON(e={}){if(!Array.isArray(e.merges))throw new Error("mlfw tokenizer: bpe strategy merges must be an array");let t=new n({numMerges:e.numMerges??e.merges.length,lowercase:e.lowercase??!1,endOfWord:e.endOfWord??"</w>"});t._ranks=new Map;for(let r=0;r<e.merges.length;r++){let s=e.merges[r];if(!Array.isArray(s)||s.length!==2||s.some(o=>typeof o!="string"))throw new Error("mlfw tokenizer: bpe merges must be string pairs");t._ranks.set(D_(s[0],s[1]),r)}return t}};os();import{writeFileSync as mE,appendFileSync as c6,readFileSync as gE,existsSync as p6,mkdirSync as f6,readdirSync as d6,unlinkSync as h6,renameSync as m6}from"node:fs";import{resolve as gd}from"node:path";var vn={readFile(n){return gE(gd(n),"utf8")},readBinary(n){return gE(gd(n))},writeFile(n,e){mE(n,e)},writeBinary(n,e){mE(gd(n),e)},appendFile(n,e){c6(n,e)},exists(n){return p6(n)},mkdir(n){f6(n,{recursive:!0})},readdir(n){return d6(n)},remove(n){h6(n)},rename(n,e){m6(gd(n),gd(e))}};var yc="mlfw-tokenizer",_c=1,F_=Object.freeze({pad:"<pad>",unk:"<unk>",bos:"<bos>",eos:"<eos>"}),yE=`${yc}-v${_c}`,$_={word:L_,char:C_,bpe:P_},gc=Object.freeze(["pad","unk","bos","eos"]),yd=class n{static{l(this,"Tokenizer")}_mode;_specials;_maxVocab;_strategy;_vocab;constructor(e={}){let t=e.mode??"word",r=$_[t];if(!r)throw new Error(`Unknown tokenizer mode '${t}'. Available: ${Object.keys($_).join(", ")}`);this._mode=t,this._specials=_E(e.specialTokens),bE(this._specials),this._maxVocab=e.vocabSize??null,wE(this._maxVocab,this._specials),this._strategy=new r(e),this._vocab=null}get mode(){return this._mode}get vocabSize(){return this._fitVocab().size}get padId(){return this._specialId("pad")}get unkId(){return this._specialId("unk")}get bosId(){return this._specialId("bos")}get eosId(){return this._specialId("eos")}_ensureFit(){if(!this._vocab)throw new Error("Tokenizer must be fit() on a corpus before use")}_fitVocab(){return this._ensureFit(),this._vocab}_specialId(e){return this._fitVocab().getId(this._specials[e])}fit(e){let t=Array.isArray(e)?e:[e];this._strategy.fit(t,{vocabSize:this._maxVocab});let r=new ca(Object.values(this._specials));if(this._maxVocab==null)for(let s of t)for(let o of this._strategy.segment(s))r.add(o);else{let s=new Map;for(let a of t)for(let u of this._strategy.segment(a))s.set(u,(s.get(u)||0)+1);let o=[...s.entries()].sort((a,u)=>u[1]-a[1]),i=this._maxVocab-r.size;for(let a=0;a<o.length&&a<i;a++)r.add(o[a][0])}return this._vocab=r,this}toJSON(){let e=this._fitVocab(),t=this._strategy.toJSON();return{format:yc,version:_c,mode:this._mode,config:{vocabSize:this._maxVocab,...t},specialTokens:{...this._specials},vocab:e.tokens(),strategy:t}}save(e){if(typeof e!="string")throw new Error("mlfw tokenizer: save(path) requires a file path string");let t=e+".tmp";vn.writeFile(t,y6(this.toJSON())),vn.rename(t,e)}static load(e){if(typeof e!="string")throw new Error("mlfw tokenizer: load(path) requires a file path string");let t=vn.readFile(e),r=typeof t=="string"?t:new TextDecoder().decode(t);return n.fromJSON(_6(r))}static fromJSON(e){g6(e);let t=$_[e.mode],r=new n({mode:e.mode,vocabSize:e.config.vocabSize,specialTokens:e.specialTokens});r._strategy=t.fromJSON(e.strategy),r._vocab=ca.fromTokens(e.vocab);for(let s of Object.values(r._specials))if(!r._vocab.has(s))throw new Error(`mlfw tokenizer: special token '${s}' is missing from vocab`);return r}encode(e,t={}){let r=this._fitVocab(),s=[];t.addBos&&s.push(this.bosId);let o=this.unkId;for(let i of this._strategy.segment(e))s.push(r.getId(i,o));return t.addEos&&s.push(this.eosId),s}decode(e,t={}){let r=this._fitVocab(),s=t.skipSpecial??!0,o=new Set(Object.values(this._specials).map(a=>r.getId(a))),i=[];for(let a of e){if(s&&o.has(a))continue;let u=r.getToken(a);u!==void 0&&i.push(u)}return this._strategy.detokenize(i)}encodeBatch(e,t={}){this._ensureFit();let s=(Array.isArray(e)?e:[e]).map(p=>this.encode(p,t)),o=t.maxLen??s.reduce((p,c)=>Math.max(p,c.length),0),i=t.padId??this.padId,a=s.length,u=new Int32Array(a*o).fill(i);for(let p=0;p<a;p++){let c=s[p],f=Math.min(c.length,o);for(let d=0;d<f;d++)u[p*o+d]=c[d]}return Wt(u,{shape:[a,o],dtype:"i32"})}};function _E(n){if(Array.isArray(n)){let e={...F_};for(let t=0;t<n.length&&t<gc.length;t++)e[gc[t]]=n[t];return e}return{...F_,...n??{}}}l(_E,"normalizeSpecials");function bE(n){let e=new Set;for(let t of gc){let r=n[t];if(typeof r!="string"||r.length===0)throw new Error(`mlfw tokenizer: special token '${t}' must be a non-empty string`);if(e.has(r))throw new Error(`mlfw tokenizer: duplicate special token '${r}'`);e.add(r)}}l(bE,"validateSpecials");function wE(n,e){if(n!=null&&(!Number.isInteger(n)||n<Object.keys(e).length))throw new Error(`mlfw tokenizer: vocabSize must be an integer >= ${Object.keys(e).length}`)}l(wE,"validateVocabSize");function g6(n){if(!n||typeof n!="object")throw new Error("mlfw tokenizer: artifact must be an object");let e=n;if(e.format!==yc)throw new Error("mlfw tokenizer: unrecognized tokenizer format");if(e.version!==_c)throw new Error(`mlfw tokenizer: unsupported tokenizer version ${e.version}`);if(typeof e.mode!="string"||!(e.mode in $_))throw new Error(`mlfw tokenizer: unknown tokenizer mode '${e.mode}'`);if(!e.config||typeof e.config!="object")throw new Error("mlfw tokenizer: config must be an object");let t=e.config,r=_E(x6(e.specialTokens));if(bE(r),wE(S6(t.vocabSize),r),!Array.isArray(e.vocab))throw new Error("mlfw tokenizer: vocab must be an array");if(!e.strategy||typeof e.strategy!="object")throw new Error("mlfw tokenizer: strategy must be an object")}l(g6,"validateTokenizerData");function y6(n){let e=[yE,Nu("m",[n.mode]),Nu("z",[n.config.vocabSize==null?"":String(n.config.vocabSize)]),Nu("s",gc.map(t=>n.specialTokens[t]))];if(n.mode==="bpe"){let t=[];for(let r of n.strategy.merges)t.push(r[0],r[1]);e.push(Nu("g",[String(n.strategy.lowercase?1:0),String(n.strategy.numMerges),n.strategy.endOfWord])),e.push(Nu("r",t))}else e.push(Nu("g",[String(n.strategy.lowercase?1:0)]));return e.push(Nu("v",n.vocab)),e.join(`
|
|
422
|
+
`)}};var T_={};at(T_,{_calculateFanInFanOut:()=>ac,constant_:()=>qG,kaiming_normal_:()=>HG,kaiming_uniform_:()=>sE,normal_:()=>Cf,ones_:()=>UG,resetLinearParameters:()=>uc,uniform_:()=>w_,xavier_normal_:()=>KG,xavier_uniform_:()=>WG,zeros_:()=>jG});function ac(n){let e=n.shape,t=e.length;if(t<2)throw new Error("Fan in/out requires at least 2D tensor");let r=e[1],s=e[0],o=1;for(let i=2;i<t;i++)o*=e[i];return{fanIn:r*o,fanOut:s*o}}l(ac,"_calculateFanInFanOut");function uc(n,e){if(sE(n,Math.sqrt(5)),e){let{fanIn:t}=ac(n),r=1/Math.sqrt(t);w_(e,-r,r)}}l(uc,"resetLinearParameters");function w_(n,e=0,t=1){let r=n._impl.storage.data;if(!r)return n;let s=t-e;for(let o=0;o<r.length;o++)r[o]=e+Math.random()*s;return n._impl.bumpVersion(),n}l(w_,"uniform_");function Cf(n,e=0,t=1){let r=n._impl.storage.data;if(!r)return n;for(let s=0;s<r.length;s+=2){let o=Math.random()||1e-10,i=Math.random(),a=Math.sqrt(-2*Math.log(o)),u=6.283185307179586*i;r[s]=e+t*a*Math.cos(u),s+1<r.length&&(r[s+1]=e+t*a*Math.sin(u))}return n._impl.bumpVersion(),n}l(Cf,"normal_");function jG(n){let e=n._impl.storage.data;return e&&e.fill(0),n._impl.bumpVersion(),n}l(jG,"zeros_");function UG(n){let e=n._impl.storage.data;return e&&e.fill(1),n._impl.bumpVersion(),n}l(UG,"ones_");function qG(n,e){let t=n._impl.storage.data;return t&&t.fill(e),n._impl.bumpVersion(),n}l(qG,"constant_");function WG(n,e=1){let{fanIn:t,fanOut:r}=ac(n),s=e*Math.sqrt(2/(t+r)),o=Math.sqrt(3)*s;return w_(n,-o,o)}l(WG,"xavier_uniform_");function KG(n,e=1){let{fanIn:t,fanOut:r}=ac(n),s=e*Math.sqrt(2/(t+r));return Cf(n,0,s)}l(KG,"xavier_normal_");function sE(n,e=0,t="fan_in",r="leaky_relu"){let{fanIn:s,fanOut:o}=ac(n),i=t==="fan_in"?s:o,u=oE(r,e)/Math.sqrt(i),p=Math.sqrt(3)*u;return w_(n,-p,p)}l(sE,"kaiming_uniform_");function HG(n,e=0,t="fan_in",r="leaky_relu"){let{fanIn:s,fanOut:o}=ac(n),i=t==="fan_in"?s:o,u=oE(r,e)/Math.sqrt(i);return Cf(n,0,u)}l(HG,"kaiming_normal_");function oE(n,e=.01){switch(n){case"linear":case"sigmoid":return 1;case"tanh":return 5/3;case"relu":return Math.sqrt(2);case"leaky_relu":return Math.sqrt(2/(1+e*e));default:return 1}}l(oE,"_calculateGain");var lc={};at(lc,{elu:()=>PS,gelu:()=>Pf,leaky_relu:()=>DS,log_softmax:()=>CS,relu:()=>Df,sigmoid:()=>IS,silu:()=>MS,softmax:()=>LS,tanh:()=>ES});be();kt();function Df(n){return Ml(n)}l(Df,"relu");function Pf(n){return Ng(n)}l(Pf,"gelu");function MS(n){return Ag(n)}l(MS,"silu");function IS(n){return wr(n)}l(IS,"sigmoid");function ES(n){return Hs(n)}l(ES,"tanh");function LS(n,e=-1){return mi(n,e)}l(LS,"softmax");function CS(n,e=-1){return $g(n,e)}l(CS,"log_softmax");function DS(n,e=.01){let t=ee(n,ot(n.shape,e,{dtype:n.dtype,device:n.device}));return ta(n,t)}l(DS,"leaky_relu");function PS(n,e=1){let t=ot(n.shape,0,{dtype:n.dtype,device:n.device}),r=ot(n.shape,1,{dtype:n.dtype,device:n.device}),s=ot(n.shape,e,{dtype:n.dtype,device:n.device}),o=Il(n,t),i=ee(s,ze(as(n),r));return or(o,n,i)}l(PS,"elu");var S_={};at(S_,{batch_norm:()=>zS,group_norm:()=>FS,layer_norm:()=>$S});be();kt();yu();function $S(n,e,t,r,s=1e-5){if((n instanceof bt||n.isSymbolic)&&t&&r){let m=n.ndim-e.length;return PT(n,t,r,m,s)}let o=n.ndim-e.length,i=[];for(let m=o;m<n.ndim;m++)i.push(m);let a=n;for(let m=i.length-1;m>=0;m--)a=Tr(a,i[m],!0);let u=ze(n,a),c=ee(u,u);for(let m=i.length-1;m>=0;m--)c=Tr(c,i[m],!0);let f=ot([],s),d=Kt(ot([],1),na(ae(c,f))),h=ee(u,d);return t&&(h=ee(h,t)),r&&(h=ae(h,r)),h}l($S,"layer_norm");function FS(n,e,t,r,s=1e-5){let o=n.shape,i=o[0],a=o[1],u=o.slice(2),p=n.reshape([i,e,a/e,...u]),c=[];for(let w=2;w<p.ndim;w++)c.push(w);let f=p;for(let w=c.length-1;w>=0;w--)f=Tr(f,c[w],!0);let d=ze(p,f),m=ee(d,d);for(let w=c.length-1;w>=0;w--)m=Tr(m,c[w],!0);let g=ot([],s),y=Kt(ot([],1),na(ae(m,g))),_=ee(d,y).reshape(o),b=[1,a,...u.map(()=>1)];return t&&(_=ee(_,t.reshape(b))),r&&(_=ae(_,r.reshape(b))),_}l(FS,"group_norm");var x_=1;function YG(n,e){let t=new Array(n).fill(1);return t[x_]=e,t}l(YG,"channelShape");function iE(n,e){let t=n;for(let r=e.length-1;r>=0;r--)t=Tr(t,e[r],!0);return t}l(iE,"reduceMeanOver");function aE(n,e,t){let r=n.data;if(!r)return;let s=e.reshape([n.shape[0]]).toArray();for(let o=0;o<r.length;o++)r[o]=r[o]*(1-t)+s[o]*t}l(aE,"blendRunning");function zS(n,e,t,r,s,o=!0,i=1e-5,a=.1){let u=n instanceof bt||n.isSymbolic;if(!o)return $T(n,r,s,e,t,x_,i);let p=[];for(let y=0;y<n.ndim;y++)y!==x_&&p.push(y);let c=iE(n,p),f=ze(n,c),d=iE(ee(f,f),p),h=Kt(ot([],1),na(ae(d,ot([],i)))),m=ee(f,h),g=YG(n.ndim,n.shape[x_]);return r&&(m=ee(m,r.reshape(g))),s&&(m=ae(m,s.reshape(g))),u||(e&&aE(e,c,a),t&&aE(t,d,a)),m}l(zS,"batch_norm");var GS={};at(GS,{linear:()=>VS});be();be();yu();function VS(n,e,t){let r;n instanceof bt||n.isSymbolic?r=vt(e,0,1):r=vt(e,0,1);let s=tt(n,r);return t?ae(s,t):s}l(VS,"linear");var k_={};at(k_,{conv1d:()=>jS,conv2d:()=>v_});be();be();function v_(n,e,t,r=[1,1],s=[[0,0],[0,0]],o=[1,1],i=1){let a=Array.isArray(r)?r:[r,r],u=JG(s),p=Array.isArray(o)?o:[o,o],c=FT(n,e,a,u,p,i);if(t){let f=Hn(t,[1,t.shape[0],1,1]);return ae(c,f)}return c}l(v_,"conv2d");function jS(n,e,t,r=1,s=0,o=1,i=1){let a=Lr(n,2),u=Lr(e,2),p=[1,Array.isArray(r)?r[0]:r],c=[[0,0],ZG(s)],f=[1,Array.isArray(o)?o[0]:o],d=v_(a,u,null,p,c,f,i),h=Cl(d,2);if(t){let m=Hn(t,[1,t.shape[0],1]);return ae(h,m)}return h}l(jS,"conv1d");function JG(n){return typeof n=="number"?[[n,n],[n,n]]:Array.isArray(n)&&typeof n[0]=="number"?n.map(e=>[e,e]):n}l(JG,"_normalizePadding");function ZG(n){return typeof n=="number"?[n,n]:n}l(ZG,"_normalizePadding1d");var A_={};at(A_,{adaptive_avg_pool2d:()=>qS,avg_pool2d:()=>N_,max_pool2d:()=>US});be();function US(n,e,t,r=[[0,0],[0,0]]){let s=Array.isArray(e)?e:[e,e],o=t?Array.isArray(t)?t:[t,t]:s,i=uE(r);return Fg(n,"max",s,o,i)}l(US,"max_pool2d");function N_(n,e,t,r=[[0,0],[0,0]]){let s=Array.isArray(e)?e:[e,e],o=t?Array.isArray(t)?t:[t,t]:s,i=uE(r);return Fg(n,"avg",s,o,i)}l(N_,"avg_pool2d");function qS(n,e){let[t,r]=Array.isArray(e)?e:[e,e],s=n.shape[2],o=n.shape[3],i=Math.floor(s/t),a=Math.floor(o/r);return N_(n,[i,a],[i,a],[[0,0],[0,0]])}l(qS,"adaptive_avg_pool2d");function uE(n){if(typeof n=="number")return[[n,n],[n,n]];if(Array.isArray(n)&&typeof n[0]=="number"){let e=n.map(t=>[t,t]);return e.length===1?[e[0],e[0]]:e}return n}l(uE,"_normalizePadding");var WS={};at(WS,{dropout:()=>$f});be();kt();function $f(n,e=.5,t=!0){if(!t||e===0)return n;if(e===1)return ot(n.shape,0,{dtype:n.dtype,device:n.device});let r=QG(n.shape,1-e,n.dtype,n.device),s=ot(n.shape,1/(1-e),{dtype:n.dtype,device:n.device});return ee(ee(n,r),s)}l($f,"dropout");function QG(n,e,t,r){let s=Tn(n,{dtype:t,device:r}),o=s._impl.storage.data;if(o)for(let i=0;i<o.length;i++)o[i]=Math.random()<e?1:0;return s}l(QG,"_bernoulliMask");var B_={};at(B_,{binary_cross_entropy:()=>YS,cross_entropy:()=>HS,mse_loss:()=>KS,nll_loss:()=>O_});be();kt();be();ss();function KS(n,e,t="mean"){let r=ze(n,e),s=ee(r,r);return lE(s,t)}l(KS,"mse_loss");function XG(n,e){let t=e6(n,e),r=ze(n,t),s=as(r),o=t6(s,e),i=ko(o);return ze(r,i)}l(XG,"_logSoftmaxAutograd");function e6(n,e){let t=e<0?n.ndim+e:e;return No(n,t,!0)}l(e6,"_dimMax");function t6(n,e){let t=e<0?n.ndim+e:e;return wt(n,t,!0)}l(t6,"_dimSum");function O_(n,e,t="mean",r=null){let s=n.ndim-1,o=n.shape[s],i=Ig(e,o),a=wt(ee(n,i),s),u=a,p=null;if(r!==null){let f=en(i,s,r),d=ae(is(f),1);u=ee(a,d),p=wt(d)}let c=is(wt(u));if(t==="sum")return c;if(t==="mean")return p!==null?Kt(c,p):Kt(c,bn(e.shape));throw new Error(`nll_loss: unknown reduction '${t}'`)}l(O_,"nll_loss");function HS(n,e,t="mean",r=null){let s=XG(n,-1);return O_(s,e,t,r)}l(HS,"cross_entropy");function YS(n,e,t="mean"){let r=ot(n.shape,1e-7,{dtype:n.dtype,device:n.device}),s=ot(n.shape,1,{dtype:n.dtype,device:n.device}),o=ko(ae(n,r)),i=ko(ae(ze(s,n),r)),a=is(ae(ee(e,o),ee(ze(s,e),i)));return lE(a,t)}l(YS,"binary_cross_entropy");function lE(n,e){if(e==="mean")return Tr(n);if(e==="sum")return wt(n);if(e==="none")return n;throw new Error(`Unknown reduction: ${e}`)}l(lE,"_reduce");var ZS={};at(ZS,{embedding:()=>JS});be();function JS(n,e){let t=n.shape[n.shape.length-1],r=e.shape.reduce((o,i)=>o*i,1);return ra(n,0,e.reshape([r])).reshape([...e.shape,t])}l(JS,"embedding");var XS={};at(XS,{scaled_dot_product_attention:()=>QS});be();be();yu();_u();kt();function r6(n,e){if(n instanceof bt||n.isSymbolic)return mi(n,e);let t=e<0?n.ndim+e:e,r=No(n,t,!0).detach(),s=ze(n,r),o=as(s),i=wt(o,t,!0);return Kt(o,i)}l(r6,"_softmax");function s6(n){let e=n.ndim;return n instanceof bt||n.isSymbolic?vt(n,e-2,e-1):vt(n,e-2,e-1)}l(s6,"_transposeLastTwo");function o6(n,e){let t=Tn([n,e]),r=t._impl.storage.data,s=e-n;for(let o=0;o<n;o++)for(let i=0;i<e;i++)r[o*e+i]=i<=o+s?0:-1/0;return t}l(o6,"_generateCausalMask");function QS(n,e,t,r=null,s=0,o=!1,i=!1){let a=n.shape[n.ndim-1],u=n.shape[n.ndim-2],p=e.shape[e.ndim-2],c=As();if(c&&!r&&!(s>0&&i)&&n instanceof bt&&e instanceof bt&&t instanceof bt&&n.ndim===4)return c.recordOp("scaled_dot_product_attention",[n,e,t],{scale:1/Math.sqrt(a),causal:o});let d=ot([],1/Math.sqrt(a)),h=s6(e),m=tt(n,h);m=ee(m,d),o&&(m=ae(m,o6(u,p))),r&&(m=ae(m,r));let g=r6(m,-1);return s>0&&i&&(g=$f(g,s,!0)),tt(g,t)}l(QS,"scaled_dot_product_attention");kt();var Sn=class extends ge{static{l(this,"Linear")}inFeatures;outFeatures;weight;bias;constructor(e,t,r=!0){super(),this.inFeatures=e,this.outFeatures=t,this.weight=new At(Tn([t,e])),this.bias=r?new At(Ve([t])):null,this._resetParameters()}_resetParameters(){uc(this.weight,this.bias)}forward(e){return VS(e,this.weight,this.bias)}};kt();var Ff=class extends ge{static{l(this,"Conv2d")}inChannels;outChannels;kernelSize;stride;padding;dilation;groups;weight;bias;constructor(e,t,r,s={}){super(),this.inChannels=e,this.outChannels=t,this.kernelSize=Array.isArray(r)?r:[r,r],this.stride=s.stride?Array.isArray(s.stride)?s.stride:[s.stride,s.stride]:[1,1],this.padding=s.padding??0,this.dilation=s.dilation?Array.isArray(s.dilation)?s.dilation:[s.dilation,s.dilation]:[1,1],this.groups=s.groups??1;let o=this.kernelSize[0],i=this.kernelSize[1];this.weight=new At(Tn([t,e/this.groups,o,i])),this.bias=s.bias!==!1?new At(Ve([t])):null,this._resetParameters()}_resetParameters(){uc(this.weight,this.bias)}forward(e){return v_(e,this.weight,this.bias,this.stride,this.padding,this.dilation,this.groups)}},zf=class extends ge{static{l(this,"Conv1d")}inChannels;outChannels;kernelSize;stride;padding;dilation;groups;weight;bias;constructor(e,t,r,s={}){super(),this.inChannels=e,this.outChannels=t,this.kernelSize=Array.isArray(r)?r[0]:r,this.stride=s.stride??1,this.padding=s.padding??0,this.dilation=s.dilation??1,this.groups=s.groups??1,this.weight=new At(Tn([t,e/this.groups,this.kernelSize])),this.bias=s.bias!==!1?new At(Ve([t])):null,uc(this.weight,this.bias)}forward(e){return jS(e,this.weight,this.bias,this.stride,this.padding,this.dilation,this.groups)}};var Vf=class extends ge{static{l(this,"ReLU")}forward(e){return Df(e)}},Gf=class extends ge{static{l(this,"GELU")}forward(e){return Pf(e)}},jf=class extends ge{static{l(this,"SiLU")}forward(e){return MS(e)}},Uf=class extends ge{static{l(this,"Sigmoid")}forward(e){return IS(e)}},qf=class extends ge{static{l(this,"Tanh")}forward(e){return ES(e)}},Wf=class extends ge{static{l(this,"LeakyReLU")}negativeSlope;constructor(e=.01){super(),this.negativeSlope=e}forward(e){return DS(e,this.negativeSlope)}},Kf=class extends ge{static{l(this,"ELU")}alpha;constructor(e=1){super(),this.alpha=e}forward(e){return PS(e,this.alpha)}},Hf=class extends ge{static{l(this,"Softmax")}dim;constructor(e=-1){super(),this.dim=e}forward(e){return LS(e,this.dim)}},Yf=class extends ge{static{l(this,"LogSoftmax")}dim;constructor(e=-1){super(),this.dim=e}forward(e){return CS(e,this.dim)}};kt();var no=class extends ge{static{l(this,"LayerNorm")}normalizedShape;eps;weight;bias;constructor(e,t=1e-5,r=!0){super(),this.normalizedShape=Array.isArray(e)?e:[e],this.eps=t,this.weight=r?new At(tn(this.normalizedShape)):null,this.bias=r?new At(Ve(this.normalizedShape)):null}forward(e){return $S(e,this.normalizedShape,this.weight,this.bias,this.eps)}},E_=class extends ge{static{l(this,"GroupNorm")}numGroups;numChannels;eps;weight;bias;constructor(e,t,r=1e-5,s=!0){super(),this.numGroups=e,this.numChannels=t,this.eps=r,this.weight=s?new At(tn([t])):null,this.bias=s?new At(Ve([t])):null}forward(e){return FS(e,this.numGroups,this.weight,this.bias,this.eps)}},cc=class extends ge{static{l(this,"BatchNorm1d")}numFeatures;eps;weight;bias;runningMean;runningVar;constructor(e,t=1e-5,r=!0){super(),this.numFeatures=e,this.eps=t,this.weight=r?new At(tn([e])):null,this.bias=r?new At(Ve([e])):null,this.runningMean=Ve([e]),this.runningVar=tn([e]),this.registerBuffer("runningMean",this.runningMean),this.registerBuffer("runningVar",this.runningVar)}forward(e){return zS(e,this.runningMean,this.runningVar,this.weight,this.bias,this.training,this.eps)}},Jf=class extends cc{static{l(this,"BatchNorm2d")}constructor(e,t=1e-5,r=!0){super(e,t,r)}};var Zf=class extends ge{static{l(this,"MaxPool2d")}kernelSize;stride;padding;constructor(e,t,r=0){super(),this.kernelSize=Array.isArray(e)?e:[e,e],this.stride=t?Array.isArray(t)?t:[t,t]:this.kernelSize,this.padding=r}forward(e){return US(e,this.kernelSize,this.stride,this.padding)}},Qf=class extends ge{static{l(this,"AvgPool2d")}kernelSize;stride;padding;constructor(e,t,r=0){super(),this.kernelSize=Array.isArray(e)?e:[e,e],this.stride=t?Array.isArray(t)?t:[t,t]:this.kernelSize,this.padding=r}forward(e){return N_(e,this.kernelSize,this.stride,this.padding)}},Xf=class extends ge{static{l(this,"AdaptiveAvgPool2d")}outputSize;constructor(e){super(),this.outputSize=Array.isArray(e)?e:[e,e]}forward(e){return qS(e,this.outputSize)}};var Sr=class extends ge{static{l(this,"Dropout")}p;constructor(e=.5){super(),this.p=e}forward(e){return $f(e,this.p,this.training)}};var ed=class extends ge{static{l(this,"MSELoss")}reduction;constructor(e="mean"){super(),this.reduction=e}forward(e,t){return KS(e,t,this.reduction)}},td=class extends ge{static{l(this,"CrossEntropyLoss")}reduction;ignoreIndex;constructor(e="mean",t=-100){super(),this.reduction=e,this.ignoreIndex=t}forward(e,t){return HS(e,t,this.reduction,this.ignoreIndex===-100?null:this.ignoreIndex)}},nd=class extends ge{static{l(this,"NLLLoss")}reduction;ignoreIndex;constructor(e="mean",t=-100){super(),this.reduction=e,this.ignoreIndex=t}forward(e,t){return O_(e,t,this.reduction,this.ignoreIndex===-100?null:this.ignoreIndex)}},rd=class extends ge{static{l(this,"BCELoss")}reduction;constructor(e="mean"){super(),this.reduction=e}forward(e,t){return YS(e,t,this.reduction)}};kt();var sd=class extends ge{static{l(this,"Embedding")}numEmbeddings;embeddingDim;weight;constructor(e,t){super(),this.numEmbeddings=e,this.embeddingDim=t,this.weight=new At(Tn([e,t])),Cf(this.weight)}forward(e){return JS(this.weight,e)}};kt();be();be();_u();be();be();function i6(n){if(Array.isArray(n[0])){let e=n[0],t=new Array(e.length);for(let r=0;r<t.length;r++)t[r]=us(n.map(s=>s[r]),0);return t}return us(n,0)}l(i6,"stackSteps");function od(n,e,t){let r=Array.isArray(e),s=Array.isArray(t),o=s?t:[t],i=r?e:[e],a=As();if(!a){let d=e,h=[],m=o[0].shape[0];for(let g=0;g<m;g++){let y=s?o.map(w=>en(w,0,g)):en(o[0],0,g),[_,b]=n(d,y);d=_,h.push(b)}return[d,i6(h)]}let u=!1,p=l((d,h)=>{let[m,g]=n(r?d:d[0],s?h:h[0]);return u=Array.isArray(g),[r?m:[m],u?g:[g]]},"step"),[c,f]=a.scan(o,i,p);return[r?c:c[0],u?f:f[0]]}l(od,"scan");_u();wn();qn();var pc=class extends ge{static{l(this,"GRUCell")}inputSize;hiddenSize;x2h;h2h;constructor(e,t,r=!0){super(),this.inputSize=e,this.hiddenSize=t,this.x2h=new Sn(e,3*t,r),this.h2h=new Sn(t,3*t,r)}forward(e,t=null){let r=t!==null?t:Ve([e.shape[0],this.hiddenSize],{device:e.device}),s=this.x2h.forward(e),o=this.h2h.forward(r),[i,a,u]=hi(s,this.hiddenSize,-1),[p,c,f]=hi(o,this.hiddenSize,-1),d=wr(ae(i,p)),h=wr(ae(a,c)),m=Hs(ae(u,ee(d,f)));return ae(m,ee(h,ze(r,m)))}},id=class extends ge{static{l(this,"GRU")}inputSize;hiddenSize;numLayers;batchFirst;cells;constructor(e,t,r=1,s=!1,o=!0){super(),this.inputSize=e,this.hiddenSize=t,this.numLayers=r,this.batchFirst=s,this.cells=[];for(let i=0;i<r;i++){let a=new pc(i===0?e:t,t,o);this.cells.push(a),this.registerModule("cell_"+i,a)}}forward(e,t=null){let r=uS();if(r&&e.device.type==="gpu"&&!As()){let c=this.batchFirst?e.transpose(0,1):e,f={inputSize:this.inputSize,hiddenSize:this.hiddenSize,seqLen:c.shape[0],batch:c.shape[1]},[d,h]=r(c,this.cells,f,t);return[this.batchFirst?d.transpose(0,1):d,h]}let s=Sf();if(s&&e.device.type==="webgpu"&&!As()){let c=this.batchFirst?e.transpose(0,1):e,f={kind:"gru",inputSize:this.inputSize,hiddenSize:this.hiddenSize,seqLen:c.shape[0],batch:c.shape[1]},d=s(c,this.cells,f,t,null);if(d){let[h,m]=d;return[this.batchFirst?h.transpose(0,1):h,m]}}let o=this.batchFirst?e.transpose(0,1):e,i=o.shape[1],a=o,u=[];for(let c=0;c<this.numLayers;c++){let f=t!==null?en(t,0,c):Ve([i,this.hiddenSize],{device:o.device}),d=this.cells[c],[h,m]=od((g,y)=>{let _=d.forward(y,g);return[_,_]},f,a);u.push(h),a=m}let p=a;return this.batchFirst&&(p=p.transpose(0,1)),[p,us(u,0)]}};kt();be();be();_u();wn();qn();var fc=class extends ge{static{l(this,"LSTMCell")}inputSize;hiddenSize;x2h;h2h;constructor(e,t,r=!0){super(),this.inputSize=e,this.hiddenSize=t,this.x2h=new Sn(e,4*t,r),this.h2h=new Sn(t,4*t,r)}forward(e,t=null){let r=t!==null?t[0]:Ve([e.shape[0],this.hiddenSize],{device:e.device}),s=t!==null?t[1]:Ve([e.shape[0],this.hiddenSize],{device:e.device}),o=ae(this.x2h.forward(e),this.h2h.forward(r)),[i,a,u,p]=hi(o,this.hiddenSize,-1),c=wr(i),f=wr(a),d=Hs(u),h=wr(p),m=ae(ee(f,s),ee(c,d));return[ee(h,Hs(m)),m]}},ad=class extends ge{static{l(this,"LSTM")}inputSize;hiddenSize;numLayers;batchFirst;cells;constructor(e,t,r=1,s=!1,o=!0){super(),this.inputSize=e,this.hiddenSize=t,this.numLayers=r,this.batchFirst=s,this.cells=[];for(let i=0;i<r;i++){let a=new fc(i===0?e:t,t,o);this.cells.push(a),this.registerModule("cell_"+i,a)}}forward(e,t=null){let r=aS();if(r&&e.device.type==="gpu"&&!As()){let f=this.batchFirst?e.transpose(0,1):e,d={inputSize:this.inputSize,hiddenSize:this.hiddenSize,seqLen:f.shape[0],batch:f.shape[1]},[h,m,g]=r(f,this.cells,d,t?t[0]:null,t?t[1]:null);return[this.batchFirst?h.transpose(0,1):h,[m,g]]}let s=Sf();if(s&&e.device.type==="webgpu"&&!As()){let f=this.batchFirst?e.transpose(0,1):e,d={inputSize:this.inputSize,hiddenSize:this.hiddenSize,seqLen:f.shape[0],batch:f.shape[1]},h=s(f,this.cells,d,t?t[0]:null,t?t[1]:null);if(h){let[m,g,y]=h;return[this.batchFirst?m.transpose(0,1):m,[g,y]]}}let o=this.batchFirst?e.transpose(0,1):e,i=o.shape[1],a=o,u=[],p=[];for(let f=0;f<this.numLayers;f++){let d=t!==null?en(t[0],0,f):Ve([i,this.hiddenSize],{device:o.device}),h=t!==null?en(t[1],0,f):Ve([i,this.hiddenSize],{device:o.device}),m=this.cells[f],[[g,y],_]=od((b,w)=>{let[x,S]=m.forward(w,b);return[[x,S],x]},[d,h],a);u.push(g),p.push(y),a=_}let c=a;return this.batchFirst&&(c=c.transpose(0,1)),[c,[us(u,0),us(p,0)]]}};var ud=class extends ge{static{l(this,"Sequential")}_length;constructor(...e){super();for(let t=0;t<e.length;t++)this[String(t)]=e[t],this.registerModule(String(t),e[t]);this._length=e.length}forward(e){let t=e;for(let r=0;r<this._length;r++)t=this[String(r)].forward(t);return t}get length(){return this._length}*[Symbol.iterator](){for(let e=0;e<this._length;e++)yield this[String(e)]}push(e){let t=this._length;return this[String(t)]=e,this.registerModule(String(t),e),this._length++,this}},aa=class extends ge{static{l(this,"ModuleList")}_list;constructor(e){if(super(),this._list=[],e)for(let t=0;t<e.length;t++)this._list.push(e[t]),this.registerModule(String(t),e[t])}get length(){return this._list.length}get(e){return this._list[e]}push(e){let t=this._list.length;return this._list.push(e),this.registerModule(String(t),e),this}*[Symbol.iterator](){for(let e of this._list)yield e}forward(){throw new Error("ModuleList does not implement forward()")}},ld=class extends ge{static{l(this,"ModuleDict")}_dict;constructor(e){if(super(),this._dict=new Map,e)for(let[t,r]of Object.entries(e))this._dict.set(t,r),this.registerModule(t,r)}get(e){return this._dict.get(e)}set(e,t){return this._dict.set(e,t),this.registerModule(e,t),this}has(e){return this._dict.has(e)}get size(){return this._dict.size}*keys(){yield*this._dict.keys()}*values(){yield*this._dict.values()}*[Symbol.iterator](){yield*this._dict.entries()}forward(){throw new Error("ModuleDict does not implement forward()")}};be();var cd=class extends ge{static{l(this,"Flatten")}startDim;endDim;constructor(e=1,t=-1){super(),this.startDim=e,this.endDim=t}forward(e){let t=e.shape,r=t.length,s=this.startDim<0?r+this.startDim:this.startDim,o=this.endDim<0?r+this.endDim:this.endDim,i=1;for(let u=s;u<=o;u++)i*=t[u];let a=[];for(let u=0;u<s;u++)a.push(t[u]);a.push(i);for(let u=o+1;u<r;u++)a.push(t[u]);return Hn(e,a)}};be();kt();kt();function pE(n){return n==="gelu"?Pf:Df}l(pE,"_getActivation");var ua=class extends ge{static{l(this,"MultiheadAttention")}embedDim;numHeads;headDim;batchFirst;dropout;qProj;kProj;vProj;outProj;constructor(e,t,r=0,s=!0,o=null,i=null,a=!0){super(),this.embedDim=e,this.numHeads=t,this.headDim=Math.floor(e/t),this.batchFirst=a,this.dropout=r,this.qProj=new Sn(e,e,s),this.kProj=new Sn(o??e,e,s),this.vProj=new Sn(i??e,e,s),this.outProj=new Sn(e,e,s)}forward(e,t,r,s=null,o=null,i=!1){this.batchFirst||(e=e.transpose(0,1),t=t.transpose(0,1),r=r.transpose(0,1));let a=e.shape[0],u=e.shape[1],p=t.shape[1],c=this.qProj.forward(e),f=this.kProj.forward(t),d=this.vProj.forward(r);if(c=c.reshape([a,u,this.numHeads,this.headDim]).permute([0,2,1,3]),f=f.reshape([a,p,this.numHeads,this.headDim]).permute([0,2,1,3]),d=d.reshape([a,p,this.numHeads,this.headDim]).permute([0,2,1,3]),o){let g=ot(o.shape,-1/0),y=ot(o.shape,0),_=or(o,g,y);_=_.unsqueeze(1).unsqueeze(2),s=s?ae(s,_):_}let h=QS(c,f,d,s,this.dropout,i,this.training);h=h.permute([0,2,1,3]).reshape([a,u,this.embedDim]);let m=this.outProj.forward(h);return this.batchFirst||(m=m.transpose(0,1)),m}},bu=class extends ge{static{l(this,"TransformerEncoderLayer")}selfAttn;linear1;linear2;norm1;norm2;dropout1;dropout2;dropoutFFN;_activation;_activationName;normFirst;_dModel;_nhead;_dimFeedforward;_dropout;_layerNormEps;_batchFirst;constructor(e,t,r=2048,s=.1,o="relu",i=1e-5,a=!0,u=!1){super(),this.selfAttn=new ua(e,t,s,!0,null,null,a),this.linear1=new Sn(e,r),this.linear2=new Sn(r,e),this.norm1=new no(e,i),this.norm2=new no(e,i),this.dropout1=new Sr(s),this.dropout2=new Sr(s),this.dropoutFFN=new Sr(s),this._activation=pE(o),this._activationName=o,this.normFirst=u,this._dModel=e,this._nhead=t,this._dimFeedforward=r,this._dropout=s,this._layerNormEps=i,this._batchFirst=a}forward(e,t=null,r=null,s=!1){return this.normFirst?this._forwardPreNorm(e,t,r,s):this._forwardPostNorm(e,t,r,s)}_forwardPostNorm(e,t,r,s){let o=this.selfAttn.forward(e,e,e,t,r,s);o=this.norm1.forward(ae(e,this.dropout1.forward(o)));let i=this._activation(this.linear1.forward(o));return i=this.linear2.forward(this.dropoutFFN.forward(i)),o=this.norm2.forward(ae(o,this.dropout2.forward(i))),o}_forwardPreNorm(e,t,r,s){let o=this.norm1.forward(e),i=this.selfAttn.forward(o,o,o,t,r,s);i=ae(e,this.dropout1.forward(i));let a=this._activation(this.linear1.forward(this.norm2.forward(i)));return a=this.linear2.forward(this.dropoutFFN.forward(a)),i=ae(i,this.dropout2.forward(a)),i}},wu=class extends ge{static{l(this,"TransformerDecoderLayer")}selfAttn;crossAttn;linear1;linear2;norm1;norm2;norm3;dropout1;dropout2;dropout3;dropoutFFN;_activation;_activationName;normFirst;_dModel;_nhead;_dimFeedforward;_dropout;_layerNormEps;_batchFirst;constructor(e,t,r=2048,s=.1,o="relu",i=1e-5,a=!0,u=!1){super(),this.selfAttn=new ua(e,t,s,!0,null,null,a),this.crossAttn=new ua(e,t,s,!0,null,null,a),this.linear1=new Sn(e,r),this.linear2=new Sn(r,e),this.norm1=new no(e,i),this.norm2=new no(e,i),this.norm3=new no(e,i),this.dropout1=new Sr(s),this.dropout2=new Sr(s),this.dropout3=new Sr(s),this.dropoutFFN=new Sr(s),this._activation=pE(o),this._activationName=o,this.normFirst=u,this._dModel=e,this._nhead=t,this._dimFeedforward=r,this._dropout=s,this._layerNormEps=i,this._batchFirst=a}forward(e,t,r=null,s=null,o=null,i=null,a=!1){return this.normFirst?this._forwardPreNorm(e,t,r,s,o,i,a):this._forwardPostNorm(e,t,r,s,o,i,a)}_forwardPostNorm(e,t,r,s,o,i,a){let u=this.selfAttn.forward(e,e,e,r,o,a);u=this.norm1.forward(ae(e,this.dropout1.forward(u)));let p=this.crossAttn.forward(u,t,t,s,i);u=this.norm2.forward(ae(u,this.dropout2.forward(p)));let c=this._activation(this.linear1.forward(u));return c=this.linear2.forward(this.dropoutFFN.forward(c)),u=this.norm3.forward(ae(u,this.dropout3.forward(c))),u}_forwardPreNorm(e,t,r,s,o,i,a){let u=this.norm1.forward(e),p=this.selfAttn.forward(u,u,u,r,o,a);p=ae(e,this.dropout1.forward(p));let c=this.norm2.forward(p),f=this.crossAttn.forward(c,t,t,s,i);p=ae(p,this.dropout2.forward(f));let d=this._activation(this.linear1.forward(this.norm3.forward(p)));return d=this.linear2.forward(this.dropoutFFN.forward(d)),p=ae(p,this.dropout3.forward(d)),p}};function a6(n){return new bu(n._dModel,n._nhead,n._dimFeedforward,n._dropout,n._activationName,n._layerNormEps,n._batchFirst,n.normFirst)}l(a6,"_cloneEncoderLayer");function u6(n){return new wu(n._dModel,n._nhead,n._dimFeedforward,n._dropout,n._activationName,n._layerNormEps,n._batchFirst,n.normFirst)}l(u6,"_cloneDecoderLayer");var dc=class extends ge{static{l(this,"TransformerEncoder")}layers;norm;constructor(e,t,r=null){super(),this.layers=new aa(Array.from({length:t},()=>a6(e))),this.norm=r}forward(e,t=null,r=null,s=!1){let o=e;for(let i of this.layers)o=i.forward(o,t,r,s);return this.norm&&(o=this.norm.forward(o)),o}},hc=class extends ge{static{l(this,"TransformerDecoder")}layers;norm;constructor(e,t,r=null){super(),this.layers=new aa(Array.from({length:t},()=>u6(e))),this.norm=r}forward(e,t,r=null,s=null,o=null,i=null,a=!1){let u=e;for(let p of this.layers)u=p.forward(u,t,r,s,o,i,a);return this.norm&&(u=this.norm.forward(u)),u}},pd=class extends ge{static{l(this,"Transformer")}encoder;decoder;dModel;constructor({dModel:e=512,nhead:t=8,numEncoderLayers:r=6,numDecoderLayers:s=6,dimFeedforward:o=2048,dropout:i=.1,activation:a="relu",batchFirst:u=!0,normFirst:p=!1,layerNormEps:c=1e-5}={}){super();let f=new bu(e,t,o,i,a,c,u,p),d=new wu(e,t,o,i,a,c,u,p);this.encoder=new dc(f,r),this.decoder=new hc(d,s),this.dModel=e}forward(e,t,r=null,s=null,o=null,i=null,a=null,u=null){let p=this.encoder.forward(e,r,i);return this.decoder.forward(t,p,s,o,a,u)}static generateSquareSubsequentMask(e){let t=Tn([e,e]),r=t._impl.storage.data;for(let s=0;s<e;s++)for(let o=0;o<e;o++)r[s*e+o]=o<=s?0:-1/0;return t}};be();kt();var fd=class extends ge{static{l(this,"PositionalEncoding")}dropoutLayer;pe;constructor(e,t=5e3,r=.1){super(),this.dropoutLayer=new Sr(r);let s=Ve([1,t,e]),o=s._impl.storage.data;for(let i=0;i<t;i++)for(let a=0;a<e;a+=2){let u=i*Math.exp(-(a*Math.log(1e4))/e);o[i*e+a]=Math.sin(u),a+1<e&&(o[i*e+a+1]=Math.cos(u))}this.pe=s,this.registerBuffer("pe",s)}forward(e){let t=e.shape[1],r=this.pe.narrow(1,0,t);return this.dropoutLayer.forward(ae(e,r))}};var fE={...lc,...S_,...GS,...k_,...A_,...WS,...B_,...ZS,...XS};var hE={};at(hE,{BatchSampler:()=>vu,DataLoader:()=>md,Dataset:()=>Tu,MapDataset:()=>hd,RandomSampler:()=>Su,Sampler:()=>la,SequentialSampler:()=>xu,TensorDataset:()=>dd,defaultCollate:()=>ku});be();var Tu=class{static{l(this,"Dataset")}get length(){throw new Error("Subclass must implement get length()")}get(e){throw new Error("Subclass must implement get(index)")}*[Symbol.iterator](){let e=this.length;for(let t=0;t<e;t++)yield this.get(t)}},dd=class extends Tu{static{l(this,"TensorDataset")}_tensors;_length;constructor(...e){if(super(),e.length===0)throw new Error("TensorDataset requires at least one tensor");let t=e[0].shape[0];for(let r=1;r<e.length;r++)if(e[r].shape[0]!==t)throw new Error(`Size mismatch at dim 0: tensor 0 has ${t}, tensor ${r} has ${e[r].shape[0]}`);this._tensors=e,this._length=t}get length(){return this._length}get(e){let t=new Array(this._tensors.length);for(let r=0;r<this._tensors.length;r++)t[r]=en(this._tensors[r],0,e);return t}},hd=class extends Tu{static{l(this,"MapDataset")}_dataset;_transform;constructor(e,t){super(),this._dataset=e,this._transform=t}get length(){return this._dataset.length}get(e){return this._transform(this._dataset.get(e))}};var la=class{static{l(this,"Sampler")}*[Symbol.iterator](){throw new Error("Subclass must implement [Symbol.iterator]()")}},xu=class extends la{static{l(this,"SequentialSampler")}_dataSource;constructor(e){super(),this._dataSource=e}*[Symbol.iterator](){let e=this._dataSource.length;for(let t=0;t<e;t++)yield t}},Su=class extends la{static{l(this,"RandomSampler")}_dataSource;constructor(e){super(),this._dataSource=e}*[Symbol.iterator](){let e=this._dataSource.length,t=new Int32Array(e);for(let r=0;r<e;r++)t[r]=r;for(let r=e-1;r>0;r--){let s=Math.floor(Math.random()*(r+1)),o=t[r];t[r]=t[s],t[s]=o}for(let r=0;r<e;r++)yield t[r]}},vu=class extends la{static{l(this,"BatchSampler")}_dropLast;_sampler;_batchSize;constructor(e,t,r=!1){super(),this._sampler=e,this._batchSize=t,this._dropLast=r}*[Symbol.iterator](){let e=[];for(let t of this._sampler)e.push(t),e.length===this._batchSize&&(yield e,e=[]);e.length>0&&!this._dropLast&&(yield e)}};sr();os();rs();function l6(n,e=0){let t=n.length,r=n[0].shape,s=n[0].dtype,o=[...r];o.splice(e,0,t);let i=r.reduce((c,f)=>c*f,1),a=St(s),u=new a(t*i),p=u;for(let c=0;c<t;c++){let f=n[c],d=f.data,h=f._impl?f._impl.storageOffset:0;if(f.isContiguous)p.set(d.subarray(h,h+i),c*i);else{let m=f.shape,g=f.strides,y=f._impl.storage.data,_=m.length,b=new Int32Array(_),w=h;for(let x=0;x<i;x++){p[c*i+x]=y[w];for(let S=_-1;S>=0;S--){if(b[S]++,b[S]<m[S]){w+=g[S];break}w-=(m[S]-1)*g[S],b[S]=0}}}}return eu(u,o,s)}l(l6,"stackTensors");function ku(n){let e=n[0];if(e instanceof Ze)return l6(n,0);if(typeof e=="number")return Wt(n);if(Array.isArray(e)){let t=new Array(e.length);for(let r=0;r<e.length;r++){let s=new Array(n.length);for(let o=0;o<n.length;o++)s[o]=n[o][r];t[r]=ku(s)}return t}if(e!==null&&typeof e=="object"&&e.constructor===Object){let t=Object.keys(e),r={};for(let s=0;s<t.length;s++){let o=t[s],i=new Array(n.length);for(let a=0;a<n.length;a++)i[a]=n[a][o];r[o]=ku(i)}return r}throw new Error(`defaultCollate: unsupported element type ${typeof e}`)}l(ku,"defaultCollate");var md=class{static{l(this,"DataLoader")}_dataset;_collate;_batchSampler;_batchSize;_dropLast;constructor(e,t={}){if(this._dataset=e,this._collate=t.collate??(r=>ku(r)),t.batchSampler!=null){if(t.batchSize!=null||t.shuffle||t.sampler!=null||t.dropLast)throw new Error("batchSampler is mutually exclusive with batchSize, shuffle, sampler, and dropLast");this._batchSampler=t.batchSampler,this._batchSize=null,this._dropLast=null}else{let r=t.batchSize??1,s=t.dropLast??!1;this._batchSize=r,this._dropLast=s;let o;if(t.sampler!=null){if(t.shuffle)throw new Error("sampler and shuffle are mutually exclusive");o=t.sampler}else o=t.shuffle?new Su(e):new xu(e);this._batchSampler=new vu(o,r,s)}}get dataset(){return this._dataset}get length(){let e=this._dataset.length;if(this._batchSize==null){let t=0;for(let r of this._batchSampler)t++;return t}return this._dropLast?Math.floor(e/this._batchSize):Math.ceil(e/this._batchSize)}*[Symbol.iterator](){for(let e of this._batchSampler){let t=new Array(e.length);for(let r=0;r<e.length;r++)t[r]=this._dataset.get(e[r]);yield this._collate(t)}}};var TE={};at(TE,{DEFAULT_SPECIALS:()=>F_,TOKENIZER_FORMAT:()=>yc,TOKENIZER_VERSION:()=>_c,Tokenizer:()=>yd,Vocab:()=>ca});var ca=class n{static{l(this,"Vocab")}_tokenToId;_idToToken;constructor(e=[]){this._tokenToId=new Map,this._idToToken=[];for(let t of e)this.add(t)}add(e){let t=this._tokenToId.get(e);return t===void 0&&(t=this._idToToken.length,this._tokenToId.set(e,t),this._idToToken.push(e)),t}getId(e,t=-1){let r=this._tokenToId.get(e);return r===void 0?t:r}getToken(e){return e>=0&&e<this._idToToken.length?this._idToToken[e]:void 0}has(e){return this._tokenToId.has(e)}get size(){return this._idToToken.length}tokens(){return this._idToToken.slice()}static fromTokens(e){if(!Array.isArray(e))throw new Error("mlfw tokenizer: vocab must be an array");let t=new n,r=new Set;for(let s of e){if(typeof s!="string")throw new Error("mlfw tokenizer: vocab entries must be strings");if(r.has(s))throw new Error(`mlfw tokenizer: duplicate vocab token '${s}'`);r.add(s),t.add(s)}return t}};var L_=class n{static{l(this,"WordStrategy")}_lowercase;constructor({lowercase:e=!1}={}){this._lowercase=e}fit(e,t){}segment(e){return(this._lowercase?String(e).toLowerCase():String(e)).split(/\s+/).filter(Boolean)}detokenize(e){return e.join(" ")}toJSON(){return{lowercase:this._lowercase}}static fromJSON(e={}){return new n({lowercase:e.lowercase??!1})}};var C_=class n{static{l(this,"CharStrategy")}_lowercase;constructor({lowercase:e=!1}={}){this._lowercase=e}fit(e,t){}segment(e){let t=this._lowercase?String(e).toLowerCase():String(e);return Array.from(t)}detokenize(e){return e.join("")}toJSON(){return{lowercase:this._lowercase}}static fromJSON(e={}){return new n({lowercase:e.lowercase??!1})}};function D_(n,e){return n+""+e}l(D_,"pairKey");var P_=class n{static{l(this,"BpeStrategy")}_numMerges;_lowercase;_eow;_ranks;_encodeCache;constructor({numMerges:e=1e3,lowercase:t=!1,endOfWord:r="</w>"}={}){this._numMerges=e,this._lowercase=t,this._eow=r,this._ranks=new Map,this._encodeCache=new Map}_pretokenize(e){return(this._lowercase?String(e).toLowerCase():String(e)).split(/\s+/).filter(Boolean)}_baseSymbols(e){let t=Array.from(e);return t.push(this._eow),t}fit(e,t){this._encodeCache=new Map;let r=new Map;for(let h of e)for(let m of this._pretokenize(h))r.set(m,(r.get(m)||0)+1);let s=new Map;for(let h of r.keys())s.set(h,this._baseSymbols(h));let o=new Map,i=new Map,a=[],u=l((h,m)=>h[0]>m[0]||h[0]===m[0]&&h[1]<m[1],"higher"),p=l((h,m)=>{a.push([h,m]);let g=a.length-1;for(;g>0;){let y=g-1>>1;if(u(a[g],a[y])){let _=a[y];a[y]=a[g],a[g]=_,g=y}else break}},"pushHeap"),c=l(()=>{let h=a[0],m=a.pop();if(a.length>0){a[0]=m;let g=0,y=a.length;for(;;){let _=g,b=2*g+1,w=2*g+2;if(b<y&&u(a[b],a[_])&&(_=b),w<y&&u(a[w],a[_])&&(_=w),_===g)break;let x=a[_];a[_]=a[g],a[g]=x,g=_}}return h},"popHeap"),f=l(h=>{let m=s.get(h),g=r.get(h);for(let y=0;y+1<m.length;y++){let _=D_(m[y],m[y+1]),b=(o.get(_)||0)+g;o.set(_,b),p(b,_);let w=i.get(_);w||(w=new Set,i.set(_,w)),w.add(h)}},"addWordPairs"),d=l(h=>{let m=s.get(h),g=r.get(h);for(let y=0;y+1<m.length;y++){let _=D_(m[y],m[y+1]),b=(o.get(_)||0)-g;b<=0?o.delete(_):(o.set(_,b),p(b,_));let w=i.get(_);w&&w.delete(h)}},"removeWordPairs");for(let h of r.keys())f(h);this._ranks=new Map;for(let h=0;h<this._numMerges;h++){let m=null,g=0;for(;a.length>0;){let[S,T]=c(),v=o.get(T);if(v===S&&v>0){m=T,g=v;break}}if(m===null||g<=0)break;let y=m.indexOf(""),_=m.slice(0,y),b=m.slice(y+1),w=_+b;this._ranks.set(m,h);let x=i.get(m);if(!x||x.size===0)break;for(let S of[...x]){d(S);let T=s.get(S),v=[];for(let A=0;A<T.length;A++)A+1<T.length&&T[A]===_&&T[A+1]===b?(v.push(w),A++):v.push(T[A]);s.set(S,v),f(S)}}}_encodeWord(e){let t=this._encodeCache.get(e);if(t!==void 0)return t;let r=this._baseSymbols(e);for(;r.length>1;){let s=1/0,o=-1;for(let i=0;i+1<r.length;i++){let a=this._ranks.get(D_(r[i],r[i+1]));a!==void 0&&a<s&&(s=a,o=i)}if(o<0)break;r=r.slice(0,o).concat(r[o]+r[o+1],r.slice(o+2))}return this._encodeCache.set(e,r),r}segment(e){let t=[];for(let r of this._pretokenize(e))for(let s of this._encodeWord(r))t.push(s);return t}detokenize(e){let t="";for(let r of e)t+=r;return t.split(this._eow).join(" ").trim()}toJSON(){let e=[...this._ranks.entries()].map(([t])=>{let r=t.indexOf("");return[t.slice(0,r),t.slice(r+1)]});return{numMerges:this._numMerges,lowercase:this._lowercase,endOfWord:this._eow,merges:e}}static fromJSON(e={}){if(!Array.isArray(e.merges))throw new Error("mlfw tokenizer: bpe strategy merges must be an array");let t=new n({numMerges:e.numMerges??e.merges.length,lowercase:e.lowercase??!1,endOfWord:e.endOfWord??"</w>"});t._ranks=new Map;for(let r=0;r<e.merges.length;r++){let s=e.merges[r];if(!Array.isArray(s)||s.length!==2||s.some(o=>typeof o!="string"))throw new Error("mlfw tokenizer: bpe merges must be string pairs");t._ranks.set(D_(s[0],s[1]),r)}return t}};os();import{writeFileSync as mE,appendFileSync as c6,readFileSync as gE,existsSync as p6,mkdirSync as f6,readdirSync as d6,unlinkSync as h6,renameSync as m6}from"fs";import{resolve as gd}from"path";var vn={readFile(n){return gE(gd(n),"utf8")},readBinary(n){return gE(gd(n))},writeFile(n,e){mE(n,e)},writeBinary(n,e){mE(gd(n),e)},appendFile(n,e){c6(n,e)},exists(n){return p6(n)},mkdir(n){f6(n,{recursive:!0})},readdir(n){return d6(n)},remove(n){h6(n)},rename(n,e){m6(gd(n),gd(e))}};var yc="mlfw-tokenizer",_c=1,F_=Object.freeze({pad:"<pad>",unk:"<unk>",bos:"<bos>",eos:"<eos>"}),yE=`${yc}-v${_c}`,$_={word:L_,char:C_,bpe:P_},gc=Object.freeze(["pad","unk","bos","eos"]),yd=class n{static{l(this,"Tokenizer")}_mode;_specials;_maxVocab;_strategy;_vocab;constructor(e={}){let t=e.mode??"word",r=$_[t];if(!r)throw new Error(`Unknown tokenizer mode '${t}'. Available: ${Object.keys($_).join(", ")}`);this._mode=t,this._specials=_E(e.specialTokens),bE(this._specials),this._maxVocab=e.vocabSize??null,wE(this._maxVocab,this._specials),this._strategy=new r(e),this._vocab=null}get mode(){return this._mode}get vocabSize(){return this._fitVocab().size}get padId(){return this._specialId("pad")}get unkId(){return this._specialId("unk")}get bosId(){return this._specialId("bos")}get eosId(){return this._specialId("eos")}_ensureFit(){if(!this._vocab)throw new Error("Tokenizer must be fit() on a corpus before use")}_fitVocab(){return this._ensureFit(),this._vocab}_specialId(e){return this._fitVocab().getId(this._specials[e])}fit(e){let t=Array.isArray(e)?e:[e];this._strategy.fit(t,{vocabSize:this._maxVocab});let r=new ca(Object.values(this._specials));if(this._maxVocab==null)for(let s of t)for(let o of this._strategy.segment(s))r.add(o);else{let s=new Map;for(let a of t)for(let u of this._strategy.segment(a))s.set(u,(s.get(u)||0)+1);let o=[...s.entries()].sort((a,u)=>u[1]-a[1]),i=this._maxVocab-r.size;for(let a=0;a<o.length&&a<i;a++)r.add(o[a][0])}return this._vocab=r,this}toJSON(){let e=this._fitVocab(),t=this._strategy.toJSON();return{format:yc,version:_c,mode:this._mode,config:{vocabSize:this._maxVocab,...t},specialTokens:{...this._specials},vocab:e.tokens(),strategy:t}}save(e){if(typeof e!="string")throw new Error("mlfw tokenizer: save(path) requires a file path string");let t=e+".tmp";vn.writeFile(t,y6(this.toJSON())),vn.rename(t,e)}static load(e){if(typeof e!="string")throw new Error("mlfw tokenizer: load(path) requires a file path string");let t=vn.readFile(e),r=typeof t=="string"?t:new TextDecoder().decode(t);return n.fromJSON(_6(r))}static fromJSON(e){g6(e);let t=$_[e.mode],r=new n({mode:e.mode,vocabSize:e.config.vocabSize,specialTokens:e.specialTokens});r._strategy=t.fromJSON(e.strategy),r._vocab=ca.fromTokens(e.vocab);for(let s of Object.values(r._specials))if(!r._vocab.has(s))throw new Error(`mlfw tokenizer: special token '${s}' is missing from vocab`);return r}encode(e,t={}){let r=this._fitVocab(),s=[];t.addBos&&s.push(this.bosId);let o=this.unkId;for(let i of this._strategy.segment(e))s.push(r.getId(i,o));return t.addEos&&s.push(this.eosId),s}decode(e,t={}){let r=this._fitVocab(),s=t.skipSpecial??!0,o=new Set(Object.values(this._specials).map(a=>r.getId(a))),i=[];for(let a of e){if(s&&o.has(a))continue;let u=r.getToken(a);u!==void 0&&i.push(u)}return this._strategy.detokenize(i)}encodeBatch(e,t={}){this._ensureFit();let s=(Array.isArray(e)?e:[e]).map(p=>this.encode(p,t)),o=t.maxLen??s.reduce((p,c)=>Math.max(p,c.length),0),i=t.padId??this.padId,a=s.length,u=new Int32Array(a*o).fill(i);for(let p=0;p<a;p++){let c=s[p],f=Math.min(c.length,o);for(let d=0;d<f;d++)u[p*o+d]=c[d]}return Wt(u,{shape:[a,o],dtype:"i32"})}};function _E(n){if(Array.isArray(n)){let e={...F_};for(let t=0;t<n.length&&t<gc.length;t++)e[gc[t]]=n[t];return e}return{...F_,...n??{}}}l(_E,"normalizeSpecials");function bE(n){let e=new Set;for(let t of gc){let r=n[t];if(typeof r!="string"||r.length===0)throw new Error(`mlfw tokenizer: special token '${t}' must be a non-empty string`);if(e.has(r))throw new Error(`mlfw tokenizer: duplicate special token '${r}'`);e.add(r)}}l(bE,"validateSpecials");function wE(n,e){if(n!=null&&(!Number.isInteger(n)||n<Object.keys(e).length))throw new Error(`mlfw tokenizer: vocabSize must be an integer >= ${Object.keys(e).length}`)}l(wE,"validateVocabSize");function g6(n){if(!n||typeof n!="object")throw new Error("mlfw tokenizer: artifact must be an object");let e=n;if(e.format!==yc)throw new Error("mlfw tokenizer: unrecognized tokenizer format");if(e.version!==_c)throw new Error(`mlfw tokenizer: unsupported tokenizer version ${e.version}`);if(typeof e.mode!="string"||!(e.mode in $_))throw new Error(`mlfw tokenizer: unknown tokenizer mode '${e.mode}'`);if(!e.config||typeof e.config!="object")throw new Error("mlfw tokenizer: config must be an object");let t=e.config,r=_E(x6(e.specialTokens));if(bE(r),wE(S6(t.vocabSize),r),!Array.isArray(e.vocab))throw new Error("mlfw tokenizer: vocab must be an array");if(!e.strategy||typeof e.strategy!="object")throw new Error("mlfw tokenizer: strategy must be an object")}l(g6,"validateTokenizerData");function y6(n){let e=[yE,Nu("m",[n.mode]),Nu("z",[n.config.vocabSize==null?"":String(n.config.vocabSize)]),Nu("s",gc.map(t=>n.specialTokens[t]))];if(n.mode==="bpe"){let t=[];for(let r of n.strategy.merges)t.push(r[0],r[1]);e.push(Nu("g",[String(n.strategy.lowercase?1:0),String(n.strategy.numMerges),n.strategy.endOfWord])),e.push(Nu("r",t))}else e.push(Nu("g",[String(n.strategy.lowercase?1:0)]));return e.push(Nu("v",n.vocab)),e.join(`
|
|
423
423
|
`)}l(y6,"serializeTokenizer");function _6(n){if(!n.startsWith(yE))throw new Error("mlfw tokenizer: unrecognized tokenizer format");let e=new Map;for(let p of n.split(/\r?\n/).slice(1)){if(!p)continue;let c=p.indexOf(" ");if(c<0)throw new Error("mlfw tokenizer: malformed tokenizer artifact");e.set(p.slice(0,c),b6(p.slice(c+1)))}let t=mc(e,"m")[0],r=mc(e,"z")[0],s=mc(e,"s"),o=mc(e,"g"),i=mc(e,"v"),a=Object.fromEntries(gc.map((p,c)=>[p,s[c]])),u={lowercase:o[0]==="1"};if(t==="bpe"){let p=mc(e,"r");if(p.length%2!==0)throw new Error("mlfw tokenizer: bpe merges must be string pairs");u.numMerges=Number(o[1]),u.endOfWord=o[2],u.merges=[];for(let c=0;c<p.length;c+=2)u.merges.push([p[c],p[c+1]])}return{format:yc,version:_c,mode:t,config:{vocabSize:r===""?null:Number(r),...u},specialTokens:a,vocab:i,strategy:u}}l(_6,"parseTokenizer");function Nu(n,e){return`${n} ${e.map(w6).join(" ")}`}l(Nu,"record");function b6(n){return n.split(" ").map(T6)}l(b6,"parseRecord");function w6(n){return String(n).replace(/\\/g,"\\\\").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r")}l(w6,"escapeField");function T6(n){let e="";for(let t=0;t<n.length;t++){let r=n[t];if(r!=="\\"){e+=r;continue}let s=n[++t];s==="t"?e+=" ":s==="n"?e+=`
|
|
424
424
|
`:s==="r"?e+="\r":s==="\\"?e+="\\":e+=s??""}return e}l(T6,"unescapeField");function mc(n,e){let t=n.get(e);if(!t)throw new Error(`mlfw tokenizer: missing '${e}' record`);return t}l(mc,"requiredField");function x6(n){if(n==null)return;if(Array.isArray(n))return n.map(String);if(typeof n!="object")return;let e=n,t={};for(let r of gc){let s=e[r];typeof s=="string"&&(t[r]=s)}return t}l(x6,"asSpecialTokensInput");function S6(n){return n==null||typeof n=="number"?n:Number(n)}l(S6,"asNullableNumber");var tC={};at(tC,{Adam:()=>bd,AdamW:()=>wd,CosineAnnealingLR:()=>xd,FusedAdam:()=>lw,FusedOptimizer:()=>Fc,FusedSGD:()=>uw,GradScaler:()=>cw,LRScheduler:()=>Au,Optimizer:()=>fs,ReduceLROnPlateau:()=>Sd,SGD:()=>_d,StepLR:()=>Td,clipGradNorm_:()=>vd,clipGradValue_:()=>kd});var fs=class{static{l(this,"Optimizer")}_defaults;_paramGroups;_state;_paramIndex;_nextId;constructor(e,t){this._defaults={...t},this._paramGroups=[],this._state=new Map,this._paramIndex=new WeakMap,this._nextId=0;let r=v6(e);for(let s of r)this._addParamGroup(s)}get paramGroups(){return this._paramGroups}get defaults(){return this._defaults}step(){throw new Error(`${this.constructor.name}.step() not implemented`)}zeroGrad(e=!0){for(let t of this._paramGroups)for(let r of t.params)r.grad!==null&&(e?r.grad=null:r.grad._impl.storage.data.fill(0))}stateDict(){let e=new Map;for(let[t,r]of this._state){let s={};for(let o of Object.keys(r)){let i=r[o];s[o]=xE(i)?SE(i):i}e.set(t,s)}return{state:e,paramGroups:this._paramGroups.map(t=>{let r={};for(let s of Object.keys(t)){if(s==="params")continue;let o=t[s];r[s]=Array.isArray(o)?[...o]:o}return r})}}loadStateDict(e){for(let t=0;t<this._paramGroups.length;t++){let r=e.paramGroups[t];for(let s of Object.keys(r))this._paramGroups[t][s]=Array.isArray(r[s])?[...r[s]]:r[s]}this._state=new Map;for(let[t,r]of e.state){let s={};for(let o of Object.keys(r)){let i=r[o];s[o]=xE(i)?SE(i):i}this._state.set(t,s)}}_addParamGroup(e){let t={...this._defaults,params:[]};for(let s of Object.keys(e))s!=="params"&&(t[s]=e[s]);let r=Array.isArray(e.params)?e.params:[...e.params];for(let s of r){if(this._paramIndex.has(s))throw new Error("Parameter appears in more than one parameter group");this._paramIndex.set(s,this._nextId++)}t.params=r,this._paramGroups.push(t)}_getParamId(e){return this._paramIndex.get(e)}_getState(e){let t=this._paramIndex.get(e),r=this._state.get(t);return r||(r={},this._state.set(t,r)),r}};function v6(n){if(n==null)throw new Error("Optimizer requires at least one parameter");let e=Array.isArray(n)?n:[...n];if(e.length===0)throw new Error("Optimizer got an empty parameter list");return k6(e[0])?e:[{params:e}]}l(v6,"normalizeParamGroups");function xE(n){return n instanceof Float32Array||n instanceof Float64Array||n instanceof Int32Array||n instanceof Int16Array||n instanceof Int8Array||n instanceof Uint8Array||n instanceof Uint16Array||n instanceof Uint32Array}l(xE,"isTypedArray");function SE(n){return n.slice()}l(SE,"cloneTypedArray");function k6(n){return typeof n=="object"&&n!==null&&"params"in n}l(k6,"isParamGroupInput");var _d=class extends fs{static{l(this,"SGD")}constructor(e,{lr:t=.01,momentum:r=0,dampening:s=0,weightDecay:o=0,nesterov:i=!1}={}){if(i&&(r===0||s!==0))throw new Error("Nesterov momentum requires momentum > 0 and dampening = 0");super(e,{lr:t,momentum:r,dampening:s,weightDecay:o,nesterov:i})}step(){for(let e of this._paramGroups){let t=e.lr,r=e.momentum,s=e.dampening,o=e.weightDecay,i=e.nesterov;for(let a of e.params){if(a.grad===null)continue;let u=a._impl.storage.data,p=a.grad._impl.storage.data,c=u.length,f=this._getState(a);if(r===0)if(o===0)for(let d=0;d<c;d++)u[d]-=t*p[d];else for(let d=0;d<c;d++)u[d]-=t*(p[d]+o*u[d]);else{let d=f.momentumBuffer;if(d){d=d;for(let h=0;h<c;h++){let m=o!==0?p[h]+o*u[h]:p[h];d[h]=r*d[h]+(1-s)*m}}else{d=new u.constructor(c);for(let h=0;h<c;h++)d[h]=o!==0?p[h]+o*u[h]:p[h];f.momentumBuffer=d}if(i)for(let h=0;h<c;h++){let m=o!==0?p[h]+o*u[h]:p[h];u[h]-=t*(m+r*d[h])}else for(let h=0;h<c;h++)u[h]-=t*d[h]}a._impl.bumpVersion()}}}};wn();qn();var bd=class extends fs{static{l(this,"Adam")}constructor(e,{lr:t=.001,betas:r=[.9,.999],eps:s=1e-8,weightDecay:o=0,amsgrad:i=!1}={}){super(e,{lr:t,betas:[...r],eps:s,weightDecay:o,amsgrad:i})}step(){let e=lS();for(let t of this._paramGroups){let r=t.lr,s=t.betas,o=t.eps,i=t.weightDecay,a=t.amsgrad,[u,p]=s;for(let c of t.params){if(c.grad===null)continue;let f=this._getState(c);if(e&&!a&&c.device&&c.device.type==="gpu"){f.step=(f.step||0)+1;let v=f.step,A=1-Math.pow(u,v),N=1-Math.pow(p,v);if(e(c,f,{beta1:u,beta2:p,omb1:1-u,omb2:1-p,eps:o,stepSize:r/A,bc2sqrt:Math.sqrt(N),wd:i,lr:r})){c._impl.bumpVersion();continue}}let d=c._impl.storage.data,h=c.grad._impl.storage.data,m=d.length,g=d.constructor;f.expAvg===void 0&&(f.step===void 0&&(f.step=0),f.expAvg=new g(m),f.expAvgSq=new g(m),a&&(f.maxExpAvgSq=new g(m))),f.step=f.step+1;let y=f.step,_=f.expAvg,b=f.expAvgSq,w=1-Math.pow(u,y),x=1-Math.pow(p,y),S=r/w,T=Math.sqrt(x);if(a){let v=f.maxExpAvgSq;for(let A=0;A<m;A++){let N=i!==0?h[A]+i*d[A]:h[A];_[A]=u*_[A]+(1-u)*N,b[A]=p*b[A]+(1-p)*N*N,b[A]>v[A]&&(v[A]=b[A]),d[A]-=S*_[A]/(Math.sqrt(v[A])/T+o)}}else for(let v=0;v<m;v++){let A=i!==0?h[v]+i*d[v]:h[v];_[v]=u*_[v]+(1-u)*A,b[v]=p*b[v]+(1-p)*A*A,d[v]-=S*_[v]/(Math.sqrt(b[v])/T+o)}c._impl.bumpVersion()}}}};var wd=class extends fs{static{l(this,"AdamW")}constructor(e,{lr:t=.001,betas:r=[.9,.999],eps:s=1e-8,weightDecay:o=.01,amsgrad:i=!1}={}){super(e,{lr:t,betas:[...r],eps:s,weightDecay:o,amsgrad:i})}step(){for(let e of this._paramGroups){let t=e.lr,r=e.betas,s=e.eps,o=e.weightDecay,i=e.amsgrad,[a,u]=r;for(let p of e.params){if(p.grad===null)continue;let c=p._impl.storage.data,f=p.grad._impl.storage.data,d=c.length,h=this._getState(p),m=c.constructor;h.step===void 0&&(h.step=0,h.expAvg=new m(d),h.expAvgSq=new m(d),i&&(h.maxExpAvgSq=new m(d))),h.step=h.step+1;let g=h.step,y=h.expAvg,_=h.expAvgSq,b=1-Math.pow(a,g),w=1-Math.pow(u,g),x=t/b,S=Math.sqrt(w);if(o!==0){let T=1-t*o;for(let v=0;v<d;v++)c[v]*=T}if(i){let T=h.maxExpAvgSq;for(let v=0;v<d;v++)y[v]=a*y[v]+(1-a)*f[v],_[v]=u*_[v]+(1-u)*f[v]*f[v],_[v]>T[v]&&(T[v]=_[v]),c[v]-=x*y[v]/(Math.sqrt(T[v])/S+s)}else for(let T=0;T<d;T++)y[T]=a*y[T]+(1-a)*f[T],_[T]=u*_[T]+(1-u)*f[T]*f[T],c[T]-=x*y[T]/(Math.sqrt(_[T])/S+s);p._impl.bumpVersion()}}}};var Au=class{static{l(this,"LRScheduler")}_optimizer;_baseLRs;_lastEpoch;_lastLR;constructor(e,t=-1){this._optimizer=e,this._baseLRs=e.paramGroups.map(r=>r.lr),this._lastEpoch=t,this._lastLR=null}_init(){this.step()}getLR(){throw new Error(`${this.constructor.name}.getLR() not implemented`)}getLastLR(){return this._lastLR}step(){this._lastEpoch++;let e=this.getLR();this._lastLR=e;let t=this._optimizer.paramGroups;for(let r=0;r<t.length;r++)t[r].lr=e[r]}},Td=class extends Au{static{l(this,"StepLR")}_stepSize;_gamma;constructor(e,t,r=.1,s=-1){super(e,s),this._stepSize=t,this._gamma=r,this._init()}getLR(){let e=Math.pow(this._gamma,Math.floor(this._lastEpoch/this._stepSize));return this._baseLRs.map(t=>t*e)}},xd=class extends Au{static{l(this,"CosineAnnealingLR")}_tMax;_etaMin;constructor(e,t,r=0,s=-1){super(e,s),this._tMax=t,this._etaMin=r,this._init()}getLR(){let e=(1+Math.cos(Math.PI*this._lastEpoch/this._tMax))/2;return this._baseLRs.map(t=>this._etaMin+(t-this._etaMin)*e)}},Sd=class{static{l(this,"ReduceLROnPlateau")}_optimizer;_mode;_factor;_patience;_threshold;_thresholdMode;_cooldown;_minLR;_eps;_best;_numBadEpochs;_cooldownCounter;constructor(e,{mode:t="min",factor:r=.1,patience:s=10,threshold:o=1e-4,thresholdMode:i="rel",cooldown:a=0,minLR:u=0,eps:p=1e-8}={}){this._optimizer=e,this._mode=t,this._factor=r,this._patience=s,this._threshold=o,this._thresholdMode=i,this._cooldown=a,this._minLR=u,this._eps=p,this._best=t==="min"?1/0:-1/0,this._numBadEpochs=0,this._cooldownCounter=0}step(e){if(e===void 0)throw new Error("ReduceLROnPlateau.step() requires a metric value");this._cooldownCounter>0&&(this._cooldownCounter--,this._numBadEpochs=0),this._isBetter(e)?(this._best=e,this._numBadEpochs=0):this._numBadEpochs++,this._numBadEpochs>this._patience&&(this._reduceAllLRs(),this._cooldownCounter=this._cooldown,this._numBadEpochs=0)}_isBetter(e){return this._mode==="min"?this._thresholdMode==="rel"?e<this._best*(1-this._threshold):e<this._best-this._threshold:this._thresholdMode==="rel"?e>this._best*(1+this._threshold):e>this._best+this._threshold}_reduceAllLRs(){for(let e of this._optimizer.paramGroups){let t=e.lr,r=Math.max(t*this._factor,this._minLR);t-r>this._eps&&(e.lr=r)}}};be();function vE(n){return(Array.isArray(n)?n:[...n]).filter(t=>t.grad!==null)}l(vE,"_gradParams");function vd(n,e,t=2){let r=vE(n);if(r.length===0)return 0;let s;if(t===2){let i=null;for(let a of r){let u=wt(ee(a.grad,a.grad));i=i===null?u:ae(i,u)}s=Math.sqrt(Number(i.item()))}else if(t===1/0){let i=null;for(let a of r){let u=No(Hp(a.grad));i=i===null?u:ta(i,u)}s=Number(i.item())}else{let i=null;for(let a of r){let u=wt(vo(Hp(a.grad),t));i=i===null?u:ae(i,u)}s=Math.pow(Number(i.item()),1/t)}let o=e/(s+1e-6);if(o<1)for(let i of r)i.grad=ee(i.grad,o);return s}l(vd,"clipGradNorm_");function kd(n,e){for(let t of vE(n))t.grad=Mg(t.grad,-e,e)}l(kd,"clipGradValue_");_s();Re();aw();yo();var oo="f32",Ft=l(n=>new I([n],oo),"VEC"),$c=new I([],oo);function Ms(n,e,t){return n.broadcast(e,[t],[]).getResult(0)}l(Ms,"bcast");var Fc=class extends fs{static{l(this,"FusedOptimizer")}_target;_kernels;constructor(e,t,r=null){super(e,t),this._target=r||go(),this._kernels=new Map}_kernel(e){let t=this._kernels.get(e);if(!t){let r=this._buildGraph(e);t=eC(r,this._target,{fusion:{enabled:!0}}),this._kernels.set(e,t)}return t}_buildGraph(e){throw new Error(`${this.constructor.name}._buildGraph() not implemented`)}},uw=class extends Fc{static{l(this,"FusedSGD")}constructor(e,{lr:t=.01,momentum:r=0,dampening:s=0,weightDecay:o=0,nesterov:i=!1}={},a=null){if(i&&(r===0||s!==0))throw new Error("Nesterov momentum requires momentum > 0 and dampening = 0");super(e,{lr:t,momentum:r,dampening:s,weightDecay:o,nesterov:i},a)}_buildGraph(e){let t=this._defaults.momentum,r=this._defaults.dampening,s=this._defaults.weightDecay,o=this._defaults.nesterov,i=t!==0,a=i?[Ft(e),Ft(e),Ft(e),$c]:[Ft(e),Ft(e),$c],u=i?[Ft(e),Ft(e)]:[Ft(e)];return mp("sgd_update",a,u,(c,f)=>{let d=f[0],h=f[1],m=i?f[3]:f[2],g=Ms(c,m,e),y=h;if(s!==0){let v=c.scalarConstant(s,oo).getResult(0);y=c.add(h,c.mul(Ms(c,v,e),d).getResult(0)).getResult(0)}if(!i){let v=c.sub(d,c.mul(g,y).getResult(0)).getResult(0);c.returnOp([v]);return}let _=f[2],b=Ms(c,c.scalarConstant(t,oo).getResult(0),e),w=Ms(c,c.scalarConstant(1-r,oo).getResult(0),e),x=c.add(c.mul(b,_).getResult(0),c.mul(w,y).getResult(0)).getResult(0),S=x;o&&(S=c.add(y,c.mul(b,x).getResult(0)).getResult(0));let T=c.sub(d,c.mul(g,S).getResult(0)).getResult(0);c.returnOp([T,x])})}step(){for(let e of this._paramGroups){let t=e.lr,s=e.momentum!==0,o=new Float32Array([t]);for(let i of e.params){if(i.grad===null)continue;let a=i._impl.storage.data,u=i.grad._impl.storage.data,p=a.length,c=this._kernel(p);if(s){let f=this._getState(i),d=f.momentumBuffer;d||(d=new a.constructor(p),f.momentumBuffer=d),d=d,c.run("sgd_update",a,u,d,o,a,d)}else c.run("sgd_update",a,u,o,a);i._impl.bumpVersion()}}}},lw=class extends Fc{static{l(this,"FusedAdam")}constructor(e,{lr:t=.001,betas:r=[.9,.999],eps:s=1e-8,weightDecay:o=0,amsgrad:i=!1}={},a=null){super(e,{lr:t,betas:[...r],eps:s,weightDecay:o,amsgrad:i},a)}_buildGraph(e){let t=this._defaults.betas,r=this._defaults.eps,s=this._defaults.weightDecay,o=this._defaults.amsgrad,[i,a]=t,u=o?[Ft(e),Ft(e),Ft(e),Ft(e),Ft(e),$c,$c]:[Ft(e),Ft(e),Ft(e),Ft(e),$c,$c],p=o?[Ft(e),Ft(e),Ft(e),Ft(e)]:[Ft(e),Ft(e),Ft(e)];return mp("adam_update",u,p,(c,f)=>{let d=f[0],h=f[1],m=f[2],g=f[3],y=o?f[4]:null,_=o?f[5]:f[4],b=o?f[6]:f[5],w=h;if(s!==0){let H=Ms(c,c.scalarConstant(s,oo).getResult(0),e);w=c.add(h,c.mul(H,d).getResult(0)).getResult(0)}let x=Ms(c,c.scalarConstant(i,oo).getResult(0),e),S=Ms(c,c.scalarConstant(a,oo).getResult(0),e),T=Ms(c,c.scalarConstant(1-i,oo).getResult(0),e),v=Ms(c,c.scalarConstant(1-a,oo).getResult(0),e),A=Ms(c,c.scalarConstant(r,oo).getResult(0),e),N=c.add(c.mul(x,m).getResult(0),c.mul(T,w).getResult(0)).getResult(0),k=c.mul(w,w).getResult(0),O=c.add(c.mul(S,g).getResult(0),c.mul(v,k).getResult(0)).getResult(0),R=O,B=null;o&&(B=c.maximum(y,O).getResult(0),R=B);let E=c.add(c.div(c.sqrt(R).getResult(0),Ms(c,b,e)).getResult(0),A).getResult(0),F=c.mul(Ms(c,_,e),c.div(N,E).getResult(0)).getResult(0),C=c.sub(d,F).getResult(0);c.returnOp(o?[C,N,O,B]:[C,N,O])})}step(){for(let e of this._paramGroups){let t=e.lr,r=e.betas,s=e.amsgrad,[o,i]=r;for(let a of e.params){if(a.grad===null)continue;let u=a._impl.storage.data,p=a.grad._impl.storage.data,c=u.length,f=this._getState(a);f.step===void 0&&(f.step=0,f.expAvg=new u.constructor(c),f.expAvgSq=new u.constructor(c),s&&(f.maxExpAvgSq=new u.constructor(c))),f.step=f.step+1;let d=f.step,h=1-Math.pow(o,d),m=1-Math.pow(i,d),g=new Float32Array([t/h]),y=new Float32Array([Math.sqrt(m)]),_=this._kernel(c),b=f.expAvg,w=f.expAvgSq;if(s){let x=f.maxExpAvgSq;_.run("adam_update",u,p,b,w,x,g,y,u,b,w,x)}else _.run("adam_update",u,p,b,w,g,y,u,b,w);a._impl.bumpVersion()}}}};var cw=class{static{l(this,"GradScaler")}enabled;_scale;_growthFactor;_backoffFactor;_growthInterval;_growthTracker;_foundInf;_unscaled;constructor(e={}){this.enabled=e.enabled!==!1,this._scale=e.initScale??65536,this._growthFactor=e.growthFactor??2,this._backoffFactor=e.backoffFactor??.5,this._growthInterval=e.growthInterval??2e3,this._growthTracker=0,this._foundInf=!1,this._unscaled=new WeakSet}getScale(){return this.enabled?this._scale:1}get growthTracker(){return this._growthTracker}scale(e){if(!this.enabled)return e;let t=e._impl.storage.data;for(let r=0;r<t.length;r++)t[r]*=this._scale;return e._impl.bumpVersion&&e._impl.bumpVersion(),e}unscale_(e){if(!this.enabled)return!1;let t=1/this._scale,r=!1;for(let s of e.paramGroups)for(let o of s.params){if(o.grad===null||o.grad===void 0)continue;let i=o.grad._impl.storage.data;for(let a=0;a<i.length;a++){let u=i[a]*t;Number.isFinite(u)||(r=!0),i[a]=u}}return this._unscaled.add(e),r&&(this._foundInf=!0),r}step(e){return this.enabled?(this._unscaled.has(e)||this.unscale_(e),this._foundInf?!1:(e.step(),!0)):(e.step(),!0)}update(e){this.enabled&&(e!==void 0?(this._scale=e,this._growthTracker=0):this._foundInf?(this._scale*=this._backoffFactor,this._growthTracker=0):(this._growthTracker++,this._growthTracker>=this._growthInterval&&(this._scale*=this._growthFactor,this._growthTracker=0)),this._foundInf=!1,this._unscaled=new WeakSet)}};mk();bw();yo();var $C={};at($C,{Accuracy:()=>dh,CSVLogger:()=>lh,Callback:()=>Zn,CallbackConnector:()=>jc,ConfusionMatrix:()=>yh,ConsoleLogger:()=>Du,EarlyStopping:()=>oh,EvaluationLoop:()=>Yc,F1Score:()=>gh,FitLoop:()=>Hc,GradientAccumulationScheduler:()=>uh,HOOKS:()=>yk,LearningRateMonitor:()=>ih,LightningModule:()=>th,Logger:()=>ki,LoggerConnector:()=>Uc,MeanMetric:()=>ch,Metric:()=>lr,MetricAccumulator:()=>zc,MetricCollection:()=>fh,ModelCheckpoint:()=>Ta,Precision:()=>hh,PredictionLoop:()=>Jc,ProgressCallback:()=>wa,Recall:()=>mh,SingleDeviceStrategy:()=>Gc,Stage:()=>_a,SumMetric:()=>ph,Timer:()=>ah,Trainer:()=>sh,TrainerState:()=>Vc,TrainingLoop:()=>Wc,ValidationLoop:()=>Kc,applyCheckpoint:()=>Sk,deserializeCheckpoint:()=>Sw,loadCheckpoint:()=>xk,serializeCheckpoint:()=>rh});var th=class extends ge{static{l(this,"LightningModule")}_trainer;_logBuffer;_automaticOptimization;_currentOptimizers;_device;constructor(){super(),this._trainer=null,this._logBuffer=new Map,this._automaticOptimization=!0,this._currentOptimizers=[],this._device=null}get trainer(){return this._trainer}get currentEpoch(){return this._trainer?this._trainer.state.epoch:0}get globalStep(){return this._trainer?this._trainer.state.globalStep:0}get device(){return this._device}get logger(){return this._trainer?this._trainer.logger:null}get loggers(){return this._trainer?this._trainer.loggers:[]}get automaticOptimization(){return this._automaticOptimization}set automaticOptimization(e){this._automaticOptimization=e}get optimizers(){return this._currentOptimizers}trainingStep(e,t){throw new Error(`${this.constructor.name}.trainingStep() not implemented`)}validationStep(e,t){}testStep(e,t){}predictStep(e,t){return this.forward(Array.isArray(e)&&e.length===1?e[0]:e)}configureOptimizers(){throw new Error(`${this.constructor.name}.configureOptimizers() not implemented`)}onTrainEpochStart(){}onTrainEpochEnd(){}onValidationEpochStart(){}onValidationEpochEnd(){}onTestEpochStart(){}onTestEpochEnd(){}log(e,t,{onStep:r=null,onEpoch:s=null,reduceFx:o="mean",progBar:i=!1}={}){let a=this._trainer?this._trainer.state.stage:"training",u=a==="training",p=a!=="training";this._logBuffer.set(e,{value:t,onStep:r!==null?r:u,onEpoch:s!==null?s:p,reduceFx:o,progBar:i})}logDict(e,t={}){for(let r of Object.keys(e))this.log(r,e[r],t)}manualBackward(e){this._trainer&&this._trainer.strategy?this._trainer.strategy.backward(e):e.backward()}};function AC(n){if(!n)throw new Error("configureOptimizers() returned null/undefined");if(Array.isArray(n)){let t=[],r=[];for(let s=0;s<n.length;s++){let o=n[s];nU(o)?(t.push(o.optimizer),r.push(NC(o.lrScheduler))):(t.push(o),r.push(null))}return{optimizers:t,schedulerConfigs:r}}let e=n;if(e.optimizer)return{optimizers:[e.optimizer],schedulerConfigs:[NC(e.lrScheduler)]};if(tU(n))return{optimizers:[n],schedulerConfigs:[null]};throw new Error("configureOptimizers() returned an unrecognized format")}l(AC,"parseOptimizersConfig");function NC(n){return n?"scheduler"in n&&n.scheduler?{scheduler:n.scheduler,interval:n.interval||"epoch",frequency:n.frequency||1,monitor:n.monitor||null}:OC(n)?{scheduler:n,interval:"epoch",frequency:1,monitor:null}:null:null}l(NC,"normalizeSchedulerConfig");function OC(n){return typeof n=="object"&&n!==null&&typeof n.step=="function"}l(OC,"isSchedulerLike");function tU(n){return OC(n)}l(tU,"isOptimizerLike");function nU(n){return typeof n=="object"&&n!==null&&"optimizer"in n}l(nU,"isOptimizerConfig");var _a=(o=>(o.IDLE="idle",o.TRAINING="training",o.VALIDATING="validating",o.TESTING="testing",o.PREDICTING="predicting",o))(_a||{}),rU={mean:l(n=>n.count===0?0:n.sum/n.count,"mean"),sum:l(n=>n.sum,"sum"),min:l(n=>n.min,"min"),max:l(n=>n.max,"max"),last:l(n=>n.last,"last")};function sU(){return{sum:0,count:0,min:1/0,max:-1/0,last:0}}l(sU,"createAccumulator");function oU(n,e){let t=typeof e=="number"?e:e.item();n.sum+=t,n.count+=1,t<n.min&&(n.min=t),t>n.max&&(n.max=t),n.last=t}l(oU,"updateAccumulator");var zc=class{static{l(this,"MetricAccumulator")}_accumulators;_reduceFns;constructor(){this._accumulators=new Map,this._reduceFns=new Map}update(e,t,r="mean"){this._accumulators.has(e)||(this._accumulators.set(e,sU()),this._reduceFns.set(e,r)),oU(this._accumulators.get(e),t)}compute(e){let t=this._accumulators.get(e);if(!t)return;let r=rU[this._reduceFns.get(e)];return r(t)}computeAll(){let e={};for(let[t]of this._accumulators)e[t]=this.compute(t);return e}reset(){this._accumulators.clear(),this._reduceFns.clear()}has(e){return this._accumulators.has(e)}get size(){return this._accumulators.size}},Vc=class{static{l(this,"TrainerState")}stage;epoch;globalStep;maxEpochs;maxSteps;shouldStop;stepMetrics;epochMetrics;numTrainingBatches;numValBatches;_progBarMetrics;constructor(){this.stage="idle",this.epoch=0,this.globalStep=0,this.maxEpochs=0,this.maxSteps=-1,this.shouldStop=!1,this.stepMetrics=new zc,this.epochMetrics=new zc}resetEpochMetrics(){this.epochMetrics.reset()}resetStepMetrics(){this.stepMetrics.reset()}},Gc=class{static{l(this,"SingleDeviceStrategy")}device;constructor(){this.device=null}setup(e,t){this.device=t,(t.type==="gpu"||t.type==="webgpu")&&iU(e,"to")&&e.to(t)}toDevice(e){if(!this.device||this.device.type!=="gpu"&&this.device.type!=="webgpu")return e;if(aU(e))return e.to(this.device);if(Array.isArray(e)){let t=new Array(e.length);for(let r=0;r<e.length;r++)t[r]=this.toDevice(e[r]);return t}return e}backward(e){e.backward()}optimizerStep(e){e.step()}};function iU(n,e){return typeof n=="object"&&n!==null&&typeof n[e]=="function"}l(iU,"hasMethod");function aU(n){return typeof n=="object"&&n!==null&&"device"in n&&typeof n.to=="function"}l(aU,"hasDeviceTo");var yk=(E=>(E.ON_FIT_START="onFitStart",E.ON_FIT_END="onFitEnd",E.ON_TRAIN_START="onTrainStart",E.ON_TRAIN_END="onTrainEnd",E.ON_TRAIN_EPOCH_START="onTrainEpochStart",E.ON_TRAIN_EPOCH_END="onTrainEpochEnd",E.ON_TRAIN_BATCH_START="onTrainBatchStart",E.ON_TRAIN_BATCH_END="onTrainBatchEnd",E.ON_VALIDATION_START="onValidationStart",E.ON_VALIDATION_END="onValidationEnd",E.ON_VALIDATION_EPOCH_START="onValidationEpochStart",E.ON_VALIDATION_EPOCH_END="onValidationEpochEnd",E.ON_VALIDATION_BATCH_START="onValidationBatchStart",E.ON_VALIDATION_BATCH_END="onValidationBatchEnd",E.ON_TEST_START="onTestStart",E.ON_TEST_END="onTestEnd",E.ON_TEST_BATCH_START="onTestBatchStart",E.ON_TEST_BATCH_END="onTestBatchEnd",E.ON_PREDICT_START="onPredictStart",E.ON_PREDICT_END="onPredictEnd",E.ON_PREDICT_BATCH_START="onPredictBatchStart",E.ON_PREDICT_BATCH_END="onPredictBatchEnd",E.SETUP="setup",E.TEARDOWN="teardown",E.ON_BEFORE_BACKWARD="onBeforeBackward",E.ON_AFTER_BACKWARD="onAfterBackward",E.ON_BEFORE_OPTIMIZER_STEP="onBeforeOptimizerStep",E.ON_BEFORE_ZERO_GRAD="onBeforeZeroGrad",E.ON_SAVE_CHECKPOINT="onSaveCheckpoint",E.ON_LOAD_CHECKPOINT="onLoadCheckpoint",E))(yk||{}),jc=class{static{l(this,"CallbackConnector")}_callbacks;constructor(e=[]){this._callbacks=e}get callbacks(){return this._callbacks}add(e){this._callbacks.push(e)}dispatch(e,...t){for(let r=0;r<this._callbacks.length;r++){let s=this._callbacks[r][e];typeof s=="function"&&s.apply(this._callbacks[r],t)}}remove(e){let t=this._callbacks.indexOf(e);t!==-1&&this._callbacks.splice(t,1)}},Uc=class{static{l(this,"LoggerConnector")}_loggers;_state;constructor(e=[],t){this._loggers=Array.isArray(e)?e:[e],this._state=t}drain(e){let t=e._logBuffer;if(t.size!==0){for(let[r,s]of t){let{value:o,onStep:i,onEpoch:a,reduceFx:u,progBar:p}=s;if(a&&this._state.epochMetrics.update(r,o,u),i&&this._state.stepMetrics.update(r,o,u),p){this._state._progBarMetrics||(this._state._progBarMetrics=new Map);let c=typeof o=="number"?o:o.item();this._state._progBarMetrics.set(r,c)}}t.clear()}}flushStepMetrics(e){let t=this._state.stepMetrics.computeAll();if(Object.keys(t).length===0)return t;for(let r=0;r<this._loggers.length;r++)this._loggers[r].logMetrics(t,e);return this._state.stepMetrics.reset(),t}flushEpochMetrics(e){let t=this._state.epochMetrics.computeAll();if(Object.keys(t).length===0)return t;for(let r=0;r<this._loggers.length;r++)this._loggers[r].logMetrics(t,e);return this._state.epochMetrics.reset(),t}logHyperparams(e){for(let t=0;t<this._loggers.length;t++)this._loggers[t].logHyperparams(e)}};be();fi();ou();function ba(n,e){return n==null?e:typeof n=="number"?n>0&&n<=1?Math.max(1,Math.round(n*e)):Math.min(n,e):e}l(ba,"resolveLimit");async function qc(n){let{GradMode:e}=await Promise.resolve().then(()=>(ou(),HB)),t=e.isEnabled();e.setEnabled(!1);try{await n()}finally{e.setEnabled(t)}}l(qc,"noGradAsync");var Wc=class{static{l(this,"TrainingLoop")}async run(e,t,r,s,o){let i=r.state,a=r.callbackConnector,u=r.loggerConnector,p=r.strategy,c=r.accumulateGradBatches,f=ba(r.limitTrainBatches,t.length);i.numTrainingBatches=f,i.stage="training",e.train(),Oo.setEnabled(!0),e.onTrainEpochStart(),a.dispatch("onTrainEpochStart",r,e);let d=0;for(let m of t){if(d>=f||i.shouldStop)break;if(i.maxSteps>0&&i.globalStep>=i.maxSteps){i.shouldStop=!0;break}let g=p.toDevice(m);a.dispatch("onTrainBatchStart",r,e,g,d);let y;e.automaticOptimization?y=await this._automaticStep(e,g,d,r,s,o,p,c,a):y=await Promise.resolve(e.trainingStep(g,d)),u.drain(e),i.globalStep%r.logEveryNSteps===0&&u.flushStepMetrics(i.globalStep),a.dispatch("onTrainBatchEnd",r,e,y,g,d),iT(),i.globalStep++,d++}iT();let h=u.flushEpochMetrics(i.globalStep);return this._stepEpochSchedulers(o,i.epoch),e.onTrainEpochEnd(),a.dispatch("onTrainEpochEnd",r,e),h}async _automaticStep(e,t,r,s,o,i,a,u,p){if(s.compile)return this._compiledStep(e,t,r,s,o,i,u);if(s.cudaGraph)return this._graphedStep(e,t,s,o,i,a);let c=await Promise.resolve(e.trainingStep(t,r)),f=c,d=c;if(BC(c)&&(f=c.loss,d=c),u>1&&(f=Kt(f,u)),p.dispatch("onBeforeBackward",s,e,f),a.backward(f),p.dispatch("onAfterBackward",s,e),(r+1)%u===0){for(let m=0;m<o.length;m++)this._clipGradients(e,s),p.dispatch("onBeforeOptimizerStep",s,e,o[m]),a.optimizerStep(o[m]),p.dispatch("onBeforeZeroGrad",s,e,o[m]),o[m].zeroGrad();this._stepStepSchedulers(i,s.state.globalStep)}return d}async _compiledStep(e,t,r,s,o,i,a){let u=Array.isArray(t)?t:[t],p=l((..._)=>e.trainingStep(Array.isArray(t)?_:_[0],0),"callForward"),c;if(e.__compiledTrainStep)c=e.__compiledTrainStep(...u),_k(c)&&(c=await c);else{let{compileWithBackward:_}=await Promise.resolve().then(()=>(bw(),SC)),{CPUTarget:b,CUDATarget:w,WebGPUTarget:x}=await Promise.resolve().then(()=>(yo(),t1)),S=e._device&&e._device.type,T=S==="webgpu"?x():S==="gpu"?w():b();e.__compiledTrainStep=_({forward:p},u,{target:T,mode:s.compileMode});let v=e.log;e.log=()=>{};try{c=e.__compiledTrainStep(...u),_k(c)&&(c=await c)}finally{e.log=v}}let f=e.__compiledTrainStep,d=f.capturedParams(),{ones:h}=await Promise.resolve().then(()=>(kt(),EB)),m=f.backward(h(c.shape));_k(m)&&(m=await m);let g=m,y=g.length-d.length;for(let _=0;_<d.length;_++){let b=g[y+_];b&&(d[_].grad=b)}if((r+1)%a===0){for(let _=0;_<o.length;_++)this._clipGradients(e,s),o[_].step(),o[_].zeroGrad();this._stepStepSchedulers(i,s.state.globalStep)}return e.log&&e.log("train_loss",c),c}async _eagerTrainStepCore(e,t,r,s,o){let i=await Promise.resolve(e.trainingStep(t,0)),a=i;if(BC(i)&&(a=i.loss),s.backward(a),o&&o.gradientClipVal){let{deviceClipGradNorm:u}=await Promise.resolve().then(()=>(iy(),oy));u([...e.parameters()],o.gradientClipVal)}for(let u=0;u<r.length;u++)s.optimizerStep(r[u]),r[u].zeroGrad();return a}async _graphedStep(e,t,r,s,o,i){let a=await Promise.resolve().then(()=>(ug(),gO)),u=await Promise.resolve().then(()=>(qp(),EO)),p=await Promise.resolve().then(()=>(pi(),iO)),c=e.__eagerGraphRunner;if(c||(c=e.__eagerGraphRunner={phase:"warmup",seen:0},u.setEagerDeferred(!0),Nl(!0)),c.phase==="disabled")return this._eagerTrainStepCore(e,t,s,i,r);if(c.phase==="warmup"&&c.seen<r.cudaGraphWarmupSteps)return c.seen++,this._eagerTrainStepCore(e,t,s,i,r);let f=bk(t);if(c.phase==="warmup"){c.inputs=f.map(y=>{let _=y._impl.storage.rawData;return u.deviceBufferForInput(_),u.pinResident(_),{dptr:u.deviceBufferDptr(_)}});let h=e.log,m;try{a.beginEagerCapture(),e.log=()=>{};try{m=await this._eagerTrainStepCore(e,t,s,i,r)}finally{e.log=h}c.captured=a.endEagerCapture()}catch(y){try{a.endEagerCapture()}catch{}return e.log=h,u.clearCapturePins(),c.phase="disabled",c.captureError=y&&typeof y=="object"&&"message"in y?y.message:y,this._eagerTrainStepCore(e,t,s,i,r)}c.exec=c.captured.exec,c.lossDptr=u.deviceBufferDptr(m._impl.storage.rawData),c.lossScratch=new Float32Array(1),c.phase="replay",a.replay(c.exec),a.syncStream(),p.copyDeviceToHost(c.lossScratch,c.lossDptr);let g=c.lossScratch[0];return this._logGraphLoss(r,g),this._stepStepSchedulers(o,r.state.globalStep),g}for(let h=0;h<c.inputs.length&&h<f.length;h++)c.inputs[h].dptr&&p.copyHostToDeviceAsync(c.inputs[h].dptr,f[h]._impl.storage.rawData);a.replay(c.exec),a.syncStream(),p.copyDeviceToHost(c.lossScratch,c.lossDptr);let d=c.lossScratch[0];return this._logGraphLoss(r,d),this._stepStepSchedulers(o,r.state.globalStep),d}_logGraphLoss(e,t){e.state.stepMetrics.update("train_loss",t),e.state.epochMetrics.update("train_loss",t),e.state._progBarMetrics||(e.state._progBarMetrics=new Map),e.state._progBarMetrics.set("train_loss",t)}_clipGradients(e,t){if(!t.gradientClipVal)return;let r=[...e.parameters()];t.gradientClipAlgorithm==="norm"?vd(r,t.gradientClipVal):kd(r,t.gradientClipVal)}_stepStepSchedulers(e,t){if(e)for(let r=0;r<e.length;r++){let s=e[r];!s||s.interval!=="step"||s.monitor||(t+1)%s.frequency===0&&s.scheduler.step()}}_stepEpochSchedulers(e,t){if(e)for(let r=0;r<e.length;r++){let s=e[r];!s||s.interval!=="epoch"||s.monitor||(t+1)%s.frequency===0&&s.scheduler.step()}}};function bk(n,e=[]){if(n==null)return e;if(uU(n))return e.push(n),e;if(Array.isArray(n)){for(let t of n)bk(t,e);return e}if(typeof n=="object"){let t=n;for(let r of Object.keys(t))bk(t[r],e);return e}return e}l(bk,"_flattenTensors");function _k(n){return typeof n=="object"&&n!==null&&typeof n.then=="function"}l(_k,"isThenable");function BC(n){return typeof n=="object"&&n!==null&&!("backward"in n)&&"loss"in n}l(BC,"isLossObject");function uU(n){return typeof n=="object"&&n!==null&&"shape"in n&&typeof n.contiguous=="function"}l(uU,"isFlattenTensor");var Kc=class{static{l(this,"ValidationLoop")}async run(e,t,r,s){let o=r.state,i=r.callbackConnector,a=r.loggerConnector,u=o.stage;o.stage="validating",e.eval(),e.onValidationEpochStart(),i.dispatch("onValidationStart",r,e),i.dispatch("onValidationEpochStart",r,e);let p=ba(r.limitValBatches,t.length);o.numValBatches=p;let c=0;await qc(async()=>{for(let d of t){if(c>=p)break;i.dispatch("onValidationBatchStart",r,e,d,c);let h=await Promise.resolve(e.validationStep(d,c));a.drain(e),i.dispatch("onValidationBatchEnd",r,e,h,d,c),c++}});let f=a.flushEpochMetrics(o.globalStep);return this._stepPlateauSchedulers(s,f),e.onValidationEpochEnd(),i.dispatch("onValidationEpochEnd",r,e),i.dispatch("onValidationEnd",r,e),e.train(),o.stage=u,f}_stepPlateauSchedulers(e,t){if(e)for(let r=0;r<e.length;r++){let s=e[r];if(!s||!s.monitor)continue;let o=s.scheduler;if(typeof o.step=="function"&&o.step.length>0){let i=t[s.monitor];i!==void 0&&o.step(i)}}}};var Hc=class{static{l(this,"FitLoop")}_trainingLoop;_validationLoop;constructor(){this._trainingLoop=new Wc,this._validationLoop=new Kc}get trainingLoop(){return this._trainingLoop}get validationLoop(){return this._validationLoop}async run(e,t,r,s,o,i){let a=s.state,u=s.callbackConnector;u.dispatch("onTrainStart",s,e);for(let p=0;p<a.maxEpochs&&!(a.shouldStop||a.maxSteps>0&&a.globalStep>=a.maxSteps||(a.epoch=p,a.resetEpochMetrics(),await this._trainingLoop.run(e,t,s,o,i),a.shouldStop));p++)r&&this._shouldRunValidation(p,s)&&await this._validationLoop.run(e,r,s,i);u.dispatch("onTrainEnd",s,e)}_shouldRunValidation(e,t){let r=t.checkValEveryNEpoch;return(e+1)%r===0}};var Yc=class{static{l(this,"EvaluationLoop")}async run(e,t,r){let s=r.state,o=r.callbackConnector,i=r.loggerConnector,a=s.stage;s.stage="testing",e.eval(),e.onTestEpochStart(),o.dispatch("onTestStart",r,e),o.dispatch("onTestEpochStart",r,e);let u=ba(r.limitTestBatches,t.length),p=0;await qc(async()=>{for(let f of t){if(p>=u)break;o.dispatch("onTestBatchStart",r,e,f,p);let d=await Promise.resolve(e.testStep(f,p));i.drain(e),o.dispatch("onTestBatchEnd",r,e,d,f,p),p++}});let c=i.flushEpochMetrics(s.globalStep);return e.onTestEpochEnd(),o.dispatch("onTestEpochEnd",r,e),o.dispatch("onTestEnd",r,e),e.train(),s.stage=a,c}};var Jc=class{static{l(this,"PredictionLoop")}async run(e,t,r){let s=r.state,o=r.callbackConnector,i=r.strategy,a=s.stage;s.stage="predicting",e.eval(),o.dispatch("onPredictStart",r,e);let u=[],p=ba(r.limitTestBatches,t.length),c=0;return await qc(async()=>{for(let f of t){if(c>=p)break;let d=i.toDevice(f);o.dispatch("onPredictBatchStart",r,e,d,c);let h=await Promise.resolve(e.predictStep(d,c));await r._flushEagerInference(),u.push(h),o.dispatch("onPredictBatchEnd",r,e,h,d,c),c++}}),o.dispatch("onPredictEnd",r,e),e.train(),s.stage=a,u}};var ki=class{static{l(this,"Logger")}_name;_version;constructor({name:e="default",version:t=0}={}){this._name=e,this._version=t}get name(){return this._name}get version(){return this._version}logMetrics(e,t){throw new Error(`${this.constructor.name}.logMetrics() not implemented`)}logHyperparams(e){throw new Error(`${this.constructor.name}.logHyperparams() not implemented`)}finalize(){}};var Du=class extends ki{static{l(this,"ConsoleLogger")}_logFrequency;_callCount;constructor(e={}){super(e),this._logFrequency=e.logFrequency||1,this._callCount=0}logMetrics(e,t){if(this._callCount++,this._callCount%this._logFrequency!==0)return;let r=[`[step ${t}]`],s=Object.keys(e).sort();for(let o=0;o<s.length;o++){let i=e[s[o]];r.push(`${s[o]}: ${lU(i)}`)}console.log(r.join(" | "))}logHyperparams(e){let t=["[hyperparams]"],r=Object.keys(e).sort();for(let s=0;s<r.length;s++)t.push(`${r[s]}: ${e[r[s]]}`);console.log(t.join(" | "))}};function lU(n){return typeof n!="number"||Number.isInteger(n)?String(n):Math.abs(n)<.001&&n!==0?n.toExponential(3):n.toFixed(4)}l(lU,"formatNumber");var Zn=class{static{l(this,"Callback")}setup(e,t,r){}teardown(e,t,r){}onFitStart(e,t){}onFitEnd(e,t){}onTrainStart(e,t){}onTrainEnd(e,t){}onTrainEpochStart(e,t){}onTrainEpochEnd(e,t){}onTrainBatchStart(e,t,r,s){}onTrainBatchEnd(e,t,r,s,o){}onValidationStart(e,t){}onValidationEnd(e,t){}onValidationEpochStart(e,t){}onValidationEpochEnd(e,t){}onValidationBatchStart(e,t,r,s){}onValidationBatchEnd(e,t,r,s,o){}onTestStart(e,t){}onTestEnd(e,t){}onTestBatchStart(e,t,r,s){}onTestBatchEnd(e,t,r,s,o){}onPredictStart(e,t){}onPredictEnd(e,t){}onPredictBatchStart(e,t,r,s){}onPredictBatchEnd(e,t,r,s,o){}onBeforeBackward(e,t,r){}onAfterBackward(e,t){}onBeforeOptimizerStep(e,t,r){}onBeforeZeroGrad(e,t,r){}onSaveCheckpoint(e,t,r){}onLoadCheckpoint(e,t,r){}};var cU=["\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589"];function RC(n){globalThis.process.stdout.write(n)}l(RC,"stdoutWrite");var wa=class extends Zn{static{l(this,"ProgressCallback")}_barLength;_trainBatchCount;_valBatchCount;_epochStartTime;_lastLen;_active;constructor({barLength:e=24}={}){super(),this._barLength=e,this._trainBatchCount=0,this._valBatchCount=0,this._epochStartTime=0,this._lastLen=0,this._active=!1}onTrainEpochStart(e,t){this._trainBatchCount=0,this._epochStartTime=Date.now();let r=this._trainTotal(e);r&&this._render("Epoch",e.state.epoch+1,e.state.maxEpochs,0,r,e.state)}onTrainBatchEnd(e,t,r,s,o){this._trainBatchCount++;let i=this._trainTotal(e);i&&this._render("Epoch",e.state.epoch+1,e.state.maxEpochs,this._trainBatchCount,i,e.state)}onTrainEpochEnd(e,t){let r=this._trainTotal(e);r&&this._render("Epoch",e.state.epoch+1,e.state.maxEpochs,r,r,e.state)}onTrainEnd(e,t){this._active&&RC(`
|
|
425
425
|
`),this._active=!1,this._lastLen=0}onValidationEpochStart(e,t){this._valBatchCount=0,this._epochStartTime=Date.now()}onValidationBatchEnd(e,t,r,s,o){this._valBatchCount++;let i=this._valTotal(e);i&&this._render("Validation",null,null,this._valBatchCount,i,e.state)}onValidationEnd(e,t){let r=this._valTotal(e);r&&this._render("Validation",null,null,r,r,e.state)}_trainTotal(e){return e.state.numTrainingBatches??MC(e.limitTrainBatches)}_valTotal(e){return e.state.numValBatches??MC(e.limitValBatches)}_render(e,t,r,s,o,i){let a=o>0?Math.min(s/o,1):0,u=String(Math.round(a*100)).padStart(3," "),p=this._bar(a),c=t!==null?`${e} ${t}/${r}`:e,f=(Date.now()-this._epochStartTime)/1e3,d=f>0?s/f:0,h=d>0?(o-s)/d:0,m=`${IC(f)}<${IC(h)}, ${d.toFixed(2)}it/s`,g=this._formatProgBarMetrics(i),y=`${c}: ${u}%|${p}| ${s}/${o} [${m}${g}]`,_=Math.max(0,this._lastLen-y.length);RC("\r"+y+" ".repeat(_)),this._lastLen=y.length,this._active=!0}_bar(e){let t=this._barLength,r=e*t,s=Math.floor(r),o=Math.round((r-s)*8);if(o===8&&(s+=1,o=0),s>=t)return"\u2588".repeat(t);let i=o>0?cU[o-1]:"",a=t-s-(i?1:0);return"\u2588".repeat(s)+i+" ".repeat(a)}_formatProgBarMetrics(e){let t=e._progBarMetrics;if(!t||t.size===0)return"";let r=[];for(let[s,o]of t)r.push(`${s}=${pU(o)}`);return", "+r.join(", ")}};function MC(n){return n==null?null:typeof n=="number"&&n>1?n:null}l(MC,"resolveTotal");function IC(n){(!Number.isFinite(n)||n<0)&&(n=0);let e=Math.round(n),t=Math.floor(e/60),r=e%60;return`${String(t).padStart(2,"0")}:${String(r).padStart(2,"0")}`}l(IC,"fmtTime");function pU(n){return typeof n!="number"||Number.isInteger(n)?String(n):n.toFixed(4)}l(pU,"formatNum");function Ni(...n){return n.filter(e=>e!=null&&e!=="").join("/").replace(/\/+/g,"/")}l(Ni,"joinPath");sr();os();rs();var LC="mlfw-ckpt-v1",nh=8,fU={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array};function dU(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}l(dU,"isTypedArray");function wk(n){return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}l(wk,"byteView");function hU(n){return n.constructor.name}l(hU,"typedArrayName");function mU(n){return"$buf"in n&&typeof n.$buf=="number"}l(mU,"isBufferNode");function gU(n){return"$map"in n&&Array.isArray(n.$map)}l(gU,"isMapNode");function rh(n){let e=[],t=Tw(n,e),r=0;for(let u of e)u.meta.offset=r,u.meta.length=u.bytes.length,r+=u.bytes.length;let s={format:LC,tree:t,buffers:e.map(u=>u.meta)},o=new TextEncoder().encode(JSON.stringify(s)),i=new Uint8Array(nh+o.length+r);new DataView(i.buffer).setBigUint64(0,BigInt(o.length),!0),i.set(o,nh);let a=nh+o.length;for(let u of e)i.set(u.bytes,a),a+=u.bytes.length;return i}l(rh,"serializeCheckpoint");function Sw(n){let e=n instanceof Uint8Array?n:new Uint8Array(n),t=new DataView(e.buffer,e.byteOffset,e.byteLength),r=Number(t.getBigUint64(0,!0)),s=nh+r,o=JSON.parse(new TextDecoder().decode(e.subarray(nh,s)));if(o.format!==LC)throw new Error("mlfw: unrecognized checkpoint format: "+o.format);let i=o.buffers.map(a=>yU(a,e,s));return xw(o.tree,i)}l(Sw,"deserializeCheckpoint");function Tw(n,e){if(n instanceof Ze)return EC(e,{kind:"tensor",dtype:n.dtype,shape:n.shape},wk(n._impl.storage.data));if(dU(n))return EC(e,{kind:"array",arrayType:hU(n)},wk(n));if(n instanceof Map){let t=[];for(let[r,s]of n)t.push([r,Tw(s,e)]);return{$map:t}}if(Array.isArray(n))return n.map(t=>Tw(t,e));if(n&&typeof n=="object"){let t={},r=n;for(let s of Object.keys(r))t[s]=Tw(r[s],e);return t}return n}l(Tw,"encodeNode");function EC(n,e,t){let r=n.length;return n.push({meta:e,bytes:t}),{$buf:r}}l(EC,"pushBuffer");function yU(n,e,t){let r=t+n.offset,s=e.subarray(r,r+n.length),o=n.kind==="tensor"?St(n.dtype):fU[n.arrayType],i=n.kind==="tensor"?void 0:n.arrayType;if(!o)throw new Error("mlfw: unknown typed array in checkpoint: "+i);let a=new o(n.length/o.BYTES_PER_ELEMENT);return wk(a).set(s),n.kind==="tensor"?eu(a,n.shape,n.dtype):a}l(yU,"decodeBuffer");function xw(n,e){if(n===null||typeof n!="object")return n;if(Array.isArray(n))return n.map(r=>xw(r,e));if(mU(n))return e[n.$buf];if(gU(n)){let r=new Map;for(let[s,o]of n.$map)r.set(s,xw(o,e));return r}let t={};for(let r of Object.keys(n))t[r]=xw(n[r],e);return t}l(xw,"decodeNode");var Tk=".ckpt",Ta=class extends Zn{static{l(this,"ModelCheckpoint")}_dirpath;_filename;_monitor;_mode;_saveTopK;_saveLast;_everyNEpochs;_bestK;_recent;_compareFn;_bestModelPath;_lastModelPath;constructor({dirpath:e="./lightning_logs/checkpoints",filename:t="epoch={epoch}-step={step}",monitor:r=null,mode:s="min",saveTopK:o=1,saveLast:i=!0,everyNEpochs:a=1}={}){super(),this._dirpath=e,this._filename=t,this._monitor=r,this._mode=s,this._saveTopK=o,this._saveLast=i,this._everyNEpochs=a,this._bestK=[],this._recent=[],this._compareFn=s==="min"?(u,p)=>u-p:(u,p)=>p-u,this._bestModelPath=null,this._lastModelPath=null}get bestModelPath(){return this._bestModelPath}get lastModelPath(){return this._lastModelPath}get bestKModels(){return this._bestK}onTrainEpochEnd(e,t){let r=e.state;if((r.epoch+1)%this._everyNEpochs!==0)return;this._ensureDir();let s=this._fillTemplate(r);if(this._saveLast){let c=Ni(this._dirpath,"last"+Tk);this._saveCheckpoint(t,e,c),this._lastModelPath=c}if(!this._monitor){let c=Ni(this._dirpath,s+Tk);if(this._saveCheckpoint(t,e,c),this._saveTopK>=0)for(this._recent.push(c);this._recent.length>this._saveTopK;)this._tryDelete(this._recent.shift());return}let i=r.epochMetrics.computeAll()[this._monitor];if(i===void 0)return;let a=Ni(this._dirpath,s+Tk),u={score:i,path:a};if(this._saveTopK<0){this._saveCheckpoint(t,e,a),this._bestK.push(u),this._updateBest();return}let p=this._findInsertIndex(i);if(p<this._saveTopK){if(this._saveCheckpoint(t,e,a),this._bestK.splice(p,0,u),this._bestK.length>this._saveTopK){let c=this._bestK.pop();this._tryDelete(c.path)}this._updateBest()}}_findInsertIndex(e){let t=0,r=this._bestK.length;for(;t<r;){let s=t+r>>>1;this._compareFn(e,this._bestK[s].score)<0?r=s:t=s+1}return t}_updateBest(){this._bestK.length>0&&(this._bestModelPath=this._bestK[0].path)}_saveCheckpoint(e,t,r){let s={epoch:t.state.epoch,globalStep:t.state.globalStep,modelState:e.stateDict()},o=e._currentOptimizers;o&&o.length>0&&(s.optimizerStates=o.map(a=>a.stateDict())),t.callbackConnector.dispatch("onSaveCheckpoint",t,e,s);let i=r+".tmp";vn.writeBinary(i,rh(s)),vn.rename(i,r)}_fillTemplate(e){return this._filename.replace("{epoch}",String(e.epoch)).replace("{step}",String(e.globalStep))}_ensureDir(){vn.exists(this._dirpath)||vn.mkdir(this._dirpath)}_tryDelete(e){try{vn.remove(e)}catch{}}};function xk(n){return Sw(vn.readBinary(n))}l(xk,"loadCheckpoint");function Sk(n,e,t=[]){let r=n;if(r.modelState&&e.loadStateDict(r.modelState),r.optimizerStates){let s=Math.min(t.length,r.optimizerStates.length);for(let o=0;o<s;o++)t[o].loadStateDict(r.optimizerStates[o])}return n}l(Sk,"applyCheckpoint");qn();var sh=class{static{l(this,"Trainer")}_state;_compile;_compileMode;_cudaGraph;_cudaGraphWarmupSteps;_accelerator;_precision;_gradientClipVal;_gradientClipAlgorithm;_accumulateGradBatches;_limitTrainBatches;_limitValBatches;_limitTestBatches;_valCheckInterval;_checkValEveryNEpoch;_logEveryNSteps;_deterministic;_defaultRootDir;_loggers;_strategy;_fitLoop;_evaluationLoop;_predictionLoop;_callbackConnector;_loggerConnector;_model;_webgpuMod;constructor({maxEpochs:e=10,maxSteps:t=-1,accelerator:r="auto",precision:s="f32",callbacks:o=[],logger:i=!0,enableCheckpointing:a=!1,enableProgress:u=!0,gradientClipVal:p=null,gradientClipAlgorithm:c="norm",accumulateGradBatches:f=1,limitTrainBatches:d=null,limitValBatches:h=null,limitTestBatches:m=null,valCheckInterval:g=1,checkValEveryNEpoch:y=1,logEveryNSteps:_=50,deterministic:b=!1,fastDevRun:w=!1,defaultRootDir:x="./lightning_logs",compile:S=!1,compileMode:T="separate",cudaGraph:v=!1,cudaGraphWarmupSteps:A=3}={}){if(this._state=new Vc,this._state.maxEpochs=e,this._state.maxSteps=t,this._compile=S,this._compileMode=T,this._cudaGraph=v,this._cudaGraphWarmupSteps=A,this._accelerator=r,this._precision=s,this._gradientClipVal=p,this._gradientClipAlgorithm=c,this._accumulateGradBatches=f,this._limitTrainBatches=d,this._limitValBatches=h,this._limitTestBatches=m,this._valCheckInterval=g,this._checkValEveryNEpoch=y,this._logEveryNSteps=_,this._deterministic=b,this._defaultRootDir=x,w!==!1){let k=typeof w=="number"?w:1;this._limitTrainBatches=k,this._limitValBatches=k,this._limitTestBatches=k,this._state.maxEpochs=1}this._loggers=this._resolveLoggers(i),this._strategy=new Gc,this._fitLoop=new Hc,this._evaluationLoop=new Yc,this._predictionLoop=new Jc;let N=[...o];u&&!N.some(k=>k instanceof wa)&&N.push(new wa),a&&!N.some(k=>k instanceof Ta)&&N.push(new Ta({dirpath:x})),this._callbackConnector=new jc(N),this._loggerConnector=new Uc(this._loggers,this._state),this._model=null,this._webgpuMod=null}get state(){return this._state}get strategy(){return this._strategy}get callbackConnector(){return this._callbackConnector}get loggerConnector(){return this._loggerConnector}get fitLoop(){return this._fitLoop}get gradientClipVal(){return this._gradientClipVal}get gradientClipAlgorithm(){return this._gradientClipAlgorithm}get compile(){return this._compile}get compileMode(){return this._compileMode}get cudaGraph(){return this._cudaGraph}get cudaGraphWarmupSteps(){return this._cudaGraphWarmupSteps}get accumulateGradBatches(){return this._accumulateGradBatches}set accumulateGradBatches(e){this._accumulateGradBatches=e}get limitTrainBatches(){return this._limitTrainBatches}get limitValBatches(){return this._limitValBatches}get limitTestBatches(){return this._limitTestBatches}get checkValEveryNEpoch(){return this._checkValEveryNEpoch}get logEveryNSteps(){return this._logEveryNSteps}get shouldStop(){return this._state.shouldStop}set shouldStop(e){this._state.shouldStop=e}get currentEpoch(){return this._state.epoch}get globalStep(){return this._state.globalStep}get logger(){return this._loggers[0]||null}get loggers(){return this._loggers}get callbacks(){return this._callbackConnector.callbacks}get model(){return this._model}get defaultRootDir(){return this._defaultRootDir}async fit(e,t,r=null){this._model=e,e._trainer=this;let s=this._resolveDevice();this._guardEagerWebGPU(s,"fit",r!=null),this._guardCudaGraph(s,r!=null),e._device=s,await this._prepareDevice(s),this._strategy.setup(e,s);let{optimizers:o,schedulerConfigs:i}=AC(await Promise.resolve(e.configureOptimizers()));if(this._cudaGraph&&i&&i.some(a=>a&&a.scheduler))throw new Error("Trainer(cudaGraph=true) v1 requires a constant learning rate: LR schedulers change lr, but lr is baked into the captured graph. Remove the scheduler or disable cudaGraph.");if(e._currentOptimizers=o,this._loggerConnector.logHyperparams(this._extractHyperparams(e,o)),this._callbackConnector.dispatch("setup",this,e,"training"),this._callbackConnector.dispatch("onFitStart",this,e),this._state.shouldStop=!1,await this._fitLoop.run(e,t,r,this,o,i),s===bg){let{teardownAfterFit:a}=await Promise.resolve().then(()=>(iy(),oy));a(e,o)}this._callbackConnector.dispatch("onFitEnd",this,e),this._callbackConnector.dispatch("teardown",this,e,"training");for(let a=0;a<this._loggers.length;a++)this._loggers[a].finalize()}async validate(e,t){e._trainer=this,this._model=e;let r=this._resolveDevice();this._guardEagerWebGPU(r,"validate"),e._device=r,await this._prepareDevice(r),this._strategy.setup(e,r),this._callbackConnector.dispatch("setup",this,e,"validating");let s=await this._fitLoop.validationLoop.run(e,t,this,null);this._callbackConnector.dispatch("teardown",this,e,"validating");for(let o=0;o<this._loggers.length;o++)this._loggers[o].finalize();return s}async test(e,t){e._trainer=this,this._model=e;let r=this._resolveDevice();this._guardEagerWebGPU(r,"test"),e._device=r,await this._prepareDevice(r),this._strategy.setup(e,r),this._callbackConnector.dispatch("setup",this,e,"testing");let s=await this._evaluationLoop.run(e,t,this);this._callbackConnector.dispatch("teardown",this,e,"testing");for(let o=0;o<this._loggers.length;o++)this._loggers[o].finalize();return s}async predict(e,t){e._trainer=this,this._model=e;let r=this._resolveDevice();return e._device=r,await this._prepareDevice(r),this._strategy.setup(e,r),await this._predictionLoop.run(e,t,this)}_resolveDevice(){return this._accelerator==="gpu"?bg:this._accelerator==="wasm"?RT:this._accelerator==="webgpu"?xo:this._accelerator==="cpu"?Ws:Ws}_guardEagerWebGPU(e,t,r=!1){if(e.type==="webgpu"){if(t==="fit"){if(!this._compile)throw new Error('Trainer(accelerator="webgpu"): eager WebGPU is inference-only (CUSTOM_0 dispatch has no autograd key). Pass compile=true to train on WebGPU, or use predict() for eager inference.');if(r)throw new Error(`Trainer(accelerator="webgpu"): in-fit validation is unsupported \u2014 validationStep runs eagerly and reads scalar metrics via .item(), which WebGPU's asynchronous readback cannot serve, and there is no compiled validation path. Call fit() without a valLoader on WebGPU.`);return}throw new Error(`Trainer(accelerator="webgpu"): ${t}() reads scalar metrics synchronously via .item(), which WebGPU's asynchronous readback cannot serve eagerly. Use predict() for eager WebGPU inference, or train via compile=true.`)}}_guardCudaGraph(e,t=!1){if(this._cudaGraph){if(e.type!=="gpu")throw new Error('Trainer(cudaGraph=true) requires accelerator="gpu" (eager CUDA whole-step capture/replay).');if(this._compile)throw new Error("Trainer(cudaGraph=true) is incompatible with compile=true: CUDA graph capture targets the eager training step, not the compiled path.");if(this._gradientClipVal!=null&&this._gradientClipAlgorithm!=="norm")throw new Error('Trainer(cudaGraph=true) supports gradient_clip_algorithm="norm" only; "value" clipping is not yet device-side.');if(this._accumulateGradBatches!==1)throw new Error("Trainer(cudaGraph=true) v1 requires accumulateGradBatches=1.");if(t)throw new Error("Trainer(cudaGraph=true) v1 does not support in-fit validation. Call fit() without a valLoader.")}}async _prepareDevice(e){if(e.type==="gpu"){let{preloadCudaRuntime:t}=await Promise.resolve().then(()=>(_f(),vx));await t()}else if(e.type==="webgpu"){let{preloadWebGPU:t}=await Promise.resolve().then(()=>(_f(),vx));this._webgpuMod=await t()}}async _flushEagerInference(){this._webgpuMod&&await this._webgpuMod.flushWebGPUEager()}_resolveLoggers(e){return e===!1||e===null?[]:e===!0?[new Du]:Array.isArray(e)?e:[e]}_extractHyperparams(e,t){let r={maxEpochs:this._state.maxEpochs,maxSteps:this._state.maxSteps,accelerator:this._accelerator,precision:this._precision,accumulateGradBatches:this._accumulateGradBatches};for(let s=0;s<t.length;s++){let o=t[s],i=o.defaults||{},a=t.length>1?`optimizer_${s}_`:"";r[a+"optimizer"]=o.constructor.name,i.lr!==void 0&&(r[a+"lr"]=i.lr),i.weightDecay!==void 0&&(r[a+"weight_decay"]=i.weightDecay)}return r}};var oh=class extends Zn{static{l(this,"EarlyStopping")}_monitor;_patience;_mode;_minDelta;_checkOnTrainEpochEnd;_waitCount;_bestScore;_compareFn;constructor({monitor:e="val_loss",patience:t=3,mode:r="min",minDelta:s=0,checkOnTrainEpochEnd:o=!1}={}){super(),this._monitor=e,this._patience=t,this._mode=r,this._minDelta=s,this._checkOnTrainEpochEnd=o,this._waitCount=0,this._bestScore=null,this._compareFn=r==="min"?(i,a)=>i<a-s:(i,a)=>i>a+s}get monitor(){return this._monitor}get patience(){return this._patience}get bestScore(){return this._bestScore}get waitCount(){return this._waitCount}onValidationEnd(e,t){this._checkOnTrainEpochEnd||this._check(e)}onTrainEpochEnd(e,t){this._checkOnTrainEpochEnd&&this._check(e)}_check(e){let r=e.state.epochMetrics.computeAll()[this._monitor];if(r!==void 0){if(this._bestScore===null||this._compareFn(r,this._bestScore)){this._bestScore=r,this._waitCount=0;return}this._waitCount++,this._waitCount>=this._patience&&(e.shouldStop=!0)}}reset(){this._waitCount=0,this._bestScore=null}};var ih=class extends Zn{static{l(this,"LearningRateMonitor")}_logMomentum;_lrHistory;constructor({logMomentum:e=!1}={}){super(),this._logMomentum=e,this._lrHistory={}}get lrHistory(){return this._lrHistory}onTrainBatchStart(e,t,r,s){let o=t._currentOptimizers;if(o)for(let i=0;i<o.length;i++){let a=o[i].paramGroups;for(let u=0;u<a.length;u++){let p=o.length>1||a.length>1?`lr_opt${i}_group${u}`:"lr",c=a[u].lr;if(t.log(p,c,{onStep:!0,onEpoch:!1,progBar:!1}),this._lrHistory[p]||(this._lrHistory[p]=[]),this._lrHistory[p].push({step:e.state.globalStep,lr:c}),this._logMomentum&&a[u].momentum!==void 0){let f=p.replace("lr","momentum");t.log(f,a[u].momentum,{onStep:!0,onEpoch:!1})}}}}};var ah=class extends Zn{static{l(this,"Timer")}_fitStartTime;_epochStartTime;_epochDurations;_validationDurations;_totalTrainingTime;_valStartTime;constructor(){super(),this._fitStartTime=0,this._epochStartTime=0,this._epochDurations=[],this._validationDurations=[],this._totalTrainingTime=0,this._valStartTime=0}get epochDurations(){return this._epochDurations}get validationDurations(){return this._validationDurations}get totalTrainingTime(){return this._totalTrainingTime}onFitStart(e,t){this._fitStartTime=performance.now()}onFitEnd(e,t){this._totalTrainingTime=(performance.now()-this._fitStartTime)/1e3}onTrainEpochStart(e,t){this._epochStartTime=performance.now()}onTrainEpochEnd(e,t){this._epochDurations.push((performance.now()-this._epochStartTime)/1e3)}onValidationStart(e,t){this._valStartTime=performance.now()}onValidationEnd(e,t){this._validationDurations.push((performance.now()-this._valStartTime)/1e3)}};var uh=class extends Zn{static{l(this,"GradientAccumulationScheduler")}_scheduling;_sortedEpochs;constructor({scheduling:e}){super(),this._scheduling=new Map;let t=Object.entries(e);for(let r=0;r<t.length;r++)this._scheduling.set(Number(t[r][0]),t[r][1]);this._sortedEpochs=[...this._scheduling.keys()].sort((r,s)=>r-s)}onTrainEpochStart(e,t){let r=e.state.epoch;this._scheduling.has(r)&&(e.accumulateGradBatches=this._scheduling.get(r))}getCurrentAccumulation(e){let t=1;for(let r=0;r<this._sortedEpochs.length&&this._sortedEpochs[r]<=e;r++)t=this._scheduling.get(this._sortedEpochs[r]);return t}};var lh=class extends ki{static{l(this,"CSVLogger")}_saveDir;_flushInterval;_columns;_columnSet;_buffer;_filePath;_headerWritten;_version;constructor({saveDir:e="./lightning_logs",name:t="default",version:r=null,flushInterval:s=10}={}){super({name:t,version:r||0}),this._saveDir=e,this._flushInterval=s,this._columns=[],this._columnSet=new Set,this._buffer=[],this._filePath=null,this._headerWritten=!1,this._version=r}get logDir(){let e=this._version!==null?this._version:this._resolveVersion();return Ni(this._saveDir,this._name,`version_${e}`)}logMetrics(e,t){let r={step:t},s=Object.keys(e);for(let o=0;o<s.length;o++){let i=s[o];r[i]=e[i],this._columnSet.has(i)||(this._columnSet.add(i),this._columns.push(i),this._headerWritten=!1)}this._buffer.push(r),this._buffer.length>=this._flushInterval&&this._flush()}logHyperparams(e){this._ensureDir();let t=Ni(this.logDir,"hparams.json");vn.writeFile(t,JSON.stringify(e,null,2))}finalize(){this._buffer.length>0&&this._flush()}_flush(){this._ensureDir();let e=this._getFilePath();if(!this._headerWritten){let s=["step",...this._columns].join(",");vn.writeFile(e,s+`
|
package/package.json
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slexisvn/mlfw",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.node.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
6
7
|
"exports": {
|
|
7
8
|
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
8
10
|
"browser": "./dist/index.browser.js",
|
|
9
11
|
"default": "./dist/index.node.js"
|
|
10
12
|
},
|
|
@@ -32,7 +34,7 @@
|
|
|
32
34
|
}
|
|
33
35
|
},
|
|
34
36
|
"scripts": {
|
|
35
|
-
"build": "
|
|
37
|
+
"build": "tsup",
|
|
36
38
|
"test": "vitest run --exclude '**/node_modules/**' --exclude '**/stress/**' --exclude '**/backend/cuda/**' --exclude '**/cuda-linalg.test.js' --exclude '**/backend/webgpu/**' --exclude '**/vscode-ext/**'",
|
|
37
39
|
"test:webgpu": "vitest run tests/backend/webgpu/",
|
|
38
40
|
"test:cuda": "vitest run tests/backend/cuda/ tests/linalg/cuda-linalg.test.js"
|
|
@@ -41,6 +43,7 @@
|
|
|
41
43
|
"@vitest/coverage-v8": "^4.1.8",
|
|
42
44
|
"esbuild": "^0.28.0",
|
|
43
45
|
"puppeteer-core": "^25.1.0",
|
|
46
|
+
"tsup": "^8.5.1",
|
|
44
47
|
"typescript": "^5.9.3",
|
|
45
48
|
"vitest": "^4.1.8"
|
|
46
49
|
},
|