@dxo/nn 0.0.9 → 0.0.11

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/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # @dxo/nn
1
+ # 🧱 @dxo/nn
2
2
 
3
3
  **Developer preview — API unstable (`0.0.x`).**
4
4
 
@@ -6,19 +6,19 @@ Pure TypeScript modules over `@dxo/core`.
6
6
 
7
7
  ## Contract (G3 preview)
8
8
 
9
- | Type | Behavior |
10
- |------|----------|
11
- | `Linear(in, out)` | **`y = x @ W + b` only** — no implicit ReLU |
12
- | `Relu` / `relu(x)` | Explicit nonlinearity |
13
- | `Sequential(layers)` | Chains `forward` |
14
- | `parameters()` | Collects `Tensor` fields (and nested modules) in enumeration order |
15
- | `zeroGrad()` | Calls `zeroGrad` on each parameter leaf |
16
- | `Linear.loadParameters([W, b])` | Reassign leaves after `optimizer.step` |
17
- | `Linear.state` / `loadState` | Plain `{ shape, data }` snapshots |
9
+ | Type | Behavior |
10
+ |---------------------------------|--------------------------------------------------------------------|
11
+ | `Linear(in, out)` | **`y = x @ W + b` only** — no implicit ReLU |
12
+ | `Relu` / `relu(x)` | Explicit nonlinearity |
13
+ | `Sequential(layers)` | Chains `forward` |
14
+ | `parameters()` | Collects `Tensor` fields (and nested modules) in enumeration order |
15
+ | `zeroGrad()` | Calls `zeroGrad` on each parameter leaf |
16
+ | `Linear.loadParameters([W, b])` | Reassign leaves after `optimizer.step` |
17
+ | `Linear.state` / `loadState` | Plain `{ shape, data }` snapshots |
18
18
 
