From ac3670ab36c9b7181f6e751f285eb5248b085ff6 Mon Sep 17 00:00:00 2001 From: Mason Corey Date: Mon, 20 Jul 2026 14:29:49 -0700 Subject: [PATCH 01/12] Integrate Sortformer diarization into generic build_from_nemo pipeline Wire the NeMo Sortformer speaker-diarization model into mobius's central build_from_nemo loader instead of a bespoke build_sortformer entry point. - Register SortformerDiarizationModel under model_type 'sortformer' with the 'diarization' task in _registry.py. - Export SortformerConfig/SortformerDiarizationModel from models/__init__.py and DiarizationTask from tasks/__init__.py (TASK_REGISTRY 'diarization'). - Map the NeMo SortformerEncLabelModel target to model_type 'sortformer' and dispatch nemo_to_config to SortformerConfig.from_nemo_yaml before the FastConformer-RNNT encoder validation. - Add model_type field to SortformerConfig so the generic pipeline can resolve the model class and task from config.model_type. - Re-add graph-build unit tests and rewrite the integration test to use build_from_nemo. Verified: build_from_nemo output matches the NeMo golden reference (max abs diff 1.15e-7); 5 graph tests pass; ruff clean. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Mason Corey --- src/mobius/_registry.py | 2 + .../integrations/nemo/_config_mapping.py | 17 +- src/mobius/models/__init__.py | 3 + src/mobius/models/sortformer.py | 664 ++++++++++++++++++ src/mobius/tasks/__init__.py | 3 + src/mobius/tasks/_diarization.py | 48 ++ tests/build_graph_test.py | 119 ++++ tests/sortformer_integration_test.py | 84 +++ 8 files changed, 938 insertions(+), 2 deletions(-) create mode 100644 src/mobius/models/sortformer.py create mode 100644 src/mobius/tasks/_diarization.py create mode 100644 tests/sortformer_integration_test.py diff --git a/src/mobius/_registry.py b/src/mobius/_registry.py index d9fe9ef7b..094b8fe36 100644 --- a/src/mobius/_registry.py +++ b/src/mobius/_registry.py @@ -92,6 +92,7 @@ Qwen35VLTextModel, QwenCausalLMModel, SmolLM3CausalLMModel, + SortformerDiarizationModel, WhisperForConditionalGeneration, ) from mobius.models.bamba import BambaCausalLMModel @@ -757,6 +758,7 @@ def _detect_fallback_registration(hf_config) -> ModelRegistration | None: "wavlm": ModelRegistration(Wav2Vec2Model, task="audio-feature-extraction"), "mms": ModelRegistration(Wav2Vec2ForCTCModel, task="ctc-asr", config_class=MMSConfig), "fastconformer_rnnt": ModelRegistration(EncDecRNNTModel, task="fastconformer-rnnt"), + "sortformer": ModelRegistration(SortformerDiarizationModel, task="diarization"), } diff --git a/src/mobius/integrations/nemo/_config_mapping.py b/src/mobius/integrations/nemo/_config_mapping.py index e0513708d..1cf38aacf 100644 --- a/src/mobius/integrations/nemo/_config_mapping.py +++ b/src/mobius/integrations/nemo/_config_mapping.py @@ -20,11 +20,13 @@ from typing import Any from mobius._configs import ArchitectureConfig +from mobius._configs._base import BaseModelConfig # NeMo ``target`` class path → mobius registry model_type. NEMO_TARGET_TO_MODEL_TYPE: dict[str, str] = { "nemo.collections.asr.models.rnnt_bpe_models.EncDecRNNTBPEModel": "fastconformer_rnnt", "nemo.collections.asr.models.rnnt_models.EncDecRNNTModel": "fastconformer_rnnt", + "nemo.collections.asr.models.sortformer_diar_models.SortformerEncLabelModel": "sortformer", } @@ -85,11 +87,22 @@ def _validate_encoder(enc: dict[str, Any]) -> None: ) -def nemo_to_config(nemo_config: dict[str, Any]) -> ArchitectureConfig: - """Build an :class:`ArchitectureConfig` from a NeMo ``model_config.yaml`` dict.""" +def nemo_to_config(nemo_config: dict[str, Any]) -> BaseModelConfig: + """Build a mobius config from a NeMo ``model_config.yaml`` dict. + + Dispatches on the NeMo ``target`` class path: FastConformer-RNNT models + produce an :class:`ArchitectureConfig`; Sortformer diarization models + produce a :class:`SortformerConfig`. + """ target = str(nemo_config.get("target", "")) model_type = nemo_model_type(target) + if model_type == "sortformer": + # Imported lazily to avoid a models→integrations import cycle. + from mobius.models.sortformer import SortformerConfig + + return SortformerConfig.from_nemo_yaml(nemo_config) + enc = nemo_config["encoder"] dec = nemo_config["decoder"] joint = nemo_config["joint"] diff --git a/src/mobius/models/__init__.py b/src/mobius/models/__init__.py index 49c94dd1d..f0bcce089 100644 --- a/src/mobius/models/__init__.py +++ b/src/mobius/models/__init__.py @@ -111,6 +111,8 @@ "Qwen3CausalLMModel", "Qwen3NextCausalLMModel", "SenseVoiceSmallModel", + "SortformerConfig", + "SortformerDiarizationModel", "Qwen3TTSCodePredictorModel", "Qwen3TTSCodecDecoderModel", "Qwen3TTSCodecEncoderModel", @@ -277,6 +279,7 @@ Qwen25VLVisionEncoderModel, ) from mobius.models.sensevoice_small import SenseVoiceSmallModel +from mobius.models.sortformer import SortformerConfig, SortformerDiarizationModel from mobius.models.smollm import SmolLM3CausalLMModel from mobius.models.starcoder2 import StarCoder2CausalLMModel from mobius.models.t5 import T5ForConditionalGeneration diff --git a/src/mobius/models/sortformer.py b/src/mobius/models/sortformer.py new file mode 100644 index 000000000..f820fd713 --- /dev/null +++ b/src/mobius/models/sortformer.py @@ -0,0 +1,664 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +"""Streaming Sortformer speaker-diarization model (NVIDIA NeMo). + +Replicates the offline forward pass of NeMo's +``SortformerEncLabelModel`` (e.g. ``nvidia/diar_streaming_sortformer_4spk``). +The exported ONNX graph consumes a mel-spectrogram feature sequence and +produces per-frame speaker-activity probabilities. + +Pipeline (matching ``frontend_encoder`` + ``forward_infer`` in +``nemo.collections.asr.models.sortformer_diar_models``): + + input_features [B, feat, T_mel] + -> transpose [B, T_mel, feat] + -> FastConformer encoder [B, T, fc_d_model] (T = T_mel / 8) + -> encoder_proj (Linear) [B, T, tf_d_model] + -> Transformer encoder (post-LN) [B, T, tf_d_model] + -> speaker sigmoid head [B, T, num_spks] + +The FastConformer encoder is NeMo's ``ConformerEncoder`` with +``self_attention_model='rel_pos'`` (Transformer-XL relative positional +attention), ``dw_striding`` conv subsampling (8x), Macaron feed-forward +blocks, and a batch-norm convolution module. The Transformer encoder is +NeMo's post-LayerNorm ``TransformerEncoder``. + +Only the offline (non-streaming) network is exported; the streaming +speaker-cache / FIFO bookkeeping is runtime state management outside the +static graph. +""" + +from __future__ import annotations + +import dataclasses +import math +from typing import TYPE_CHECKING + +import numpy as np +import onnx_ir as ir +from onnxscript import OpBuilder, nn + +from mobius._configs import BaseModelConfig +from mobius.components import LayerNorm, Linear + +if TYPE_CHECKING: # pragma: no cover - typing only + import torch + +# Slice "end" sentinel meaning "to the end of the axis". +_INT64_MAX = 9223372036854775807 + + +# --------------------------------------------------------------------------- +# Configuration +# --------------------------------------------------------------------------- + + +@dataclasses.dataclass +class SortformerConfig(BaseModelConfig): + """Configuration for the Sortformer diarization model. + + Fields mirror the NeMo ``.nemo`` ``model_config.yaml`` (``encoder``, + ``transformer_encoder`` and ``sortformer_modules`` sections). + """ + + # Mel feature dimension (preprocessor ``features``). + feat_in: int = 128 + # FastConformer encoder. + fc_d_model: int = 512 + fc_num_layers: int = 17 + fc_num_heads: int = 8 + fc_ff_expansion: int = 4 + fc_conv_kernel: int = 9 + fc_subsampling_conv_channels: int = 256 + fc_subsampling_factor: int = 8 + # Transformer encoder (operates on projected embeddings). + tf_d_model: int = 192 + tf_num_layers: int = 18 + tf_num_heads: int = 8 + tf_inner_size: int = 768 + tf_hidden_act: str = "relu" + # Diarization head. + num_spks: int = 4 + + # HuggingFace/registry model_type — consumed by the generic + # ``build_from_nemo`` pipeline to resolve the model class and task. + model_type: str | None = "sortformer" + + def validate(self) -> None: + if self.fc_d_model % self.fc_num_heads != 0: + raise ValueError("fc_d_model must be divisible by fc_num_heads") + if self.tf_d_model % self.tf_num_heads != 0: + raise ValueError("tf_d_model must be divisible by tf_num_heads") + + @classmethod + def from_nemo_yaml(cls, cfg: dict) -> SortformerConfig: + """Build a config from a parsed NeMo ``model_config.yaml`` mapping.""" + enc = cfg.get("encoder", {}) + tf = cfg.get("transformer_encoder", {}) + pre = cfg.get("preprocessor", {}) + return cls( + feat_in=int(enc.get("feat_in", pre.get("features", 128))), + fc_d_model=int(enc.get("d_model", 512)), + fc_num_layers=int(enc.get("n_layers", 17)), + fc_num_heads=int(enc.get("n_heads", 8)), + fc_ff_expansion=int(enc.get("ff_expansion_factor", 4)), + fc_conv_kernel=int(enc.get("conv_kernel_size", 9)), + fc_subsampling_conv_channels=int(enc.get("subsampling_conv_channels", 256)), + fc_subsampling_factor=int(enc.get("subsampling_factor", 8)), + tf_d_model=int(tf.get("hidden_size", 192)), + tf_num_layers=int(tf.get("num_layers", 18)), + tf_num_heads=int(tf.get("num_attention_heads", 8)), + tf_inner_size=int(tf.get("inner_size", 768)), + tf_hidden_act=str(tf.get("hidden_act", "relu")), + num_spks=int(cfg.get("max_num_of_spks", 4)), + model_type="sortformer", + ) + + +# --------------------------------------------------------------------------- +# Low-level ONNX helpers +# --------------------------------------------------------------------------- + + +class _Conv1d(nn.Module): + """Conv1d with explicit (possibly grouped) weight and bias. + + Stores ``weight``/``bias`` so parameter names match NeMo's + ``nn.Conv1d`` layers (e.g. ``conv.pointwise_conv1.weight``). + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + kernel_size: int, + *, + padding: int = 0, + groups: int = 1, + ): + super().__init__() + self.weight = nn.Parameter([out_channels, in_channels // groups, kernel_size]) + self.bias = nn.Parameter([out_channels]) + self._kernel_size = kernel_size + self._padding = padding + self._groups = groups + + def forward(self, op: OpBuilder, x: ir.Value) -> ir.Value: + return op.Conv( + x, + self.weight, + self.bias, + kernel_shape=[self._kernel_size], + strides=[1], + pads=[self._padding, self._padding], + group=self._groups, + ) + + +class _Conv2d(nn.Module): + """Conv2d with weight + bias (used by the dw_striding subsampling).""" + + def __init__( + self, + in_channels: int, + out_channels: int, + kernel_size: int, + *, + stride: int = 1, + padding: int = 0, + groups: int = 1, + ): + super().__init__() + self.weight = nn.Parameter( + [out_channels, in_channels // groups, kernel_size, kernel_size] + ) + self.bias = nn.Parameter([out_channels]) + self._kernel_size = kernel_size + self._stride = stride + self._padding = padding + self._groups = groups + + def forward(self, op: OpBuilder, x: ir.Value) -> ir.Value: + p = self._padding + return op.Conv( + x, + self.weight, + self.bias, + kernel_shape=[self._kernel_size, self._kernel_size], + strides=[self._stride, self._stride], + pads=[p, p, p, p], + group=self._groups, + ) + + +class _BatchNorm1d(nn.Module): + """1D batch normalization with frozen running statistics (inference).""" + + def __init__(self, num_features: int, eps: float = 1e-5): + super().__init__() + self.weight = nn.Parameter([num_features]) + self.bias = nn.Parameter([num_features]) + self.running_mean = nn.Parameter([num_features]) + self.running_var = nn.Parameter([num_features]) + self._eps = eps + + def forward(self, op: OpBuilder, x: ir.Value) -> ir.Value: + # x: [B, C, T] + return op.BatchNormalization( + x, + self.weight, + self.bias, + self.running_mean, + self.running_var, + epsilon=self._eps, + ) + + +class _ReLU(nn.Module): + """ReLU activation as a module (used inside the subsampling ModuleList).""" + + def forward(self, op: OpBuilder, x: ir.Value) -> ir.Value: + return op.Relu(x) + + +# --------------------------------------------------------------------------- +# FastConformer subsampling (NeMo ``dw_striding``) +# --------------------------------------------------------------------------- + + +class _ConvSubsampling(nn.Module): + """NeMo ``dw_striding`` conv subsampling (8x time reduction). + + Three stride-2 stages: a regular Conv2d followed by two + depthwise-separable (depthwise + pointwise) stages, each with a ReLU. + A final Linear projects the flattened channel/frequency axis to + ``feat_out``. The ``conv`` ModuleList indices match NeMo's + ``pre_encode.conv.{0,2,3,5,6}`` weight names. + + Input: ``[B, T_mel, feat_in]`` + Output: ``[B, ceil(T_mel / 8), feat_out]`` + """ + + def __init__(self, feat_in: int, conv_channels: int, feat_out: int): + super().__init__() + # Frequency dimension after three stride-2, pad-1, kernel-3 convs. + freq = feat_in + for _ in range(3): + freq = (freq + 2 - 3) // 2 + 1 + + c = conv_channels + self.conv = nn.ModuleList( + [ + _Conv2d(1, c, 3, stride=2, padding=1), # 0: regular + _ReLU(), # 1 + _Conv2d(c, c, 3, stride=2, padding=1, groups=c), # 2: depthwise + _Conv2d(c, c, 1), # 3: pointwise + _ReLU(), # 4 + _Conv2d(c, c, 3, stride=2, padding=1, groups=c), # 5: depthwise + _Conv2d(c, c, 1), # 6: pointwise + _ReLU(), # 7 + ] + ) + self.out = Linear(conv_channels * freq, feat_out) + + def forward(self, op: OpBuilder, x: ir.Value) -> ir.Value: + # x: [B, T_mel, feat_in] -> add channel dim -> [B, 1, T_mel, feat_in] + x = op.Unsqueeze(x, [1]) + for layer in self.conv: + x = layer(op, x) + # [B, C, T', F'] -> [B, T', C, F'] -> [B, T', C * F'] + x = op.Transpose(x, perm=[0, 2, 1, 3]) + x = op.Reshape(x, [0, 0, -1]) + return self.out(op, x) + + +# --------------------------------------------------------------------------- +# FastConformer conformer block (rel_pos attention) +# --------------------------------------------------------------------------- + + +class _ConformerFeedForward(nn.Module): + """Conformer feed-forward: Linear -> Swish -> Linear.""" + + def __init__(self, d_model: int, d_ff: int): + super().__init__() + self.linear1 = Linear(d_model, d_ff) + self.linear2 = Linear(d_ff, d_model) + + def forward(self, op: OpBuilder, x: ir.Value) -> ir.Value: + # Swish / SiLU (opset-24 op): x * sigmoid(x). + return self.linear2(op, op.Swish(self.linear1(op, x))) + + +class _ConformerConvolution(nn.Module): + """Conformer convolution module (GLU + depthwise + batch-norm + Swish). + + Structure (channels-first internally): + pointwise_conv1 (C -> 2C) -> GLU -> depthwise_conv (k, groups=C) + -> batch_norm -> Swish -> pointwise_conv2 (C -> C) + """ + + def __init__(self, d_model: int, kernel_size: int): + super().__init__() + assert (kernel_size - 1) % 2 == 0 + pad = (kernel_size - 1) // 2 + self.pointwise_conv1 = _Conv1d(d_model, d_model * 2, 1) + self.depthwise_conv = _Conv1d( + d_model, d_model, kernel_size, padding=pad, groups=d_model + ) + self.batch_norm = _BatchNorm1d(d_model) + self.pointwise_conv2 = _Conv1d(d_model, d_model, 1) + + def forward(self, op: OpBuilder, x: ir.Value) -> ir.Value: + # x: [B, T, C] -> [B, C, T] + x = op.Transpose(x, perm=[0, 2, 1]) + x = self.pointwise_conv1(op, x) # [B, 2C, T] + # GLU over the channel axis: first * sigmoid(second) + first, second = op.Split(x, axis=1, num_outputs=2, _outputs=2) + x = op.Mul(first, op.Sigmoid(second)) + x = self.depthwise_conv(op, x) + x = self.batch_norm(op, x) + x = op.Swish(x) # Swish / SiLU (opset-24 op) + x = self.pointwise_conv2(op, x) + return op.Transpose(x, perm=[0, 2, 1]) # [B, T, C] + + +class _RelPositionMultiHeadAttention(nn.Module): + """Transformer-XL relative-position multi-head attention (NeMo rel_pos). + + Computes ``scores = (matrix_ac + rel_shift(matrix_bd)) / sqrt(d_k)`` where + ``matrix_ac = (q + u) @ k^T`` and ``matrix_bd = (q + v) @ p^T``, with + ``u``/``v`` the learned positional biases and ``p`` the projected + relative positional embeddings. No attention mask is applied (the + exported graph assumes an unpadded single-utterance input, matching + ``att_context_size=[-1, -1]``). + """ + + def __init__(self, d_model: int, num_heads: int): + super().__init__() + self._num_heads = num_heads + self._head_dim = d_model // num_heads + self.linear_q = Linear(d_model, d_model) + self.linear_k = Linear(d_model, d_model) + self.linear_v = Linear(d_model, d_model) + self.linear_out = Linear(d_model, d_model) + self.linear_pos = Linear(d_model, d_model, bias=False) + self.pos_bias_u = nn.Parameter([num_heads, self._head_dim]) + self.pos_bias_v = nn.Parameter([num_heads, self._head_dim]) + + def _to_heads(self, op: OpBuilder, x: ir.Value) -> ir.Value: + # [B, T, D] -> [B, T, H, d_k] -> [B, H, T, d_k] + x = op.Reshape(x, [0, 0, self._num_heads, self._head_dim]) + return op.Transpose(x, perm=[0, 2, 1, 3]) + + def _rel_shift(self, op: OpBuilder, x: ir.Value, t_dim: ir.Value) -> ir.Value: + """Relative shift of ``[B, H, T, 2T-1]`` scores. + + Reproduces NeMo's ``rel_shift``: left-pad the last axis with a zero + column, reshape/drop to realign, then keep the first ``T`` columns so + entry ``(i, j)`` holds the bias for relative distance ``i - j``. + """ + # bh = [B, H] (dynamic batch, static heads); t_dim = [T]. + bh = op.Shape(x, start=0, end=2) + # 1) left-pad last dim by 1 -> [B, H, T, 2T] + x = op.Pad(x, op.Constant(value_ints=[0, 0, 0, 1, 0, 0, 0, 0])) + # 2) reshape to [B, H, 2T, T] + shape_a = op.Concat(bh, op.Constant(value_ints=[-1]), t_dim, axis=0) + x = op.Reshape(x, shape_a) + # 3) drop the first row along axis 2 -> [B, H, 2T-1, T] + x = op.Slice( + x, + op.Constant(value_ints=[1]), + op.Constant(value_ints=[_INT64_MAX]), + op.Constant(value_ints=[2]), + ) + # 4) reshape back to [B, H, T, 2T-1] + shape_b = op.Concat(bh, t_dim, op.Constant(value_ints=[-1]), axis=0) + x = op.Reshape(x, shape_b) + # 5) keep the first T columns -> [B, H, T, T] + return op.Slice(x, op.Constant(value_ints=[0]), t_dim, op.Constant(value_ints=[3])) + + def forward( + self, op: OpBuilder, x: ir.Value, pos_emb: ir.Value, t_dim: ir.Value + ) -> ir.Value: + # x: [B, T, D], pos_emb: [1, 2T-1, D], t_dim: [T] + q = self._to_heads(op, self.linear_q(op, x)) # [B, H, T, d_k] + k = self._to_heads(op, self.linear_k(op, x)) + v = self._to_heads(op, self.linear_v(op, x)) + # p: [1, H, 2T-1, d_k] + p = self._to_heads(op, self.linear_pos(op, pos_emb)) + + # q + bias, broadcast [H, d_k] over [B, H, T, d_k]. + bias_u = op.Unsqueeze(self.pos_bias_u, [0, 2]) # [1, H, 1, d_k] + bias_v = op.Unsqueeze(self.pos_bias_v, [0, 2]) + q_u = op.Add(q, bias_u) + q_v = op.Add(q, bias_v) + + matrix_ac = op.MatMul(q_u, op.Transpose(k, perm=[0, 1, 3, 2])) # [B,H,T,T] + matrix_bd = op.MatMul(q_v, op.Transpose(p, perm=[0, 1, 3, 2])) # [B,H,T,2T-1] + matrix_bd = self._rel_shift(op, matrix_bd, t_dim) # [B,H,T,T] + + scale = op.Constant(value=ir.tensor(np.array(self._head_dim**-0.5, dtype=np.float32))) + scores = op.Mul(op.Add(matrix_ac, matrix_bd), scale) + attn = op.Softmax(scores, axis=-1) + out = op.MatMul(attn, v) # [B, H, T, d_k] + out = op.Transpose(out, perm=[0, 2, 1, 3]) # [B, T, H, d_k] + out = op.Reshape(out, [0, 0, -1]) # [B, T, D] + return self.linear_out(op, out) + + +class _ConformerLayer(nn.Module): + """Single FastConformer block (Macaron feed-forward structure).""" + + def __init__(self, d_model: int, num_heads: int, d_ff: int, kernel_size: int): + super().__init__() + self.norm_feed_forward1 = LayerNorm(d_model, eps=1e-5) + self.feed_forward1 = _ConformerFeedForward(d_model, d_ff) + self.norm_self_att = LayerNorm(d_model, eps=1e-5) + self.self_attn = _RelPositionMultiHeadAttention(d_model, num_heads) + self.norm_conv = LayerNorm(d_model, eps=1e-5) + self.conv = _ConformerConvolution(d_model, kernel_size) + self.norm_feed_forward2 = LayerNorm(d_model, eps=1e-5) + self.feed_forward2 = _ConformerFeedForward(d_model, d_ff) + self.norm_out = LayerNorm(d_model, eps=1e-5) + + def forward( + self, op: OpBuilder, x: ir.Value, pos_emb: ir.Value, t_dim: ir.Value + ) -> ir.Value: + # Macaron feed-forward (half-step residual) + ff = self.feed_forward1(op, self.norm_feed_forward1(op, x)) + x = op.Add(x, op.Mul(ff, op.Constant(value_float=0.5))) + # Relative-position self-attention + att = self.self_attn(op, self.norm_self_att(op, x), pos_emb, t_dim) + x = op.Add(x, att) + # Convolution module + x = op.Add(x, self.conv(op, self.norm_conv(op, x))) + # Macaron feed-forward (half-step residual) + ff = self.feed_forward2(op, self.norm_feed_forward2(op, x)) + x = op.Add(x, op.Mul(ff, op.Constant(value_float=0.5))) + return self.norm_out(op, x) + + +class _FastConformerEncoder(nn.Module): + """NeMo FastConformer encoder (rel_pos, dw_striding subsampling).""" + + def __init__(self, config: SortformerConfig): + super().__init__() + d_model = config.fc_d_model + self._d_model = d_model + self._xscale = math.sqrt(d_model) + self.pre_encode = _ConvSubsampling( + config.feat_in, config.fc_subsampling_conv_channels, d_model + ) + d_ff = d_model * config.fc_ff_expansion + self.layers = nn.ModuleList( + [ + _ConformerLayer(d_model, config.fc_num_heads, d_ff, config.fc_conv_kernel) + for _ in range(config.fc_num_layers) + ] + ) + # Sinusoidal frequency divisors: exp(arange(0, d, 2) * -log(10000)/d). + # INF_VAL in NeMo's positional encoding is 10000.0. + self._div_term = np.exp( + np.arange(0, d_model, 2, dtype=np.float32) * -(math.log(10000.0) / d_model) + ) + + def _build_pos_emb(self, op: OpBuilder, x: ir.Value) -> ir.Value: + """Build Transformer-XL relative positional embeddings. + + Returns ``pos_emb`` of shape ``[1, 2T-1, d_model]`` for positions + ``T-1, T-2, ..., -(T-1)`` (sin in even columns, cos in odd columns), + matching NeMo's ``RelPositionalEncoding``. + """ + t_scalar = op.Squeeze(op.Shape(x, start=1, end=2)) # scalar T + one = op.Constant(value_int=1) + start = op.Sub(t_scalar, one) # T - 1 + limit = op.Neg(t_scalar) # -T (exclusive) -> last value -(T-1) + positions = op.Range(start, limit, op.Constant(value_int=-1)) # [2T-1] + pos_f = op.Unsqueeze(op.Cast(positions, to=ir.DataType.FLOAT), [-1]) # [2T-1,1] + div_term = op.Constant(value=ir.tensor(self._div_term)) # [d/2] + angles = op.Mul(pos_f, div_term) # [2T-1, d/2] + sin = op.Unsqueeze(op.Sin(angles), [-1]) + cos = op.Unsqueeze(op.Cos(angles), [-1]) + interleaved = op.Concat(sin, cos, axis=-1) # [2T-1, d/2, 2] + pe = op.Reshape(interleaved, [0, -1]) # [2T-1, d] + return op.Unsqueeze(pe, [0]) # [1, 2T-1, d] + + def forward(self, op: OpBuilder, input_features: ir.Value) -> ir.Value: + # input_features: [B, feat, T_mel] -> [B, T_mel, feat] + x = op.Transpose(input_features, perm=[0, 2, 1]) + x = self.pre_encode(op, x) # [B, T, d_model] + # Scale inputs to the attention layers by sqrt(d_model) (xscaling). + x = op.Mul(x, op.Constant(value=ir.tensor(np.array(self._xscale, np.float32)))) + pos_emb = self._build_pos_emb(op, x) + t_dim = op.Shape(x, start=1, end=2) # [T] + for layer in self.layers: + x = layer(op, x, pos_emb, t_dim) + return x # [B, T, d_model] + + +# --------------------------------------------------------------------------- +# Transformer encoder (NeMo post-LayerNorm) +# --------------------------------------------------------------------------- + + +class _TransformerAttention(nn.Module): + """Standard bidirectional multi-head attention (NeMo transformer).""" + + def __init__(self, d_model: int, num_heads: int): + super().__init__() + self._num_heads = num_heads + self._head_dim = d_model // num_heads + self.query_net = Linear(d_model, d_model) + self.key_net = Linear(d_model, d_model) + self.value_net = Linear(d_model, d_model) + self.out_projection = Linear(d_model, d_model) + + def forward(self, op: OpBuilder, x: ir.Value) -> ir.Value: + # Standard scaled-dot-product attention via the opset-24 Attention op, + # which splits heads internally from the [B, T, D] projections. No mask + # (bidirectional, unpadded single-utterance input). + q = self.query_net(op, x) + k = self.key_net(op, x) + v = self.value_net(op, x) + out = op.Attention( + q, + k, + v, + q_num_heads=self._num_heads, + kv_num_heads=self._num_heads, + scale=float(self._head_dim**-0.5), + ) # [B, T, D] + return self.out_projection(op, out) + + +class _PositionWiseFF(nn.Module): + """Position-wise feed-forward: Linear -> ReLU -> Linear.""" + + def __init__(self, d_model: int, inner_size: int): + super().__init__() + self.dense_in = Linear(d_model, inner_size) + self.dense_out = Linear(inner_size, d_model) + + def forward(self, op: OpBuilder, x: ir.Value) -> ir.Value: + return self.dense_out(op, op.Relu(self.dense_in(op, x))) + + +class _TransformerBlock(nn.Module): + """Post-LayerNorm Transformer encoder block.""" + + def __init__(self, d_model: int, num_heads: int, inner_size: int): + super().__init__() + self.layer_norm_1 = LayerNorm(d_model, eps=1e-5) + self.first_sub_layer = _TransformerAttention(d_model, num_heads) + self.layer_norm_2 = LayerNorm(d_model, eps=1e-5) + self.second_sub_layer = _PositionWiseFF(d_model, inner_size) + + def forward(self, op: OpBuilder, x: ir.Value) -> ir.Value: + # Post-LN: Self-Attn -> Residual -> LN -> FFN -> Residual -> LN + h = op.Add(self.first_sub_layer(op, x), x) + h = self.layer_norm_1(op, h) + out = op.Add(self.second_sub_layer(op, h), h) + return self.layer_norm_2(op, out) + + +class _TransformerEncoder(nn.Module): + """Stack of post-LayerNorm Transformer encoder blocks.""" + + def __init__(self, config: SortformerConfig): + super().__init__() + self.layers = nn.ModuleList( + [ + _TransformerBlock(config.tf_d_model, config.tf_num_heads, config.tf_inner_size) + for _ in range(config.tf_num_layers) + ] + ) + + def forward(self, op: OpBuilder, x: ir.Value) -> ir.Value: + for layer in self.layers: + x = layer(op, x) + return x + + +# --------------------------------------------------------------------------- +# Sortformer head + top-level model +# --------------------------------------------------------------------------- + + +class _SortformerModules(nn.Module): + """Projection + speaker sigmoid head. + + ``encoder_proj`` maps the FastConformer output to the Transformer width; + the head applies ``relu -> Linear -> relu -> Linear -> sigmoid`` to emit + per-speaker activity probabilities. + """ + + def __init__(self, config: SortformerConfig): + super().__init__() + self.encoder_proj = Linear(config.fc_d_model, config.tf_d_model) + self.first_hidden_to_hidden = Linear(config.tf_d_model, config.tf_d_model) + self.single_hidden_to_spks = Linear(config.tf_d_model, config.num_spks) + + def forward(self, op: OpBuilder, x: ir.Value, stage: str = "project") -> ir.Value: + # ``stage`` selects which sub-computation to run so that both the + # projection and the head share this module's name scope (invoking the + # module via ``__call__`` is what registers the ``sortformer_modules.*`` + # parameter prefix). + if stage == "project": + return self.encoder_proj(op, x) + # stage == "head": relu -> Linear -> relu -> Linear -> sigmoid + x = op.Relu(x) + x = self.first_hidden_to_hidden(op, x) + x = op.Relu(x) + x = self.single_hidden_to_spks(op, x) + return op.Sigmoid(x) + + +class SortformerDiarizationModel(nn.Module): + """Streaming Sortformer speaker-diarization model (offline forward). + + Replicates NVIDIA NeMo's ``SortformerEncLabelModel`` offline inference: + a FastConformer encoder followed by a Transformer encoder and a speaker + sigmoid head. Consumes mel-spectrogram features and returns per-frame + speaker-activity probabilities in ``[0, 1]``. + """ + + default_task: str = "diarization" + category: str = "Speech-to-Text" + + def __init__(self, config: SortformerConfig): + super().__init__() + self.config = config + self.encoder = _FastConformerEncoder(config) + self.transformer_encoder = _TransformerEncoder(config) + self.sortformer_modules = _SortformerModules(config) + + def forward(self, op: OpBuilder, input_features: ir.Value) -> ir.Value: + # input_features: [B, feat_in, T_mel] + emb = self.encoder(op, input_features) # [B, T, fc_d_model] + emb = self.sortformer_modules(op, emb, stage="project") # [B, T, tf_d_model] + emb = self.transformer_encoder(op, emb) # [B, T, tf_d_model] + return self.sortformer_modules(op, emb, stage="head") # [B, T, num_spks] + + def preprocess_weights( + self, state_dict: dict[str, torch.Tensor] + ) -> dict[str, torch.Tensor]: + """Map NeMo checkpoint names onto module parameter names. + + NeMo prefixes align 1:1 with this module tree (``encoder.*``, + ``transformer_encoder.*``, ``sortformer_modules.*``). Only the mel + preprocessor, batch-norm ``num_batches_tracked`` counters and the + unused streaming ``hidden_to_spks`` head are dropped. + """ + renamed: dict[str, torch.Tensor] = {} + for key, value in state_dict.items(): + if key.startswith("preprocessor."): + continue + if key.endswith("num_batches_tracked"): + continue + # Unused in the offline forward path (streaming FIFO head). + if key.startswith("sortformer_modules.hidden_to_spks."): + continue + renamed[key] = value + return renamed diff --git a/src/mobius/tasks/__init__.py b/src/mobius/tasks/__init__.py index 2671c100d..0832feff9 100644 --- a/src/mobius/tasks/__init__.py +++ b/src/mobius/tasks/__init__.py @@ -32,6 +32,7 @@ "Eagle3DraftTask", "Qwen35MtpTask", "DenoisingTask", + "DiarizationTask", "FeatureExtractionTask", "FunASRSpeechLanguageTask", "Gemma4AssistantTask", @@ -87,6 +88,7 @@ from mobius.tasks._ctc_asr import CTCAsrTask from mobius.tasks._denoising import DenoisingTask from mobius.tasks._dflash import DFlashDraftTask +from mobius.tasks._diarization import DiarizationTask from mobius.tasks._eagle3 import Eagle3DraftTask from mobius.tasks._feature_extraction import FeatureExtractionTask from mobius.tasks._fun_asr_speech_language import FunASRSpeechLanguageTask @@ -133,6 +135,7 @@ "codec": CodecTask, "controlnet": ControlNetTask, "denoising": DenoisingTask, + "diarization": DiarizationTask, "feature-extraction": FeatureExtractionTask, "image-classification": ImageClassificationTask, "object-detection": ObjectDetectionTask, diff --git a/src/mobius/tasks/_diarization.py b/src/mobius/tasks/_diarization.py new file mode 100644 index 000000000..82d1b7515 --- /dev/null +++ b/src/mobius/tasks/_diarization.py @@ -0,0 +1,48 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +"""Speaker-diarization task. + +Builds a single ONNX graph for Sortformer-style diarization models that +consume a mel-spectrogram feature sequence and emit per-frame speaker +activity probabilities. +""" + +from __future__ import annotations + +from typing import ClassVar + +from mobius._configs import BaseModelConfig +from mobius._model_package import ModelPackage +from mobius.tasks._base import ModelTask, _make_graph, _make_model + + +class DiarizationTask(ModelTask): + """Build an ONNX graph for speaker diarization (encoder-only). + + Input: ``input_features`` — ``[batch, feat, time]`` mel spectrogram. + Output: ``speaker_probs`` — ``[batch, frames, num_spks]`` sigmoid + probabilities (``frames = time / subsampling_factor``). + """ + + model_roles: ClassVar[dict[str, str]] = {"model": "encoder"} + + def build( + self, + module, + config: BaseModelConfig, + ) -> ModelPackage: + graph, builder = _make_graph() + + feat_in = getattr(config, "feat_in", None) + input_features = builder.input( + "input_features", + dtype=config.dtype, + shape=["batch", feat_in if feat_in else "feat", "time"], + ) + + speaker_probs = module(builder.op, input_features=input_features) + + builder.add_output(speaker_probs, "speaker_probs") + + return ModelPackage({"model": _make_model(graph)}, config=config) diff --git a/tests/build_graph_test.py b/tests/build_graph_test.py index 8053003a9..714cbbf12 100644 --- a/tests/build_graph_test.py +++ b/tests/build_graph_test.py @@ -5576,3 +5576,122 @@ def test_window_without_flag_is_kept(self): self._cfg(model_type="mistral", sliding_window=4096), "mistral" ) assert cfg.sliding_window == 4096 + + +class TestBuildGraphSortformer: + """Verify Sortformer diarization builds with DiarizationTask.""" + + def _sortformer_config(self): + from mobius.models.sortformer import SortformerConfig + + # Tiny config: reduced widths/layers, structure identical to the real + # nvidia/diar_streaming_sortformer_4spk model. + return SortformerConfig( + feat_in=32, + fc_d_model=64, + fc_num_layers=2, + fc_num_heads=4, + fc_ff_expansion=4, + fc_conv_kernel=9, + fc_subsampling_conv_channels=16, + fc_subsampling_factor=8, + tf_d_model=32, + tf_num_layers=2, + tf_num_heads=4, + tf_inner_size=64, + num_spks=4, + ) + + def test_package_builds(self): + """Build Sortformer and verify a single 'model' component.""" + from mobius.models.sortformer import SortformerDiarizationModel + from mobius.tasks import DiarizationTask + + config = self._sortformer_config() + module = SortformerDiarizationModel(config) + pkg = build_from_module(module, config, task=DiarizationTask()) + + assert "model" in pkg + + def test_model_io(self): + """Verify diarization input/output names and shapes.""" + from mobius.models.sortformer import SortformerDiarizationModel + from mobius.tasks import DiarizationTask + + config = self._sortformer_config() + module = SortformerDiarizationModel(config) + pkg = build_from_module(module, config, task=DiarizationTask()) + model = pkg["model"] + + input_names = {inp.name for inp in model.graph.inputs} + output_names = {out.name for out in model.graph.outputs} + assert "input_features" in input_names + assert "speaker_probs" in output_names + + # input_features: [batch, feat_in, time] + feat_dim = model.graph.inputs[0].shape[1] + assert feat_dim == config.feat_in + # speaker_probs last dim == num_spks + spk_dim = model.graph.outputs[0].shape[2] + assert spk_dim == config.num_spks + + def test_has_initializers(self): + """Verify encoder / transformer / head initializers are present.""" + from mobius.models.sortformer import SortformerDiarizationModel + from mobius.tasks import DiarizationTask + + config = self._sortformer_config() + module = SortformerDiarizationModel(config) + pkg = build_from_module(module, config, task=DiarizationTask()) + init_names = list(pkg["model"].graph.initializers) + + assert any(n.startswith("encoder.") for n in init_names) + assert any(n.startswith("transformer_encoder.") for n in init_names) + assert any(n.startswith("sortformer_modules.") for n in init_names) + + def test_task_registry_lookup(self): + """Verify the 'diarization' task resolves to DiarizationTask.""" + from mobius.tasks import DiarizationTask, get_task + + assert isinstance(get_task("diarization"), DiarizationTask) + + def test_runs_with_random_weights(self): + """Fill random weights and run a forward pass through ORT.""" + import os + import tempfile + + import onnxruntime as ort + + from mobius.models.sortformer import SortformerDiarizationModel + from mobius.tasks import DiarizationTask + + config = self._sortformer_config() + module = SortformerDiarizationModel(config) + pkg = build_from_module(module, config, task=DiarizationTask()) + model = pkg["model"] + + # Fill each empty initializer with small random values. Batch-norm + # running variance must stay positive to avoid NaNs. + for init in model.graph.initializers.values(): + if init.const_value is not None: + continue + shape = [d if isinstance(d, int) else 1 for d in init.shape] + if "running_var" in init.name: + arr = np.ones(shape, dtype=np.float32) + elif "running_mean" in init.name: + arr = np.zeros(shape, dtype=np.float32) + else: + arr = (np.random.randn(*shape) * 0.02).astype(np.float32) + init.const_value = ir.tensor(arr, name=init.name) + + with tempfile.TemporaryDirectory() as tmp: + path = os.path.join(tmp, "model.onnx") + ir.save(model, path, external_data="model.onnx.data") + sess = ort.InferenceSession(path, providers=["CPUExecutionProvider"]) + n_time = 40 # multiple of subsampling factor (8) -> 5 output frames + feats = np.random.randn(1, config.feat_in, n_time).astype(np.float32) + out = sess.run(None, {sess.get_inputs()[0].name: feats})[0] + + assert out.shape == (1, n_time // config.fc_subsampling_factor, config.num_spks) + # Sigmoid output must lie in [0, 1]. + assert out.min() >= 0.0 and out.max() <= 1.0 diff --git a/tests/sortformer_integration_test.py b/tests/sortformer_integration_test.py new file mode 100644 index 000000000..6e5cb1a87 --- /dev/null +++ b/tests/sortformer_integration_test.py @@ -0,0 +1,84 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +"""Integration test: NVIDIA NeMo Sortformer speaker diarization. + +Verifies that the exported Sortformer ONNX graph produces the same per-frame +speaker-activity probabilities as the NeMo PyTorch reference model (offline +``frontend_encoder`` + ``forward_infer`` path). + +Run with:: + + pytest tests/sortformer_integration_test.py -m integration -sv + +Skipped automatically when ``nemo_toolkit`` is not installed or the checkpoint +cannot be downloaded. +""" + +from __future__ import annotations + +import os +import tempfile + +import numpy as np +import onnx_ir as ir +import onnxruntime as ort +import pytest + +_MODEL_ID = "nvidia/diar_streaming_sortformer_4spk-v2.1" +_NEMO_FILENAME = "diar_streaming_sortformer_4spk-v2.1.nemo" + +pytest.importorskip("nemo.collections.asr", reason="nemo_toolkit not installed") +torch = pytest.importorskip("torch") + + +def _download_nemo() -> str: + """Download the ``.nemo`` checkpoint, skipping the test if unavailable.""" + try: + from huggingface_hub import hf_hub_download + + return hf_hub_download(repo_id=_MODEL_ID, filename=_NEMO_FILENAME) + except Exception as exc: # pragma: no cover - network/availability guard + pytest.skip(f"Could not download {_MODEL_ID}: {exc}") + + +@pytest.mark.integration +def test_sortformer_offline_parity(): + """ONNX diarization output matches the NeMo offline reference. + + The model flows through the generic :func:`build_from_nemo` pipeline: + the ``.nemo`` archive's ``target`` (``SortformerEncLabelModel``) resolves + to model_type ``"sortformer"`` and the ``"diarization"`` task. + """ + from nemo.collections.asr.models import SortformerEncLabelModel + + from mobius.integrations.nemo import build_from_nemo + + nemo_path = _download_nemo() + + # --- NeMo reference (offline forward path) -------------------------------- + model = SortformerEncLabelModel.restore_from(nemo_path, map_location="cpu") + model.eval() + model.streaming_mode = False + + torch.manual_seed(0) + mel = torch.randn(1, model.cfg.encoder.feat_in, 400) + mel_len = torch.tensor([400], dtype=torch.long) + + with torch.no_grad(): + emb_seq, emb_len = model.frontend_encoder( + processed_signal=mel, processed_signal_length=mel_len + ) + preds_ref = model.forward_infer(emb_seq, emb_len).cpu().numpy() + + # --- mobius ONNX export --------------------------------------------------- + pkg = build_from_nemo(nemo_path) + + with tempfile.TemporaryDirectory() as tmp: + path = os.path.join(tmp, "model.onnx") + ir.save(pkg["model"], path, external_data="model.onnx.data") + sess = ort.InferenceSession(path, providers=["CPUExecutionProvider"]) + out = sess.run(None, {sess.get_inputs()[0].name: mel.numpy().astype(np.float32)})[0] + + assert out.shape == preds_ref.shape + np.testing.assert_allclose(out, preds_ref, atol=1e-4) From 21c0751a88133ea4e59f61e19a43e0849da7ea64 Mon Sep 17 00:00:00 2001 From: Mason Corey <36940706+themason2011@users.noreply.github.com> Date: Thu, 30 Jul 2026 14:17:01 -0700 Subject: [PATCH 02/12] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Mason Corey <36940706+themason2011@users.noreply.github.com> --- src/mobius/models/sortformer.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mobius/models/sortformer.py b/src/mobius/models/sortformer.py index f820fd713..5e880ad0c 100644 --- a/src/mobius/models/sortformer.py +++ b/src/mobius/models/sortformer.py @@ -399,7 +399,10 @@ def forward( matrix_bd = op.MatMul(q_v, op.Transpose(p, perm=[0, 1, 3, 2])) # [B,H,T,2T-1] matrix_bd = self._rel_shift(op, matrix_bd, t_dim) # [B,H,T,T] - scale = op.Constant(value=ir.tensor(np.array(self._head_dim**-0.5, dtype=np.float32))) + scale = op.CastLike( + op.Constant(value=ir.tensor(np.array(self._head_dim**-0.5, dtype=np.float32))), + matrix_ac, + ) scores = op.Mul(op.Add(matrix_ac, matrix_bd), scale) attn = op.Softmax(scores, axis=-1) out = op.MatMul(attn, v) # [B, H, T, d_k] From 1df7349a1faedd67d5088959c62f4d790e95ecf6 Mon Sep 17 00:00:00 2001 From: Mason Corey <36940706+themason2011@users.noreply.github.com> Date: Thu, 30 Jul 2026 14:20:46 -0700 Subject: [PATCH 03/12] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Mason Corey <36940706+themason2011@users.noreply.github.com> --- src/mobius/tasks/_diarization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mobius/tasks/_diarization.py b/src/mobius/tasks/_diarization.py index 82d1b7515..3f2f44aec 100644 --- a/src/mobius/tasks/_diarization.py +++ b/src/mobius/tasks/_diarization.py @@ -38,7 +38,7 @@ def build( input_features = builder.input( "input_features", dtype=config.dtype, - shape=["batch", feat_in if feat_in else "feat", "time"], + shape=["batch", feat_in if feat_in is not None else "feat", "time"], ) speaker_probs = module(builder.op, input_features=input_features) From 9b8ecb3e360b04e257dfb6b05261616931343b24 Mon Sep 17 00:00:00 2001 From: Mason Corey <36940706+themason2011@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:27:21 -0700 Subject: [PATCH 04/12] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Mason Corey <36940706+themason2011@users.noreply.github.com> --- src/mobius/models/sortformer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mobius/models/sortformer.py b/src/mobius/models/sortformer.py index 5e880ad0c..e9a1060e5 100644 --- a/src/mobius/models/sortformer.py +++ b/src/mobius/models/sortformer.py @@ -431,7 +431,8 @@ def forward( ) -> ir.Value: # Macaron feed-forward (half-step residual) ff = self.feed_forward1(op, self.norm_feed_forward1(op, x)) - x = op.Add(x, op.Mul(ff, op.Constant(value_float=0.5))) + half = op.CastLike(op.Constant(value_float=0.5), x) + x = op.Add(x, op.Mul(ff, half)) # Relative-position self-attention att = self.self_attn(op, self.norm_self_att(op, x), pos_emb, t_dim) x = op.Add(x, att) From fbefd233339e47b3a9aa7055dc1429259c8b1a7f Mon Sep 17 00:00:00 2001 From: Mason Corey <36940706+themason2011@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:27:29 -0700 Subject: [PATCH 05/12] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Mason Corey <36940706+themason2011@users.noreply.github.com> --- src/mobius/models/sortformer.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mobius/models/sortformer.py b/src/mobius/models/sortformer.py index e9a1060e5..6d0976ce1 100644 --- a/src/mobius/models/sortformer.py +++ b/src/mobius/models/sortformer.py @@ -494,7 +494,11 @@ def forward(self, op: OpBuilder, input_features: ir.Value) -> ir.Value: x = op.Transpose(input_features, perm=[0, 2, 1]) x = self.pre_encode(op, x) # [B, T, d_model] # Scale inputs to the attention layers by sqrt(d_model) (xscaling). - x = op.Mul(x, op.Constant(value=ir.tensor(np.array(self._xscale, np.float32)))) + xscale = op.CastLike( + op.Constant(value=ir.tensor(np.array(self._xscale, np.float32))), + x, + ) + x = op.Mul(x, xscale) pos_emb = self._build_pos_emb(op, x) t_dim = op.Shape(x, start=1, end=2) # [T] for layer in self.layers: From 99280519fa93ce0950319e91fd8397761d786c7a Mon Sep 17 00:00:00 2001 From: Mason Corey <36940706+themason2011@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:27:40 -0700 Subject: [PATCH 06/12] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Mason Corey <36940706+themason2011@users.noreply.github.com> --- src/mobius/models/sortformer.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/mobius/models/sortformer.py b/src/mobius/models/sortformer.py index 6d0976ce1..95c8f56ae 100644 --- a/src/mobius/models/sortformer.py +++ b/src/mobius/models/sortformer.py @@ -479,14 +479,9 @@ def _build_pos_emb(self, op: OpBuilder, x: ir.Value) -> ir.Value: one = op.Constant(value_int=1) start = op.Sub(t_scalar, one) # T - 1 limit = op.Neg(t_scalar) # -T (exclusive) -> last value -(T-1) - positions = op.Range(start, limit, op.Constant(value_int=-1)) # [2T-1] - pos_f = op.Unsqueeze(op.Cast(positions, to=ir.DataType.FLOAT), [-1]) # [2T-1,1] - div_term = op.Constant(value=ir.tensor(self._div_term)) # [d/2] - angles = op.Mul(pos_f, div_term) # [2T-1, d/2] - sin = op.Unsqueeze(op.Sin(angles), [-1]) - cos = op.Unsqueeze(op.Cos(angles), [-1]) interleaved = op.Concat(sin, cos, axis=-1) # [2T-1, d/2, 2] pe = op.Reshape(interleaved, [0, -1]) # [2T-1, d] + pe = op.CastLike(pe, x) return op.Unsqueeze(pe, [0]) # [1, 2T-1, d] def forward(self, op: OpBuilder, input_features: ir.Value) -> ir.Value: From ae47f0f83ea2d2692ca3c5ac9811930ef653a649 Mon Sep 17 00:00:00 2001 From: Mason Corey <36940706+themason2011@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:27:56 -0700 Subject: [PATCH 07/12] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Mason Corey <36940706+themason2011@users.noreply.github.com> --- src/mobius/models/sortformer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mobius/models/sortformer.py b/src/mobius/models/sortformer.py index 95c8f56ae..273e300bb 100644 --- a/src/mobius/models/sortformer.py +++ b/src/mobius/models/sortformer.py @@ -440,7 +440,8 @@ def forward( x = op.Add(x, self.conv(op, self.norm_conv(op, x))) # Macaron feed-forward (half-step residual) ff = self.feed_forward2(op, self.norm_feed_forward2(op, x)) - x = op.Add(x, op.Mul(ff, op.Constant(value_float=0.5))) + half = op.CastLike(op.Constant(value_float=0.5), x) + x = op.Add(x, op.Mul(ff, half)) return self.norm_out(op, x) From b9f3ed945a1fb56a476312a39dce61727792033c Mon Sep 17 00:00:00 2001 From: Mason Corey Date: Mon, 3 Aug 2026 14:35:19 -0700 Subject: [PATCH 08/12] Add L4/L5 golden parity tests for Sortformer diarization Add real-weight golden coverage for the NeMo Sortformer diarization model, mirroring the FastConformer-RNNT golden pattern. - scripts/generate_sortformer_golden.py: regenerates the committed NeMo reference by running the real Sortformer model (offline frontend_encoder + forward_infer path) from a pinned HuggingFace revision. - testdata/golden/speech/sortformer_diarization.npz: committed golden (mel input, encoder embeddings, speaker sigmoids + self-describing meta), pinned to nvidia/diar_streaming_sortformer_4spk-v2.1 @ fafaab5. - tests/sortformer_integration_test.py: rewritten as two integration_slow golden tests that build via build_from_nemo and compare against the golden: * L4 test_sortformer_diarization_parity: element-wise speaker_probs parity (atol=1e-4). * L5 test_sortformer_end_to_end_diarization: end-to-end diarization decision (per-frame dominant-speaker argmax + binarized active-speaker set) matches NeMo over the whole utterance, plus valid-probability checks. Verified: both tests pass against the pinned model (2 passed). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Mason Corey --- scripts/generate_sortformer_golden.py | 107 +++++++++++++++ .../golden/speech/sortformer_diarization.npz | Bin 0 -> 227123 bytes tests/sortformer_integration_test.py | 129 ++++++++++-------- 3 files changed, 181 insertions(+), 55 deletions(-) create mode 100644 scripts/generate_sortformer_golden.py create mode 100644 testdata/golden/speech/sortformer_diarization.npz diff --git a/scripts/generate_sortformer_golden.py b/scripts/generate_sortformer_golden.py new file mode 100644 index 000000000..5d356296e --- /dev/null +++ b/scripts/generate_sortformer_golden.py @@ -0,0 +1,107 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +"""Regenerate the Sortformer diarization golden reference used by the L4/L5 tests. + +This produces ``testdata/golden/speech/sortformer_diarization.npz`` by running +the *real* NeMo Sortformer model through the NeMo toolkit (the ground-truth +reference implementation). It must be run inside an environment that has +``nemo_toolkit`` installed (it is **not** a mobius runtime dependency):: + + python -m venv /tmp/nemo_ref_venv + source /tmp/nemo_ref_venv/bin/activate + pip install "nemo_toolkit[asr]" + python scripts/generate_sortformer_golden.py \ + --model nvidia/diar_streaming_sortformer_4spk-v2.1 \ + --revision fafaab5faa1617a0ca52d38dd3dc4bd636800d3d \ + --out testdata/golden/speech/sortformer_diarization.npz + +The offline forward path is ``frontend_encoder`` (mel features -> embedding +sequence) followed by ``forward_infer`` (embeddings -> per-frame speaker +activity sigmoids). The committed ``.npz`` stores the mel input, the encoder +embeddings, and the speaker probabilities, plus a ``meta`` JSON blob (model id, +revision, NeMo version, dtype, seed) so the reference is self-describing and +auditable. +""" + +from __future__ import annotations + +import argparse +import json + +import numpy as np +import torch + +# Deterministic mel-feature fixture (also recorded in metadata). +_SEED = 0 +_T = 400 # mel frames; with 8x subsampling -> 50 output diarization frames. +_FEAT_DIM = 128 + + +def main() -> None: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--model", default="nvidia/diar_streaming_sortformer_4spk-v2.1") + parser.add_argument( + "--revision", + default="fafaab5faa1617a0ca52d38dd3dc4bd636800d3d", + help="HuggingFace Hub commit SHA to pin the reference model.", + ) + parser.add_argument( + "--out", + default="testdata/golden/speech/sortformer_diarization.npz", + ) + args = parser.parse_args() + + import nemo # type: ignore[import-not-found] + from huggingface_hub import hf_hub_download + from nemo.collections.asr.models import ( # type: ignore[import-not-found] + SortformerEncLabelModel, + ) + + torch.manual_seed(_SEED) + + nemo_path = hf_hub_download( + repo_id=args.model, + filename="diar_streaming_sortformer_4spk-v2.1.nemo", + revision=args.revision, + ) + model = SortformerEncLabelModel.restore_from(nemo_path, map_location="cpu") + model.eval() + # Offline (non-streaming) forward path: full-context attention. + model.streaming_mode = False + + feat_dim = int(model.cfg.encoder.feat_in) + mel = torch.randn(1, feat_dim, _T) + mel_len = torch.tensor([_T], dtype=torch.long) + + with torch.no_grad(): + emb_seq, emb_len = model.frontend_encoder( + processed_signal=mel, processed_signal_length=mel_len + ) + preds = model.forward_infer(emb_seq, emb_len) + + num_spks = int(preds.shape[-1]) + meta = { + "model_id": args.model, + "revision": args.revision, + "nemo_version": nemo.__version__, + "dtype": "float32", + "seed": _SEED, + "feat_dim": feat_dim, + "input_frames": _T, + "num_spks": num_spks, + } + + np.savez_compressed( + args.out, + mel=mel.numpy().astype(np.float32), + emb_seq=emb_seq.numpy().astype(np.float32), + emb_len=emb_len.numpy().astype(np.int64), + preds=preds.numpy().astype(np.float32), + meta=np.array(json.dumps(meta)), + ) + print(f"saved {args.out}\n{json.dumps(meta, indent=2)}") + + +if __name__ == "__main__": + main() diff --git a/testdata/golden/speech/sortformer_diarization.npz b/testdata/golden/speech/sortformer_diarization.npz new file mode 100644 index 0000000000000000000000000000000000000000..905c64c01a94dd1da8bca52e6365bbb65e3964da GIT binary patch literal 227123 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

