/** * mamba3_block.ts – Mamba-3 Mixer Block (Complex-valued MIMO SSM, inference-first). * * Three improvements over Mamba-2: * 1. Complex-valued states — h ∈ ℂ^(N/2), stored as interleaved f32 pairs * 2. MIMO recurrence — G×G block recurrence per head (default G=1 = SISO) * 3. ET discretisation — B_bar = (A_bar − 1)·A⁻¹·B (exact, not approx) * * Weight shapes vs Mamba-2 (same 9 tensors, different A_log shape): * wInProj : (D + 2*G*N_c*2 + H, dModel) where N_c = dState (complex count) * wConv : (D + 2*G*N_c*2, K) * bConv : (D + 2*G*N_c*2,) * A_log : (H, 2) ← [log|A|, arg(A)] per head * dt_bias : (H,) * D_vec : (H,) * wOutProj : (dModel, D) * normWeight : (D,) * preNormWeight: (dModel,) * * Implements SequenceLayer. */ import type { Mamba2BlockConfig } from './mamba2_block.js'; import type { SequenceLayer, LayerForwardResult, LayerParam } from './sequence_layer.js'; export interface Mamba3BlockConfig extends Mamba2BlockConfig { /** MIMO group size G. Default 1 = SISO (same as Mamba-2). */ mimoGroup?: number; } export interface Mamba3Cache { stateCarry: GPUBuffer; } export declare class Mamba3Block implements SequenceLayer { readonly layerType: "mamba3"; device: GPUDevice; config: Required; dInner: number; dHead: number; /** Complex state count per head (N_c = dState in config). */ nComplex: number; gpuWeights: Record; pipelines: Record; private _wslaMode; constructor(device: GPUDevice, config: Mamba3BlockConfig); private _initWeights; private _buildPipelines; forward(xBuf: GPUBuffer, batch: number, seqLen: number): LayerForwardResult; parameters(): LayerParam[]; getTrainableParams(): LayerParam[]; setWSLAMode(enabled: boolean): void; destroy(): void; } //# sourceMappingURL=mamba3_block.d.ts.map