19
19
  ```typescript
20
- import { Linear, Relu, Sequential } from '@dxo/nn';
21
- import { SGD } from '@dxo/optimizer';
20
+ import {Linear, Relu, Sequential} from '@dxo/nn';
21
+ import {SGD} from '@dxo/optimizer';
22
22
 
23
23
  const model = new Sequential([new Linear(2, 4), new Relu(), new Linear(4, 1)]);
24
24
  const opt = new SGD(0.05);
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export type { LinearState, TensorStateSlice } from './module.js';
2
- export { Linear, Module, Relu, relu, Sequential } from './module.js';
1
+ export type { BatchNorm2dState, Conv2dState, EmbeddingState, LayerNormState, LinearState, TensorStateSlice } from './module.js';
2
+ export { BatchNorm2d, Conv2d, Embedding, LayerNorm, Linear, MaxPool2d, Module, MultiheadAttention, Relu, relu, Sequential, TinyCnn, TinyTransformer, TransformerBlock, } from './module.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAChI,OAAO,EACH,WAAW,EACX,MAAM,EACN,SAAS,EACT,SAAS,EACT,MAAM,EACN,SAAS,EACT,MAAM,EACN,kBAAkB,EAClB,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,OAAO,EACP,eAAe,EACf,gBAAgB,GACnB,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { Linear, Module, Relu, relu, Sequential } from './module.js';
1
+ export { BatchNorm2d, Conv2d, Embedding, LayerNorm, Linear, MaxPool2d, Module, MultiheadAttention, Relu, relu, Sequential, TinyCnn, TinyTransformer, TransformerBlock, } from './module.js';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACH,WAAW,EACX,MAAM,EACN,SAAS,EACT,SAAS,EACT,MAAM,EACN,SAAS,EACT,MAAM,EACN,kBAAkB,EAClB,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,OAAO,EACP,eAAe,EACf,gBAAgB,GACnB,MAAM,aAAa,CAAC"}
package/dist/module.d.ts CHANGED
@@ -41,4 +41,163 @@ export declare class Sequential extends Module {
41
41
  constructor(layers: Module[]);
42
42
  forward(x: Tensor): Tensor;
43
43
  }
44
+ export interface EmbeddingState {
45
+ weight: TensorStateSlice;
46
+ }
47
+ /** Token embedding: `forward(indices)` gathers rows from `[vocab, dim]`. */
48
+ export declare class Embedding extends Module {
49
+ readonly numEmbeddings: number;
50
+ readonly embeddingDim: number;
51
+ weight: Tensor;
52
+ constructor(numEmbeddings: number, embeddingDim: number, opts?: {
53
+ requiresGrad?: boolean;
54
+ });
55
+ forward(indices: Tensor): Tensor;
56
+ loadParameters(params: Tensor[]): void;
57
+ state(): Promise<EmbeddingState>;
58
+ loadState(saved: EmbeddingState): void;
59
+ }
60
+ export interface LayerNormState {
61
+ weight: TensorStateSlice;
62
+ bias: TensorStateSlice;
63
+ }
64
+ /** LayerNorm over the last dimension. */
65
+ export declare class LayerNorm extends Module {
66
+ readonly normalizedShape: number;
67
+ weight: Tensor;
68
+ bias: Tensor;
69
+ constructor(normalizedShape: number, opts?: {
70
+ eps?: number;
71
+ requiresGrad?: boolean;
72
+ });
73
+ readonly eps: number;
74
+ forward(x: Tensor): Tensor;
75
+ loadParameters(params: Tensor[]): void;
76
+ state(): Promise<LayerNormState>;
77
+ loadState(saved: LayerNormState): void;
78
+ }
79
+ /**
80
+ * Causal multi-head self-attention over `[B, T, C]`.
81
+ * Head dim must divide `embedDim`.
82
+ */
83
+ export declare class MultiheadAttention extends Module {
84
+ readonly embedDim: number;
85
+ readonly numHeads: number;
86
+ qkv: Linear;
87
+ proj: Linear;
88
+ constructor(embedDim: number, numHeads: number, opts?: {
89
+ requiresGrad?: boolean;
90
+ });
91
+ readonly headDim: number;
92
+ forward(x: Tensor): Tensor;
93
+ }
94
+ /** One decoder block: LN → causal MHA → residual → LN → MLP → residual. */
95
+ export declare class TransformerBlock extends Module {
96
+ ln1: LayerNorm;
97
+ attn: MultiheadAttention;
98
+ ln2: LayerNorm;
99
+ fc1: Linear;
100
+ fc2: Linear;
101
+ constructor(embedDim: number, numHeads: number, opts?: {
102
+ requiresGrad?: boolean;
103
+ });
104
+ forward(x: Tensor): Tensor;
105
+ }
106
+ /** Tiny decoder-only LM: token + position embed → N blocks → LN → tied logits via Linear. */
107
+ export declare class TinyTransformer extends Module {
108
+ readonly vocabSize: number;
109
+ readonly maxSeqLen: number;
110
+ readonly embedDim: number;
111
+ readonly numHeads: number;
112
+ readonly numLayers: number;
113
+ tokEmbed: Embedding;
114
+ posEmbed: Embedding;
115
+ blocks: TransformerBlock[];
116
+ lnF: LayerNorm;
117
+ head: Linear;
118
+ constructor(vocabSize: number, maxSeqLen: number, embedDim: number, numHeads: number, numLayers: number, opts?: {
119
+ requiresGrad?: boolean;
120
+ });
121
+ /** `tokens` shape `[B, T]` with integer ids stored as f32. */
122
+ forward(tokens: Tensor): Tensor;
123
+ /** Flat named tensors for safetensors / checkpoint (stable keys). */
124
+ state(): Promise<Record<string, TensorStateSlice>>;
125
+ loadState(saved: Record<string, TensorStateSlice>, opts?: {
126
+ requiresGrad?: boolean;
127
+ }): void;
128
+ }
129
+ export interface Conv2dState {
130
+ weight: TensorStateSlice;
131
+ bias: TensorStateSlice;
132
+ }
133
+ /** 2D convolution NCHW / OIHW. */
134
+ export declare class Conv2d extends Module {
135
+ readonly inChannels: number;
136
+ readonly outChannels: number;
137
+ readonly kernelSize: number;
138
+ weight: Tensor;
139
+ bias: Tensor;
140
+ constructor(inChannels: number, outChannels: number, kernelSize: number, opts?: {
141
+ stride?: number;
142
+ padding?: number;
143
+ requiresGrad?: boolean;
144
+ });
145
+ readonly stride: number;
146
+ readonly padding: number;
147
+ forward(x: Tensor): Tensor;
148
+ state(): Promise<Conv2dState>;
149
+ loadState(saved: Conv2dState, opts?: {
150
+ requiresGrad?: boolean;
151
+ }): void;
152
+ }
153
+ /** Max pooling 2D NCHW. */
154
+ export declare class MaxPool2d extends Module {
155
+ readonly kernelSize: number;
156
+ constructor(kernelSize: number, opts?: {
157
+ stride?: number;
158
+ padding?: number;
159
+ });
160
+ readonly stride: number;
161
+ readonly padding: number;
162
+ forward(x: Tensor): Tensor;
163
+ }
164
+ export interface BatchNorm2dState {
165
+ weight: TensorStateSlice;
166
+ bias: TensorStateSlice;
167
+ }
168
+ /** Batch norm 2D (per-batch stats, training-style). */
169
+ export declare class BatchNorm2d extends Module {
170
+ readonly numFeatures: number;
171
+ weight: Tensor;
172
+ bias: Tensor;
173
+ constructor(numFeatures: number, opts?: {
174
+ eps?: number;
175
+ requiresGrad?: boolean;
176
+ });
177
+ readonly eps: number;
178
+ forward(x: Tensor): Tensor;
179
+ state(): Promise<BatchNorm2dState>;
180
+ loadState(saved: BatchNorm2dState, opts?: {
181
+ requiresGrad?: boolean;
182
+ }): void;
183
+ }
184
+ /** Tiny CNN: Conv → BN → ReLU → Pool → Linear. */
185
+ export declare class TinyCnn extends Module {
186
+ readonly inChannels: number;
187
+ readonly numClasses: number;
188
+ conv: Conv2d;
189
+ bn: BatchNorm2d;
190
+ pool: MaxPool2d;
191
+ fc: Linear;
192
+ constructor(inChannels: number, numClasses: number, opts?: {
193
+ channels?: number;
194
+ spatial?: number;
195
+ requiresGrad?: boolean;
196
+ });
197
+ forward(x: Tensor): Tensor;
198
+ state(): Promise<Record<string, TensorStateSlice>>;
199
+ loadState(saved: Record<string, TensorStateSlice>, opts?: {
200
+ requiresGrad?: boolean;
201
+ }): void;
202
+ }
44
203
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAiB,MAAM,WAAW,CAAC;AAE/D,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,EAAE,gBAAgB,CAAC;CAC1B;AAED,8BAAsB,MAAM;IACxB,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAEnC,UAAU,IAAI,MAAM,EAAE;IAStB,QAAQ,IAAI,IAAI;CAGnB;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtC;AAED,gCAAgC;AAChC,qBAAa,IAAK,SAAQ,MAAM;IAC5B,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAG7B;AAED;;;;GAIG;AACH,qBAAa,MAAO,SAAQ,MAAM;IAK1B,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM;IALhC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;gBAGA,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EAC5B,IAAI,GAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAO;IAUzC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAI1B,wDAAwD;IACxD,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAMhC,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAOnC,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;CAItC;AAED,qBAAa,UAAW,SAAQ,MAAM;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE;gBAAhB,MAAM,EAAE,MAAM,EAAE;IAIrC,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAO7B"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
package/dist/module.js CHANGED
@@ -1,13 +1,23 @@
1
- import { randnValues, Tensor, tensor, zeros } from '@dxo/core';
1
+ import { embedding, ones, randnValues, Tensor, tensor, zeros } from '@dxo/core';
2
2
  export class Module {
3
3
  parameters() {
4
4
  const out = [];
5
- for (const value of Object.values(this)) {
6
- if (value instanceof Tensor)
5
+ const visit = (value) => {
6
+ if (value instanceof Tensor) {
7
7
  out.push(value);
8
- if (value instanceof Module)
8
+ return;
9
+ }
10
+ if (value instanceof Module) {
9
11
  out.push(...value.parameters());
10
- }
12
+ return;
13
+ }
14
+ if (Array.isArray(value)) {
15
+ for (const item of value)
16
+ visit(item);
17
+ }
18
+ };
19
+ for (const value of Object.values(this))
20
+ visit(value);
11
21
  return out;
12
22
  }
13
23
  zeroGrad() {
@@ -45,7 +55,20 @@ export class Linear extends Module {
45
55
  this.bias = zeros([outFeatures], { requiresGrad: rg });
46
56
  }
47
57
  forward(x) {
48
- return x.matmul(this.weight).add(this.bias);
58
+ if (x.shape.length === 2) {
59
+ return x.matmul(this.weight).add(this.bias);
60
+ }
61
+ if (x.shape.length < 2) {
62
+ throw new Error(`Linear expects rank >= 2, got [${x.shape.join(',')}]`);
63
+ }
64
+ const last = x.shape[x.shape.length - 1];
65
+ if (last !== this.inFeatures) {
66
+ throw new Error(`Linear inFeatures ${this.inFeatures} != last dim ${last}`);
67
+ }
68
+ const leading = x.shape.slice(0, -1);
69
+ const flat = leading.reduce((n, d) => n * d, 1);
70
+ const y = x.reshape([flat, last]).matmul(this.weight).add(this.bias);
71
+ return y.reshape([...leading, this.outFeatures]);
49
72
  }
50
73
  /** Replace parameter leaves after an optimizer step. */
51
74
  loadParameters(params) {
@@ -79,4 +102,372 @@ export class Sequential extends Module {
79
102
  return out;
80
103
  }
81
104
  }
105
+ /** Token embedding: `forward(indices)` gathers rows from `[vocab, dim]`. */
106
+ export class Embedding extends Module {
107
+ numEmbeddings;
108
+ embeddingDim;
109
+ weight;
110
+ constructor(numEmbeddings, embeddingDim, opts = {}) {
111
+ super();
112
+ this.numEmbeddings = numEmbeddings;
113
+ this.embeddingDim = embeddingDim;
114
+ const rg = opts.requiresGrad ?? true;
115
+ const scale = Math.sqrt(1 / embeddingDim);
116
+ const raw = randnValues([numEmbeddings, embeddingDim]).map((v) => v * scale);
117
+ this.weight = tensor(raw, [numEmbeddings, embeddingDim], { requiresGrad: rg });
118
+ }
119
+ forward(indices) {
120
+ return embedding(this.weight, indices);
121
+ }
122
+ loadParameters(params) {
123
+ if (params.length < 1)
124
+ throw new Error('Embedding expects [weight]');
125
+ this.weight = params[0];
126
+ }
127
+ async state() {
128
+ return { weight: { shape: [...this.weight.shape], data: await this.weight.toArray() } };
129
+ }
130
+ loadState(saved) {
131
+ this.weight = tensor(saved.weight.data, saved.weight.shape, { requiresGrad: true });
132
+ }
133
+ }
134
+ /** LayerNorm over the last dimension. */
135
+ export class LayerNorm extends Module {
136
+ normalizedShape;
137
+ weight;
138
+ bias;
139
+ constructor(normalizedShape, opts = {}) {
140
+ super();
141
+ this.normalizedShape = normalizedShape;
142
+ const rg = opts.requiresGrad ?? true;
143
+ this.eps = opts.eps ?? 1e-5;
144
+ this.weight = ones([normalizedShape], { requiresGrad: rg });
145
+ this.bias = zeros([normalizedShape], { requiresGrad: rg });
146
+ }
147
+ eps;
148
+ forward(x) {
149
+ return x.layerNorm(this.weight, this.bias, this.eps);
150
+ }
151
+ loadParameters(params) {
152
+ if (params.length < 2)
153
+ throw new Error('LayerNorm expects [weight, bias]');
154
+ this.weight = params[0];
155
+ this.bias = params[1];
156
+ }
157
+ async state() {
158
+ return {
159
+ weight: { shape: [...this.weight.shape], data: await this.weight.toArray() },
160
+ bias: { shape: [...this.bias.shape], data: await this.bias.toArray() },
161
+ };
162
+ }
163
+ loadState(saved) {
164
+ this.weight = tensor(saved.weight.data, saved.weight.shape, { requiresGrad: true });
165
+ this.bias = tensor(saved.bias.data, saved.bias.shape, { requiresGrad: true });
166
+ }
167
+ }
168
+ /**
169
+ * Causal multi-head self-attention over `[B, T, C]`.
170
+ * Head dim must divide `embedDim`.
171
+ */
172
+ export class MultiheadAttention extends Module {
173
+ embedDim;
174
+ numHeads;
175
+ qkv;
176
+ proj;
177
+ constructor(embedDim, numHeads, opts = {}) {
178
+ super();
179
+ this.embedDim = embedDim;
180
+ this.numHeads = numHeads;
181
+ if (embedDim % numHeads !== 0) {
182
+ throw new Error(`embedDim ${embedDim} must be divisible by numHeads ${numHeads}`);
183
+ }
184
+ this.headDim = embedDim / numHeads;
185
+ this.qkv = new Linear(embedDim, embedDim * 3, opts);
186
+ this.proj = new Linear(embedDim, embedDim, opts);
187
+ }
188
+ headDim;
189
+ forward(x) {
190
+ const [b, t, c] = x.shape;
191
+ if (b === undefined || t === undefined || c === undefined || x.shape.length !== 3) {
192
+ throw new Error(`MultiheadAttention expects [B,T,C], got [${x.shape.join(',')}]`);
193
+ }
194
+ if (c !== this.embedDim) {
195
+ throw new Error(`expected embedDim ${this.embedDim}, got ${c}`);
196
+ }
197
+ const qkv = this.qkv.forward(x); // [B,T,3C]
198
+ const packed = qkv.reshape([b, t, 3, this.numHeads, this.headDim]);
199
+ // Split Q/K/V along axis 2 then move heads: [B,H,T,D]
200
+ const q = packed.narrow(2, 0, 1).reshape([b, t, this.numHeads, this.headDim]).transposeDims(1, 2);
201
+ const k = packed.narrow(2, 1, 1).reshape([b, t, this.numHeads, this.headDim]).transposeDims(1, 2);
202
+ const v = packed.narrow(2, 2, 1).reshape([b, t, this.numHeads, this.headDim]).transposeDims(1, 2);
203
+ const attn = q.scaledDotProductAttention(k, v, true); // [B,H,T,D]
204
+ const merged = attn.transposeDims(1, 2).reshape([b, t, this.embedDim]);
205
+ return this.proj.forward(merged);
206
+ }
207
+ }
208
+ /** One decoder block: LN → causal MHA → residual → LN → MLP → residual. */
209
+ export class TransformerBlock extends Module {
210
+ ln1;
211
+ attn;
212
+ ln2;
213
+ fc1;
214
+ fc2;
215
+ constructor(embedDim, numHeads, opts = {}) {
216
+ super();
217
+ this.ln1 = new LayerNorm(embedDim, opts);
218
+ this.attn = new MultiheadAttention(embedDim, numHeads, opts);
219
+ this.ln2 = new LayerNorm(embedDim, opts);
220
+ this.fc1 = new Linear(embedDim, embedDim * 4, opts);
221
+ this.fc2 = new Linear(embedDim * 4, embedDim, opts);
222
+ }
223
+ forward(x) {
224
+ const h = x.add(this.attn.forward(this.ln1.forward(x)));
225
+ const mlp = this.fc2.forward(this.fc1.forward(this.ln2.forward(h)).relu());
226
+ return h.add(mlp);
227
+ }
228
+ }
229
+ /** Tiny decoder-only LM: token + position embed → N blocks → LN → tied logits via Linear. */
230
+ export class TinyTransformer extends Module {
231
+ vocabSize;
232
+ maxSeqLen;
233
+ embedDim;
234
+ numHeads;
235
+ numLayers;
236
+ tokEmbed;
237
+ posEmbed;
238
+ blocks;
239
+ lnF;
240
+ head;
241
+ constructor(vocabSize, maxSeqLen, embedDim, numHeads, numLayers, opts = {}) {
242
+ super();
243
+ this.vocabSize = vocabSize;
244
+ this.maxSeqLen = maxSeqLen;
245
+ this.embedDim = embedDim;
246
+ this.numHeads = numHeads;
247
+ this.numLayers = numLayers;
248
+ this.tokEmbed = new Embedding(vocabSize, embedDim, opts);
249
+ this.posEmbed = new Embedding(maxSeqLen, embedDim, opts);
250
+ this.blocks = Array.from({ length: numLayers }, () => new TransformerBlock(embedDim, numHeads, opts));
251
+ this.lnF = new LayerNorm(embedDim, opts);
252
+ this.head = new Linear(embedDim, vocabSize, opts);
253
+ }
254
+ /** `tokens` shape `[B, T]` with integer ids stored as f32. */
255
+ forward(tokens) {
256
+ const [b, t] = tokens.shape;
257
+ if (b === undefined || t === undefined || tokens.shape.length !== 2) {
258
+ throw new Error(`TinyTransformer expects [B,T], got [${tokens.shape.join(',')}]`);
259
+ }
260
+ if (t > this.maxSeqLen) {
261
+ throw new Error(`seq len ${t} exceeds maxSeqLen ${this.maxSeqLen}`);
262
+ }
263
+ const posIds = tensor(Array.from({ length: b * t }, (_, i) => i % t), [b, t]);
264
+ let x = this.tokEmbed.forward(tokens).add(this.posEmbed.forward(posIds));
265
+ for (const block of this.blocks) {
266
+ x = block.forward(x);
267
+ }
268
+ return this.head.forward(this.lnF.forward(x));
269
+ }
270
+ /** Flat named tensors for safetensors / checkpoint (stable keys). */
271
+ async state() {
272
+ const out = {};
273
+ const put = async (key, t) => {
274
+ out[key] = { shape: [...t.shape], data: await t.toArray() };
275
+ };
276
+ await put('tok_embed.weight', this.tokEmbed.weight);
277
+ await put('pos_embed.weight', this.posEmbed.weight);
278
+ for (let i = 0; i < this.blocks.length; i++) {
279
+ const block = this.blocks[i];
280
+ const p = `blocks.${i}`;
281
+ await put(`${p}.ln1.weight`, block.ln1.weight);
282
+ await put(`${p}.ln1.bias`, block.ln1.bias);
283
+ await put(`${p}.attn.qkv.weight`, block.attn.qkv.weight);
284
+ await put(`${p}.attn.qkv.bias`, block.attn.qkv.bias);
285
+ await put(`${p}.attn.proj.weight`, block.attn.proj.weight);
286
+ await put(`${p}.attn.proj.bias`, block.attn.proj.bias);
287
+ await put(`${p}.ln2.weight`, block.ln2.weight);
288
+ await put(`${p}.ln2.bias`, block.ln2.bias);
289
+ await put(`${p}.fc1.weight`, block.fc1.weight);
290
+ await put(`${p}.fc1.bias`, block.fc1.bias);
291
+ await put(`${p}.fc2.weight`, block.fc2.weight);
292
+ await put(`${p}.fc2.bias`, block.fc2.bias);
293
+ }
294
+ await put('ln_f.weight', this.lnF.weight);
295
+ await put('ln_f.bias', this.lnF.bias);
296
+ await put('head.weight', this.head.weight);
297
+ await put('head.bias', this.head.bias);
298
+ return out;
299
+ }
300
+ loadState(saved, opts = {}) {
301
+ const rg = opts.requiresGrad ?? true;
302
+ const take = (key) => {
303
+ const slice = saved[key];
304
+ if (!slice)
305
+ throw new Error(`TinyTransformer.loadState: missing '${key}'`);
306
+ return tensor(slice.data, slice.shape, { requiresGrad: rg });
307
+ };
308
+ this.tokEmbed.weight = take('tok_embed.weight');
309
+ this.posEmbed.weight = take('pos_embed.weight');
310
+ for (let i = 0; i < this.blocks.length; i++) {
311
+ const block = this.blocks[i];
312
+ const p = `blocks.${i}`;
313
+ block.ln1.weight = take(`${p}.ln1.weight`);
314
+ block.ln1.bias = take(`${p}.ln1.bias`);
315
+ block.attn.qkv.weight = take(`${p}.attn.qkv.weight`);
316
+ block.attn.qkv.bias = take(`${p}.attn.qkv.bias`);
317
+ block.attn.proj.weight = take(`${p}.attn.proj.weight`);
318
+ block.attn.proj.bias = take(`${p}.attn.proj.bias`);
319
+ block.ln2.weight = take(`${p}.ln2.weight`);
320
+ block.ln2.bias = take(`${p}.ln2.bias`);
321
+ block.fc1.weight = take(`${p}.fc1.weight`);
322
+ block.fc1.bias = take(`${p}.fc1.bias`);
323
+ block.fc2.weight = take(`${p}.fc2.weight`);
324
+ block.fc2.bias = take(`${p}.fc2.bias`);
325
+ }
326
+ this.lnF.weight = take('ln_f.weight');
327
+ this.lnF.bias = take('ln_f.bias');
328
+ this.head.weight = take('head.weight');
329
+ this.head.bias = take('head.bias');
330
+ }
331
+ }
332
+ /** 2D convolution NCHW / OIHW. */
333
+ export class Conv2d extends Module {
334
+ inChannels;
335
+ outChannels;
336
+ kernelSize;
337
+ weight;
338
+ bias;
339
+ constructor(inChannels, outChannels, kernelSize, opts = {}) {
340
+ super();
341
+ this.inChannels = inChannels;
342
+ this.outChannels = outChannels;
343
+ this.kernelSize = kernelSize;
344
+ this.stride = opts.stride ?? 1;
345
+ this.padding = opts.padding ?? 0;
346
+ const rg = opts.requiresGrad ?? true;
347
+ const fanIn = inChannels * kernelSize * kernelSize;
348
+ const scale = Math.sqrt(2 / fanIn);
349
+ const n = outChannels * inChannels * kernelSize * kernelSize;
350
+ const raw = randnValues([n]).map((v) => v * scale);
351
+ this.weight = tensor(raw, [outChannels, inChannels, kernelSize, kernelSize], { requiresGrad: rg });
352
+ this.bias = zeros([outChannels], { requiresGrad: rg });
353
+ }
354
+ stride;
355
+ padding;
356
+ forward(x) {
357
+ return x.conv2d(this.weight, this.bias, this.stride, this.padding);
358
+ }
359
+ async state() {
360
+ return {
361
+ weight: { shape: [...this.weight.shape], data: await this.weight.toArray() },
362
+ bias: { shape: [...this.bias.shape], data: await this.bias.toArray() },
363
+ };
364
+ }
365
+ loadState(saved, opts = {}) {
366
+ const rg = opts.requiresGrad ?? true;
367
+ this.weight = tensor(saved.weight.data, saved.weight.shape, { requiresGrad: rg });
368
+ this.bias = tensor(saved.bias.data, saved.bias.shape, { requiresGrad: rg });
369
+ }
370
+ }
371
+ /** Max pooling 2D NCHW. */
372
+ export class MaxPool2d extends Module {
373
+ kernelSize;
374
+ constructor(kernelSize, opts = {}) {
375
+ super();
376
+ this.kernelSize = kernelSize;
377
+ this.stride = opts.stride ?? kernelSize;
378
+ this.padding = opts.padding ?? 0;
379
+ }
380
+ stride;
381
+ padding;
382
+ forward(x) {
383
+ return x.maxPool2d(this.kernelSize, this.stride, this.padding);
384
+ }
385
+ }
386
+ /** Batch norm 2D (per-batch stats, training-style). */
387
+ export class BatchNorm2d extends Module {
388
+ numFeatures;
389
+ weight;
390
+ bias;
391
+ constructor(numFeatures, opts = {}) {
392
+ super();
393
+ this.numFeatures = numFeatures;
394
+ this.eps = opts.eps ?? 1e-5;
395
+ const rg = opts.requiresGrad ?? true;
396
+ this.weight = ones([numFeatures], { requiresGrad: rg });
397
+ this.bias = zeros([numFeatures], { requiresGrad: rg });
398
+ }
399
+ eps;
400
+ forward(x) {
401
+ return x.batchNorm2d(this.weight, this.bias, this.eps);
402
+ }
403
+ async state() {
404
+ return {
405
+ weight: { shape: [...this.weight.shape], data: await this.weight.toArray() },
406
+ bias: { shape: [...this.bias.shape], data: await this.bias.toArray() },
407
+ };
408
+ }
409
+ loadState(saved, opts = {}) {
410
+ const rg = opts.requiresGrad ?? true;
411
+ this.weight = tensor(saved.weight.data, saved.weight.shape, { requiresGrad: rg });
412
+ this.bias = tensor(saved.bias.data, saved.bias.shape, { requiresGrad: rg });
413
+ }
414
+ }
415
+ /** Tiny CNN: Conv → BN → ReLU → Pool → Linear. */
416
+ export class TinyCnn extends Module {
417
+ inChannels;
418
+ numClasses;
419
+ conv;
420
+ bn;
421
+ pool;
422
+ fc;
423
+ constructor(inChannels, numClasses, opts = {}) {
424
+ super();
425
+ this.inChannels = inChannels;
426
+ this.numClasses = numClasses;
427
+ const ch = opts.channels ?? 4;
428
+ const spatial = opts.spatial ?? 8;
429
+ const rg = opts.requiresGrad ?? true;
430
+ this.conv = new Conv2d(inChannels, ch, 3, { padding: 1, requiresGrad: rg });
431
+ this.bn = new BatchNorm2d(ch, { requiresGrad: rg });
432
+ this.pool = new MaxPool2d(2);
433
+ const flat = ch * Math.floor(spatial / 2) * Math.floor(spatial / 2);
434
+ this.fc = new Linear(flat, numClasses, { requiresGrad: rg });
435
+ }
436
+ forward(x) {
437
+ let h = this.conv.forward(x);
438
+ h = this.bn.forward(h);
439
+ h = relu(h);
440
+ h = this.pool.forward(h);
441
+ const n = h.shape[0];
442
+ return this.fc.forward(h.reshape([n, h.numel() / n]));
443
+ }
444
+ async state() {
445
+ const c = await this.conv.state();
446
+ const b = await this.bn.state();
447
+ const f = await this.fc.state();
448
+ return {
449
+ 'conv.weight': c.weight,
450
+ 'conv.bias': c.bias,
451
+ 'bn.weight': b.weight,
452
+ 'bn.bias': b.bias,
453
+ 'fc.weight': f.weight,
454
+ 'fc.bias': f.bias,
455
+ };
456
+ }
457
+ loadState(saved, opts = {}) {
458
+ const rg = opts.requiresGrad ?? true;
459
+ const take = (k) => {
460
+ const t = saved[k];
461
+ if (!t)
462
+ throw new Error(`TinyCnn missing state key ${k}`);
463
+ return tensor(t.data, t.shape, { requiresGrad: rg });
464
+ };
465
+ this.conv.weight = take('conv.weight');
466
+ this.conv.bias = take('conv.bias');
467
+ this.bn.weight = take('bn.weight');
468
+ this.bn.bias = take('bn.bias');
469
+ this.fc.weight = take('fc.weight');
470
+ this.fc.bias = take('fc.bias');
471
+ }
472
+ }
82
473
  //# sourceMappingURL=module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@dxo/nn",
3
- "version": "0.0.9",
3
+ "version": "0.0.11",
4
4
  "type": "module",
5
5
  "description": "DXO neural modules over @dxo/core (developer preview, API unstable)",
6
- "license": "MIT OR Apache-2.0",
6
+ "license": "Apache-2.0",
7
7
  "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
9
  "exports": {
@@ -21,18 +21,24 @@
21
21
  "test:forward": "tsx ../../../scripts/test/nn-forward.ts"
22
22
  },
23
23
  "dependencies": {
24
- "@dxo/core": "0.0.9"
24
+ "@dxo/core": "0.0.11"
25
25
  },
26
26
  "keywords": [
27
27
  "dxo",
28
28
  "neural-network",
29
- "typescript"
29
+ "typescript",
30
+ "deep-learning"
30
31
  ],
31
- "publishConfig": {
32
- "access": "public"
33
- },
32
+ "homepage": "https://github.com/ai4waifu/dxo-framework#readme",
34
33
  "repository": {
35
34
  "type": "git",
36
- "url": "git+https://github.com/ai4waifu/dxo-framework.git"
35
+ "url": "https://github.com/ai4waifu/dxo-framework.git",
36
+ "directory": "projects/runtimes/dxo-nn"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/ai4waifu/dxo-framework/issues"
40
+ },
41
+ "publishConfig": {
42
+ "access": "public"
37
43
  }
38
44
  }