YR{G 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

Dx7W|xI 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 F{TKh#B&`4d literal 0 HcmV?d00001 diff --git a/tests/sortformer_integration_test.py b/tests/sortformer_integration_test.py index 6e5cb1a87..fc0e243b5 100644 --- a/tests/sortformer_integration_test.py +++ b/tests/sortformer_integration_test.py @@ -1,22 +1,27 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT License. -"""Integration test: NVIDIA NeMo Sortformer speaker diarization. - -Verifies that the exported Sortformer ONNX graph produces the same per-frame -speaker-activity probabilities as the NeMo PyTorch reference model (offline -``frontend_encoder`` + ``forward_infer`` path). - -Run with:: - - pytest tests/sortformer_integration_test.py -m integration -sv - -Skipped automatically when ``nemo_toolkit`` is not installed or the checkpoint -cannot be downloaded. +"""L4/L5 golden parity tests for the NeMo Sortformer speaker-diarization model. + +Builds the ONNX diarization graph from the real ``.nemo`` archive +(``nvidia/diar_streaming_sortformer_4spk-v2.1``, resolved from HuggingFace Hub) +via the generic :func:`build_from_nemo` pipeline and compares its output against +a pre-computed NeMo reference +(``testdata/golden/speech/sortformer_diarization.npz``). + +The reference was generated with ``nemo_toolkit`` — regenerate it with +``scripts/generate_sortformer_golden.py`` if the architecture changes. + +- **L4** (``test_sortformer_diarization_parity``): the ONNX ``speaker_probs`` + match the NeMo offline reference speaker sigmoids element-wise. +- **L5** (``test_sortformer_end_to_end_diarization``): the full offline + diarization decision (per-frame active-speaker assignment derived from the + sigmoids) reproduces the NeMo reference over the whole utterance. """ from __future__ import annotations +import json import os import tempfile @@ -25,60 +30,74 @@ import onnxruntime as ort import pytest -_MODEL_ID = "nvidia/diar_streaming_sortformer_4spk-v2.1" -_NEMO_FILENAME = "diar_streaming_sortformer_4spk-v2.1.nemo" +pytestmark = pytest.mark.integration -pytest.importorskip("nemo.collections.asr", reason="nemo_toolkit not installed") -torch = pytest.importorskip("torch") +_MODEL_ID = "nvidia/diar_streaming_sortformer_4spk-v2.1" +# Pin the HF revision so the test always validates against the exact model the +# committed golden was generated from (see scripts/generate_sortformer_golden.py). +_REVISION = "fafaab5faa1617a0ca52d38dd3dc4bd636800d3d" +_GOLDEN = os.path.join( + os.path.dirname(__file__), + "..", + "testdata", + "golden", + "speech", + "sortformer_diarization.npz", +) + + +def _run_diarizer(golden: np.lib.npyio.NpzFile) -> np.ndarray: + """Build the ONNX diarizer via build_from_nemo and run the golden mel input.""" + from mobius.integrations.nemo import build_from_nemo + pkg = build_from_nemo(_MODEL_ID, revision=_REVISION) + assert "model" in pkg -def _download_nemo() -> str: - """Download the ``.nemo`` checkpoint, skipping the test if unavailable.""" - try: - from huggingface_hub import hf_hub_download + mel = golden["mel"].astype(np.float32) # (1, feat_in, T) + with tempfile.TemporaryDirectory() as td: + path = os.path.join(td, "model.onnx") + ir.save(pkg["model"], path, external_data="model.onnx.data") + sess = ort.InferenceSession(path, providers=["CPUExecutionProvider"]) + out = sess.run(None, {sess.get_inputs()[0].name: mel})[0] + return out - return hf_hub_download(repo_id=_MODEL_ID, filename=_NEMO_FILENAME) - except Exception as exc: # pragma: no cover - network/availability guard - pytest.skip(f"Could not download {_MODEL_ID}: {exc}") +@pytest.mark.integration_slow +def test_sortformer_diarization_parity(): + """L4: ONNX speaker probabilities match the NeMo offline reference.""" + golden = np.load(_GOLDEN) + preds_ref = golden["preds"] # (1, T', num_spks) sigmoid activations -@pytest.mark.integration -def test_sortformer_offline_parity(): - """ONNX diarization output matches the NeMo offline reference. + out = _run_diarizer(golden) - The model flows through the generic :func:`build_from_nemo` pipeline: - the ``.nemo`` archive's ``target`` (``SortformerEncLabelModel``) resolves - to model_type ``"sortformer"`` and the ``"diarization"`` task. - """ - from nemo.collections.asr.models import SortformerEncLabelModel + assert out.shape == preds_ref.shape + # Offline fp32 forward path: tight parity (matches build_from_nemo golden). + np.testing.assert_allclose(out, preds_ref, atol=1e-4) - from mobius.integrations.nemo import build_from_nemo - nemo_path = _download_nemo() +@pytest.mark.integration_slow +def test_sortformer_end_to_end_diarization(): + """L5: the end-to-end offline diarization decision matches NeMo. - # --- NeMo reference (offline forward path) -------------------------------- - model = SortformerEncLabelModel.restore_from(nemo_path, map_location="cpu") - model.eval() - model.streaming_mode = False + The diarization output is a per-frame speaker-activity sigmoid in ``[0, 1]``. + The task-level decisions a downstream consumer reads are (a) the dominant + speaker per frame (``argmax``) and (b) the binarized set of active speakers + per frame (sigmoid threshold at 0.5). Verify the ONNX pipeline reproduces + both over the whole utterance and that the raw probabilities are well-formed. + """ + golden = np.load(_GOLDEN) + preds_ref = golden["preds"] + meta = json.loads(str(golden["meta"])) + num_spks = int(meta["num_spks"]) - torch.manual_seed(0) - mel = torch.randn(1, model.cfg.encoder.feat_in, 400) - mel_len = torch.tensor([400], dtype=torch.long) + out = _run_diarizer(golden) - with torch.no_grad(): - emb_seq, emb_len = model.frontend_encoder( - processed_signal=mel, processed_signal_length=mel_len - ) - preds_ref = model.forward_infer(emb_seq, emb_len).cpu().numpy() + # Raw sigmoids must be valid probabilities of the expected speaker count. + assert out.shape[-1] == num_spks + assert out.min() >= 0.0 and out.max() <= 1.0 - # --- mobius ONNX export --------------------------------------------------- - pkg = build_from_nemo(nemo_path) + # Diarization decision 1: per-frame dominant-speaker assignment sequence. + np.testing.assert_array_equal(out.argmax(axis=-1), preds_ref.argmax(axis=-1)) - with tempfile.TemporaryDirectory() as tmp: - path = os.path.join(tmp, "model.onnx") - ir.save(pkg["model"], path, external_data="model.onnx.data") - sess = ort.InferenceSession(path, providers=["CPUExecutionProvider"]) - out = sess.run(None, {sess.get_inputs()[0].name: mel.numpy().astype(np.float32)})[0] - - assert out.shape == preds_ref.shape - np.testing.assert_allclose(out, preds_ref, atol=1e-4) + # Diarization decision 2: binarized per-frame active-speaker set. + np.testing.assert_array_equal(out > 0.5, preds_ref > 0.5) From b8bbf7a04f64ace1b209b6093d5e46d8d5365d5e Mon Sep 17 00:00:00 2001 From: Mason Corey <36940706+themason2011@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:38:26 -0700 Subject: [PATCH 09/12] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Mason Corey <36940706+themason2011@users.noreply.github.com> --- src/mobius/models/sortformer.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/mobius/models/sortformer.py b/src/mobius/models/sortformer.py index 273e300bb..a54137c43 100644 --- a/src/mobius/models/sortformer.py +++ b/src/mobius/models/sortformer.py @@ -480,6 +480,18 @@ def _build_pos_emb(self, op: OpBuilder, x: ir.Value) -> ir.Value: one = op.Constant(value_int=1) start = op.Sub(t_scalar, one) # T - 1 limit = op.Neg(t_scalar) # -T (exclusive) -> last value -(T-1) + + # Positions: [T-1, T-2, ..., -(T-1)] -> shape [2T-1] + positions = op.Range(start, limit, op.Constant(value_int=-1)) + + # Sin/Cos are float32-only on some EPs; keep them in f32 and cast later. + f32 = op.Constant(value_float=0.0) + pos_f = op.CastLike(op.Unsqueeze(positions, [1]), f32) # [2T-1, 1] + div_term = op.Constant(value=ir.tensor(self._div_term)) # [d/2] + angles = op.Mul(pos_f, div_term) # [2T-1, d/2] + sin = op.Unsqueeze(op.Sin(angles), [2]) # [2T-1, d/2, 1] + cos = op.Unsqueeze(op.Cos(angles), [2]) # [2T-1, d/2, 1] + interleaved = op.Concat(sin, cos, axis=-1) # [2T-1, d/2, 2] pe = op.Reshape(interleaved, [0, -1]) # [2T-1, d] pe = op.CastLike(pe, x) From 2e16d4af9561b07301d1ecc7076e6414d9b00842 Mon Sep 17 00:00:00 2001 From: Mason Corey <36940706+themason2011@users.noreply.github.com> Date: Mon, 3 Aug 2026 14:39:46 -0700 Subject: [PATCH 10/12] Potential fix for pull request finding 'Unused global variable' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> Signed-off-by: Mason Corey <36940706+themason2011@users.noreply.github.com> --- scripts/generate_sortformer_golden.py | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/generate_sortformer_golden.py b/scripts/generate_sortformer_golden.py index 5d356296e..bc5bde225 100644 --- a/scripts/generate_sortformer_golden.py +++ b/scripts/generate_sortformer_golden.py @@ -35,7 +35,6 @@ # Deterministic mel-feature fixture (also recorded in metadata). _SEED = 0 _T = 400 # mel frames; with 8x subsampling -> 50 output diarization frames. -_FEAT_DIM = 128 def main() -> None: From b71c2ad3a02fe5776de9d2bfb36abb52c0d8c117 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 3 Aug 2026 21:41:00 +0000 Subject: [PATCH 11/12] Fix Sortformer positional embedding lint Co-authored-by: themason2011 <36940706+themason2011@users.noreply.github.com> --- src/mobius/models/__init__.py | 2 +- tests/build_graph_test.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mobius/models/__init__.py b/src/mobius/models/__init__.py index f2c4c723a..ecac98798 100644 --- a/src/mobius/models/__init__.py +++ b/src/mobius/models/__init__.py @@ -289,8 +289,8 @@ Qwen25VLVisionEncoderModel, ) from mobius.models.sensevoice_small import SenseVoiceSmallModel -from mobius.models.sortformer import SortformerConfig, SortformerDiarizationModel from mobius.models.smollm import SmolLM3CausalLMModel +from mobius.models.sortformer import SortformerConfig, SortformerDiarizationModel from mobius.models.starcoder2 import StarCoder2CausalLMModel from mobius.models.t5 import T5ForConditionalGeneration from mobius.models.unet import ( diff --git a/tests/build_graph_test.py b/tests/build_graph_test.py index 7782aed5c..b95087fdb 100644 --- a/tests/build_graph_test.py +++ b/tests/build_graph_test.py @@ -5104,6 +5104,7 @@ def test_jamba_preprocess_weights_moe_renames(self): "seamless_m4t_v2", "sew", "sew-d", + "sortformer", "speecht5", "unispeech", "unispeech-sat", @@ -5998,6 +5999,7 @@ def test_window_without_flag_is_kept(self): ) assert cfg.sliding_window == 4096 + class TestLongRopeAliasExtraction: """``rope_type`` alias handling for Phi LongRoPE. @@ -6142,6 +6144,7 @@ def test_non_alias_rope_types_are_unchanged(self): assert _canonical_rope_type("default") == "default" assert _canonical_rope_type(None) is None + class TestBuildGraphSortformer: """Verify Sortformer diarization builds with DiarizationTask.""" From 3d13b9f8b2f4ec6f6d0eba39d8c93ca22ee17dd0 Mon Sep 17 00:00:00 2001 From: Mason Corey Date: Mon, 3 Aug 2026 15:27:15 -0700 Subject: [PATCH 12/12] Add sortformer to model coverage skip list The model_coverage_test enforces that every registered model_type has either a shared test config (tests/_test_configs.py + _registry.py test_model_id) or an entry in _COVERAGE_SKIP. Sortformer is a NeMo .nemo diarization model with a custom SortformerConfig and no HuggingFace config.json, so it uses the same mechanism as the sibling fastconformer_rnnt model: skip the generic coverage and rely on the dedicated tests/sortformer_integration_test.py (L4/L5 golden) plus TestBuildGraphSortformer (L1). Fixes 4 CI failures in tests/model_coverage_test.py for model_type 'sortformer'. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Mason Corey --- tests/model_coverage_test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/model_coverage_test.py b/tests/model_coverage_test.py index 80a9da924..4711fe44b 100644 --- a/tests/model_coverage_test.py +++ b/tests/model_coverage_test.py @@ -201,6 +201,7 @@ def _all_registered_with_test_id() -> dict[str, str]: "whisper": "Speech-to-text — requires audio inputs", "mms": "CTC ASR model — tested via TestBuildMMSGraph", "fastconformer_rnnt": "NeMo .nemo RNN-T ASR — tested via tests/nemo_rnnt_integration_test.py", + "sortformer": "NeMo .nemo speaker diarization — tested via tests/sortformer_integration_test.py", # --- Models requiring trust_remote_code --- "chatglm": "Requires trust_remote_code (custom HF modeling code)", "dots1": "Requires trust_remote_code (custom HF modeling code)",