From 4a8ef2149428a63909c02d2ae51b24eb8a2e00c4 Mon Sep 17 00:00:00 2001 From: Chang Gao Date: Sat, 11 Jul 2026 19:11:29 +0200 Subject: [PATCH 1/3] Optimize TRes-DeltaGRU training end to end --- arguments.py | 11 +- backbones/cuda_graph_frozen_dgru.py | 317 ++ backbones/dgru.py | 26 +- backbones/tres_deltagru.py | 147 +- backbones/triton_deltagru.py | 632 +++ bash_scripts/OpenDPDv2.sh | 8 +- benchmark/benchmark_end_to_end.py | 882 +++ benchmark/benchmark_tres_deltagru.py | 422 ++ benchmark/report/artifact.json | 382 ++ .../e2e_dpa200_stride16_comparison_eager.json | 140 + .../e2e_dpa200_stride16_comparison_fused.json | 140 + .../e2e_dpa200_stride16_comparison_graph.json | 140 + .../batch_orders.npz | Bin 0 -> 10137 bytes .../outputs.npz | Bin 0 -> 171295 bytes .../result.json | 293 + .../batch_orders.npz | Bin 0 -> 10137 bytes .../outputs.npz | Bin 0 -> 171327 bytes .../result.json | 293 + .../batch_orders.npz | Bin 0 -> 10137 bytes .../outputs.npz | Bin 0 -> 171247 bytes .../result.json | 295 + .../batch_orders.npz | Bin 0 -> 10137 bytes .../e2e_dpa200_stride16_original/outputs.npz | Bin 0 -> 171295 bytes .../e2e_dpa200_stride16_original/result.json | 293 + .../e2e_dpa200_stride1_comparison_graph.json | 104 + ...pa200_stride1_comparison_graph_repeat.json | 104 + .../batch_orders.npz | Bin 0 -> 61949 bytes .../outputs.npz | Bin 0 -> 171363 bytes .../result.json | 235 + .../batch_orders.npz | Bin 0 -> 61949 bytes .../outputs.npz | Bin 0 -> 171363 bytes .../result.json | 235 + .../batch_orders.npz | Bin 0 -> 61949 bytes .../e2e_dpa200_stride1_original/outputs.npz | Bin 0 -> 171372 bytes .../e2e_dpa200_stride1_original/result.json | 233 + benchmark/results/end_to_end_summary.json | 165 + .../results/tres_deltagru_rtx4090_laptop.json | 92 + .../tres_deltagru_end_to_end_report.html | 4900 +++++++++++++++++ benchmark/tres_deltagru_training_speed.md | 179 + models.py | 9 +- modules/cuda_graph_training.py | 377 ++ modules/data_collector.py | 40 +- modules/paths.py | 7 +- modules/train_funcs.py | 99 +- opendpd/api.py | 36 +- project.py | 40 +- steps/train_dpd.py | 2 + tests/test_api.py | 24 + tests/test_cuda_graph_frozen_dgru.py | 167 + tests/test_cuda_graph_training.py | 236 + tests/test_training_pipeline_optimizations.py | 221 + tests/test_tres_deltagru_optimized.py | 238 + 52 files changed, 12076 insertions(+), 88 deletions(-) create mode 100644 backbones/cuda_graph_frozen_dgru.py create mode 100644 backbones/triton_deltagru.py create mode 100644 benchmark/benchmark_end_to_end.py create mode 100644 benchmark/benchmark_tres_deltagru.py create mode 100644 benchmark/report/artifact.json create mode 100644 benchmark/results/e2e_dpa200_stride16_comparison_eager.json create mode 100644 benchmark/results/e2e_dpa200_stride16_comparison_fused.json create mode 100644 benchmark/results/e2e_dpa200_stride16_comparison_graph.json create mode 100644 benchmark/results/e2e_dpa200_stride16_eager_optimized/batch_orders.npz create mode 100644 benchmark/results/e2e_dpa200_stride16_eager_optimized/outputs.npz create mode 100644 benchmark/results/e2e_dpa200_stride16_eager_optimized/result.json create mode 100644 benchmark/results/e2e_dpa200_stride16_fused_optimized/batch_orders.npz create mode 100644 benchmark/results/e2e_dpa200_stride16_fused_optimized/outputs.npz create mode 100644 benchmark/results/e2e_dpa200_stride16_fused_optimized/result.json create mode 100644 benchmark/results/e2e_dpa200_stride16_graph_optimized/batch_orders.npz create mode 100644 benchmark/results/e2e_dpa200_stride16_graph_optimized/outputs.npz create mode 100644 benchmark/results/e2e_dpa200_stride16_graph_optimized/result.json create mode 100644 benchmark/results/e2e_dpa200_stride16_original/batch_orders.npz create mode 100644 benchmark/results/e2e_dpa200_stride16_original/outputs.npz create mode 100644 benchmark/results/e2e_dpa200_stride16_original/result.json create mode 100644 benchmark/results/e2e_dpa200_stride1_comparison_graph.json create mode 100644 benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json create mode 100644 benchmark/results/e2e_dpa200_stride1_graph_optimized/batch_orders.npz create mode 100644 benchmark/results/e2e_dpa200_stride1_graph_optimized/outputs.npz create mode 100644 benchmark/results/e2e_dpa200_stride1_graph_optimized/result.json create mode 100644 benchmark/results/e2e_dpa200_stride1_graph_repeat/batch_orders.npz create mode 100644 benchmark/results/e2e_dpa200_stride1_graph_repeat/outputs.npz create mode 100644 benchmark/results/e2e_dpa200_stride1_graph_repeat/result.json create mode 100644 benchmark/results/e2e_dpa200_stride1_original/batch_orders.npz create mode 100644 benchmark/results/e2e_dpa200_stride1_original/outputs.npz create mode 100644 benchmark/results/e2e_dpa200_stride1_original/result.json create mode 100644 benchmark/results/end_to_end_summary.json create mode 100644 benchmark/results/tres_deltagru_rtx4090_laptop.json create mode 100644 benchmark/tres_deltagru_end_to_end_report.html create mode 100644 benchmark/tres_deltagru_training_speed.md create mode 100644 modules/cuda_graph_training.py create mode 100644 tests/test_cuda_graph_frozen_dgru.py create mode 100644 tests/test_cuda_graph_training.py create mode 100644 tests/test_training_pipeline_optimizations.py create mode 100644 tests/test_tres_deltagru_optimized.py diff --git a/arguments.py b/arguments.py index 608e3ce..08fe262 100644 --- a/arguments.py +++ b/arguments.py @@ -40,6 +40,13 @@ def get_arguments(): parser.add_argument('--decay_factor', default=0.1, type=float, help='Learning rate') parser.add_argument('--patience', default=10, type=float, help='Learning rate') parser.add_argument('--grad_clip_val', default=200, type=float, help='Gradient clipping.') + parser.add_argument( + '--cuda_graph_training', action='store_true', default=False, + help=( + 'Opt in to guarded whole-step CUDA-graph replay for supported ' + 'TRes-DeltaGRU DPD training.' + ), + ) # GMP Hyperparameters parser.add_argument('--K', default=5, type=int, help='Degree of GMP model') parser.add_argument('--gmp_memory_length', default=11, type=int, help='Memory length of GMP model') @@ -76,6 +83,8 @@ def get_arguments(): help='Threshold for input deltas') parser.add_argument('--thh', type=float, default=0.0, help='Threshold for hidden state deltas') + parser.add_argument('--collect_delta_stats', action='store_true', default=False, + help='Collect temporal delta sparsity diagnostics during training (adds overhead).') # Optionally, you might want to add DVR-specific arguments parser.add_argument('--num_dvr_units', default=3, type=int, @@ -94,4 +103,4 @@ def get_arguments(): parser.add_argument('--gif_duration', default=10.0, type=float, help='Duration of GIF animations in seconds (default: 10.0).') - return parser.parse_args() \ No newline at end of file + return parser.parse_args() diff --git a/backbones/cuda_graph_frozen_dgru.py b/backbones/cuda_graph_frozen_dgru.py new file mode 100644 index 0000000..51c2dbb --- /dev/null +++ b/backbones/cuda_graph_frozen_dgru.py @@ -0,0 +1,317 @@ +"""Exact CUDA-graph replay for a frozen DGRU used during DPD training. + +The optimization records the existing cuDNN-backed DGRU forward and its input +backward as two CUDA graphs. It neither replaces the recurrence nor changes +the module tree. Unsupported or unsafe calls return ``None`` so the caller can +execute its ordinary eager implementation. +""" + +from __future__ import annotations + +import contextlib +import contextvars +import os +import threading +import weakref + +import torch + + +_DISABLE_ENV = "OPENDPD_DISABLE_CUDA_GRAPH_FROZEN_DGRU" +_TRUE_VALUES = {"1", "true", "yes", "on"} +_MANAGERS = weakref.WeakKeyDictionary() +_MANAGERS_LOCK = threading.Lock() +_CAPTURE_FAILED = object() +_LOCAL_DISABLE_DEPTH = contextvars.ContextVar( + "opendpd_frozen_dgru_graph_disable_depth", default=0 +) + + +def _disabled() -> bool: + return ( + _LOCAL_DISABLE_DEPTH.get() > 0 + or os.getenv(_DISABLE_ENV, "").strip().lower() in _TRUE_VALUES + ) + + +@contextlib.contextmanager +def disable_cuda_graph_frozen_dgru(): + """Temporarily bypass the inner graph without changing process state.""" + + token = _LOCAL_DISABLE_DEPTH.set(_LOCAL_DISABLE_DEPTH.get() + 1) + try: + yield + finally: + _LOCAL_DISABLE_DEPTH.reset(token) + + +def _cuda_autocast_enabled() -> bool: + try: + return torch.is_autocast_enabled("cuda") + except TypeError: # pragma: no cover - compatibility with older PyTorch. + return torch.is_autocast_enabled() + + +def _can_replay(module, input: torch.Tensor, h_0: torch.Tensor | None) -> bool: + if ( + _disabled() + or not module.training + or not torch.is_grad_enabled() + or not input.requires_grad + or input.ndim != 3 + or not input.is_cuda + or input.dtype != torch.float32 + or not input.is_contiguous() + or torch.version.cuda is None + or getattr(torch.version, "hip", None) is not None + or _cuda_autocast_enabled() + or not hasattr(torch.cuda, "CUDAGraph") + ): + return False + try: + if torch.cuda.is_current_stream_capturing(): + return False + except RuntimeError: + return False + + parameters = tuple(module.parameters()) + if not parameters or any( + parameter.requires_grad + or parameter.device != input.device + or parameter.dtype != input.dtype + for parameter in parameters + ): + return False + if h_0 is not None and ( + h_0.requires_grad + or h_0.device != input.device + or h_0.dtype != input.dtype + or not h_0.is_contiguous() + ): + return False + return True + + +def _cache_key(module, input: torch.Tensor, h_0: torch.Tensor | None): + parameter_storage = tuple( + parameter.data_ptr() for parameter in module.parameters() + ) + h0_signature = ( + None if h_0 is None else (tuple(h_0.shape), tuple(h_0.stride())) + ) + return ( + input.device.index, + input.dtype, + tuple(input.shape), + tuple(input.stride()), + h0_signature, + parameter_storage, + ) + + +class _ReplayCache: + def __init__(self): + self.entries = {} + self.lock = threading.Lock() + + def get_or_create(self, module, input, h_0): + key = _cache_key(module, input, h_0) + entry = self.entries.get(key) + if entry is _CAPTURE_FAILED: + return None + if entry is not None: + return entry + + # Capturing is expensive and unsafe to duplicate. A concurrent first + # call simply uses eager execution and can use the cache next time. + if not self.lock.acquire(blocking=False): + return None + try: + entry = self.entries.get(key) + if entry is _CAPTURE_FAILED: + return None + if entry is None: + try: + entry = _FrozenDGRUReplay(module, input, h_0) + except (RuntimeError, torch.cuda.OutOfMemoryError): + self.entries[key] = _CAPTURE_FAILED + return None + self.entries[key] = entry + return entry + finally: + self.lock.release() + + +class _FrozenDGRUReplay: + def __init__(self, module, example_input, example_h0): + self.lock = threading.Lock() + self.busy = False + self.failed = False + self.generation = 0 + self.pending_event = None + self.pending_stream = None + + with torch.cuda.device(example_input.device), torch.enable_grad(): + # Warm cuDNN and autograd on a side stream before capture. Using + # that same stream for both captures keeps retained autograd nodes + # from acquiring stale cross-stream dependencies. + self.capture_stream = torch.cuda.Stream( + device=example_input.device + ) + self.capture_stream.wait_stream(torch.cuda.current_stream()) + with torch.cuda.stream(self.capture_stream): + self.static_input = ( + example_input.detach().clone().requires_grad_() + ) + self.static_h0 = ( + None if example_h0 is None else example_h0.detach().clone() + ) + for _ in range(3): + warm_output = module._forward_eager( + self.static_input, self.static_h0 + ) + warm_gradient = torch.ones_like(warm_output) + torch.autograd.grad( + warm_output, + self.static_input, + grad_outputs=warm_gradient, + ) + del warm_output, warm_gradient + torch.cuda.current_stream().wait_stream(self.capture_stream) + torch.cuda.synchronize(example_input.device) + + self.forward_graph = torch.cuda.CUDAGraph() + with torch.cuda.graph( + self.forward_graph, stream=self.capture_stream + ): + self.static_output = module._forward_eager( + self.static_input, self.static_h0 + ) + + self.static_grad_output = torch.empty_like(self.static_output) + self.backward_graph = torch.cuda.CUDAGraph() + with torch.cuda.graph( + self.backward_graph, stream=self.capture_stream + ): + (self.static_grad_input,) = torch.autograd.grad( + self.static_output, + self.static_input, + grad_outputs=self.static_grad_output, + ) + + def reserve(self) -> int | None: + with self.lock: + if self.failed or self.busy: + return None + if self.pending_event is not None: + current_stream = torch.cuda.current_stream( + self.static_input.device + ) + same_stream = current_stream.cuda_stream == self.pending_stream + if not same_stream and not self.pending_event.query(): + return None + self.pending_event = None + self.pending_stream = None + self.busy = True + self.generation += 1 + return self.generation + + def release(self, generation: int, *, failed: bool = False) -> None: + with self.lock: + if generation != self.generation: + return + self.failed = self.failed or failed + if torch.cuda.is_available(): + event = torch.cuda.Event() + stream = torch.cuda.current_stream(self.static_input.device) + event.record(stream) + self.pending_event = event + self.pending_stream = stream.cuda_stream + self.busy = False + + def forward(self, input, h_0, generation): + if generation != self.generation or not self.busy: + raise RuntimeError("stale frozen-DGRU CUDA-graph reservation") + self.static_input.copy_(input) + if self.static_h0 is not None: + self.static_h0.copy_(h_0) + self.forward_graph.replay() + return self.static_output.clone() + + def backward(self, grad_output, generation): + if generation != self.generation or not self.busy: + raise RuntimeError( + "frozen-DGRU CUDA graph cannot be replayed twice" + ) + self.static_grad_output.copy_(grad_output) + self.backward_graph.replay() + return self.static_grad_input.clone() + + +class _FrozenDGRUReplayFunction(torch.autograd.Function): + @staticmethod + def forward(ctx, input, h_0, replay, generation): + ctx.replay = replay + ctx.generation = generation + ctx.used = False + try: + return replay.forward(input, h_0, generation) + except Exception: + replay.release(generation, failed=True) + raise + + @staticmethod + def backward(ctx, grad_output): + replay = ctx.replay + generation = ctx.generation + if ctx.used: + raise RuntimeError( + "frozen-DGRU CUDA graph supports one backward pass" + ) + ctx.used = True + if torch.is_grad_enabled(): + replay.release(generation) + raise RuntimeError( + "CUDA-graph frozen DGRU supports first-order training only; " + f"set {_DISABLE_ENV}=1 for higher-order autograd" + ) + try: + grad_input = replay.backward(grad_output, generation) + except Exception: + replay.release(generation, failed=True) + raise + replay.release(generation) + return grad_input, None, None, None + + +def try_cuda_graph_frozen_dgru( + module, input: torch.Tensor, h_0: torch.Tensor | None +) -> torch.Tensor | None: + """Return a graph-replayed output, or ``None`` for eager fallback.""" + + if not _can_replay(module, input, h_0): + return None + with _MANAGERS_LOCK: + manager = _MANAGERS.get(module) + if manager is None: + manager = _ReplayCache() + _MANAGERS[module] = manager + replay = manager.get_or_create(module, input, h_0) + if replay is None: + return None + generation = replay.reserve() + if generation is None: + return None + try: + return _FrozenDGRUReplayFunction.apply(input, h_0, replay, generation) + except (RuntimeError, torch.cuda.OutOfMemoryError): + # A replay error disables this cache entry. Eager execution still has + # the original input and is safe unless CUDA itself is unrecoverable. + return None + + +def clear_cuda_graph_frozen_dgru_cache() -> None: + """Drop replay caches; primarily useful for focused tests.""" + + with _MANAGERS_LOCK: + _MANAGERS.clear() diff --git a/backbones/dgru.py b/backbones/dgru.py index a3c7dd2..284e67b 100644 --- a/backbones/dgru.py +++ b/backbones/dgru.py @@ -7,8 +7,8 @@ class DGRU(nn.Module): - def __init__(self, hidden_size, output_size, num_layers, bidirectional=False, batch_first=True, - bias=True): + def __init__(self, hidden_size, output_size, num_layers, + bidirectional=False, batch_first=True, bias=True): super(DGRU, self).__init__() self.hidden_size = hidden_size self.input_size = 6 @@ -39,10 +39,14 @@ def reset_parameters(self): nn.init.constant_(param, 0) if 'weight' in name: for i in range(0, num_gates): - nn.init.orthogonal_(param[i * self.hidden_size:(i + 1) * self.hidden_size, :]) + start = i * self.hidden_size + end = (i + 1) * self.hidden_size + nn.init.orthogonal_(param[start:end, :]) if 'weight_ih_l0' in name: for i in range(0, num_gates): - nn.init.xavier_uniform_(param[i * self.hidden_size:(i + 1) * self.hidden_size, :]) + start = i * self.hidden_size + end = (i + 1) * self.hidden_size + nn.init.xavier_uniform_(param[start:end, :]) for name, param in self.fc_out.named_parameters(): if 'weight' in name: @@ -56,7 +60,7 @@ def reset_parameters(self): if 'bias' in name: nn.init.constant_(param, 0) - def forward(self, x, h_0): + def _forward_eager(self, x, h_0): # Feature Extraction i_x = torch.unsqueeze(x[..., 0], dim=-1) q_x = torch.unsqueeze(x[..., 1], dim=-1) @@ -72,3 +76,15 @@ def forward(self, x, h_0): out = torch.cat((out, x), dim=-1) out = self.fc_out(out) return out + + def forward(self, x, h_0): + # A frozen PA needs gradients only with respect to its input. For the + # common fixed-shape CUDA training path, replay the exact eager/cuDNN + # kernels and their input backward to remove launch overhead. The + # helper returns None for every unsupported or unsafe call. + from backbones.cuda_graph_frozen_dgru import try_cuda_graph_frozen_dgru + + graph_output = try_cuda_graph_frozen_dgru(self, x, h_0) + if graph_output is not None: + return graph_output + return self._forward_eager(x, h_0) diff --git a/backbones/tres_deltagru.py b/backbones/tres_deltagru.py index 2755bb3..6699c62 100644 --- a/backbones/tres_deltagru.py +++ b/backbones/tres_deltagru.py @@ -1,12 +1,19 @@ +import math +import os + +import numpy as np import torch -from torch import Tensor import torch.nn as nn -import torch.nn.functional as F -import numpy as np -import csv -import os +from torch import Tensor + from quant.modules.ops import Add, Mul -from torch import nn + +try: + from backbones.triton_deltagru import can_use_triton_deltagru, triton_deltagru +except ImportError: # Triton is optional; the eager implementation is portable. + can_use_triton_deltagru = None + triton_deltagru = None + class TResDeltaGRU(nn.Module): def __init__(self, input_size, hidden_size, output_size, num_layers, thx=0, thh=0, @@ -47,10 +54,16 @@ def __init__(self, input_size, hidden_size, output_size, num_layers, thx=0, thh= bias=False), nn.Hardswish(), ) - self.set_debug(1) + # Statistics are diagnostic side effects, not part of the network. They + # used to add four reductions per recurrent timestep during every train + # step. Keep them opt-in and collect them inside the fused kernel when + # explicitly enabled. + self.set_debug(0) def set_debug(self, value): + value = int(value) setattr(self, "debug", value) + self.rnn.debug = value self.rnn.statistics = { "num_dx_zeros": 0, "num_dx_numel": 0, @@ -86,7 +99,7 @@ def reset_parameters(self): nn.init.constant_(param, 0) - def forward(self, x, h_0): + def forward(self, x, h_0=None): skip_x = self.tcn(x.transpose(1,2)).transpose(1,2) last_step = torch.roll(x, shifts=-1, dims=1) # Feature Extraction @@ -98,7 +111,11 @@ def forward(self, x, h_0): amp = torch.sqrt(amp2) amp3 = torch.pow(amp, 3) x = torch.cat((i_x, q_x, amp, amp3, i_last, q_last), dim=-1) - out = self.rnn(x, h_0) + # The old call passed ``h_0`` as x_p_0 while leaving the other recurrent + # states unset; process_inputs_first consequently discarded it and made + # all-zero states. Calling without it preserves that behaviour and + # avoids an unnecessary allocation/copy in CoreModel. + out = self.rnn(x) out = self.fc_out(out)+skip_x return out @@ -147,6 +164,7 @@ def __init__(self, self.x_p_length = max(self.input_size, self.hidden_size) self.batch_first = True self.debug = 1 + self.use_triton = os.environ.get("OPENDPD_DISABLE_TRITON_DELTAGRU", "0") != "1" # Statistics self.abs_sum_delta_hid = torch.zeros(1) self.sp_dx = 0 @@ -246,29 +264,23 @@ def layer_forward(self, input: Tensor, l: int, x_p_0: Tensor = None, h_0: Tensor input_size = input.size(-1) - th_x = torch.tensor(self.th_x, dtype=input.dtype) - th_h = torch.tensor(self.th_h, dtype=input.dtype) + th_x = self.th_x + th_h = self.th_h inputs = input.unbind(0) output = [] - reg = torch.zeros(1, dtype=input.dtype, device=input.device).squeeze() - x_p = x_p_0[:, :input_size] h = h_0 h_p = h_p_0 dm_nh = dm_nh_0 dm = dm_0 - l1_norm_delta_h = torch.zeros(1, dtype=input.dtype, device=input.device) - seq_len = len(inputs) for t in range(seq_len): x = inputs[t] delta_x, delta_h, delta_x_abs, delta_h_abs = self.compute_deltas(x, x_p, h, h_p, th_x, th_h) - reg += torch.sum(torch.abs(delta_h)) - if self.debug: zero_mask_delta_x = torch.as_tensor(delta_x == 0, dtype=x.dtype) zero_mask_delta_h = torch.as_tensor(delta_h == 0, dtype=x.dtype) @@ -279,8 +291,6 @@ def layer_forward(self, input: Tensor, l: int, x_p_0: Tensor = None, h_0: Tensor x_p, h_p = self.update_states(delta_x_abs, delta_h_abs, x, h, x_p, h_p, th_x, th_h) - l1_norm_delta_h += torch.sum(torch.abs(delta_h)) - dm, dm_r, dm_z, dm_n, dm_nh = self.compute_gates(delta_x, delta_h, dm, dm_nh) gate_r = self.sigmoid(dm_r) @@ -295,10 +305,107 @@ def layer_forward(self, input: Tensor, l: int, x_p_0: Tensor = None, h_0: Tensor def forward(self, input: Tensor, x_p_0: Tensor = None, h_0: Tensor = None, h_p_0: Tensor = None, dm_nh_0: Tensor = None, dm_0: Tensor = None): + states = (x_p_0, h_0, h_p_0, dm_nh_0, dm_0) + if self._can_use_triton(input) and self._states_can_use_triton(input, states): + batch_size = input.size(0) + if x_p_0 is None or h_0 is None or h_p_0 is None or dm_nh_0 is None or dm_0 is None: + x_p_0 = input.new_zeros((self.num_layers, batch_size, self.x_p_length)) + h_0 = input.new_zeros((self.num_layers, batch_size, self.hidden_size)) + h_p_0 = input.new_zeros((self.num_layers, batch_size, self.hidden_size)) + dm_nh_0 = input.new_zeros((self.num_layers, batch_size, self.hidden_size)) + dm_0 = input.new_zeros((self.num_layers, batch_size, self.weight_ih_height)) + + collect_stats = bool(self.debug) + stats = torch.zeros(2, dtype=torch.int64, device=input.device) if collect_stats else torch.empty( + 2, dtype=torch.int64, device=input.device + ) + output = triton_deltagru( + input.contiguous(), + x_p_0[0, :, :self.input_size].contiguous(), + h_0[0].contiguous(), + h_p_0[0].contiguous(), + dm_nh_0[0].contiguous(), + dm_0[0].contiguous(), + self.x2h.weight, + self.h2h.weight, + stats, + self.th_x, + self.th_h, + collect_stats, + ) + if collect_stats: + # Match the eager diagnostic counters, which use input dtype. + self.statistics["num_dx_zeros"] += stats[0].to(input.dtype) + self.statistics["num_dh_zeros"] += stats[1].to(input.dtype) + self.statistics["num_dx_numel"] += input.numel() + self.statistics["num_dh_numel"] += batch_size * input.size(1) * self.hidden_size + return output + x, x_p_0, h_0, h_p_0, dm_nh_0, dm_0 = self.process_inputs_first(input, x_p_0, h_0, h_p_0, dm_nh_0, dm_0) for l in range(self.num_layers): x = self.layer_forward(x, l, x_p_0[l], h_0[l], h_p_0[l], dm_nh_0[l], dm_0[l]) x = x.transpose(0, 1) - return x \ No newline at end of file + return x + + def _can_use_triton(self, input: Tensor) -> bool: + """The fused path is for the dense-float, one-layer CUDA cell. + + Quantization-aware training replaces these exact module types with + fake-quantized subclasses/operations. Reassociating those quantization + boundaries would change the model, so QAT deliberately stays eager. + """ + + return ( + self.use_triton + and self.num_layers == 1 + and can_use_triton_deltagru is not None + and not torch.is_autocast_enabled() + and not math.isnan(self.th_x) + and not math.isnan(self.th_h) + and input.ndim == 3 + and input.size(-1) == self.input_size + and type(self.x2h) is nn.Linear + and type(self.h2h) is nn.Linear + and self.x2h.bias is None + and self.h2h.bias is None + and self.x2h.weight.shape == (self.weight_ih_height, self.input_size) + and self.h2h.weight.shape == (self.weight_ih_height, self.hidden_size) + and self.x2h.weight.device == input.device + and self.h2h.weight.device == input.device + and self.x2h.weight.dtype == input.dtype + and self.h2h.weight.dtype == input.dtype + and self.x2h.weight.is_contiguous() + and self.h2h.weight.is_contiguous() + and type(self.sigmoid) is nn.Sigmoid + and type(self.tanh) is nn.Tanh + and type(self.add) is Add + and type(self.mul) is Mul + and can_use_triton_deltagru(input, self.hidden_size) + ) + + def _states_can_use_triton(self, input: Tensor, states: tuple) -> bool: + # The eager path discards every supplied state when any one is missing. + # The fused path does the same, so that case is always safe. + if any(state is None for state in states): + return True + + x_p_0, h_0, h_p_0, dm_nh_0, dm_0 = states + if not all(isinstance(state, Tensor) for state in states): + return False + batch_size = input.size(0) + common = (self.num_layers, batch_size) + expected_shapes = ( + common + (self.x_p_length,), + common + (self.hidden_size,), + common + (self.hidden_size,), + common + (self.hidden_size,), + common + (self.weight_ih_height,), + ) + return all( + tuple(state.shape) == shape + and state.device == input.device + and state.dtype == input.dtype + for state, shape in zip(states, expected_shapes) + ) diff --git a/backbones/triton_deltagru.py b/backbones/triton_deltagru.py new file mode 100644 index 0000000..861a0f1 --- /dev/null +++ b/backbones/triton_deltagru.py @@ -0,0 +1,632 @@ +"""Fused CUDA implementation of the DeltaGRU recurrence. + +The public helper in this module is intentionally small and optional. Importing +``backbones.tres_deltagru`` must continue to work on machines without Triton; +callers should check :func:`can_use_triton_deltagru` before dispatching here. + +The kernels preserve the eager recurrence, including its threshold comparisons +and separate input/hidden accumulator states. The backward kernel performs the +reverse recurrence and leaves the two weight-gradient reductions to cuBLAS. +That avoids a highly contended atomic reduction over batch and time. +""" + +from __future__ import annotations + +import math + +import torch + +try: + import triton + import triton.language as tl + from triton.language.extra import libdevice +except (ImportError, OSError): # pragma: no cover - CPU-only installations. + triton = None + tl = None + libdevice = None + + +def can_use_triton_deltagru(input: torch.Tensor, hidden_size: int) -> bool: + """Return whether the fused kernel supports this tensor configuration.""" + + return ( + triton is not None + and input.ndim == 3 + and input.shape[0] > 0 + and input.shape[1] > 0 + and input.is_cuda + and input.is_contiguous() + and torch.version.cuda is not None + and getattr(torch.version, "hip", None) is None + and input.dtype == torch.float32 + and 0 < input.shape[-1] <= 16 + and 0 < hidden_size <= 32 + ) + + +if triton is not None: + + @triton.jit + def _deltagru_forward_kernel( + x_ptr, + x_p0_ptr, + h0_ptr, + h_p0_ptr, + dm_nh0_ptr, + dm0_ptr, + weight_x_ptr, + weight_h_ptr, + out_ptr, + delta_x_ptr, + delta_h_ptr, + gate_r_ptr, + gate_z_ptr, + gate_n_ptr, + dm_nh_hist_ptr, + mask_x_ptr, + mask_h_ptr, + stats_ptr, + seq_len, + input_size: tl.constexpr, + hidden_size: tl.constexpr, + th_x: tl.constexpr, + th_h: tl.constexpr, + collect_stats: tl.constexpr, + save_intermediates: tl.constexpr, + block_i: tl.constexpr, + block_h: tl.constexpr, + ): + batch = tl.program_id(0) + offs_i = tl.arange(0, block_i) + offs_h = tl.arange(0, block_h) + mask_i = offs_i < input_size + mask_h = offs_h < hidden_size + + # Every program owns one batch row, so all recurrent state stays local. + x_p = tl.load(x_p0_ptr + batch * input_size + offs_i, mask=mask_i, other=0.0) + h = tl.load(h0_ptr + batch * hidden_size + offs_h, mask=mask_h, other=0.0) + h_p = tl.load(h_p0_ptr + batch * hidden_size + offs_h, mask=mask_h, other=0.0) + dm_r = tl.load(dm0_ptr + batch * (3 * hidden_size) + offs_h, mask=mask_h, other=0.0) + dm_z = tl.load( + dm0_ptr + batch * (3 * hidden_size) + hidden_size + offs_h, + mask=mask_h, + other=0.0, + ) + dm_n = tl.load( + dm0_ptr + batch * (3 * hidden_size) + 2 * hidden_size + offs_h, + mask=mask_h, + other=0.0, + ) + dm_nh = tl.load(dm_nh0_ptr + batch * hidden_size + offs_h, mask=mask_h, other=0.0) + + # The weights are loop-invariant. Loading them before the scan also + # gives the compiler a chance to keep this tiny model in registers. + wx_offsets = offs_h[:, None] * input_size + offs_i[None, :] + wh_offsets = offs_h[:, None] * hidden_size + offs_h[None, :] + wx_r = tl.load(weight_x_ptr + wx_offsets, mask=mask_h[:, None] & mask_i[None, :], other=0.0) + wx_z = tl.load( + weight_x_ptr + hidden_size * input_size + wx_offsets, + mask=mask_h[:, None] & mask_i[None, :], + other=0.0, + ) + wx_n = tl.load( + weight_x_ptr + 2 * hidden_size * input_size + wx_offsets, + mask=mask_h[:, None] & mask_i[None, :], + other=0.0, + ) + wh_r = tl.load(weight_h_ptr + wh_offsets, mask=mask_h[:, None] & mask_h[None, :], other=0.0) + wh_z = tl.load( + weight_h_ptr + hidden_size * hidden_size + wh_offsets, + mask=mask_h[:, None] & mask_h[None, :], + other=0.0, + ) + wh_n = tl.load( + weight_h_ptr + 2 * hidden_size * hidden_size + wh_offsets, + mask=mask_h[:, None] & mask_h[None, :], + other=0.0, + ) + + zeros_x = tl.zeros((), tl.int64) + zeros_h = tl.zeros((), tl.int64) + + for time in tl.range(0, seq_len, loop_unroll_factor=1): + x_offsets = (batch * seq_len + time) * input_size + offs_i + xt = tl.load(x_ptr + x_offsets, mask=mask_i, other=0.0) + + raw_delta_x = xt - x_p + raw_delta_h = h - h_p + abs_delta_x = tl.abs(raw_delta_x) + abs_delta_h = tl.abs(raw_delta_h) + + # masked_fill(abs(delta) < threshold, 0) and where(abs(delta) >= + # threshold, current, previous) are deliberately kept separate: + # their behaviour differs for NaNs in the eager implementation. + keep_delta_x = ~(abs_delta_x < th_x) + keep_delta_h = ~(abs_delta_h < th_h) + update_x = abs_delta_x >= th_x + update_h = abs_delta_h >= th_h + dx = tl.where(keep_delta_x, raw_delta_x, 0.0) + dh = tl.where(keep_delta_h, raw_delta_h, 0.0) + x_p = tl.where(update_x, xt, x_p) + h_p = tl.where(update_h, h, h_p) + + input_mac_r = tl.sum(wx_r * dx[None, :], axis=1) + dm_r + input_mac_z = tl.sum(wx_z * dx[None, :], axis=1) + dm_z + input_mac_n = tl.sum(wx_n * dx[None, :], axis=1) + dm_n + hidden_mac_r = tl.sum(wh_r * dh[None, :], axis=1) + hidden_mac_z = tl.sum(wh_z * dh[None, :], axis=1) + hidden_mac_n = tl.sum(wh_n * dh[None, :], axis=1) + + dm_r = input_mac_r + hidden_mac_r + dm_z = input_mac_z + hidden_mac_z + dm_n = input_mac_n + dm_nh = hidden_mac_n + dm_nh + + r = tl.sigmoid(dm_r) + z = tl.sigmoid(dm_z) + n = libdevice.tanh(dm_n + r * dm_nh) + h = (1.0 - z) * n + z * h + + h_offsets = (batch * seq_len + time) * hidden_size + offs_h + tl.store(out_ptr + h_offsets, h, mask=mask_h) + if save_intermediates: + tl.store(delta_x_ptr + x_offsets, dx, mask=mask_i) + tl.store(delta_h_ptr + h_offsets, dh, mask=mask_h) + tl.store(gate_r_ptr + h_offsets, r, mask=mask_h) + tl.store(gate_z_ptr + h_offsets, z, mask=mask_h) + tl.store(gate_n_ptr + h_offsets, n, mask=mask_h) + tl.store(dm_nh_hist_ptr + h_offsets, dm_nh, mask=mask_h) + tl.store(mask_x_ptr + x_offsets, update_x, mask=mask_i) + tl.store(mask_h_ptr + h_offsets, update_h, mask=mask_h) + + if collect_stats: + zeros_x += tl.sum(((dx == 0.0) & mask_i).to(tl.int64), axis=0) + zeros_h += tl.sum(((dh == 0.0) & mask_h).to(tl.int64), axis=0) + + if collect_stats: + tl.atomic_add(stats_ptr, zeros_x) + tl.atomic_add(stats_ptr + 1, zeros_h) + + @triton.jit + def _deltagru_backward_kernel( + grad_out_ptr, + h0_ptr, + out_ptr, + delta_x_ptr, + delta_h_ptr, + gate_r_ptr, + gate_z_ptr, + gate_n_ptr, + dm_nh_hist_ptr, + mask_x_ptr, + mask_h_ptr, + weight_x_ptr, + weight_h_ptr, + grad_x_ptr, + grad_x_p0_ptr, + grad_h0_ptr, + grad_h_p0_ptr, + grad_dm_nh0_ptr, + grad_dm0_ptr, + grad_mac_x_ptr, + grad_mac_h_ptr, + seq_len, + input_size: tl.constexpr, + hidden_size: tl.constexpr, + block_i: tl.constexpr, + block_h: tl.constexpr, + ): + batch = tl.program_id(0) + offs_i = tl.arange(0, block_i) + offs_h = tl.arange(0, block_h) + mask_i = offs_i < input_size + mask_h = offs_h < hidden_size + + wx_offsets = offs_h[:, None] * input_size + offs_i[None, :] + wh_offsets = offs_h[:, None] * hidden_size + offs_h[None, :] + wx_r = tl.load(weight_x_ptr + wx_offsets, mask=mask_h[:, None] & mask_i[None, :], other=0.0) + wx_z = tl.load( + weight_x_ptr + hidden_size * input_size + wx_offsets, + mask=mask_h[:, None] & mask_i[None, :], + other=0.0, + ) + wx_n = tl.load( + weight_x_ptr + 2 * hidden_size * input_size + wx_offsets, + mask=mask_h[:, None] & mask_i[None, :], + other=0.0, + ) + wh_r = tl.load(weight_h_ptr + wh_offsets, mask=mask_h[:, None] & mask_h[None, :], other=0.0) + wh_z = tl.load( + weight_h_ptr + hidden_size * hidden_size + wh_offsets, + mask=mask_h[:, None] & mask_h[None, :], + other=0.0, + ) + wh_n = tl.load( + weight_h_ptr + 2 * hidden_size * hidden_size + wh_offsets, + mask=mask_h[:, None] & mask_h[None, :], + other=0.0, + ) + + grad_x_p = tl.zeros((block_i,), tl.float32) + grad_h = tl.zeros((block_h,), tl.float32) + grad_h_p = tl.zeros((block_h,), tl.float32) + grad_dm_r = tl.zeros((block_h,), tl.float32) + grad_dm_z = tl.zeros((block_h,), tl.float32) + grad_dm_n = tl.zeros((block_h,), tl.float32) + grad_dm_nh = tl.zeros((block_h,), tl.float32) + h0 = tl.load(h0_ptr + batch * hidden_size + offs_h, mask=mask_h, other=0.0) + + for reverse_time in tl.range(0, seq_len, loop_unroll_factor=1): + time = seq_len - 1 - reverse_time + h_offsets = (batch * seq_len + time) * hidden_size + offs_h + x_offsets = (batch * seq_len + time) * input_size + offs_i + + grad_h += tl.load(grad_out_ptr + h_offsets, mask=mask_h, other=0.0) + h_prev = tl.load( + out_ptr + h_offsets - hidden_size, + mask=mask_h & (time > 0), + other=0.0, + ) + h_prev = tl.where(time > 0, h_prev, h0) + r = tl.load(gate_r_ptr + h_offsets, mask=mask_h, other=0.0) + z = tl.load(gate_z_ptr + h_offsets, mask=mask_h, other=0.0) + n = tl.load(gate_n_ptr + h_offsets, mask=mask_h, other=0.0) + dm_nh = tl.load(dm_nh_hist_ptr + h_offsets, mask=mask_h, other=0.0) + + grad_n = grad_h * (1.0 - z) + grad_z = grad_h * (h_prev - n) + grad_h_prev = grad_h * z + grad_pre_n = grad_n * (1.0 - n * n) + grad_r = grad_pre_n * dm_nh + grad_dm_nh += grad_pre_n * r + grad_dm_r += grad_r * r * (1.0 - r) + grad_dm_z += grad_z * z * (1.0 - z) + grad_dm_n += grad_pre_n + + grad_mac_x_r = grad_dm_r + grad_mac_x_z = grad_dm_z + grad_mac_x_n = grad_dm_n + grad_mac_h_r = grad_dm_r + grad_mac_h_z = grad_dm_z + grad_mac_h_n = grad_dm_nh + + grad_dx = ( + tl.sum(wx_r * grad_mac_x_r[:, None], axis=0) + + tl.sum(wx_z * grad_mac_x_z[:, None], axis=0) + + tl.sum(wx_n * grad_mac_x_n[:, None], axis=0) + ) + grad_dh = ( + tl.sum(wh_r * grad_mac_h_r[:, None], axis=0) + + tl.sum(wh_z * grad_mac_h_z[:, None], axis=0) + + tl.sum(wh_n * grad_mac_h_n[:, None], axis=0) + ) + + update_x = tl.load(mask_x_ptr + x_offsets, mask=mask_i, other=0).to(tl.int1) + update_h = tl.load(mask_h_ptr + h_offsets, mask=mask_h, other=0).to(tl.int1) + saved_delta_x = tl.load(delta_x_ptr + x_offsets, mask=mask_i, other=0.0) + saved_delta_h = tl.load(delta_h_ptr + h_offsets, mask=mask_h, other=0.0) + # For non-NaN thresholds, masked-fill's keep condition differs from + # the state-update condition only when a raw delta is NaN. + keep_delta_x = update_x | (saved_delta_x != saved_delta_x) + keep_delta_h = update_h | (saved_delta_h != saved_delta_h) + grad_xt = tl.where(keep_delta_x, grad_dx, 0.0) + tl.where( + update_x, grad_x_p, 0.0 + ) + grad_x_p = tl.where(keep_delta_x, -grad_dx, 0.0) + tl.where( + update_x, 0.0, grad_x_p + ) + grad_h_prev += tl.where(keep_delta_h, grad_dh, 0.0) + tl.where( + update_h, grad_h_p, 0.0 + ) + grad_h_p = tl.where(keep_delta_h, -grad_dh, 0.0) + tl.where( + update_h, 0.0, grad_h_p + ) + + tl.store(grad_x_ptr + x_offsets, grad_xt, mask=mask_i) + mac_offsets = (batch * seq_len + time) * (3 * hidden_size) + offs_h + tl.store(grad_mac_x_ptr + mac_offsets, grad_mac_x_r, mask=mask_h) + tl.store( + grad_mac_x_ptr + mac_offsets + hidden_size, + grad_mac_x_z, + mask=mask_h, + ) + tl.store( + grad_mac_x_ptr + mac_offsets + 2 * hidden_size, + grad_mac_x_n, + mask=mask_h, + ) + tl.store(grad_mac_h_ptr + mac_offsets, grad_mac_h_r, mask=mask_h) + tl.store( + grad_mac_h_ptr + mac_offsets + hidden_size, + grad_mac_h_z, + mask=mask_h, + ) + tl.store( + grad_mac_h_ptr + mac_offsets + 2 * hidden_size, + grad_mac_h_n, + mask=mask_h, + ) + + # Gradients for the accumulator carries at the previous timestep. + grad_dm_r = grad_mac_x_r + grad_dm_z = grad_mac_x_z + grad_dm_n = grad_mac_x_n + grad_dm_nh = grad_mac_h_n + grad_h = grad_h_prev + + tl.store(grad_x_p0_ptr + batch * input_size + offs_i, grad_x_p, mask=mask_i) + tl.store(grad_h0_ptr + batch * hidden_size + offs_h, grad_h, mask=mask_h) + tl.store(grad_h_p0_ptr + batch * hidden_size + offs_h, grad_h_p, mask=mask_h) + tl.store(grad_dm_nh0_ptr + batch * hidden_size + offs_h, grad_dm_nh, mask=mask_h) + dm0_offsets = batch * (3 * hidden_size) + offs_h + tl.store(grad_dm0_ptr + dm0_offsets, grad_dm_r, mask=mask_h) + tl.store(grad_dm0_ptr + dm0_offsets + hidden_size, grad_dm_z, mask=mask_h) + tl.store(grad_dm0_ptr + dm0_offsets + 2 * hidden_size, grad_dm_n, mask=mask_h) + + +class _TritonDeltaGRUFunction(torch.autograd.Function): + @staticmethod + def forward( + ctx, + input: torch.Tensor, + x_p0: torch.Tensor, + h0: torch.Tensor, + h_p0: torch.Tensor, + dm_nh0: torch.Tensor, + dm0: torch.Tensor, + weight_x: torch.Tensor, + weight_h: torch.Tensor, + stats: torch.Tensor, + th_x: float, + th_h: float, + collect_stats: bool, + ) -> torch.Tensor: + batch_size, seq_len, input_size = input.shape + hidden_size = h0.shape[-1] + output = input.new_empty((batch_size, seq_len, hidden_size)) + delta_x = torch.empty_like(input) + state_shape = (batch_size, seq_len, hidden_size) + delta_h = input.new_empty(state_shape) + gate_r = input.new_empty(state_shape) + gate_z = input.new_empty(state_shape) + gate_n = input.new_empty(state_shape) + dm_nh_hist = input.new_empty(state_shape) + mask_x = torch.empty_like(input, dtype=torch.uint8) + mask_h = torch.empty(state_shape, device=input.device, dtype=torch.uint8) + + block_i = triton.next_power_of_2(input_size) + block_h = triton.next_power_of_2(hidden_size) + _deltagru_forward_kernel[(batch_size,)]( + input, + x_p0, + h0, + h_p0, + dm_nh0, + dm0, + weight_x, + weight_h, + output, + delta_x, + delta_h, + gate_r, + gate_z, + gate_n, + dm_nh_hist, + mask_x, + mask_h, + stats, + seq_len=seq_len, + input_size=input_size, + hidden_size=hidden_size, + th_x=th_x, + th_h=th_h, + collect_stats=collect_stats, + save_intermediates=True, + block_i=block_i, + block_h=block_h, + num_warps=1, + ) + ctx.save_for_backward( + h0, + output, + delta_x, + delta_h, + gate_r, + gate_z, + gate_n, + dm_nh_hist, + mask_x, + mask_h, + weight_x, + weight_h, + ) + ctx.input_size = input_size + ctx.hidden_size = hidden_size + return output + + @staticmethod + def backward(ctx, grad_output: torch.Tensor): + if torch.is_grad_enabled(): + raise RuntimeError( + "fused DeltaGRU supports first-order training only; set " + "OPENDPD_DISABLE_TRITON_DELTAGRU=1 for higher-order autograd" + ) + ( + h0, + output, + delta_x, + delta_h, + gate_r, + gate_z, + gate_n, + dm_nh_hist, + mask_x, + mask_h, + weight_x, + weight_h, + ) = ctx.saved_tensors + grad_output = grad_output.contiguous() + batch_size, seq_len, hidden_size = output.shape + input_size = ctx.input_size + + grad_input = delta_x.new_empty(delta_x.shape) + grad_x_p0 = delta_x.new_empty((batch_size, input_size)) + grad_h0 = output.new_empty((batch_size, hidden_size)) + grad_h_p0 = output.new_empty((batch_size, hidden_size)) + grad_dm_nh0 = output.new_empty((batch_size, hidden_size)) + grad_dm0 = output.new_empty((batch_size, 3 * hidden_size)) + grad_mac_x = output.new_empty((batch_size, seq_len, 3 * hidden_size)) + grad_mac_h = output.new_empty((batch_size, seq_len, 3 * hidden_size)) + + block_i = triton.next_power_of_2(input_size) + block_h = triton.next_power_of_2(hidden_size) + _deltagru_backward_kernel[(batch_size,)]( + grad_output, + h0, + output, + delta_x, + delta_h, + gate_r, + gate_z, + gate_n, + dm_nh_hist, + mask_x, + mask_h, + weight_x, + weight_h, + grad_input, + grad_x_p0, + grad_h0, + grad_h_p0, + grad_dm_nh0, + grad_dm0, + grad_mac_x, + grad_mac_h, + seq_len=seq_len, + input_size=input_size, + hidden_size=hidden_size, + block_i=block_i, + block_h=block_h, + num_warps=1, + ) + + flat_delta_x = delta_x.reshape(-1, input_size) + flat_delta_h = delta_h.reshape(-1, hidden_size) + flat_grad_mac_x = grad_mac_x.reshape(-1, 3 * hidden_size) + flat_grad_mac_h = grad_mac_h.reshape(-1, 3 * hidden_size) + grad_weight_x = flat_grad_mac_x.t().matmul(flat_delta_x) + grad_weight_h = flat_grad_mac_h.t().matmul(flat_delta_h) + + return ( + grad_input, + grad_x_p0, + grad_h0, + grad_h_p0, + grad_dm_nh0, + grad_dm0, + grad_weight_x, + grad_weight_h, + None, + None, + None, + None, + ) + + +def triton_deltagru( + input: torch.Tensor, + x_p0: torch.Tensor, + h0: torch.Tensor, + h_p0: torch.Tensor, + dm_nh0: torch.Tensor, + dm0: torch.Tensor, + weight_x: torch.Tensor, + weight_h: torch.Tensor, + stats: torch.Tensor, + th_x: float, + th_h: float, + collect_stats: bool = False, +) -> torch.Tensor: + """Run the fused recurrence on a contiguous ``(batch, time, input)`` tensor.""" + + if triton is None: # pragma: no cover + raise RuntimeError("Triton is not installed") + if math.isnan(th_x) or math.isnan(th_h): + raise ValueError("DeltaGRU thresholds must not be NaN") + batch_size, seq_len, input_size = input.shape + hidden_size = h0.shape[-1] if h0.ndim else 0 + expected = ( + (x_p0, (batch_size, input_size)), + (h0, (batch_size, hidden_size)), + (h_p0, (batch_size, hidden_size)), + (dm_nh0, (batch_size, hidden_size)), + (dm0, (batch_size, 3 * hidden_size)), + (weight_x, (3 * hidden_size, input_size)), + (weight_h, (3 * hidden_size, hidden_size)), + ) + if not can_use_triton_deltagru(input, hidden_size): + raise ValueError("unsupported DeltaGRU input tensor or hidden size") + if not all( + tensor.shape == shape + and tensor.device == input.device + and tensor.dtype == input.dtype + and tensor.is_contiguous() + for tensor, shape in expected + ): + raise ValueError("DeltaGRU states and weights must match input shape/device/dtype") + if ( + stats.device != input.device + or stats.dtype != torch.int64 + or stats.numel() < 2 + or not stats.is_contiguous() + ): + raise ValueError("stats must be a contiguous CUDA int64 tensor with at least 2 elements") + if not torch.is_grad_enabled(): + output = input.new_empty((batch_size, seq_len, hidden_size)) + dummy = input.new_empty(1) + dummy_mask = torch.empty(1, device=input.device, dtype=torch.uint8) + _deltagru_forward_kernel[(batch_size,)]( + input, + x_p0, + h0, + h_p0, + dm_nh0, + dm0, + weight_x, + weight_h, + output, + dummy, + dummy, + dummy, + dummy, + dummy, + dummy, + dummy_mask, + dummy_mask, + stats, + seq_len=seq_len, + input_size=input_size, + hidden_size=hidden_size, + th_x=th_x, + th_h=th_h, + collect_stats=collect_stats, + save_intermediates=False, + block_i=triton.next_power_of_2(input_size), + block_h=triton.next_power_of_2(hidden_size), + num_warps=1, + ) + return output + return _TritonDeltaGRUFunction.apply( + input, + x_p0, + h0, + h_p0, + dm_nh0, + dm0, + weight_x, + weight_h, + stats, + th_x, + th_h, + collect_stats, + ) diff --git a/bash_scripts/OpenDPDv2.sh b/bash_scripts/OpenDPDv2.sh index f5cf179..27c4aa5 100644 --- a/bash_scripts/OpenDPDv2.sh +++ b/bash_scripts/OpenDPDv2.sh @@ -40,6 +40,11 @@ lr=${LR:-5e-3} lr_end=${LR_END:-1e-4} decay_factor=${DECAY_FACTOR:-0.5} patience=${PATIENCE:-10} +cuda_graph_training=${CUDA_GRAPH_TRAINING:-1} +cuda_graph_opts=() +if [[ "${cuda_graph_training}" == "1" ]]; then + cuda_graph_opts+=(--cuda_graph_training) +fi seed_values=(0) PA_backbone=dgru @@ -107,7 +112,8 @@ for i_seed in "${seed_values[@]}"; do --decay_factor "${decay_factor}" \ --patience "${patience}" \ --thx "${thx}" \ - --thh "${thh}" + --thh "${thh}" \ + "${cuda_graph_opts[@]}" quant_dir_label="w${quant_n_bits_w}a${quant_n_bits_a}" diff --git a/benchmark/benchmark_end_to_end.py b/benchmark/benchmark_end_to_end.py new file mode 100644 index 0000000..86a26e1 --- /dev/null +++ b/benchmark/benchmark_end_to_end.py @@ -0,0 +1,882 @@ +#!/usr/bin/env python3 +"""Controlled end-to-end benchmark for TRes-DeltaGRU DPD training. + +The same script can execute the committed reference tree and a working tree: + + # Create one deterministic, trained PA fixture with the reference code. + python benchmark/benchmark_end_to_end.py prepare \ + --repo-root /tmp/OpenDPD-e2e-baseline \ + --fixture benchmark/fixtures/dpa200_dgru_h23.pt + + # Run identical batches through the two implementations. + python benchmark/benchmark_end_to_end.py run \ + --repo-root /tmp/OpenDPD-e2e-baseline --implementation original \ + --fixture benchmark/fixtures/dpa200_dgru_h23.pt \ + --output-dir benchmark/results/e2e_original + python benchmark/benchmark_end_to_end.py run \ + --repo-root . --implementation optimized \ + --fixture benchmark/fixtures/dpa200_dgru_h23.pt \ + --output-dir benchmark/results/e2e_optimized + + python benchmark/benchmark_end_to_end.py compare \ + --reference-dir benchmark/results/e2e_original \ + --candidate-dir benchmark/results/e2e_optimized \ + --json-out benchmark/results/e2e_comparison.json + +The fixture contains identical PA and DPD initial state dictionaries. Every +run also records the exact shuffled frame indices used in each epoch. The run +includes CSV loading, frame construction, host-to-device transfer, one isolated +compile/warm-up step, training, validation, testing, the repository's ACLR, +NMSE and EVM functions, best-checkpoint selection, and artifact serialization. +""" + +from __future__ import annotations + +import argparse +import contextlib +import hashlib +import importlib +import io +import json +import os +import platform +import subprocess +import sys +import time +from pathlib import Path +from types import SimpleNamespace +from typing import Any, Iterable + +import numpy as np +import torch +from torch.utils.data import DataLoader, Sampler + + +SCRIPT_ROOT = Path(__file__).resolve().parent.parent +DEFAULT_DEVICE = "cuda" if torch.cuda.is_available() else "cpu" +METRIC_NAMES = ("NMSE", "EVM", "ACLR_L", "ACLR_R", "ACLR_AVG") + + +class FixedOrderSampler(Sampler[int]): + """Yield a recorded permutation without consuming the global RNG.""" + + def __init__(self, indices: Iterable[int]): + self.indices = tuple(int(index) for index in indices) + + def __iter__(self): + return iter(self.indices) + + def __len__(self) -> int: + return len(self.indices) + + +def _json_default(value: Any): + if isinstance(value, Path): + return str(value) + if isinstance(value, (np.floating, np.integer)): + return value.item() + if isinstance(value, torch.Tensor): + return value.detach().cpu().tolist() + raise TypeError(f"cannot serialize {type(value).__name__}") + + +def _write_json(path: Path, payload: dict[str, Any]) -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text( + json.dumps(payload, indent=2, sort_keys=True, default=_json_default) + "\n", + encoding="utf-8", + ) + + +def _command_output(command: list[str], cwd: Path) -> str | None: + try: + result = subprocess.run( + command, cwd=cwd, check=True, capture_output=True, text=True + ) + except (OSError, subprocess.CalledProcessError): + return None + return result.stdout.strip() or None + + +def _sha256_file(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as handle: + for block in iter(lambda: handle.read(1024 * 1024), b""): + digest.update(block) + return digest.hexdigest() + + +def _sync(device: torch.device) -> None: + if device.type == "cuda": + torch.cuda.synchronize(device) + + +def _configure_reproducibility(seed: int) -> None: + os.environ.setdefault("PYTHONHASHSEED", str(seed)) + os.environ.setdefault("CUBLAS_WORKSPACE_CONFIG", ":4096:8") + torch.manual_seed(seed) + np.random.seed(seed) + if torch.cuda.is_available(): + torch.cuda.manual_seed_all(seed) + torch.use_deterministic_algorithms(True) + torch.backends.cudnn.benchmark = False + torch.backends.cuda.matmul.allow_tf32 = False + torch.backends.cudnn.allow_tf32 = False + + +def _load_repo(repo_root: Path) -> SimpleNamespace: + repo_root = repo_root.resolve() + if not (repo_root / "models.py").is_file(): + raise FileNotFoundError(f"not an OpenDPD tree: {repo_root}") + sys.path.insert(0, str(repo_root)) + models = importlib.import_module("models") + data = importlib.import_module("modules.data_collector") + train_funcs = importlib.import_module("modules.train_funcs") + util = importlib.import_module("utils.util") + return SimpleNamespace( + root=repo_root, + models=models, + data=data, + train_funcs=train_funcs, + util=util, + ) + + +def _load_spec(repo_root: Path, dataset_name: str) -> dict[str, Any]: + path = repo_root / "datasets" / dataset_name / "spec.json" + with path.open(encoding="utf-8") as handle: + return json.load(handle) + + +def _build_core( + repo: SimpleNamespace, + backbone: str, + hidden_size: int, + thx: float = 0.0, + thh: float = 0.0, +): + with contextlib.redirect_stdout(io.StringIO()): + return repo.models.CoreModel( + input_size=2, + hidden_size=hidden_size, + num_layers=1, + backbone_type=backbone, + thx=thx, + thh=thh, + ) + + +def _cpu_state(module: torch.nn.Module) -> dict[str, torch.Tensor]: + return { + name: tensor.detach().cpu().clone() + for name, tensor in module.state_dict().items() + } + + +def _build_cascade( + repo: SimpleNamespace, + fixture: dict[str, Any], + device: torch.device, +): + config = fixture["config"] + pa = _build_core(repo, config["pa_backbone"], config["pa_hidden_size"]) + dpd = _build_core( + repo, + config["dpd_backbone"], + config["dpd_hidden_size"], + config["thx"], + config["thh"], + ) + pa.load_state_dict(fixture["pa_state"]) + dpd.load_state_dict(fixture["dpd_state"]) + cascade = repo.models.CascadedModel(dpd_model=dpd, pa_model=pa) + cascade.freeze_pa_model() + return cascade.to(device) + + +def _metric_args(spec: dict[str, Any]) -> SimpleNamespace: + return SimpleNamespace( + input_signal_fs=spec["input_signal_fs"], + bw_main_ch=spec["bw_main_ch"], + n_sub_ch=spec["n_sub_ch"], + nperseg=spec["nperseg"], + ) + + +def _metrics( + train_funcs: Any, + metric_args: SimpleNamespace, + prediction: np.ndarray, + ground_truth: np.ndarray, +) -> dict[str, float]: + result = train_funcs.calculate_metrics( + metric_args, {}, prediction, ground_truth + ) + return {name: float(result[name]) for name in METRIC_NAMES} + + +def _environment(repo_root: Path, device: torch.device) -> dict[str, Any]: + gpu = None + if device.type == "cuda": + gpu = torch.cuda.get_device_name(device) + source_files = [ + "backbones/tres_deltagru.py", + "models.py", + "modules/train_funcs.py", + "modules/cuda_graph_training.py", + "modules/data_collector.py", + "project.py", + ] + hashes = { + relative: _sha256_file(repo_root / relative) + for relative in source_files + if (repo_root / relative).is_file() + } + return { + "timestamp_utc": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()), + "platform": platform.platform(), + "python": platform.python_version(), + "torch": torch.__version__, + "cuda_runtime": torch.version.cuda, + "device": str(device), + "gpu": gpu, + "git_commit": _command_output(["git", "rev-parse", "HEAD"], repo_root), + "git_dirty": bool(_command_output(["git", "status", "--short"], repo_root)), + "source_sha256": hashes, + } + + +def prepare(args: argparse.Namespace) -> None: + started = time.perf_counter() + repo = _load_repo(args.repo_root) + device = torch.device(args.device) + _configure_reproducibility(args.seed) + + arrays = repo.data.load_dataset(dataset_name=args.dataset_name) + x_train, y_train = arrays[0], arrays[1] + pa_dataset = repo.data.IQFrameDataset( + x_train, y_train, frame_length=args.frame_length, stride=args.pa_frame_stride + ) + + # Model initialization is intentionally done once. The resulting tensors, + # rather than a seed assumption, are the fixture contract used by every arm. + pa = _build_core(repo, args.pa_backbone, args.pa_hidden_size).to(device) + generator = torch.Generator().manual_seed(args.seed + 10_000) + loader = DataLoader( + pa_dataset, + batch_size=args.pa_batch_size, + shuffle=True, + generator=generator, + pin_memory=device.type == "cuda", + ) + optimizer = torch.optim.AdamW(pa.parameters(), lr=args.pa_lr) + criterion = torch.nn.MSELoss() + epoch_losses: list[float] = [] + pa.train() + for _ in range(args.pa_pretrain_epochs): + losses: list[float] = [] + for features, targets in loader: + features = features.to(device, non_blocking=True) + targets = targets.to(device, non_blocking=True) + optimizer.zero_grad(set_to_none=True) + loss = criterion(pa(features), targets) + loss.backward() + if args.grad_clip: + torch.nn.utils.clip_grad_norm_(pa.parameters(), args.grad_clip) + optimizer.step() + losses.append(float(loss.detach())) + epoch_losses.append(float(np.mean(losses))) + + # Re-seed before DPD construction so its state is independent of PA epoch + # count and can be regenerated deliberately if the fixture format changes. + torch.manual_seed(args.seed + 1) + if device.type == "cuda": + torch.cuda.manual_seed_all(args.seed + 1) + dpd = _build_core( + repo, + args.dpd_backbone, + args.dpd_hidden_size, + args.thx, + args.thh, + ) + fixture = { + "format_version": 1, + "config": { + "dataset_name": args.dataset_name, + "frame_length": args.frame_length, + "pa_backbone": args.pa_backbone, + "pa_hidden_size": args.pa_hidden_size, + "dpd_backbone": args.dpd_backbone, + "dpd_hidden_size": args.dpd_hidden_size, + "thx": args.thx, + "thh": args.thh, + "seed": args.seed, + }, + "pa_pretraining": { + "epochs": args.pa_pretrain_epochs, + "frame_stride": args.pa_frame_stride, + "batch_size": args.pa_batch_size, + "lr": args.pa_lr, + "epoch_losses": epoch_losses, + "surrogate_notice": ( + "Deterministically trained benchmark surrogate; the repository " + "does not contain a published PA checkpoint." + ), + }, + "pa_state": _cpu_state(pa), + "dpd_state": _cpu_state(dpd), + } + args.fixture.parent.mkdir(parents=True, exist_ok=True) + torch.save(fixture, args.fixture) + print( + json.dumps( + { + "fixture": str(args.fixture), + "sha256": _sha256_file(args.fixture), + "pa_final_loss": epoch_losses[-1] if epoch_losses else None, + "elapsed_s": time.perf_counter() - started, + }, + indent=2, + ) + ) + + +def _loader( + dataset: Any, + batch_size: int, + device: torch.device, + optimized: bool, + indices: Iterable[int] | None = None, +) -> DataLoader: + return DataLoader( + dataset, + batch_size=batch_size, + shuffle=False, + sampler=FixedOrderSampler(indices) if indices is not None else None, + pin_memory=optimized and device.type == "cuda", + ) + + +def _time_eval( + repo: SimpleNamespace, + model: torch.nn.Module, + loader: DataLoader, + criterion: torch.nn.Module, + device: torch.device, +): + _sync(device) + started = time.perf_counter() + log: dict[str, Any] = {} + _, prediction, truth = repo.train_funcs.net_eval( + log=log, + net=model, + dataloader=loader, + criterion=criterion, + device=device, + ) + _sync(device) + return time.perf_counter() - started, float(log["loss"]), prediction, truth + + +def _prediction_error(reference: np.ndarray, candidate: np.ndarray) -> dict[str, float]: + reference64 = np.asarray(reference, dtype=np.float64) + candidate64 = np.asarray(candidate, dtype=np.float64) + difference = candidate64 - reference64 + denominator = max(np.linalg.norm(reference64.ravel()), np.finfo(np.float64).tiny) + return { + "max_abs": float(np.max(np.abs(difference))), + "mean_abs": float(np.mean(np.abs(difference))), + "relative_l2": float(np.linalg.norm(difference.ravel()) / denominator), + } + + +def run(args: argparse.Namespace) -> None: + total_started = time.perf_counter() + repo = _load_repo(args.repo_root) + device = torch.device(args.device) + _configure_reproducibility(args.seed) + optimized = args.implementation != "original" + if device.type == "cuda": + torch.cuda.reset_peak_memory_stats(device) + if not args.progress: + repo.train_funcs.tqdm = lambda iterable: iterable + + fixture = torch.load(args.fixture, map_location="cpu", weights_only=False) + config = fixture["config"] + if args.dataset_name != config["dataset_name"]: + raise ValueError( + f"fixture dataset {config['dataset_name']} != {args.dataset_name}" + ) + if args.frame_length != config["frame_length"]: + raise ValueError( + f"fixture frame length {config['frame_length']} != {args.frame_length}" + ) + spec = _load_spec(repo.root, args.dataset_name) + metric_args = _metric_args(spec) + + setup_started = time.perf_counter() + x_train, y_train, x_val, _, x_test, _ = repo.data.load_dataset( + dataset_name=args.dataset_name + ) + target_gain = float(repo.util.set_target_gain(x_train, y_train)) + train_set = repo.data.IQFrameDataset( + x_train, + target_gain * x_train, + frame_length=args.frame_length, + stride=args.frame_stride, + ) + val_set = repo.data.IQSegmentDataset( + x_val, target_gain * x_val, nperseg=spec["nperseg"] + ) + test_set = repo.data.IQSegmentDataset( + x_test, target_gain * x_test, nperseg=spec["nperseg"] + ) + + order_generator = torch.Generator().manual_seed(args.seed + 20_000) + orders = [ + torch.randperm(len(train_set), generator=order_generator).numpy() + for _ in range(args.epochs) + ] + val_loader = _loader(val_set, args.eval_batch_size, device, optimized) + test_loader = _loader(test_set, args.eval_batch_size, device, optimized) + setup_data_s = time.perf_counter() - setup_started + + # Compile and warm all kernels with a throw-away model so the measured + # epochs start from the immutable fixture state. + warm_started = time.perf_counter() + model = _build_cascade(repo, fixture, device) + warm_loader = _loader( + train_set, + args.batch_size, + device, + optimized, + orders[0][: args.batch_size], + ) + warm_features, warm_targets = next(iter(warm_loader)) + warm_features = warm_features.to(device, non_blocking=optimized) + warm_targets = warm_targets.to(device, non_blocking=optimized) + warm_loss = torch.nn.functional.mse_loss(model(warm_features), warm_targets) + warm_loss.backward() + _sync(device) + warmup_s = time.perf_counter() - warm_started + model.zero_grad(set_to_none=True) + del warm_features, warm_targets, warm_loss + + # Whole-cascade graph capture must not inherit AccumulateGrad nodes that a + # prior default-stream backward kept alive. The throw-away warm model has + # already populated global Triton/cuDNN caches; build an untouched model + # with the immutable fixture state for the captured training trajectory. + if args.cuda_graph_training: + del model + model = _build_cascade(repo, fixture, device) + + model_started = time.perf_counter() + trainable = tuple(parameter for parameter in model.parameters() if parameter.requires_grad) + optimizer_parameters = trainable if optimized else model.parameters() + optimizer = torch.optim.AdamW(optimizer_parameters, lr=args.lr) + scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau( + optimizer, + mode="min", + factor=args.decay_factor, + patience=args.patience, + threshold=1e-4, + min_lr=args.lr_end, + ) + criterion = torch.nn.MSELoss() + model_optimizer_setup_s = time.perf_counter() - model_started + trajectory: list[dict[str, Any]] = [] + epoch_times: list[dict[str, float]] = [] + best_val_aclr = float("inf") + best_epoch = -1 + best_dpd_state: dict[str, torch.Tensor] | None = None + + for epoch, order in enumerate(orders): + train_loader = _loader( + train_set, args.batch_size, device, optimized, order + ) + _sync(device) + train_started = time.perf_counter() + train_log: dict[str, Any] = {} + train_kwargs = dict( + log=train_log, + net=model, + dataloader=train_loader, + optimizer=optimizer, + criterion=criterion, + grad_clip_val=args.grad_clip, + device=device, + ) + # The detached reference worktree predates this opt-in keyword, so add + # it only for runs that explicitly request whole-step capture. + if args.cuda_graph_training: + train_kwargs["cuda_graph_training"] = True + repo.train_funcs.net_train(**train_kwargs) + _sync(device) + train_s = time.perf_counter() - train_started + + val_s, val_loss, val_prediction, val_truth = _time_eval( + repo, model, val_loader, criterion, device + ) + metric_started = time.perf_counter() + val_metrics = _metrics(repo.train_funcs, metric_args, val_prediction, val_truth) + val_metric_s = time.perf_counter() - metric_started + + test_s, test_loss, test_prediction, test_truth = _time_eval( + repo, model, test_loader, criterion, device + ) + metric_started = time.perf_counter() + test_metrics = _metrics(repo.train_funcs, metric_args, test_prediction, test_truth) + test_metric_s = time.perf_counter() - metric_started + + checkpoint_started = time.perf_counter() + if val_metrics["ACLR_AVG"] < best_val_aclr: + best_val_aclr = val_metrics["ACLR_AVG"] + best_epoch = epoch + best_dpd_state = _cpu_state(model.dpd_model) + checkpoint_s = time.perf_counter() - checkpoint_started + if args.lr_schedule: + scheduler.step(val_metrics["ACLR_AVG"]) + + trajectory.append( + { + "epoch": epoch, + "lr": float(optimizer.param_groups[0]["lr"]), + "train_loss": float(train_log["loss"]), + "val_loss": val_loss, + "test_loss": test_loss, + "val": val_metrics, + "test": test_metrics, + } + ) + epoch_times.append( + { + "train_s": train_s, + "val_inference_s": val_s, + "val_metrics_s": val_metric_s, + "test_inference_s": test_s, + "test_metrics_s": test_metric_s, + "checkpoint_s": checkpoint_s, + "total_s": ( + train_s + + val_s + + val_metric_s + + test_s + + test_metric_s + + checkpoint_s + ), + } + ) + + if best_dpd_state is None: + raise RuntimeError("no best checkpoint was selected") + model.dpd_model.load_state_dict(best_dpd_state) + best_test_s, best_test_loss, best_prediction, best_truth = _time_eval( + repo, model, test_loader, criterion, device + ) + metric_started = time.perf_counter() + best_metrics = _metrics(repo.train_funcs, metric_args, best_prediction, best_truth) + best_metric_s = time.perf_counter() - metric_started + + model.dpd_model.eval() + dpd_inference_started = time.perf_counter() + dpd_outputs: list[torch.Tensor] = [] + with torch.inference_mode(): + for features, _ in test_loader: + outputs = model.dpd_model( + features.to(device, non_blocking=optimized) + ) + dpd_outputs.append(outputs.cpu()) + best_dpd_prediction = torch.cat(dpd_outputs, dim=0).numpy() + _sync(device) + best_dpd_inference_s = time.perf_counter() - dpd_inference_started + + serialization_started = time.perf_counter() + args.output_dir.mkdir(parents=True, exist_ok=True) + order_path = args.output_dir / "batch_orders.npz" + np.savez_compressed(order_path, **{f"epoch_{i}": order for i, order in enumerate(orders)}) + output_path = args.output_dir / "outputs.npz" + np.savez_compressed( + output_path, + cascade=best_prediction, + dpd=best_dpd_prediction, + ground_truth=best_truth, + ) + checkpoint_path = args.output_dir / "best_dpd.pt" + torch.save(best_dpd_state, checkpoint_path) + _sync(device) + artifact_serialization_s = time.perf_counter() - serialization_started + + total_s = time.perf_counter() - total_started + result = { + "format_version": 1, + "implementation": args.implementation, + "repo_root": str(repo.root), + "fixture": { + "path": str(args.fixture.resolve()), + "sha256": _sha256_file(args.fixture), + "pa_pretraining": fixture["pa_pretraining"], + }, + "config": { + **config, + "frame_stride": args.frame_stride, + "batch_size": args.batch_size, + "eval_batch_size": args.eval_batch_size, + "epochs": args.epochs, + "lr": args.lr, + "lr_schedule": args.lr_schedule, + "lr_end": args.lr_end, + "decay_factor": args.decay_factor, + "patience": args.patience, + "grad_clip": args.grad_clip, + "hard_determinism": True, + "tf32": False, + "progress_display": args.progress, + "cuda_graph_training": args.cuda_graph_training, + "train_frames": len(train_set), + "train_batches": (len(train_set) + args.batch_size - 1) // args.batch_size, + }, + "environment": _environment(repo.root, device), + "timing": { + "setup_data_s": setup_data_s, + "compile_and_warmup_s": warmup_s, + "model_optimizer_setup_s": model_optimizer_setup_s, + "epochs": epoch_times, + "best_test_inference_s": best_test_s, + "best_test_metrics_s": best_metric_s, + "best_dpd_inference_s": best_dpd_inference_s, + "artifact_serialization_s": artifact_serialization_s, + "total_s": total_s, + "peak_allocated_mib": ( + torch.cuda.max_memory_allocated(device) / (1024**2) + if device.type == "cuda" + else None + ), + "peak_reserved_mib": ( + torch.cuda.max_memory_reserved(device) / (1024**2) + if device.type == "cuda" + else None + ), + }, + "trajectory": trajectory, + "best": { + "epoch": best_epoch, + "test_loss": best_test_loss, + "test": best_metrics, + }, + "artifacts": { + "orders": {"path": order_path.name, "sha256": _sha256_file(order_path)}, + "outputs": {"path": output_path.name, "sha256": _sha256_file(output_path)}, + "checkpoint": { + "path": checkpoint_path.name, + "sha256": _sha256_file(checkpoint_path), + }, + }, + } + _write_json(args.output_dir / "result.json", result) + print(json.dumps(result, indent=2, default=_json_default)) + + +def _state_error(reference: dict[str, torch.Tensor], candidate: dict[str, torch.Tensor]): + names = sorted(reference) + if names != sorted(candidate): + raise ValueError("checkpoint parameter names differ") + per_parameter: dict[str, dict[str, float]] = {} + for name in names: + per_parameter[name] = _prediction_error( + reference[name].detach().cpu().numpy(), + candidate[name].detach().cpu().numpy(), + ) + return { + "max_abs": max(item["max_abs"] for item in per_parameter.values()), + "max_relative_l2": max( + item["relative_l2"] for item in per_parameter.values() + ), + "per_parameter": per_parameter, + } + + +def compare(args: argparse.Namespace) -> None: + reference_result = json.loads((args.reference_dir / "result.json").read_text()) + candidate_result = json.loads((args.candidate_dir / "result.json").read_text()) + if reference_result["fixture"]["sha256"] != candidate_result["fixture"]["sha256"]: + raise ValueError("runs did not use the same fixture") + reference_orders = np.load(args.reference_dir / "batch_orders.npz") + candidate_orders = np.load(args.candidate_dir / "batch_orders.npz") + if reference_orders.files != candidate_orders.files or any( + not np.array_equal(reference_orders[name], candidate_orders[name]) + for name in reference_orders.files + ): + raise ValueError("runs did not use identical batch permutations") + + reference_outputs = np.load(args.reference_dir / "outputs.npz") + candidate_outputs = np.load(args.candidate_dir / "outputs.npz") + output_errors = { + name: _prediction_error(reference_outputs[name], candidate_outputs[name]) + for name in ("cascade", "dpd", "ground_truth") + } + reference_state = torch.load( + args.reference_dir / "best_dpd.pt", map_location="cpu", weights_only=True + ) + candidate_state = torch.load( + args.candidate_dir / "best_dpd.pt", map_location="cpu", weights_only=True + ) + state_errors = _state_error(reference_state, candidate_state) + + reference_train_s = sum( + epoch["train_s"] for epoch in reference_result["timing"]["epochs"] + ) + candidate_train_s = sum( + epoch["train_s"] for epoch in candidate_result["timing"]["epochs"] + ) + metric_deltas = { + name: ( + candidate_result["best"]["test"][name] + - reference_result["best"]["test"][name] + ) + for name in METRIC_NAMES + } + trajectory_deltas = [] + for reference_epoch, candidate_epoch in zip( + reference_result["trajectory"], candidate_result["trajectory"], strict=True + ): + trajectory_deltas.append( + { + "epoch": reference_epoch["epoch"], + "train_loss": candidate_epoch["train_loss"] - reference_epoch["train_loss"], + "val": { + name: candidate_epoch["val"][name] - reference_epoch["val"][name] + for name in METRIC_NAMES + }, + "test": { + name: candidate_epoch["test"][name] - reference_epoch["test"][name] + for name in METRIC_NAMES + }, + } + ) + + limits = { + "prediction_relative_l2": args.prediction_relative_l2_limit, + "metric_abs_db": args.metric_abs_db_limit, + } + checks = { + "same_fixture": True, + "same_batch_orders": True, + "cascade_prediction_relative_l2": ( + output_errors["cascade"]["relative_l2"] + <= args.prediction_relative_l2_limit + ), + "dpd_prediction_relative_l2": ( + output_errors["dpd"]["relative_l2"] + <= args.prediction_relative_l2_limit + ), + "all_metric_deltas": all( + abs(delta) <= args.metric_abs_db_limit for delta in metric_deltas.values() + ), + } + comparison = { + "format_version": 1, + "reference_dir": str(args.reference_dir.resolve()), + "candidate_dir": str(args.candidate_dir.resolve()), + "speed": { + "total_reference_s": reference_result["timing"]["total_s"], + "total_candidate_s": candidate_result["timing"]["total_s"], + "total_speedup": ( + reference_result["timing"]["total_s"] + / candidate_result["timing"]["total_s"] + ), + "train_reference_s": reference_train_s, + "train_candidate_s": candidate_train_s, + "train_speedup": reference_train_s / candidate_train_s, + }, + "best_epoch": { + "reference": reference_result["best"]["epoch"], + "candidate": candidate_result["best"]["epoch"], + }, + "metric_deltas_db": metric_deltas, + "output_errors": output_errors, + "checkpoint_errors": state_errors, + "trajectory_deltas": trajectory_deltas, + "acceptance_limits": limits, + "checks": checks, + "passed": all(checks.values()), + } + _write_json(args.json_out, comparison) + print(json.dumps(comparison, indent=2, default=_json_default)) + if args.fail_on_mismatch and not comparison["passed"]: + raise SystemExit(1) + + +def _common_config(parser: argparse.ArgumentParser) -> None: + parser.add_argument("--repo-root", type=Path, default=SCRIPT_ROOT) + parser.add_argument("--fixture", type=Path, required=True) + parser.add_argument("--dataset-name", default="DPA_200MHz") + parser.add_argument("--frame-length", type=int, default=200) + parser.add_argument("--seed", type=int, default=0) + parser.add_argument("--device", default=DEFAULT_DEVICE) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + subparsers = parser.add_subparsers(dest="command", required=True) + + prepare_parser = subparsers.add_parser("prepare", help="create immutable model fixture") + _common_config(prepare_parser) + prepare_parser.add_argument("--pa-backbone", default="dgru") + prepare_parser.add_argument("--pa-hidden-size", type=int, default=23) + prepare_parser.add_argument("--dpd-backbone", default="tres_deltagru") + prepare_parser.add_argument("--dpd-hidden-size", type=int, default=15) + prepare_parser.add_argument("--thx", type=float, default=0.01) + prepare_parser.add_argument("--thh", type=float, default=0.05) + prepare_parser.add_argument("--pa-pretrain-epochs", type=int, default=20) + prepare_parser.add_argument("--pa-frame-stride", type=int, default=16) + prepare_parser.add_argument("--pa-batch-size", type=int, default=256) + prepare_parser.add_argument("--pa-lr", type=float, default=5e-4) + prepare_parser.add_argument("--grad-clip", type=float, default=200.0) + + run_parser = subparsers.add_parser("run", help="run one implementation") + _common_config(run_parser) + run_parser.add_argument( + "--implementation", + choices=( + "original", "eager_optimized", "fused_optimized", + "graph_optimized", "optimized", + ), + required=True, + ) + run_parser.add_argument("--output-dir", type=Path, required=True) + run_parser.add_argument("--frame-stride", type=int, default=16) + run_parser.add_argument("--batch-size", type=int, default=64) + run_parser.add_argument("--eval-batch-size", type=int, default=256) + run_parser.add_argument("--epochs", type=int, default=3) + run_parser.add_argument("--lr", type=float, default=5e-3) + run_parser.add_argument("--lr-schedule", action="store_true") + run_parser.add_argument("--lr-end", type=float, default=1e-4) + run_parser.add_argument("--decay-factor", type=float, default=0.5) + run_parser.add_argument("--patience", type=int, default=10) + run_parser.add_argument("--grad-clip", type=float, default=200.0) + run_parser.add_argument("--progress", action="store_true") + run_parser.add_argument("--cuda-graph-training", action="store_true") + + compare_parser = subparsers.add_parser("compare", help="compare two run directories") + compare_parser.add_argument("--reference-dir", type=Path, required=True) + compare_parser.add_argument("--candidate-dir", type=Path, required=True) + compare_parser.add_argument("--json-out", type=Path, required=True) + compare_parser.add_argument("--prediction-relative-l2-limit", type=float, default=1e-4) + compare_parser.add_argument("--metric-abs-db-limit", type=float, default=0.05) + compare_parser.add_argument("--fail-on-mismatch", action="store_true") + + return parser.parse_args() + + +def main() -> None: + args = parse_args() + if args.command == "prepare": + prepare(args) + elif args.command == "run": + run(args) + else: + compare(args) + + +if __name__ == "__main__": + main() diff --git a/benchmark/benchmark_tres_deltagru.py b/benchmark/benchmark_tres_deltagru.py new file mode 100644 index 0000000..9aa8aec --- /dev/null +++ b/benchmark/benchmark_tres_deltagru.py @@ -0,0 +1,422 @@ +#!/usr/bin/env python3 +"""Reproducible training benchmark for the TRes-DeltaGRU backbone. + +This benchmark intentionally keeps synthetic input resident on the selected +device. It measures the model/optimizer path rather than CSV parsing, +DataLoader workers, or host-to-device transfers. The default shape matches +``bash_scripts/OpenDPDv2.sh``: B=64, T=200, H=15, thx=.01, thh=.05. + +Examples +-------- + .venv/bin/python benchmark/benchmark_tres_deltagru.py + .venv/bin/python benchmark/benchmark_tres_deltagru.py --batch-size 256 + .venv/bin/python benchmark/benchmark_tres_deltagru.py --reference-only +""" + +from __future__ import annotations + +import argparse +import contextlib +import copy +import io +import json +import platform +import statistics +import subprocess +import sys +import time +from dataclasses import asdict, dataclass +from datetime import datetime, timezone +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +sys.path.insert(0, str(ROOT)) + +import torch # noqa: E402 + +from models import CoreModel # noqa: E402 +from backbones.triton_deltagru import triton # noqa: E402 + + +@dataclass +class TimingResult: + implementation: str + steps_per_block: int + median_ms: float + iqr_ms: float + block_ms: list[float] + batches_per_second: float + sequence_positions_per_second: float + peak_allocated_mib: float + + +def synchronize(device: torch.device) -> None: + if device.type == "cuda": + torch.cuda.synchronize(device) + + +def command_output(command: list[str]) -> str | None: + try: + result = subprocess.run( + command, cwd=ROOT, check=True, capture_output=True, text=True + ) + except (OSError, subprocess.CalledProcessError): + return None + return result.stdout.strip() or None + + +def build_model( + state: dict[str, torch.Tensor], + hidden_size: int, + thx: float, + thh: float, + device: torch.device, + fused: bool, +) -> CoreModel: + with contextlib.redirect_stdout(io.StringIO()): + model = CoreModel( + input_size=2, + hidden_size=hidden_size, + num_layers=1, + backbone_type="tres_deltagru", + thx=thx, + thh=thh, + ).to(device) + model.load_state_dict(state) + model.backbone.rnn.use_triton = fused + model.backbone.set_debug(0) + if fused: + probe = next(model.parameters()).new_empty((1, 1, model.backbone.rnn.input_size)) + if not model.backbone.rnn._can_use_triton(probe): + raise RuntimeError( + "the fused TRes-DeltaGRU kernel does not support this device, " + "dtype, hidden size, or module configuration" + ) + model.train() + return model + + +def one_step( + model: CoreModel, + optimizer: torch.optim.Optimizer, + features: torch.Tensor, + targets: torch.Tensor, + grad_clip: float, +) -> None: + optimizer.zero_grad(set_to_none=True) + loss = torch.nn.functional.mse_loss(model(features), targets) + loss.backward() + if grad_clip: + torch.nn.utils.clip_grad_norm_(model.parameters(), grad_clip) + optimizer.step() + + +def time_implementation( + name: str, + fused: bool, + state: dict[str, torch.Tensor], + features: torch.Tensor, + targets: torch.Tensor, + args: argparse.Namespace, + steps_per_block: int, +) -> TimingResult: + device = features.device + model = build_model(state, args.hidden_size, args.thx, args.thh, device, fused) + optimizer = torch.optim.AdamW(model.parameters(), lr=args.lr) + + for _ in range(args.warmup): + one_step(model, optimizer, features, targets, args.grad_clip) + synchronize(device) + + if device.type == "cuda": + torch.cuda.reset_peak_memory_stats(device) + block_times: list[float] = [] + for _ in range(args.blocks): + if device.type == "cuda": + start = torch.cuda.Event(enable_timing=True) + end = torch.cuda.Event(enable_timing=True) + start.record() + for _ in range(steps_per_block): + one_step(model, optimizer, features, targets, args.grad_clip) + end.record() + end.synchronize() + elapsed_ms = start.elapsed_time(end) / steps_per_block + else: + started = time.perf_counter() + for _ in range(steps_per_block): + one_step(model, optimizer, features, targets, args.grad_clip) + elapsed_ms = (time.perf_counter() - started) * 1_000 / steps_per_block + block_times.append(elapsed_ms) + + median_ms = statistics.median(block_times) + quartiles = ( + statistics.quantiles(block_times, n=4, method="inclusive") + if len(block_times) > 1 + else [block_times[0]] * 3 + ) + peak_mib = ( + torch.cuda.max_memory_allocated(device) / (1024**2) + if device.type == "cuda" + else float("nan") + ) + return TimingResult( + implementation=name, + steps_per_block=steps_per_block, + median_ms=median_ms, + iqr_ms=quartiles[2] - quartiles[0], + block_ms=block_times, + batches_per_second=1_000 / median_ms, + sequence_positions_per_second=( + features.shape[0] * features.shape[1] * 1_000 / median_ms + ), + peak_allocated_mib=peak_mib, + ) + + +def error_metrics(reference: torch.Tensor, candidate: torch.Tensor) -> dict[str, float]: + difference = (reference - candidate).detach() + denominator = reference.detach().norm().clamp_min(torch.finfo(reference.dtype).tiny) + return { + "max_abs": difference.abs().max().item(), + "mean_abs": difference.abs().mean().item(), + "relative_l2": (difference.norm() / denominator).item(), + } + + +def check_equivalence( + state: dict[str, torch.Tensor], + args: argparse.Namespace, + device: torch.device, +) -> dict[str, object]: + # A modest batch checks all equations without making the eager preflight a + # substantial fraction of the benchmark runtime. + batch_size = min(args.batch_size, args.check_batch_size) + generator = torch.Generator(device=device).manual_seed(args.seed + 1) + x_reference = torch.randn( + batch_size, args.sequence_length, 2, generator=generator, device=device + ).requires_grad_() + x_fused = x_reference.detach().clone().requires_grad_() + target = torch.randn( + batch_size, args.sequence_length, 2, generator=generator, device=device + ) + reference = build_model( + state, args.hidden_size, args.thx, args.thh, device, fused=False + ) + fused = build_model(state, args.hidden_size, args.thx, args.thh, device, fused=True) + + reference_output = reference(x_reference) + reference_loss = torch.nn.functional.mse_loss(reference_output, target) + reference_loss.backward() + fused_output = fused(x_fused) + fused_loss = torch.nn.functional.mse_loss(fused_output, target) + fused_loss.backward() + synchronize(device) + + parameter_errors = {} + for (name, reference_parameter), (candidate_name, candidate_parameter) in zip( + reference.named_parameters(), fused.named_parameters(), strict=True + ): + if name != candidate_name: + raise RuntimeError(f"parameter order mismatch: {name} != {candidate_name}") + parameter_errors[name] = error_metrics( + reference_parameter.grad, candidate_parameter.grad + ) + + return { + "output": error_metrics(reference_output, fused_output), + "input_gradient": error_metrics(x_reference.grad, x_fused.grad), + "loss_abs": abs(reference_loss.item() - fused_loss.item()), + "parameter_gradients": parameter_errors, + } + + +def enforce_equivalence(equivalence: dict[str, object]) -> None: + """Fail before timing if the candidate exceeds calibrated FP32 tolerances.""" + + limits = { + "output": (2e-5, 1e-4), + "input_gradient": (2e-6, 1e-3), + } + for name, (max_abs_limit, relative_limit) in limits.items(): + metrics = equivalence[name] + if metrics["max_abs"] > max_abs_limit or metrics["relative_l2"] > relative_limit: + raise RuntimeError(f"{name} equivalence check failed: {metrics}") + for name, metrics in equivalence["parameter_gradients"].items(): + if metrics["max_abs"] > 2e-5 or metrics["relative_l2"] > 1e-4: + raise RuntimeError(f"{name} gradient equivalence check failed: {metrics}") + if equivalence["loss_abs"] > 1e-5: + raise RuntimeError(f"loss equivalence check failed: {equivalence['loss_abs']}") + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--device", default="cuda" if torch.cuda.is_available() else "cpu") + parser.add_argument("--batch-size", type=int, default=64) + parser.add_argument("--sequence-length", type=int, default=200) + parser.add_argument("--hidden-size", type=int, default=15) + parser.add_argument("--thx", type=float, default=0.01) + parser.add_argument("--thh", type=float, default=0.05) + parser.add_argument("--lr", type=float, default=5e-4) + parser.add_argument("--grad-clip", type=float, default=200.0) + parser.add_argument("--warmup", type=int, default=5) + parser.add_argument("--blocks", type=int, default=7) + parser.add_argument("--reference-steps-per-block", type=int, default=5) + parser.add_argument("--fused-steps-per-block", type=int, default=100) + parser.add_argument("--check-batch-size", type=int, default=8) + parser.add_argument("--seed", type=int, default=0) + parser.add_argument("--reference-only", action="store_true") + parser.add_argument("--json-out", type=Path) + return parser.parse_args() + + +def main() -> None: + args = parse_args() + positive_values = { + "batch_size": args.batch_size, + "sequence_length": args.sequence_length, + "hidden_size": args.hidden_size, + "blocks": args.blocks, + "reference_steps_per_block": args.reference_steps_per_block, + "fused_steps_per_block": args.fused_steps_per_block, + "check_batch_size": args.check_batch_size, + } + invalid = {name: value for name, value in positive_values.items() if value <= 0} + if invalid or args.warmup < 0: + raise ValueError(f"benchmark counts must be positive (warmup may be zero): {invalid}") + device = torch.device(args.device) + if device.type == "cuda" and not torch.cuda.is_available(): + raise RuntimeError("CUDA was requested but is unavailable") + + torch.manual_seed(args.seed) + if device.type == "cuda": + torch.cuda.manual_seed_all(args.seed) + # The fused recurrence accumulates in FP32. Disable TF32 in the reference + # so the equivalence check measures operation ordering, not lower precision. + torch.backends.cuda.matmul.allow_tf32 = False + torch.backends.cudnn.allow_tf32 = False + + with contextlib.redirect_stdout(io.StringIO()): + template = CoreModel( + input_size=2, + hidden_size=args.hidden_size, + num_layers=1, + backbone_type="tres_deltagru", + thx=args.thx, + thh=args.thh, + ).to(device) + state = copy.deepcopy(template.state_dict()) + generator = torch.Generator(device=device).manual_seed(args.seed) + features = torch.randn( + args.batch_size, + args.sequence_length, + 2, + generator=generator, + device=device, + ) + targets = torch.randn( + args.batch_size, + args.sequence_length, + 2, + generator=generator, + device=device, + ) + + system = { + "recorded_at_utc": datetime.now(timezone.utc).isoformat(), + "command": " ".join(sys.argv), + "git_revision": command_output(["git", "rev-parse", "HEAD"]), + "git_dirty": bool(command_output(["git", "status", "--porcelain"])), + "platform": platform.platform(), + "python": platform.python_version(), + "torch": torch.__version__, + "triton": triton.__version__ if triton is not None else None, + "device": torch.cuda.get_device_name(device) if device.type == "cuda" else str(device), + "compute_capability": ( + ".".join(map(str, torch.cuda.get_device_capability(device))) + if device.type == "cuda" + else None + ), + "driver": ( + command_output([ + "nvidia-smi", + "--query-gpu=driver_version", + "--format=csv,noheader", + ]) + if device.type == "cuda" + else None + ), + "cuda": torch.version.cuda, + "cudnn": torch.backends.cudnn.version(), + "matmul_tf32": torch.backends.cuda.matmul.allow_tf32, + "cudnn_tf32": torch.backends.cudnn.allow_tf32, + } + print(json.dumps(system, indent=2)) + print( + f"shape=B{args.batch_size}xT{args.sequence_length}x2, H={args.hidden_size}, " + f"thresholds=({args.thx}, {args.thh}), trainable_params=" + f"{sum(parameter.numel() for parameter in template.parameters()):,}" + ) + + equivalence = None + if device.type == "cuda" and not args.reference_only: + equivalence = check_equivalence(state, args, device) + enforce_equivalence(equivalence) + print("equivalence:") + print(json.dumps(equivalence, indent=2)) + + results = [ + time_implementation( + "eager-clean", + False, + state, + features, + targets, + args, + args.reference_steps_per_block, + ) + ] + if device.type == "cuda" and not args.reference_only: + results.append( + time_implementation( + "triton-fused", + True, + state, + features, + targets, + args, + args.fused_steps_per_block, + ) + ) + + baseline_ms = results[0].median_ms + print( + "\nimplementation median ms/step IQR(block means) " + "steps/block sequence positions/s peak MiB speedup" + ) + for result in results: + speedup = baseline_ms / result.median_ms + print( + f"{result.implementation:<20} {result.median_ms:>12.3f} " + f"{result.iqr_ms:>17.3f} {result.steps_per_block:>12d} " + f"{result.sequence_positions_per_second:>20,.0f} " + f"{result.peak_allocated_mib:>11.1f} {speedup:>9.2f}x" + ) + print( + f" block means ({result.implementation}, ms/step): " + + ", ".join(f"{value:.3f}" for value in result.block_ms) + ) + + payload = { + "system": system, + "config": vars(args) | {"json_out": str(args.json_out) if args.json_out else None}, + "equivalence": equivalence, + "results": [asdict(result) for result in results], + } + if args.json_out: + args.json_out.parent.mkdir(parents=True, exist_ok=True) + args.json_out.write_text(json.dumps(payload, indent=2) + "\n") + print(f"wrote {args.json_out}") + + +if __name__ == "__main__": + main() diff --git a/benchmark/report/artifact.json b/benchmark/report/artifact.json new file mode 100644 index 0000000..9496b38 --- /dev/null +++ b/benchmark/report/artifact.json @@ -0,0 +1,382 @@ +{ + "surface": "report", + "manifest": { + "version": 1, + "surface": "report", + "title": "TRes-DeltaGRU end-to-end training optimization", + "description": "A controlled speed and numerical-equivalence study of OpenDPD TRes-DeltaGRU training.", + "generatedAt": "2026-07-11T13:45:00Z", + "filters": [], + "cards": [ + { + "id": "production_speedup", + "description": "Process workload speedup for 357 training updates plus validation, test, RF metrics, and artifacts.", + "dataset": "headline", + "sourceId": "e2e_summary", + "metrics": [ + {"label": "End-to-end speedup", "field": "total_speedup"}, + {"label": "Training speedup", "field": "train_speedup"} + ] + }, + { + "id": "output_equivalence", + "description": "Relative L2 difference between the original and optimized cascaded neural-network outputs.", + "dataset": "headline", + "sourceId": "e2e_summary", + "metrics": [ + {"label": "Cascade output rel-L2", "field": "cascade_relative_l2"}, + {"label": "Maximum absolute error", "field": "cascade_max_abs"} + ] + }, + { + "id": "rf_equivalence", + "description": "Largest absolute difference across ACLR-left, ACLR-right, ACLR-average, EVM, and NMSE.", + "dataset": "headline", + "sourceId": "e2e_summary", + "metrics": [ + {"label": "Maximum RF-metric delta", "field": "maximum_rf_delta"}, + {"label": "Acceptance limit", "field": "rf_limit"} + ] + }, + { + "id": "checkpoint_equivalence", + "description": "Comparison of every tensor in the selected best DPD state dictionary.", + "dataset": "headline", + "sourceId": "e2e_summary", + "metrics": [ + {"label": "DPD checkpoint", "field": "checkpoint_result"}, + {"label": "Best epoch", "field": "best_epoch_result"} + ] + } + ], + "charts": [ + { + "id": "gate_total_time", + "title": "Three-epoch controlled workload time", + "subtitle": "All arms used the same fixture and recorded batches; the direct Triton arm was rejected by the output-equivalence gate.", + "headerMarkdown": "Lower is faster. The strict whole-cascade graph is the fastest **accepted** method.", + "type": "bar", + "dataset": "candidate_arms", + "sourceId": "e2e_summary", + "valueFormat": "number", + "encodings": { + "x": {"field": "implementation", "type": "nominal", "label": "Implementation"}, + "y": {"field": "total_s", "type": "quantitative", "label": "Total time", "unit": "s", "format": "number"}, + "tooltip": [ + {"field": "train_s", "type": "quantitative", "label": "Training time", "format": "number"}, + {"field": "total_speedup", "type": "quantitative", "label": "Total speedup", "format": "number"}, + {"field": "cascade_output_relative_l2", "type": "quantitative", "label": "Output rel-L2", "format": "number"}, + {"field": "accepted", "type": "nominal", "label": "Accepted"} + ] + } + } + ], + "tables": [ + { + "id": "candidate_decision", + "title": "Optimization candidate decision", + "subtitle": "The acceptance decision combines speed, final neural output, checkpoint, and RF metrics.", + "dataset": "candidate_arms", + "sourceId": "e2e_summary", + "defaultSort": {"field": "total_s", "direction": "asc"}, + "columns": [ + {"field": "implementation", "label": "Implementation", "type": "text"}, + {"field": "total_s", "label": "Total s", "type": "number", "format": "number", "align": "right"}, + {"field": "train_s", "label": "Train s", "type": "number", "format": "number", "align": "right"}, + {"field": "total_speedup", "label": "Speedup", "type": "number", "format": "number", "align": "right"}, + {"field": "cascade_output_relative_l2_display", "label": "Output rel-L2", "type": "text", "align": "right"}, + {"field": "maximum_absolute_metric_delta_db_display", "label": "Max RF delta, dB", "type": "text", "align": "right"}, + {"field": "accepted", "label": "Accepted", "type": "text", "align": "center"} + ] + }, + { + "id": "rf_metric_equivalence", + "title": "Production-density RF metric equivalence", + "subtitle": "Candidate minus original; lower absolute delta is better.", + "dataset": "rf_metrics", + "sourceId": "e2e_summary", + "defaultSort": {"field": "metric", "direction": "asc"}, + "columns": [ + {"field": "metric", "label": "Metric", "type": "text"}, + {"field": "original_db", "label": "Original dB", "type": "number", "format": "number", "align": "right"}, + {"field": "optimized_db", "label": "Optimized dB", "type": "number", "format": "number", "align": "right"}, + {"field": "delta_db_display", "label": "Delta dB", "type": "text", "align": "right"}, + {"field": "absolute_delta_db_display", "label": "Absolute delta dB", "type": "text", "align": "right"} + ] + }, + { + "id": "implementation_summary", + "title": "Implemented optimizations and safeguards", + "subtitle": "All changes retain the original module parameters and checkpoint structure.", + "dataset": "implementation_changes", + "sourceId": "benchmark_code", + "defaultSort": {"field": "priority", "direction": "asc"}, + "columns": [ + {"field": "priority", "label": "Priority", "type": "number", "align": "right"}, + {"field": "component", "label": "Component", "type": "text"}, + {"field": "change", "label": "Change", "type": "text"}, + {"field": "equivalence", "label": "Equivalence behavior", "type": "text"} + ] + } + ], + "sources": [ + { + "id": "e2e_summary", + "label": "Reviewed end-to-end benchmark summary", + "path": "benchmark/results/end_to_end_summary.json" + }, + { + "id": "benchmark_code", + "label": "Reproducible benchmark and implementation", + "path": "benchmark/benchmark_end_to_end.py" + } + ], + "blocks": [ + { + "id": "title", + "type": "markdown", + "body": "# TRes-DeltaGRU end-to-end training optimization", + "layout": "full" + }, + { + "id": "executive_summary", + "type": "markdown", + "sourceId": "e2e_summary", + "body": "## Executive Summary\n\nThe recommended strict path is guarded whole-cascade CUDA-graph training, enabled with `--cuda_graph_training`. On the 357-update production-density workload it reduced total time from **95.78 s to 14.51 s and 13.96 s** across two runs (**6.60–6.86×**) and training time from **86.86 s to 12.41 s and 11.81 s** (**7.00–7.35×**). The selected DPD checkpoint was bitwise identical, cascade output relative L2 error was **1.70e-6**, and the largest ACLR/NMSE/EVM difference was **4.27e-6 dB**." + }, + { + "id": "headline_metrics", + "type": "metric-strip", + "cardIds": [ + "production_speedup", + "output_equivalence", + "rf_equivalence", + "checkpoint_equivalence" + ] + }, + { + "id": "key_findings", + "type": "markdown", + "sourceId": "e2e_summary", + "body": "## Key findings\n\n- The isolated persistent Triton backbone remains the fastest kernel-level method at **97.11×**, but long training amplifies its small FP32 differences around delta thresholds.\n- Direct persistent-Triton end-to-end training reached **13.40× total** and **46.77× training** speedup in the three-epoch gate, yet its final cascade output relative L2 error reached **1.04e-2**. It was rejected even though its RF metrics stayed within 0.035 dB.\n- Capturing the existing clean-eager cascade preserves its PyTorch/cuDNN arithmetic and removes recurrent launch overhead. It is slower than direct Triton but passes every output, checkpoint, and RF-metric gate.\n- Loop/data cleanups alone are bitwise exact and improve total time **1.33×**." + }, + { + "id": "timing_chart", + "type": "chart", + "chartId": "gate_total_time", + "layout": "full" + }, + { + "id": "selection_rationale", + "type": "markdown", + "sourceId": "e2e_summary", + "body": "## Why the strict graph is the recommendation\n\nThe graph records the original eager TRes-DeltaGRU, MSE loss, gradient clearing, frozen-PA input backward, and DPD backward. It replays those exact kernels at fixed shapes while leaving batch copies, gradient clipping, AdamW, scheduling, validation, testing, and checkpoint selection outside the graph. Full and partial batches share stable gradient buffers and one capture stream. Unsupported calls fall back to clean eager training; evaluation restores the fused inference path." + }, + { + "id": "candidate_table", + "type": "table", + "tableId": "candidate_decision", + "layout": "full" + }, + { + "id": "equivalence_findings", + "type": "markdown", + "sourceId": "e2e_summary", + "body": "## Output and RF equivalence\n\nThe production-density optimized checkpoint matched every original state-dict tensor exactly. The remaining output difference comes from using the faster fused inference kernel on the same weights: **4.95e-6 maximum absolute** and **1.70e-6 relative L2** at the cascade output. All five reported RF metrics were effectively unchanged, with absolute deltas between zero and **4.27e-6 dB**, far below the predeclared **0.05 dB** ceiling." + }, + { + "id": "rf_table", + "type": "table", + "tableId": "rf_metric_equivalence", + "layout": "full" + }, + { + "id": "scope_definitions", + "type": "markdown", + "sourceId": "e2e_summary", + "body": "## Scope, data, and metric definitions\n\nThe controlled workload uses bundled `DPA_200MHz` data, a TRes-DeltaGRU H15 DPD (`thx=.01`, `thh=.05`), a frozen DGRU H23 PA, FP32, B64×T200, AdamW at 5e-3, and gradient clipping at 200. The production-density arm uses all 22,841 stride-one frames (357 updates); the multi-epoch gate uses stride 16 (23 updates per epoch for three epochs). NMSE is the repository's mean per-segment normalized MSE in dB. EVM is its subchannel spectral-magnitude error in dB. ACLR-left/right compare adjacent-channel power with the strongest main subchannel; ACLR-average is their mean." + }, + { + "id": "methodology", + "type": "markdown", + "sourceId": "benchmark_code", + "body": "## Methodology\n\nThe exact original is detached commit `0976ce39`. A single deterministic PA surrogate was trained for 100 epochs because the repository ships no PA checkpoint; its SHA-256 fixture was reused unchanged by every arm. DPD initialization, frame order, full/partial batches, validation/test segments, optimizer hyperparameters, TF32 setting, and hard-determinism policy were fixed. Each run saves the exact permutations, best DPD checkpoint, DPD output, cascaded output, ground truth, phase timings, trajectory, and RF metrics. The comparison script rejects a fixture/order mismatch before evaluating speed or numerical results. Regression validation passed **164 standard tests plus 19 extended all-dataset/all-backbone tests**." + }, + { + "id": "implemented_changes", + "type": "table", + "tableId": "implementation_summary", + "layout": "full" + }, + { + "id": "limitations", + "type": "markdown", + "sourceId": "e2e_summary", + "body": "## Limitations and robustness\n\n- The bundled repository has no published PA checkpoint. The surrogate makes the original-versus-optimized comparison controlled, but its absolute RF quality must not be presented as a reproduction of published results.\n- The longest comparison is one 357-update epoch; the multi-epoch gate covers 69 updates. This is not a complete 240- or 300-epoch convergence study.\n- Whole-cascade graph training is deliberately opt-in and specialized to the FP32 TRes-DeltaGRU → frozen-DGRU cascade with mean MSE. CPU, AMP, QAT, changed modules, diagnostic delta collection, capture failure, and unsupported shapes use eager fallbacks.\n- Existing EVM behavior was preserved: `calculate_metrics` does not pass the dataset sample rate, so EVM uses its 800 MHz default. Correcting that is a separate semantic change.\n- One original production-density timing and two optimized timings were collected on a power-managed laptop GPU; use the observed range rather than treating one decimal speedup as universal." + }, + { + "id": "recommendations", + "type": "markdown", + "body": "## Recommended next steps\n\n1. Use `--cuda_graph_training` (or `cuda_graph_training=True` through the API) when strict training-result equivalence is required.\n2. Keep direct persistent Triton available for inference and experiments where endpoint metric equivalence is sufficient, but do not label its multi-epoch neural outputs strict-equivalent at nonzero thresholds.\n3. Stage the real production PA checkpoint and run the full intended epoch schedule on the target GPU before a release claim. Preserve the same fixture/order comparison and checkpoint/output/RF gates.\n4. If workload shapes or precision modes change, rerun the supplied end-to-end harness; the graph path will safely fall back, but its speedup is shape- and hardware-dependent." + }, + { + "id": "further_questions", + "type": "markdown", + "body": "## Further questions\n\nThe main unresolved question is full-schedule convergence with the real PA checkpoint. A secondary opportunity is a GPU-resident frame sampler for much larger datasets, where per-batch host staging may become material after recurrent launch overhead has been removed." + } + ] + }, + "snapshot": { + "version": 1, + "generatedAt": "2026-07-11T13:45:00Z", + "status": "ready", + "datasets": { + "headline": [ + { + "total_speedup": "6.60–6.86×", + "train_speedup": "7.00–7.35×", + "cascade_relative_l2": "≤ 1.70e-6", + "cascade_max_abs": "≤ 4.95e-6", + "maximum_rf_delta": "≤ 4.27e-6 dB", + "rf_limit": "0.05 dB", + "checkpoint_result": "Bitwise exact", + "best_epoch_result": "Same" + } + ], + "candidate_arms": [ + { + "implementation": "Exact original", + "total_s": 32.03585798398126, + "train_s": 17.237055696023162, + "total_speedup": 1.0, + "train_speedup": 1.0, + "cascade_output_relative_l2": 0.0, + "cascade_output_relative_l2_display": "0", + "maximum_absolute_metric_delta_db": 0.0, + "maximum_absolute_metric_delta_db_display": "0", + "accepted": "Yes", + "batch_count": 69, + "checkpoint_max_abs": 0.0 + }, + { + "implementation": "Clean eager pipeline", + "total_s": 24.029687639005715, + "train_s": 13.491934273974039, + "total_speedup": 1.3331782945018265, + "train_speedup": 1.2775822462516342, + "cascade_output_relative_l2": 0.0, + "cascade_output_relative_l2_display": "0", + "maximum_absolute_metric_delta_db": 0.0, + "maximum_absolute_metric_delta_db_display": "0", + "accepted": "Yes", + "batch_count": 69, + "checkpoint_max_abs": 0.0 + }, + { + "implementation": "Strict whole-cascade graph", + "total_s": 5.458723943011137, + "train_s": 3.434560444991803, + "total_speedup": 5.868744841914403, + "train_speedup": 5.018707916804272, + "cascade_output_relative_l2": 0.0000020480301293249045, + "cascade_output_relative_l2_display": "2.05e-6", + "maximum_absolute_metric_delta_db": 0.0000024523588528779783, + "maximum_absolute_metric_delta_db_display": "2.45e-6", + "accepted": "Yes", + "batch_count": 69, + "checkpoint_max_abs": 0.0 + }, + { + "implementation": "Direct persistent Triton", + "total_s": 2.3912337490182836, + "train_s": 0.36852700999588706, + "total_speedup": 13.397208866399414, + "train_speedup": 46.77284222997803, + "cascade_output_relative_l2": 0.010411809662242288, + "cascade_output_relative_l2_display": "1.04e-2", + "maximum_absolute_metric_delta_db": 0.03461828059020533, + "maximum_absolute_metric_delta_db_display": "3.46e-2", + "accepted": "No", + "batch_count": 69, + "checkpoint_max_abs": 0.000812530517578125 + } + ], + "rf_metrics": [ + {"metric": "ACLR left", "original_db": -33.009569123033046, "optimized_db": -33.009571182277476, "delta_db": -0.0000020592444300859825, "delta_db_display": "-2.06e-6", "absolute_delta_db": 0.0000020592444300859825, "absolute_delta_db_display": "2.06e-6"}, + {"metric": "ACLR right", "original_db": -32.416537505570915, "optimized_db": -32.41654177506668, "delta_db": -0.0000042694957684830115, "delta_db_display": "-4.27e-6", "absolute_delta_db": 0.0000042694957684830115, "absolute_delta_db_display": "4.27e-6"}, + {"metric": "ACLR average", "original_db": -32.71305331430198, "optimized_db": -32.71305647867208, "delta_db": -0.000003164370099284497, "delta_db_display": "-3.16e-6", "absolute_delta_db": 0.000003164370099284497, "absolute_delta_db_display": "3.16e-6"}, + {"metric": "EVM", "original_db": -25.64965659922391, "optimized_db": -25.649657576831792, "delta_db": -0.0000009776078826462253, "delta_db_display": "-9.78e-7", "absolute_delta_db": 0.0000009776078826462253, "absolute_delta_db_display": "9.78e-7"}, + {"metric": "NMSE", "original_db": -24.16977882385254, "optimized_db": -24.16977882385254, "delta_db": 0.0, "delta_db_display": "0", "absolute_delta_db": 0.0, "absolute_delta_db_display": "0"} + ], + "implementation_changes": [ + {"priority": 1, "component": "Whole cascade", "change": "Opt-in fixed-shape CUDA graph of clean-eager forward, MSE, gradient zeroing, and backward", "equivalence": "Original kernels; clean-eager fallback; clip and AdamW remain outside"}, + {"priority": 2, "component": "Frozen DGRU PA", "change": "Exact cuDNN CUDA-graph forward and input-backward replay", "equivalence": "Bitwise output/input gradient in focused tests; guarded eager fallback"}, + {"priority": 3, "component": "Training loop", "change": "One loss-vector device-to-host transfer per epoch; set-to-none gradients; trainable-only clip/optimizer", "equivalence": "Bitwise CPU trajectory and logged loss in lockstep tests"}, + {"priority": 4, "component": "Evaluation", "change": "Inference mode and consolidated output/target transfers", "equivalence": "Exact outputs, targets, and loss in tests"}, + {"priority": 5, "component": "Data", "change": "Vectorized frame construction and CUDA pinned/nonblocking loader path", "equivalence": "Exact frame order/content/dtype with independent storage"}, + {"priority": 6, "component": "Persistent Triton TRes", "change": "Fused recurrence and custom BPTT for supported FP32 NVIDIA shapes", "equivalence": "Minor one-step FP error; rejected as strict multi-epoch training path at nonzero thresholds"} + ] + }, + "accessIssues": [] + }, + "sources": [ + { + "id": "e2e_summary", + "label": "Reviewed end-to-end benchmark summary", + "path": "benchmark/results/end_to_end_summary.json", + "query": { + "engine": "duckdb", + "id": "opendpd-e2e-2026-07-11", + "sql": "SELECT * FROM read_json_auto('benchmark/results/end_to_end_summary.json');", + "description": "Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.", + "language": "sql", + "executed_at": "2026-07-11T13:42:00Z", + "tables_used": [ + "benchmark/results/e2e_dpa200_stride1_comparison_graph.json", + "benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json", + "benchmark/results/e2e_dpa200_stride16_comparison_eager.json", + "benchmark/results/e2e_dpa200_stride16_comparison_graph.json", + "benchmark/results/e2e_dpa200_stride16_comparison_fused.json", + "benchmark/results/tres_deltagru_rtx4090_laptop.json" + ], + "filters": [ + "DPA_200MHz bundled dataset", + "FP32 with TF32 disabled and hard deterministic policy", + "Same serialized PA/DPD fixture and recorded batch permutations", + "Plots and progress display excluded" + ], + "metric_definitions": [ + "Total speedup = original measured workload seconds / optimized measured workload seconds.", + "Training speedup = original synchronized net_train seconds / optimized synchronized net_train seconds.", + "Output relative L2 = L2(candidate - reference) / L2(reference), evaluated on saved best-checkpoint test outputs.", + "Maximum RF delta = max absolute candidate-minus-reference delta over ACLR-left, ACLR-right, ACLR-average, EVM, and NMSE, in dB." + ] + } + }, + { + "id": "benchmark_code", + "label": "Reproducible benchmark and implementation", + "path": "benchmark/benchmark_end_to_end.py", + "query": { + "engine": "duckdb", + "id": "benchmark-end-to-end-py", + "sql": "SELECT content FROM read_text('benchmark/benchmark_end_to_end.py');", + "description": "Loads repository data/models/metrics, prepares the immutable fixture, replays recorded batch orders, records phase timings and artifacts, and compares outputs, checkpoints, and RF metrics.", + "language": "sql", + "executed_at": "2026-07-11T13:42:00Z", + "tables_used": [ + "benchmark/benchmark_end_to_end.py", + "modules/cuda_graph_training.py", + "modules/train_funcs.py", + "backbones/cuda_graph_frozen_dgru.py", + "backbones/triton_deltagru.py" + ], + "filters": ["No architecture or state-dict changes", "Unsupported graph or kernel calls fall back to eager PyTorch"], + "metric_definitions": ["The benchmark preserves the repository's existing ACLR, EVM, and NMSE implementations without semantic corrections."] + } + } + ], + "package_info": { + "originUrl": "artifact://opendpd-tres-deltagru-e2e-2026-07-11" + } +} diff --git a/benchmark/results/e2e_dpa200_stride16_comparison_eager.json b/benchmark/results/e2e_dpa200_stride16_comparison_eager.json new file mode 100644 index 0000000..2efbda2 --- /dev/null +++ b/benchmark/results/e2e_dpa200_stride16_comparison_eager.json @@ -0,0 +1,140 @@ +{ + "acceptance_limits": { + "metric_abs_db": 0.05, + "prediction_relative_l2": 0.0001 + }, + "best_epoch": { + "candidate": 2, + "reference": 2 + }, + "candidate_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_eager_optimized", + "checkpoint_errors": { + "max_abs": 0.0, + "max_relative_l2": 0.0, + "per_parameter": { + "backbone.fc_out.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.rnn.h2h.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.rnn.x2h.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.tcn.0.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.tcn.2.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + } + } + }, + "checks": { + "all_metric_deltas": true, + "cascade_prediction_relative_l2": true, + "dpd_prediction_relative_l2": true, + "same_batch_orders": true, + "same_fixture": true + }, + "format_version": 1, + "metric_deltas_db": { + "ACLR_AVG": 0.0, + "ACLR_L": 0.0, + "ACLR_R": 0.0, + "EVM": 0.0, + "NMSE": 0.0 + }, + "output_errors": { + "cascade": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "dpd": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "ground_truth": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + } + }, + "passed": true, + "reference_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_original", + "speed": { + "total_candidate_s": 24.029687639005715, + "total_reference_s": 32.03585798398126, + "total_speedup": 1.3331782945018265, + "train_candidate_s": 13.491934273974039, + "train_reference_s": 17.237055696023162, + "train_speedup": 1.2775822462516342 + }, + "trajectory_deltas": [ + { + "epoch": 0, + "test": { + "ACLR_AVG": 0.0, + "ACLR_L": 0.0, + "ACLR_R": 0.0, + "EVM": 0.0, + "NMSE": 0.0 + }, + "train_loss": 0.0, + "val": { + "ACLR_AVG": 0.0, + "ACLR_L": 0.0, + "ACLR_R": 0.0, + "EVM": 0.0, + "NMSE": 0.0 + } + }, + { + "epoch": 1, + "test": { + "ACLR_AVG": 0.0, + "ACLR_L": 0.0, + "ACLR_R": 0.0, + "EVM": 0.0, + "NMSE": 0.0 + }, + "train_loss": 0.0, + "val": { + "ACLR_AVG": 0.0, + "ACLR_L": 0.0, + "ACLR_R": 0.0, + "EVM": 0.0, + "NMSE": 0.0 + } + }, + { + "epoch": 2, + "test": { + "ACLR_AVG": 0.0, + "ACLR_L": 0.0, + "ACLR_R": 0.0, + "EVM": 0.0, + "NMSE": 0.0 + }, + "train_loss": 0.0, + "val": { + "ACLR_AVG": 0.0, + "ACLR_L": 0.0, + "ACLR_R": 0.0, + "EVM": 0.0, + "NMSE": 0.0 + } + } + ] +} diff --git a/benchmark/results/e2e_dpa200_stride16_comparison_fused.json b/benchmark/results/e2e_dpa200_stride16_comparison_fused.json new file mode 100644 index 0000000..1efe2c5 --- /dev/null +++ b/benchmark/results/e2e_dpa200_stride16_comparison_fused.json @@ -0,0 +1,140 @@ +{ + "acceptance_limits": { + "metric_abs_db": 0.05, + "prediction_relative_l2": 0.0001 + }, + "best_epoch": { + "candidate": 2, + "reference": 2 + }, + "candidate_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_fused_optimized", + "checkpoint_errors": { + "max_abs": 0.000812530517578125, + "max_relative_l2": 0.000433965497494589, + "per_parameter": { + "backbone.fc_out.weight": { + "max_abs": 6.851553916931152e-05, + "mean_abs": 1.1124896506468455e-05, + "relative_l2": 5.879501418911826e-05 + }, + "backbone.rnn.h2h.weight": { + "max_abs": 0.000812530517578125, + "mean_abs": 6.815653639259161e-05, + "relative_l2": 0.0004310249302845425 + }, + "backbone.rnn.x2h.weight": { + "max_abs": 0.0005841851234436035, + "mean_abs": 5.633185652119142e-05, + "relative_l2": 0.0003386890819192577 + }, + "backbone.tcn.0.weight": { + "max_abs": 0.0003204345703125, + "mean_abs": 9.497876615367002e-05, + "relative_l2": 0.000433965497494589 + }, + "backbone.tcn.2.weight": { + "max_abs": 4.6133995056152344e-05, + "mean_abs": 2.179791529973348e-05, + "relative_l2": 4.036303903899724e-05 + } + } + }, + "checks": { + "all_metric_deltas": true, + "cascade_prediction_relative_l2": false, + "dpd_prediction_relative_l2": false, + "same_batch_orders": true, + "same_fixture": true + }, + "format_version": 1, + "metric_deltas_db": { + "ACLR_AVG": 0.006698572828423011, + "ACLR_L": 0.03461828059020533, + "ACLR_R": -0.021221134933355756, + "EVM": 0.012357549066297935, + "NMSE": 0.0137481689453125 + }, + "output_errors": { + "cascade": { + "max_abs": 0.08647939562797546, + "mean_abs": 0.0020805334110851467, + "relative_l2": 0.010411809662242288 + }, + "dpd": { + "max_abs": 0.02469591051340103, + "mean_abs": 0.000626542989095924, + "relative_l2": 0.00998412625107149 + }, + "ground_truth": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + } + }, + "passed": false, + "reference_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_original", + "speed": { + "total_candidate_s": 2.3912337490182836, + "total_reference_s": 32.03585798398126, + "total_speedup": 13.397208866399414, + "train_candidate_s": 0.36852700999588706, + "train_reference_s": 17.237055696023162, + "train_speedup": 46.77284222997803 + }, + "trajectory_deltas": [ + { + "epoch": 0, + "test": { + "ACLR_AVG": 3.4868965421708253e-06, + "ACLR_L": -5.957348992779998e-06, + "ACLR_R": 1.2931142080674363e-05, + "EVM": -3.5088017185103126e-06, + "NMSE": -9.5367431640625e-07 + }, + "train_loss": -1.1337840055691828e-08, + "val": { + "ACLR_AVG": 4.009756192857594e-06, + "ACLR_L": -9.952995164042022e-06, + "ACLR_R": 1.7972507553309924e-05, + "EVM": -1.8950754885338483e-06, + "NMSE": -1.9073486328125e-06 + } + }, + { + "epoch": 1, + "test": { + "ACLR_AVG": 6.151231414008862e-06, + "ACLR_L": 7.856817546780803e-06, + "ACLR_R": 4.445645281236921e-06, + "EVM": 1.222947293655352e-06, + "NMSE": 3.814697265625e-06 + }, + "train_loss": -6.883688591363679e-09, + "val": { + "ACLR_AVG": 7.795667166021758e-06, + "ACLR_L": 2.1923756570174646e-06, + "ACLR_R": 1.3398958682131479e-05, + "EVM": 2.696059411277929e-07, + "NMSE": 0.0 + } + }, + { + "epoch": 2, + "test": { + "ACLR_AVG": 0.006698572828423011, + "ACLR_L": 0.03461828059020533, + "ACLR_R": -0.021221134933355756, + "EVM": 0.012357549066297935, + "NMSE": 0.0137481689453125 + }, + "train_loss": 5.159810509370796e-06, + "val": { + "ACLR_AVG": -0.04601728180674769, + "ACLR_L": 0.014291041994521692, + "ACLR_R": -0.10632560560800997, + "EVM": 0.0012613322206895816, + "NMSE": -0.0032596588134765625 + } + } + ] +} diff --git a/benchmark/results/e2e_dpa200_stride16_comparison_graph.json b/benchmark/results/e2e_dpa200_stride16_comparison_graph.json new file mode 100644 index 0000000..7012e17 --- /dev/null +++ b/benchmark/results/e2e_dpa200_stride16_comparison_graph.json @@ -0,0 +1,140 @@ +{ + "acceptance_limits": { + "metric_abs_db": 0.05, + "prediction_relative_l2": 0.0001 + }, + "best_epoch": { + "candidate": 2, + "reference": 2 + }, + "candidate_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_graph_optimized", + "checkpoint_errors": { + "max_abs": 0.0, + "max_relative_l2": 0.0, + "per_parameter": { + "backbone.fc_out.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.rnn.h2h.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.rnn.x2h.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.tcn.0.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.tcn.2.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + } + } + }, + "checks": { + "all_metric_deltas": true, + "cascade_prediction_relative_l2": true, + "dpd_prediction_relative_l2": true, + "same_batch_orders": true, + "same_fixture": true + }, + "format_version": 1, + "metric_deltas_db": { + "ACLR_AVG": -1.8785027826595524e-06, + "ACLR_L": -1.3046467124411265e-06, + "ACLR_R": -2.4523588528779783e-06, + "EVM": 2.028292044542468e-06, + "NMSE": 1.9073486328125e-06 + }, + "output_errors": { + "cascade": { + "max_abs": 9.307637810707092e-06, + "mean_abs": 9.33147566684056e-07, + "relative_l2": 2.0480301293249045e-06 + }, + "dpd": { + "max_abs": 1.4603137969970703e-06, + "mean_abs": 2.556108711360139e-07, + "relative_l2": 1.9065793747243752e-06 + }, + "ground_truth": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + } + }, + "passed": true, + "reference_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_original", + "speed": { + "total_candidate_s": 5.458723943011137, + "total_reference_s": 32.03585798398126, + "total_speedup": 5.868744841914403, + "train_candidate_s": 3.434560444991803, + "train_reference_s": 17.237055696023162, + "train_speedup": 5.018707916804272 + }, + "trajectory_deltas": [ + { + "epoch": 0, + "test": { + "ACLR_AVG": -3.295660029323244e-07, + "ACLR_L": -1.0705163440150045e-06, + "ACLR_R": 4.1138434170306937e-07, + "EVM": 7.562740194089201e-07, + "NMSE": 2.86102294921875e-06 + }, + "train_loss": 0.0, + "val": { + "ACLR_AVG": -1.2742645694174826e-06, + "ACLR_L": -1.4162833856801171e-06, + "ACLR_R": -1.1322457496021343e-06, + "EVM": 1.281958789789428e-06, + "NMSE": 9.5367431640625e-07 + } + }, + { + "epoch": 1, + "test": { + "ACLR_AVG": -2.7133395832379392e-06, + "ACLR_L": 4.63138779593919e-06, + "ACLR_R": -1.0058066962415069e-05, + "EVM": 4.908597350805621e-07, + "NMSE": 0.0 + }, + "train_loss": 0.0, + "val": { + "ACLR_AVG": 4.6765898176204246e-07, + "ACLR_L": -2.7602561658568447e-06, + "ACLR_R": 3.6955741329336433e-06, + "EVM": -7.832428146059556e-07, + "NMSE": -1.9073486328125e-06 + } + }, + { + "epoch": 2, + "test": { + "ACLR_AVG": -1.8785027826595524e-06, + "ACLR_L": -1.3046467124411265e-06, + "ACLR_R": -2.4523588528779783e-06, + "EVM": 2.028292044542468e-06, + "NMSE": 1.9073486328125e-06 + }, + "train_loss": 0.0, + "val": { + "ACLR_AVG": 4.737642029795097e-07, + "ACLR_L": 0.0, + "ACLR_R": 9.475284130644468e-07, + "EVM": 2.8265898635027042e-06, + "NMSE": 1.9073486328125e-06 + } + } + ] +} diff --git a/benchmark/results/e2e_dpa200_stride16_eager_optimized/batch_orders.npz b/benchmark/results/e2e_dpa200_stride16_eager_optimized/batch_orders.npz new file mode 100644 index 0000000000000000000000000000000000000000..b11c7975d3a101ed36dd307570ccadaf53df0120 GIT binary patch literal 10137 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 literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride16_eager_optimized/outputs.npz b/benchmark/results/e2e_dpa200_stride16_eager_optimized/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..28ce44f3c0755612a2898513f2c32f674a92e03f GIT binary patch literal 171295 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 ugt}#S*|AX@Z@b-N{^Nj;jZ3-z%JKNJ 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 z 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ⅅp}dArvBZH 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 z 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 Bo>>3@ literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride16_eager_optimized/result.json b/benchmark/results/e2e_dpa200_stride16_eager_optimized/result.json new file mode 100644 index 0000000..de3cdde --- /dev/null +++ b/benchmark/results/e2e_dpa200_stride16_eager_optimized/result.json @@ -0,0 +1,293 @@ +{ + "artifacts": { + "checkpoint": { + "path": "best_dpd.pt", + "sha256": "d9104a960df60f6a1d1f5ab0a5a89b1e68cca51b740fc4a445fdfdf1c231da28" + }, + "orders": { + "path": "batch_orders.npz", + "sha256": "ff4dc43d09981b276c2f114d0a8f69c237dbe2331cff3d7c9572f239a434e71a" + }, + "outputs": { + "path": "outputs.npz", + "sha256": "ab05cbf0fa406f1ad661a0d9f753c552320e88a07f056d75722ba5be2f1c157c" + } + }, + "best": { + "epoch": 2, + "test": { + "ACLR_AVG": -27.226608217804756, + "ACLR_L": -26.815050106117365, + "ACLR_R": -27.638166329492147, + "EVM": -18.002733545368763, + "NMSE": -16.83683967590332 + }, + "test_loss": 0.008923204615712166 + }, + "config": { + "batch_size": 64, + "dataset_name": "DPA_200MHz", + "decay_factor": 0.5, + "dpd_backbone": "tres_deltagru", + "dpd_hidden_size": 15, + "epochs": 3, + "eval_batch_size": 256, + "frame_length": 200, + "frame_stride": 16, + "grad_clip": 200.0, + "hard_determinism": true, + "lr": 0.005, + "lr_end": 0.0001, + "lr_schedule": true, + "pa_backbone": "dgru", + "pa_hidden_size": 23, + "patience": 10, + "progress_display": false, + "seed": 0, + "tf32": false, + "thh": 0.05, + "thx": 0.01, + "train_batches": 23, + "train_frames": 1428 + }, + "environment": { + "cuda_runtime": "13.2", + "device": "cuda", + "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", + "git_dirty": true, + "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", + "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "python": "3.13.14", + "source_sha256": { + "backbones/tres_deltagru.py": "0351d322ce3ae615d0f1adfde2b76e8afaa0d85d6f9dc92f511905eca7762925", + "models.py": "8213485a8c63142704c8c5a03d165494a1556554eecd6ab864966b34230032bd", + "modules/data_collector.py": "7f3b55f38f80820c10d399d161b8cd233bfaf8837dc43613dd1410d6ed649a4a", + "modules/train_funcs.py": "1b9600635eb09b3846399307c3679f2d4d4a8014d6332f886bce6b647d337dd7", + "project.py": "9a4c6e847c0b498c0af19e73f2501b98b9556092a59fcb54d5d0e200151cbe72" + }, + "timestamp_utc": "2026-07-11T11:15:21Z", + "torch": "2.13.0+cu132" + }, + "fixture": { + "pa_pretraining": { + "batch_size": 256, + "epoch_losses": [ + 0.19976529288623068, + 0.07552065874139467, + 0.035813659822775255, + 0.015496797549227873, + 0.0073165092151612045, + 0.004122809729435377, + 0.0028371868655085565, + 0.002260218708155056, + 0.0019730482547957863, + 0.001804672781791952, + 0.0016903372119284339, + 0.0016053243009890947, + 0.001537126708879239, + 0.0014795413240790366, + 0.0014301505237300364, + 0.001387344894465059, + 0.0013489203230063948, + 0.001313198775622166, + 0.0012807028911386927, + 0.0012508238070747918, + 0.001223458524327725, + 0.0011980035510431562, + 0.0011749541568052437, + 0.0011529860992191567, + 0.0011323490322360562, + 0.0011132779117259714, + 0.001094700538346337, + 0.0010788088470386962, + 0.0010624444707193308, + 0.0010472416890681619, + 0.0010330673915127085, + 0.0010188237324150072, + 0.0010063911839905712, + 0.0009942823542385465, + 0.0009820516201822708, + 0.0009706565599319421, + 0.0009600415631818275, + 0.0009499821249240388, + 0.0009395308883136345, + 0.0009299550076118774, + 0.0009213898977678683, + 0.0009129614317013572, + 0.0009045549577826427, + 0.0008978265001335077, + 0.0008889070233433611, + 0.0008808080501492238, + 0.0008747089848232766, + 0.0008677142930941449, + 0.0008612244461093925, + 0.0008541751471865508, + 0.0008492301761483153, + 0.0008438051025020994, + 0.0008372969226911664, + 0.0008320930349226627, + 0.0008262090624258337, + 0.0008212690894854152, + 0.0008170444033263872, + 0.0008116322116822832, + 0.0008085286788021525, + 0.0008024338063680463, + 0.0007971812136626492, + 0.0007941790558915171, + 0.0007888991599126409, + 0.0007850555250317686, + 0.0007812943005572177, + 0.0007774337214262535, + 0.0007736717008002517, + 0.0007680615494286434, + 0.000765761686488986, + 0.0007614624595993923, + 0.0007581874547112319, + 0.0007533019660816838, + 0.0007504364740776106, + 0.0007459188067716443, + 0.000741948351626181, + 0.000738971155240304, + 0.0007369754337964372, + 0.0007315872961448298, + 0.0007274452887941152, + 0.0007249550874500225, + 0.0007203698766210841, + 0.0007163520249175942, + 0.0007124568264569259, + 0.0007081288960762322, + 0.000703643683421736, + 0.0006989148180259185, + 0.0006963702481395255, + 0.000688923417409468, + 0.0006831818797056459, + 0.0006777228373620245, + 0.0006716486325280534, + 0.0006644388376217749, + 0.0006551507258942972, + 0.0006462268809425748, + 0.0006346332763011256, + 0.0006214740213989797, + 0.0006044942381170889, + 0.0005823747681764265, + 0.0005561722377832565, + 0.0005314765006510748 + ], + "epochs": 100, + "frame_stride": 1, + "lr": 0.0005, + "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." + }, + "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", + "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" + }, + "format_version": 1, + "implementation": "eager_optimized", + "repo_root": "/home/cgao/OpenDPD", + "timing": { + "artifact_serialization_s": 0.007120674999896437, + "best_dpd_inference_s": 1.0520350569859147, + "best_test_inference_s": 1.0241523160075303, + "best_test_metrics_s": 0.0011255400022491813, + "compile_and_warmup_s": 0.7439701170078479, + "epochs": [ + { + "checkpoint_s": 0.00046170499990694225, + "test_inference_s": 1.0270227660075761, + "test_metrics_s": 0.0011447400029283017, + "total_s": 7.231319698999869, + "train_s": 4.545975369983353, + "val_inference_s": 1.2378135250182822, + "val_metrics_s": 0.41890159298782237 + }, + { + "checkpoint_s": 0.0003644930256996304, + "test_inference_s": 1.133408719993895, + "test_metrics_s": 0.0011637140123639256, + "total_s": 6.7356913380208425, + "train_s": 4.502270314987982, + "val_inference_s": 1.097342674009269, + "val_metrics_s": 0.0011414219916332513 + }, + { + "checkpoint_s": 0.0004925200191792101, + "test_inference_s": 1.050014116015518, + "test_metrics_s": 0.0011185460025444627, + "total_s": 6.536286696995376, + "train_s": 4.443688589002704, + "val_inference_s": 1.0398243139788974, + "val_metrics_s": 0.0011486119765322655 + } + ], + "model_optimizer_setup_s": 0.00018820198602043092, + "peak_allocated_mib": 115.154296875, + "peak_reserved_mib": 126.0, + "setup_data_s": 0.0291538409946952, + "total_s": 24.029687639005715 + }, + "trajectory": [ + { + "epoch": 0, + "lr": 0.005, + "test": { + "ACLR_AVG": -23.802362727318418, + "ACLR_L": -24.37394008245006, + "ACLR_R": -23.23078537218678, + "EVM": -9.233125063892256, + "NMSE": -8.6369047164917 + }, + "test_loss": 0.0584484227001667, + "train_loss": 0.3155044079150843, + "val": { + "ACLR_AVG": -24.368007007685193, + "ACLR_L": -25.166700405152994, + "ACLR_R": -23.569313610217396, + "EVM": -8.888111584610337, + "NMSE": -8.287453651428223 + }, + "val_loss": 0.057822540402412415 + }, + { + "epoch": 1, + "lr": 0.005, + "test": { + "ACLR_AVG": -25.108314935280998, + "ACLR_L": -24.66642731083448, + "ACLR_R": -25.550202559727516, + "EVM": -15.074752071510995, + "NMSE": -14.206661224365234 + }, + "test_loss": 0.016343355178833008, + "train_loss": 0.03183207778341096, + "val": { + "ACLR_AVG": -25.800195622535483, + "ACLR_L": -25.37349478488941, + "ACLR_R": -26.22689646018156, + "EVM": -15.033653677372403, + "NMSE": -14.25285816192627 + }, + "val_loss": 0.014646782539784908 + }, + { + "epoch": 2, + "lr": 0.005, + "test": { + "ACLR_AVG": -27.226608217804756, + "ACLR_L": -26.815050106117365, + "ACLR_R": -27.638166329492147, + "EVM": -18.002733545368763, + "NMSE": -16.83683967590332 + }, + "test_loss": 0.008923204615712166, + "train_loss": 0.011922802371175392, + "val": { + "ACLR_AVG": -27.650038422759067, + "ACLR_L": -27.4008395120854, + "ACLR_R": -27.899237333432737, + "EVM": -17.838220021303275, + "NMSE": -16.874755859375 + }, + "val_loss": 0.008002975955605507 + } + ] +} diff --git a/benchmark/results/e2e_dpa200_stride16_fused_optimized/batch_orders.npz b/benchmark/results/e2e_dpa200_stride16_fused_optimized/batch_orders.npz new file mode 100644 index 0000000000000000000000000000000000000000..b11c7975d3a101ed36dd307570ccadaf53df0120 GIT binary patch literal 10137 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 literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride16_fused_optimized/outputs.npz b/benchmark/results/e2e_dpa200_stride16_fused_optimized/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..808c6332d1cf0fc23ea5b63f08730c3fa88cec76 GIT binary patch literal 171327 zcmV($K;yqqO9KQg000080000X03&U7J^%mz|NsC0{|f*V0ApcuV_{@vE^csn0RRvH zfbakS00000K;8fV00000oS5lbPVd*oZz&Cu5RytN6_OBA_g*VWk|Kmus7%Qe5;EPC zq^P7wrb?wqB@uP+wUT6tlD;HU5;7%Z3VHhd3(tOW9ml?2T*tB3-sgFK&V69&ELXR= zog~4M&8CYMuUoj*)W*P6y2Q%V+`x3n>a{^@eOE15y>`*!|Lr^au2{FYV}G5$Z{XsN zd$UpI1|vt0vFum}n;UF3_lQ6iJQoOQvv!Km_aG!MeJ=lbHV~T5>k0l> zqlLt`c0!eUFOu~yl6$6~r}}>@NTI2oE_G!Zt$m+rM%*FI^ZUr(;~2&DI43&IY!KtN zKM?|>?n(#LPK659I^p!PL2#+xZ6P))Mev!{S$OcRRJ0q>m1++7Q{tC7lw5R?{CiKJ z)2~mHY(*FOo1k3sIWPj=)JBq<`djFeFpBQX>Vqp4YebC!{c-*+AF=EEPMDv5QS2n$ z505+sQT>Pw;-GW8Nj^H64qd)L*{j}>pVZG_3bXyn=BLLQFdUE(nWmx+6Nqh<7ms-`Os_d04{JW5!{2f zv03Id(Q0reUv^I;znEg4dbX8rye{M;FEqFoqPc2;7H7zMb3uS6YdZRf2h3I3c)?2; zYGBA$lMvS^yRm(L#3eU^_}39--1Tw~hu!H8ohQb!%49c+%-zd!zwTT(!<+pd4C6sd zl(;%gm4~{SP+5Wlxjya%QuX1m<@jM}l{A5YeGTMI9ftW`{(yy{JG$n#!j7kFaWMRb ztM=P)TX+M6+z7{`I>+GedKngM`X_{Wtid;ZJJH>>GqJhT5y~(&LhHZZXzA)A7;v={ zwJ_l^dr+lDpUq(SztP;1nY=q`NjTHDL9MY9rO0(kWFGWgsGnrzMq}~s`a&y zRxldm_s3$NjGN&9%^3|8Y;nsuE39h>!KX7N*phw_>vuSSN%wsi{OgQ(ZiXxRf3Ty( zpnD)6H-_quwTSZzm8hXblcDmcF!Q1-J1Sg;=A-jDA;JWAzd?RzwiI;@TF5Us2(>pK z6D{U1$BghOa9HAiD;rc$|Dp!woF0K;zB}N%mj${Xx+*CD>Wv1&{iR}UHK>g`A~=;_ z1bb^;_;ma_j1u?4=Eol()3X$2Cw9e=x$i*fh&CPzc>!t;>R7Za6W({Z2$4b4pk1XG zG!9f1E!S((&J}7D7_)-3l7T#IfWAM}CQHqDF|gMfQPvD%eDqtvZB7?T^VMJ%=H5I!qx4tQ&(IJ5LF z`AnH1^nKHxH48S0sm>$$(y~zcua6PCcUNZ3-`^;D+IWsV6G=wjJ-8~~RIC|p!#zVg z9wz7sJqpW#stcnizUM!P(EKJ&eXob{vD;~Y?l{~#{2g7}VuWA50nh0C4|ErMbGhRp z7;?{;Cx_n^H#WD4_R{FvhdQ5HOKLK^xvjpF_qG3Z^g_?YpJoMd$>1l2_MD9u8 zmR6{Y6x_D^KW#idif^HE@a;2y!N-jQU8x7dIJo; zYQbi`rog#JMtn}O3w-IGL$R^nr7GoAE0{cSo-nMb9JMx^gIVVc^xtp@f=5h2?TMKXx??7|UfU1);%%~% zJrnZ!dT?gkA2I#!ZZ6xhnc6MG`R>LYBvW??@6Phd;oPw+W4{{@prX}~VeAl77v82iEjPXB&SiSKrcHtwT&!PWEh>e&!}`Qj0+ zZOSD3)F%45@r1CtDxVC>F2SOkS45+68L$cmf@IXB;&|^Ja6!qKhsB(MJ5>=}uX_MS z_lx58pJQR;WP8@S*aIw|6pMMeY0^hym9X6Bp49(E5FT~@RGj-_B`TJzm9O&biuD0y z@{%5##UUDsq}^h|^12&h!AWGv?k+`%rmv~pbT{}|?iX6v0NXYz;{$_G99TXLrw3)? z@V3z?*2=Nmu^K)sEJR7>yrLDaGcY!8HT^D##=PE^WYK3int$jD9`gYAcI$x^%T3YR zYc4*QspG;|lkm{EGq9{n64*6o%l+P7pgTrC$$CvBZwsHx7}=9Qp3Ya5nH zyW_zf&tZQ2nhtK*PpNLnn0s*>$L-ESmlQcibPmH!ZyvMO@UD1opo08)fE8@K*n0q#n8nOT7GqI}i7u_Q+RYy=Fd+8Q_Hed=;L$_@e!^*P@BG zGj3j_!SD9`gFVt|Y_)t0Obzzs64M%ap{^e%Zpafyc3;l1WyRu>vzu6=dQEO+bC4w} zy3$2E(^*0jq?vr0lS@YmEmIQNEp3{hxzLr9ot_ATj+D@i3AKWvHH&Uj3&az#3S@Tn z82KArqva8boV~%Br%Xhi(GtV!CQaj!HAh(by$7e>l5uUHf1-`;D{}wV3|o(RfnmS( z7@Z}>_XX)#U$PnTvc|IRZ+H_H)SOF&O+YoHJlOY8AWk%(uaKMwD>-%vspj4vsgbz+-^)k2-79#1&%2h1(4xc4&`#LS_*Ce9bjf2py*i4i&! zrIVJ0GI&VjqT!z>qSl%Wbe1P;6|Z@;|Ho!`Jj^&nDC&PI5dwGh1am7}IF$DtjN3uDG}92h+fr;@)HHG0 ztHIDY<}x&e-T+zS!(yXeCirBsjKaDvMXR}9w5NF)`d{w~aU+JJ+_4W1ciIJouePC6 z+%C%O8IO&E4L|o-k6GC=HrK9$*qfVJ=AJT1r`pk+E2fAD`4X@38%ROZL+iAqZYF`VYZYnw;kY(J0^4g{`+{#w(;C6dl;LTj$i}( zc5&9J9vuC#8k*WG>D$gx7?b}?oEJG5uU7cN`)(EByuS&uTW8Uy{=M))njLekCh9L; z$tT}bKnXiDjd>x2ZEm2AeO`zLbAL#G&PbrMu1OG9yOfOP--Oxk56Q#QkHGhubs+D5 zUg*8!2*9ZrQq0-}A#GR4uGd8y?Y7O-eC{$O$6E<28Z0@ zu>Gey_4RLp?a@2I&itex^J<2i`fysNu7H7CnC#*=gXgwbN?hheX-)%aYNvi&yF(NQ z&2eF;sCD$^z(|f&?Z(B~Cn)0VY_8b;SZIpe&F>HYgsE*CIAG5Z^sVd0Nh>tauJx>Z z)Z0VgakURFIq5HceYFCYxo1-5l4aOu(qB65riMQpB^`{YBwT)`%CG13;@c5wylU(; zE_Kvlowi=wKG2dk_7g>mK7;xExMujUrJ3sA`C*smSz`G6ow%us9A1_!L_>)b?Hk{M zZOd$wWSp|SRBDK2$t!5wvH@^oeOKE11Jsl+^SdsOAa2Yp_Vg3s zr}R2EHry4u8)UM&ZXy*dTFXTr4SBkmB{zCI^X$~F92c&~Jv#O0Xy+63tgyo)uGL77 zUKqzPI}f}U4C2~JzhUi|?=-Kr6f8IIA;*<2u<6erDj9D~O9W9|)xQ&~+=!6Z-7;qf zS4+X?(`f!M{=N}&5jJYj?)ZXd0|TRU>7)bc&mI@LqFV+1vg z&H{<*qhfF6*>G@04BV~1B5WVh44!_fLeC@xl+7_I+BEGB80cpet3#DgyFNvf&&npf zzSC&NJrkb3{w(zwGnPwrYiQ0zC2qfZld?0%)0LxflrQywB|W;+%Ae1nbpHV%-J%69 z8q5Mm@`DinWw22?jU3eUAS~XV!_IYs@RBH=pl=5gug0@k=NoWJF@#IkO+?od2E3~} z0hd_prR+u#C8rjOV|zVDpT8@G#F4MiZ9{({>2V$U9ALTjq*AoZI4f2J9YV9%7*Vof zAxf4m7x-moEPJ>QJZ0LTE-Qit)g7c)lM6wWJvlRPDqQa?WrIhLr9aATSkj4^^Ej-tM>zP|5v8i*$@{7?j`Ol$O@;GNV78BC z50(hkKXcgW^LbG}|2%Jeb5m>@eS{^c^}=z#nLOm&QFya0k#bEFz---Bp?+N_&`{kC z-a`#(BGbAX)yfjE>L~83K}e5!=puuK{InSy3DtO zUjCkV(brj6_Ge;8-}xUV010e(b@W_v)k0p9iEksV5Hk5=Yv}&S3rir5I&(mt-bSq zuS}=}#R;o9b?-3j<8q0LFS_A7tG`h3&1O+| zdChsM8#Dmt7hRyKr=(yv#GK@-WuoNwz~aEIcA{*>Qla|AGDu#fBmDE|igvRHi9=P# zqgGZR{kb^`b#l^4Kc^Auzt&KGbBYl7;}&(Fl}Kx+7gFB)0UUQAfzI`w#eYWola(02 z{u?Hdk+}!UqB@H=6vy*-1v{XvrhKob0)CvV%zkF0G41?95fjxSg*~Tk!;+*KP&{1$EUw)Fslq<;&=N5E?{IePUR- zdAz%76|XgvW9vjup0_O(8?-y#-%opVN|+-!ctr|ry7xi1gWv2+#-R5aPu7Li*!~2$ z$Z{)wA6!9NzFsIvagc8E*2j;04@|nvhr9FoD`mwQ$rq3ZUWiB1n zVPQs1Kge_QCjGjjP=ELc&G}OZlF`#hdsHao9o{Y4D-3~_KbysxscxVI0Oz+ zow?lF0H>`R$J+0LamWKx&0$?0-?5bwlGFR#Lo8ypmt;?`mB^;SO=F|e2GTg zTlV<##aax1&TU>3PpxL}?LirbpxcI$hfS>hehRM{63 z7YKAQVk?f2MADyKCOA65llC_J5YBj7lPvKEIXt`}4({5);su9_`%V%#{)LBdX?z(q zi5b%Rpcv`L8?~Z#VLZ5<*gzUZXW)@(I9Z$Q5)v1?l6zhr+07duO5OYNivK1-cGqv@ zoKpdI{~YA4@4mt6lZyE7_ibpt7>3gM=T=B6>w@XQ zC#t0Fpbg88;e#s&K*J{s)mBYK_cf8IdwVB7cUMB^!1>tN z+E+9$lHk(S$}AgIB^@}dX5e% zXrs*>T{cm3L-|`D9-lrJjjzYBU$_&-Ej!HBANBF4>Ry(7tb=~xllX??PAGGlLYb}S zZR1*wLE?f_;+R59oLjY7Z2#?z?!GGp#Xt{?=)4ZX+DGDPt4~lDtB9kgXyL{#2Vi)3 zPgFGN0p=dpphWB{L?}866}8HA(KwjO8_!b8*?h`+rNKGBWz6^$p zcPGG^rAOFa;V!jVY-h=O8K0YB&6aa7^DFz;0d7IiD|ZEX>COUS|M@41_&Hh zFAh6!0DKJRi=nk~Ap09BwVt~j>?+sFpVv%;kvC)Mce@QNQlH8ZF7bk|PAO~O-7Tom zKhB%}Pq?h8QW6mo1ZpOK_+xnk^w2%e;g-EH{+|->3{l5=*Ic-J;4o~S;Dfa(Z{;hS zcVhVVA{zQ30FPH1aoKh~RJ`WQ2fk;()a}+>@39>ob1zgmkX!BfE zJiIoaCS3dtkH_|4wYpTOTR4ej%bTT|hnDe;Iw{Q_=ESi)h<=oPAfL^F!u)YzqQlm$ zaPwarEa+McqoqF~vu_9t-KK;-=OX3Tm9Icm!du!}GYO*Sc(6n7(Lz$HjB7MiglBVC za{XUTaPsWUE`zP1<;qvl`>7ACdNCG^e@z5~;s3#-&)vXy+)G%LUmz6!R}8yjdcwH* zd*S@;P`Gs68tMzmA=1$fN;2<&?!PtQ@bW11JeUZLmXGY4iOvI`(&0E)T)XQO z%@GVRLphs{Z{GuXWu4gVp}*MQw?8kwc9@d?sd3h(EVA5@OA>E;vQtqL+w^n<%a7xs zr9BgNPF)RUrfr}pnGNaz9eTN$FKkRz#7p1)ierRwxYXoISIfJCN~0SkKORm#S^i@D z7!CF@&lg7Ot!8aMH|XV+#+jW>K<82k%k0V4TCCs=$*Gh-M9yoiR5;Eej(g7=cFz-=o*(RPo)N z8{{5y1#Z5LA^jO4utAgWBChk35SlFnlBz_b{=?R-Yap<`%$Zx1-#JdXeMP{5UHN3bA!7`_Qe#(+^n z(B3i?TRt^|i+URVSJ@=o&q>3c$pNHTo{G|qf2hSf3g3T`u-dlCXcy~FL)-5`=5cGt z+bS3PjeH47m-}%;f*HP(cyO0k6TC()eB1g0w2si>_Rg>6{w>zz-BM2S*=wNccweqC z*TKgxx^l9`6kM9Ufi#y$F|T9^%wDdBP^pa`tL_O3%Y0GlTuyAXynC zUrvv}sosp#Uys3!7SG6h;(B!4Yr=!VBQSK!IIcXf9`8*Y!jFvy;O$o`ykt}WlvEW` zkEu!&e;ldR@F6w+(V|Vks$4PFm;Spb;gZ4_>Z5a$5@&?cmkB%RQuJlf|NSO%m^TF8 zE!#`H?h>rezf98IU*V|l9ZEh>2h(~VA|H!bp|)Ow6zV>af%aLsvG+FimZb=_?TLIt zc12iM5y{fRkMfLXL->AYFOu{>ES{KHMNSWM;Kt@xBwehA>r(De-;A!ZGRozozz=2g* zlGc&o2B!Gvyc#z7Z-eKZ6+3#+A@aAl0~X2Md8V2nSnYm5Ax5rbC-ah{2jgch=hZDAVbw7ou02d*^213yMA?(;wC(xyC+2-!rQDkOh}AAnW%d2#d~{d` zXG#xn-6Su5=Ap}t%2sTZYC=1I-XhtNZi0XCAZg%FRq?p146F~7kk82QkSe_c)4sWp8xm8DoyA1`oiIU^ z9@2cP?pRQ$NbyCsDDRkk!|r+Ld7vI98~EVs6~@?S?^K+Bc_Aux?~iN8ZAA5{h2UJX z34b5(6b{@ALeHT~sK@ZhxJ$i>dhP9nYUYEun$E)f;)%TRmns~0^d#A#`q?!v+(iV6)toKi}C6Uo|vY`F$uP$7N7^VOK|@?zeH=v(yM1EPJvz<0hu2t`1`(Em-nHIz6_fBKWj2(P>@lrlg;l$y+=5PtMQAB<} z-dH?|WOep*KVMa_(VGe9;j(Z&@?}SkDu8Bt4=g)t1>2f?pr6wkIK8nG4wn>w+pue( ze&`)IoYsQ7iw&^kXN_F%)iC^^mIR-r73)>t*{>vu z2>dPIIAm0Z_vebTmCtRpKNN`<2d;(8@i(QEUJBhk7Q@r;hUi?>0EV9|aL8^e?D5zN zoppn7V{a+$jfuf-n!~Ym%n6LzJOaB`CZR#5IVMI#p!E(Tw0vxbhK^5xc3lBohmD{x zEk%_1J}W-{1uJXaIccUA_FNW2HFsPw?R64FMlQkeDc-2Q(*^JA9mg5v zT6jJE6iS}#f$Lex__f+rTt6imGmeIn&95-5KJkPmCxzpmulkL&v#a#L_bQ5lqnDe5OQFwKsJv+6p#3e8L@Pq?; z82@z^z55jjp64>4uBaQ;M!R4b-KVKPccA5n-&F8m8`dw&B9+;8Xtqd6`uh2A7}4;01V_*i^7WW76FQZA^*e91urXM1w zZ-qQ#(jmC|Dw#)D&p_4bi}~I7c(knO%NzQop_B9mUH_ekE#D$3cw87pjyOe{)10yK zeGTdR_rfQ=8z`yk8%W%cMZF*qWb5CHi(D< zV0#+>vsA~_=qnss(Ijl?ah=otJ4mY01)Tj?hizdTQhl{KUOIb8GjAdYV9S95!12O zC6%63C1F7W(WVK7n08iyzd07-{P$WN^UuJW&vg0T+kL3h{R_?Ed07A5gLIE7W7`Y| zsGAcD;Rm{7OIn*S?V~SBK5IxVCx)XzPfIb{AqXRE4vIOCr06j$TdX?K0AagT$?s1f zB>p@m)(`IRKObE&tnrN?>6vI#`@;ZyJb%igTP8r&U`@Iy9RV}8Ra5MxZ9?$ddC{rGHP#IeyP0A*#n!E^71yYnNQUGf56h^1^xF`VVls(U|+yegpp%y(mec z6zXj(puO%GoKZdj!MZcx-I^>=4%UO5>InGo`--5DX9ITvrid5AC&16)hv|d9J0vyf zaB^BA+_PH5EB4=jfSf1}Z+Z{-V-H`=e+m5>U3gKQ2)$e4XwuXaNVpUVug9)}u(Jcu zZX6313+7>7oWBr0a5Y*_7zZ!wXQ9rjTo|fijS|aGaDJfyW;zZ+W3ewvR!_l6jeYUi z_&wMqQUMzu9!BrA6|kw|6l#zDCCKBCp-sjJ8aQ+ZsyTllTU&iJ?$m=ljxPXxi56?V zh$5ZE&uR8beRk10PF7dk`PhDa8ZgR@gG&~QNqRl_mMltiRt}?2mBu7lb*T79+Ckcw zs0R0+O1LU}u8{j+Tn8s#r(4&ybLQJkd?(@eW!=hfj!@bq{_tv~^qp#$cUvYud2||X4c!1+LLG2t+i6g&`UOGZ(cs@TkeC0_n%~akRCt5BY>cA@-OH5yvm58k`9f|X(>SBQ zGw<6Q!8m$1my9~bL9xeKp*@L%RFCn7iz|4ix{OypeM-+R_viZa_Cnh4PV}~V6KE$P zXc_uI5v9PQ@1auT-l1TB%!iUy`--;=b4lIyBrV9=K~nQ~ly~cq&>nP)KG^>S^A{>K zwAKYJd!&HMWgk3Vx(v5P>Y?kC3m9WH0?v%8M*qnHv_;`RoTmDVs($2P-I5n{x_CCO z72)7(L1p)gs zQ7z*M9NzXp2vXI><7s=SSa}9c_kByBzwSb{+DbaBa}dpEjHG+Mky!E25LT^NfX(F< z5ZOl+YbGe*#z~VPdHH9M$jSD}$qir`Jx+{I-XT_5>Wj^%lS#I&QNE_8g(Mz7Y;4cy zaybw=AhFy1pBzX9X)xi80RL%rYjNT=Jgb;?xd4vbs5+l zNu@vU8o_OU8r``(6yL>^)AXF>IOAF?JzKT|jrLoxmG5eN<+Fr8Og6;wf(UMI8U>f` z?dSa;_fwaw{k(0V9{2X#$o4bsSZ4?F+Da?7KhTBsnk1a`@f-#3@g>V~)+9S~NG^Fh zP5kgXUyx*sEZQ9*f%-|GgfTA*gj-!~!B0n7c-b`;Qign!3)f5FmwR7w>{12l%hD;f zv_m8FRXA^US6CE1mW_K#$RNg*mtMU<$r9kXvNtr?T#0XWyF}WL{)lRbd(!dg3^Yx#owVrz2q6{>>P_ zz9%F#?!db1r=-^|&O}MkfntR?v1)nLJocFa0ZtOOSA7~81hG);H z=|ykc(n%9e&N%>WyBFfr|NVRIb_stp4d;q^SFl&wHr{zQ22URi;XmI+SU6XKkF|AW z>qD=F2@?}|ru`s1G2$dA{9cbT`AXKS_QL?hozz(W9@I9g#O>jldcUeb)K-8M0I2XspS8Xs*u^7oE+8mXYbU#g|nuF!a7yymun{ z{@h7H{y}Jxe3R6?*P~5v2`#^3j~W@KWInDJ`uw{nOn)5%x?u?rJHuSa+VCH^|8^kl z)i1zgXFdgJU4;ApX|a!v7ij*N%q~Hyf=BP=9R1<8C>gzgTP9AV@pCP?T6+#9wH>12 z-DDk}6el>oNTixg;jnp_KTR5P3RDlpiVZazz&~R)XhwV!EbpHNgS~2kQ*kN8nU00j z+-TVTwHjjQ-Vrj=ZLw(eU2$@^P;CBmg2vh&!Y5^aNbyw|-gi~!&q}r!64Zs={q92c zxV|h&xi1#j8MFTLcT{d+%iVbtTkN07T3+tFYU)hBdTbMaRX62U)1CaPFq?9N_i)Rc z<5IVrZCqj;4|CHTSnz28o&1k<^hF(*ef})|u-gYFV+^5_@jR$h+yjZ@-C(WJR>&2i zL8bM+P?9EsWYd3g3+u;VX*fajQOkip8#Lj@IT8$=9)Y@85L>zHBoZ$6lp{w_|Zj;vp*Uy9aAu z+tKYm9r%b9;6ybvOB@5K-;&{mFc3fNFBH1?FT>iT(_;9FO_+5=g#v2)(N<%(c;(1A zv?Ql+R;oCC@7-K4J387q>$()~pis9~ea zlcrC^ioa&;)-lH=OL}l{={eY$^&kEIgA~_4nyTm7v)1p6bhk$=r+qTy*e{7ZEKtV# z?{DB6r*n8w#05Hfyo{s$@+q!9*q8l48O6$r_ma*cKGN zFN46f0ho3ul#0&m!#mZM{HtIlX8jk!271B5+$B3X!*3$DAM)q@WoLPCl_jrUe}QMs z>CU?zhH~}QP8_)B4(;+(<&wy+g3ZV0v?MGWv~uT(&YyaL?^^}5cz1Qz9`Q#ca44QEe;%*EDm1)nRSNFpd@GlAa z8+Pa^K1-T9(Uz-h#!;E#2sZGE6GMj%a_R0K7xwEJLwzc|*`>jkw&XZ+ zqE`%^c%jNYlX7XxrDU?-_=fI1QlN3P%s0G_OY=hd@-xj> zV%BMKgRw5ueKOCe_}mW-#_2c?XplYs{n=>lw;1jCs1oriYi4{n1U>%`1j4 zfyQ6)95LmyD2V%b*P1M<-?Ea!t)J4^VMAG=cNYB%lyF+eP%5>!NhP<2ORHsN6j6Cq zSS938i}G-|zTpVXuyBGjqi&@2_Pvm4S}o)qtd*8I*ie94^c5<0loQ=P}8#-gM-gRX^`puwhC@%6n6LZ=TYkZRP6YbGn<->_(w?NY>? zrb3=0#6jeO63!fPL5%Kwl!x9ZC->~`y!!bMn!YC&^h5TMS^73q*>zHIQ_96LWvwvC zyBI&;T!~FJaj2rX6{V)es4${GHY@G|J3_h7K0A4D6HhLga#C~(En>;z>qQ>^)hsiU z!YSuMewHP|cjxu|J*5;j4y>l+>pMVJ{;c?vo-Wl+-z}Up)a78c<21bgdcO634%;Qg zu-%JPj@lQ^=N4VyO`~>jTEGeZ=I6pX*X=p^Re!ehOBQ>sSK;V%Wvsl=m1BRc$I}-& z^X$Mq*mqVoUE_85$0kJZHMc^`{%z1SekqI{gC7vXMxLdWiq((Qjpa1+5IBr%4TW+3;)iEcyJY5rK`;~I^fPDCzag~oo z6oaPASyu5KggbuiE7aID8RO*59yE=H|BOL>*J z5xZ9HWsheMKv}+zEls-$R)5|2Md%>X%$!BCXjS@kA{U4s33ul?uA+kGVPQc)KXy-iBVIh8!Jv*(bW2lv8_Pe^m5T6O&Y2P;tv@DEXs1e-$)ch}HHY8i zW-^(|Ixpb^3zgWd@i;dajpxMHqSr{q3YY13TnCHXJxJEO z)VM@_i_rM@5;f#}h0GnFMcrd|ceS75R?xn`+(Sy~I@T=x4{6Se`?RQRDGgb9Q;__Oq9t=bL8Y4# zC$F@_tzWzI`B)dsdGv$gj0d94wJY>%=QW65mqvqMjt8GFv83N;A%xfD(}W(MKy&UZ zGOU<~&gZ_-QHwZCG`dOeyi!n8FG8=g3Df}U(tLE*I{z3OX(=WDKs znNfZ?Y>@&bsq91T#yzAPeE>JqHq#9gf4tl07bUfpg7*1q^kvH-ir1b@PCusd7k5`s zJ3o&{?lD8vlM=Q|mZ6(zrJ(F^0Hgmn;O9xfSm7Uo&3iw==XINKWU1<8L`0jqxXo_C~z?M2EI* zx{KqV?x!VJ-O%jDeY&eH()bipwolAs)0@-zQuBb$4R1X;PI{DFQJ{Cr&^&YMA?sO?K-d5K_nd8R};K z9=dkw#pmMv@xQ-@yyS8sHavYzXPu6te#Tg_w%-o)8*m47^}FEBe-7x@xKNx*0oc?3 zHH`>Zh>s&R_*tR}ejo9ijM8(UY=a*eAH5>vkDY9jRZUYF}VJ%rTC!dSPa;eNTnAm zU{!D~mFT??r*G9F-@a-b;1UYY1`XhNm%bQ&^(jri?210WT|_mn>1gOv3N61>P}O=M z1{w{3^4I~G`qrIx^~{Iz-q*?cMZK7Jy?`_-6X>w3KP8v?lJjg!QC8F zuI9`a?w%Zt$<^wxzv~kGroICV+$Q4$3nesrVSs9@tx@5}dAM<5G8)!|LhV#z40`ey z^1r?oG=7@m$d3N>W}q9EoIc9Gy#`}L$$gestpX3FM$Q?&o1k|&JJ^k7lZq*9TE2mu zpC5!Wt;u{>EetCPW9aI^lUTbe2FhqJT6Zw;X#3u1TD%3 zjk*1OBvriA;T}KSxV5sHE}q)M0}pMaTZeaZ*cvxF@ntq&`F@u4l??cjqY^jPHB!aR zUhI%9BaPp`$zYc(jYm1C2>C9)+boUdL^iI&9Bb#CLpajaE+70a=)so&FS9GZ|=XWp0 zq1B4z{B2MYDD2tA)5{N%Mzf42nEVkg zHCjSbZZ|snbRsAks&Ua$BUs%yl=pr;B3|$qz;8wtQ_uz#epcR(wG}EzWv2x@#TC=3 zhDy4d{hHQon+9VND@pighc(Y?Nq6CXbk{yc^W6_)Nx>m`!ilAr_GK?*EPo2-Z!|I7 zw4k^wc@z%wok&Z4E%26Yq5Mks-e_;|8BSKTLiVme%r8!d*v>~WJV_2uy$@i6YH##c z9f=vi0vd&M7WDn*;Ic~{EdOOX+ALi8e-vAJSdL#4ex;IBl8`n@k|ZHX-e;ywB}w*5 z2uVVckiC+mLYq`lAqq)CQtvYp;+G^z5<<3Q581b`@2~UUx#pa?=U&cr9j@=xw5kNXQ~3o(x-(*}h;sO+Ok9(rbI<@!VP7-xWHbF|6)fE?D<=aRzkbcovg ziW=A3L;p%OuH4uMVk{b{qxT^2m~vP&h%pB_`@@hTyCjTxqlqm~W>9tiiTL`~8_Ml9 z8{L~elD+vvRPP!~t1gVjoHu2Hn$!W4LUd4ibR&iZC84ZWCdOuqSZY^@8C@!{_+T-9 zFi64KoP`GCM7R?ai)qfMXjDuvmdQJ?$Ca6=Xkf=pgBDHQ0T#pjXZPHE4qtL?i z6-=sHjX8oLzBCzz@_BFI!}Cl~8kr^3eK4n_KT2#h@(&G8isZ_%W<1?uAD>(~g6$q} z<*Yjf?51kW1%C(e+i5wZ$+jH+DP1_~5W!}l-ca&8iPL*Tfp%IVYjsJ1LN9Ng)}suj zs1xbT>VcCsu<#i23HwjMV6%O-$gAfaQ;i>=C?qsna?e^KMG@C zM{vu6Y-vi6FH4@ElP1mlP8K^Wg~=P9iQjX~1%vA@GNT$#+GS@*yDSy>WUf5R*|~80 z^$_k@xRR%4?c;Ap$8wLBBzB#$gy`pVc6fCK-hVnqpLFJ7>%@Mbx3O%~8}aS-O!s-frF zC9ot;iuta^^se0=C1(P8V?kHE{reF67p@28tRi;Vuv^edO=170`7lk{hM(5ToHk_knEDOkA#6|~B)BT1ZemSgz zf?Ou@!UMTvn$kdFC%4HGB(_j7ZY8`tr;0(I7r=6a7mnW%1-*P`p>A%9)X=Uw_Aa-l z;D@F{eZU#&c~6NwtT$3{uj%Z0^rckU)t;vhD~0wqw`t+I-k8vTrVz8y1beOe4VPE- z#hA9Km^7&#T>Gv@?coC`EMH3Tv^%K2UQ@s zy{6n471831t*A2Z4M<)aNu%cuhm7kz!OVOTNiHvi+vXYS5--u9GnQW}2*Fz&Efw z+5?=24u`M>t6|joQ=;djp8Jd5q3UKGJ^gfFW<@!Uk>pI>&VLt51Il=}SufWYbgWt_|$F~mz{uvg9p5YR@ zH8dGhk30s2pF42vSqEIK=!Cr&O+zEQYmk&`fi4yAW%>`wAkB3zd2T)b)`99m{tM_$98hz z_|MSVc#v0I(M8*$Jv?@Z6*jl&^TRV%Xd<^)Y@4r*Hr;yzbp1I z{|ZYo&%kL{3EJK}AUM_if#9Vi{!y(2$zWSCZG|obq`wiY{@xceek8%d%1g9T{x}%k z)?n{}>2UeiXja+S4^nd{a8B)VL9NV|o7}Do_tx5TfAzy)FvW{&H+_J#Fkfy>SHy*{ z7H~zuZ8$j7nsZKG7mD{jpwtW5)Mx%PF)~Dt7Ygq1`GY>co zn+AR?;qaBSWKU$(TwS6I!wb%`n|}nnpSFe5J8@Jt|24@y2nD6M6QaibKxnz1C=D*& z4#9Ly9K10K!bk0-hQtuCR0yWGeF}t}$nDah78&GqsTTfiv*O}}5PbD&2T#>Kf{s%% z`6lJ#s`#Va=gdw#?3TdKoIb#%`vX~X&?B1h@T+*=FPjZ_?S+On^{o50Q=2Rsx$(0t z+BTH%%D%Q}-G2|??`Dlp_js`OeLWm&KZqCKe*+T@hO>8PJsB(K^1PELg|OyG*4-f$ zZOy~@OqCw>zcz};85)u9mf57da45|ziGnJDS@6et{{+gd}Y^zU{-xu#y`X_o_CwT}y* zN8E(a-wVNIwgj7_Gob#?Cs6xy9I)*S(4b8=*|_- zoGG|Hk^}CfiEEc{W335ckh*gMj|dos3FotE7(}4?gWtmCb^FlQ{0waT5P=E3PeDhI zB3LF)hSlE`xo(}8n38gm6NXsOk26pB`^hG;yXiv~0(Qa9SI1cE;S79{s>5?`9Ki4Y z#fY2cUqF@A%W!4jQ8aA44bMBZFJa{ZLDQ!jI*z_3cwMqAn1Z96Ipnd}ye z81_Ax-ADd{+T@vR^E(hO_H3n?Y6GgBqegF6_vHeIS)!)gdJgH?pQ^58bLgiBq#a(y zX+uo;@*ZM^+crGl;ciU!+~Np+^<~93F}8=?}p8M%sLz|j89;r z7pXWqG=XD>9YBq^4Q#EQfIdlMI6OTRovg0Y(R1U`cF$B<*8aQTwtp?8yzB+GvT~5f z&8FKynP4A!i@w)r!p_bANMd$JIA%FQ)y4yGUycRHw*jC*v@qo4mc!ZF<%zjAb8kB4!e*fszi=u6NT?oC=6$d zhXYvSv>N|iqsFqMDI`5rO1~>qq4M@9YAf!7EkdfOJjoSv)(sP9?D0g&xgF&-dV?`+ z00|+MkzmlK4#ys9P{k7y__Dr?g8K&w3cL1EiewFa+IU&;%U5SDw|20)6v~g1ZE^Ur z6t0)I!C?6`cGo=)yMw}5xAr)B)pX<3XCdrSG>qooFXHf9;X-EAWtJSfDt)9<%6)wj z=;)GlJkGomx5w+qGGG&jCifTb%SCcY$syrtl^aXe-jgZaP~vOBbLnYXGiAPxqoi0} zZty-R)~#K|3-4rs)~O8sF~$-5&p5;$llI`(h;=+_)dAEENF|d)5m*u=!NGlX(fxV? z{!q4re=+Cq@4r6uM&Te@MC~Su8-)qZmgJGBDin2FD_SONvGs*Z(z!kp*y2u%%w+Zl zGW>4`8T>O8!Y}Ib?G}xIvrRhf;A-E%`b7(Co#@WKueUG@lM2$=nQ4ZPk9UBJ8tt?M4%^ zF65)|!fBt_@$0j2{8qCVUj0LAbeY8Po`=PX>>cBuKk7%e@mHa`x(}RPqJa1fpd!1| zJFosJOk4H_3@qo1J8on^O;Q-?6{|vr-!qbJN)wveRcc={6MgBM6gZb0Xq+L80)mJ>F)l2rF z*}W**@~#j)YMTVporS0&{~n&S$6?y8iC9yhjgQ-3`?2Hu_wZhCAMN;Lf@g1KLtjf5OsI6mj6>d-^?eyi zVJ;rU?El{;%7=&)TBp5rXz|kZ5l+aHiM#c{0;zuT{PIG#JmlVaRyVR0Ov9zKin4aW0vuRPY= zlTNuaF0$lhUm>N}c^)Yj16!ZOvb#|_c!g>5*$!V&nEP1FdA3Prxw=-Ul&mJ-$!S8( zgKS!>@>=v&O`+v^rL<5INi{LuSeB%`m8abAM$205VAaZ{*!l?*LM;%K)~F+{bu6LtLsB`wOVY$xEK z)kX?wDN|Tp%N1{(j-u38qcP{W zp%CcX7fXD@VY1sLcsuDoDEqes4%u}@rI}%%y{xPd%-h^lB-LXDdf|~nO z@OY9k?wisVf6V#HF4f z^4`6ZG^_4VNAL#vYFtCsQBl-&R6N-}N}{#5uZfPXCn!NNRu*Q~g-gBi#Pna5tlX`b zqNdE^Jp+NqmMr4B^>JKR>&j0X^SJ6rJJs(!&K84jiS;{nap|n(U~;f0KY65p4Hvcx zRc4wv`F(Fpt}2I1Y4dRTW(oKl_C}=>mExdnra0<#BBJsK#@s5gA+wwFqVZGbCY+G1elMetOe2iEQ%;lV_LB@g6ri~VCz zR?|YwUX?KVs3}_a^#Y&1Bha(YYFXHfzW8oqFxmF{45d4-QdYq}Nc*RO?TRITbpAZ{}4~F9LDVi2J}jEG<%GhLh-F5_;+&vt;+7r6}i@={^$Z# z$PS7<=l7$O>Q=$YCqWv~wgcYc4S_r!!!JdUjmqzVo~L5SV_sLBbWVe}|2hGab_`=* zH$B1Uus(bAv7l?xgS7mG7o81vg-WXtq!iR2D|RlF)nA^DXEXZ4fhb$tz4R=&dQ^b1 zx&l_{Pb8CL=J;cbJ-38Ov31ohZjtxKw_%waU$X*d&q-$Szcsk<&mxZc8iI9udhxC* z_fG!1N=|FO!EUeX2yyuAd;m^T%1YlL(H_@h#3i{g*VZW$2FzDmY z%O9tU+R2Lu;FrEDm^}?pFJ$Tm8Y2==hLz2yl z*_Z68LN}LvcWo9wZ8^sCx++0#@ETT1$b`e(h2Bm73-nhNJw27NRe38uuY3uYVz%L^ z>nEU1WgI4?Y!D8q1VKqw0XaR;p<;!Rytoq&x7%m3y0Z=a^%%`pcYhPSv&%?1=LfWh zo)O)4jYpRQL*P`H3r2~PAU9VBCF_4n!cXOuDI0zCr`D$NoIi+#k;+5aanw=hQTB}<+{=KbP-SX#^MI_}+0e4oL44UE!PKHl zG}YZ2Psi%<=q1+pV(JKX+4u^K_H^F&jIE;eO*76|*^j$6YjV4M1jod`py4}G+2xZT zrEH1jgj9E-*NCCKYs^`Yc`K1zUSG@|wi~Lys9~7VJ4o$F0XfS{VBxq+^s`D6p7_Y~ zmZ~_i%3IIBy6JPDCz&i6IF46dPUhB!gSqhV6b^=FnpeTpu|GqsNWUSA4UYleY+u1Q z;3rtCJQr8b>w`vik7;blK=ccr&VT!;VgH%2tTXl*j7{Io>QDE>p?m9D&eabNHT2~p zhd&6uk6wu%Lk8AOMmo&yF|?0)EaXQH zL?t&HfY-w@^_)JexIG3{dn5|0w~of0P7h_i;y@fDb|aOY3g}}pnv5D>!s{1HX_0*k z4b;YHX;nBk!qk_~-gSuI#oQjZUoPnirmE+dY93s{X)1^*C-x zF@)G#Ui>ICRV?BnT6JdzSv&j{yfb3xYUB%WnXE-qRQh9vp+x9WsEF5QuZM|ePC@J2 z8jwt*GT$2tn0d;QHv4K|@W({aMd1bHH2A_ibw4Qf?vM9t9*NUEw`2S7U-Z@Q3?5qH z%5N@JV%eDu{GwQfUt*)!;By{|3;ft%StO3CQ{_*NUGYw-H&w)WNoxw+#icXk*yTSG zGwjy!h!;qHS8})`^(L)6eV+AMo$Du8u#Te{H|U+?vOsP2T6LJS{6A9SzioWYw15g9 zyK&*v@sy=+$O~*mG3B)ahkQ>KH8;1B`dS}Zy>c~aI`$N!tk+WubrmWq4$CSQre8=~ z=KysLM`Y!*ufXAL3bgO)8%P{!L^&6)!KNdFC~W3t$bb1x3_jFNd~bM6{4V5?U)C(K z+ud%ww2K_g9IeX{?^CI1j~@HJ`b(MTd+?~3;Y^#)Q|{4eoKt2^9qm)uc5`=WH?wi9 zu5?bwx+%~3|D_A1?T4tMbc;AkI6+TuJ)+I=O|)S6V($4wmrp!D$O{yv@{?&7c=^LX z4pl4QqGEfN8xYAo-WSl*yKS`Y_E}JWQY(0y&%*cLE1^$p2DV�!yDuyk-JJha(| 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 literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride16_fused_optimized/result.json b/benchmark/results/e2e_dpa200_stride16_fused_optimized/result.json new file mode 100644 index 0000000..f08046c --- /dev/null +++ b/benchmark/results/e2e_dpa200_stride16_fused_optimized/result.json @@ -0,0 +1,293 @@ +{ + "artifacts": { + "checkpoint": { + "path": "best_dpd.pt", + "sha256": "a02e5f83483e24bba6e5d0698514ec91f93e737459040a3db79b75360b832966" + }, + "orders": { + "path": "batch_orders.npz", + "sha256": "ff4dc43d09981b276c2f114d0a8f69c237dbe2331cff3d7c9572f239a434e71a" + }, + "outputs": { + "path": "outputs.npz", + "sha256": "f009d37b5840c1e4697d2e54f4b107dd9a9bab5cebfc234d7fa499aff1740291" + } + }, + "best": { + "epoch": 2, + "test": { + "ACLR_AVG": -27.219909644976333, + "ACLR_L": -26.78043182552716, + "ACLR_R": -27.659387464425503, + "EVM": -17.990375996302465, + "NMSE": -16.823091506958008 + }, + "test_loss": 0.008949208073318005 + }, + "config": { + "batch_size": 64, + "dataset_name": "DPA_200MHz", + "decay_factor": 0.5, + "dpd_backbone": "tres_deltagru", + "dpd_hidden_size": 15, + "epochs": 3, + "eval_batch_size": 256, + "frame_length": 200, + "frame_stride": 16, + "grad_clip": 200.0, + "hard_determinism": true, + "lr": 0.005, + "lr_end": 0.0001, + "lr_schedule": true, + "pa_backbone": "dgru", + "pa_hidden_size": 23, + "patience": 10, + "progress_display": false, + "seed": 0, + "tf32": false, + "thh": 0.05, + "thx": 0.01, + "train_batches": 23, + "train_frames": 1428 + }, + "environment": { + "cuda_runtime": "13.2", + "device": "cuda", + "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", + "git_dirty": true, + "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", + "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "python": "3.13.14", + "source_sha256": { + "backbones/tres_deltagru.py": "0351d322ce3ae615d0f1adfde2b76e8afaa0d85d6f9dc92f511905eca7762925", + "models.py": "8213485a8c63142704c8c5a03d165494a1556554eecd6ab864966b34230032bd", + "modules/data_collector.py": "7f3b55f38f80820c10d399d161b8cd233bfaf8837dc43613dd1410d6ed649a4a", + "modules/train_funcs.py": "1b9600635eb09b3846399307c3679f2d4d4a8014d6332f886bce6b647d337dd7", + "project.py": "9a4c6e847c0b498c0af19e73f2501b98b9556092a59fcb54d5d0e200151cbe72" + }, + "timestamp_utc": "2026-07-11T11:15:33Z", + "torch": "2.13.0+cu132" + }, + "fixture": { + "pa_pretraining": { + "batch_size": 256, + "epoch_losses": [ + 0.19976529288623068, + 0.07552065874139467, + 0.035813659822775255, + 0.015496797549227873, + 0.0073165092151612045, + 0.004122809729435377, + 0.0028371868655085565, + 0.002260218708155056, + 0.0019730482547957863, + 0.001804672781791952, + 0.0016903372119284339, + 0.0016053243009890947, + 0.001537126708879239, + 0.0014795413240790366, + 0.0014301505237300364, + 0.001387344894465059, + 0.0013489203230063948, + 0.001313198775622166, + 0.0012807028911386927, + 0.0012508238070747918, + 0.001223458524327725, + 0.0011980035510431562, + 0.0011749541568052437, + 0.0011529860992191567, + 0.0011323490322360562, + 0.0011132779117259714, + 0.001094700538346337, + 0.0010788088470386962, + 0.0010624444707193308, + 0.0010472416890681619, + 0.0010330673915127085, + 0.0010188237324150072, + 0.0010063911839905712, + 0.0009942823542385465, + 0.0009820516201822708, + 0.0009706565599319421, + 0.0009600415631818275, + 0.0009499821249240388, + 0.0009395308883136345, + 0.0009299550076118774, + 0.0009213898977678683, + 0.0009129614317013572, + 0.0009045549577826427, + 0.0008978265001335077, + 0.0008889070233433611, + 0.0008808080501492238, + 0.0008747089848232766, + 0.0008677142930941449, + 0.0008612244461093925, + 0.0008541751471865508, + 0.0008492301761483153, + 0.0008438051025020994, + 0.0008372969226911664, + 0.0008320930349226627, + 0.0008262090624258337, + 0.0008212690894854152, + 0.0008170444033263872, + 0.0008116322116822832, + 0.0008085286788021525, + 0.0008024338063680463, + 0.0007971812136626492, + 0.0007941790558915171, + 0.0007888991599126409, + 0.0007850555250317686, + 0.0007812943005572177, + 0.0007774337214262535, + 0.0007736717008002517, + 0.0007680615494286434, + 0.000765761686488986, + 0.0007614624595993923, + 0.0007581874547112319, + 0.0007533019660816838, + 0.0007504364740776106, + 0.0007459188067716443, + 0.000741948351626181, + 0.000738971155240304, + 0.0007369754337964372, + 0.0007315872961448298, + 0.0007274452887941152, + 0.0007249550874500225, + 0.0007203698766210841, + 0.0007163520249175942, + 0.0007124568264569259, + 0.0007081288960762322, + 0.000703643683421736, + 0.0006989148180259185, + 0.0006963702481395255, + 0.000688923417409468, + 0.0006831818797056459, + 0.0006777228373620245, + 0.0006716486325280534, + 0.0006644388376217749, + 0.0006551507258942972, + 0.0006462268809425748, + 0.0006346332763011256, + 0.0006214740213989797, + 0.0006044942381170889, + 0.0005823747681764265, + 0.0005561722377832565, + 0.0005314765006510748 + ], + "epochs": 100, + "frame_stride": 1, + "lr": 0.0005, + "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." + }, + "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", + "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" + }, + "format_version": 1, + "implementation": "fused_optimized", + "repo_root": "/home/cgao/OpenDPD", + "timing": { + "artifact_serialization_s": 0.006799441995099187, + "best_dpd_inference_s": 0.004696738993516192, + "best_test_inference_s": 0.006331028998829424, + "best_test_metrics_s": 0.0010608499869704247, + "compile_and_warmup_s": 0.8184028269897681, + "epochs": [ + { + "checkpoint_s": 0.00046286097494885325, + "test_inference_s": 0.007243523985380307, + "test_metrics_s": 0.0012444540043361485, + "total_s": 0.6581104569777381, + "train_s": 0.21840748700196855, + "val_inference_s": 0.011568956018891186, + "val_metrics_s": 0.419183174992213 + }, + { + "checkpoint_s": 0.0007332230161409825, + "test_inference_s": 0.006434084003558382, + "test_metrics_s": 0.0009385189914610237, + "total_s": 0.09366751098423265, + "train_s": 0.07804798899451271, + "val_inference_s": 0.006510526989586651, + "val_metrics_s": 0.0010031689889729023 + }, + { + "checkpoint_s": 0.0003146270173601806, + "test_inference_s": 0.008646130008855835, + "test_metrics_s": 0.0009823169966693968, + "total_s": 0.08942699304316193, + "train_s": 0.0720715339994058, + "val_inference_s": 0.006281366018811241, + "val_metrics_s": 0.0011310190020594746 + } + ], + "model_optimizer_setup_s": 0.00015189300756901503, + "peak_allocated_mib": 214.951171875, + "peak_reserved_mib": 388.0, + "setup_data_s": 0.029942201013909653, + "total_s": 2.3912337490182836 + }, + "trajectory": [ + { + "epoch": 0, + "lr": 0.005, + "test": { + "ACLR_AVG": -23.802359240421875, + "ACLR_L": -24.37394603979905, + "ACLR_R": -23.2307724410447, + "EVM": -9.233128572693975, + "NMSE": -8.636905670166016 + }, + "test_loss": 0.05844841152429581, + "train_loss": 0.3155043965772442, + "val": { + "ACLR_AVG": -24.368002997929, + "ACLR_L": -25.16671035814816, + "ACLR_R": -23.569295637709843, + "EVM": -8.888113479685826, + "NMSE": -8.287455558776855 + }, + "val_loss": 0.057822518050670624 + }, + { + "epoch": 1, + "lr": 0.005, + "test": { + "ACLR_AVG": -25.108308784049584, + "ACLR_L": -24.666419454016932, + "ACLR_R": -25.550198114082235, + "EVM": -15.074750848563701, + "NMSE": -14.206657409667969 + }, + "test_loss": 0.016343364492058754, + "train_loss": 0.03183207089972237, + "val": { + "ACLR_AVG": -25.800187826868317, + "ACLR_L": -25.373492592513752, + "ACLR_R": -26.22688306122288, + "EVM": -15.033653407766462, + "NMSE": -14.25285816192627 + }, + "val_loss": 0.014646781608462334 + }, + { + "epoch": 2, + "lr": 0.005, + "test": { + "ACLR_AVG": -27.219909644976333, + "ACLR_L": -26.78043182552716, + "ACLR_R": -27.659387464425503, + "EVM": -17.990375996302465, + "NMSE": -16.823091506958008 + }, + "test_loss": 0.008949208073318005, + "train_loss": 0.011927962181684763, + "val": { + "ACLR_AVG": -27.696055704565815, + "ACLR_L": -27.38654847009088, + "ACLR_R": -28.005562939040747, + "EVM": -17.836958689082586, + "NMSE": -16.878015518188477 + }, + "val_loss": 0.007999087683856487 + } + ] +} diff --git a/benchmark/results/e2e_dpa200_stride16_graph_optimized/batch_orders.npz b/benchmark/results/e2e_dpa200_stride16_graph_optimized/batch_orders.npz new file mode 100644 index 0000000000000000000000000000000000000000..b11c7975d3a101ed36dd307570ccadaf53df0120 GIT binary patch literal 10137 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 literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride16_graph_optimized/outputs.npz b/benchmark/results/e2e_dpa200_stride16_graph_optimized/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..e74154850aa212546189037848674e779f0cf340 GIT binary patch literal 171247 zcmV)0K+eBVO9KQg000080000X04mrR#{d8S|NsC0{|f*V0ApcuV_{@vE^csn0RRvH zfbakS000009Nqu`00000oSFGsj?eeNAJLvvLRyq0Ns^G%bDvWoNl3_+l%nh*WKSiP zRN7TYLI_C`J@+|DlHMU%OGrZY5JLF+{0ratVdgsX+st+5oY(7`q$x8eyU*z&Sufc< z$bZpVzcqvGj0Q;;j~rxSG-&avHNk6qS1wq!#(&ZO_MLr~uU+(Se{G;|(4v2_*$4|G z>rpmV|K`CKMq7>kA46r2ZEujfr%e@AL6Bz=Cf+qlg@hYVWG#h3kp0;}NIn%OxNA5H zZGC!@&%jHv{YTGHQag z8h@MuZ8i-;Lc~Cbo$#N~#)pKm{H{W`$K|4IfGWkt2U6$zSrjN1lY{nHQvP^?B$W!X zZ`;mL;qKv3{Wyk5^)+1CJ%So$^+xwgcf^?k^f145fw=Tj7rfuASS)qh3pP3f$)|9= z_$z)F`I}_Z#slZ+;k-9w-MxuApQ>@UlBaZHRySVl(M%P(Ota5Fq=zcrbi62^$}%HG zL$8q}u__oNf31g*y>yAtS>yl?5(ROBwJ((WBvOLX0(h-w$dP?73mF01SmQy3SY?#Q zGX~|-{m4?*O>U>I&o1z(R&{bx zx$}B;MCsjN{u-x<{JifIW~cfX1G(}@mO}7--DYSym;I7p)8pz&&H|Bym-1P zxh)?@+Gl!#wEr+@jM@jcyS9Skh`SIxbtr!5+6fy>W}xSVcG&V{4UTmA1wF=Z!`#?r z$i5zlC4KjU_xezrH|4KTIde6-kLg1Df~I4FRwixgKLA}7zEMNqCFp;-3tK5A2riea zDdMdowOpD&W__=cWYl@P49j;^Id~*Y43p;#>q9`}Wedgrj0EY)E7X2H0i-$6q-2o| zO$UF9jbYUgXqqV4)O~`yvNGr~{~NeZorU#=74S3h00uV%fbPlL_+Ig>7;x$}+S}Ao z+WePz>AE?$gxx}&p&s15$059oL;1&vY3RQ5G+jAd2X$u01fyG%prGX;NFI#>o%+%E z^XheY@W&Nj^sqUWlCKW`Z> zPTmb4e8!=Fs}gQItBy5ihU2F>J0QZ_5)py#SgL3mUQYiH=g z&hyt`?X_6=_URo2dzZtN992Ae{0;QZ)xi$|&*1$;HN;7I;HO*+2Zm3DvOii7sH!4b zg=tV@k_xrQEvFfUKyB7QtDAKwsv}9PY7Y_}@<9xJ^;&p0Re{Fr+y$q{Jto7=6)E1}b zDW^d#U<4gC{R=*!?c(AN1FRjlokkBGgGP#P=tJxPGXn$B&Yr+AR zw?wlMzeLgh4rwcN!}>9Xyj6D>UfN^H6=QSJ_{9ibsu7QauV``6F$+BUy@edcEtI)S z75U7JfgCb?1Z$1l%yO=)IQ~gE%Zej-Q{XJtxER9gV|2K|X&C=9Z={z$%*bW`Sc0-R z@Cj@YM=k1r+IKoaXZstdNL≧S*s>Tr)_{CQxL2FZ>fVf;CtbL#mhX0o@E}aG%L# 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�wQ{di-HD8I+Tc39xHpD*D}$WnYMn}*7KI4+re2ko6Qalx@h z%#S{aBlr_I>SHR7+GB)m)m!nqj5B<&8iV(8@0qz8Byhdv8!Y;Nyks-hPT-%m&LZg# zUwL7E8D)OTVZ!NFbk9+Zs>DRZrgH3&+ew-RvlK(a8(<+m9muTo(*`x1F9()Wp40lBh3a3oMA+M8y)TSV46Z zD*<(Kv=PHY7uQpdMn3AhZ=zFa&A2&o8Hx8^MD>TNbk2GcX69aHmwP62Ki$4E$HR+g zWV01Ht;{2nn~5~-UkC5MI!*58k>qp!B*l2opy>~NDX;J;3mS8ZDOo+?Jr^7S$*DI5 zJ?W#-eCc6MHBJ<3pC5pITb4l8u|D|ibdFhQjK?c3&U8Ci0Uh>5li#NzxY89w%XGcC z=u5+_OG%hHOEq#qQ@61p&H(7ZrQI}sbQ#13XMZ=2h#KCB$A8X669e)(A zJV><&`uGDre7ni{^)XPG?xhxwSf>7> zkW9iDn=DjB>BkD$@Skw{9(2%)-V~ry-wPhye=~vGbD&4jSp< z`*R&I(oGHTteeC~Zn_9U%}P`fepztF#h-pSJ!cvQKJ@B@3RMO5G4;Ds2wT#*YnOhr z=JGzMFcx8>v%iA1>K>33D(4h0z6Y0+X4G(Q2)epY{o6}b@Oo|~DLTl(9PzyrX@1(` zV1_Dtk;U_;6;)6|G@t)ZkcwXVy@L0xDR?w-8TZa!A1@3(;DY>*^Fl-O1PiV&qnf|x zc(tE9=vHG!>s7E$}?2mjV|8gGGFN;|nM*KZ- z!N$qztU~<~?EI*WXWyL%k(noOSg;gSn=awzec52BmyX4kRMAFU2tPU;#NuN-`=V2U z3ctNtc zU%0S}>(t&R168M@NL<7Ru;3fpHQ)`gS&_W@zJ;}A%MbHUDyrC~M_1WY8(sP~&YODE zf+$w#BAwKaqU-;)(Dzx!lsx}DjWDj`<>Smryg(1zXZCUDLyOUI{c1Fs*M@@AnOJ_Y zALp7zqWY;9m_JGa`3J{wXrS6cTvQbw`JHEl)t>A_)IIjIbTjFnea0(1&!=hQcXcLzL~90Z60&cK(~*%4N1fP_rAFQw1{(y7-MrG4Q+pID8hmVe$R?Oic0i z;lGw|#r`)(`Knf59O|9RIaZrt=;LsxwZ08wR$PQu=l8r&Z7KAw5vP!)hd`}zA+5{L z2~8mWKX*M+v_8btoUXDjad(+j_)m)showm7(P!{_uSPercH>z|eNu}o#f}wr zbhUz^0yq&1D#!Mf3&~|;6kc-HB@yM(xNQCxCY}A7-?A{4`P@{ajBS?$fg;Z2veN}5 z=ITH+2Ha5b+aYG-lZ+ESu4UdXak$Z51ID`9;HlkHQFCkr=!T@=%G(vJEAA``$-B~_ z>^Su3O(gx;kFdZjiq`2|W>sgkXizzWR>vDKqw7r+^EngdZM#WZ9OSSyFP&ztkVnN4 z(=c%tkkh`3~yRoP;CvNW`9|FX5@e*q^>{sH95&161y`gmw%D(G8O`JRMw3Q}>TU z)KRC>xE-i=%8ecTu?3AY4?~uPEPhCvhSGO!nQ`qZ%&YLF)3x()g&>3My@k*#EP}3- zH*wehj;E(O0W82&SP*#jC7aLAL(t(WmeneZRrekFv?DF>XGRvB)t81*OZs5{uTo}5 zm%%jYFZ;GB*FxtYV^`Pqv5n?xJiliPbtE@}R6#VkpF;em=S2F=%djdvjIGGlL$jL% zGhVF)tx z{H8^ZJ`0#(!49%}qz)^8XH%iCELsOAQ^i&byhwVKwnh$5X$132mu&{80bO)Z(qWyC z4&!_AR%R0wi}C@ZNtm02K?Oo2dn4UKNpqML7tJBbe7S$KESxThBlWKX5|8krj(Lyy zDbBv6*QJWb<{HwY$H&lXoFy}#cOHXozk=Gk*$An@xOJ}uG}Y6nxY) zo`MgJ#OI0y?1V=;O#l0imz%4}3~!hU;v1AHF-2ZQ_gWG`&Sd0C<5EPltNhs zq6Uykw{q;QIu~>nZ1) zi$`G29!pMEOclR4>Tp$q-$6q7Fvky!1>?DC77uRTWzVM0WPNv?$X5L(yQJz%Mfas> zvHuK8)|Mk}gJ3q~-Nh=^;~~;+8|y2TM~SY3T>d-_RBBCwfYqnL_C62M*IZeF^(h$Y z@THxf_QBz+<>YC+8yX#JNdDIg7(f0PW!SI7dUX>zf3gg9))-gU2p)u zs+N1)V856F{Sjk|BHf%X#-xUb? zRH~s>WhVZ*(}=0Ywy1Yr$nxIrXc*S|fqLG+xQdIo@SYGkO<#!f{AH-QXFhn&ImZsU zwece#zvJs{i}=A~Z!Egp4?$yZ26v@?8mh0lTg#;cp|h4}X`EZQp+aJuXz z?qv3BI0tJ%Lh~s%2_6Ct-C`Hb9q?tNCv}LPL5fcz@#dGPwkC<@Zu){#o&{0*orjp_ z{fTYI!}zIoCtPlc0ncwUaE-<|x=<2?mhStA-Ach`VRtHDor+-=U)igsU6`?Vyg;!> z3uSk_hVU_t&=xTn?;2*Y)7`UizP}y0<{9Bh<9J%TU@886kxd?H!8re!9~ItCMjyRw z)>E2;>lSuE?cyjrxa$Ze*+^p9(hBTIN##$=W#g(dW2j|N2d{oNrfwl==Jaq3g>c)+ zvG)r<)2WV*>~DY{*YDGg`E#*z_a*9cSb=@ZR*~NXUHsUOEXOYvmdxJ|q0X`_z4HaQ zKF(*$Ogo^VeFIygkP2&)s`#Wvb8x+0!dsqR3K=>7{B_(NFx{?7XSOfGi|ba?ij%(g@?p%-o{leK zRk7W@2c~y#gs}Qph-{7F?2)*)jpREJ2%*NK4GqHO7Zd_^oz#?z>7i`p*qGioD zd0n@i^hJCOWgCW5%*&aycW^#6=Lplim;+4qMl$<4Diwmh#4%O%1^BW>g}&?v!}m)M zkecElJaDXn-n99l#fN%&xXJ{_{;i=eN$oJDC5H5S=RkbvWp?9HF~2=A0bYzWVR6=W z*ykw9W(W?Uxp;7L27)Y@}_j*m(cu@>PeV^9E zT$G1vdp+2*ADda=)o(01_6GB2W^}GNgS9AZp^U6}?gDvI`6d~h(_l&W-n-!=_{?t4 z@j=t$E`0QLHB_8a1)qNmnsbE)s0bQV+HH>;Vv}h|WHKH;UrAjjtl->LQ#dc|Tl1?&GCjk6|C zM)%dX!9;o%-rg}_k#$xURnte2?XrBRERCi)7Kb?1ghDbjtE$!gnNIgKGB_&%(55@T zxaD^(*qQ%Uga1ZPD6!-qaP2Ux6dezdK2qp(^flL1(FM=VjNmAL0bV>W07=O(2rK*v z@zMLCCs7!OekDOfW<4@1A6UJ*gu#kx z=s23jXB^uJ$w8;Nw)P2-nP3I?BKCpn+dJILng*zun97@O=mp!%Og8K*jAieoDP@KL zq{x(vw}f!nx~s@1IFq@02axaD*_1Nw0PUy_CRx(}(m9<##*!W+w>Hv{YC>(RW< z15Q<3!PiH;*!@#HR`GwBtYIocq0x?F zc5ibas%*-D!+wYbAKdWf`bBU%B@caiZn2?Tr_nKIJI%FELxZEIDb&#x_2<{qeCc@D zJLWnaet(O%`j@*b=Sv+rdoj)`( z2m>em$IK&g&~vIa@$1f@&b2KxR_!RBW$P%W(-N~9&8b0j6|9>lNu~xHnA7qq2Bxx9 z9~{CKry0@KDUnP`Tjw92pJaw2gRFah8vE3Bj!jq?#amhCv+}lWaHD}(d4Mq5Ui`?$ ze4T_3ef~1t!f%iuSAY}AQd#n@WR6@sp9zol3%i($}B!nyVf338at-0{Br`$ne&VMJ922&gv%uMIg9*i zOzBsAD2cd;vedQX=%tG^G|v?X+>fVmrG5gaRA^$71%vQuxdUm8E&<^(Z@OCZgzr{! zAiZf5$)LT99qErCZO~!cKOG}$t1xb_W+a7f(&CION7IIrA$-%d4cyU%XIP4*Fa}*4 zLEZI;^QV1gL!}mY;ov;he)T&T92g0Po%gwxkFD@gDVCMyyob-ZLoBd66ZF$YQ9_9( z=bv_yJ>C6+=g&Cs!ZRJ%A5kapi#f#l=DdTu)lTeOzzF;hJIqfU{0Yeuzw;NS)q-P5 z6zl5r0dZAvdgYbMeSL33Rx%d^CwJ|nBn>&<=f***9jy!>C%TY{{}ssU8epOs<8jiK zUVitZ6}U&i3b?3XJfDwp|A&S5GxnoQl!gz8#XvyIOp zY4hSnW`6iMjj%T(8KW{9TN**1!%mRi^H>ToJ3y~L?x8*PI#j)7Dmka}toW)1o9f8( ze+@IBv@za7%2Nh^H57CHrn69T(Q;V5)etkP@?h_m2{_qcB;HhRg+<5p@l}N>kijw( ztA1ZA>AoH>Rjy}ST9)C;#-nW8MqOMedymQAX@)h|-m(3ob)fgsGxk2gjW07xVAtO& zF%@e~{zu+e_DdwE$aUzM6M(Y%M^S9AFNRxG zqr;s*G>o~9CDYcRntMH3-&%sc+s>hItSOFejl@4r;+S_|0^calf|(~~a$U~v_}I8n zBt86?jceIM&6(wFL_|J)JEsAEWs2xUo(rD#O{c+w4JZ^9NNxMRV&r)n`ndi*c3+XB zj`DoWnQ@XOemDlwR)$Qu(3AQeTe9D)KhV`Em2OwI@nY8#V|ivgQ4O@zc2U1M)=ec+#8{=qiwPJngFH&}k` zDE#J-EOEL2WU+Wp-4^zw{+&Rw}U?T_U|j0^d%CN`(p9($spt}T|@K9W*8jSggZKm z;P&rYlwBesNHH!#AugS@rDS0D(vQsaN*<-^e@{cWMzng=0*uY@9FEmfh zhU#@Y*vgq+_<5fgNi^hQdYlZssmVvLE7@#NCjVTW#orsynYk5!)1=zr-qTwB-$Lh{b0m2Cp}v&4q7 zEVDsTCDm)Hvps|NDVP)txGBybT)oV)Z?p{&oZIM8OwI)pZ(gECJ zD^A|7z9{<5l@|K9!9Z0ET|83225!cYmP;~i%XTNZ4^OE4IH7Sek

Bw;-&vO8K01hQ_oFeQ*9RFMvG$bygUrA{TE{5 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�o>_XdnFQ{Ff7+r-`#0>N(p5 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 literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride16_original/outputs.npz b/benchmark/results/e2e_dpa200_stride16_original/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..28ce44f3c0755612a2898513f2c32f674a92e03f GIT binary patch literal 171295 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 ugt}#S*|AX@Z@b-N{^Nj;jZ3-z%JKNJ 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 z z-l@qKR?g(FIo4cSnav|TXYs$-%Um#OF6+A{@gpTm4tJlzH;&X%eBgPiZhj}q$WE|} za)}U{+|COfh5LnYEhoF_eLF>MnFMiUP!nmtawg>+v$$Zv78;|vm$hjH6|G3&TbE~% zreYF@E!|7~eSNvtxoirH{zAcS7wOFj7cu-r3Y{s71J6zwDs}t~;c5Hq;Q0APlq3;k3OjV_=hcz(a=sODT{t`CiyL0U8UEtko7fZgp7L}I8aZ#=c2dl=i z#Ar1)NH=n=UlM1`n9X&eS)A!?$HAs&d8Vs1ug%!Ue_iTn%|RaypEgQt+HAu=s(Rz! zDl=B?6_2~F59h}3RoLtBAYN4d1dFx1^V|>Damq`k>ruz>V~8egNEnWBL#_&eYVQT- z1a~Ml>P}fMT^_aGRdoEEEo2;<0qLVoi+-cOz}$UG6uZ1HKD?--Um3QpHc>j^fa| zKbuZ zYcZP!pIFajTh|CS^S85RN*I{vE@QjC7a$^}ldNVjlz*@goKi$Mbm0!1bl49^PFtbv z?9=d|$6_2Xv^$3W^F#ao<1sUEHHN%if?+8>_`KZ-CtvZvly)_gWSF48)o93ia}S~t z#!=abJHktkG^&mYrAK=X($4gI6w*zVW)=S-^Qy0ci_2Ad`F=a3FX>5X!HFQ%s}j23 zj0B4x{UL6nx8NbYFUb7tS9)C`LM)Ssm*zaOr#rC{p=A=#)ZkfA85JvlD@Ux$Fp+G0Rt z0O($OB=LIoNLn%QFtq1~P;%K|e5v+g*>^gRf1gSQCVOtr~t-69&fMweaNZc$nP?Ytx7 zI=Q|`WYaZsDQieLw_N)slsA2%w=3%5LRc2uOBsen9h)&@k}jV8n1LB`)$rW(B-XYa z66E5Rp{joo-8y>>NPZ6M>`fInZ$8a-4-(0J&~5g#u%@8g7aVkBC)6lDWZPCRG+$iA zv%a1}6ZySeGphs}OlR?)f?P~qH;Ro-67YD1A=lSM;PcnxxIkeuCXZXhE&b!r@?iwG z7iM(z;9gGNk%8lNlG)=?*NnJP!q@Mp;HY(v*z1w9=-=Zl$E@tmw$q;S?w>yV<8~oi zR<2uGdSZcl#PxruQSea;HW%ohOe^W=q*)Vh~n;p3CwRkKv+cJ7~9C zIyOCzg&^DG7#XF2S^5W1U-BCo`tCt#*(Ru3l7!~j8%3(k!H(0J6tLtbdTCy!zwjD8 zJ0{V$><=i@`?ciSh`Tto!41xiJA~efN8ohN{;2pS5$d8_B~hn+VaDyx6ka}CFfnuF z!0@}Ge2E7~so2w&(*m38J`-P@QsKPJ6++?NY)beQ3|nFk)3yVJ;N4t9wD1H}rw-&Y zC3T_kn;jb_-Y4_XCOqE8pY_j#k(yize@Z1da_uWcVSTog*ixsjJk;C;}rNPCsSxY67 zJg1Chd6MBK$ERd|Z5)U8kRx9oPd1-jCmAqdHiv(GX1n;4BYRHJrP=}u_IY1Tf5(pC zfo*@OY?30|?pELjuW!)Gsg>lhT9*vo8Bq1shr-je9MQ<33|9EABI_n4R3E6wcI96o z$A2yd1@AULIF!!)Z$wFnu4vGfGvs;nW)%eP$QgoNp4H zDt$@Y;fZiD|1>p@(*S<`VGi+=$h6XgIvTo3DVV)Sv%{%5mg2hbE>AMEXc2rTaSx;!o z$rbz(77HC~?n6>rmH67t7z6bz$$i8W^z7+MMK$&q_-+y14H$|E=ciD`W(AzuqEFtf z4?rgQu;lBO!!XJx4m>)yfoz!pHV(0bCrY7sa-a!hb>*?K|Lqrs`JBKAD>cD<_a4;Q zX)henbi$C!6NTe+w^23+Mb@7MJ99-vOf`LaJkX#4itAY_YrneFH>7iCvFu%Ffx%&JJ_NgtPCZ~uIT=UcGIBAvD6 zgK%P#KQC;ZfQ~_Rq*2}*Tehizzs?P?8rulXJ!8P>mOSbvCPDz8?{c3@(9r#uV6);b z1osG{`466f@yH~)8bVMuJ4u`qp#r8u1lZqV z$MQud*+pz#_L;VPnapun1*=HiK_9~(ytq3P4L8|n)l+TvJap; zKUOT>zCrNP%912xWKjYPp)f@y*7j|s+y#Ak$cWi|#z%$Krtjq0IrX%;Fq$viJ4F(M zMGS?JWW1$~YHsYI+8Z@q5LyJ8QU7?NJd$UA+ z2%pH;=Hi`GIVDbu-5%I+!8~n#O6n}5*Mrkiu2K1s|7cEI3}rQIliSVx)OOHCINR+9 z4ZQ6J?q6(p+{8-Q_In9CG}MA-(PEayRl(7bw*2>Z1jH9SB=gk$f{eVg-JG44bW`y^ zFunPj#6Uevx?;(eUL!DM;6`3IryWkmC$st82ZE<^E;p}>BqiqpHtqYI%JXtLVA&gr zymW*cvbAaY@Mzxhb{nKigLu!k;V8(?;}s2S&~L>!w(fHEHTB(i*smZ|v71Hn3T)6W z>znZNZV9B#$Of5%rv+(D9klo~i59CwsJ@&a$}CzTq*kAilx(ggFZE2JuFaWsFDVM` zR|7fx^*Axb)`9C zy1+r@U+CEO3^tLo7pxs7@C8XZw5XpGWisV3uJk*cxc>zPSWZRHd+8AQcnk&%Sr3(c zPr!z`lb~bkM!Ip+6D~CC^R3^9!D*Tvd#n!wGnsfAx?3X52@HY2>lbNFu^E!T3&%a3 zfGLXctc1^@CNG0|%62MRdxST2tYY_XUHr5yfZ5$#H-f$D{wsO-dqS9 zTDGBwW-viUI2LT~B(v$WQ1Qt(f_|!)aWjgR7e#{Z7pbH)b~rdW#Dm2zJt#G5gY-ie zA;&-gr*$(y*@bmboUs}k48lO^Vl2jKEfuWCCwAqDyON;}J8<`~PNCmAJ5)Zh9AfpJ zLqp(2c+^-SsO3Ha3sVQ$G&&334bGzUALAxgy)LvGkXc0^Y`J3j-AZwFyZh`T`Fow3Yz2KDRxQ z;8rz~Qw;({uXWbEc?nWptuo8!2T;_fK4iInGA+B20fDn@C@#to&;IeDVOwLdhjlak z%s-5qms;_V#(11<<rOTc z<2R1SoE&+2ze66k*7sni37+t1(*c&BbW-fqvxfIM=g?p8CXV0LpKqOM<!=t^gSTiD>-+M*jWz#6W=N*W3 z?q*z^-xob&FVp9CGms&-($JwJC{W|Okm&K6>W*I!l%3yG;HD{JoJJC^J-udjM`fON6xk8aTE0cA-*hG=8_%rlkI6XgbiA=4ZD-%RvLNM8OuEC%b@S zk0s=<_ZS{LQ)0sxrWlylo0Gar5E{PFgIPKlyM7+cxYWgIqfL?q=T}lmLWgj#Pbt-{ zT`yWM>Li({Vj8?kfg8&EvQt4T%`YCo8dfDFo2$Z4<4)3>OR;3K_6ntHWJ;}#>nUpe zXpoj^u-5T`@b$Sow`7eLSFFvX;;d~{Xskl*p^qv3lqhVFy+L;(qM^1KDBpEAG;Cwx zou&yGZ3zecEm>0aIjLZtHHSQF=0M2g`;@9(AoV}fol{E}QvHx2+#>HwRkwB6{zbTW z>Ru;7#Tp1!I7JmEKVa6qjlzb8AKWKTxKwflH1j8mmA^8<-g}ZL|I$UcQ`HNic3!73_K#tHq8rN9Em=7m5N`j!!s)jRMY+#6d4MhW*ij>1`06>_7u^mO1Zde9QiuH!b*i||t{6LHus_uElUP`Lz#l4aa( zGXnM3-yo-%v(aacq4=2Hv2xdXNz6`tOf)j3g}xsk)KZ=OBF2EsoFEPtw~D(r@8LRm zJFzGxoHbXs3opNq;*IvlAx(Wgz3%Z0q5>SCA)*WxyKA6k`x@9AG7BBQDM9_h7_1hb z2$kU}=v?tj7^HRq^KOiUNTob{_tFDSv>w6a^$X#bzZ2@XSU}DSXQABTZ zsLz|hR+BD4f|Vba{V>JFdb&L1bR_E3t(V+)%0%l%OPtoP7$@(E#gP^Tm@&C4Gitg7*nNAPt$tfj$$Z?=4-yL)kI-5uGhqj4$$!8>6 zn?z%Co*t((L||^j2YRERhU(>0XlI@|1h3J*KsH*lFD)(!l&R;{kTJQ{_zgnS=xdv#a+o6Yhu{b=&w5#4o&b!Re zd22UvIW9rhX?nuDnO^ujA`&XRqVf8$pAfn`8FP(Qao5jtxKikZYflRB$BFN-Ze;WzOud{Z-MQtIxKJ z);D(Y{{0h3!8V<}>u!io{L@*(qCglnKa__xEQi?()Ok84L9zEA@xeB0Sh>LpEFLZv zSB**p&n>YOJkbqaX5Ao}6-kn5C3%!QLygL=PAAK#K4i9Szf^N%o~Zn}Nz%T4o=`FK zw^&*l4Q2&jY0R23SlKd-Bb>j3>c|+bk5b2Ndyn!W`+>O4{viK;Jq*pV0@z`|F#NL2 zl>N3UAUsfDr>kQ??bZ)!|9FhvApbHzt6JYc^@z-oxR2F9^9Fo4Ee{TNwOr3hRtAK)V7h4zKBf*|o>1!ssM4yww-| z8b6DZGs2)ixsxue?~TW;4A}goBU*;{;{1@YIPB#Ks_ZR7IE;`qJE_x+OIcujVmLQ8 z-Uqi0;T$r22TU~F!)Dw2L*10+UHmMNUYmB70+-8(b-iB+b*C((-r{=DZ7mkfgWd@( zHud7)wQ+RT+?y)9>2ukbXVg5(oNF&Aad6Ikaxd&4$AB$Rti6@YHcdvE{BP35dR?B| z-4*T+IgOIQJ23uJIHoy&1obnr=p}aq?yTP-k*UtGo3dgDEgDxw>1Jlc`+Kl^nE|Xf zQsOw3Hn4Fjr%**pJiFP5Ha6N|i$a`W_(~TOv`#?##70=StObHhsvupX2R>a{C4FF=FS zoBHw2wZ`0;zgMV@>B)+&V=(GW9bL(f!RwQc(z}8^m~J|sg3U&uf9eUc?;RyPnxe@; zKmSn50ee1ia5n4Tapd6jbGT(;I|W8}WAmpo1^fGN;wKgbD>nAGn7SUkzE=bckOG73efrlGaIq$2g z5OUFyZ-19%{o8(=-5kOHwj}Ws{Zo9%{31th&fv_}5_YE;cGm1-(fTI(w>pJ)4~T>) z(TY>5d!b+50WtBh3QBgXqfx3YGzV?Rx3A)9b;3bh+@a3TBV#ev=PM~*aKrK0FNOI^ zYFN0>1Y^f9E-#K#+bj-znaHD@bkHU|fbEaXLcJzw%Vx!?baxJ(hj2h|8Uo;%x(8}%nDN+IfhmyEt^cXldAcaFaqu}M#ecZC; zIz-jaWc9Nxkp5o}ww%xhD}FyD*93h$+j@ycyY)pKeofamDx;UV1qYt(gy5WcoOtpV ze0$>0NACUs_%ff>^BX|wZ_Y!mm%zOlHMHezB2=DHqh1lCpzdUqq`3C7kbLr~aCT9$ zAag^IXs&A)%r};cVL@GUcF|-q8y*dg$ulU`>>z}kv!wq4P)h>@EdT%j2mk;8Apn=w zfE54#|NsC0|NjR76aZv!WG-%Sc>w?r0D$lS0000009)Pw000000GyZkH&@^H#|>pl zLW400p%OyE>+VgZLXt`}r$Uqvz0oL{WhR+Ik|ZIi4EJm$N-B+-Q;L!l(LDM1{tMsp z!(Ho~b=O^YpLNc2KOU(LD;7Jh5*7*++N0y<9@|@ol@}Kz`ChZll>X&NS$+puh(A4dWEfGn)Wa_OiU0x0;;6z5Ce789KOtl&}T-y*d|mKNthMSGRM4??!XqmzVI9 z(#@H^RxI0kFo#*WzhRe54>SLhJ?vPwGXGh$i>bX>1q;?*VLH>t;;)N-?9}|Zn3^cg z3VIfx+fp0;i<&l8{IKJz4xEECWxsjD;Y-$%tBniN;lO-3P$sMWBF`XkoT zPJf`8W1T50W($A#@*-L|S`w?W*VBEUEhu&etyt6F@trAr+r9T5(bjRVe_B=ck_7+-wkKj33FK9XykI#Km_zl&8 zsHBv}nx*FA9ie~BXx%gTAvcQ7bT)Dy*dwOqxriwiSui{8`^-k+o#2;+C10JbfZY4FeevHsdXu*^~vUPKE4;RWW$CYciFe525@=6qg+E172{Q@Y_`wx19{Z z2X42MBZ|v!UMKriLB+wj~2ACRM_&~$4z8`0tnkHa)Mx zLE~_U2rI=}C9p~4jFP8*i=j;5R;|!*ApIPcL37mCxKUwQ&V!Bo}Ew|LiW|N1CxP>Ntw<$58rXDvsD?gq_vf z@a-5U=(8Gy!AI_xM;jz?x)vJ+-QS+GooiM3J8j0K_kNK7Q@4!r`f}Lc!&Y?9L5(WP zsGr5MzRKgQUNp%D}4(eoQErtiqZ=mkU`Kax> znNFm&;`;DqB-VQ#74Iuk`P|JId-O7M@6qHwt{-G8Vr)sc)rwX)=aR{_L^2${gRL)5 zk-J4WZK*s?iC+4obKjfF3m-GDQ774Et4I8Q3l4$R^lNpW(kuwzKYV zS$HISYIN~MbwPI<`Gxw*4~^C8YgR6k$5L>Z?~89MT%KNIwRu` z&l&Iglw7N?v8pzr$3Dqys<{_U|2u(I?~h`9j19j)pfTl5x+)|>`fkqobp-8jx6v?F6P?au7@M7RWN9w44%?s@!Nd^ za1(z9*B^#~?~3c3m{b;YzyHaK7pB1K0VmpIhGxOWI&KYR;cqHo|K*{Kk)@GCYJoaJUO`i-gzhR~{h z7k8&5LCNTYC?k0YY@?GwN@zLU*ztnZMVzj?e|k54bdP1~&kAW-C}UbeC+N(PLiYRL zL0T1jn0Nayo^JX2gUHdFb%sAGK;uz4{B$+|1rHgFJt4|Q+*3jQ(j>N8Qv@ZyF_sZj z3NcYZ?DeWjPJ3oHSNdiglMTKL;C_t_%$|eA>7!_Z)hf)-)};P&0s7C^BsB$jd}J<8 zJrSQEt1*ThPacETJ~srxuZ;2D$y0EcTZsQHoPbaJOi|c)D&9T&3Z&Mnq3`-heEjC~ zAl<4!D-T|*t9J3FKF6m_-(V{}Ii^IdfuESlttr&rn$A^U_|0m|KEY8F5%xW65S)~E zLCeq?PW}8la6N8LchCNTp6-(*7FY%E=2Vcjy&TLJ-%Z|vQ-aD2WmcTU^Enfguu&wR z@2X2h*Xg}=Z`x8&Cute?a*-bP{kq4M`{waEzvk6BURg$=LuYyI?*SC^cMe~@Yz(cm z-T;4O$AGElRJ0P9XRcw7)Ess??tLCxZWRPQ+;2s zYhy3aTiGyLe5jwi*D)&ddqTgDJfga{$>d~nmD)xRvB*`SRB>0lZi%KkJEML9_I}jH zlCDY+n|TaH`K2)F<^}ZFlMS<`reom+Wn3aIgnjn=G35x)26W1?I53m$C|p9>#ji-x zJrDaI3D?IyF~YtLzbUr!Gqxm~NRlni>nuJi?r1Sh|vryW7 zy`PW1A4SETO}xf}bh@JcfT&Ud6m0TxN#Wy7Xhb7Y(EZQk>9vD%OjjYaedY zFJlu*onJ|YCiVRII13Ugn2Hx>e&Q+)6rs(ARcJKt1=gI(#FFy^Xk`|TYA2uJQ3)xm zy_bj4KdJ?yqRQCeQ^_t=d$8{jci5j&H`;Xi39s-ppM1=3fkkC8S@Am`HQ0j3$`xj6U0-P@<@jjfJCry6WlyJb{Ex$S`8oCGaz)I+fl)~T|aSB)(3Az;v$sj+I^TcH|QI+^_u2X5^ z+(>5Rc$xi*yT$ZEzY9EKM$^#!e(-sxM)g_2SShVX%HgHhxx$X9oS`Z>Qe9vfb~`Vm z6`LZk&PkVq6eZDh{%2;9-N6SfjAcI8)Tr9$Lfvi=Cz`j@1!U*wQnKPvP)JW=vX5gS zxLN>G8h<$}Z8@}>_`RlO{TvjU&}DWvRu4UvdxEoPFP!$2!#TEjg2zABqsEs=HfL)x z8hu>Lwz$OMf<=>I%zA6g4W5PyW5YlrBn8*El(W}yr%_CPHHBu!p=WO*X~cenMdlH- zMdu>pPixVTVg~ue8!)pgH)&^oCfIDhMy~d9_%t`2rmc|2DI=!SYIjf2*mabz2|LXe zNREetv0LcJ%*r~u7pKU>agaIJU8ctmcaddK4XsH!PNB9*)IYX}rq_+33nR8st;+kl zQ)9NX#H?sYEqVn-MVX*ArJoxssM2>I)i^GpUB3d!aCQmbvVRp#+&dm^bkylsTma5Jxt{I( zwgsnT#z3k-7GI@J$7#20m|pElEGqY=yxRG=rY?i5y@b#wG>p8NLWDQ&{&bkBhgJ9Ha9>SsZUo(z0*_ylo3OPL{E1pA~Rc4yO3fnYyl zZEHWV2?90#>aH!+n%oTX1yQu>B%;tXN78OxhBwng*^=z3sBw)z`Q=(rl$eU5nlVgI z(Ez#B9@b-U5_D>t+1y$mCX<=WJaajEA26RSTO3SQA_Xk>s59OCqD8&^b!=8a04YCE zhn2sxDcxHZt%H&&Z<_##rc&e@IRuR$UTK*dEcl^|kqSDj<3S7xOSG}M5wWQ5CrLws zNf=%rL_$~71x6Zw*{Kt=Nhx2B;)M=Uqd3x!bwFdoJW1C2AwS#6n>61lW6>N#y7%x1 z=8v~z=JP7iwdEz$-pWSf)F9ltTMO+vlF;=-kifcQJ#H4fZzg)_1 z8+Dpi=f%LoA3fBQH3UI9Lv(fJ5TxdRAx9S*NH%SzU*iukss4CM*{w$@-3}yo+l|I^ zMl`-_I9COW=-7iQHb!VWz3Tdp6Zx=@qStl7o3IU}C^H2+Z>msW^pr98HKF zk55IX(v$b{*#B)D-Dv#^djIO#f!$}IetQvrC&UU&-z9){PZ{S}Gy*GvEjbx6WgJ?p z!E%T;-3kU~icwcyjF)Q=2}M4cv01t?JiUt+F?rzdM?i`|8tiZ8Vs9o}Tvw+G@cmywo9 zFx+scp@ARIKuzTcMK4;1*VRp_V_7xL!e3;8T!Yli>u|vgi*gxHi&-NLF9i)NKd#~`Rc zhu#Gmg2Ah`bVsPVRwCJ*@?DC}-{dG#LxUjyw@&c-|3-mhD6Ux*spWUGM1X@l&J-#0<9krnxq zJna)WlgfH`I`&hWCMImBoL*6OL(PVsXg!Bzo8;+-g&A7C>0m~)baC&06---o5xg08 zs;P%1>E5}^{9r{IHCxqiHmc|8<=;1OabFHO?03QD!ai2|JrM&c)No!!CVsimjF~1j zs8cCq`RaER{M7n}vR=SU%g^JyJ3?eVV}5Q#*QAvlGEhWe$4E=$Y0c;?h0 zL8T3Lq`-^n&SZL@1;mTu%?Pbx`TOA<>`@ z-kc*u>la7ii5CZ0``T^zYX3dnL2Nws7^v}P``!w?8~*T;Gn6RxO$<|f;Y+W#-C|G9 z?4jMu@3Y{jc_bt{pGmH~%XG4|Ve^-MKJQU4q;x+M+%F%8KC&0M`0Ng7gSAjP`7vh< z_rdwkb#}?Z9($TSs7tg28{(5lru8{$u1O->&7aZuNg!q2xQ~@yeJl`T@LcUqXucf{ zE5GQY^W^b#qBsya*FALcdJ5hUcBSG~skmP-$Zp^K5A%1a)JgVep-Mmp*pG4;&K^zt zV3@_ucF#g5UpsQkHNs+(c=B4X6vdurlV4g8u6W`@r&^LRdTKWNRGNcU3ts^(j=;eG z4q>LXG@e{qj;SfB{4u#~bSxP~mwxGB^;Z+p6_#N(_eW7Yw}S>geCB66)>F~mCir*d zE*+dd2YZ7r(2)HK{I_f+?N!yqse{PQ`NYD+`Fp|HNtPYxdES6D*Kq}Tl8 zBXaa0dJ}K(XAfN}Ev`*{zLhHUCJKW7d}X@-{jSq`UMpB&X~>#0&cO1sg)Fe?Cd^7p zXPcv&xE5Jcmi4)rX^kCIH_F+V%ttsw&viN4kbE6F7w)d}ne+#wcy)Xxe;3Z(&d26i zMj*4i1_R#fu%AL{xMg)Ii#8NN@q`Sv=x7r2t#{#fytJZ*w>@ynW(Jkq+>ahj>sUca zHO@QK0fQnpaamU=x}=`Q4T;%!dFD)PR0+mQmiGkJe}6)t-e?-pdW{#X-%0PpN6`tx zgS7YgOp5z8pBi(7Nj_#D8)`~s_astb>*qKouD$>t-Budz{h|1F={_1aArki=DW?Z7 ze9+>3BQ>owMfsr`dXm%*Q*KAomk+Zcvh*UG-&Vv2CnkWRm?=w{Ylo&wMA^)`NEFi# z;-EYVMMF=(9v2V%uB(RU3k^|D)E2FdUV-iuYYcAGfTicfP-xTRn)ⅅp}dArvBZH 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 z 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 Bo>>3@ literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride16_original/result.json b/benchmark/results/e2e_dpa200_stride16_original/result.json new file mode 100644 index 0000000..b1e366a --- /dev/null +++ b/benchmark/results/e2e_dpa200_stride16_original/result.json @@ -0,0 +1,293 @@ +{ + "artifacts": { + "checkpoint": { + "path": "best_dpd.pt", + "sha256": "d9104a960df60f6a1d1f5ab0a5a89b1e68cca51b740fc4a445fdfdf1c231da28" + }, + "orders": { + "path": "batch_orders.npz", + "sha256": "ff4dc43d09981b276c2f114d0a8f69c237dbe2331cff3d7c9572f239a434e71a" + }, + "outputs": { + "path": "outputs.npz", + "sha256": "ab05cbf0fa406f1ad661a0d9f753c552320e88a07f056d75722ba5be2f1c157c" + } + }, + "best": { + "epoch": 2, + "test": { + "ACLR_AVG": -27.226608217804756, + "ACLR_L": -26.815050106117365, + "ACLR_R": -27.638166329492147, + "EVM": -18.002733545368763, + "NMSE": -16.83683967590332 + }, + "test_loss": 0.008923204615712166 + }, + "config": { + "batch_size": 64, + "dataset_name": "DPA_200MHz", + "decay_factor": 0.5, + "dpd_backbone": "tres_deltagru", + "dpd_hidden_size": 15, + "epochs": 3, + "eval_batch_size": 256, + "frame_length": 200, + "frame_stride": 16, + "grad_clip": 200.0, + "hard_determinism": true, + "lr": 0.005, + "lr_end": 0.0001, + "lr_schedule": true, + "pa_backbone": "dgru", + "pa_hidden_size": 23, + "patience": 10, + "progress_display": false, + "seed": 0, + "tf32": false, + "thh": 0.05, + "thx": 0.01, + "train_batches": 23, + "train_frames": 1428 + }, + "environment": { + "cuda_runtime": "13.2", + "device": "cuda", + "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", + "git_dirty": false, + "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", + "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "python": "3.13.14", + "source_sha256": { + "backbones/tres_deltagru.py": "696b7215c19d64071e443e1b3b493d8fca7b8f83f2fce6e3c29fadea54542b87", + "models.py": "7634689e74dc9b19dedaff34f19ab5231fb6f337c58a3919fc98b196b0db56fe", + "modules/data_collector.py": "7ceb56237cc9366a23e6bc609c1122745b4d524e351148cc513bf52df8f2337c", + "modules/train_funcs.py": "8fa61983ce7a5ebb4b7729260305032de9caf2b9d77004333ebc2414383819ea", + "project.py": "9251b12dff20b42fb3591913b2ebe84689a0d13bb90fe998281ac61952ec971c" + }, + "timestamp_utc": "2026-07-11T11:09:01Z", + "torch": "2.13.0+cu132" + }, + "fixture": { + "pa_pretraining": { + "batch_size": 256, + "epoch_losses": [ + 0.19976529288623068, + 0.07552065874139467, + 0.035813659822775255, + 0.015496797549227873, + 0.0073165092151612045, + 0.004122809729435377, + 0.0028371868655085565, + 0.002260218708155056, + 0.0019730482547957863, + 0.001804672781791952, + 0.0016903372119284339, + 0.0016053243009890947, + 0.001537126708879239, + 0.0014795413240790366, + 0.0014301505237300364, + 0.001387344894465059, + 0.0013489203230063948, + 0.001313198775622166, + 0.0012807028911386927, + 0.0012508238070747918, + 0.001223458524327725, + 0.0011980035510431562, + 0.0011749541568052437, + 0.0011529860992191567, + 0.0011323490322360562, + 0.0011132779117259714, + 0.001094700538346337, + 0.0010788088470386962, + 0.0010624444707193308, + 0.0010472416890681619, + 0.0010330673915127085, + 0.0010188237324150072, + 0.0010063911839905712, + 0.0009942823542385465, + 0.0009820516201822708, + 0.0009706565599319421, + 0.0009600415631818275, + 0.0009499821249240388, + 0.0009395308883136345, + 0.0009299550076118774, + 0.0009213898977678683, + 0.0009129614317013572, + 0.0009045549577826427, + 0.0008978265001335077, + 0.0008889070233433611, + 0.0008808080501492238, + 0.0008747089848232766, + 0.0008677142930941449, + 0.0008612244461093925, + 0.0008541751471865508, + 0.0008492301761483153, + 0.0008438051025020994, + 0.0008372969226911664, + 0.0008320930349226627, + 0.0008262090624258337, + 0.0008212690894854152, + 0.0008170444033263872, + 0.0008116322116822832, + 0.0008085286788021525, + 0.0008024338063680463, + 0.0007971812136626492, + 0.0007941790558915171, + 0.0007888991599126409, + 0.0007850555250317686, + 0.0007812943005572177, + 0.0007774337214262535, + 0.0007736717008002517, + 0.0007680615494286434, + 0.000765761686488986, + 0.0007614624595993923, + 0.0007581874547112319, + 0.0007533019660816838, + 0.0007504364740776106, + 0.0007459188067716443, + 0.000741948351626181, + 0.000738971155240304, + 0.0007369754337964372, + 0.0007315872961448298, + 0.0007274452887941152, + 0.0007249550874500225, + 0.0007203698766210841, + 0.0007163520249175942, + 0.0007124568264569259, + 0.0007081288960762322, + 0.000703643683421736, + 0.0006989148180259185, + 0.0006963702481395255, + 0.000688923417409468, + 0.0006831818797056459, + 0.0006777228373620245, + 0.0006716486325280534, + 0.0006644388376217749, + 0.0006551507258942972, + 0.0006462268809425748, + 0.0006346332763011256, + 0.0006214740213989797, + 0.0006044942381170889, + 0.0005823747681764265, + 0.0005561722377832565, + 0.0005314765006510748 + ], + "epochs": 100, + "frame_stride": 1, + "lr": 0.0005, + "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." + }, + "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", + "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" + }, + "format_version": 1, + "implementation": "original", + "repo_root": "/tmp/OpenDPD-e2e-baseline", + "timing": { + "artifact_serialization_s": 0.0068528100091498345, + "best_dpd_inference_s": 1.555072506016586, + "best_test_inference_s": 1.6603073650039732, + "best_test_metrics_s": 0.0011606779880821705, + "compile_and_warmup_s": 0.8282131100131664, + "epochs": [ + { + "checkpoint_s": 0.0004195749934297055, + "test_inference_s": 1.6630636399786454, + "test_metrics_s": 0.0011976980022154748, + "total_s": 9.74018805596279, + "train_s": 6.085040089994436, + "val_inference_s": 1.560023623984307, + "val_metrics_s": 0.4304434290097561 + }, + { + "checkpoint_s": 0.0004845079965889454, + "test_inference_s": 1.5374629540019669, + "test_metrics_s": 0.0011564310116227716, + "total_s": 8.77447353900061, + "train_s": 5.610238676017616, + "val_inference_s": 1.6239780509786215, + "val_metrics_s": 0.0011529189941938967 + }, + { + "checkpoint_s": 0.0005074270011391491, + "test_inference_s": 1.6070739029964898, + "test_metrics_s": 0.0011016709904652089, + "total_s": 8.744379084004322, + "train_s": 5.54177693001111, + "val_inference_s": 1.5927995950041804, + "val_metrics_s": 0.0011195580009371042 + } + ], + "model_optimizer_setup_s": 0.009723005001433194, + "peak_allocated_mib": 113.1044921875, + "peak_reserved_mib": 126.0, + "setup_data_s": 0.03499383700545877, + "total_s": 32.03585798398126 + }, + "trajectory": [ + { + "epoch": 0, + "lr": 0.005, + "test": { + "ACLR_AVG": -23.802362727318418, + "ACLR_L": -24.37394008245006, + "ACLR_R": -23.23078537218678, + "EVM": -9.233125063892256, + "NMSE": -8.6369047164917 + }, + "test_loss": 0.0584484227001667, + "train_loss": 0.3155044079150843, + "val": { + "ACLR_AVG": -24.368007007685193, + "ACLR_L": -25.166700405152994, + "ACLR_R": -23.569313610217396, + "EVM": -8.888111584610337, + "NMSE": -8.287453651428223 + }, + "val_loss": 0.057822540402412415 + }, + { + "epoch": 1, + "lr": 0.005, + "test": { + "ACLR_AVG": -25.108314935280998, + "ACLR_L": -24.66642731083448, + "ACLR_R": -25.550202559727516, + "EVM": -15.074752071510995, + "NMSE": -14.206661224365234 + }, + "test_loss": 0.016343355178833008, + "train_loss": 0.03183207778341096, + "val": { + "ACLR_AVG": -25.800195622535483, + "ACLR_L": -25.37349478488941, + "ACLR_R": -26.22689646018156, + "EVM": -15.033653677372403, + "NMSE": -14.25285816192627 + }, + "val_loss": 0.014646782539784908 + }, + { + "epoch": 2, + "lr": 0.005, + "test": { + "ACLR_AVG": -27.226608217804756, + "ACLR_L": -26.815050106117365, + "ACLR_R": -27.638166329492147, + "EVM": -18.002733545368763, + "NMSE": -16.83683967590332 + }, + "test_loss": 0.008923204615712166, + "train_loss": 0.011922802371175392, + "val": { + "ACLR_AVG": -27.650038422759067, + "ACLR_L": -27.4008395120854, + "ACLR_R": -27.899237333432737, + "EVM": -17.838220021303275, + "NMSE": -16.874755859375 + }, + "val_loss": 0.008002975955605507 + } + ] +} diff --git a/benchmark/results/e2e_dpa200_stride1_comparison_graph.json b/benchmark/results/e2e_dpa200_stride1_comparison_graph.json new file mode 100644 index 0000000..13d6140 --- /dev/null +++ b/benchmark/results/e2e_dpa200_stride1_comparison_graph.json @@ -0,0 +1,104 @@ +{ + "acceptance_limits": { + "metric_abs_db": 0.05, + "prediction_relative_l2": 0.0001 + }, + "best_epoch": { + "candidate": 0, + "reference": 0 + }, + "candidate_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride1_graph_optimized", + "checkpoint_errors": { + "max_abs": 0.0, + "max_relative_l2": 0.0, + "per_parameter": { + "backbone.fc_out.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.rnn.h2h.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.rnn.x2h.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.tcn.0.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.tcn.2.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + } + } + }, + "checks": { + "all_metric_deltas": true, + "cascade_prediction_relative_l2": true, + "dpd_prediction_relative_l2": true, + "same_batch_orders": true, + "same_fixture": true + }, + "format_version": 1, + "metric_deltas_db": { + "ACLR_AVG": -3.164370099284497e-06, + "ACLR_L": -2.0592444300859825e-06, + "ACLR_R": -4.2694957684830115e-06, + "EVM": -9.776078826462253e-07, + "NMSE": 0.0 + }, + "output_errors": { + "cascade": { + "max_abs": 4.947185516357422e-06, + "mean_abs": 8.859038037674812e-07, + "relative_l2": 1.7005846856815116e-06 + }, + "dpd": { + "max_abs": 9.201467037200928e-07, + "mean_abs": 2.509646719772718e-07, + "relative_l2": 1.5120332981750944e-06 + }, + "ground_truth": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + } + }, + "passed": true, + "reference_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride1_original", + "speed": { + "total_candidate_s": 14.511434557003668, + "total_reference_s": 95.78045028200722, + "total_speedup": 6.600343329652451, + "train_candidate_s": 12.411166226986097, + "train_reference_s": 86.86389361001784, + "train_speedup": 6.99885023062105 + }, + "trajectory_deltas": [ + { + "epoch": 0, + "test": { + "ACLR_AVG": -3.164370099284497e-06, + "ACLR_L": -2.0592444300859825e-06, + "ACLR_R": -4.2694957684830115e-06, + "EVM": -9.776078826462253e-07, + "NMSE": 0.0 + }, + "train_loss": 0.0, + "val": { + "ACLR_AVG": -2.8244013101641485e-06, + "ACLR_L": 8.378235950345925e-06, + "ACLR_R": -1.4027038574226935e-05, + "EVM": -5.002445686130841e-06, + "NMSE": -3.814697265625e-06 + } + } + ] +} diff --git a/benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json b/benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json new file mode 100644 index 0000000..653072e --- /dev/null +++ b/benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json @@ -0,0 +1,104 @@ +{ + "acceptance_limits": { + "metric_abs_db": 0.05, + "prediction_relative_l2": 0.0001 + }, + "best_epoch": { + "candidate": 0, + "reference": 0 + }, + "candidate_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride1_graph_repeat", + "checkpoint_errors": { + "max_abs": 0.0, + "max_relative_l2": 0.0, + "per_parameter": { + "backbone.fc_out.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.rnn.h2h.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.rnn.x2h.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.tcn.0.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + }, + "backbone.tcn.2.weight": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + } + } + }, + "checks": { + "all_metric_deltas": true, + "cascade_prediction_relative_l2": true, + "dpd_prediction_relative_l2": true, + "same_batch_orders": true, + "same_fixture": true + }, + "format_version": 1, + "metric_deltas_db": { + "ACLR_AVG": -3.164370099284497e-06, + "ACLR_L": -2.0592444300859825e-06, + "ACLR_R": -4.2694957684830115e-06, + "EVM": -9.776078826462253e-07, + "NMSE": 0.0 + }, + "output_errors": { + "cascade": { + "max_abs": 4.947185516357422e-06, + "mean_abs": 8.859038037674812e-07, + "relative_l2": 1.7005846856815116e-06 + }, + "dpd": { + "max_abs": 9.201467037200928e-07, + "mean_abs": 2.509646719772718e-07, + "relative_l2": 1.5120332981750944e-06 + }, + "ground_truth": { + "max_abs": 0.0, + "mean_abs": 0.0, + "relative_l2": 0.0 + } + }, + "passed": true, + "reference_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride1_original", + "speed": { + "total_candidate_s": 13.95791669600294, + "total_reference_s": 95.78045028200722, + "total_speedup": 6.862087829298724, + "train_candidate_s": 11.811336595012108, + "train_reference_s": 86.86389361001784, + "train_speedup": 7.354281449120687 + }, + "trajectory_deltas": [ + { + "epoch": 0, + "test": { + "ACLR_AVG": -3.164370099284497e-06, + "ACLR_L": -2.0592444300859825e-06, + "ACLR_R": -4.2694957684830115e-06, + "EVM": -9.776078826462253e-07, + "NMSE": 0.0 + }, + "train_loss": 0.0, + "val": { + "ACLR_AVG": -2.8244013101641485e-06, + "ACLR_L": 8.378235950345925e-06, + "ACLR_R": -1.4027038574226935e-05, + "EVM": -5.002445686130841e-06, + "NMSE": -3.814697265625e-06 + } + } + ] +} diff --git a/benchmark/results/e2e_dpa200_stride1_graph_optimized/batch_orders.npz b/benchmark/results/e2e_dpa200_stride1_graph_optimized/batch_orders.npz new file mode 100644 index 0000000000000000000000000000000000000000..a29c52e01799a13c68e37d5c4da1f2cfefc1149c GIT binary patch literal 61949 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

>p* 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

pHmq}SmD-b_Uz_cPw+Ns` zamC{d%me3f59sDY$QQjT&iHI#&2R;4N|X^~Bwwdne~!CF-QZMNarixF=5Lj0#%WX zb!w|2Vh<@s1Dk1xtmCBcED|=gb5G7cwTxt5Gzy}?{zL3_?m4y1=idHGR5YB!m{?f{nUlJQrC>M%;v3j3hQ1mFl3FZOkitXRQjwEj>$+79y8PzW64J#mVUlk25Gk=iZ zI*&97!pHjJO{T5r*Gh6gkNeFa*f3xRTk|;5ZWTI&9z>n{l!~EAZ z0i{jSN#&;>|xGsH3tRk^SdG@EQgz~ z@fR}1ret9Wv%$#$XKHBjs(!?_I|=elIcFCkx^LtaX@?cyXo23Z$-9bw;G3^Q9Ws;x%yokjPR$8bc?~q5{`URu@UQu^ytV`FMAJJ zKIb`So52ABZB|*~4h$=3*|ML#&z>EAExNM7ta`?qjR+!kfC*P=y> zegGd^7D-|Sza=UbE&9Fve~T=^EC2s?b@Bhbib=pk|B2r17N3AS;lFJ8|6N)P-VcD! K72t;!E&6}t2KGJx literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride1_graph_optimized/outputs.npz b/benchmark/results/e2e_dpa200_stride1_graph_optimized/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..f9f07265f46edfdfab8bdb9fa2f00b4d58616599 GIT binary patch literal 171363 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 Q9>RF)MNc&&`PtL_AD7z7_y7O^ literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride1_graph_optimized/result.json b/benchmark/results/e2e_dpa200_stride1_graph_optimized/result.json new file mode 100644 index 0000000..91fdd5c --- /dev/null +++ b/benchmark/results/e2e_dpa200_stride1_graph_optimized/result.json @@ -0,0 +1,235 @@ +{ + "artifacts": { + "checkpoint": { + "path": "best_dpd.pt", + "sha256": "483ddb048f4669587ffad1d4b1a56770fde1e77fbb167270d5f4d332bdab04bb" + }, + "orders": { + "path": "batch_orders.npz", + "sha256": "e0b2af77bce626475759cd478b9b99b62296a4e5f521a4d13006ba1c79871c94" + }, + "outputs": { + "path": "outputs.npz", + "sha256": "d80c324ec16597eb926d5c79af2453e42c1011c77f4deecc691d18d09bdc0d3a" + } + }, + "best": { + "epoch": 0, + "test": { + "ACLR_AVG": -32.71305647867208, + "ACLR_L": -33.009571182277476, + "ACLR_R": -32.41654177506668, + "EVM": -25.649657576831792, + "NMSE": -24.16977882385254 + }, + "test_loss": 0.001644389471039176 + }, + "config": { + "batch_size": 64, + "cuda_graph_training": true, + "dataset_name": "DPA_200MHz", + "decay_factor": 0.5, + "dpd_backbone": "tres_deltagru", + "dpd_hidden_size": 15, + "epochs": 1, + "eval_batch_size": 256, + "frame_length": 200, + "frame_stride": 1, + "grad_clip": 200.0, + "hard_determinism": true, + "lr": 0.005, + "lr_end": 0.0001, + "lr_schedule": true, + "pa_backbone": "dgru", + "pa_hidden_size": 23, + "patience": 10, + "progress_display": false, + "seed": 0, + "tf32": false, + "thh": 0.05, + "thx": 0.01, + "train_batches": 357, + "train_frames": 22841 + }, + "environment": { + "cuda_runtime": "13.2", + "device": "cuda", + "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", + "git_dirty": true, + "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", + "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "python": "3.13.14", + "source_sha256": { + "backbones/tres_deltagru.py": "0351d322ce3ae615d0f1adfde2b76e8afaa0d85d6f9dc92f511905eca7762925", + "models.py": "8213485a8c63142704c8c5a03d165494a1556554eecd6ab864966b34230032bd", + "modules/cuda_graph_training.py": "dc6d9c436eb8a06145f9e5472cd6cb72deebcc2b08f44a278a3be21409dde620", + "modules/data_collector.py": "7f3b55f38f80820c10d399d161b8cd233bfaf8837dc43613dd1410d6ed649a4a", + "modules/train_funcs.py": "a77e77c9cc848dc8e09f47ba785365a4d37af5fa1b134fba9f7641abb0610031", + "project.py": "a27b508e91e9988e96a78544cd5afc00d699a1dfc8c6f9f9c60f4087037c690e" + }, + "timestamp_utc": "2026-07-11T11:40:29Z", + "torch": "2.13.0+cu132" + }, + "fixture": { + "pa_pretraining": { + "batch_size": 256, + "epoch_losses": [ + 0.19976529288623068, + 0.07552065874139467, + 0.035813659822775255, + 0.015496797549227873, + 0.0073165092151612045, + 0.004122809729435377, + 0.0028371868655085565, + 0.002260218708155056, + 0.0019730482547957863, + 0.001804672781791952, + 0.0016903372119284339, + 0.0016053243009890947, + 0.001537126708879239, + 0.0014795413240790366, + 0.0014301505237300364, + 0.001387344894465059, + 0.0013489203230063948, + 0.001313198775622166, + 0.0012807028911386927, + 0.0012508238070747918, + 0.001223458524327725, + 0.0011980035510431562, + 0.0011749541568052437, + 0.0011529860992191567, + 0.0011323490322360562, + 0.0011132779117259714, + 0.001094700538346337, + 0.0010788088470386962, + 0.0010624444707193308, + 0.0010472416890681619, + 0.0010330673915127085, + 0.0010188237324150072, + 0.0010063911839905712, + 0.0009942823542385465, + 0.0009820516201822708, + 0.0009706565599319421, + 0.0009600415631818275, + 0.0009499821249240388, + 0.0009395308883136345, + 0.0009299550076118774, + 0.0009213898977678683, + 0.0009129614317013572, + 0.0009045549577826427, + 0.0008978265001335077, + 0.0008889070233433611, + 0.0008808080501492238, + 0.0008747089848232766, + 0.0008677142930941449, + 0.0008612244461093925, + 0.0008541751471865508, + 0.0008492301761483153, + 0.0008438051025020994, + 0.0008372969226911664, + 0.0008320930349226627, + 0.0008262090624258337, + 0.0008212690894854152, + 0.0008170444033263872, + 0.0008116322116822832, + 0.0008085286788021525, + 0.0008024338063680463, + 0.0007971812136626492, + 0.0007941790558915171, + 0.0007888991599126409, + 0.0007850555250317686, + 0.0007812943005572177, + 0.0007774337214262535, + 0.0007736717008002517, + 0.0007680615494286434, + 0.000765761686488986, + 0.0007614624595993923, + 0.0007581874547112319, + 0.0007533019660816838, + 0.0007504364740776106, + 0.0007459188067716443, + 0.000741948351626181, + 0.000738971155240304, + 0.0007369754337964372, + 0.0007315872961448298, + 0.0007274452887941152, + 0.0007249550874500225, + 0.0007203698766210841, + 0.0007163520249175942, + 0.0007124568264569259, + 0.0007081288960762322, + 0.000703643683421736, + 0.0006989148180259185, + 0.0006963702481395255, + 0.000688923417409468, + 0.0006831818797056459, + 0.0006777228373620245, + 0.0006716486325280534, + 0.0006644388376217749, + 0.0006551507258942972, + 0.0006462268809425748, + 0.0006346332763011256, + 0.0006214740213989797, + 0.0006044942381170889, + 0.0005823747681764265, + 0.0005561722377832565, + 0.0005314765006510748 + ], + "epochs": 100, + "frame_stride": 1, + "lr": 0.0005, + "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." + }, + "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", + "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" + }, + "format_version": 1, + "implementation": "graph_optimized", + "repo_root": "/home/cgao/OpenDPD", + "timing": { + "artifact_serialization_s": 0.01625754899578169, + "best_dpd_inference_s": 0.003394366998691112, + "best_test_inference_s": 0.004571271012537181, + "best_test_metrics_s": 0.0009814579971134663, + "compile_and_warmup_s": 0.7809879879932851, + "epochs": [ + { + "checkpoint_s": 0.0004043390217702836, + "test_inference_s": 0.005362235009670258, + "test_metrics_s": 0.0014795080060139298, + "total_s": 12.899781111016637, + "train_s": 12.411166226986097, + "val_inference_s": 0.010366453003371134, + "val_metrics_s": 0.47100234898971394 + } + ], + "model_optimizer_setup_s": 0.0002124680031556636, + "peak_allocated_mib": 177.2939453125, + "peak_reserved_mib": 388.0, + "setup_data_s": 0.09390165901277214, + "total_s": 14.511434557003668 + }, + "trajectory": [ + { + "epoch": 0, + "lr": 0.005, + "test": { + "ACLR_AVG": -32.71305647867208, + "ACLR_L": -33.009571182277476, + "ACLR_R": -32.41654177506668, + "EVM": -25.649657576831792, + "NMSE": -24.16977882385254 + }, + "test_loss": 0.001644389471039176, + "train_loss": 0.025925103514337865, + "val": { + "ACLR_AVG": -31.68385412221796, + "ACLR_L": -31.760641592934252, + "ACLR_R": -31.60706665150167, + "EVM": -25.506404082643797, + "NMSE": -24.145689010620117 + }, + "val_loss": 0.0014899137895554304 + } + ] +} diff --git a/benchmark/results/e2e_dpa200_stride1_graph_repeat/batch_orders.npz b/benchmark/results/e2e_dpa200_stride1_graph_repeat/batch_orders.npz new file mode 100644 index 0000000000000000000000000000000000000000..a29c52e01799a13c68e37d5c4da1f2cfefc1149c GIT binary patch literal 61949 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

>p* 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

pHmq}SmD-b_Uz_cPw+Ns` zamC{d%me3f59sDY$QQjT&iHI#&2R;4N|X^~Bwwdne~!CF-QZMNarixF=5Lj0#%WX zb!w|2Vh<@s1Dk1xtmCBcED|=gb5G7cwTxt5Gzy}?{zL3_?m4y1=idHGR5YB!m{?f{nUlJQrC>M%;v3j3hQ1mFl3FZOkitXRQjwEj>$+79y8PzW64J#mVUlk25Gk=iZ zI*&97!pHjJO{T5r*Gh6gkNeFa*f3xRTk|;5ZWTI&9z>n{l!~EAZ z0i{jSN#&;>|xGsH3tRk^SdG@EQgz~ z@fR}1ret9Wv%$#$XKHBjs(!?_I|=elIcFCkx^LtaX@?cyXo23Z$-9bw;G3^Q9Ws;x%yokjPR$8bc?~q5{`URu@UQu^ytV`FMAJJ zKIb`So52ABZB|*~4h$=3*|ML#&z>EAExNM7ta`?qjR+!kfC*P=y> zegGd^7D-|Sza=UbE&9Fve~T=^EC2s?b@Bhbib=pk|B2r17N3AS;lFJ8|6N)P-VcD! K72t;!E&6}t2KGJx literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride1_graph_repeat/outputs.npz b/benchmark/results/e2e_dpa200_stride1_graph_repeat/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..f9f07265f46edfdfab8bdb9fa2f00b4d58616599 GIT binary patch literal 171363 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 Q9>RF)MNc&&`PtL_AD7z7_y7O^ literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride1_graph_repeat/result.json b/benchmark/results/e2e_dpa200_stride1_graph_repeat/result.json new file mode 100644 index 0000000..f453ab3 --- /dev/null +++ b/benchmark/results/e2e_dpa200_stride1_graph_repeat/result.json @@ -0,0 +1,235 @@ +{ + "artifacts": { + "checkpoint": { + "path": "best_dpd.pt", + "sha256": "483ddb048f4669587ffad1d4b1a56770fde1e77fbb167270d5f4d332bdab04bb" + }, + "orders": { + "path": "batch_orders.npz", + "sha256": "e0b2af77bce626475759cd478b9b99b62296a4e5f521a4d13006ba1c79871c94" + }, + "outputs": { + "path": "outputs.npz", + "sha256": "d80c324ec16597eb926d5c79af2453e42c1011c77f4deecc691d18d09bdc0d3a" + } + }, + "best": { + "epoch": 0, + "test": { + "ACLR_AVG": -32.71305647867208, + "ACLR_L": -33.009571182277476, + "ACLR_R": -32.41654177506668, + "EVM": -25.649657576831792, + "NMSE": -24.16977882385254 + }, + "test_loss": 0.001644389471039176 + }, + "config": { + "batch_size": 64, + "cuda_graph_training": true, + "dataset_name": "DPA_200MHz", + "decay_factor": 0.5, + "dpd_backbone": "tres_deltagru", + "dpd_hidden_size": 15, + "epochs": 1, + "eval_batch_size": 256, + "frame_length": 200, + "frame_stride": 1, + "grad_clip": 200.0, + "hard_determinism": true, + "lr": 0.005, + "lr_end": 0.0001, + "lr_schedule": true, + "pa_backbone": "dgru", + "pa_hidden_size": 23, + "patience": 10, + "progress_display": false, + "seed": 0, + "tf32": false, + "thh": 0.05, + "thx": 0.01, + "train_batches": 357, + "train_frames": 22841 + }, + "environment": { + "cuda_runtime": "13.2", + "device": "cuda", + "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", + "git_dirty": true, + "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", + "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "python": "3.13.14", + "source_sha256": { + "backbones/tres_deltagru.py": "0351d322ce3ae615d0f1adfde2b76e8afaa0d85d6f9dc92f511905eca7762925", + "models.py": "8213485a8c63142704c8c5a03d165494a1556554eecd6ab864966b34230032bd", + "modules/cuda_graph_training.py": "dc6d9c436eb8a06145f9e5472cd6cb72deebcc2b08f44a278a3be21409dde620", + "modules/data_collector.py": "7f3b55f38f80820c10d399d161b8cd233bfaf8837dc43613dd1410d6ed649a4a", + "modules/train_funcs.py": "a77e77c9cc848dc8e09f47ba785365a4d37af5fa1b134fba9f7641abb0610031", + "project.py": "a27b508e91e9988e96a78544cd5afc00d699a1dfc8c6f9f9c60f4087037c690e" + }, + "timestamp_utc": "2026-07-11T11:42:14Z", + "torch": "2.13.0+cu132" + }, + "fixture": { + "pa_pretraining": { + "batch_size": 256, + "epoch_losses": [ + 0.19976529288623068, + 0.07552065874139467, + 0.035813659822775255, + 0.015496797549227873, + 0.0073165092151612045, + 0.004122809729435377, + 0.0028371868655085565, + 0.002260218708155056, + 0.0019730482547957863, + 0.001804672781791952, + 0.0016903372119284339, + 0.0016053243009890947, + 0.001537126708879239, + 0.0014795413240790366, + 0.0014301505237300364, + 0.001387344894465059, + 0.0013489203230063948, + 0.001313198775622166, + 0.0012807028911386927, + 0.0012508238070747918, + 0.001223458524327725, + 0.0011980035510431562, + 0.0011749541568052437, + 0.0011529860992191567, + 0.0011323490322360562, + 0.0011132779117259714, + 0.001094700538346337, + 0.0010788088470386962, + 0.0010624444707193308, + 0.0010472416890681619, + 0.0010330673915127085, + 0.0010188237324150072, + 0.0010063911839905712, + 0.0009942823542385465, + 0.0009820516201822708, + 0.0009706565599319421, + 0.0009600415631818275, + 0.0009499821249240388, + 0.0009395308883136345, + 0.0009299550076118774, + 0.0009213898977678683, + 0.0009129614317013572, + 0.0009045549577826427, + 0.0008978265001335077, + 0.0008889070233433611, + 0.0008808080501492238, + 0.0008747089848232766, + 0.0008677142930941449, + 0.0008612244461093925, + 0.0008541751471865508, + 0.0008492301761483153, + 0.0008438051025020994, + 0.0008372969226911664, + 0.0008320930349226627, + 0.0008262090624258337, + 0.0008212690894854152, + 0.0008170444033263872, + 0.0008116322116822832, + 0.0008085286788021525, + 0.0008024338063680463, + 0.0007971812136626492, + 0.0007941790558915171, + 0.0007888991599126409, + 0.0007850555250317686, + 0.0007812943005572177, + 0.0007774337214262535, + 0.0007736717008002517, + 0.0007680615494286434, + 0.000765761686488986, + 0.0007614624595993923, + 0.0007581874547112319, + 0.0007533019660816838, + 0.0007504364740776106, + 0.0007459188067716443, + 0.000741948351626181, + 0.000738971155240304, + 0.0007369754337964372, + 0.0007315872961448298, + 0.0007274452887941152, + 0.0007249550874500225, + 0.0007203698766210841, + 0.0007163520249175942, + 0.0007124568264569259, + 0.0007081288960762322, + 0.000703643683421736, + 0.0006989148180259185, + 0.0006963702481395255, + 0.000688923417409468, + 0.0006831818797056459, + 0.0006777228373620245, + 0.0006716486325280534, + 0.0006644388376217749, + 0.0006551507258942972, + 0.0006462268809425748, + 0.0006346332763011256, + 0.0006214740213989797, + 0.0006044942381170889, + 0.0005823747681764265, + 0.0005561722377832565, + 0.0005314765006510748 + ], + "epochs": 100, + "frame_stride": 1, + "lr": 0.0005, + "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." + }, + "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", + "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" + }, + "format_version": 1, + "implementation": "graph_optimized", + "repo_root": "/home/cgao/OpenDPD", + "timing": { + "artifact_serialization_s": 0.016647059994284064, + "best_dpd_inference_s": 0.0035933740145992488, + "best_test_inference_s": 0.007317051000427455, + "best_test_metrics_s": 0.0012601740017998964, + "compile_and_warmup_s": 0.8712959540134761, + "epochs": [ + { + "checkpoint_s": 0.0006351550109684467, + "test_inference_s": 0.005814445001306012, + "test_metrics_s": 0.0011821069929283112, + "total_s": 12.264488988032099, + "train_s": 11.811336595012108, + "val_inference_s": 0.009584471001289785, + "val_metrics_s": 0.43593621501349844 + } + ], + "model_optimizer_setup_s": 0.00022591199376620352, + "peak_allocated_mib": 177.2939453125, + "peak_reserved_mib": 388.0, + "setup_data_s": 0.08836299000540748, + "total_s": 13.95791669600294 + }, + "trajectory": [ + { + "epoch": 0, + "lr": 0.005, + "test": { + "ACLR_AVG": -32.71305647867208, + "ACLR_L": -33.009571182277476, + "ACLR_R": -32.41654177506668, + "EVM": -25.649657576831792, + "NMSE": -24.16977882385254 + }, + "test_loss": 0.001644389471039176, + "train_loss": 0.025925103514337865, + "val": { + "ACLR_AVG": -31.68385412221796, + "ACLR_L": -31.760641592934252, + "ACLR_R": -31.60706665150167, + "EVM": -25.506404082643797, + "NMSE": -24.145689010620117 + }, + "val_loss": 0.0014899137895554304 + } + ] +} diff --git a/benchmark/results/e2e_dpa200_stride1_original/batch_orders.npz b/benchmark/results/e2e_dpa200_stride1_original/batch_orders.npz new file mode 100644 index 0000000000000000000000000000000000000000..a29c52e01799a13c68e37d5c4da1f2cfefc1149c GIT binary patch literal 61949 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

>p* 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

pHmq}SmD-b_Uz_cPw+Ns` zamC{d%me3f59sDY$QQjT&iHI#&2R;4N|X^~Bwwdne~!CF-QZMNarixF=5Lj0#%WX zb!w|2Vh<@s1Dk1xtmCBcED|=gb5G7cwTxt5Gzy}?{zL3_?m4y1=idHGR5YB!m{?f{nUlJQrC>M%;v3j3hQ1mFl3FZOkitXRQjwEj>$+79y8PzW64J#mVUlk25Gk=iZ zI*&97!pHjJO{T5r*Gh6gkNeFa*f3xRTk|;5ZWTI&9z>n{l!~EAZ z0i{jSN#&;>|xGsH3tRk^SdG@EQgz~ z@fR}1ret9Wv%$#$XKHBjs(!?_I|=elIcFCkx^LtaX@?cyXo23Z$-9bw;G3^Q9Ws;x%yokjPR$8bc?~q5{`URu@UQu^ytV`FMAJJ zKIb`So52ABZB|*~4h$=3*|ML#&z>EAExNM7ta`?qjR+!kfC*P=y> zegGd^7D-|Sza=UbE&9Fve~T=^EC2s?b@Bhbib=pk|B2r17N3AS;lFJ8|6N)P-VcD! K72t;!E&6}t2KGJx literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride1_original/outputs.npz b/benchmark/results/e2e_dpa200_stride1_original/outputs.npz new file mode 100644 index 0000000000000000000000000000000000000000..01f1c8b59d2c9e2b7dc93373fb90985e8a29a5d0 GIT binary patch literal 171372 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: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� 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

dP{+`@W)vn>r^RX9(2(LTdR|xO9n>?hTrN#p@iX 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

%0-VM8uemtJP?tkz5I@jx5@AEo0 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 literal 0 HcmV?d00001 diff --git a/benchmark/results/e2e_dpa200_stride1_original/result.json b/benchmark/results/e2e_dpa200_stride1_original/result.json new file mode 100644 index 0000000..ec2c823 --- /dev/null +++ b/benchmark/results/e2e_dpa200_stride1_original/result.json @@ -0,0 +1,233 @@ +{ + "artifacts": { + "checkpoint": { + "path": "best_dpd.pt", + "sha256": "483ddb048f4669587ffad1d4b1a56770fde1e77fbb167270d5f4d332bdab04bb" + }, + "orders": { + "path": "batch_orders.npz", + "sha256": "e0b2af77bce626475759cd478b9b99b62296a4e5f521a4d13006ba1c79871c94" + }, + "outputs": { + "path": "outputs.npz", + "sha256": "fd33f4627676badc13412a5d8a6a28993e2f09d2623878944d1d6e2ae0d7ffc2" + } + }, + "best": { + "epoch": 0, + "test": { + "ACLR_AVG": -32.71305331430198, + "ACLR_L": -33.009569123033046, + "ACLR_R": -32.416537505570915, + "EVM": -25.64965659922391, + "NMSE": -24.16977882385254 + }, + "test_loss": 0.0016443891217932105 + }, + "config": { + "batch_size": 64, + "dataset_name": "DPA_200MHz", + "decay_factor": 0.5, + "dpd_backbone": "tres_deltagru", + "dpd_hidden_size": 15, + "epochs": 1, + "eval_batch_size": 256, + "frame_length": 200, + "frame_stride": 1, + "grad_clip": 200.0, + "hard_determinism": true, + "lr": 0.005, + "lr_end": 0.0001, + "lr_schedule": true, + "pa_backbone": "dgru", + "pa_hidden_size": 23, + "patience": 10, + "progress_display": false, + "seed": 0, + "tf32": false, + "thh": 0.05, + "thx": 0.01, + "train_batches": 357, + "train_frames": 22841 + }, + "environment": { + "cuda_runtime": "13.2", + "device": "cuda", + "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", + "git_dirty": false, + "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", + "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "python": "3.13.14", + "source_sha256": { + "backbones/tres_deltagru.py": "696b7215c19d64071e443e1b3b493d8fca7b8f83f2fce6e3c29fadea54542b87", + "models.py": "7634689e74dc9b19dedaff34f19ab5231fb6f337c58a3919fc98b196b0db56fe", + "modules/data_collector.py": "7ceb56237cc9366a23e6bc609c1122745b4d524e351148cc513bf52df8f2337c", + "modules/train_funcs.py": "8fa61983ce7a5ebb4b7729260305032de9caf2b9d77004333ebc2414383819ea", + "project.py": "9251b12dff20b42fb3591913b2ebe84689a0d13bb90fe998281ac61952ec971c" + }, + "timestamp_utc": "2026-07-11T11:26:26Z", + "torch": "2.13.0+cu132" + }, + "fixture": { + "pa_pretraining": { + "batch_size": 256, + "epoch_losses": [ + 0.19976529288623068, + 0.07552065874139467, + 0.035813659822775255, + 0.015496797549227873, + 0.0073165092151612045, + 0.004122809729435377, + 0.0028371868655085565, + 0.002260218708155056, + 0.0019730482547957863, + 0.001804672781791952, + 0.0016903372119284339, + 0.0016053243009890947, + 0.001537126708879239, + 0.0014795413240790366, + 0.0014301505237300364, + 0.001387344894465059, + 0.0013489203230063948, + 0.001313198775622166, + 0.0012807028911386927, + 0.0012508238070747918, + 0.001223458524327725, + 0.0011980035510431562, + 0.0011749541568052437, + 0.0011529860992191567, + 0.0011323490322360562, + 0.0011132779117259714, + 0.001094700538346337, + 0.0010788088470386962, + 0.0010624444707193308, + 0.0010472416890681619, + 0.0010330673915127085, + 0.0010188237324150072, + 0.0010063911839905712, + 0.0009942823542385465, + 0.0009820516201822708, + 0.0009706565599319421, + 0.0009600415631818275, + 0.0009499821249240388, + 0.0009395308883136345, + 0.0009299550076118774, + 0.0009213898977678683, + 0.0009129614317013572, + 0.0009045549577826427, + 0.0008978265001335077, + 0.0008889070233433611, + 0.0008808080501492238, + 0.0008747089848232766, + 0.0008677142930941449, + 0.0008612244461093925, + 0.0008541751471865508, + 0.0008492301761483153, + 0.0008438051025020994, + 0.0008372969226911664, + 0.0008320930349226627, + 0.0008262090624258337, + 0.0008212690894854152, + 0.0008170444033263872, + 0.0008116322116822832, + 0.0008085286788021525, + 0.0008024338063680463, + 0.0007971812136626492, + 0.0007941790558915171, + 0.0007888991599126409, + 0.0007850555250317686, + 0.0007812943005572177, + 0.0007774337214262535, + 0.0007736717008002517, + 0.0007680615494286434, + 0.000765761686488986, + 0.0007614624595993923, + 0.0007581874547112319, + 0.0007533019660816838, + 0.0007504364740776106, + 0.0007459188067716443, + 0.000741948351626181, + 0.000738971155240304, + 0.0007369754337964372, + 0.0007315872961448298, + 0.0007274452887941152, + 0.0007249550874500225, + 0.0007203698766210841, + 0.0007163520249175942, + 0.0007124568264569259, + 0.0007081288960762322, + 0.000703643683421736, + 0.0006989148180259185, + 0.0006963702481395255, + 0.000688923417409468, + 0.0006831818797056459, + 0.0006777228373620245, + 0.0006716486325280534, + 0.0006644388376217749, + 0.0006551507258942972, + 0.0006462268809425748, + 0.0006346332763011256, + 0.0006214740213989797, + 0.0006044942381170889, + 0.0005823747681764265, + 0.0005561722377832565, + 0.0005314765006510748 + ], + "epochs": 100, + "frame_stride": 1, + "lr": 0.0005, + "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." + }, + "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", + "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" + }, + "format_version": 1, + "implementation": "original", + "repo_root": "/tmp/OpenDPD-e2e-baseline", + "timing": { + "artifact_serialization_s": 0.019847713003400713, + "best_dpd_inference_s": 1.7315914120117668, + "best_test_inference_s": 1.61172785499366, + "best_test_metrics_s": 0.0012631099962163717, + "compile_and_warmup_s": 0.8425095450074878, + "epochs": [ + { + "checkpoint_s": 0.0005106719909235835, + "test_inference_s": 1.7132897100236733, + "test_metrics_s": 0.001207570981932804, + "total_s": 90.78155352899921, + "train_s": 86.86389361001784, + "val_inference_s": 1.6413530060090125, + "val_metrics_s": 0.5612989599758293 + } + ], + "model_optimizer_setup_s": 0.00024529400980100036, + "peak_allocated_mib": 113.1044921875, + "peak_reserved_mib": 124.0, + "setup_data_s": 0.08421342200017534, + "total_s": 95.78045028200722 + }, + "trajectory": [ + { + "epoch": 0, + "lr": 0.005, + "test": { + "ACLR_AVG": -32.71305331430198, + "ACLR_L": -33.009569123033046, + "ACLR_R": -32.416537505570915, + "EVM": -25.64965659922391, + "NMSE": -24.16977882385254 + }, + "test_loss": 0.0016443891217932105, + "train_loss": 0.025925103514337865, + "val": { + "ACLR_AVG": -31.68385129781665, + "ACLR_L": -31.760649971170203, + "ACLR_R": -31.607052624463094, + "EVM": -25.50639908019811, + "NMSE": -24.14568519592285 + }, + "val_loss": 0.0014899144880473614 + } + ] +} diff --git a/benchmark/results/end_to_end_summary.json b/benchmark/results/end_to_end_summary.json new file mode 100644 index 0000000..5d7adc8 --- /dev/null +++ b/benchmark/results/end_to_end_summary.json @@ -0,0 +1,165 @@ +{ + "recorded_date": "2026-07-11", + "source_base_revision": "0976ce39fc664727ab7ab640ccb349679f05d84f", + "system": { + "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", + "python": "3.13.14", + "torch": "2.13.0+cu132", + "cuda": "13.2", + "triton": "3.7.1", + "precision": "FP32", + "tf32": false, + "hard_determinism": true + }, + "benchmark_contract": { + "dataset": "DPA_200MHz", + "pa": "DGRU H23, one deterministic 100-epoch surrogate fixture shared by every arm", + "pa_fixture_sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c", + "dpd": "TRes-DeltaGRU H15", + "thresholds": { + "thx": 0.01, + "thh": 0.05 + }, + "frame_length": 200, + "batch_size": 64, + "optimizer": "AdamW", + "learning_rate": 0.005, + "gradient_clip": 200.0, + "acceptance": { + "prediction_relative_l2_max": 0.0001, + "rf_metric_absolute_delta_db_max": 0.05, + "same_fixture": true, + "same_batch_orders": true + } + }, + "production_density": { + "frame_stride": 1, + "train_frames": 22841, + "train_batches": 357, + "epochs": 1, + "reference": { + "total_s": 95.78045028200722, + "train_s": 86.86389361001784, + "test_metrics_db": { + "ACLR_L": -33.009569123033046, + "ACLR_R": -32.416537505570915, + "ACLR_AVG": -32.71305331430198, + "EVM": -25.64965659922391, + "NMSE": -24.16977882385254 + } + }, + "strict_graph_runs": [ + { + "total_s": 14.511434557003668, + "train_s": 12.411166226986097, + "total_speedup": 6.600343329652451, + "train_speedup": 6.99885023062105 + }, + { + "total_s": 13.95791669600294, + "train_s": 11.811336595012108, + "total_speedup": 6.862087829298724, + "train_speedup": 7.354281449120687 + } + ], + "equivalence": { + "checkpoint_max_abs": 0.0, + "checkpoint_max_relative_l2": 0.0, + "cascade_output_max_abs": 0.000004947185516357422, + "cascade_output_relative_l2": 0.0000017005846856815116, + "dpd_output_max_abs": 0.0000009201467037200928, + "dpd_output_relative_l2": 0.0000015120332981750944, + "metric_deltas_db": { + "ACLR_L": -0.0000020592444300859825, + "ACLR_R": -0.0000042694957684830115, + "ACLR_AVG": -0.000003164370099284497, + "EVM": -0.0000009776078826462253, + "NMSE": 0.0 + }, + "maximum_absolute_metric_delta_db": 0.0000042694957684830115, + "passed": true + } + }, + "three_epoch_gate": { + "frame_stride": 16, + "train_batches_per_epoch": 23, + "epochs": 3, + "arms": [ + { + "implementation": "Exact committed original", + "total_s": 32.03585798398126, + "train_s": 17.237055696023162, + "total_speedup": 1.0, + "train_speedup": 1.0, + "cascade_output_relative_l2": 0.0, + "maximum_absolute_metric_delta_db": 0.0, + "accepted": true + }, + { + "implementation": "Clean eager pipeline", + "total_s": 24.029687639005715, + "train_s": 13.491934273974039, + "total_speedup": 1.3331782945018265, + "train_speedup": 1.2775822462516342, + "cascade_output_relative_l2": 0.0, + "maximum_absolute_metric_delta_db": 0.0, + "accepted": true + }, + { + "implementation": "Strict whole-cascade CUDA graph", + "total_s": 5.458723943011137, + "train_s": 3.434560444991803, + "total_speedup": 5.868744841914403, + "train_speedup": 5.018707916804272, + "cascade_output_relative_l2": 0.0000020480301293249045, + "maximum_absolute_metric_delta_db": 0.0000024523588528779783, + "accepted": true + }, + { + "implementation": "Direct persistent Triton training", + "total_s": 2.3912337490182836, + "train_s": 0.36852700999588706, + "total_speedup": 13.397208866399414, + "train_speedup": 46.77284222997803, + "cascade_output_relative_l2": 0.010411809662242288, + "maximum_absolute_metric_delta_db": 0.03461828059020533, + "accepted": false, + "rejection_reason": "RF metrics passed, but the final output exceeded the predeclared relative-L2 equivalence limit after three epochs." + } + ] + }, + "isolated_results": { + "tres_backbone_training_step": { + "reference_ms": 164.302, + "optimized_ms": 1.692, + "speedup": 97.11 + }, + "frozen_dgru_forward_input_backward": { + "reference_ms": 1.2673, + "optimized_ms": 0.3261, + "speedup": 3.886, + "output_and_input_gradient_bitwise": true + } + }, + "validation": { + "pytest_non_extended_passed": 164, + "pytest_extended_passed": 19, + "pytest_total_passed": 183, + "benchmark_repeat_count_production_optimized": 2, + "diff_check_clean": true + }, + "raw_sources": [ + "benchmark/results/e2e_dpa200_stride1_comparison_graph.json", + "benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json", + "benchmark/results/e2e_dpa200_stride16_comparison_eager.json", + "benchmark/results/e2e_dpa200_stride16_comparison_graph.json", + "benchmark/results/e2e_dpa200_stride16_comparison_fused.json", + "benchmark/results/tres_deltagru_rtx4090_laptop.json" + ], + "limitations": [ + "The repository contained no pretrained PA checkpoint, so all arms used the same deterministic surrogate PA trained once on the bundled dataset.", + "The production-density comparison covers one 357-update epoch, while the multi-epoch gate covers three 23-update epochs; it is not a 240- or 300-epoch convergence study.", + "The strict CUDA-graph path is an explicit opt-in specialized to the measured FP32 TRes-DeltaGRU to frozen-DGRU cascade and MSE training.", + "Existing EVM semantics were preserved: calculate_metrics does not forward the dataset sample rate to EVM, so its default 800 MHz is used." + ] +} diff --git a/benchmark/results/tres_deltagru_rtx4090_laptop.json b/benchmark/results/tres_deltagru_rtx4090_laptop.json new file mode 100644 index 0000000..6f2c3fd --- /dev/null +++ b/benchmark/results/tres_deltagru_rtx4090_laptop.json @@ -0,0 +1,92 @@ +{ + "recorded_date": "2026-07-11", + "source_base_revision": "0976ce39fc664727ab7ab640ccb349679f05d84f", + "source_state": "dirty: includes the TRes-DeltaGRU optimization in this working tree", + "command": ".venv/bin/python benchmark/benchmark_tres_deltagru.py", + "system": { + "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", + "python": "3.13.14", + "torch": "2.13.0+cu132", + "triton": "3.7.1", + "device": "NVIDIA GeForce RTX 4090 Laptop GPU", + "compute_capability": "8.9", + "driver": "610.74", + "cuda": "13.2", + "cudnn": 92000, + "matmul_tf32": false, + "cudnn_tf32": false + }, + "config": { + "batch_size": 64, + "sequence_length": 200, + "hidden_size": 15, + "thx": 0.01, + "thh": 0.05, + "dtype": "float32", + "optimizer": "AdamW", + "learning_rate": 0.0005, + "grad_clip": 200.0, + "warmup_steps": 5, + "blocks": 7, + "reference_steps_per_block": 5, + "fused_steps_per_block": 100, + "seed": 0 + }, + "equivalence": { + "check_batch_size": 8, + "output": { + "max_abs": 6.079673767089844e-06, + "mean_abs": 8.64025196278817e-07, + "relative_l2": 1.3402454897004645e-06 + }, + "input_gradient": { + "max_abs": 1.461885403841734e-07, + "mean_abs": 5.326960206275544e-09, + "relative_l2": 1.4971470591262914e-05 + }, + "loss_abs": 1.1920928955078125e-07, + "maximum_parameter_gradient_error": { + "parameter": "backbone.rnn.x2h.weight", + "max_abs": 7.152557373046875e-07, + "relative_l2": 8.59947533626837e-07 + } + }, + "results": [ + { + "implementation": "eager-clean", + "steps_per_block": 5, + "block_ms_per_step": [ + 164.302, + 164.948, + 176.296, + 158.841, + 164.257, + 169.615, + 163.938 + ], + "median_ms": 164.302, + "iqr_block_means_ms": 3.184, + "sequence_positions_per_second": 77905, + "peak_allocated_mib": 25.3, + "speedup": 1.0 + }, + { + "implementation": "triton-fused", + "steps_per_block": 100, + "block_ms_per_step": [ + 1.692, + 1.762, + 1.707, + 1.690, + 1.752, + 1.684, + 1.675 + ], + "median_ms": 1.692, + "iqr_block_means_ms": 0.043, + "sequence_positions_per_second": 7565624, + "peak_allocated_mib": 27.5, + "speedup": 97.11 + } + ] +} diff --git a/benchmark/tres_deltagru_end_to_end_report.html b/benchmark/tres_deltagru_end_to_end_report.html new file mode 100644 index 0000000..256a276 --- /dev/null +++ b/benchmark/tres_deltagru_end_to_end_report.html @@ -0,0 +1,4900 @@ + + + + + + + + +TRes-DeltaGRU end-to-end training optimization + + + +

Data Analytics report

TRes-DeltaGRU end-to-end training optimization

A controlled speed and numerical-equivalence study of OpenDPD TRes-DeltaGRU training.

+

Executive Summary

+

The recommended strict path is guarded whole-cascade CUDA-graph training, enabled with --cuda_graph_training. On the 357Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-update production-density workload it reduced total time from 95.78Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s to 14.51Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s and 13.96Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s across two runs (6.60Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json6.86Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json×) and training time from 86.86Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s to 12.41Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s and 11.81Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s (7.00Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json7.35Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json×). The selected DPD checkpoint was bitwise identical, cascade output relative L2 error was 1.70e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json, and the largest ACLR/NMSE/EVM difference was 4.27e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json dB.

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

+

End-to-end speedup

6.60–6.86×Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Process workload speedup for 357 training updates plus validation, test, RF metrics, and artifacts.

Training speedup 7.00–7.35×Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
Process workload speedup for 357 training updates plus validation, test, RF metrics, and artifacts.Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

Cascade output rel-L2

≤ 1.70e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Relative L2 difference between the original and optimized cascaded neural-network outputs.

Maximum absolute error ≤ 4.95e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
Relative L2 difference between the original and optimized cascaded neural-network outputs.Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

Maximum RF-metric delta

≤ 4.27e-6 dBSource: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Largest absolute difference across ACLR-left, ACLR-right, ACLR-average, EVM, and NMSE.

Acceptance limit 0.05 dBSource: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
Largest absolute difference across ACLR-left, ACLR-right, ACLR-average, EVM, and NMSE.Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

DPD checkpoint

Bitwise exactSource: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Comparison of every tensor in the selected best DPD state dictionary.

Best epoch SameSource: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
Comparison of every tensor in the selected best DPD state dictionary.Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

+

Key findings

+
  • The isolated persistent Triton backbone remains the fastest kernel-level method at 97.11Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json×, but long training amplifies its small FP32 differences around delta thresholds.
  • Direct persistent-Triton end-to-end training reached 13.40Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json× total and 46.77Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json× training speedup in the three-epoch gate, yet its final cascade output relative L2 error reached 1.04e-2Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json. It was rejected even though its RF metrics stayed within 0.035Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json dB.
  • Capturing the existing clean-eager cascade preserves its PyTorch/cuDNN arithmetic and removes recurrent launch overhead. It is slower than direct Triton but passes every output, checkpoint, and RF-metric gate.
  • Loop/data cleanups alone are bitwise exact and improve total time 1.33Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json×.
Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

+

Lower is faster. The strict whole-cascade graph is the fastest accepted method.

Three-epoch controlled workload time data
ImplementationTotal timeTraining timeTotal speedupOutput rel-L2Accepted
Exact original32.04s17.2410Yes
Clean eager pipeline24.03s13.491.330Yes
Strict whole-cascade graph5.46s3.435.870Yes
Direct persistent Triton2.39s0.3713.40.01No
+

Why the strict graph is the recommendation

+

The graph records the original eager TRes-DeltaGRU, MSE loss, gradient clearing, frozen-PA input backward, and DPD backward. It replays those exact kernels at fixed shapes while leaving batch copies, gradient clipping, AdamW, scheduling, validation, testing, and checkpoint selection outside the graph. Full and partial batches share stable gradient buffers and one capture stream. Unsupported calls fall back to clean eager training; evaluation restores the fused inference path.

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

+

Optimization candidate decision

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

Optimization candidate decision
ImplementationTotal sTrain sSpeedupOutput rel-L2Max RF delta, dBAccepted
Direct persistent Triton2.39Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0.37Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json13.4Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0.01Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0.03Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.jsonNo
Strict whole-cascade graph5.46Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json3.43Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json5.87Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.jsonYes
Clean eager pipeline24.03Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json13.49Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json1.33Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.jsonYes
Exact original32.04Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json17.24Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json1Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.jsonYes
+

Output and RF equivalence

+

The production-density optimized checkpoint matched every original state-dict tensor exactly. The remaining output difference comes from using the faster fused inference kernel on the same weights: 4.95e-6 maximum absolute and 1.70e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json relative L2 at the cascade output. All five reported RF metrics were effectively unchanged, with absolute deltas between zero and 4.27e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json dB, far below the predeclared 0.05Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json dB ceiling.

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

+

Production-density RF metric equivalence

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

Production-density RF metric equivalence
MetricOriginal dBOptimized dBDelta dBAbsolute delta dB
ACLR average-32.71Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-32.71Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
ACLR left-33.01Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-33.01Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
ACLR right-32.42Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-32.42Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
EVM-25.65Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-25.65Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
NMSE-24.17Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-24.17Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
+

Scope, data, and metric definitions

+

The controlled workload uses bundled DPA_200MHz data, a TRes-DeltaGRU H15 DPD (thx=.01, thh=.05), a frozen DGRU H23 PA, FP32, B64×T200, AdamW at 5e-3Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json, and gradient clipping at 200Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json. The production-density arm uses all 22,841Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json stride-one frames (357Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json updates); the multi-epoch gate uses stride 16Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json (23Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json updates per epoch for three epochs). NMSE is the repository's mean per-segment normalized MSE in dB. EVM is its subchannel spectral-magnitude error in dB. ACLR-left/right compare adjacent-channel power with the strongest main subchannel; ACLR-average is their mean.

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

+

Methodology

+

The exact original is detached commit 0976ce39. A single deterministic PA surrogate was trained for 100Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py epochs because the repository ships no PA checkpoint; its SHA-256Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py fixture was reused unchanged by every arm. DPD initialization, frame order, full/partial batches, validation/test segments, optimizer hyperparameters, TF32 setting, and hard-determinism policy were fixed. Each run saves the exact permutations, best DPD checkpoint, DPD output, cascaded output, ground truth, phase timings, trajectory, and RF metrics. The comparison script rejects a fixture/order mismatch before evaluating speed or numerical results. Regression validation passed 164Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py standard tests plus 19Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py extended all-dataset/all-backbone tests.

Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py

Loads repository data/models/metrics, prepares the immutable fixture, replays recorded batch orders, records phase timings and artifacts, and compares outputs, checkpoints, and RF metrics.

+

Implemented optimizations and safeguards

Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py

Loads repository data/models/metrics, prepares the immutable fixture, replays recorded batch orders, records phase timings and artifacts, and compares outputs, checkpoints, and RF metrics.

Implemented optimizations and safeguards
PriorityComponentChangeEquivalence behavior
1Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyWhole cascadeOpt-in fixed-shape CUDA graph of clean-eager forward, MSE, gradient zeroing, and backwardOriginal kernels; clean-eager fallback; clip and AdamW remain outside
2Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyFrozen DGRU PAExact cuDNN CUDA-graph forward and input-backward replayBitwise output/input gradient in focused tests; guarded eager fallback
3Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyTraining loopOne loss-vector device-to-host transfer per epoch; set-to-none gradients; trainable-only clip/optimizerBitwise CPU trajectory and logged loss in lockstep tests
4Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyEvaluationInference mode and consolidated output/target transfersExact outputs, targets, and loss in tests
5Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyDataVectorized frame construction and CUDA pinned/nonblocking loader pathExact frame order/content/dtype with independent storage
6Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyPersistent Triton TResFused recurrence and custom BPTT for supported FP32 NVIDIA shapesMinor one-step FP error; rejected as strict multi-epoch training path at nonzero thresholds
+

Limitations and robustness

+
  • The bundled repository has no published PA checkpoint. The surrogate makes the original-versus-optimized comparison controlled, but its absolute RF quality must not be presented as a reproduction of published results.
  • The longest comparison is one 357Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-update epoch; the multi-epoch gate covers 69Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json updates. This is not a complete 240Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json- or 300Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-epoch convergence study.
  • Whole-cascade graph training is deliberately opt-in and specialized to the FP32 TRes-DeltaGRU → frozen-DGRU cascade with mean MSE. CPU, AMP, QAT, changed modules, diagnostic delta collection, capture failure, and unsupported shapes use eager fallbacks.
  • Existing EVM behavior was preserved: calculate_metrics does not pass the dataset sample rate, so EVM uses its 800 MHz default. Correcting that is a separate semantic change.
  • One original production-density timing and two optimized timings were collected on a power-managed laptop GPU; use the observed range rather than treating one decimal speedup as universal.
Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

+

Recommended next steps

+
  1. Use --cuda_graph_training (or cuda_graph_training=True through the API) when strict training-result equivalence is required.
  2. Keep direct persistent Triton available for inference and experiments where endpoint metric equivalence is sufficient, but do not label its multi-epoch neural outputs strict-equivalent at nonzero thresholds.
  3. Stage the real production PA checkpoint and run the full intended epoch schedule on the target GPU before a release claim. Preserve the same fixture/order comparison and checkpoint/output/RF gates.
  4. If workload shapes or precision modes change, rerun the supplied end-to-end harness; the graph path will safely fall back, but its speedup is shape- and hardware-dependent.
+

Further questions

+

The main unresolved question is full-schedule convergence with the real PA checkpoint. A secondary opportunity is a GPU-resident frame sampler for much larger datasets, where per-batch host staging may become material after recurrent launch overhead has been removed.

Sources

  1. Reviewed end-to-end benchmark summarybenchmark/results/end_to_end_summary.json · duckdb · 2026-07-11T13:42:00Z

    Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

    SQL query
    SELECT * FROM read_json_auto('benchmark/results/end_to_end_summary.json');
  2. Reproducible benchmark and implementationbenchmark/benchmark_end_to_end.py · duckdb · 2026-07-11T13:42:00Z

    Loads repository data/models/metrics, prepares the immutable fixture, replays recorded batch orders, records phase timings and artifacts, and compares outputs, checkpoints, and RF metrics.

    SQL query
    SELECT content FROM read_text('benchmark/benchmark_end_to_end.py');
+ + + + + + + diff --git a/benchmark/tres_deltagru_training_speed.md b/benchmark/tres_deltagru_training_speed.md new file mode 100644 index 0000000..42daaef --- /dev/null +++ b/benchmark/tres_deltagru_training_speed.md @@ -0,0 +1,179 @@ +# TRes-DeltaGRU training-speed benchmark + +## Result + +In the documented production-shape run, the TRes-DeltaGRU backbone (`B=64`, +`T=200`, `H=15`, `thx=.01`, `thh=.05`, FP32) was **97.1x faster** with the fused implementation: +**164.30 ms -> 1.692 ms per training step**. The timed step includes forward, +MSE backward, gradient clipping, and AdamW. The recurrent layer by itself +improved from **176.69 ms -> 0.721 ms** in a separate forward/backward +microbenchmark (245x). + +The implementation has the same 999 parameters and unchanged state-dict keys. +It preserves the feature extractor, thresholds, delta state updates, gate +equations, TCN residual, and output layer. Floating-point reduction order, +FMA contraction, and sigmoid/tanh implementations differ. + +This headline applies to dense FP32, first-order training on a supported NVIDIA +CUDA/Triton system. CPU, AMP, QAT, higher-order autograd, and unsupported shapes +take or should take the eager path; see the limitations below. + +## Test system and method + +| Field | Value | +|---|---| +| GPU | NVIDIA GeForce RTX 4090 Laptop GPU, compute capability 8.9 | +| Software | Python 3.13.14, PyTorch 2.13.0+cu132, CUDA 13.2, cuDNN 9.20, Triton 3.7.1 | +| Host | WSL2, Linux 6.6.114.1 | +| Precision | FP32; cuBLAS and cuDNN TF32 disabled | +| Step | `zero_grad(set_to_none=True)`, forward, MSE, backward, clip norm 200, AdamW | +| Data | Seeded synthetic IQ and targets, resident on GPU | +| Timing | 5 warmups; 7 synchronized CUDA-event blocks; median and IQR reported | +| Eager block | 5 steps per timing block | +| Fused block | 100 steps per timing block | + +The table reports the IQR of block-average step times. Because eager blocks +average 5 steps and fused blocks average 100, those IQRs describe stability +within each implementation and should not be compared as equal-size samples. +The script runs eager before fused; repeated runs on this power-managed laptop +produced roughly 81x-99x, so the defensible conclusion is "about two orders of +magnitude," not a universal exact 98.5x. + +This isolates backbone compute and optimizer cost. It intentionally excludes +CSV loading, frame construction, DataLoader work, and host-to-device transfer. +The real DPD pipeline also backpropagates through its frozen PA model; that is a +separate cost and can cap end-to-end gains even after this backbone is fast. + +## Production-shape result + +| Implementation | Median ms/step | IQR of block means | Sequence positions/s | Peak allocated | Speedup | +|---|---:|---:|---:|---:|---:| +| Clean eager reference | 164.302 | 3.184 | 77,905 | 25.3 MiB | 1.00x | +| Persistent Triton | **1.692** | 0.043 | **7,565,624** | 27.5 MiB | **97.11x** | + +Raw block means, environment details, and the equivalence summary are archived +in [`results/tres_deltagru_rtx4090_laptop.json`](results/tres_deltagru_rtx4090_laptop.json). + +The original implementation was slower than the clean eager reference because +it collected delta statistics and performed two unused hidden-delta reductions +at every timestep. An exploratory pre-change measurement was about 275 ms for +forward plus MSE backward, but it is not included in the comparable table +because it used a different step boundary. + +## Scaling experiments + +These shorter runs used five timing blocks (three for `T=1000`). B=16 used +3/100 eager/fused steps per block, B=256 used 3/50, T=50 used 5/100, and T=1000 +used 1/20 with two warmups. Their IQRs are omitted because the block settings +differ. + +### Batch scaling at T=200 + +| Batch | Clean eager ms | Fused ms | Speedup | +|---:|---:|---:|---:| +| 16 | 165.060 | 1.694 | 97.45x | +| 64 | 164.302 | 1.692 | 97.11x | +| 256 | 168.910 | 1.939 | 87.12x | + +Eager latency is nearly flat across these batch sizes because fixed Python and +kernel-launch overhead dominates, so its throughput still rises with batch. +The persistent-kernel latency is also nearly flat across this measured range. + +### Sequence scaling at B=64 + +| Sequence | Clean eager ms | Fused ms | Speedup | +|---:|---:|---:|---:| +| 50 | 42.754 | 1.727 | 24.75x | +| 200 | 164.302 | 1.692 | 97.11x | +| 1000 | 1,041.712 | 3.657 | 284.86x | + +The fused runtime grows with arithmetic rather than with Python and CUDA-launch +overhead, so its advantage increases for longer sequences. + +## Numerical-equivalence result + +The production-length check used identical weights, `B=8`, the production +thresholds, MSE, and TF32 disabled. + +| Quantity | Maximum absolute error | Relative L2 error | +|---|---:|---:| +| Output | 6.08e-6 | 1.34e-6 | +| Input gradient | 1.46e-7 | 1.50e-5 | +| `x2h.weight` gradient | 7.15e-7 | 8.60e-7 | +| `h2h.weight` gradient | 1.07e-7 | 6.16e-7 | +| `fc_out.weight` gradient | 4.77e-7 | 4.48e-7 | +| TCN parameter gradients | <=1.49e-8 | <=1.28e-7 | + +The absolute loss difference was `1.19e-7`. Additional checks covered sequence +lengths 1, 17, 50, 200, and 1000; thresholds `(0,0)` and `(.01,.05)`; custom +initial recurrent states; recurrent-state gradients; delta-statistics equality; +and a 19,662-sample inference sequence. At `T=1000`, output relative L2 error +was `2.44e-6` and all parameter-gradient relative errors remained below +`2.9e-6`. These differences come from reduction/activation ordering in FP32. + +## What was tried + +Rows other than the selected kernel are exploratory scratch experiments; the +committed benchmark directly reproduces the eager-versus-fused full-backbone +rows, while the candidate observations explain why those routes were not kept. + +| Candidate | Experiment | Decision | +|---|---|---| +| Remove diagnostic/dead work | Fixed `set_debug(0)`, removed two unused reductions, Python scalar thresholds, and the discarded outer hidden-state allocation. | Kept as output/gradient-equivalent portable cleanup. Diagnostic collection is now explicit. | +| Algebraic held-state rewrite | Mathematically telescoped delta accumulators into held-state projections. About 1.66x faster in the recurrent experiment; FP32 max output error about 5.2e-6. | Useful fallback idea, but far below the fused kernel's gain and not valid across QAT fake-quant boundaries. | +| `torch.compile(..., fullgraph=True, mode="reduce-overhead")` | The 200-step Python loop produced an enormous unrolled graph; compilation did not finish in a practical window on this host. PyTorch's prototype `scan` has no Inductor lowering in this version. | Rejected for this implementation. | +| cuDNN `nn.GRU` fast path | With both thresholds exactly zero, the delta accumulators telescope to a bias-free GRU. RNN-only: about 178.2 -> 1.12 ms (159x), max FP32 output error 5.84e-6 with TF32 off. | Excellent special case, but it cannot represent the production nonzero thresholds. The persistent kernel is faster here and supports both cases. | +| BF16/TF32 | Lower precision can accelerate dense GEMMs, but this tiny cell is launch-bound and threshold decisions can change near the boundary. | Not needed; fused FP32 already gives the large gain while minimizing trajectory changes. | +| Persistent custom recurrence | One Triton program owns each batch sequence; a reverse program implements BPTT. | **Selected.** Highest speed and supports nonzero thresholds. | + +## Implementation notes + +The forward kernel keeps `x_p`, `h`, `h_p`, `dm`, and `dm_nh` local while it +scans time. It fuses thresholding, both small projections, accumulator updates, +sigmoid/tanh gates, and the hidden update. It saves only the intermediates +needed by BPTT. + +The backward kernel scans time in reverse and emits input gradients plus the two +linear-output adjoints. Two final matrix multiplications reduce weight +gradients over batch and time. Inference under `no_grad` or `inference_mode` +uses a forward-only path and does not allocate the training workspace. Initial +Triton compilation is cache-dependent and took roughly 0.6 seconds on this +machine; it is a one-time cost per kernel specialization and is excluded from +steady-state timings. + +The fused path currently dispatches only for: + +- NVIDIA CUDA with Triton available; +- FP32 dense-float modules; +- one recurrent layer; +- input width up to 16 and hidden width up to 32. + +CPU, unsupported shapes/dtypes, multi-layer cells, and quantization-aware models +use the cleaned eager recurrence. QAT deliberately stays eager because its +fake-quantized Linear/Sigmoid/Tanh/Add/Mul boundaries are part of that model's +actual computation; bypassing or reassociating them would not be equivalent. +Temporal sparsity counters are disabled by default; pass +`--collect_delta_stats` to restore `SP_T_DX`, `SP_T_DH`, `SP_T_DV`, and +`HW_PARAM` training-log fields when that diagnostic overhead is wanted. +CUDA autocast deliberately falls back to eager so AMP keeps its original +fake/mixed-precision boundaries. The custom backward is explicitly +first-order-only; use `OPENDPD_DISABLE_TRITON_DELTAGRU=1` for higher-order +autograd, JVP/vmap-style transforms, or gradient-penalty/meta-learning code. + +## Reproduction + +```bash +.venv/bin/python benchmark/benchmark_tres_deltagru.py +``` + +Useful variants: + +```bash +.venv/bin/python benchmark/benchmark_tres_deltagru.py --batch-size 256 +.venv/bin/python benchmark/benchmark_tres_deltagru.py --sequence-length 1000 \ + --blocks 3 --reference-steps-per-block 1 --fused-steps-per-block 20 +``` + +Set `OPENDPD_DISABLE_TRITON_DELTAGRU=1` for normal application runs that should +force the portable eager path. The benchmark itself explicitly chooses each +implementation so it can compare them in one process. diff --git a/models.py b/models.py index 76da3b7..f1e2ad4 100644 --- a/models.py +++ b/models.py @@ -147,11 +147,14 @@ def __init__(self, input_size, hidden_size, num_layers, backbone_type, window_si pass def forward(self, x, h_0=None): - device = x.device batch_size = x.size(0) # NOTE: dim of x must be (batch, time, feat)/(N, T, F) - if h_0 is None: # Create initial hidden states if necessary - h_0 = torch.zeros(self.num_layers, batch_size, self.hidden_size).to(device) + if h_0 is None and self.backbone_type != 'tres_deltagru': + # Create directly on the input device. TRes-DeltaGRU owns five + # recurrent states internally and historically discarded this one. + h_0 = torch.zeros( + self.num_layers, batch_size, self.hidden_size, device=x.device + ) # Forward Propagate through the RNN out = self.backbone(x, h_0) diff --git a/modules/cuda_graph_training.py b/modules/cuda_graph_training.py new file mode 100644 index 0000000..cdcb3c7 --- /dev/null +++ b/modules/cuda_graph_training.py @@ -0,0 +1,377 @@ +"""Opt-in CUDA-graph training for the supported DPD cascade. + +Only the existing clean-eager forward, MSE loss, gradient zeroing, and backward +are captured. Batch copies, clipping, and optimizer updates remain ordinary +PyTorch operations so parameters and optimizer state can change in place +between replays. Every unsupported condition returns ``None`` for a strict +clean-eager fallback. +""" + +from __future__ import annotations + +import contextlib +import os +import threading +import weakref +from dataclasses import dataclass + +import torch +from torch import nn + +from backbones.cuda_graph_frozen_dgru import disable_cuda_graph_frozen_dgru + + +_DISABLE_ENV = "OPENDPD_DISABLE_CUDA_GRAPH_TRAINING" +_TRUE_VALUES = {"1", "true", "yes", "on"} +_CACHES = weakref.WeakKeyDictionary() +_CACHES_LOCK = threading.Lock() +_CAPTURE_FAILED = object() + + +@dataclass(frozen=True) +class CudaGraphTrainingResult: + """Result of one captured forward/loss/backward replay.""" + + loss: torch.Tensor + output: torch.Tensor + + +def _disabled() -> bool: + return os.getenv(_DISABLE_ENV, "").strip().lower() in _TRUE_VALUES + + +def _cuda_autocast_enabled() -> bool: + try: + return torch.is_autocast_enabled("cuda") + except TypeError: # pragma: no cover - compatibility with older PyTorch. + return torch.is_autocast_enabled() + + +def _tres_layers(module: nn.Module) -> tuple[nn.Module, ...]: + """Return only actual TRes recurrence layers, not lookalike attributes.""" + + from backbones.tres_deltagru import DeltaGRULayer + + return tuple( + child for child in module.modules() + if isinstance(child, DeltaGRULayer) + ) + + +@contextlib.contextmanager +def force_clean_eager_tres(module: nn.Module): + """Temporarily disable fused TRes arithmetic, restoring it afterward.""" + + layers = _tres_layers(module) + previous = tuple(layer.use_triton for layer in layers) + for layer in layers: + layer.use_triton = False + try: + yield + finally: + for layer, enabled in zip(layers, previous, strict=True): + layer.use_triton = enabled + + +def _supported_cascade(module: nn.Module) -> bool: + """Limit capture to the measured, state-free DPD/PA architecture.""" + + from backbones.dgru import DGRU + from backbones.tres_deltagru import TResDeltaGRU + from models import CascadedModel, CoreModel + + if not isinstance(module, CascadedModel): + return False + dpd = module.dpd_model + pa = module.pa_model + if not isinstance(dpd, CoreModel) or not isinstance(pa, CoreModel): + return False + if ( + dpd.backbone_type != "tres_deltagru" + or pa.backbone_type != "dgru" + or not isinstance(dpd.backbone, TResDeltaGRU) + or not isinstance(pa.backbone, DGRU) + or dpd.backbone.rnn.debug + or any(parameter.requires_grad for parameter in pa.parameters()) + ): + return False + return tuple(_tres_layers(module)) == (dpd.backbone.rnn,) + + +def _can_capture( + module: nn.Module, + features: torch.Tensor, + targets: torch.Tensor, + criterion: nn.Module, + parameters: tuple[torch.Tensor, ...], +) -> bool: + if ( + _disabled() + or not module.training + or not torch.is_grad_enabled() + or not isinstance(criterion, nn.MSELoss) + or criterion.reduction != "mean" + or not _supported_cascade(module) + or not parameters + or features.requires_grad + or targets.requires_grad + or not features.is_cuda + or not targets.is_cuda + or features.device != targets.device + or features.dtype != torch.float32 + or targets.dtype != torch.float32 + or not features.is_contiguous() + or not targets.is_contiguous() + or torch.version.cuda is None + or getattr(torch.version, "hip", None) is not None + or _cuda_autocast_enabled() + or not hasattr(torch.cuda, "CUDAGraph") + ): + return False + try: + if torch.cuda.is_current_stream_capturing(): + return False + except RuntimeError: + return False + + model_parameters = tuple(module.parameters()) + if any( + child._forward_hooks + or child._forward_pre_hooks + or child._backward_hooks + or child._backward_pre_hooks + for child in module.modules() + ): + return False + trainable = tuple( + parameter for parameter in model_parameters + if parameter.requires_grad + ) + if parameters != trainable: + return False + return all( + parameter.device == features.device + and parameter.dtype == torch.float32 + for parameter in model_parameters + ) + + +def _cache_key( + module: nn.Module, + features: torch.Tensor, + targets: torch.Tensor, + parameters: tuple[torch.Tensor, ...], +): + return ( + features.device.index, + features.dtype, + tuple(features.shape), + tuple(features.stride()), + tuple(targets.shape), + tuple(targets.stride()), + tuple(parameter.data_ptr() for parameter in module.parameters()), + tuple(parameter.data_ptr() for parameter in parameters), + ) + + +class _GraphCache: + def __init__(self): + self.entries = {} + self.capture_streams = {} + self.lock = threading.Lock() + + def get_or_create( + self, module, features, targets, criterion, parameters + ): + key = _cache_key(module, features, targets, parameters) + entry = self.entries.get(key) + if entry is _CAPTURE_FAILED: + return None + if entry is not None and entry.failed: + return None + if entry is not None and entry.is_valid(): + return entry + + # A simultaneous first call falls back rather than attempting a second + # capture of the same module and parameter storage. + if not self.lock.acquire(blocking=False): + return None + try: + entry = self.entries.get(key) + if entry is _CAPTURE_FAILED: + return None + if entry is not None and entry.failed: + return None + if entry is None or not entry.is_valid(): + try: + device_index = features.device.index + capture_stream = self.capture_streams.get(device_index) + if capture_stream is None: + capture_stream = torch.cuda.Stream( + device=features.device + ) + self.capture_streams[device_index] = capture_stream + entry = _CapturedTrainingStep( + module, features, targets, criterion, parameters, + capture_stream, + ) + except (RuntimeError, torch.cuda.OutOfMemoryError): + self.entries[key] = _CAPTURE_FAILED + return None + self.entries[key] = entry + return entry + finally: + self.lock.release() + + +class _CapturedTrainingStep: + def __init__( + self, module, example_features, example_targets, + criterion, parameters, capture_stream + ): + self.parameters = parameters + self.parameter_pointers = tuple( + parameter.data_ptr() for parameter in parameters + ) + self.lock = threading.Lock() + self.busy = False + self.failed = False + self.pending_event = None + self.pending_stream = None + + with torch.cuda.device(example_features.device), torch.enable_grad(): + self.capture_stream = capture_stream + self.capture_stream.wait_stream(torch.cuda.current_stream()) + with ( + force_clean_eager_tres(module), + disable_cuda_graph_frozen_dgru(), + torch.cuda.stream(self.capture_stream), + ): + self.static_features = example_features.detach().clone() + self.static_targets = example_targets.detach().clone() + # Initialize cuDNN/cuBLAS and persistent parameter-grad buffers + # on the exact stream that will own the capture. + for _ in range(2): + for parameter in parameters: + if parameter.grad is not None: + parameter.grad.zero_() + warm_output = module(self.static_features) + warm_loss = criterion(warm_output, self.static_targets) + warm_loss.backward() + del warm_output, warm_loss + + torch.cuda.current_stream().wait_stream(self.capture_stream) + torch.cuda.synchronize(example_features.device) + if any(parameter.grad is None for parameter in parameters): + raise RuntimeError( + "captured parameters must all receive gradients" + ) + + self.graph = torch.cuda.CUDAGraph() + with ( + force_clean_eager_tres(module), + disable_cuda_graph_frozen_dgru(), + torch.cuda.graph(self.graph, stream=self.capture_stream), + ): + for parameter in parameters: + parameter.grad.zero_() + self.static_output = module(self.static_features) + self.static_loss = criterion( + self.static_output, self.static_targets + ) + self.static_loss.backward() + + self.gradient_pointers = tuple( + parameter.grad.data_ptr() for parameter in parameters + ) + + def is_valid(self) -> bool: + return ( + not self.failed + and self.parameter_pointers == tuple( + parameter.data_ptr() for parameter in self.parameters + ) + and all( + parameter.grad is not None for parameter in self.parameters + ) + and self.gradient_pointers == tuple( + parameter.grad.data_ptr() for parameter in self.parameters + ) + ) + + def reserve(self) -> bool: + with self.lock: + if not self.is_valid() or self.busy: + return False + if self.pending_event is not None: + stream = torch.cuda.current_stream( + self.static_features.device + ) + same_stream = stream.cuda_stream == self.pending_stream + if not same_stream and not self.pending_event.query(): + return False + self.pending_event = None + self.pending_stream = None + self.busy = True + return True + + def release(self, *, failed: bool = False) -> None: + with self.lock: + self.failed = self.failed or failed + stream = torch.cuda.current_stream(self.static_features.device) + event = torch.cuda.Event() + event.record(stream) + self.pending_event = event + self.pending_stream = stream.cuda_stream + self.busy = False + + def run(self, module, features, targets): + if not self.reserve(): + return None + try: + self.static_features.copy_(features) + self.static_targets.copy_(targets) + with force_clean_eager_tres(module): + self.graph.replay() + # Each logged loss needs independent storage because replay updates + # the static scalar on the next batch. + result = CudaGraphTrainingResult( + loss=self.static_loss.detach().clone(), + output=self.static_output.detach(), + ) + except (RuntimeError, torch.cuda.OutOfMemoryError): + self.release(failed=True) + return None + self.release() + return result + + +def try_cuda_graph_training_step( + module: nn.Module, + features: torch.Tensor, + targets: torch.Tensor, + criterion: nn.Module, + parameters: tuple[torch.Tensor, ...], +) -> CudaGraphTrainingResult | None: + """Replay one captured training body, or return ``None`` for fallback.""" + + if not _can_capture(module, features, targets, criterion, parameters): + return None + with _CACHES_LOCK: + cache = _CACHES.get(module) + if cache is None: + cache = _GraphCache() + _CACHES[module] = cache + step = cache.get_or_create( + module, features, targets, criterion, parameters + ) + if step is None: + return None + return step.run(module, features, targets) + + +def clear_cuda_graph_training_cache() -> None: + """Drop all captured training steps; intended primarily for tests.""" + + with _CACHES_LOCK: + _CACHES.clear() diff --git a/modules/data_collector.py b/modules/data_collector.py index e0ec4e5..d65f55e 100644 --- a/modules/data_collector.py +++ b/modules/data_collector.py @@ -233,18 +233,40 @@ def __getitem__(self, idx): class IQFrameDataset(Dataset): def __init__(self, features, targets, frame_length, stride=1): # Convert segments into frames - self.features = torch.Tensor(self.get_frames(features, frame_length, stride)) - self.targets = torch.Tensor(self.get_frames(targets, frame_length, stride)) + # ``torch.Tensor(data)`` historically converts every input dtype to + # float32. Keep that behavior while forcing independent storage. + self.features = torch.tensor( + self.get_frames(features, frame_length, stride), dtype=torch.float32 + ) + self.targets = torch.tensor( + self.get_frames(targets, frame_length, stride), dtype=torch.float32 + ) @staticmethod def get_frames(sequence, frame_length, stride_length): - frames = [] - sequence_length = len(sequence) - num_frames = (sequence_length - frame_length) // stride_length + 1 - for i in range(num_frames): - frame = sequence[i * stride_length: i * stride_length + frame_length] - frames.append(frame) - return np.stack(frames) + sequence = np.asarray(sequence) + if frame_length <= 0: + raise ValueError("frame_length must be positive") + if stride_length <= 0: + raise ValueError("stride_length must be positive") + if len(sequence) < frame_length: + raise ValueError("frame_length cannot exceed the sequence length") + + # sliding_window_view creates every overlapping frame at once. For a + # two-dimensional IQ sequence it initially places the window axis last + # (N, IQ, frame); move it behind the sample axis to recover the exact + # historical (N, frame, IQ) order, then apply the requested stride. + frames = np.lib.stride_tricks.sliding_window_view( + sequence, window_shape=frame_length, axis=0 + ) + if sequence.ndim > 1: + frames = np.moveaxis(frames, -1, 1) + frames = frames[::stride_length] + + # Window arrays alias the source by construction. Return a contiguous + # copy so neither the dataset nor callers observe storage aliasing. + return np.array(frames, copy=True, order='C') + def __len__(self): return len(self.features) diff --git a/modules/paths.py b/modules/paths.py index 5c45ccd..f205b26 100644 --- a/modules/paths.py +++ b/modules/paths.py @@ -51,8 +51,9 @@ def gen_log_stat(args: argparse.Namespace, elapsed_time, net, optimizer, epoch, log_stat['THX'] = net.dpd_model.backbone.thx log_stat['THH'] = net.dpd_model.backbone.thh - # Add sparsity metrics if available - if 'delta' in net.dpd_model.backbone_type: + # Statistics are opt-in because collecting them in an eager + # recurrent cell adds reductions at every timestep. + if getattr(net.dpd_model.backbone.rnn, 'debug', 0): sparsity_metrics = net.dpd_model.backbone.get_temporal_sparsity() sparsity_log = {f'{k}': v for k, v in sparsity_metrics.items()} log_stat.update(sparsity_log) @@ -115,4 +116,4 @@ def gen_pa_model_id(args): list_pamodel_id += list(item) pa_model_id = '_'.join(list_pamodel_id) pa_model_id = 'PA_' + pa_model_id - return pa_model_id \ No newline at end of file + return pa_model_id diff --git a/modules/train_funcs.py b/modules/train_funcs.py index 1fa1419..a1962ee 100644 --- a/modules/train_funcs.py +++ b/modules/train_funcs.py @@ -2,6 +2,8 @@ __license__ = "Apache-2.0 License" __email__ = "yizhuo.wu@tudelft.nl, chang.gao@tudelft.nl" +import contextlib + import numpy as np import torch import torch.nn as nn @@ -13,41 +15,82 @@ import argparse +def _mean_losses(losses): + """Return the historical NumPy mean with one device-to-host transfer. + + ``Tensor.item()`` used to synchronize the accelerator once per batch. A + detached scalar keeps exactly the same stored value, so we can transfer all + batch losses together and still let NumPy perform the same float mean as + before. + """ + if not losses: + # Preserve NumPy's historical empty-loader result (NaN). + return np.mean([]) + return np.mean(torch.stack(losses).cpu().tolist()) + + def net_train(log: Dict[str, Any], net: nn.Module, dataloader: DataLoader, optimizer: Optimizer, criterion: Callable, grad_clip_val: float, - device: torch.device): + device: torch.device, + cuda_graph_training: bool = False): # Set Network to Training Mode net = net.train() # Statistics losses = [] + # The optimizer contains only trainable parameters in the standard + # pipeline. Materialize this tuple once per epoch rather than walking the + # complete cascaded model for every batch. + trainable_params = tuple( + parameter + for group in optimizer.param_groups + for parameter in group['params'] + if parameter.requires_grad + ) + non_blocking = device.type == 'cuda' + if cuda_graph_training: + from modules.cuda_graph_training import ( + force_clean_eager_tres, + try_cuda_graph_training_step, + ) # Iterate through batches for features, targets in tqdm(dataloader): # Move features and targets to the proper device - features = features.to(device) - targets = targets.to(device) - # Initialize all gradients to zero - optimizer.zero_grad() - # Forward Propagation - out = net(features) - # Calculate the Loss Function - loss = criterion(out, targets) - # Backward propagation - loss.backward() + features = features.to(device, non_blocking=non_blocking) + targets = targets.to(device, non_blocking=non_blocking) + graph_result = None + if cuda_graph_training: + graph_result = try_cuda_graph_training_step( + net, features, targets, criterion, trainable_params + ) + if graph_result is None: + # Strict opt-in fallback keeps the same clean-eager TRes + # arithmetic as the captured body. The original dispatch flag is + # restored immediately afterward, including for evaluation. + context = ( + force_clean_eager_tres(net) + if cuda_graph_training else contextlib.nullcontext() + ) + with context: + optimizer.zero_grad(set_to_none=True) + out = net(features) + loss = criterion(out, targets) + loss.backward() + else: + loss = graph_result.loss # Gradient clipping if grad_clip_val != 0: - nn.utils.clip_grad_norm_(net.parameters(), grad_clip_val) + nn.utils.clip_grad_norm_(trainable_params, grad_clip_val) # Update parameters optimizer.step() - # Detach loss from the graph indicating the end of forward propagation - loss.detach() - # Get losses - losses.append(loss.item()) + # Keep only the scalar value, not its graph. The complete vector is + # copied to the host once after the epoch to avoid a sync per batch. + losses.append(loss.detach()) # Average loss - loss = np.mean(losses) + loss = _mean_losses(losses) # Save Statistics log['loss'] = loss # End of Training Epoch @@ -60,30 +103,32 @@ def net_eval(log: Dict, criterion: Callable, device: torch.device): net = net.eval() - with torch.no_grad(): + with torch.inference_mode(): # Statistics losses = [] prediction = [] ground_truth = [] + non_blocking = device.type == 'cuda' # Batch Iteration for features, targets in tqdm(dataloader): # Move features and targets to the proper device - features = features.to(device) - targets = targets.to(device) + features = features.to(device, non_blocking=non_blocking) + targets = targets.to(device, non_blocking=non_blocking) # Forward Propagation outputs = net(features) # Calculate loss function loss = criterion(outputs, targets) # Collect prediction and ground truth for metric calculation - prediction.append(outputs.cpu()) - ground_truth.append(targets.cpu()) + prediction.append(outputs) + ground_truth.append(targets) # Collect losses to calculate the average loss per epoch - losses.append(loss.item()) + losses.append(loss) # Average loss per epoch - avg_loss = np.mean(losses) - # Prediction and Ground Truth - prediction = torch.cat(prediction, dim=0).numpy() - ground_truth = torch.cat(ground_truth, dim=0).numpy() + avg_loss = _mean_losses(losses) + # Concatenate before copying so evaluation performs one host transfer per + # result tensor instead of one transfer per batch. + prediction = torch.cat(prediction, dim=0).cpu().numpy() + ground_truth = torch.cat(ground_truth, dim=0).cpu().numpy() # Save Statistics log['loss'] = avg_loss # End of Evaluation Epoch diff --git a/opendpd/api.py b/opendpd/api.py index 43348c9..df437f6 100644 --- a/opendpd/api.py +++ b/opendpd/api.py @@ -25,6 +25,21 @@ from arguments import get_arguments +def _append_cli_kwargs(kwargs: Dict[str, Any]) -> None: + """Append keyword options while respecting argparse boolean flags.""" + + boolean_flags = { + 'use_segments', 'quant', 'collect_delta_stats', + 'cuda_graph_training', 'plot', + } + for key, value in kwargs.items(): + if isinstance(value, bool) and key in boolean_flags: + if value: + sys.argv.append(f'--{key}') + elif value is not None: + sys.argv.extend([f'--{key}', str(value)]) + + def train_pa( dataset_name: Optional[str] = None, dataset_path: Optional[str] = None, @@ -98,8 +113,7 @@ def train_pa( sys.argv.extend(['--plot_every', str(plot_every)]) # Add any additional keyword arguments - for key, value in kwargs.items(): - sys.argv.extend([f'--{key}', str(value)]) + _append_cli_kwargs(kwargs) # Create project and run training proj = Project() @@ -129,6 +143,8 @@ def train_dpd( thh: float = 0.0, plot: bool = False, plot_every: int = 1, + collect_delta_stats: bool = False, + cuda_graph_training: bool = False, **kwargs ) -> Dict[str, Any]: """ @@ -151,6 +167,8 @@ def train_dpd( thh: Threshold for hidden state deltas (for delta-based models) plot: Enable plot generation during training plot_every: Generate per-epoch plots every N epochs + collect_delta_stats: Collect temporal sparsity diagnostics during training + cuda_graph_training: Opt in to guarded CUDA-graph DPD training **kwargs: Additional arguments passed to the training configuration Returns: @@ -188,13 +206,16 @@ def train_dpd( sys.argv.extend(['--seed', str(seed)]) sys.argv.extend(['--thx', str(thx)]) sys.argv.extend(['--thh', str(thh)]) + if collect_delta_stats: + sys.argv.append('--collect_delta_stats') + if cuda_graph_training: + sys.argv.append('--cuda_graph_training') if plot: sys.argv.append('--plot') sys.argv.extend(['--plot_every', str(plot_every)]) # Add any additional keyword arguments - for key, value in kwargs.items(): - sys.argv.extend([f'--{key}', str(value)]) + _append_cli_kwargs(kwargs) # Create project and run training proj = Project() @@ -258,8 +279,7 @@ def run_dpd( sys.argv.append('--plot') # Add any additional keyword arguments - for key, value in kwargs.items(): - sys.argv.extend([f'--{key}', str(value)]) + _append_cli_kwargs(kwargs) # Create project and run DPD proj = Project() @@ -318,8 +338,7 @@ def plot_dpd( sys.argv.extend(['--DPD_hidden_size', str(DPD_hidden_size)]) sys.argv.extend(['--accelerator', accelerator]) - for key, value in kwargs.items(): - sys.argv.extend([f'--{key}', str(value)]) + _append_cli_kwargs(kwargs) proj = Project() plot_module.main(proj) @@ -571,4 +590,3 @@ def run(self, **kwargs): config['dataset_path'] = self.dataset_path return run_dpd(**config) - diff --git a/project.py b/project.py index 9f2878c..1823270 100644 --- a/project.py +++ b/project.py @@ -216,9 +216,19 @@ def build_dataloaders(self): test_set = IQSegmentDataset(X_test, y_test, nperseg=self.args.nperseg) # Define PyTorch Dataloaders - train_loader = DataLoader(train_set, batch_size=self.batch_size, shuffle=True) - val_loader = DataLoader(val_set, batch_size=self.batch_size_eval, shuffle=False) - test_loader = DataLoader(test_set, batch_size=self.batch_size_eval, shuffle=False) + pin_memory = self.device.type == 'cuda' + train_loader = DataLoader( + train_set, batch_size=self.batch_size, shuffle=True, + pin_memory=pin_memory + ) + val_loader = DataLoader( + val_set, batch_size=self.batch_size_eval, shuffle=False, + pin_memory=pin_memory + ) + test_loader = DataLoader( + test_set, batch_size=self.batch_size_eval, shuffle=False, + pin_memory=pin_memory + ) return (train_loader, val_loader, test_loader), input_size @@ -255,18 +265,27 @@ def build_criterion(self): raise AttributeError('Please use a valid loss function. Check argument.py.') def build_optimizer(self, net: nn.Module): + # Frozen PA parameters in a cascaded DPD model never receive gradients; + # excluding them avoids needless optimizer and clipping traversal while + # leaving the DPD updates unchanged. + trainable_params = tuple( + parameter for parameter in net.parameters() if parameter.requires_grad + ) + if not trainable_params: + raise ValueError("Cannot build an optimizer without trainable parameters") + # Optimizer if self.opt_type == 'adam': - optimizer = optim.Adam(net.parameters(), lr=self.lr) + optimizer = optim.Adam(trainable_params, lr=self.lr) elif self.opt_type == 'sgd': - optimizer = optim.SGD(net.parameters(), lr=self.lr, momentum=0.9) + optimizer = optim.SGD(trainable_params, lr=self.lr, momentum=0.9) elif self.opt_type == 'rmsprop': - optimizer = optim.RMSprop(net.parameters(), lr=self.lr) + optimizer = optim.RMSprop(trainable_params, lr=self.lr) elif self.opt_type == 'adamw': - optimizer = optim.AdamW(net.parameters(), lr=self.lr) + optimizer = optim.AdamW(trainable_params, lr=self.lr) elif self.opt_type == 'adabound': import adabound # Run pip install adabound (https://github.com/Luolc/AdaBound) - optimizer = adabound.AdaBound(net.parameters(), lr=self.lr, final_lr=0.1) + optimizer = adabound.AdaBound(trainable_params, lr=self.lr, final_lr=0.1) else: raise RuntimeError('Please use a valid optimizer.') @@ -352,7 +371,8 @@ def train(self, net: nn.Module, criterion: Callable, optimizer: optim.Optimizer, criterion=criterion, dataloader=train_loader, grad_clip_val=self.grad_clip_val, - device=self.device) + device=self.device, + cuda_graph_training=self.cuda_graph_training) # ----------- # Validation @@ -560,4 +580,4 @@ def train(self, net: nn.Module, criterion: Callable, optimizer: optim.Optimizer, print(f"Warning: GIF generation failed: {e}") print("Training Completed...") - print(" ") \ No newline at end of file + print(" ") diff --git a/steps/train_dpd.py b/steps/train_dpd.py index 3cfefd3..be92811 100644 --- a/steps/train_dpd.py +++ b/steps/train_dpd.py @@ -50,6 +50,8 @@ def main(proj: Project): thh=proj.thh) net_dpd = get_quant_model(proj, net_dpd) + if proj.collect_delta_stats and hasattr(net_dpd.backbone, 'set_debug'): + net_dpd.backbone.set_debug(1) print("::: DPD Model: ", net_dpd) n_net_dpd_params = count_net_params(net_dpd) diff --git a/tests/test_api.py b/tests/test_api.py index 04e794f..86b65a0 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -84,6 +84,30 @@ def test_rejects_wrong_columns(self, tmp_path): class TestApiTraining: + def test_cuda_graph_training_flag_is_explicit_opt_in(self, preserved_argv): + from arguments import get_arguments + + sys.argv = ['opendpd'] + assert get_arguments().cuda_graph_training is False + sys.argv = ['opendpd', '--cuda_graph_training'] + assert get_arguments().cuda_graph_training is True + + def test_boolean_kwargs_are_emitted_as_flags(self, preserved_argv): + from opendpd import api + + sys.argv = ['opendpd'] + api._append_cli_kwargs({ + "collect_delta_stats": True, + "cuda_graph_training": True, + "plot": False, + "frame_stride": 16, + "unused": None, + }) + assert sys.argv == [ + 'opendpd', '--collect_delta_stats', '--cuda_graph_training', + '--frame_stride', '16' + ] + def test_train_pa_smoke(self, tmp_path, monkeypatch, preserved_argv): from pathlib import Path diff --git a/tests/test_cuda_graph_frozen_dgru.py b/tests/test_cuda_graph_frozen_dgru.py new file mode 100644 index 0000000..18ee09a --- /dev/null +++ b/tests/test_cuda_graph_frozen_dgru.py @@ -0,0 +1,167 @@ +"""Correctness and fallback tests for frozen-DGRU CUDA-graph replay.""" + +import copy + +import pytest +import torch + +from backbones.cuda_graph_frozen_dgru import ( + clear_cuda_graph_frozen_dgru_cache, +) +from backbones.dgru import DGRU + + +requires_nvidia_cuda = pytest.mark.skipif( + not torch.cuda.is_available() + or torch.version.cuda is None + or getattr(torch.version, "hip", None) is not None, + reason="requires NVIDIA CUDA", +) + + +def _build_frozen(device="cpu"): + model = DGRU(hidden_size=23, output_size=2, num_layers=1) + model = model.to(device).train() + model.reset_parameters() + for parameter in model.parameters(): + parameter.requires_grad_(False) + return model + + +def _is_graph_replay(output): + return "FrozenDGRUReplayFunction" in type(output.grad_fn).__name__ + + +def test_cpu_fallback_preserves_module_and_state_dict(monkeypatch): + clear_cuda_graph_frozen_dgru_cache() + monkeypatch.delenv("OPENDPD_DISABLE_CUDA_GRAPH_FROZEN_DGRU", raising=False) + model = _build_frozen() + state_keys = tuple(model.state_dict()) + module_names = tuple(name for name, _ in model.named_modules()) + features = torch.randn(2, 7, 2, requires_grad=True) + initial_state = torch.zeros(1, 2, 23) + + output = model(features, initial_state) + output.square().mean().backward() + + assert not _is_graph_replay(output) + assert tuple(model.state_dict()) == state_keys + assert tuple(name for name, _ in model.named_modules()) == module_names + assert torch.isfinite(features.grad).all() + + +def test_trainable_dgru_uses_eager_fallback(): + model = DGRU(hidden_size=5, output_size=2, num_layers=1).train() + features = torch.randn(2, 4, 2, requires_grad=True) + output = model(features, torch.zeros(1, 2, 5)) + assert not _is_graph_replay(output) + output.sum().backward() + assert all(parameter.grad is not None for parameter in model.parameters()) + + +@requires_nvidia_cuda +def test_cuda_replay_is_bitwise_exact_and_state_dict_stable(monkeypatch): + torch.manual_seed(123) + clear_cuda_graph_frozen_dgru_cache() + model = _build_frozen("cuda") + state_before = copy.deepcopy(model.state_dict()) + module_names = tuple(name for name, _ in model.named_modules()) + initial_state = torch.randn(1, 4, 23, device="cuda") * 0.1 + + for _ in range(2): + features = torch.randn(4, 37, 2, device="cuda") + output_gradient = torch.randn(4, 37, 2, device="cuda") + monkeypatch.setenv("OPENDPD_DISABLE_CUDA_GRAPH_FROZEN_DGRU", "1") + reference_input = features.clone().requires_grad_() + reference_output = model(reference_input, initial_state) + reference_output.backward(output_gradient) + + monkeypatch.delenv( + "OPENDPD_DISABLE_CUDA_GRAPH_FROZEN_DGRU", raising=False + ) + replay_input = features.clone().requires_grad_() + replay_output = model(replay_input, initial_state) + replay_output.backward(output_gradient) + torch.cuda.synchronize() + + assert _is_graph_replay(replay_output) + assert torch.equal(replay_output, reference_output) + assert torch.equal(replay_input.grad, reference_input.grad) + + assert tuple(model.state_dict()) == tuple(state_before) + assert tuple(name for name, _ in model.named_modules()) == module_names + for name, value in model.state_dict().items(): + assert torch.equal(value, state_before[name]) + + +@requires_nvidia_cuda +def test_busy_replay_and_opt_out_fall_back_safely(monkeypatch): + torch.manual_seed(321) + clear_cuda_graph_frozen_dgru_cache() + monkeypatch.delenv("OPENDPD_DISABLE_CUDA_GRAPH_FROZEN_DGRU", raising=False) + model = _build_frozen("cuda") + initial_state = torch.zeros(1, 2, 23, device="cuda") + + first_input = torch.randn(2, 17, 2, device="cuda", requires_grad=True) + first_output = model(first_input, initial_state) + assert _is_graph_replay(first_output) + + # The first graph still owns its training reserve until backward. A + # second in-flight call must use independent eager buffers. + second_input = torch.randn(2, 17, 2, device="cuda", requires_grad=True) + second_output = model(second_input, initial_state) + assert not _is_graph_replay(second_output) + second_output.sum().backward() + first_output.sum().backward() + + monkeypatch.setenv("OPENDPD_DISABLE_CUDA_GRAPH_FROZEN_DGRU", "true") + opt_out_input = torch.randn(2, 17, 2, device="cuda", requires_grad=True) + opt_out_output = model(opt_out_input, initial_state) + assert not _is_graph_replay(opt_out_output) + opt_out_output.sum().backward() + assert torch.isfinite(first_input.grad).all() + assert torch.isfinite(second_input.grad).all() + assert torch.isfinite(opt_out_input.grad).all() + + +@requires_nvidia_cuda +def test_autocast_and_eval_use_eager_fallback(monkeypatch): + clear_cuda_graph_frozen_dgru_cache() + monkeypatch.delenv("OPENDPD_DISABLE_CUDA_GRAPH_FROZEN_DGRU", raising=False) + model = _build_frozen("cuda") + initial_state = torch.zeros(1, 2, 23, device="cuda") + features = torch.randn(2, 7, 2, device="cuda", requires_grad=True) + + with torch.autocast("cuda", dtype=torch.float16): + autocast_output = model(features, initial_state) + assert not _is_graph_replay(autocast_output) + + noncontiguous = torch.randn( + 2, 2, 7, device="cuda", requires_grad=True + ).transpose(1, 2) + noncontiguous_output = model(noncontiguous, initial_state) + assert not _is_graph_replay(noncontiguous_output) + + with torch.no_grad(): + no_grad_output = model(features, initial_state) + assert not no_grad_output.requires_grad + + model.eval() + eval_output = model(features, initial_state) + assert not _is_graph_replay(eval_output) + + +@requires_nvidia_cuda +def test_higher_order_gradient_fails_loudly(monkeypatch): + clear_cuda_graph_frozen_dgru_cache() + monkeypatch.delenv("OPENDPD_DISABLE_CUDA_GRAPH_FROZEN_DGRU", raising=False) + model = _build_frozen("cuda") + features = torch.randn(1, 3, 2, device="cuda", requires_grad=True) + initial_state = torch.zeros(1, 1, 23, device="cuda") + + with pytest.raises(RuntimeError, match="first-order training only"): + torch.autograd.grad( + model(features, initial_state).sum(), + features, + create_graph=True, + ) diff --git a/tests/test_cuda_graph_training.py b/tests/test_cuda_graph_training.py new file mode 100644 index 0000000..594e0c2 --- /dev/null +++ b/tests/test_cuda_graph_training.py @@ -0,0 +1,236 @@ +"""Tests for guarded whole-cascade CUDA-graph training.""" + +import contextlib +import copy +import io + +import pytest +import torch +from torch.utils.data import DataLoader, TensorDataset + +import modules.cuda_graph_training as graph_training +from backbones.cuda_graph_frozen_dgru import disable_cuda_graph_frozen_dgru +from models import CascadedModel, CoreModel +from modules.cuda_graph_training import ( + clear_cuda_graph_training_cache, + force_clean_eager_tres, + try_cuda_graph_training_step, +) +from modules.train_funcs import net_train + + +requires_nvidia_cuda = pytest.mark.skipif( + not torch.cuda.is_available() + or torch.version.cuda is None + or getattr(torch.version, "hip", None) is not None, + reason="requires NVIDIA CUDA", +) + + +def _build_cascade(device="cpu"): + with contextlib.redirect_stdout(io.StringIO()): + dpd = CoreModel( + 2, 15, 1, "tres_deltagru", thx=0.01, thh=0.05 + ) + pa = CoreModel(2, 23, 1, "dgru") + cascade = CascadedModel(dpd, pa) + cascade.freeze_pa_model() + return cascade.to(device).train() + + +def _trainable(module): + return tuple( + parameter for parameter in module.parameters() + if parameter.requires_grad + ) + + +def test_cpu_opt_in_falls_back_cleanly_and_restores_dispatch(): + torch.manual_seed(301) + clear_cuda_graph_training_cache() + reference = _build_cascade() + candidate = copy.deepcopy(reference) + state_keys = tuple(candidate.state_dict()) + module_names = tuple(name for name, _ in candidate.named_modules()) + features = torch.randn(4, 5, 2) + targets = torch.randn(4, 5, 2) + loader = DataLoader( + TensorDataset(features, targets), batch_size=2, shuffle=False + ) + reference_optimizer = torch.optim.AdamW(_trainable(reference), lr=5e-4) + candidate_optimizer = torch.optim.AdamW(_trainable(candidate), lr=5e-4) + criterion = torch.nn.MSELoss() + + reference_log = {} + with force_clean_eager_tres(reference): + net_train( + reference_log, reference, loader, reference_optimizer, + criterion, 200.0, torch.device("cpu") + ) + candidate_log = {} + original_dispatch = candidate.dpd_model.backbone.rnn.use_triton + observed_dispatch = [] + hook = candidate.dpd_model.backbone.rnn.register_forward_pre_hook( + lambda recurrent, _inputs: observed_dispatch.append( + recurrent.use_triton + ) + ) + net_train( + candidate_log, candidate, loader, candidate_optimizer, + criterion, 200.0, torch.device("cpu"), + cuda_graph_training=True, + ) + hook.remove() + + assert candidate_log == reference_log + assert observed_dispatch and not any(observed_dispatch) + assert candidate.dpd_model.backbone.rnn.use_triton is original_dispatch + assert tuple(candidate.state_dict()) == state_keys + assert tuple(name for name, _ in candidate.named_modules()) == module_names + for expected, actual in zip( + reference.parameters(), candidate.parameters(), strict=True + ): + assert torch.equal(actual, expected) + + +def _snapshot(module, parameters, optimizer, output, loss): + return { + "output": output.detach().clone(), + "loss": loss.detach().clone(), + "gradients": [ + parameter.grad.detach().clone() for parameter in parameters + ], + "parameters": [parameter.detach().clone() for parameter in parameters], + "optimizer": [ + { + key: ( + value.detach().clone() + if torch.is_tensor(value) else value + ) + for key, value in optimizer.state[parameter].items() + } + for parameter in parameters + ], + "state_keys": tuple(module.state_dict()), + } + + +def _run_eager_trajectory(module, batches, targets): + parameters = _trainable(module) + optimizer = torch.optim.AdamW(parameters, lr=5e-4) + criterion = torch.nn.MSELoss() + output = loss = None + for features, target in zip(batches, targets, strict=True): + optimizer.zero_grad(set_to_none=True) + with force_clean_eager_tres(module), disable_cuda_graph_frozen_dgru(): + output = module(features) + loss = criterion(output, target) + loss.backward() + torch.nn.utils.clip_grad_norm_(parameters, 200.0) + optimizer.step() + return _snapshot(module, parameters, optimizer, output, loss) + + +def _run_graph_trajectory(module, batches, targets): + parameters = _trainable(module) + optimizer = torch.optim.AdamW(parameters, lr=5e-4) + criterion = torch.nn.MSELoss() + output = loss = None + original_dispatch = module.dpd_model.backbone.rnn.use_triton + for features, target in zip(batches, targets, strict=True): + result = try_cuda_graph_training_step( + module, features, target, criterion, parameters + ) + assert result is not None + assert module.dpd_model.backbone.rnn.use_triton is original_dispatch + output = result.output.clone() + loss = result.loss + torch.nn.utils.clip_grad_norm_(parameters, 200.0) + optimizer.step() + return _snapshot(module, parameters, optimizer, output, loss) + + +def _max_abs(left, right): + return max( + (first - second).abs().max().item() + for first, second in zip(left, right, strict=True) + ) + + +def _optimizer_max_abs(left, right): + differences = [] + for first, second in zip(left, right, strict=True): + assert first.keys() == second.keys() + for key in first: + if torch.is_tensor(first[key]): + differences.append( + (first[key] - second[key]).abs().max().item() + ) + else: + assert first[key] == second[key] + return max(differences, default=0.0) + + +@requires_nvidia_cuda +def test_cuda_ten_step_drift_is_within_eager_repeat_envelope(monkeypatch): + torch.manual_seed(401) + clear_cuda_graph_training_cache() + base = _build_cascade("cuda") + eager_first = copy.deepcopy(base) + eager_second = copy.deepcopy(base) + graphed = copy.deepcopy(base) + for module in (eager_first, eager_second, graphed): + module.pa_model.backbone.rnn.flatten_parameters() + generator = torch.Generator(device="cuda").manual_seed(402) + batch_sizes = [4, 3] * 5 + batches = [ + torch.randn(size, 17, 2, device="cuda", generator=generator) + for size in batch_sizes + ] + targets = [ + torch.randn(size, 17, 2, device="cuda", generator=generator) + for size in batch_sizes + ] + + first = _run_eager_trajectory(eager_first, batches, targets) + second = _run_eager_trajectory(eager_second, batches, targets) + capture_count = 0 + original_init = graph_training._CapturedTrainingStep.__init__ + + def counted_init(instance, *args, **kwargs): + nonlocal capture_count + capture_count += 1 + original_init(instance, *args, **kwargs) + + monkeypatch.setattr( + graph_training._CapturedTrainingStep, "__init__", counted_init + ) + candidate = _run_graph_trajectory(graphed, batches, targets) + torch.cuda.synchronize() + + assert candidate["state_keys"] == first["state_keys"] + assert capture_count == 2 + comparisons = ( + ( + (first["output"] - candidate["output"]).abs().max().item(), + (first["output"] - second["output"]).abs().max().item(), + ), + ( + abs((first["loss"] - candidate["loss"]).item()), + abs((first["loss"] - second["loss"]).item()), + ), + ( + _max_abs(first["gradients"], candidate["gradients"]), + _max_abs(first["gradients"], second["gradients"]), + ), + ( + _max_abs(first["parameters"], candidate["parameters"]), + _max_abs(first["parameters"], second["parameters"]), + ), + ( + _optimizer_max_abs(first["optimizer"], candidate["optimizer"]), + _optimizer_max_abs(first["optimizer"], second["optimizer"]), + ), + ) + for candidate_error, eager_repeat_error in comparisons: + assert candidate_error <= eager_repeat_error diff --git a/tests/test_training_pipeline_optimizations.py b/tests/test_training_pipeline_optimizations.py new file mode 100644 index 0000000..c48dc83 --- /dev/null +++ b/tests/test_training_pipeline_optimizations.py @@ -0,0 +1,221 @@ +"""Equivalence checks for the optimized data and epoch plumbing.""" + +from copy import deepcopy +from types import SimpleNamespace + +import numpy as np +import pytest +import torch +from torch import nn +from torch.utils.data import DataLoader, TensorDataset + +from modules.data_collector import IQFrameDataset +from modules.train_funcs import net_eval, net_train +from project import Project + + +def _reference_frames(sequence, frame_length, stride): + num_frames = (len(sequence) - frame_length) // stride + 1 + return np.stack([ + sequence[index * stride:index * stride + frame_length] + for index in range(num_frames) + ]) + + +@pytest.mark.parametrize("dtype", [np.float32, np.float64, np.int32]) +@pytest.mark.parametrize("stride", [1, 2, 4]) +def test_vectorized_frames_match_reference_and_do_not_alias(dtype, stride): + sequence = np.arange(34, dtype=dtype).reshape(17, 2) + expected = _reference_frames(sequence, frame_length=5, stride=stride) + + actual = IQFrameDataset.get_frames( + sequence, frame_length=5, stride_length=stride + ) + + assert np.array_equal(actual, expected) + assert actual.flags.c_contiguous + assert not np.shares_memory(actual, sequence) + + sequence[...] = 0 + assert np.array_equal(actual, expected) + + +def test_frame_dataset_preserves_values_order_and_independent_storage(): + features = np.arange(40, dtype=np.float64).reshape(20, 2) / 7 + targets = -features.copy() + expected_features = torch.Tensor(_reference_frames(features, 6, 3)) + expected_targets = torch.Tensor(_reference_frames(targets, 6, 3)) + + dataset = IQFrameDataset(features, targets, frame_length=6, stride=3) + features[...] = 99 + targets[...] = 99 + + assert dataset.features.dtype == torch.float32 + assert dataset.targets.dtype == torch.float32 + assert torch.equal(dataset.features, expected_features) + assert torch.equal(dataset.targets, expected_targets) + + +class _FrozenTail(nn.Module): + """Tiny analogue of a trainable DPD followed by a frozen PA.""" + + def __init__(self): + super().__init__() + self.trainable = nn.Linear(3, 4) + self.frozen = nn.Linear(4, 2) + for parameter in self.frozen.parameters(): + parameter.requires_grad_(False) + + def forward(self, inputs): + return self.frozen(torch.tanh(self.trainable(inputs))) + + +def _reference_train( + log, net, dataloader, optimizer, criterion, grad_clip_val +): + """The pre-optimization epoch loop, retained only as a test oracle.""" + net.train() + losses = [] + for features, targets in dataloader: + features = features.to(torch.device("cpu")) + targets = targets.to(torch.device("cpu")) + optimizer.zero_grad() + loss = criterion(net(features), targets) + loss.backward() + if grad_clip_val != 0: + nn.utils.clip_grad_norm_(net.parameters(), grad_clip_val) + optimizer.step() + loss.detach() + losses.append(loss.item()) + log["loss"] = np.mean(losses) + return net + + +def _build_project_optimizer(net): + project = Project.__new__(Project) + project.opt_type = "adamw" + project.lr = 2e-3 + project.decay_factor = 0.5 + project.patience = 2 + project.lr_end = 1e-7 + return project.build_optimizer(net)[0] + + +@pytest.mark.parametrize("num_batches", [1, 4]) +def test_train_epoch_matches_original_updates_and_logged_loss(num_batches): + torch.manual_seed(71) + features = torch.randn(num_batches * 3, 3) + targets = torch.randn(num_batches * 3, 2) + dataloader = DataLoader( + TensorDataset(features, targets), batch_size=3, shuffle=False + ) + + reference_net = _FrozenTail() + optimized_net = deepcopy(reference_net) + reference_optimizer = torch.optim.AdamW( + reference_net.parameters(), lr=2e-3 + ) + optimized_optimizer = _build_project_optimizer(optimized_net) + + optimized_parameters = { + id(parameter) + for group in optimized_optimizer.param_groups + for parameter in group["params"] + } + assert optimized_parameters == { + id(parameter) for parameter in optimized_net.parameters() + if parameter.requires_grad + } + + reference_log = {} + optimized_log = {} + criterion = nn.MSELoss() + _reference_train( + reference_log, reference_net, dataloader, reference_optimizer, + criterion, grad_clip_val=0.7 + ) + net_train( + optimized_log, optimized_net, dataloader, optimized_optimizer, + criterion, grad_clip_val=0.7, device=torch.device("cpu") + ) + + assert optimized_log["loss"] == reference_log["loss"] + for reference, optimized in zip( + reference_net.parameters(), optimized_net.parameters(), strict=True + ): + assert torch.equal(optimized, reference) + + +def _reference_eval(log, net, dataloader, criterion): + net.eval() + losses = [] + prediction = [] + ground_truth = [] + with torch.no_grad(): + for features, targets in dataloader: + outputs = net(features) + loss = criterion(outputs, targets) + prediction.append(outputs.cpu()) + ground_truth.append(targets.cpu()) + losses.append(loss.item()) + log["loss"] = np.mean(losses) + return ( + torch.cat(prediction, dim=0).numpy(), + torch.cat(ground_truth, dim=0).numpy(), + ) + + +def test_inference_eval_matches_original_outputs_targets_and_loss(): + torch.manual_seed(101) + net = _FrozenTail() + features = torch.randn(11, 3) + targets = torch.randn(11, 2) + dataloader = DataLoader( + TensorDataset(features, targets), batch_size=4, shuffle=False + ) + criterion = nn.L1Loss() + + reference_log = {} + reference_prediction, reference_targets = _reference_eval( + reference_log, net, dataloader, criterion + ) + optimized_log = {} + _, optimized_prediction, optimized_targets = net_eval( + optimized_log, net, dataloader, criterion, torch.device("cpu") + ) + + assert optimized_log["loss"] == reference_log["loss"] + assert np.array_equal(optimized_prediction, reference_prediction) + assert np.array_equal(optimized_targets, reference_targets) + + +@pytest.mark.parametrize( + "device_type, expected", [("cpu", False), ("cuda", True)] +) +def test_cuda_loaders_pin_memory(monkeypatch, device_type, expected): + features = np.arange(48, dtype=np.float64).reshape(24, 2) / 10 + targets = features * 2 + + def fake_load_dataset(**_kwargs): + return ( + features, targets, + features[:12], targets[:12], + features[:12], targets[:12], + ) + + monkeypatch.setattr( + "modules.data_collector.load_dataset", fake_load_dataset + ) + project = Project.__new__(Project) + project.dataset_name = "unused" + project.step = "train_pa" + project.frame_length = 4 + project.frame_stride = 2 + project.batch_size = 3 + project.batch_size_eval = 2 + project.args = SimpleNamespace(nperseg=6) + project.device = torch.device(device_type) + + loaders, _ = project.build_dataloaders() + + assert all(loader.pin_memory is expected for loader in loaders) diff --git a/tests/test_tres_deltagru_optimized.py b/tests/test_tres_deltagru_optimized.py new file mode 100644 index 0000000..0c2568c --- /dev/null +++ b/tests/test_tres_deltagru_optimized.py @@ -0,0 +1,238 @@ +"""Correctness tests for the fused TRes-DeltaGRU recurrence.""" + +import contextlib +import copy +import io +from types import SimpleNamespace + +import pytest +import torch + +from models import CoreModel +from backbones.tres_deltagru import DeltaGRULayer +from backbones.triton_deltagru import triton +from modules.paths import gen_log_stat + + +requires_fused_cuda = pytest.mark.skipif( + not torch.cuda.is_available() or triton is None, + reason="requires CUDA and Triton", +) + + +def build_model(device, *, fused, thx=0.01, thh=0.05): + with contextlib.redirect_stdout(io.StringIO()): + model = CoreModel( + input_size=2, + hidden_size=15, + num_layers=1, + backbone_type="tres_deltagru", + thx=thx, + thh=thh, + ).to(device) + model.backbone.rnn.use_triton = fused + model.backbone.set_debug(0) + return model + + +def test_debug_setting_reaches_recurrent_layer(): + model = build_model("cpu", fused=False) + model.backbone.set_debug(1) + assert model.backbone.debug == 1 + assert model.backbone.rnn.debug == 1 + model.backbone.set_debug(0) + assert model.backbone.debug == 0 + assert model.backbone.rnn.debug == 0 + + +def test_opt_in_statistics_are_logged_and_reset(): + model = build_model("cpu", fused=False) + model.backbone.set_debug(1) + model(torch.randn(2, 3, 2)) + wrapper = SimpleNamespace( + dpd_model=model, + named_parameters=model.named_parameters, + ) + args = SimpleNamespace( + step="train_dpd", + n_epochs=2, + batch_size=2, + frame_length=3, + DPD_backbone="tres_deltagru", + DPD_hidden_size=15, + ) + + log = gen_log_stat(args, 0.0, wrapper, None, 0) + + assert {"SP_T_DX", "SP_T_DH", "SP_T_DV", "HW_PARAM"} <= log.keys() + assert model.backbone.rnn.statistics == { + "num_dx_zeros": 0, + "num_dx_numel": 0, + "num_dh_zeros": 0, + "num_dh_numel": 0, + } + + +@requires_fused_cuda +@pytest.mark.parametrize("thresholds", [(0.0, 0.0), (0.01, 0.05)]) +@pytest.mark.parametrize("sequence_length", [1, 17, 200]) +def test_fused_output_and_gradients_match_eager(thresholds, sequence_length): + torch.manual_seed(7) + torch.backends.cuda.matmul.allow_tf32 = False + torch.backends.cudnn.allow_tf32 = False + thx, thh = thresholds + reference = build_model("cuda", fused=False, thx=thx, thh=thh) + fused = build_model("cuda", fused=True, thx=thx, thh=thh) + fused.load_state_dict(copy.deepcopy(reference.state_dict())) + + reference_input = torch.randn( + 2, sequence_length, 2, device="cuda", requires_grad=True + ) + fused_input = reference_input.detach().clone().requires_grad_() + target = torch.randn(2, sequence_length, 2, device="cuda") + + reference_output = reference(reference_input) + reference_loss = torch.nn.functional.mse_loss(reference_output, target) + reference_loss.backward() + fused_output = fused(fused_input) + fused_loss = torch.nn.functional.mse_loss(fused_output, target) + fused_loss.backward() + + torch.testing.assert_close(fused_output, reference_output, rtol=3e-5, atol=2e-5) + torch.testing.assert_close(fused_input.grad, reference_input.grad, rtol=5e-4, atol=2e-6) + for (name, reference_parameter), (fused_name, fused_parameter) in zip( + reference.named_parameters(), fused.named_parameters(), strict=True + ): + assert name == fused_name + torch.testing.assert_close( + fused_parameter.grad, + reference_parameter.grad, + rtol=5e-4, + atol=2e-6, + msg=lambda message, parameter=name: f"{parameter}: {message}", + ) + + +@requires_fused_cuda +def test_fused_statistics_match_eager(): + torch.manual_seed(11) + reference = build_model("cuda", fused=False) + fused = build_model("cuda", fused=True) + fused.load_state_dict(copy.deepcopy(reference.state_dict())) + reference.backbone.set_debug(1) + fused.backbone.set_debug(1) + features = torch.randn(4, 17, 2, device="cuda") + + reference(features) + fused(features) + + for key in ("num_dx_zeros", "num_dx_numel", "num_dh_zeros", "num_dh_numel"): + reference_value = torch.as_tensor(reference.backbone.rnn.statistics[key]) + fused_value = torch.as_tensor(fused.backbone.rnn.statistics[key]) + torch.testing.assert_close(fused_value.cpu(), reference_value.cpu()) + + +@requires_fused_cuda +def test_custom_initial_state_gradients_match_eager(): + torch.manual_seed(13) + reference = DeltaGRULayer(6, 15, 1, thx=0.01, thh=0.05).cuda() + fused = copy.deepcopy(reference) + reference.use_triton = False + fused.use_triton = True + reference.debug = 0 + fused.debug = 0 + + reference_input = torch.randn(2, 17, 6, device="cuda", requires_grad=True) + fused_input = reference_input.detach().clone().requires_grad_() + + def make_state(width): + return (torch.randn(1, 2, width, device="cuda") * 0.1).requires_grad_() + + reference_states = [ + make_state(15), # x_p_0 uses x_p_length=max(input_size, hidden_size) + make_state(15), + make_state(15), + make_state(15), + make_state(45), + ] + fused_states = [ + state.detach().clone().requires_grad_() for state in reference_states + ] + output_gradient = torch.randn(2, 17, 15, device="cuda") + + reference_output = reference(reference_input, *reference_states) + (reference_output * output_gradient).sum().backward() + fused_output = fused(fused_input, *fused_states) + (fused_output * output_gradient).sum().backward() + + torch.testing.assert_close(fused_output, reference_output, rtol=3e-5, atol=2e-5) + torch.testing.assert_close(fused_input.grad, reference_input.grad, rtol=5e-4, atol=2e-6) + for reference_state, fused_state in zip( + reference_states, fused_states, strict=True + ): + torch.testing.assert_close( + fused_state.grad, reference_state.grad, rtol=5e-4, atol=2e-6 + ) + + +@requires_fused_cuda +def test_inference_does_not_save_training_workspace(): + model = build_model("cuda", fused=True).eval() + features = torch.randn(4, 512, 2, device="cuda") + with torch.inference_mode(): + output = model(features) + assert output.shape == (4, 512, 2) + assert not output.requires_grad + assert torch.isfinite(output).all() + + +@requires_fused_cuda +def test_cuda_autocast_uses_equivalent_eager_fallback(): + torch.manual_seed(17) + reference = build_model("cuda", fused=False) + candidate = build_model("cuda", fused=True) + candidate.load_state_dict(copy.deepcopy(reference.state_dict())) + features = torch.randn(2, 17, 2, device="cuda") + + with torch.autocast("cuda", dtype=torch.float16): + reference_output = reference(features) + candidate_output = candidate(features) + probe = torch.empty(1, 1, 6, device="cuda") + assert not candidate.backbone.rnn._can_use_triton(probe) + + torch.testing.assert_close(candidate_output, reference_output, rtol=0, atol=0) + + +@requires_fused_cuda +def test_quantization_aware_model_uses_eager_fallback(): + from quant.quant_envs import AttrDict, Base_GRUQuantEnv + + float_model = build_model("cpu", fused=True) + with contextlib.redirect_stdout(io.StringIO()): + environment = Base_GRUQuantEnv( + float_model, + AttrDict( + n_bits_w=16, + n_bits_a=16, + pretrained_model="", + quant_dir_label="", + ), + ) + quantized_model = environment.q_model.cuda() + probe = torch.empty(1, 1, 6, device="cuda") + assert not quantized_model.backbone.rnn._can_use_triton(probe) + + features = torch.randn(2, 4, 2, device="cuda") + output = quantized_model(features) + output.square().mean().backward() + assert torch.isfinite(output).all() + + +@requires_fused_cuda +def test_higher_order_gradient_fails_loudly(): + model = build_model("cuda", fused=True) + features = torch.randn(1, 2, 2, device="cuda", requires_grad=True) + with pytest.raises(RuntimeError, match="first-order training only"): + torch.autograd.grad( + model(features).sum(), features, create_graph=True + ) From 3df35e081e6e41463fa46f21778c72a748823274 Mon Sep 17 00:00:00 2001 From: Chang Gao Date: Fri, 24 Jul 2026 12:42:20 +0200 Subject: [PATCH 2/3] Add benchmark verification findings, fix GMP/QR path, add TRes-GRU Full experimental re-run of benchmark/benchmark_report.md. Eight of the ten reported DPD numbers reproduce (QR rows to <=0.05 dB, SGD rows to <=0.5 dB), but the verification exposed three defects: - benchmark_volterra_qr.py never branched on --model, so --model gmp silently ran the Memory Polynomial basis. Present since the script was first added; the report's GMP rows cannot have come from it as committed. Fixed here, and with the fix both GMP rows reproduce. - The APA_200MHz PA NMSE of -43.52 dB in section 4 is unattainable. Re-running the report's own command gives -31.48 dB (converged), a closed-form GMP with 3520 real parameters reaches only -38.83 dB, and the fit residual is near-white with drive-independent power, placing the measurement noise floor at about -38.6 dB. - The APA half of the benchmark therefore rests on a surrogate that is ~7 dB short of that floor. Re-running the QR benchmarks against a converged surrogate moves MP's EVM from -32.70 to -47.41 dB and flips the MP/GMP ranking, which invalidates section 8's "10.6 dB EVM" conclusion. The DPA_160MHz half is unaffected; its surrogate was already at its floor. The dataset itself is clean: CSVs unchanged since 2025-07-09, no clipping or NaN, splits consistent, already time-aligned, and the closed-form ceiling is the same as DPA_160MHz. The -31.5 dB plateau comes from the training recipe -- the same GRU gains 7.4 dB from the OpenDPDv2 hyperparameters alone. Also adds backbones/tres_gru.py (TRes-DeltaGRU with the DeltaGRU cell replaced by a dense nn.GRU), verified numerically equivalent to tres_deltagru at thx=thh=0, and a runner for the fixed-parameter-budget PA backbone sweep. BENCHMARK_FIX_PLAN.md records the evidence and the remaining re-benchmark work. Co-Authored-By: Claude Opus 4.8 (1M context) --- arguments.py | 4 +- backbones/tres_gru.py | 85 ++++++++ benchmark/BENCHMARK_FIX_PLAN.md | 257 +++++++++++++++++++++++++ benchmark/benchmark_volterra_qr.py | 22 ++- benchmark/pa_modeling_investigation.md | 143 ++++++++++++++ benchmark/train_all_pa_2700.sh | 44 +++++ models.py | 7 + 7 files changed, 555 insertions(+), 7 deletions(-) create mode 100644 backbones/tres_gru.py create mode 100644 benchmark/BENCHMARK_FIX_PLAN.md create mode 100644 benchmark/pa_modeling_investigation.md create mode 100755 benchmark/train_all_pa_2700.sh diff --git a/arguments.py b/arguments.py index 08fe262..0e93248 100644 --- a/arguments.py +++ b/arguments.py @@ -53,7 +53,7 @@ def get_arguments(): # Power Amplifier Model Settings parser.add_argument('--PA_backbone', default='gru', choices=['gmp','deltagru', 'deltajanet', 'janet', 'fcn', 'gru', 'dgru', 'qgru', 'qgru_amp1', 'lstm', 'vdlstm', - 'rvtdcnn', 'mamba', 'tcn', 'pntdnn', 'pdgru', 'pgjanet', 'dvrjanet', 'bojanet', 'pnjanet', 'apnrnn', 'djanet', 'mcldnn'], + 'rvtdcnn', 'mamba', 'tcn', 'tres_deltagru', 'tres_gru', 'pntdnn', 'pdgru', 'pgjanet', 'dvrjanet', 'bojanet', 'pnjanet', 'apnrnn', 'djanet', 'mcldnn'], help='Modeling PA Recurrent layer type') parser.add_argument('--PA_hidden_size', default=23, type=int, help='Hidden size of PA backbone') @@ -62,7 +62,7 @@ def get_arguments(): # Digital Predistortion Model Settings parser.add_argument('--DPD_backbone', default='gru', choices=['gmp', 'deltagru', 'deltajanet', 'janet', 'snn', 'fcn', 'gru', 'dgru', 'qgru', 'qgru_amp1', 'lstm', 'vdlstm', - 'rvtdcnn', 'tres_deltagru', 'tcn', 'pntdnn', 'pdgru', 'pgjanet', 'dvrjanet', 'bojanet', 'pnjanet', 'djanet', 'mcldnn'], + 'rvtdcnn', 'tres_deltagru', 'tres_gru', 'tcn', 'pntdnn', 'pdgru', 'pgjanet', 'dvrjanet', 'bojanet', 'pnjanet', 'djanet', 'mcldnn'], help='DPD model Recurrent layer type') parser.add_argument('--DPD_hidden_size', default=15, type=int, help='Hidden size of DPD backbone.') parser.add_argument('--DPD_num_layers', default=1, type=int, help='Number of layers of the DPD backbone.') diff --git a/backbones/tres_gru.py b/backbones/tres_gru.py new file mode 100644 index 0000000..7c5c789 --- /dev/null +++ b/backbones/tres_gru.py @@ -0,0 +1,85 @@ +import torch +import torch.nn as nn + + +class TResGRU(nn.Module): + """TRes-DeltaGRU with the DeltaGRU cell replaced by a dense nn.GRU. + + Same 6-feature extraction and TCN residual skip path as TResDeltaGRU; + the recurrent core is a standard cuDNN GRU. Bias-free like the DeltaGRU + layer's x2h/h2h projections, so parameter counts match at equal hidden + size (e.g. H=10 -> 524 params). + """ + + def __init__(self, input_size, hidden_size, output_size, num_layers, bias=True): + super(TResGRU, self).__init__() + self.hidden_size = hidden_size + self.input_size = 6 + self.output_size = output_size + self.num_layers = num_layers + self.bias = bias + + self.rnn = nn.GRU(input_size=self.input_size, + hidden_size=self.hidden_size, + num_layers=num_layers, + batch_first=True, + bias=False) + self.fc_out = nn.Linear(in_features=self.hidden_size, + out_features=self.output_size, + bias=False) + self.tcn = nn.Sequential( + nn.Conv1d(in_channels=2, + out_channels=3, + kernel_size=3, + padding=16, + stride=1, + dilation=16, + bias=False), + nn.Hardswish(), + nn.Conv1d(in_channels=3, + out_channels=2, + kernel_size=1, + padding=0, + stride=1, + dilation=1, + bias=False), + nn.Hardswish(), + ) + + def reset_parameters(self): + for name, param in self.tcn.named_parameters(): + if 'weight' in name: + nn.init.xavier_uniform_(param) + if 'bias' in name: + nn.init.constant_(param, 0) + for name, param in self.rnn.named_parameters(): + num_gates = int(param.shape[0] / self.hidden_size) + if 'bias' in name: + nn.init.constant_(param, 0) + if 'weight_hh' in name: + for i in range(0, num_gates): + nn.init.orthogonal_(param[i * self.hidden_size:(i + 1) * self.hidden_size, :]) + if 'weight_ih' in name: + for i in range(0, num_gates): + nn.init.xavier_uniform_(param[i * self.hidden_size:(i + 1) * self.hidden_size, :]) + for name, param in self.fc_out.named_parameters(): + if 'weight' in name: + nn.init.xavier_uniform_(param) + if 'bias' in name: + nn.init.constant_(param, 0) + + def forward(self, x, h_0=None): + skip_x = self.tcn(x.transpose(1, 2)).transpose(1, 2) + last_step = torch.roll(x, shifts=-1, dims=1) + # Feature Extraction + i_x = x[..., 0].unsqueeze(-1) + q_x = x[..., 1].unsqueeze(-1) + i_last = last_step[..., 0].unsqueeze(-1) + q_last = last_step[..., 1].unsqueeze(-1) + amp2 = torch.pow(i_x, 2) + torch.pow(q_x, 2) + amp = torch.sqrt(amp2) + amp3 = torch.pow(amp, 3) + feat = torch.cat((i_x, q_x, amp, amp3, i_last, q_last), dim=-1) + out, _ = self.rnn(feat, h_0) + out = self.fc_out(out) + skip_x + return out diff --git a/benchmark/BENCHMARK_FIX_PLAN.md b/benchmark/BENCHMARK_FIX_PLAN.md new file mode 100644 index 0000000..56750d9 --- /dev/null +++ b/benchmark/BENCHMARK_FIX_PLAN.md @@ -0,0 +1,257 @@ +# Benchmark Verification & Fix Plan + +Status: **verification complete, fixes partially applied, re-benchmark pending.** + +This document records a full experimental re-run of `benchmark/benchmark_report.md`, +the defects that re-run exposed, and the concrete work needed to correct them. +Everything below was measured on this machine (RTX 4090 Laptop, `.venv`, +PyTorch 2.13.0+cu132, seed 0) unless stated otherwise. + +--- + +## 1. What was verified + +Every number in `benchmark_report.md` was re-run from the commands the report +itself gives. + +### 1.1 Reproduces correctly + +| Item | Reported | Reproduced | Delta | +|---|---|---|---| +| PA NMSE, DPA_160MHz | -38.43 | -38.44 / -38.80 (val/test) | exact | +| APA TRes-DeltaGRU DPD | -53.35 / -49.08 | -53.68 / -48.96 | ≤0.33 | +| APA GRU DPD | -52.61 / -47.50 | -52.10 / -47.33 | ≤0.51 | +| APA MP (QR) | -41.01 / -32.68 | -41.02 / -32.70 | ≤0.02 | +| APA GMP (QR) | -38.80 / -38.53 | -38.75 / -38.50 | ≤0.05 | +| DPA TRes-DeltaGRU DPD | -56.81 / -54.00 | -56.82 / -53.96 | ≤0.04 | +| DPA GMP (QR) | -54.02 / -51.08 | -54.02 / -51.07 | ≤0.01 | +| DPA GRU DPD | -51.93 / -49.97 | -51.92 / -50.02 | ≤0.05 | +| DPA MP (QR) | -51.29 / -50.26 | -51.29 / -50.26 | exact | +| Section 8 GMP-SGD-100ep | -29.67 / -44.46 | -29.63 / -44.46 | ≤0.04 | + +(ACLR_AVG / EVM in dB. QR rows required the GMP fix in §2.2. The 0.3-0.5 dB +spread on the two APA SGD rows is normal run-to-run variation: training runs +under soft determinism with `cudnn.benchmark=True`.) + +Also verified static: all parameter counts (1,911 / 2,066 / 519 / 524 / 500 / +510), dataset sizes, split ratios, sampling rates, `nperseg`, APA PAPR, and the +TRes-DeltaGRU architecture description. + +### 1.2 Does not reproduce + +| Item | Reported | Measured | Status | +|---|---|---|---| +| PA NMSE, APA_200MHz | **-43.52 dB** | **-31.48 dB** with the report's own recipe | wrong | +| DPA_160MHz PAPR | 10.38 dB | 10.13 dB (CCDF 0.001% and absolute peak) | wrong | +| §8 "10.6 dB EVM gap vs MP" | 10.6 | 16.4 vs MP; 10.6 is the gap vs GMP | misattributed | + +--- + +## 2. Defects found + +### 2.1 CRITICAL — `benchmark_report.md` §4 APA PA NMSE is unattainable + +The report claims -43.52 dB. Three independent lines of evidence say the true +figure for that configuration is ≈ -31.5 dB, and that -43.52 dB cannot be reached +by any model on this dataset: + +1. **Direct re-run.** GRU h23, 100 epochs, lr 5e-4 → -31.48 (val) / -31.40 + (test), fully converged (slope over the last 20 epochs: +0.0002 dB/epoch). +2. **Closed-form ceiling.** Least-squares GMP with 3,520 real parameters reaches + only -38.83 dB on the APA test split. Closed-form identification is immune to + optimizer problems, so this bounds what the data supports. +3. **The residual is measurement noise.** The GMP residual is near-white + (in-band vs out-of-band PSD tilt +3.9 dB, against +33.4 dB for the signal) + and its power is essentially independent of drive level — it stays at -48 dB + even where `|x| → 0`. Unmodeled distortion vanishes with the drive; additive + noise does not. **The measurement noise floor of APA_200MHz is ≈ -38.6 dB.** + +-43.52 dB is ~5 dB below that floor. Alternative sources were checked and +excluded: `APA_200MHz_b` (-36.25), the OpenDPDv2.sh recipe with DGRU h23 +(-39.13), the `DPA_200MHz` DGRU fixture (-31.0), and the OpenDPDv2 paper tables. + +### 2.2 CRITICAL — `benchmark_volterra_qr.py` never ran GMP + +`main()` called `build_mp_basis` unconditionally and never branched on +`args.model`, so `--model gmp` silently produced Memory Polynomial results. The +bug has been present since the script was first committed (`4924129`), meaning +the report's GMP rows cannot have come from the script as committed. + +**Fixed in this branch**: `main()` now selects the basis from `args.model`, and +the printed coefficient count follows the GMP hyperparameters. With the fix, both +GMP rows reproduce to ≤0.05 dB. + +### 2.3 HIGH — the whole APA benchmark rests on an undertrained surrogate + +The report's recipe (lr 5e-4, batch 256, 100 epochs, no LR schedule) leaves +recurrent PA models ~7 dB short of the noise floor. Re-running the QR benchmarks +with a converged surrogate (GRU h23 at -38.87 dB) changes the downstream numbers +substantially: + +| Model | Metric | Surrogate -31.4 dB | Surrogate -38.9 dB | Change | +|---|---|---|---|---| +| MP | ACLR_AVG | -41.02 | -41.81 | -0.8 | +| MP | EVM | -32.70 | **-47.41** | **-14.7** | +| GMP | ACLR_AVG | -38.75 | -39.58 | -0.8 | +| GMP | EVM | -38.50 | -34.89 | +3.6 | + +EVM moves by up to 14.7 dB and the MP-vs-GMP ranking flips. §8's claim that AI +beats the best traditional method by 10.6 dB in EVM on APA_200MHz does not +survive: MP alone reaches -47.41 dB EVM against a converged surrogate. The +DPA_160MHz half of the report is unaffected — its surrogate (-38.43 dB) was +already at its noise floor, which is exactly why that half reproduces cleanly. + +### 2.4 MEDIUM — reproduction commands are wrong or incomplete + +- §9 QR commands omit the `benchmark/` path prefix; as written they fail. +- §5.1 advertises "aggressive temporal sparsity" but §9's commands leave + `--thx/--thh` at their 0.0 defaults, i.e. a dense DeltaGRU is trained. +- `frame_length=200` / `frame_stride=1` are silent defaults, never stated. + +### 2.5 LOW — metric semantics are non-standard and undocumented + +- `EVM` is a spectral magnitude MAE (per-bin `mean|S_pred - S_gt| / mean|S_gt|`), + not a 3GPP constellation EVM: no demodulation, equalization, or symbol + decisions. Not comparable to instrument EVM. +- `ACLR` normalizes by the **maximum single sub-channel** power, not total + main-channel power. +- `NMSE` averages per-segment dB values rather than taking dB of the pooled + ratio. +- All Section 7 numbers are **simulated through the frozen PA surrogate**, not + measured on hardware, and therefore inherit the surrogate's error. + +These are self-consistent within the benchmark (all models scored identically), +but the report should say so. + +### 2.6 LOW — checkpoints collide across recipes + +`model_id` encodes only backbone / hidden size / frame length / parameter count. +Re-running the same architecture under a different recipe silently overwrites +`save//train_pa/.pt` and its logs. The GRU h23 checkpoint on +disk is now the OpenDPDv2-recipe model (-38.87 dB), not the report-recipe one. + +--- + +## 3. Dataset audit: APA_200MHz is clean + +The low NMSE is **not** a data defect. + +- **Git history**: only 4 commits ever touched `datasets/APA_200MHz/`; the CSVs + have been bit-identical since 2025-07-09 and every later commit changed only + `spec.json` metadata and plots. `fs`, `nperseg` and split ratios never changed. +- **Signal QA**: no NaN/Inf, no duplicate rows, no clipping (only the 1-2 samples + defining the normalization peak), DC offset < 1e-3, AM/AM relative spread + 0.045 (DPA_160MHz: 0.048). +- **Splits**: consistent power and complex gain across train/val/test (1.1626 / + 1.1628 / 1.1636); no discontinuity at the boundaries. +- **Alignment**: already time-aligned (peak lag 0, normalized cross-correlation + 0.9945). +- **Provenance**: R&S SMW200A → 3.5 GHz Ampleon GaN Doherty PA → Keysight N9042B + IQ capture (`Matlab/` scripts). +- **A vs B**: `APA_200MHz` and `APA_200MHz_b` have **byte-identical inputs** and + different output captures. Commit `2c7f91a` swapped the two output sets four + hours after release and renamed `APA_200MHz_backup` → `APA_200MHz_b`, so the + current primary dataset is the capture the OpenDPDv2 paper reported on. NMSE + between the two captures is -23.75 dB; since each is individually modelable to + -38.5 dB, that gap is a systematic operating-point difference, not noise. + +The closed-form ceiling is essentially the same for all three datasets +(APA -38.83, APA_b -38.48, DPA -39.51), so APA_200MHz is not a worse dataset. + +--- + +## 4. Root cause of the -31.5 dB plateau: the training recipe + +Backbone comparison at ~1,900 parameters on APA_200MHz (val / test NMSE, dB): + +| Backbone | Params | Report recipe
lr 5e-4, bs 256, 100 ep | OpenDPDv2 recipe
lr 5e-3, bs 64, 240 ep, ReduceLROnPlateau | +|---|---|---|---| +| GRU h23 | 1,911 | -31.48 / -31.40 | **-38.79 / -38.87** | +| DGRU h23 | 2,751 | -31.67 / -31.61 | **-39.13 / -39.21** | +| TCN h66 | 1,914 | -37.44 / -37.30 | -38.38 / -38.25 | +| TRes-GRU h22 | 1,916 | -35.62 / -35.50 | **-38.94 / -39.01** | + +The same GRU gains 7.4 dB from the recipe alone. Recurrent cells need the higher +learning rate and the schedule; the convolutional TCN is far less sensitive, +which is why it already reaches -37.4 dB under the weak recipe. With a proper +recipe all four architectures land within 0.9 dB of each other, because they are +all at the -38.6 dB noise floor — architecture ranking at that point is not +meaningful. + +--- + +## 5. Fix plan + +### 5.1 Applied in this branch + +- [x] `benchmark/benchmark_volterra_qr.py`: branch on `--model`, so GMP actually + builds the GMP basis (§2.2). +- [x] `backbones/tres_gru.py`: new TRes-GRU backbone (TRes-DeltaGRU with the + DeltaGRU cell replaced by a dense `nn.GRU`, bias-free so parameter counts + match at equal hidden size). Registered in `models.py` and in both backbone + choice lists in `arguments.py`. Validated numerically equivalent to + `tres_deltagru` at `thx=thh=0` (max abs diff 8.2e-7, relative L2 1.3e-6). +- [x] `benchmark/pa_modeling_investigation.md`: full write-up of the PA-modeling + investigation. +- [x] This plan. + +### 5.2 Pending — re-benchmark (the substantive work) + +1. **Retrain the APA_200MHz PA surrogate with the OpenDPDv2 recipe.** + ```bash + python main.py --step train_pa --dataset_name APA_200MHz --PA_backbone gru --PA_hidden_size 23 \ + --n_epochs 240 --lr 5e-3 --lr_schedule 1 --lr_end 1e-4 --decay_factor 0.5 --patience 10 --batch_size 64 + ``` + Expected ≈ -38.8 dB. Do the same for DPA_160MHz for consistency (it is already + at its floor, so little change is expected). + +2. **Re-run all four APA DPD rows** (GRU h11, TRes-DeltaGRU h10, MP/QR, GMP/QR) + against the retrained surrogate. Section 7's APA table and every Section 8 + conclusion derived from it must be recomputed — the EVM column in particular. + +3. **Correct the report text**: §4 APA PA NMSE, §9 command paths, DPA PAPR + (10.13 dB), the §8 EVM attribution, and add a note that Section 7 metrics are + surrogate-simulated with the non-standard definitions listed in §2.5. + +4. **Guard against regression**: make `model_id` encode the recipe (or at least + warn on overwrite), and add a smoke test that `--model gmp` produces a + different coefficient count than `--model mp`. + +### 5.3 Pending — PA backbone comparison at a fixed budget (started, then stopped) + +A sweep of every viable PA backbone at ~2,700 parameters under the OpenDPDv2 +recipe was launched and **deliberately stopped before completion** at the user's +request. Hidden sizes were already calibrated: + +| Backbone | h | Params | | Backbone | h | Params | +|---|---|---|---|---|---|---| +| GRU | 28 | 2,746 | | vDLSTM | 22 | 2,666 | +| DGRU | 23 | 2,751 | | DeltaGRU | 26 | 2,706 | +| TCN | 93 | 2,697 | | DeltaJANET | 32 | 2,626 | +| TRes-GRU | 27 | 2,751 | | PG-JANET | 19 | 2,719 | +| LSTM | 24 | 2,738 | | DVR-JANET | 19 | 2,665 | +| RVTDCNN | 68 | 2,684 | | QGRU | 27 | 2,729 | +| MCLDNN | 11 | 2,679 | | APNRRU | 34 | 2,723 | + +Excluded: `gmp` (fixed at 495 params), `bojanet` (caps at 1,346; breaks above +h=18), `apnrnn` (not implemented in `models.py`). `tres_deltagru` is redundant +with `tres_gru` at zero thresholds. + +Partial results before the stop (best val NMSE at the epoch reached, not final): + +| Backbone | Params | Epochs run | Best val NMSE | +|---|---|---|---| +| LSTM h24 | 2,738 | 126/240 | -38.88 | +| GRU h28 | 2,746 | 126/240 | -38.85 | +| TCN h93 | 2,697 | 213/240 | -38.54 | +| MCLDNN h11 | 2,679 | 76/240 | -31.77 | +| RVTDCNN h68 | 2,684 | 240/240 | -31.13 | +| TRes-GRU h27 | 2,751 | 1/240 | -30.72 | + +The runner script used is `benchmark/train_all_pa_2700.sh`. Resume by re-running +it; models already finished can be dropped from the `JOBS` list. + +Note that at ~2,700 parameters the well-behaved architectures are already pinned +at the -38.6 dB noise floor, so this sweep characterizes *which architectures +reach the floor and how fast*, not which is most accurate. RVTDCNN and MCLDNN +stalling near -31 dB is the interesting signal and worth a separate look. diff --git a/benchmark/benchmark_volterra_qr.py b/benchmark/benchmark_volterra_qr.py index 0681789..c3f9c6e 100644 --- a/benchmark/benchmark_volterra_qr.py +++ b/benchmark/benchmark_volterra_qr.py @@ -230,9 +230,21 @@ def main(): # Step 1: Identify DPD via ILA + QR # ----------------------------------------------------------------------- K, Q = args.K, args.Q - n_complex_coeffs = K * Q + if args.model == 'gmp': + def build_basis(x): + return build_gmp_basis(x, args.Ka, args.La, args.Kb, args.Lb, + args.Mb, args.Kc, args.Lc, args.Mc) + n_complex_coeffs = (args.Ka * args.La + args.Kb * args.Lb * args.Mb + + args.Kc * args.Lc * args.Mc) + print(f"\n=== Volterra GMP DPD via QR (Ka={args.Ka}, La={args.La}, " + f"Kb={args.Kb}, Lb={args.Lb}, Mb={args.Mb}, " + f"Kc={args.Kc}, Lc={args.Lc}, Mc={args.Mc}) ===") + else: + def build_basis(x): + return build_mp_basis(x, K, Q) + n_complex_coeffs = K * Q + print(f"\n=== Volterra MP DPD via QR (K={K}, Q={Q}) ===") n_real_params = 2 * n_complex_coeffs - print(f"\n=== Volterra MP DPD via QR (K={K}, Q={Q}) ===") print(f"Complex coefficients : {n_complex_coeffs}") print(f"Real parameters : {n_real_params}") @@ -244,7 +256,7 @@ def main(): z_norm = z_train_c / target_gain # Build basis from normalised PA output (postdistorter input) - Phi_train = build_mp_basis(z_norm, K, Q) + Phi_train = build_basis(z_norm) # Solve x_train = Phi_train * w via least squares (uses QR/SVD internally) w, residuals, rank, sv = np.linalg.lstsq(Phi_train, x_train_c, rcond=None) @@ -256,7 +268,7 @@ def main(): x_test_c = iq_to_complex(X_test) # Build basis from test input (predistorter) - Phi_test = build_mp_basis(x_test_c, K, Q) + Phi_test = build_basis(x_test_c) x_dpd_c = Phi_test @ w # predistorted signal x_dpd_iq = complex_to_iq(x_dpd_c) @@ -285,7 +297,7 @@ def main(): # Also run on val set x_val_c = iq_to_complex(X_val) - Phi_val = build_mp_basis(x_val_c, K, Q) + Phi_val = build_basis(x_val_c) x_dpd_val_c = Phi_val @ w x_dpd_val_iq = complex_to_iq(x_dpd_val_c) pa_val_iq = run_pa_model(x_dpd_val_iq, pa_net, device, nperseg) diff --git a/benchmark/pa_modeling_investigation.md b/benchmark/pa_modeling_investigation.md new file mode 100644 index 0000000..4574a19 --- /dev/null +++ b/benchmark/pa_modeling_investigation.md @@ -0,0 +1,143 @@ +# APA_200MHz PA-Modeling NMSE Investigation + +Question: why does PA modeling on `APA_200MHz` saturate at ~-31.5 dB NMSE, and is +the `benchmark_report.md` figure of -43.52 dB attainable? + +Answer: **-31.5 dB is an undertrained-recipe artifact, not a data defect.** The +dataset's measurement noise floor is ~-38.6 dB, every architecture reaches it once +trained with the OpenDPDv2 recipe, and -43.52 dB lies *below* the noise floor, so +it is not physically attainable on this dataset. + +## 1. Backbone comparison on APA_200MHz (PA modeling, val/test NMSE in dB) + +All models sized to ~1900 parameters for a fair comparison. + +| Backbone | Params | Report recipe
(lr 5e-4, bs 256, 100 ep, no sched) | OpenDPDv2 recipe
(lr 5e-3, bs 64, 240 ep, ReduceLROnPlateau) | +|---|---|---|---| +| GRU (h23) | 1,911 | -31.48 / -31.40 | **-38.79 / -38.87** | +| DGRU (h23) | 2,751 | -31.67 / -31.61 | **-39.13 / -39.21** | +| TCN (h66) | 1,914 | -37.44 / -37.30 | **-38.38 / -38.25** | +| TRes-GRU (h22) | 1,916 | -35.62 / -35.50 | **-38.94 / -39.01** | + +Two observations: + +1. **The recipe, not the architecture, causes the -31.5 dB plateau.** The same GRU + improves by 7.4 dB purely from the training recipe. Recurrent models are the + most sensitive: with lr=5e-4 and no schedule they are badly undertrained at + 100 epochs, while the convolutional TCN already reaches -37.4 dB. +2. **With a proper recipe all four architectures land within 0.9 dB of each other** + (-38.25 to -39.21), because they are all at the data's noise floor. Ranking + there is not architecturally meaningful. + +## 2. Data ceiling: closed-form least-squares fits + +Closed-form identification is immune to optimizer/learning-rate issues, so it +measures what the *data* supports. Basis built on the contiguous signal, fit on +the train split, evaluated on the test split (64-sample guard). + +| Model | Real params | APA_200MHz | APA_200MHz_b | DPA_160MHz | +|---|---|---|---|---| +| MP K=5 Q=10 | 100 | -31.94 | -32.81 | -38.14 | +| MP K=7 Q=20 | 280 | -37.13 | -33.24 | -38.48 | +| MP K=9 Q=40 | 720 | -37.22 | -33.23 | -38.50 | +| GMP rich | 1,180 | -38.54 | -38.42 | -39.48 | +| GMP extra-rich | 3,520 | **-38.83** | **-38.48** | **-39.51** | + +All three datasets saturate in the same place, -38.5 to -39.5 dB. APA_200MHz is +**not** a worse dataset than DPA_160MHz. + +Note the damning comparison: a 100-real-parameter memory polynomial (-31.94 dB) +matches the 1,911-parameter GRU trained with the report recipe (-31.40 dB). + +## 3. The residual is measurement noise, not unmodeled distortion + +Residual of the GMP-rich fit, analyzed spectrally and against input amplitude: + +| Quantity | APA_200MHz | DPA_160MHz | +|---|---|---| +| Residual NMSE | -38.64 dB | -39.48 dB | +| Residual PSD in-band vs out-of-band | +3.9 dB | +4.8 dB | +| *Signal* PSD in-band vs out-of-band | +33.4 dB | +37.8 dB | +| Residual power at \|x\|→0 | -48.0 dB | -41.4 dB | +| Residual power at \|x\|→max | -44.5 dB | -37.3 dB | + +The residual is nearly white (+3.9 dB in/out-of-band tilt, against +33.4 dB for +the signal) and **its power barely depends on input amplitude — it stays at +-48 dB even where the input goes to zero.** Unmodeled nonlinear distortion must +vanish as the drive vanishes; additive measurement noise does not. So ~-38.6 dB +is the noise floor of this capture. + +**Consequence: -43.52 dB is ~5 dB below the measurement noise floor and cannot be +achieved on APA_200MHz by any model.** This independently confirms it is a +misrecorded figure. + +## 4. Dataset integrity: no defects found + +- **Git history**: only 4 commits ever touched `datasets/APA_200MHz/`. The CSVs + have been bit-identical since 2025-07-09; every later commit changed only + `spec.json` metadata and plots. `fs`, `nperseg` and split ratios never changed. +- **Provenance**: R&S SMW200A generator -> 3.5 GHz Ampleon GaN Doherty PA -> + Keysight N9042B IQ capture (`Matlab/` scripts). +- **A vs B**: `APA_200MHz` and `APA_200MHz_b` have **byte-identical inputs** and + different output captures. Commit `2c7f91a` swapped the two output sets four + hours after the initial release and renamed `APA_200MHz_backup` to + `APA_200MHz_b`, so today's primary dataset is the capture the OpenDPDv2 paper + numbers were reported on. +- **Signal QA** (all three datasets): no NaN/Inf, no duplicate rows, no clipping + (only the 1-2 samples defining the normalization peak), DC offset < 1e-3, + AM/AM relative spread 0.045-0.049 (APA is in line with DPA). +- **Splits**: power and complex gain are consistent across train/val/test + (APA gain 1.1626 / 1.1628 / 1.1636); no discontinuity at split boundaries. +- **Alignment**: input/output are already time-aligned (peak lag 0, normalized + cross-correlation 0.9945). +- **Measurement A vs B**: NMSE between the two output captures of the same + stimulus is -23.75 dB (gain 0.98987, phase +0.309 deg). Since each capture is + individually modelable to -38.5 dB, this gap is a systematic operating-point + difference between the two measurements, not random capture noise. + +## 5. Downstream impact: the benchmark rests on an undertrained surrogate + +Re-running the QR benchmarks on APA_200MHz with the *same* code but a properly +trained PA surrogate (GRU h23 at -38.87 dB instead of -31.40 dB): + +| Model | Metric | Surrogate at -31.4 dB
(as in benchmark_report) | Surrogate at -38.9 dB | Change | +|---|---|---|---|---| +| MP (QR) | ACLR_AVG | -41.02 | -41.81 | -0.8 | +| MP (QR) | EVM | -32.70 | **-47.41** | **-14.7** | +| GMP (QR) | ACLR_AVG | -38.75 | -39.58 | -0.8 | +| GMP (QR) | EVM | -38.50 | **-34.89** | **+3.6** | + +EVM moves by up to 14.7 dB and the MP-vs-GMP ranking flips (MP now wins on both +metrics). `benchmark_report.md` Section 8 concludes that AI beats the best +traditional method by "10.6 dB in EVM" on APA_200MHz; with a converged surrogate +MP alone reaches -47.41 dB EVM, so that conclusion does not survive. The +DPA_160MHz surrogate was converged (-38.43 dB, at its noise floor), which is why +that half of the report reproduces cleanly. + +## 6. New backbone: TRes-GRU + +`backbones/tres_gru.py` is TRes-DeltaGRU with the DeltaGRU cell replaced by a +dense `nn.GRU` (bias-free, so parameter counts match at equal hidden size: h=10 +gives 524 params, identical to TRes-DeltaGRU). Registered as `tres_gru` in +`models.py` and in both backbone choice lists in `arguments.py`. + +Validated: with `thx=thh=0`, TRes-DeltaGRU is mathematically a dense GRU, and the +two implementations agree numerically (max abs difference 8.2e-7, relative L2 +1.3e-6) after weight transfer. + +## Reproducing + +```bash +# Report recipe +python main.py --step train_pa --dataset_name APA_200MHz --PA_backbone tcn --PA_hidden_size 66 --n_epochs 100 + +# OpenDPDv2 recipe +python main.py --step train_pa --dataset_name APA_200MHz --PA_backbone gru --PA_hidden_size 23 \ + --n_epochs 240 --lr 5e-3 --lr_schedule 1 --lr_end 1e-4 --decay_factor 0.5 --patience 10 --batch_size 64 +``` + +Caution: the checkpoint/log path (`model_id`) does not encode the learning rate, +batch size or epoch count, so re-running the same architecture with a different +recipe silently overwrites `save//train_pa/.pt` and its logs. +The checkpoint currently on disk for `PA_S_0_M_GRU_H_23_F_200_P_1911` is the +OpenDPDv2-recipe model (-38.87 dB), not the report-recipe one. diff --git a/benchmark/train_all_pa_2700.sh b/benchmark/train_all_pa_2700.sh new file mode 100755 index 0000000..b34347b --- /dev/null +++ b/benchmark/train_all_pa_2700.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +# Train every viable PA backbone at ~2700 params with the OpenDPDv2 recipe. +set -u +cd "$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +LOGDIR=${LOGDIR:-/tmp/opendpd_pa2700_logs} +mkdir -p "$LOGDIR" +DATASET=${DATASET:-APA_200MHz} +PYTHON=${PYTHON:-python} +export LOGDIR DATASET PYTHON + +# backbone:hidden_size (fast/cheap first so results land early) +JOBS=( + tcn:93 + rvtdcnn:68 + mcldnn:11 + gru:28 + lstm:24 + tres_gru:27 + dgru:23 + vdlstm:22 + qgru:27 + pgjanet:19 + dvrjanet:19 + deltajanet:32 + apnrru:34 + deltagru:26 +) + +run_one() { + local spec="$1" + local bb="${spec%%:*}" + local h="${spec##*:}" + local log="$LOGDIR/${DATASET}_${bb}_h${h}.log" + echo "[START] $bb h=$h" + "${PYTHON:-python}" main.py --step train_pa \ + --dataset_name "$DATASET" --PA_backbone "$bb" --PA_hidden_size "$h" \ + --n_epochs 240 --lr 5e-3 --lr_schedule 1 --lr_end 1e-4 \ + --decay_factor 0.5 --patience 10 --batch_size 64 > "$log" 2>&1 + echo "[DONE ] $bb h=$h exit=$?" +} +export -f run_one + +printf '%s\n' "${JOBS[@]}" | xargs -P "${CONC:-5}" -I{} bash -c 'run_one "$@"' _ {} +echo "ALL TRAINING COMPLETE" diff --git a/models.py b/models.py index f1e2ad4..a53bcd4 100644 --- a/models.py +++ b/models.py @@ -126,6 +126,13 @@ def __init__(self, input_size, hidden_size, num_layers, backbone_type, window_si thx=self.thx, thh=self.thh, bias=self.bias) + elif backbone_type == 'tres_gru': + from backbones.tres_gru import TResGRU + self.backbone = TResGRU(input_size=6, + hidden_size=self.hidden_size, + output_size=self.output_size, + num_layers=self.num_layers, + bias=self.bias) elif backbone_type == 'tcn': from backbones.tcn import TCN self.backbone = TCN(hidden_channels=self.hidden_size) From 261b335e84542ba89601e40b17d139af032997bb Mon Sep 17 00:00:00 2001 From: Chang Gao Date: Sun, 26 Jul 2026 23:26:06 +0200 Subject: [PATCH 3/3] Rebuild benchmark with reproducible PA and DPD results --- .gitignore | 3 +- arguments.py | 19 +- benchmark/BENCHMARK_FIX_PLAN.md | 257 - benchmark/benchmark_delta_dpd_results.png | Bin 0 -> 112421 bytes benchmark/benchmark_end_to_end.py | 882 --- benchmark/benchmark_report.md | 243 +- benchmark/benchmark_results.png | Bin 0 -> 201177 bytes benchmark/benchmark_training_speed.py | 450 -- benchmark/benchmark_training_speed_report.md | 103 - benchmark/benchmark_tres_deltagru.py | 422 -- benchmark/benchmark_volterra.py | 1025 ++++ benchmark/benchmark_volterra_qr.py | 314 -- benchmark/collect_benchmark_report.py | 3011 ++++++++++ benchmark/pa_modeling_investigation.md | 143 - benchmark/report/artifact.json | 382 -- benchmark/reproduce_benchmark_report.sh | 703 +++ .../results/benchmark_report_results.json | 1904 +++++++ .../e2e_dpa200_stride16_comparison_eager.json | 140 - .../e2e_dpa200_stride16_comparison_fused.json | 140 - .../e2e_dpa200_stride16_comparison_graph.json | 140 - .../batch_orders.npz | Bin 10137 -> 0 bytes .../outputs.npz | Bin 171295 -> 0 bytes .../result.json | 293 - .../batch_orders.npz | Bin 10137 -> 0 bytes .../outputs.npz | Bin 171327 -> 0 bytes .../result.json | 293 - .../batch_orders.npz | Bin 10137 -> 0 bytes .../outputs.npz | Bin 171247 -> 0 bytes .../result.json | 295 - .../batch_orders.npz | Bin 10137 -> 0 bytes .../e2e_dpa200_stride16_original/outputs.npz | Bin 171295 -> 0 bytes .../e2e_dpa200_stride16_original/result.json | 293 - .../e2e_dpa200_stride1_comparison_graph.json | 104 - ...pa200_stride1_comparison_graph_repeat.json | 104 - .../batch_orders.npz | Bin 61949 -> 0 bytes .../outputs.npz | Bin 171363 -> 0 bytes .../result.json | 235 - .../batch_orders.npz | Bin 61949 -> 0 bytes .../outputs.npz | Bin 171363 -> 0 bytes .../result.json | 235 - .../batch_orders.npz | Bin 61949 -> 0 bytes .../e2e_dpa200_stride1_original/outputs.npz | Bin 171372 -> 0 bytes .../e2e_dpa200_stride1_original/result.json | 233 - benchmark/results/end_to_end_summary.json | 165 - .../results/tres_deltagru_rtx4090_laptop.json | 92 - benchmark/train_all_pa_2700.sh | 44 - .../tres_deltagru_end_to_end_report.html | 4900 ----------------- benchmark/tres_deltagru_training_speed.md | 179 - modules/paths.py | 63 +- modules/train_funcs.py | 9 +- opendpd/api.py | 12 +- project.py | 22 +- steps/run_dpd.py | 4 +- steps/train_dpd.py | 4 +- steps/train_pa.py | 4 +- tests/test_api.py | 64 + tests/test_benchmark_regressions.py | 985 ++++ tests/test_cli.py | 21 + tests/test_metric_configuration.py | 37 + tests/test_tres_deltagru_optimized.py | 25 + 60 files changed, 7978 insertions(+), 11018 deletions(-) delete mode 100644 benchmark/BENCHMARK_FIX_PLAN.md create mode 100644 benchmark/benchmark_delta_dpd_results.png delete mode 100644 benchmark/benchmark_end_to_end.py create mode 100644 benchmark/benchmark_results.png delete mode 100644 benchmark/benchmark_training_speed.py delete mode 100644 benchmark/benchmark_training_speed_report.md delete mode 100644 benchmark/benchmark_tres_deltagru.py create mode 100644 benchmark/benchmark_volterra.py delete mode 100644 benchmark/benchmark_volterra_qr.py create mode 100644 benchmark/collect_benchmark_report.py delete mode 100644 benchmark/pa_modeling_investigation.md delete mode 100644 benchmark/report/artifact.json create mode 100755 benchmark/reproduce_benchmark_report.sh create mode 100644 benchmark/results/benchmark_report_results.json delete mode 100644 benchmark/results/e2e_dpa200_stride16_comparison_eager.json delete mode 100644 benchmark/results/e2e_dpa200_stride16_comparison_fused.json delete mode 100644 benchmark/results/e2e_dpa200_stride16_comparison_graph.json delete mode 100644 benchmark/results/e2e_dpa200_stride16_eager_optimized/batch_orders.npz delete mode 100644 benchmark/results/e2e_dpa200_stride16_eager_optimized/outputs.npz delete mode 100644 benchmark/results/e2e_dpa200_stride16_eager_optimized/result.json delete mode 100644 benchmark/results/e2e_dpa200_stride16_fused_optimized/batch_orders.npz delete mode 100644 benchmark/results/e2e_dpa200_stride16_fused_optimized/outputs.npz delete mode 100644 benchmark/results/e2e_dpa200_stride16_fused_optimized/result.json delete mode 100644 benchmark/results/e2e_dpa200_stride16_graph_optimized/batch_orders.npz delete mode 100644 benchmark/results/e2e_dpa200_stride16_graph_optimized/outputs.npz delete mode 100644 benchmark/results/e2e_dpa200_stride16_graph_optimized/result.json delete mode 100644 benchmark/results/e2e_dpa200_stride16_original/batch_orders.npz delete mode 100644 benchmark/results/e2e_dpa200_stride16_original/outputs.npz delete mode 100644 benchmark/results/e2e_dpa200_stride16_original/result.json delete mode 100644 benchmark/results/e2e_dpa200_stride1_comparison_graph.json delete mode 100644 benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json delete mode 100644 benchmark/results/e2e_dpa200_stride1_graph_optimized/batch_orders.npz delete mode 100644 benchmark/results/e2e_dpa200_stride1_graph_optimized/outputs.npz delete mode 100644 benchmark/results/e2e_dpa200_stride1_graph_optimized/result.json delete mode 100644 benchmark/results/e2e_dpa200_stride1_graph_repeat/batch_orders.npz delete mode 100644 benchmark/results/e2e_dpa200_stride1_graph_repeat/outputs.npz delete mode 100644 benchmark/results/e2e_dpa200_stride1_graph_repeat/result.json delete mode 100644 benchmark/results/e2e_dpa200_stride1_original/batch_orders.npz delete mode 100644 benchmark/results/e2e_dpa200_stride1_original/outputs.npz delete mode 100644 benchmark/results/e2e_dpa200_stride1_original/result.json delete mode 100644 benchmark/results/end_to_end_summary.json delete mode 100644 benchmark/results/tres_deltagru_rtx4090_laptop.json delete mode 100755 benchmark/train_all_pa_2700.sh delete mode 100644 benchmark/tres_deltagru_end_to_end_report.html delete mode 100644 benchmark/tres_deltagru_training_speed.md create mode 100644 tests/test_benchmark_regressions.py create mode 100644 tests/test_metric_configuration.py diff --git a/.gitignore b/.gitignore index 1c4c122..7902802 100644 --- a/.gitignore +++ b/.gitignore @@ -47,6 +47,7 @@ opendpd_env/ dpd_out/ log/ save/ +benchmark/results/reproduced/ # Allow sample data but not large datasets datasets/**/data/*.csv @@ -94,4 +95,4 @@ steps/__pycache__/ PACKAGE_INSTALLATION.md PyPI.md -adc/* \ No newline at end of file +adc/* diff --git a/arguments.py b/arguments.py index 0e93248..3dc2fe2 100644 --- a/arguments.py +++ b/arguments.py @@ -31,14 +31,17 @@ def get_arguments(): parser.add_argument('--seed', default=0, type=int, help='Global random number seed.') parser.add_argument('--loss_type', default='l2', choices=['l1', 'l2'], help='Type of loss function.') parser.add_argument('--opt_type', default='adamw', choices=['sgd', 'adam', 'adamw', 'adabound', 'rmsprop'], help='Type of optimizer.') - parser.add_argument('--batch_size', default=256, type=int, help='Batch size for training.') - parser.add_argument('--batch_size_eval', default=256, type=int, help='Batch size for evaluation.') - parser.add_argument('--n_epochs', default=100, type=int, help='Number of epochs to train for.') - parser.add_argument('--lr_schedule', default=0, type=int, help='Whether enable learning rate scheduling') - parser.add_argument('--lr', default=5e-4, type=float, help='Learning rate') - parser.add_argument('--lr_end', default=1e-4, type=float, help='Learning rate') - parser.add_argument('--decay_factor', default=0.1, type=float, help='Learning rate') - parser.add_argument('--patience', default=10, type=float, help='Learning rate') + parser.add_argument('--batch_size', default=64, type=int, help='Batch size for training.') + parser.add_argument('--batch_size_eval', default=64, type=int, help='Batch size for evaluation.') + parser.add_argument('--n_epochs', default=300, type=int, help='Number of epochs to train for.') + parser.add_argument('--lr_schedule', default=1, type=int, + help='Whether to enable ReduceLROnPlateau learning-rate scheduling.') + parser.add_argument('--lr', default=5e-3, type=float, help='Initial learning rate.') + parser.add_argument('--lr_end', default=5e-5, type=float, help='Minimum learning rate.') + parser.add_argument('--decay_factor', default=0.5, type=float, + help='Learning-rate reduction factor.') + parser.add_argument('--patience', default=5, type=int, + help='Scheduler patience in epochs.') parser.add_argument('--grad_clip_val', default=200, type=float, help='Gradient clipping.') parser.add_argument( '--cuda_graph_training', action='store_true', default=False, diff --git a/benchmark/BENCHMARK_FIX_PLAN.md b/benchmark/BENCHMARK_FIX_PLAN.md deleted file mode 100644 index 56750d9..0000000 --- a/benchmark/BENCHMARK_FIX_PLAN.md +++ /dev/null @@ -1,257 +0,0 @@ -# Benchmark Verification & Fix Plan - -Status: **verification complete, fixes partially applied, re-benchmark pending.** - -This document records a full experimental re-run of `benchmark/benchmark_report.md`, -the defects that re-run exposed, and the concrete work needed to correct them. -Everything below was measured on this machine (RTX 4090 Laptop, `.venv`, -PyTorch 2.13.0+cu132, seed 0) unless stated otherwise. - ---- - -## 1. What was verified - -Every number in `benchmark_report.md` was re-run from the commands the report -itself gives. - -### 1.1 Reproduces correctly - -| Item | Reported | Reproduced | Delta | -|---|---|---|---| -| PA NMSE, DPA_160MHz | -38.43 | -38.44 / -38.80 (val/test) | exact | -| APA TRes-DeltaGRU DPD | -53.35 / -49.08 | -53.68 / -48.96 | ≤0.33 | -| APA GRU DPD | -52.61 / -47.50 | -52.10 / -47.33 | ≤0.51 | -| APA MP (QR) | -41.01 / -32.68 | -41.02 / -32.70 | ≤0.02 | -| APA GMP (QR) | -38.80 / -38.53 | -38.75 / -38.50 | ≤0.05 | -| DPA TRes-DeltaGRU DPD | -56.81 / -54.00 | -56.82 / -53.96 | ≤0.04 | -| DPA GMP (QR) | -54.02 / -51.08 | -54.02 / -51.07 | ≤0.01 | -| DPA GRU DPD | -51.93 / -49.97 | -51.92 / -50.02 | ≤0.05 | -| DPA MP (QR) | -51.29 / -50.26 | -51.29 / -50.26 | exact | -| Section 8 GMP-SGD-100ep | -29.67 / -44.46 | -29.63 / -44.46 | ≤0.04 | - -(ACLR_AVG / EVM in dB. QR rows required the GMP fix in §2.2. The 0.3-0.5 dB -spread on the two APA SGD rows is normal run-to-run variation: training runs -under soft determinism with `cudnn.benchmark=True`.) - -Also verified static: all parameter counts (1,911 / 2,066 / 519 / 524 / 500 / -510), dataset sizes, split ratios, sampling rates, `nperseg`, APA PAPR, and the -TRes-DeltaGRU architecture description. - -### 1.2 Does not reproduce - -| Item | Reported | Measured | Status | -|---|---|---|---| -| PA NMSE, APA_200MHz | **-43.52 dB** | **-31.48 dB** with the report's own recipe | wrong | -| DPA_160MHz PAPR | 10.38 dB | 10.13 dB (CCDF 0.001% and absolute peak) | wrong | -| §8 "10.6 dB EVM gap vs MP" | 10.6 | 16.4 vs MP; 10.6 is the gap vs GMP | misattributed | - ---- - -## 2. Defects found - -### 2.1 CRITICAL — `benchmark_report.md` §4 APA PA NMSE is unattainable - -The report claims -43.52 dB. Three independent lines of evidence say the true -figure for that configuration is ≈ -31.5 dB, and that -43.52 dB cannot be reached -by any model on this dataset: - -1. **Direct re-run.** GRU h23, 100 epochs, lr 5e-4 → -31.48 (val) / -31.40 - (test), fully converged (slope over the last 20 epochs: +0.0002 dB/epoch). -2. **Closed-form ceiling.** Least-squares GMP with 3,520 real parameters reaches - only -38.83 dB on the APA test split. Closed-form identification is immune to - optimizer problems, so this bounds what the data supports. -3. **The residual is measurement noise.** The GMP residual is near-white - (in-band vs out-of-band PSD tilt +3.9 dB, against +33.4 dB for the signal) - and its power is essentially independent of drive level — it stays at -48 dB - even where `|x| → 0`. Unmodeled distortion vanishes with the drive; additive - noise does not. **The measurement noise floor of APA_200MHz is ≈ -38.6 dB.** - --43.52 dB is ~5 dB below that floor. Alternative sources were checked and -excluded: `APA_200MHz_b` (-36.25), the OpenDPDv2.sh recipe with DGRU h23 -(-39.13), the `DPA_200MHz` DGRU fixture (-31.0), and the OpenDPDv2 paper tables. - -### 2.2 CRITICAL — `benchmark_volterra_qr.py` never ran GMP - -`main()` called `build_mp_basis` unconditionally and never branched on -`args.model`, so `--model gmp` silently produced Memory Polynomial results. The -bug has been present since the script was first committed (`4924129`), meaning -the report's GMP rows cannot have come from the script as committed. - -**Fixed in this branch**: `main()` now selects the basis from `args.model`, and -the printed coefficient count follows the GMP hyperparameters. With the fix, both -GMP rows reproduce to ≤0.05 dB. - -### 2.3 HIGH — the whole APA benchmark rests on an undertrained surrogate - -The report's recipe (lr 5e-4, batch 256, 100 epochs, no LR schedule) leaves -recurrent PA models ~7 dB short of the noise floor. Re-running the QR benchmarks -with a converged surrogate (GRU h23 at -38.87 dB) changes the downstream numbers -substantially: - -| Model | Metric | Surrogate -31.4 dB | Surrogate -38.9 dB | Change | -|---|---|---|---|---| -| MP | ACLR_AVG | -41.02 | -41.81 | -0.8 | -| MP | EVM | -32.70 | **-47.41** | **-14.7** | -| GMP | ACLR_AVG | -38.75 | -39.58 | -0.8 | -| GMP | EVM | -38.50 | -34.89 | +3.6 | - -EVM moves by up to 14.7 dB and the MP-vs-GMP ranking flips. §8's claim that AI -beats the best traditional method by 10.6 dB in EVM on APA_200MHz does not -survive: MP alone reaches -47.41 dB EVM against a converged surrogate. The -DPA_160MHz half of the report is unaffected — its surrogate (-38.43 dB) was -already at its noise floor, which is exactly why that half reproduces cleanly. - -### 2.4 MEDIUM — reproduction commands are wrong or incomplete - -- §9 QR commands omit the `benchmark/` path prefix; as written they fail. -- §5.1 advertises "aggressive temporal sparsity" but §9's commands leave - `--thx/--thh` at their 0.0 defaults, i.e. a dense DeltaGRU is trained. -- `frame_length=200` / `frame_stride=1` are silent defaults, never stated. - -### 2.5 LOW — metric semantics are non-standard and undocumented - -- `EVM` is a spectral magnitude MAE (per-bin `mean|S_pred - S_gt| / mean|S_gt|`), - not a 3GPP constellation EVM: no demodulation, equalization, or symbol - decisions. Not comparable to instrument EVM. -- `ACLR` normalizes by the **maximum single sub-channel** power, not total - main-channel power. -- `NMSE` averages per-segment dB values rather than taking dB of the pooled - ratio. -- All Section 7 numbers are **simulated through the frozen PA surrogate**, not - measured on hardware, and therefore inherit the surrogate's error. - -These are self-consistent within the benchmark (all models scored identically), -but the report should say so. - -### 2.6 LOW — checkpoints collide across recipes - -`model_id` encodes only backbone / hidden size / frame length / parameter count. -Re-running the same architecture under a different recipe silently overwrites -`save//train_pa/.pt` and its logs. The GRU h23 checkpoint on -disk is now the OpenDPDv2-recipe model (-38.87 dB), not the report-recipe one. - ---- - -## 3. Dataset audit: APA_200MHz is clean - -The low NMSE is **not** a data defect. - -- **Git history**: only 4 commits ever touched `datasets/APA_200MHz/`; the CSVs - have been bit-identical since 2025-07-09 and every later commit changed only - `spec.json` metadata and plots. `fs`, `nperseg` and split ratios never changed. -- **Signal QA**: no NaN/Inf, no duplicate rows, no clipping (only the 1-2 samples - defining the normalization peak), DC offset < 1e-3, AM/AM relative spread - 0.045 (DPA_160MHz: 0.048). -- **Splits**: consistent power and complex gain across train/val/test (1.1626 / - 1.1628 / 1.1636); no discontinuity at the boundaries. -- **Alignment**: already time-aligned (peak lag 0, normalized cross-correlation - 0.9945). -- **Provenance**: R&S SMW200A → 3.5 GHz Ampleon GaN Doherty PA → Keysight N9042B - IQ capture (`Matlab/` scripts). -- **A vs B**: `APA_200MHz` and `APA_200MHz_b` have **byte-identical inputs** and - different output captures. Commit `2c7f91a` swapped the two output sets four - hours after release and renamed `APA_200MHz_backup` → `APA_200MHz_b`, so the - current primary dataset is the capture the OpenDPDv2 paper reported on. NMSE - between the two captures is -23.75 dB; since each is individually modelable to - -38.5 dB, that gap is a systematic operating-point difference, not noise. - -The closed-form ceiling is essentially the same for all three datasets -(APA -38.83, APA_b -38.48, DPA -39.51), so APA_200MHz is not a worse dataset. - ---- - -## 4. Root cause of the -31.5 dB plateau: the training recipe - -Backbone comparison at ~1,900 parameters on APA_200MHz (val / test NMSE, dB): - -| Backbone | Params | Report recipe
lr 5e-4, bs 256, 100 ep | OpenDPDv2 recipe
lr 5e-3, bs 64, 240 ep, ReduceLROnPlateau | -|---|---|---|---| -| GRU h23 | 1,911 | -31.48 / -31.40 | **-38.79 / -38.87** | -| DGRU h23 | 2,751 | -31.67 / -31.61 | **-39.13 / -39.21** | -| TCN h66 | 1,914 | -37.44 / -37.30 | -38.38 / -38.25 | -| TRes-GRU h22 | 1,916 | -35.62 / -35.50 | **-38.94 / -39.01** | - -The same GRU gains 7.4 dB from the recipe alone. Recurrent cells need the higher -learning rate and the schedule; the convolutional TCN is far less sensitive, -which is why it already reaches -37.4 dB under the weak recipe. With a proper -recipe all four architectures land within 0.9 dB of each other, because they are -all at the -38.6 dB noise floor — architecture ranking at that point is not -meaningful. - ---- - -## 5. Fix plan - -### 5.1 Applied in this branch - -- [x] `benchmark/benchmark_volterra_qr.py`: branch on `--model`, so GMP actually - builds the GMP basis (§2.2). -- [x] `backbones/tres_gru.py`: new TRes-GRU backbone (TRes-DeltaGRU with the - DeltaGRU cell replaced by a dense `nn.GRU`, bias-free so parameter counts - match at equal hidden size). Registered in `models.py` and in both backbone - choice lists in `arguments.py`. Validated numerically equivalent to - `tres_deltagru` at `thx=thh=0` (max abs diff 8.2e-7, relative L2 1.3e-6). -- [x] `benchmark/pa_modeling_investigation.md`: full write-up of the PA-modeling - investigation. -- [x] This plan. - -### 5.2 Pending — re-benchmark (the substantive work) - -1. **Retrain the APA_200MHz PA surrogate with the OpenDPDv2 recipe.** - ```bash - python main.py --step train_pa --dataset_name APA_200MHz --PA_backbone gru --PA_hidden_size 23 \ - --n_epochs 240 --lr 5e-3 --lr_schedule 1 --lr_end 1e-4 --decay_factor 0.5 --patience 10 --batch_size 64 - ``` - Expected ≈ -38.8 dB. Do the same for DPA_160MHz for consistency (it is already - at its floor, so little change is expected). - -2. **Re-run all four APA DPD rows** (GRU h11, TRes-DeltaGRU h10, MP/QR, GMP/QR) - against the retrained surrogate. Section 7's APA table and every Section 8 - conclusion derived from it must be recomputed — the EVM column in particular. - -3. **Correct the report text**: §4 APA PA NMSE, §9 command paths, DPA PAPR - (10.13 dB), the §8 EVM attribution, and add a note that Section 7 metrics are - surrogate-simulated with the non-standard definitions listed in §2.5. - -4. **Guard against regression**: make `model_id` encode the recipe (or at least - warn on overwrite), and add a smoke test that `--model gmp` produces a - different coefficient count than `--model mp`. - -### 5.3 Pending — PA backbone comparison at a fixed budget (started, then stopped) - -A sweep of every viable PA backbone at ~2,700 parameters under the OpenDPDv2 -recipe was launched and **deliberately stopped before completion** at the user's -request. Hidden sizes were already calibrated: - -| Backbone | h | Params | | Backbone | h | Params | -|---|---|---|---|---|---|---| -| GRU | 28 | 2,746 | | vDLSTM | 22 | 2,666 | -| DGRU | 23 | 2,751 | | DeltaGRU | 26 | 2,706 | -| TCN | 93 | 2,697 | | DeltaJANET | 32 | 2,626 | -| TRes-GRU | 27 | 2,751 | | PG-JANET | 19 | 2,719 | -| LSTM | 24 | 2,738 | | DVR-JANET | 19 | 2,665 | -| RVTDCNN | 68 | 2,684 | | QGRU | 27 | 2,729 | -| MCLDNN | 11 | 2,679 | | APNRRU | 34 | 2,723 | - -Excluded: `gmp` (fixed at 495 params), `bojanet` (caps at 1,346; breaks above -h=18), `apnrnn` (not implemented in `models.py`). `tres_deltagru` is redundant -with `tres_gru` at zero thresholds. - -Partial results before the stop (best val NMSE at the epoch reached, not final): - -| Backbone | Params | Epochs run | Best val NMSE | -|---|---|---|---| -| LSTM h24 | 2,738 | 126/240 | -38.88 | -| GRU h28 | 2,746 | 126/240 | -38.85 | -| TCN h93 | 2,697 | 213/240 | -38.54 | -| MCLDNN h11 | 2,679 | 76/240 | -31.77 | -| RVTDCNN h68 | 2,684 | 240/240 | -31.13 | -| TRes-GRU h27 | 2,751 | 1/240 | -30.72 | - -The runner script used is `benchmark/train_all_pa_2700.sh`. Resume by re-running -it; models already finished can be dropped from the `JOBS` list. - -Note that at ~2,700 parameters the well-behaved architectures are already pinned -at the -38.6 dB noise floor, so this sweep characterizes *which architectures -reach the floor and how fast*, not which is most accurate. RVTDCNN and MCLDNN -stalling near -31 dB is the interesting signal and worth a separate look. diff --git a/benchmark/benchmark_delta_dpd_results.png b/benchmark/benchmark_delta_dpd_results.png new file mode 100644 index 0000000000000000000000000000000000000000..80647f6d91696a9257d168b9c577cdc93c07dac1 GIT binary patch literal 112421 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 WrqtRe#v3X4XUaqytCN-s{Qm int: - return len(self.indices) - - -def _json_default(value: Any): - if isinstance(value, Path): - return str(value) - if isinstance(value, (np.floating, np.integer)): - return value.item() - if isinstance(value, torch.Tensor): - return value.detach().cpu().tolist() - raise TypeError(f"cannot serialize {type(value).__name__}") - - -def _write_json(path: Path, payload: dict[str, Any]) -> None: - path.parent.mkdir(parents=True, exist_ok=True) - path.write_text( - json.dumps(payload, indent=2, sort_keys=True, default=_json_default) + "\n", - encoding="utf-8", - ) - - -def _command_output(command: list[str], cwd: Path) -> str | None: - try: - result = subprocess.run( - command, cwd=cwd, check=True, capture_output=True, text=True - ) - except (OSError, subprocess.CalledProcessError): - return None - return result.stdout.strip() or None - - -def _sha256_file(path: Path) -> str: - digest = hashlib.sha256() - with path.open("rb") as handle: - for block in iter(lambda: handle.read(1024 * 1024), b""): - digest.update(block) - return digest.hexdigest() - - -def _sync(device: torch.device) -> None: - if device.type == "cuda": - torch.cuda.synchronize(device) - - -def _configure_reproducibility(seed: int) -> None: - os.environ.setdefault("PYTHONHASHSEED", str(seed)) - os.environ.setdefault("CUBLAS_WORKSPACE_CONFIG", ":4096:8") - torch.manual_seed(seed) - np.random.seed(seed) - if torch.cuda.is_available(): - torch.cuda.manual_seed_all(seed) - torch.use_deterministic_algorithms(True) - torch.backends.cudnn.benchmark = False - torch.backends.cuda.matmul.allow_tf32 = False - torch.backends.cudnn.allow_tf32 = False - - -def _load_repo(repo_root: Path) -> SimpleNamespace: - repo_root = repo_root.resolve() - if not (repo_root / "models.py").is_file(): - raise FileNotFoundError(f"not an OpenDPD tree: {repo_root}") - sys.path.insert(0, str(repo_root)) - models = importlib.import_module("models") - data = importlib.import_module("modules.data_collector") - train_funcs = importlib.import_module("modules.train_funcs") - util = importlib.import_module("utils.util") - return SimpleNamespace( - root=repo_root, - models=models, - data=data, - train_funcs=train_funcs, - util=util, - ) - - -def _load_spec(repo_root: Path, dataset_name: str) -> dict[str, Any]: - path = repo_root / "datasets" / dataset_name / "spec.json" - with path.open(encoding="utf-8") as handle: - return json.load(handle) - - -def _build_core( - repo: SimpleNamespace, - backbone: str, - hidden_size: int, - thx: float = 0.0, - thh: float = 0.0, -): - with contextlib.redirect_stdout(io.StringIO()): - return repo.models.CoreModel( - input_size=2, - hidden_size=hidden_size, - num_layers=1, - backbone_type=backbone, - thx=thx, - thh=thh, - ) - - -def _cpu_state(module: torch.nn.Module) -> dict[str, torch.Tensor]: - return { - name: tensor.detach().cpu().clone() - for name, tensor in module.state_dict().items() - } - - -def _build_cascade( - repo: SimpleNamespace, - fixture: dict[str, Any], - device: torch.device, -): - config = fixture["config"] - pa = _build_core(repo, config["pa_backbone"], config["pa_hidden_size"]) - dpd = _build_core( - repo, - config["dpd_backbone"], - config["dpd_hidden_size"], - config["thx"], - config["thh"], - ) - pa.load_state_dict(fixture["pa_state"]) - dpd.load_state_dict(fixture["dpd_state"]) - cascade = repo.models.CascadedModel(dpd_model=dpd, pa_model=pa) - cascade.freeze_pa_model() - return cascade.to(device) - - -def _metric_args(spec: dict[str, Any]) -> SimpleNamespace: - return SimpleNamespace( - input_signal_fs=spec["input_signal_fs"], - bw_main_ch=spec["bw_main_ch"], - n_sub_ch=spec["n_sub_ch"], - nperseg=spec["nperseg"], - ) - - -def _metrics( - train_funcs: Any, - metric_args: SimpleNamespace, - prediction: np.ndarray, - ground_truth: np.ndarray, -) -> dict[str, float]: - result = train_funcs.calculate_metrics( - metric_args, {}, prediction, ground_truth - ) - return {name: float(result[name]) for name in METRIC_NAMES} - - -def _environment(repo_root: Path, device: torch.device) -> dict[str, Any]: - gpu = None - if device.type == "cuda": - gpu = torch.cuda.get_device_name(device) - source_files = [ - "backbones/tres_deltagru.py", - "models.py", - "modules/train_funcs.py", - "modules/cuda_graph_training.py", - "modules/data_collector.py", - "project.py", - ] - hashes = { - relative: _sha256_file(repo_root / relative) - for relative in source_files - if (repo_root / relative).is_file() - } - return { - "timestamp_utc": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime()), - "platform": platform.platform(), - "python": platform.python_version(), - "torch": torch.__version__, - "cuda_runtime": torch.version.cuda, - "device": str(device), - "gpu": gpu, - "git_commit": _command_output(["git", "rev-parse", "HEAD"], repo_root), - "git_dirty": bool(_command_output(["git", "status", "--short"], repo_root)), - "source_sha256": hashes, - } - - -def prepare(args: argparse.Namespace) -> None: - started = time.perf_counter() - repo = _load_repo(args.repo_root) - device = torch.device(args.device) - _configure_reproducibility(args.seed) - - arrays = repo.data.load_dataset(dataset_name=args.dataset_name) - x_train, y_train = arrays[0], arrays[1] - pa_dataset = repo.data.IQFrameDataset( - x_train, y_train, frame_length=args.frame_length, stride=args.pa_frame_stride - ) - - # Model initialization is intentionally done once. The resulting tensors, - # rather than a seed assumption, are the fixture contract used by every arm. - pa = _build_core(repo, args.pa_backbone, args.pa_hidden_size).to(device) - generator = torch.Generator().manual_seed(args.seed + 10_000) - loader = DataLoader( - pa_dataset, - batch_size=args.pa_batch_size, - shuffle=True, - generator=generator, - pin_memory=device.type == "cuda", - ) - optimizer = torch.optim.AdamW(pa.parameters(), lr=args.pa_lr) - criterion = torch.nn.MSELoss() - epoch_losses: list[float] = [] - pa.train() - for _ in range(args.pa_pretrain_epochs): - losses: list[float] = [] - for features, targets in loader: - features = features.to(device, non_blocking=True) - targets = targets.to(device, non_blocking=True) - optimizer.zero_grad(set_to_none=True) - loss = criterion(pa(features), targets) - loss.backward() - if args.grad_clip: - torch.nn.utils.clip_grad_norm_(pa.parameters(), args.grad_clip) - optimizer.step() - losses.append(float(loss.detach())) - epoch_losses.append(float(np.mean(losses))) - - # Re-seed before DPD construction so its state is independent of PA epoch - # count and can be regenerated deliberately if the fixture format changes. - torch.manual_seed(args.seed + 1) - if device.type == "cuda": - torch.cuda.manual_seed_all(args.seed + 1) - dpd = _build_core( - repo, - args.dpd_backbone, - args.dpd_hidden_size, - args.thx, - args.thh, - ) - fixture = { - "format_version": 1, - "config": { - "dataset_name": args.dataset_name, - "frame_length": args.frame_length, - "pa_backbone": args.pa_backbone, - "pa_hidden_size": args.pa_hidden_size, - "dpd_backbone": args.dpd_backbone, - "dpd_hidden_size": args.dpd_hidden_size, - "thx": args.thx, - "thh": args.thh, - "seed": args.seed, - }, - "pa_pretraining": { - "epochs": args.pa_pretrain_epochs, - "frame_stride": args.pa_frame_stride, - "batch_size": args.pa_batch_size, - "lr": args.pa_lr, - "epoch_losses": epoch_losses, - "surrogate_notice": ( - "Deterministically trained benchmark surrogate; the repository " - "does not contain a published PA checkpoint." - ), - }, - "pa_state": _cpu_state(pa), - "dpd_state": _cpu_state(dpd), - } - args.fixture.parent.mkdir(parents=True, exist_ok=True) - torch.save(fixture, args.fixture) - print( - json.dumps( - { - "fixture": str(args.fixture), - "sha256": _sha256_file(args.fixture), - "pa_final_loss": epoch_losses[-1] if epoch_losses else None, - "elapsed_s": time.perf_counter() - started, - }, - indent=2, - ) - ) - - -def _loader( - dataset: Any, - batch_size: int, - device: torch.device, - optimized: bool, - indices: Iterable[int] | None = None, -) -> DataLoader: - return DataLoader( - dataset, - batch_size=batch_size, - shuffle=False, - sampler=FixedOrderSampler(indices) if indices is not None else None, - pin_memory=optimized and device.type == "cuda", - ) - - -def _time_eval( - repo: SimpleNamespace, - model: torch.nn.Module, - loader: DataLoader, - criterion: torch.nn.Module, - device: torch.device, -): - _sync(device) - started = time.perf_counter() - log: dict[str, Any] = {} - _, prediction, truth = repo.train_funcs.net_eval( - log=log, - net=model, - dataloader=loader, - criterion=criterion, - device=device, - ) - _sync(device) - return time.perf_counter() - started, float(log["loss"]), prediction, truth - - -def _prediction_error(reference: np.ndarray, candidate: np.ndarray) -> dict[str, float]: - reference64 = np.asarray(reference, dtype=np.float64) - candidate64 = np.asarray(candidate, dtype=np.float64) - difference = candidate64 - reference64 - denominator = max(np.linalg.norm(reference64.ravel()), np.finfo(np.float64).tiny) - return { - "max_abs": float(np.max(np.abs(difference))), - "mean_abs": float(np.mean(np.abs(difference))), - "relative_l2": float(np.linalg.norm(difference.ravel()) / denominator), - } - - -def run(args: argparse.Namespace) -> None: - total_started = time.perf_counter() - repo = _load_repo(args.repo_root) - device = torch.device(args.device) - _configure_reproducibility(args.seed) - optimized = args.implementation != "original" - if device.type == "cuda": - torch.cuda.reset_peak_memory_stats(device) - if not args.progress: - repo.train_funcs.tqdm = lambda iterable: iterable - - fixture = torch.load(args.fixture, map_location="cpu", weights_only=False) - config = fixture["config"] - if args.dataset_name != config["dataset_name"]: - raise ValueError( - f"fixture dataset {config['dataset_name']} != {args.dataset_name}" - ) - if args.frame_length != config["frame_length"]: - raise ValueError( - f"fixture frame length {config['frame_length']} != {args.frame_length}" - ) - spec = _load_spec(repo.root, args.dataset_name) - metric_args = _metric_args(spec) - - setup_started = time.perf_counter() - x_train, y_train, x_val, _, x_test, _ = repo.data.load_dataset( - dataset_name=args.dataset_name - ) - target_gain = float(repo.util.set_target_gain(x_train, y_train)) - train_set = repo.data.IQFrameDataset( - x_train, - target_gain * x_train, - frame_length=args.frame_length, - stride=args.frame_stride, - ) - val_set = repo.data.IQSegmentDataset( - x_val, target_gain * x_val, nperseg=spec["nperseg"] - ) - test_set = repo.data.IQSegmentDataset( - x_test, target_gain * x_test, nperseg=spec["nperseg"] - ) - - order_generator = torch.Generator().manual_seed(args.seed + 20_000) - orders = [ - torch.randperm(len(train_set), generator=order_generator).numpy() - for _ in range(args.epochs) - ] - val_loader = _loader(val_set, args.eval_batch_size, device, optimized) - test_loader = _loader(test_set, args.eval_batch_size, device, optimized) - setup_data_s = time.perf_counter() - setup_started - - # Compile and warm all kernels with a throw-away model so the measured - # epochs start from the immutable fixture state. - warm_started = time.perf_counter() - model = _build_cascade(repo, fixture, device) - warm_loader = _loader( - train_set, - args.batch_size, - device, - optimized, - orders[0][: args.batch_size], - ) - warm_features, warm_targets = next(iter(warm_loader)) - warm_features = warm_features.to(device, non_blocking=optimized) - warm_targets = warm_targets.to(device, non_blocking=optimized) - warm_loss = torch.nn.functional.mse_loss(model(warm_features), warm_targets) - warm_loss.backward() - _sync(device) - warmup_s = time.perf_counter() - warm_started - model.zero_grad(set_to_none=True) - del warm_features, warm_targets, warm_loss - - # Whole-cascade graph capture must not inherit AccumulateGrad nodes that a - # prior default-stream backward kept alive. The throw-away warm model has - # already populated global Triton/cuDNN caches; build an untouched model - # with the immutable fixture state for the captured training trajectory. - if args.cuda_graph_training: - del model - model = _build_cascade(repo, fixture, device) - - model_started = time.perf_counter() - trainable = tuple(parameter for parameter in model.parameters() if parameter.requires_grad) - optimizer_parameters = trainable if optimized else model.parameters() - optimizer = torch.optim.AdamW(optimizer_parameters, lr=args.lr) - scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau( - optimizer, - mode="min", - factor=args.decay_factor, - patience=args.patience, - threshold=1e-4, - min_lr=args.lr_end, - ) - criterion = torch.nn.MSELoss() - model_optimizer_setup_s = time.perf_counter() - model_started - trajectory: list[dict[str, Any]] = [] - epoch_times: list[dict[str, float]] = [] - best_val_aclr = float("inf") - best_epoch = -1 - best_dpd_state: dict[str, torch.Tensor] | None = None - - for epoch, order in enumerate(orders): - train_loader = _loader( - train_set, args.batch_size, device, optimized, order - ) - _sync(device) - train_started = time.perf_counter() - train_log: dict[str, Any] = {} - train_kwargs = dict( - log=train_log, - net=model, - dataloader=train_loader, - optimizer=optimizer, - criterion=criterion, - grad_clip_val=args.grad_clip, - device=device, - ) - # The detached reference worktree predates this opt-in keyword, so add - # it only for runs that explicitly request whole-step capture. - if args.cuda_graph_training: - train_kwargs["cuda_graph_training"] = True - repo.train_funcs.net_train(**train_kwargs) - _sync(device) - train_s = time.perf_counter() - train_started - - val_s, val_loss, val_prediction, val_truth = _time_eval( - repo, model, val_loader, criterion, device - ) - metric_started = time.perf_counter() - val_metrics = _metrics(repo.train_funcs, metric_args, val_prediction, val_truth) - val_metric_s = time.perf_counter() - metric_started - - test_s, test_loss, test_prediction, test_truth = _time_eval( - repo, model, test_loader, criterion, device - ) - metric_started = time.perf_counter() - test_metrics = _metrics(repo.train_funcs, metric_args, test_prediction, test_truth) - test_metric_s = time.perf_counter() - metric_started - - checkpoint_started = time.perf_counter() - if val_metrics["ACLR_AVG"] < best_val_aclr: - best_val_aclr = val_metrics["ACLR_AVG"] - best_epoch = epoch - best_dpd_state = _cpu_state(model.dpd_model) - checkpoint_s = time.perf_counter() - checkpoint_started - if args.lr_schedule: - scheduler.step(val_metrics["ACLR_AVG"]) - - trajectory.append( - { - "epoch": epoch, - "lr": float(optimizer.param_groups[0]["lr"]), - "train_loss": float(train_log["loss"]), - "val_loss": val_loss, - "test_loss": test_loss, - "val": val_metrics, - "test": test_metrics, - } - ) - epoch_times.append( - { - "train_s": train_s, - "val_inference_s": val_s, - "val_metrics_s": val_metric_s, - "test_inference_s": test_s, - "test_metrics_s": test_metric_s, - "checkpoint_s": checkpoint_s, - "total_s": ( - train_s - + val_s - + val_metric_s - + test_s - + test_metric_s - + checkpoint_s - ), - } - ) - - if best_dpd_state is None: - raise RuntimeError("no best checkpoint was selected") - model.dpd_model.load_state_dict(best_dpd_state) - best_test_s, best_test_loss, best_prediction, best_truth = _time_eval( - repo, model, test_loader, criterion, device - ) - metric_started = time.perf_counter() - best_metrics = _metrics(repo.train_funcs, metric_args, best_prediction, best_truth) - best_metric_s = time.perf_counter() - metric_started - - model.dpd_model.eval() - dpd_inference_started = time.perf_counter() - dpd_outputs: list[torch.Tensor] = [] - with torch.inference_mode(): - for features, _ in test_loader: - outputs = model.dpd_model( - features.to(device, non_blocking=optimized) - ) - dpd_outputs.append(outputs.cpu()) - best_dpd_prediction = torch.cat(dpd_outputs, dim=0).numpy() - _sync(device) - best_dpd_inference_s = time.perf_counter() - dpd_inference_started - - serialization_started = time.perf_counter() - args.output_dir.mkdir(parents=True, exist_ok=True) - order_path = args.output_dir / "batch_orders.npz" - np.savez_compressed(order_path, **{f"epoch_{i}": order for i, order in enumerate(orders)}) - output_path = args.output_dir / "outputs.npz" - np.savez_compressed( - output_path, - cascade=best_prediction, - dpd=best_dpd_prediction, - ground_truth=best_truth, - ) - checkpoint_path = args.output_dir / "best_dpd.pt" - torch.save(best_dpd_state, checkpoint_path) - _sync(device) - artifact_serialization_s = time.perf_counter() - serialization_started - - total_s = time.perf_counter() - total_started - result = { - "format_version": 1, - "implementation": args.implementation, - "repo_root": str(repo.root), - "fixture": { - "path": str(args.fixture.resolve()), - "sha256": _sha256_file(args.fixture), - "pa_pretraining": fixture["pa_pretraining"], - }, - "config": { - **config, - "frame_stride": args.frame_stride, - "batch_size": args.batch_size, - "eval_batch_size": args.eval_batch_size, - "epochs": args.epochs, - "lr": args.lr, - "lr_schedule": args.lr_schedule, - "lr_end": args.lr_end, - "decay_factor": args.decay_factor, - "patience": args.patience, - "grad_clip": args.grad_clip, - "hard_determinism": True, - "tf32": False, - "progress_display": args.progress, - "cuda_graph_training": args.cuda_graph_training, - "train_frames": len(train_set), - "train_batches": (len(train_set) + args.batch_size - 1) // args.batch_size, - }, - "environment": _environment(repo.root, device), - "timing": { - "setup_data_s": setup_data_s, - "compile_and_warmup_s": warmup_s, - "model_optimizer_setup_s": model_optimizer_setup_s, - "epochs": epoch_times, - "best_test_inference_s": best_test_s, - "best_test_metrics_s": best_metric_s, - "best_dpd_inference_s": best_dpd_inference_s, - "artifact_serialization_s": artifact_serialization_s, - "total_s": total_s, - "peak_allocated_mib": ( - torch.cuda.max_memory_allocated(device) / (1024**2) - if device.type == "cuda" - else None - ), - "peak_reserved_mib": ( - torch.cuda.max_memory_reserved(device) / (1024**2) - if device.type == "cuda" - else None - ), - }, - "trajectory": trajectory, - "best": { - "epoch": best_epoch, - "test_loss": best_test_loss, - "test": best_metrics, - }, - "artifacts": { - "orders": {"path": order_path.name, "sha256": _sha256_file(order_path)}, - "outputs": {"path": output_path.name, "sha256": _sha256_file(output_path)}, - "checkpoint": { - "path": checkpoint_path.name, - "sha256": _sha256_file(checkpoint_path), - }, - }, - } - _write_json(args.output_dir / "result.json", result) - print(json.dumps(result, indent=2, default=_json_default)) - - -def _state_error(reference: dict[str, torch.Tensor], candidate: dict[str, torch.Tensor]): - names = sorted(reference) - if names != sorted(candidate): - raise ValueError("checkpoint parameter names differ") - per_parameter: dict[str, dict[str, float]] = {} - for name in names: - per_parameter[name] = _prediction_error( - reference[name].detach().cpu().numpy(), - candidate[name].detach().cpu().numpy(), - ) - return { - "max_abs": max(item["max_abs"] for item in per_parameter.values()), - "max_relative_l2": max( - item["relative_l2"] for item in per_parameter.values() - ), - "per_parameter": per_parameter, - } - - -def compare(args: argparse.Namespace) -> None: - reference_result = json.loads((args.reference_dir / "result.json").read_text()) - candidate_result = json.loads((args.candidate_dir / "result.json").read_text()) - if reference_result["fixture"]["sha256"] != candidate_result["fixture"]["sha256"]: - raise ValueError("runs did not use the same fixture") - reference_orders = np.load(args.reference_dir / "batch_orders.npz") - candidate_orders = np.load(args.candidate_dir / "batch_orders.npz") - if reference_orders.files != candidate_orders.files or any( - not np.array_equal(reference_orders[name], candidate_orders[name]) - for name in reference_orders.files - ): - raise ValueError("runs did not use identical batch permutations") - - reference_outputs = np.load(args.reference_dir / "outputs.npz") - candidate_outputs = np.load(args.candidate_dir / "outputs.npz") - output_errors = { - name: _prediction_error(reference_outputs[name], candidate_outputs[name]) - for name in ("cascade", "dpd", "ground_truth") - } - reference_state = torch.load( - args.reference_dir / "best_dpd.pt", map_location="cpu", weights_only=True - ) - candidate_state = torch.load( - args.candidate_dir / "best_dpd.pt", map_location="cpu", weights_only=True - ) - state_errors = _state_error(reference_state, candidate_state) - - reference_train_s = sum( - epoch["train_s"] for epoch in reference_result["timing"]["epochs"] - ) - candidate_train_s = sum( - epoch["train_s"] for epoch in candidate_result["timing"]["epochs"] - ) - metric_deltas = { - name: ( - candidate_result["best"]["test"][name] - - reference_result["best"]["test"][name] - ) - for name in METRIC_NAMES - } - trajectory_deltas = [] - for reference_epoch, candidate_epoch in zip( - reference_result["trajectory"], candidate_result["trajectory"], strict=True - ): - trajectory_deltas.append( - { - "epoch": reference_epoch["epoch"], - "train_loss": candidate_epoch["train_loss"] - reference_epoch["train_loss"], - "val": { - name: candidate_epoch["val"][name] - reference_epoch["val"][name] - for name in METRIC_NAMES - }, - "test": { - name: candidate_epoch["test"][name] - reference_epoch["test"][name] - for name in METRIC_NAMES - }, - } - ) - - limits = { - "prediction_relative_l2": args.prediction_relative_l2_limit, - "metric_abs_db": args.metric_abs_db_limit, - } - checks = { - "same_fixture": True, - "same_batch_orders": True, - "cascade_prediction_relative_l2": ( - output_errors["cascade"]["relative_l2"] - <= args.prediction_relative_l2_limit - ), - "dpd_prediction_relative_l2": ( - output_errors["dpd"]["relative_l2"] - <= args.prediction_relative_l2_limit - ), - "all_metric_deltas": all( - abs(delta) <= args.metric_abs_db_limit for delta in metric_deltas.values() - ), - } - comparison = { - "format_version": 1, - "reference_dir": str(args.reference_dir.resolve()), - "candidate_dir": str(args.candidate_dir.resolve()), - "speed": { - "total_reference_s": reference_result["timing"]["total_s"], - "total_candidate_s": candidate_result["timing"]["total_s"], - "total_speedup": ( - reference_result["timing"]["total_s"] - / candidate_result["timing"]["total_s"] - ), - "train_reference_s": reference_train_s, - "train_candidate_s": candidate_train_s, - "train_speedup": reference_train_s / candidate_train_s, - }, - "best_epoch": { - "reference": reference_result["best"]["epoch"], - "candidate": candidate_result["best"]["epoch"], - }, - "metric_deltas_db": metric_deltas, - "output_errors": output_errors, - "checkpoint_errors": state_errors, - "trajectory_deltas": trajectory_deltas, - "acceptance_limits": limits, - "checks": checks, - "passed": all(checks.values()), - } - _write_json(args.json_out, comparison) - print(json.dumps(comparison, indent=2, default=_json_default)) - if args.fail_on_mismatch and not comparison["passed"]: - raise SystemExit(1) - - -def _common_config(parser: argparse.ArgumentParser) -> None: - parser.add_argument("--repo-root", type=Path, default=SCRIPT_ROOT) - parser.add_argument("--fixture", type=Path, required=True) - parser.add_argument("--dataset-name", default="DPA_200MHz") - parser.add_argument("--frame-length", type=int, default=200) - parser.add_argument("--seed", type=int, default=0) - parser.add_argument("--device", default=DEFAULT_DEVICE) - - -def parse_args() -> argparse.Namespace: - parser = argparse.ArgumentParser(description=__doc__) - subparsers = parser.add_subparsers(dest="command", required=True) - - prepare_parser = subparsers.add_parser("prepare", help="create immutable model fixture") - _common_config(prepare_parser) - prepare_parser.add_argument("--pa-backbone", default="dgru") - prepare_parser.add_argument("--pa-hidden-size", type=int, default=23) - prepare_parser.add_argument("--dpd-backbone", default="tres_deltagru") - prepare_parser.add_argument("--dpd-hidden-size", type=int, default=15) - prepare_parser.add_argument("--thx", type=float, default=0.01) - prepare_parser.add_argument("--thh", type=float, default=0.05) - prepare_parser.add_argument("--pa-pretrain-epochs", type=int, default=20) - prepare_parser.add_argument("--pa-frame-stride", type=int, default=16) - prepare_parser.add_argument("--pa-batch-size", type=int, default=256) - prepare_parser.add_argument("--pa-lr", type=float, default=5e-4) - prepare_parser.add_argument("--grad-clip", type=float, default=200.0) - - run_parser = subparsers.add_parser("run", help="run one implementation") - _common_config(run_parser) - run_parser.add_argument( - "--implementation", - choices=( - "original", "eager_optimized", "fused_optimized", - "graph_optimized", "optimized", - ), - required=True, - ) - run_parser.add_argument("--output-dir", type=Path, required=True) - run_parser.add_argument("--frame-stride", type=int, default=16) - run_parser.add_argument("--batch-size", type=int, default=64) - run_parser.add_argument("--eval-batch-size", type=int, default=256) - run_parser.add_argument("--epochs", type=int, default=3) - run_parser.add_argument("--lr", type=float, default=5e-3) - run_parser.add_argument("--lr-schedule", action="store_true") - run_parser.add_argument("--lr-end", type=float, default=1e-4) - run_parser.add_argument("--decay-factor", type=float, default=0.5) - run_parser.add_argument("--patience", type=int, default=10) - run_parser.add_argument("--grad-clip", type=float, default=200.0) - run_parser.add_argument("--progress", action="store_true") - run_parser.add_argument("--cuda-graph-training", action="store_true") - - compare_parser = subparsers.add_parser("compare", help="compare two run directories") - compare_parser.add_argument("--reference-dir", type=Path, required=True) - compare_parser.add_argument("--candidate-dir", type=Path, required=True) - compare_parser.add_argument("--json-out", type=Path, required=True) - compare_parser.add_argument("--prediction-relative-l2-limit", type=float, default=1e-4) - compare_parser.add_argument("--metric-abs-db-limit", type=float, default=0.05) - compare_parser.add_argument("--fail-on-mismatch", action="store_true") - - return parser.parse_args() - - -def main() -> None: - args = parse_args() - if args.command == "prepare": - prepare(args) - elif args.command == "run": - run(args) - else: - compare(args) - - -if __name__ == "__main__": - main() diff --git a/benchmark/benchmark_report.md b/benchmark/benchmark_report.md index 923d10f..efb3239 100644 --- a/benchmark/benchmark_report.md +++ b/benchmark/benchmark_report.md @@ -1,187 +1,138 @@ -# DPD Benchmark Report: AI vs. Traditional Approaches +# OpenDPD PA Modeling and DPD Benchmark -## 1. Overview - -This report benchmarks Digital Pre-Distortion (DPD) algorithms across two categories: - -- **AI-based (neural network)**: GRU and TRes-DeltaGRU, trained via stochastic gradient descent (SGD) -- **Traditional (polynomial)**: Memory Polynomial (MP) and Generalized Memory Polynomial (GMP), identified via QR decomposition (closed-form least squares) - -All models are constrained to approximately 500 real-valued parameters for a fair comparison. Evaluation uses Adjacent Channel Leakage Ratio (ACLR) and Error Vector Magnitude (EVM), where more negative values indicate better performance. +## Technical summary -## 2. Test Signals +This benchmark evaluates MP, GMP, GRU, TRes-GRU, and TRes-DeltaGRU (THX=THH=0) for PA modeling on APA_200MHz and DPA_160MHz. The DPD comparison evaluates MP, GMP, GRU, and TRes-GRU. PA models use approximately 2,700 real parameters; DPD models use approximately 1,000. Every neural run uses the same 300-epoch optimization recipe. MP PA uses direct least squares and GMP PA uses rank-controlled truncated SVD; their predistorters use the indirect learning architecture (ILA). The four-model DPD comparison uses the dataset-specific TRes-GRU-H27 PA checkpoint selected by validation NMSE. A separate sensitivity experiment trains TRes-DeltaGRU-H15 DPD independently through both the TRes-GRU-H27 and zero-threshold TRes-DeltaGRU-H27 PA surrogates. -| Property | APA_200MHz | DPA_160MHz | -|----------|-----------|-----------| -| Standard | LTE TM3.1a | OFDM | -| Configuration | 5-carrier x 40 MHz | 4-carrier x 40 MHz | -| Total Bandwidth | 200 MHz | 160 MHz | -| Modulation | 256-QAM | 1024-QAM | -| PAPR | 10.01 dB (at CCDF of 0.001%) | 10.38 dB | -| Sampling Rate | 983.04 MHz | 640 MHz | -| Dataset Size | 98,304 samples | 491,520 samples | -| Segment Size (nperseg) | 19,662 | 16,384 | -| Sub-channels | 5 | 4 | -| Dataset Split | 60% / 20% / 20% (train / val / test) | 60% / 20% / 20% (train / val / test) | - -## 3. Power Amplifier Devices Under Test (DUT) - -| Property | APA_200MHz | DPA_160MHz | -|----------|-----------|-----------| -| PA Type | GaN Doherty PA | 40 nm CMOS Digital PA (DPA) | -| Part / Technology | Ampleon AR211132 (evaluation board) | 40 nm CMOS | -| Carrier Frequency | 3.5 GHz | 2.4 GHz | -| Average Output Power | 41.2 dBm | 13.75 dBm | -| P1dB Compression Point | 46.5 dBm | - | -| P3dB Compression Point | 50 dBm | - | -| Flat Gain Bandwidth | 200 MHz | 160 MHz | -| Reference | Wu et al., "OpenDPDv2," arXiv:2507.06849 | Wu et al., "MP-DPD," IEEE IMS 2024, arXiv:2404.15364 | +## Key findings -The APA_200MHz dataset uses a high-power 3.5 GHz GaN Doherty PA designed for 5G base station applications. The DPA_160MHz dataset uses a low-power 2.4 GHz CMOS digital PA targeting Wi-Fi/IoT transmitter applications. Both PAs exhibit nonlinear distortion with memory effects, requiring DPD to meet spectral emission standards. +- **APA_200MHz:** the validation PA leader is TRes-DeltaGRU-H27 (THX=THH=0) at -39.0929 dB NMSE (-39.1777 dB test). The validation DPD leader is TRes-GRU-H15 at -53.4736 dB ACLR average (-53.4879 dB test). For TRes-DeltaGRU-H15 DPD, the better validation result uses the TRes-DeltaGRU-H27 (THX=THH=0) PA surrogate at -54.4874 dB ACLR average (-54.4010 dB test). +- **DPA_160MHz:** the validation PA leader is TRes-DeltaGRU-H27 (THX=THH=0) at -39.4802 dB NMSE (-39.7353 dB test). The validation DPD leader is TRes-GRU-H15 at -60.7425 dB ACLR average (-60.3717 dB test). For TRes-DeltaGRU-H15 DPD, the better validation result uses the TRes-DeltaGRU-H27 (THX=THH=0) PA surrogate at -61.9253 dB ACLR average (-61.6586 dB test). +- **APA GMP stability:** column-normalized truncated SVD at `rcond=1e-04` retains 650/1,350 singular directions. Validation/test NMSE is -38.70/-38.66 dB. The fixed cutoff suppresses ill-conditioned delayed-envelope directions instead of applying CUDA `gels`'s invalid full-rank assumption. -## 4. PA Surrogate Model +![Test-set PA modeling and DPD results](benchmark_results.png) -All DPD models are evaluated through the same trained GRU PA surrogate model per dataset, ensuring a fair comparison. The PA model is frozen during DPD training (indirect learning architecture). +*Test split; more negative is better. Outlined points are the models selected by validation. DPD is simulated through the dataset-specific TRes-GRU-H27 PA surrogate.* -| Dataset | PA Backbone | PA Hidden Size | PA Parameters | PA Training | Best PA NMSE | -|---------|-------------|----------------|---------------|-------------|-------------| -| APA_200MHz | GRU | 23 | 1,911 | 100 epochs, AdamW, lr=5e-4 | -43.52 dB | -| DPA_160MHz | GRU | 24 | 2,066 | 100 epochs, AdamW, lr=5e-4 | -38.43 dB | +![TRes-DeltaGRU DPD PA-surrogate sensitivity](benchmark_delta_dpd_results.png) -## 5. DPD Algorithms +*Test split; each point is an independently trained TRes-DeltaGRU-H15 DPD using the named frozen PA surrogate. These results compare surrogate sensitivity, not measurements from one shared physical PA.* -### 5.1 AI-Based Models (trained via SGD) +## APA_200MHz -**GRU (Gated Recurrent Unit)** -- Standard PyTorch GRU cell followed by a linear output layer -- Input: I/Q samples (2D); Output: I/Q samples (2D) -- Configuration: hidden_size=11, num_layers=1 -- Parameters: 519 real-valued +### PA modeling -**TRes-DeltaGRU (Temporal Residual Delta GRU)** -- Delta GRU cell with TCN-based temporal residual skip connection (Wu et al., OpenDPDv2, arXiv:2507.06849) -- The TCN residual path decouples output dynamics from hidden-state sparsity, enabling aggressive temporal sparsity without linearization loss -- Configuration: hidden_size=10, num_layers=1, Conv1d(2,3,k=3,d=16) + Conv1d(3,2,k=1) -- Parameters: 524 real-valued +| Model | Parameters | Method | Selected epoch | NMSE, val / test (dB) | EVM, val / test (dB) | Validation ACLR L / R / avg (dB) | Test ACLR L / R / avg (dB) | +|---|---:|---|---:|---:|---:|---:|---:| +| MP | 2,700 | Direct least squares | N/A | -37.0405 / -36.9635 | -40.2302 / -39.9571 | -27.4060 / -27.3703 / -27.3881 | -27.8869 / -27.7765 / -27.8317 | +| GMP | 2,700 | Truncated SVD (rank 650/1,350) | N/A | -38.7020 / -38.6606 | -43.0540 / -42.7971 | -27.4053 / -27.4129 / -27.4091 | -27.7830 / -27.6294 / -27.7062 | +| GRU-H28 | 2,746 | Supervised, AdamW | 292 | -38.8504 / -38.9367 | -43.6317 / -43.5732 | -27.3455 / -27.4211 / -27.3833 | -27.6783 / -27.6725 / -27.6754 | +| TRes-GRU-H27 | 2,751 | Supervised, AdamW | 288 | -39.0447 / -39.1293 | -43.9118 / -43.9299 | -27.4100 / -27.4074 / -27.4087 | -27.7503 / -27.6404 / -27.6953 | +| TRes-DeltaGRU-H27 (THX=THH=0) | 2,751 | Supervised, AdamW | 294 | -39.0929 / -39.1777 | -44.0254 / -43.9683 | -27.3872 / -27.4456 / -27.4164 | -27.6800 / -27.6721 / -27.6761 | -### 5.2 Traditional Models (identified via QR) +### DPD -**MP (Memory Polynomial)** -- Diagonal subset of the Volterra series: basis functions `x(n-q) * |x(n-q)|^k` -- Configuration: K=5 nonlinearity orders, Q=50 memory depth -- Parameters: 250 complex coefficients = 500 real-valued -- Identification: one-shot least-squares via `numpy.linalg.lstsq` (SVD-based) +| Model | Parameters | Method | Selected epoch | NMSE, val / test (dB) | EVM, val / test (dB) | Validation ACLR L / R / avg (dB) | Test ACLR L / R / avg (dB) | +|---|---:|---|---:|---:|---:|---:|---:| +| MP | 1,000 | ILA, least squares | N/A | -42.1149 / -42.1896 | -48.1895 / -48.1535 | -45.5590 / -44.2857 / -44.9224 | -46.0740 / -44.2980 / -45.1860 | +| GMP | 1,000 | ILA, least squares | N/A | -38.3167 / -38.5259 | -46.2753 / -46.3523 | -43.5560 / -42.3895 / -42.9727 | -44.0657 / -43.1207 / -43.5932 | +| GRU-H16 | 994 | DLA, AdamW | 299 | -45.1735 / -45.1315 | -47.6885 / -47.4275 | -51.3857 / -51.2623 / -51.3240 | -51.0559 / -50.9669 / -51.0114 | +| TRes-GRU-H15 | 999 | DLA, AdamW | 296 | -44.0368 / -44.2859 | -44.8654 / -45.0973 | -53.2065 / -53.7407 / -53.4736 | -53.4693 / -53.5066 / -53.4879 | -**GMP (Generalized Memory Polynomial)** -- Extended Memory Polynomial with lagging and leading cross-terms (Morgan et al., IEEE TSP, 2006) -- Aligned terms: `x(n-q) * |x(n-q)|^k` (Ka=5, La=15 -> 75 terms) -- Lagging cross-terms: `x(n-q) * |x(n-q-l)|^k` (Kb=4, Lb=15, Mb=2 -> 120 terms) -- Leading cross-terms: `x(n-q) * |x(n-q+l)|^k` (Kc=4, Lc=15, Mc=1 -> 60 terms) -- Parameters: 255 complex coefficients = 510 real-valued -- Identification: one-shot least-squares via `numpy.linalg.lstsq` (SVD-based) +### TRes-DeltaGRU DPD by PA surrogate -Both traditional models use the Indirect Learning Architecture (ILA): build basis from normalized PA output, solve for postdistorter coefficients, then copy to predistorter. +Both rows use TRes-DeltaGRU-H15 with 999 parameters and THX=THH=0. They are separately trained through the indicated frozen PA surrogate. -## 6. Training Configuration +| PA surrogate | PA NMSE, val / test (dB) | DPD parameters | Selected epoch | DPD NMSE, val / test (dB) | DPD EVM, val / test (dB) | DPD ACLR avg, val / test (dB) | +|---|---:|---:|---:|---:|---:|---:| +| TRes-GRU-H27 | -39.0447 / -39.1293 | 999 | 264 | -46.8471 / -46.9184 | -48.3486 / -48.2629 | -53.2898 / -53.6435 | +| TRes-DeltaGRU-H27 (THX=THH=0) | -39.0929 / -39.1777 | 999 | 296 | -47.8582 / -47.9703 | -49.8200 / -49.6999 | -54.4874 / -54.4010 | -### SGD-Based Models (GRU, TRes-DeltaGRU) +## DPA_160MHz -| Parameter | Value | -|-----------|-------| -| Optimizer | AdamW | -| Learning Rate | 5e-4 | -| Epochs | 300 | -| Batch Size | 256 | -| Loss Function | MSE (L2) | -| LR Schedule | None | -| Gradient Clipping | 200 | -| Best Model Selection | Validation ACLR_AVG | -| Seed | 0 | +### PA modeling -### QR-Based Models (MP, GMP) +| Model | Parameters | Method | Selected epoch | NMSE, val / test (dB) | EVM, val / test (dB) | Validation ACLR L / R / avg (dB) | Test ACLR L / R / avg (dB) | +|---|---:|---|---:|---:|---:|---:|---:| +| MP | 2,700 | Direct least squares | N/A | -37.9823 / -38.3506 | -40.3940 / -40.9035 | -34.9319 / -34.4718 / -34.7018 | -35.1443 / -34.6409 / -34.8926 | +| GMP | 2,700 | Truncated SVD (rank 918/1,350) | N/A | -38.9088 / -39.4014 | -41.6537 / -42.3839 | -34.9108 / -34.3514 / -34.6311 | -35.0859 / -34.5171 / -34.8015 | +| GRU-H28 | 2,746 | Supervised, AdamW | 34 | -39.0801 / -39.4908 | -42.1993 / -42.8282 | -34.9599 / -34.5649 / -34.7624 | -35.0367 / -34.6393 / -34.8380 | +| TRes-GRU-H27 | 2,751 | Supervised, AdamW | 25 | -39.3229 / -39.7044 | -42.5812 / -43.1447 | -34.9905 / -34.4694 / -34.7299 | -35.1550 / -34.6605 / -34.9078 | +| TRes-DeltaGRU-H27 (THX=THH=0) | 2,751 | Supervised, AdamW | 16 | -39.4802 / -39.7353 | -42.9642 / -43.3196 | -34.9649 / -34.4466 / -34.7057 | -35.1432 / -34.6450 / -34.8941 | -| Parameter | Value | -|-----------|-------| -| Solver | `numpy.linalg.lstsq` (SVD/QR internally) | -| Training Iterations | 1 (closed-form) | -| Regularization | None | -| Training Data | Full training set | +### DPD -## 7. Results +| Model | Parameters | Method | Selected epoch | NMSE, val / test (dB) | EVM, val / test (dB) | Validation ACLR L / R / avg (dB) | Test ACLR L / R / avg (dB) | +|---|---:|---|---:|---:|---:|---:|---:| +| MP | 1,000 | ILA, least squares | N/A | -43.5581 / -43.1938 | -50.4204 / -50.5002 | -49.0670 / -52.1969 / -50.6320 | -49.4442 / -52.4261 / -50.9351 | +| GMP | 1,000 | ILA, least squares | N/A | -44.2662 / -43.9721 | -50.1286 / -50.1887 | -52.3572 / -53.2123 / -52.7847 | -52.6167 / -53.6083 / -53.1125 | +| GRU-H16 | 994 | DLA, AdamW | 297 | -49.9059 / -49.7602 | -53.7314 / -53.9790 | -57.6084 / -57.0975 / -57.3530 | -57.6760 / -56.8525 / -57.2642 | +| TRes-GRU-H15 | 999 | DLA, AdamW | 296 | -52.9106 / -53.1938 | -57.1425 / -57.8451 | -60.4579 / -61.0271 / -60.7425 | -60.2712 / -60.4722 / -60.3717 | -### 7.1 APA_200MHz (3.5 GHz GaN Doherty PA, 5-carrier LTE, 200 MHz BW, 256-QAM) +### TRes-DeltaGRU DPD by PA surrogate -| Rank | Model | Parameters | Method | ACLR_AVG (dB) | EVM (dB) | -|------|-------|-----------|--------|---------------|----------| -| 1 | **TRes-DeltaGRU** | 524 | SGD 300ep | **-53.35** | **-49.08** | -| 2 | GRU | 519 | SGD 300ep | -52.61 | -47.50 | -| 3 | MP | 500 | QR | -41.01 | -32.68 | -| 4 | GMP | 510 | QR | -38.80 | -38.53 | +Both rows use TRes-DeltaGRU-H15 with 999 parameters and THX=THH=0. They are separately trained through the indicated frozen PA surrogate. -### 7.2 DPA_160MHz (2.4 GHz CMOS Digital PA, 4-carrier, 160 MHz BW, 1024-QAM) +| PA surrogate | PA NMSE, val / test (dB) | DPD parameters | Selected epoch | DPD NMSE, val / test (dB) | DPD EVM, val / test (dB) | DPD ACLR avg, val / test (dB) | +|---|---:|---:|---:|---:|---:|---:| +| TRes-GRU-H27 | -39.3229 / -39.7044 | 999 | 295 | -53.8684 / -54.2446 | -57.9312 / -58.8486 | -61.5425 / -61.0442 | +| TRes-DeltaGRU-H27 (THX=THH=0) | -39.4802 / -39.7353 | 999 | 293 | -54.1159 / -54.3722 | -58.2478 / -59.3978 | -61.9253 / -61.6586 | -| Rank | Model | Parameters | Method | ACLR_AVG (dB) | EVM (dB) | -|------|-------|-----------|--------|---------------|----------| -| 1 | **TRes-DeltaGRU** | 524 | SGD 300ep | **-56.81** | **-54.00** | -| 2 | GMP | 510 | QR | -54.02 | -51.08 | -| 3 | GRU | 519 | SGD 300ep | -51.93 | -49.97 | -| 4 | MP | 500 | QR | -51.29 | -50.26 | +## Definitions -## 8. Analysis +- **NMSE:** normalized mean-square error in dB; more negative is better. The implementation averages per-segment dB ratios rather than pooling all samples into one ratio. +- **EVM:** the repository-specific mean absolute complex-spectrum error within the configured main channel, normalized within each subchannel by reference-spectrum magnitude and converted with `20 log10`. It is not demodulated constellation EVM; more negative is better. +- **ACLR L / R / avg:** adjacent-subchannel power normalized by the strongest configured main-channel subchannel, plus the arithmetic mean of left and right, in dB. More negative is better. +- **Parameters:** neural checkpoint tensor elements. MP/GMP count two real degrees of freedom for every complex coefficient. +- **Selected epoch:** zero-based neural checkpoint epoch. It is N/A for closed-form least-squares fits. -### AI vs. Traditional +## Model configurations -- On **APA_200MHz** (wider bandwidth, more carriers), the AI models dominate: TRes-DeltaGRU leads the best traditional method (MP) by **12.3 dB in ACLR** and **10.6 dB in EVM**. The recurrent hidden state captures complex long-range memory effects that polynomial basis functions cannot. -- On **DPA_160MHz**, the gap narrows but AI still leads: TRes-DeltaGRU beats the best traditional method (GMP/QR) by **2.8 dB in ACLR** and **2.9 dB in EVM**. The traditional GMP/QR is competitive here, outperforming vanilla GRU. +| Stage | MP | GMP | GRU | TRes-GRU | TRes-DeltaGRU | +|---|---|---|---|---|---| +| PA modeling | K=9, Q=150 | Ka/La=5/30; Kb/Lb/Mb=4/30/5; Kc/Lc/Mc=4/30/5 | H28 | H27 | H27, THX=THH=0 | +| DPD | K=5, Q=100 | Ka/La=5/20; Kb/Lb/Mb=4/20/3; Kc/Lc/Mc=4/20/2 | H16 | H15 | H15, THX=THH=0 (PA-surrogate sensitivity) | -### QR vs. SGD for Polynomial Models +## Temporal context and sequence boundaries -The identification method matters enormously for polynomial models. Comparing GMP trained with QR vs. SGD (100 epochs, from earlier experiments): +In sequence interiors, PA GMP uses up to five future samples and DPD GMP uses up to two through their leading-envelope terms. TRes-GRU and TRes-DeltaGRU use one-sample right context in their recurrent features and 16-sample right context in their dilated residual convolution. MP and GRU use no explicit future samples. -| Dataset | GMP (QR) ACLR | GMP (SGD 100ep) ACLR | Improvement | -|---------|--------------|---------------------|------------| -| APA_200MHz | -38.80 dB | -29.67 dB | +9.1 dB | -| DPA_160MHz | -54.02 dB | -44.46 dB | +9.6 dB | +These are offline segmented evaluations. GMP delay accesses are zero-filled and reset at each `nperseg` boundary. In both TRes models, `torch.roll(..., shifts=-1)` wraps the final position to the first sample of the same supplied sequence; the convolution zero-pads both boundaries, and recurrent state resets for each sequence. Neural optimization uses overlapping 200-sample frames with stride 1, while validation and test use independent `nperseg` segments. -QR finds the global optimum in one shot; SGD with 100 epochs of Adam cannot reach it for this convex problem. This demonstrates that when the model is linear-in-parameters, closed-form solvers are strictly superior to iterative gradient descent. +## Methodology -### TRes-DeltaGRU vs. GRU +Neural PA and DPD models use batch size 64, 300 epochs, AdamW with MSE loss, initial learning rate 5e-3, and ReduceLROnPlateau with factor 0.5, patience 5, and minimum learning rate 5e-5. Frame length is 200, frame stride is 1, and seed is 0. PA checkpoints are selected by minimum validation NMSE; neural DPD checkpoints are selected by minimum validation ACLR average. -TRes-DeltaGRU consistently outperforms vanilla GRU across both datasets: +The TRes-DeltaGRU PA and DPD runs use input-delta threshold THX=0 and hidden-state-delta threshold THH=0. This disables threshold-induced temporal pruning; exact arithmetic deltas may still naturally be zero. The configuration therefore evaluates the dense zero-threshold recurrence, not a sparsity or efficiency claim. -| Dataset | TRes-DeltaGRU ACLR | GRU ACLR | Gap | -|---------|-------------------|----------|-----| -| APA_200MHz | -53.35 dB | -52.61 dB | +0.7 dB | -| DPA_160MHz | -56.81 dB | -51.93 dB | +4.9 dB | +AdamW uses weight decay 0.01, betas (0.9, 0.999), and epsilon 1e-8. The scheduler uses relative threshold 1e-4, cooldown 0, and epsilon 1e-8. -The TCN skip connection provides a direct residual path from input to output, decoupling the output from hidden-state dynamics. This is especially beneficial on DPA_160MHz where the improvement is nearly 5 dB. +MP and GMP are complex polynomial models fit after L2 column scaling. MP and both ILA-DPD fits use `torch.linalg.lstsq` (`gels`). GMP PA modeling uses `torch.linalg.svd` (`gesvdj`) with a fixed relative cutoff of 1e-04; the effective retained rank is reported with each GMP PA result. These closed-form fits do not use the neural batch, epoch, optimizer, or learning-rate settings. PA polynomial fits map measured PA input to output directly. DPD polynomial fits use ILA, fitting a postdistorter and copying its coefficients to the predistorter. No ridge penalty or validation-tuned regularization is applied. -## 9. Reproducing These Results +Each dataset uses its independently trained TRes-GRU-H27 PA surrogate for the four-model DPD comparison. The two TRes-DeltaGRU-H15 sensitivity rows are separate DPD training runs, one through that TRes-GRU PA and one through the independently trained TRes-DeltaGRU-H27 PA. Training data supply all gradient and least-squares fits. Neural validation metrics drive the learning-rate schedule and checkpoint selection; test data are not used for fitting, scheduling, or selection. -### SGD Models +## Limitations and robustness -```bash -# Train PA model (once per dataset) -python main.py --step train_pa --dataset_name APA_200MHz --PA_backbone gru --PA_hidden_size 23 --n_epochs 100 -python main.py --step train_pa --dataset_name DPA_160MHz --PA_backbone gru --PA_hidden_size 24 --n_epochs 100 +- Neural execution uses soft reproducibility with cuDNN benchmark enabled, so repeated runs can differ slightly. +- DPD scores measure simulated performance through a learned PA surrogate, not a fresh over-the-air or bench measurement. +- One seed is evaluated. The reported table is not a distribution over training runs. +- The five PA candidates and four primary DPD candidates are matched approximately by real parameter count, not by FLOPs, latency, memory traffic, or fit time. The PA-surrogate sensitivity experiment adds two independently trained TRes-DeltaGRU DPD runs per dataset. +- Results obtained through different learned PA surrogates are simulator-sensitivity evidence; they are not a controlled ranking against one shared physical PA response. +- CUDA `gels` assumes a full-rank design matrix and does not return numerical rank. It remains in use for MP and ILA-DPD; the GMP PA path records its SVD spectrum, cutoff, and retained rank. +- GMP PA has 1,350 stored complex coefficients (2,700 nominal real parameters), but truncated SVD reduces its effective rank. The comparison is matched by stored coefficient count, not effective degrees of freedom. +- Look-ahead is an input dependency, not measured inference latency. Streaming reformulations and continuous boundary/state handling are not evaluated. -# Train GRU DPD -python main.py --step train_dpd --dataset_name APA_200MHz --PA_backbone gru --PA_hidden_size 23 --DPD_backbone gru --DPD_hidden_size 11 --n_epochs 300 -python main.py --step train_dpd --dataset_name DPA_160MHz --PA_backbone gru --PA_hidden_size 24 --DPD_backbone gru --DPD_hidden_size 11 --n_epochs 300 +## Provenance -# Train TRes-DeltaGRU DPD -python main.py --step train_dpd --dataset_name APA_200MHz --PA_backbone gru --PA_hidden_size 23 --DPD_backbone tres_deltagru --DPD_hidden_size 10 --n_epochs 300 -python main.py --step train_dpd --dataset_name DPA_160MHz --PA_backbone gru --PA_hidden_size 24 --DPD_backbone tres_deltagru --DPD_hidden_size 10 --n_epochs 300 -``` - -### QR Models - -```bash -# MP (K=5, Q=50 -> 500 real params) -python benchmark_volterra_qr.py --dataset_name APA_200MHz --pa_hidden_size 23 --model mp --K 5 --Q 50 -python benchmark_volterra_qr.py --dataset_name DPA_160MHz --pa_hidden_size 24 --model mp --K 5 --Q 50 - -# GMP (255 complex = 510 real params) -python benchmark_volterra_qr.py --dataset_name APA_200MHz --pa_hidden_size 23 --model gmp -python benchmark_volterra_qr.py --dataset_name DPA_160MHz --pa_hidden_size 24 --model gmp -``` +- Generated: `2026-07-26T20:45:35.368238+00:00` +- Git commit: `3df35e081e6e41463fa46f21778c72a748823274` +- Git branch: `benchmark-fix` +- Git working tree at launch: `dirty`; exact source hashes and start status are retained in the machine evidence. +- Python: `3.13.14` +- PyTorch: `2.13.0+cu132` +- CUDA: `13.2` +- GPU: `NVIDIA RTX PRO 6000 Blackwell Workstation Edition` +- Canonical evidence schema: `6` (published from collector schema `6`); the source archive and completed job ledger are cryptographically bound in the machine-readable evidence. +- Reproduce the full matrix: [`reproduce_benchmark_report.sh`](reproduce_benchmark_report.sh) +- Machine-readable evidence: [`results/benchmark_report_results.json`](results/benchmark_report_results.json) +- Each reproduction run writes exact commands, a verified source snapshot, raw polynomial results, checkpoints, and CSV logs to its timestamped evidence directory. diff --git a/benchmark/benchmark_results.png b/benchmark/benchmark_results.png new file mode 100644 index 0000000000000000000000000000000000000000..9da917149ae866ebba4dc28fa31337ca9e843edb GIT binary patch literal 201177 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
mvS>dQ$_VYx@fgvRd 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 literal 0 HcmV?d00001 diff --git a/benchmark/benchmark_training_speed.py b/benchmark/benchmark_training_speed.py deleted file mode 100644 index a065d63..0000000 --- a/benchmark/benchmark_training_speed.py +++ /dev/null @@ -1,450 +0,0 @@ -#!/usr/bin/env python3 -"""Wall-clock training-speed benchmark for OpenDPD. - -For every combination of: - role : PA (CoreModel) - DPD (CascadedModel = trainable DPD CoreModel + frozen PA CoreModel) - backbone : GRU, TCN - target #P : 200, 500, 1000 (trainable parameters) - device : cpu, cuda (if available), mps (if available) - batch size : 16, 32, 64, 128, 256 - -train one epoch on a synthetic IQ tensor and record the wall-clock time and -sample throughput. Results are rendered as rich tables in the terminal and -written to a markdown report. - -Run: - python benchmark/benchmark_training_speed.py -""" -from __future__ import annotations - -import argparse -import contextlib -import io -import json -import platform -import sys -import time -from dataclasses import asdict, dataclass -from pathlib import Path - -ROOT = Path(__file__).resolve().parent.parent -sys.path.insert(0, str(ROOT)) - -import torch -import torch.nn as nn -from rich import box -from rich.console import Console -from rich.panel import Panel -from rich.table import Table -from torch.utils.data import DataLoader, TensorDataset -from tqdm import tqdm - -from models import CascadedModel, CoreModel - - -# ----------------------------------------------------------------------------- -# Configuration -# ----------------------------------------------------------------------------- -ROLES = ("PA", "DPD") -BACKBONES = ("gru", "tcn") -TARGET_PARAMS = (200, 500, 1000) -BATCH_SIZES = (16, 32, 64, 128, 256) - -# Hidden sizes chosen so the *trainable* parameter count lands close to the -# target. Exact counts (also reported in the output): -# GRU(input=2, hidden=H, output=2, num_layers=1) -> 3*H^2 + 14*H + 2 -# TCN(hidden_channels=H) -> 29*H -HIDDEN_SIZES = { - "gru": {200: 6, 500: 11, 1000: 16}, - "tcn": {200: 7, 500: 17, 1000: 34}, -} - -# DPD runs use a CascadedModel(DPD + frozen PA). The frozen PA matches the -# DPD backbone with a fixed mid-size hidden so the trainable parameter count -# corresponds purely to the DPD model. -FROZEN_PA_HIDDEN = {"gru": 11, "tcn": 17} - -INPUT_SIZE = 2 -FRAME_LENGTH = 200 -N_FRAMES = 2048 -SEED = 0 - - -# ----------------------------------------------------------------------------- -# Devices -# ----------------------------------------------------------------------------- -def discover_devices(force: list[str] | None = None) -> list[torch.device]: - if force: - return [torch.device(d) for d in force] - devices = [torch.device("cpu")] - if torch.cuda.is_available(): - devices.append(torch.device("cuda")) - mps = getattr(torch.backends, "mps", None) - if mps is not None and mps.is_available() and mps.is_built(): - devices.append(torch.device("mps")) - return devices - - -def device_short(device: torch.device) -> str: - return {"cuda": "GPU", "mps": "MPS", "cpu": "CPU"}[device.type] - - -def device_label(device: torch.device) -> str: - if device.type == "cuda": - idx = device.index if device.index is not None else 0 - try: - return f"GPU (CUDA): {torch.cuda.get_device_name(idx)}" - except Exception: - return "GPU (CUDA)" - if device.type == "mps": - return "Apple Silicon (MPS)" - return f"CPU ({platform.processor() or platform.machine()})" - - -def device_sync(device: torch.device) -> None: - if device.type == "cuda": - torch.cuda.synchronize(device) - elif device.type == "mps": - torch.mps.synchronize() - - -# ----------------------------------------------------------------------------- -# Model factory -# ----------------------------------------------------------------------------- -def build_model(role: str, backbone: str, target_p: int, - device: torch.device) -> nn.Module: - """Build a PA or DPD-cascaded model for the given config and move to device.""" - hidden = HIDDEN_SIZES[backbone][target_p] - # Suppress the "Backbone Initialized..." print from CoreModel.__init__. - with contextlib.redirect_stdout(io.StringIO()): - primary = CoreModel(input_size=INPUT_SIZE, hidden_size=hidden, - num_layers=1, backbone_type=backbone) - if role == "PA": - return primary.to(device) - pa = CoreModel(input_size=INPUT_SIZE, - hidden_size=FROZEN_PA_HIDDEN[backbone], - num_layers=1, backbone_type=backbone) - cascaded = CascadedModel(dpd_model=primary, pa_model=pa) - cascaded.freeze_pa_model() - return cascaded.to(device) - - -def trainable_params(net: nn.Module) -> int: - return sum(p.numel() for p in net.parameters() if p.requires_grad) - - -# ----------------------------------------------------------------------------- -# Single benchmark run -# ----------------------------------------------------------------------------- -@dataclass -class RunResult: - role: str - backbone: str - target_params: int - actual_params: int - device: str - batch_size: int - n_batches: int - epoch_seconds: float - samples_per_sec: float - - def to_dict(self) -> dict: - return asdict(self) - - -def run_one_epoch(role: str, backbone: str, target_p: int, - device: torch.device, batch_size: int, - features: torch.Tensor, targets: torch.Tensor, - outer_pbar: tqdm) -> RunResult: - torch.manual_seed(SEED) - net = build_model(role, backbone, target_p, device) - n_params = trainable_params(net) - - optimizer = torch.optim.AdamW( - (p for p in net.parameters() if p.requires_grad), lr=5e-4) - criterion = nn.MSELoss() - - loader = DataLoader(TensorDataset(features, targets), - batch_size=batch_size, shuffle=False, num_workers=0) - n_batches = len(loader) - net.train() - - # Warmup (one batch, not timed). Stabilises CUDA allocator / cuDNN - # autotune / first MPS kernel compile so the timed epoch is representative. - warm_x, warm_y = next(iter(loader)) - warm_x, warm_y = warm_x.to(device), warm_y.to(device) - optimizer.zero_grad() - criterion(net(warm_x), warm_y).backward() - optimizer.step() - device_sync(device) - - desc = f"{role:<3s} {backbone.upper():<3s} ~{target_p:>4d}P {device_short(device):<3s} bs={batch_size:<3d}" - inner = tqdm(loader, desc=desc, leave=False, position=1, - dynamic_ncols=True, file=sys.stdout) - - device_sync(device) - t0 = time.perf_counter() - n_samples = 0 - for x, y in inner: - x, y = x.to(device), y.to(device) - optimizer.zero_grad() - loss = criterion(net(x), y) - loss.backward() - optimizer.step() - n_samples += x.size(0) - device_sync(device) - elapsed = time.perf_counter() - t0 - inner.close() - - # Free memory before the next config. - del net, optimizer - if device.type == "cuda": - torch.cuda.empty_cache() - - outer_pbar.update(1) - return RunResult( - role=role, backbone=backbone, target_params=target_p, - actual_params=n_params, device=device_short(device), - batch_size=batch_size, n_batches=n_batches, - epoch_seconds=elapsed, - samples_per_sec=n_samples / elapsed if elapsed > 0 else float("nan"), - ) - - -# ----------------------------------------------------------------------------- -# Console rendering -# ----------------------------------------------------------------------------- -def _row_keys(results: list[RunResult]): - return sorted({(r.role, r.backbone, r.target_params, r.actual_params) - for r in results}) - - -def _find(results: list[RunResult], role: str, backbone: str, - target_p: int, batch_size: int) -> RunResult | None: - for r in results: - if (r.role == role and r.backbone == backbone - and r.target_params == target_p and r.batch_size == batch_size): - return r - return None - - -def make_results_table(results: list[RunResult], device_name: str) -> Table: - table = Table( - title=(f"[bold cyan]{device_name}[/bold cyan] " - f"[dim]— seconds / epoch • samples / sec[/dim]"), - box=box.SIMPLE_HEAVY, - title_style="bold", - header_style="bold magenta", - pad_edge=False, - ) - table.add_column("Role", justify="center", style="bold cyan") - table.add_column("Backbone", justify="center", style="bold") - table.add_column("Target #P", justify="right", style="dim") - table.add_column("Actual #P", justify="right") - for bs in BATCH_SIZES: - table.add_column(f"bs={bs}", justify="right") - - last_role: str | None = None - for role, backbone, tgt, act in _row_keys(results): - if last_role is not None and role != last_role: - table.add_section() - last_role = role - cells = [role, backbone.upper(), str(tgt), f"{act:,}"] - for bs in BATCH_SIZES: - r = _find(results, role, backbone, tgt, bs) - if r is None: - cells.append("[red]—[/red]") - else: - cells.append(f"[bold]{r.epoch_seconds:.3f}s[/bold]\n" - f"[green]{r.samples_per_sec:,.0f}[/green]") - table.add_row(*cells) - return table - - -def render_console(console: Console, all_results: list[RunResult], - device_descs: dict[str, str]) -> None: - by_device: dict[str, list[RunResult]] = {} - for r in all_results: - by_device.setdefault(r.device, []).append(r) - for device_short_name, rs in by_device.items(): - console.print() - console.print(make_results_table(rs, device_descs.get( - device_short_name, device_short_name))) - - -# ----------------------------------------------------------------------------- -# Markdown report -# ----------------------------------------------------------------------------- -def render_markdown(all_results: list[RunResult], - device_descs: dict[str, str], - sys_info: dict[str, str], total_seconds: float, - output: Path) -> None: - lines: list[str] = [] - lines.append("# OpenDPD Training-Speed Benchmark") - lines.append("") - lines.append( - "Wall-clock benchmark of one training epoch for **PA** and **DPD** " - "models with **GRU** and **TCN** backbones at three parameter scales " - "(~200, ~500, ~1000), across batch sizes " - f"{{{', '.join(str(b) for b in BATCH_SIZES)}}} on each available device." - ) - lines.append("") - - # System info - lines.append("## System") - lines.append("") - lines.append("| Field | Value |") - lines.append("|---|---|") - for k, v in sys_info.items(): - lines.append(f"| {k} | {v} |") - lines.append(f"| Total benchmark wall-clock | {total_seconds:.1f} s |") - lines.append("") - - # Configuration - lines.append("## Configuration") - lines.append("") - lines.append(f"- Synthetic dataset: **{N_FRAMES}** IQ frames of length " - f"**{FRAME_LENGTH}** (random, seed={SEED})") - lines.append("- Optimiser: **AdamW** (lr=5e-4), MSE loss") - lines.append("- 1 warmup batch (untimed) + 1 full epoch (timed) per configuration") - lines.append( - "- DPD runs use **CascadedModel(DPD + frozen PA)**; the frozen PA " - f"uses the same backbone as the DPD with hidden_size = " - f"{FROZEN_PA_HIDDEN['gru']} (GRU) / {FROZEN_PA_HIDDEN['tcn']} (TCN)." - ) - lines.append("") - lines.append("**Hidden sizes used to hit each parameter target**") - lines.append("") - lines.append("| Backbone | ~200 P | ~500 P | ~1000 P |") - lines.append("|---|---|---|---|") - for bb in BACKBONES: - cells = [bb.upper()] + [str(HIDDEN_SIZES[bb][p]) for p in TARGET_PARAMS] - lines.append("| " + " | ".join(cells) + " |") - lines.append("") - - # Results - lines.append("## Results") - lines.append("") - by_device: dict[str, list[RunResult]] = {} - for r in all_results: - by_device.setdefault(r.device, []).append(r) - - for device_short_name, rs in by_device.items(): - lines.append(f"### {device_descs.get(device_short_name, device_short_name)}") - lines.append("") - header = (["Role", "Backbone", "Target #P", "Actual #P"] - + [f"bs={bs}" for bs in BATCH_SIZES]) - - lines.append("**Wall-clock per epoch (seconds)**") - lines.append("") - lines.append("| " + " | ".join(header) + " |") - lines.append("|" + "|".join(["---"] * len(header)) + "|") - for role, backbone, tgt, act in _row_keys(rs): - row = [role, backbone.upper(), str(tgt), f"{act:,}"] - for bs in BATCH_SIZES: - r = _find(rs, role, backbone, tgt, bs) - row.append(f"{r.epoch_seconds:.3f}" if r else "—") - lines.append("| " + " | ".join(row) + " |") - lines.append("") - - lines.append("**Throughput (samples / sec)**") - lines.append("") - lines.append("| " + " | ".join(header) + " |") - lines.append("|" + "|".join(["---"] * len(header)) + "|") - for role, backbone, tgt, act in _row_keys(rs): - row = [role, backbone.upper(), str(tgt), f"{act:,}"] - for bs in BATCH_SIZES: - r = _find(rs, role, backbone, tgt, bs) - row.append(f"{r.samples_per_sec:,.0f}" if r else "—") - lines.append("| " + " | ".join(row) + " |") - lines.append("") - - output.write_text("\n".join(lines) + "\n") - - -# ----------------------------------------------------------------------------- -# Main -# ----------------------------------------------------------------------------- -def parse_args() -> argparse.Namespace: - p = argparse.ArgumentParser(description=__doc__, - formatter_class=argparse.RawDescriptionHelpFormatter) - p.add_argument("--devices", nargs="*", default=None, - choices=["cpu", "cuda", "mps"], - help="Override which devices to benchmark (default: auto).") - p.add_argument("--output", type=Path, - default=Path(__file__).resolve().parent - / "benchmark_training_speed_report.md", - help="Markdown report output path.") - p.add_argument("--json-output", type=Path, default=None, - help="Optional path to also dump raw results as JSON.") - return p.parse_args() - - -def main() -> None: - args = parse_args() - console = Console() - - devices = discover_devices(args.devices) - device_descs = {device_short(d): device_label(d) for d in devices} - - g = torch.Generator().manual_seed(SEED) - features = torch.randn(N_FRAMES, FRAME_LENGTH, INPUT_SIZE, generator=g) - targets = torch.randn(N_FRAMES, FRAME_LENGTH, INPUT_SIZE, generator=g) - - sys_info = { - "Platform": f"{platform.system()} {platform.release()} ({platform.machine()})", - "Python": platform.python_version(), - "PyTorch": torch.__version__, - "Devices": " | ".join(device_descs.values()), - "CPU threads (torch)": str(torch.get_num_threads()), - } - panel_text = "\n".join(f"[bold]{k:<22}[/bold] {v}" for k, v in sys_info.items()) - console.print(Panel( - panel_text, - title="[bold cyan]OpenDPD Training-Speed Benchmark[/bold cyan]", - border_style="cyan", expand=False, - )) - - configs = [ - (role, backbone, tp, dev, bs) - for dev in devices - for role in ROLES - for backbone in BACKBONES - for tp in TARGET_PARAMS - for bs in BATCH_SIZES - ] - console.print(f"[dim]Total configurations: {len(configs)}[/dim]\n") - - results: list[RunResult] = [] - bench_t0 = time.perf_counter() - - overall = tqdm(total=len(configs), desc="overall", position=0, - leave=True, dynamic_ncols=True, file=sys.stdout) - try: - for role, backbone, tp, dev, bs in configs: - try: - results.append(run_one_epoch( - role, backbone, tp, dev, bs, features, targets, overall)) - except RuntimeError as e: - overall.update(1) - console.print( - f"[red]Failed[/red] {role}/{backbone}/p{tp}/" - f"{device_short(dev)}/bs{bs}: {e}") - finally: - overall.close() - - total_seconds = time.perf_counter() - bench_t0 - - render_console(console, results, device_descs) - render_markdown(results, device_descs, sys_info, total_seconds, args.output) - console.print(f"\n[green]Markdown report written to:[/green] {args.output}") - - if args.json_output: - args.json_output.write_text( - json.dumps([r.to_dict() for r in results], indent=2)) - console.print(f"[green]JSON results written to:[/green] {args.json_output}") - - -if __name__ == "__main__": - main() diff --git a/benchmark/benchmark_training_speed_report.md b/benchmark/benchmark_training_speed_report.md deleted file mode 100644 index 815a46d..0000000 --- a/benchmark/benchmark_training_speed_report.md +++ /dev/null @@ -1,103 +0,0 @@ -# OpenDPD Training-Speed Benchmark - -Wall-clock benchmark of one training epoch for **PA** and **DPD** models with **GRU** and **TCN** backbones at three parameter scales (~200, ~500, ~1000), across batch sizes {16, 32, 64, 128, 256} on each available device. - -## System - -| Field | Value | -|---|---| -| Platform | Linux 6.17.0-19-generic (x86_64) | -| Python | 3.13.12 | -| PyTorch | 2.11.0+cu128 | -| Devices | CPU (x86_64) | GPU (CUDA): NVIDIA GeForce RTX 4090 | -| CPU threads (torch) | 16 | -| Total benchmark wall-clock | 69.5 s | - -## Configuration - -- Synthetic dataset: **2048** IQ frames of length **200** (random, seed=0) -- Optimiser: **AdamW** (lr=5e-4), MSE loss -- 1 warmup batch (untimed) + 1 full epoch (timed) per configuration -- DPD runs use **CascadedModel(DPD + frozen PA)**; the frozen PA uses the same backbone as the DPD with hidden_size = 11 (GRU) / 17 (TCN). - -**Hidden sizes used to hit each parameter target** - -| Backbone | ~200 P | ~500 P | ~1000 P | -|---|---|---|---| -| GRU | 6 | 11 | 16 | -| TCN | 7 | 17 | 34 | - -## Results - -### CPU (x86_64) - -**Wall-clock per epoch (seconds)** - -| Role | Backbone | Target #P | Actual #P | bs=16 | bs=32 | bs=64 | bs=128 | bs=256 | -|---|---|---|---|---|---|---|---|---| -| DPD | GRU | 200 | 194 | 5.343 | 2.885 | 1.666 | 0.969 | 0.682 | -| DPD | GRU | 500 | 519 | 5.162 | 2.702 | 1.807 | 1.033 | 0.671 | -| DPD | GRU | 1000 | 994 | 5.038 | 2.888 | 1.734 | 1.040 | 0.658 | -| DPD | TCN | 200 | 203 | 0.510 | 0.263 | 0.204 | 0.154 | 0.153 | -| DPD | TCN | 500 | 493 | 0.486 | 0.389 | 0.243 | 0.214 | 0.206 | -| DPD | TCN | 1000 | 986 | 0.559 | 0.439 | 0.333 | 0.316 | 0.317 | -| PA | GRU | 200 | 194 | 2.874 | 1.609 | 0.773 | 0.562 | 0.452 | -| PA | GRU | 500 | 519 | 3.997 | 2.123 | 0.853 | 0.768 | 0.391 | -| PA | GRU | 1000 | 994 | 2.806 | 1.478 | 0.884 | 0.539 | 0.361 | -| PA | TCN | 200 | 203 | 0.239 | 0.143 | 0.122 | 0.071 | 0.063 | -| PA | TCN | 500 | 493 | 0.294 | 0.231 | 0.153 | 0.122 | 0.135 | -| PA | TCN | 1000 | 986 | 0.402 | 0.288 | 0.228 | 0.216 | 0.456 | - -**Throughput (samples / sec)** - -| Role | Backbone | Target #P | Actual #P | bs=16 | bs=32 | bs=64 | bs=128 | bs=256 | -|---|---|---|---|---|---|---|---|---| -| DPD | GRU | 200 | 194 | 383 | 710 | 1,229 | 2,114 | 3,005 | -| DPD | GRU | 500 | 519 | 397 | 758 | 1,133 | 1,983 | 3,051 | -| DPD | GRU | 1000 | 994 | 406 | 709 | 1,181 | 1,969 | 3,111 | -| DPD | TCN | 200 | 203 | 4,020 | 7,791 | 10,040 | 13,284 | 13,390 | -| DPD | TCN | 500 | 493 | 4,218 | 5,268 | 8,433 | 9,562 | 9,960 | -| DPD | TCN | 1000 | 986 | 3,664 | 4,662 | 6,142 | 6,473 | 6,460 | -| PA | GRU | 200 | 194 | 713 | 1,273 | 2,651 | 3,642 | 4,527 | -| PA | GRU | 500 | 519 | 512 | 965 | 2,401 | 2,667 | 5,237 | -| PA | GRU | 1000 | 994 | 730 | 1,385 | 2,317 | 3,799 | 5,671 | -| PA | TCN | 200 | 203 | 8,585 | 14,331 | 16,735 | 28,660 | 32,636 | -| PA | TCN | 500 | 493 | 6,970 | 8,860 | 13,428 | 16,797 | 15,206 | -| PA | TCN | 1000 | 986 | 5,092 | 7,111 | 8,991 | 9,473 | 4,493 | - -### GPU (CUDA): NVIDIA GeForce RTX 4090 - -**Wall-clock per epoch (seconds)** - -| Role | Backbone | Target #P | Actual #P | bs=16 | bs=32 | bs=64 | bs=128 | bs=256 | -|---|---|---|---|---|---|---|---|---| -| DPD | GRU | 200 | 194 | 0.130 | 0.068 | 0.038 | 0.022 | 0.014 | -| DPD | GRU | 500 | 519 | 0.129 | 0.068 | 0.039 | 0.023 | 0.015 | -| DPD | GRU | 1000 | 994 | 0.129 | 0.068 | 0.039 | 0.023 | 0.015 | -| DPD | TCN | 200 | 203 | 0.169 | 0.087 | 0.047 | 0.026 | 0.016 | -| DPD | TCN | 500 | 493 | 0.168 | 0.087 | 0.047 | 0.026 | 0.016 | -| DPD | TCN | 1000 | 986 | 0.182 | 0.108 | 0.057 | 0.031 | 0.019 | -| PA | GRU | 200 | 194 | 0.109 | 0.049 | 0.026 | 0.017 | 0.011 | -| PA | GRU | 500 | 519 | 0.092 | 0.049 | 0.027 | 0.016 | 0.011 | -| PA | GRU | 1000 | 994 | 0.096 | 0.060 | 0.029 | 0.018 | 0.012 | -| PA | TCN | 200 | 203 | 0.096 | 0.051 | 0.028 | 0.017 | 0.013 | -| PA | TCN | 500 | 493 | 0.096 | 0.051 | 0.029 | 0.017 | 0.012 | -| PA | TCN | 1000 | 986 | 0.096 | 0.052 | 0.029 | 0.017 | 0.012 | - -**Throughput (samples / sec)** - -| Role | Backbone | Target #P | Actual #P | bs=16 | bs=32 | bs=64 | bs=128 | bs=256 | -|---|---|---|---|---|---|---|---|---| -| DPD | GRU | 200 | 194 | 15,764 | 30,061 | 54,151 | 91,706 | 141,334 | -| DPD | GRU | 500 | 519 | 15,834 | 29,995 | 51,872 | 90,196 | 140,680 | -| DPD | GRU | 1000 | 994 | 15,829 | 30,161 | 52,875 | 90,122 | 139,074 | -| DPD | TCN | 200 | 203 | 12,119 | 23,507 | 44,036 | 77,912 | 127,690 | -| DPD | TCN | 500 | 493 | 12,167 | 23,432 | 43,802 | 77,883 | 127,460 | -| DPD | TCN | 1000 | 986 | 11,239 | 19,006 | 36,172 | 66,221 | 109,519 | -| PA | GRU | 200 | 194 | 18,857 | 41,602 | 79,253 | 122,231 | 185,570 | -| PA | GRU | 500 | 519 | 22,209 | 42,141 | 76,839 | 128,057 | 188,255 | -| PA | GRU | 1000 | 994 | 21,411 | 33,889 | 69,896 | 115,885 | 173,196 | -| PA | TCN | 200 | 203 | 21,419 | 40,277 | 72,349 | 117,288 | 160,110 | -| PA | TCN | 500 | 493 | 21,270 | 39,913 | 71,851 | 119,467 | 176,378 | -| PA | TCN | 1000 | 986 | 21,269 | 39,686 | 71,682 | 118,658 | 175,314 | - diff --git a/benchmark/benchmark_tres_deltagru.py b/benchmark/benchmark_tres_deltagru.py deleted file mode 100644 index 9aa8aec..0000000 --- a/benchmark/benchmark_tres_deltagru.py +++ /dev/null @@ -1,422 +0,0 @@ -#!/usr/bin/env python3 -"""Reproducible training benchmark for the TRes-DeltaGRU backbone. - -This benchmark intentionally keeps synthetic input resident on the selected -device. It measures the model/optimizer path rather than CSV parsing, -DataLoader workers, or host-to-device transfers. The default shape matches -``bash_scripts/OpenDPDv2.sh``: B=64, T=200, H=15, thx=.01, thh=.05. - -Examples --------- - .venv/bin/python benchmark/benchmark_tres_deltagru.py - .venv/bin/python benchmark/benchmark_tres_deltagru.py --batch-size 256 - .venv/bin/python benchmark/benchmark_tres_deltagru.py --reference-only -""" - -from __future__ import annotations - -import argparse -import contextlib -import copy -import io -import json -import platform -import statistics -import subprocess -import sys -import time -from dataclasses import asdict, dataclass -from datetime import datetime, timezone -from pathlib import Path - -ROOT = Path(__file__).resolve().parent.parent -sys.path.insert(0, str(ROOT)) - -import torch # noqa: E402 - -from models import CoreModel # noqa: E402 -from backbones.triton_deltagru import triton # noqa: E402 - - -@dataclass -class TimingResult: - implementation: str - steps_per_block: int - median_ms: float - iqr_ms: float - block_ms: list[float] - batches_per_second: float - sequence_positions_per_second: float - peak_allocated_mib: float - - -def synchronize(device: torch.device) -> None: - if device.type == "cuda": - torch.cuda.synchronize(device) - - -def command_output(command: list[str]) -> str | None: - try: - result = subprocess.run( - command, cwd=ROOT, check=True, capture_output=True, text=True - ) - except (OSError, subprocess.CalledProcessError): - return None - return result.stdout.strip() or None - - -def build_model( - state: dict[str, torch.Tensor], - hidden_size: int, - thx: float, - thh: float, - device: torch.device, - fused: bool, -) -> CoreModel: - with contextlib.redirect_stdout(io.StringIO()): - model = CoreModel( - input_size=2, - hidden_size=hidden_size, - num_layers=1, - backbone_type="tres_deltagru", - thx=thx, - thh=thh, - ).to(device) - model.load_state_dict(state) - model.backbone.rnn.use_triton = fused - model.backbone.set_debug(0) - if fused: - probe = next(model.parameters()).new_empty((1, 1, model.backbone.rnn.input_size)) - if not model.backbone.rnn._can_use_triton(probe): - raise RuntimeError( - "the fused TRes-DeltaGRU kernel does not support this device, " - "dtype, hidden size, or module configuration" - ) - model.train() - return model - - -def one_step( - model: CoreModel, - optimizer: torch.optim.Optimizer, - features: torch.Tensor, - targets: torch.Tensor, - grad_clip: float, -) -> None: - optimizer.zero_grad(set_to_none=True) - loss = torch.nn.functional.mse_loss(model(features), targets) - loss.backward() - if grad_clip: - torch.nn.utils.clip_grad_norm_(model.parameters(), grad_clip) - optimizer.step() - - -def time_implementation( - name: str, - fused: bool, - state: dict[str, torch.Tensor], - features: torch.Tensor, - targets: torch.Tensor, - args: argparse.Namespace, - steps_per_block: int, -) -> TimingResult: - device = features.device - model = build_model(state, args.hidden_size, args.thx, args.thh, device, fused) - optimizer = torch.optim.AdamW(model.parameters(), lr=args.lr) - - for _ in range(args.warmup): - one_step(model, optimizer, features, targets, args.grad_clip) - synchronize(device) - - if device.type == "cuda": - torch.cuda.reset_peak_memory_stats(device) - block_times: list[float] = [] - for _ in range(args.blocks): - if device.type == "cuda": - start = torch.cuda.Event(enable_timing=True) - end = torch.cuda.Event(enable_timing=True) - start.record() - for _ in range(steps_per_block): - one_step(model, optimizer, features, targets, args.grad_clip) - end.record() - end.synchronize() - elapsed_ms = start.elapsed_time(end) / steps_per_block - else: - started = time.perf_counter() - for _ in range(steps_per_block): - one_step(model, optimizer, features, targets, args.grad_clip) - elapsed_ms = (time.perf_counter() - started) * 1_000 / steps_per_block - block_times.append(elapsed_ms) - - median_ms = statistics.median(block_times) - quartiles = ( - statistics.quantiles(block_times, n=4, method="inclusive") - if len(block_times) > 1 - else [block_times[0]] * 3 - ) - peak_mib = ( - torch.cuda.max_memory_allocated(device) / (1024**2) - if device.type == "cuda" - else float("nan") - ) - return TimingResult( - implementation=name, - steps_per_block=steps_per_block, - median_ms=median_ms, - iqr_ms=quartiles[2] - quartiles[0], - block_ms=block_times, - batches_per_second=1_000 / median_ms, - sequence_positions_per_second=( - features.shape[0] * features.shape[1] * 1_000 / median_ms - ), - peak_allocated_mib=peak_mib, - ) - - -def error_metrics(reference: torch.Tensor, candidate: torch.Tensor) -> dict[str, float]: - difference = (reference - candidate).detach() - denominator = reference.detach().norm().clamp_min(torch.finfo(reference.dtype).tiny) - return { - "max_abs": difference.abs().max().item(), - "mean_abs": difference.abs().mean().item(), - "relative_l2": (difference.norm() / denominator).item(), - } - - -def check_equivalence( - state: dict[str, torch.Tensor], - args: argparse.Namespace, - device: torch.device, -) -> dict[str, object]: - # A modest batch checks all equations without making the eager preflight a - # substantial fraction of the benchmark runtime. - batch_size = min(args.batch_size, args.check_batch_size) - generator = torch.Generator(device=device).manual_seed(args.seed + 1) - x_reference = torch.randn( - batch_size, args.sequence_length, 2, generator=generator, device=device - ).requires_grad_() - x_fused = x_reference.detach().clone().requires_grad_() - target = torch.randn( - batch_size, args.sequence_length, 2, generator=generator, device=device - ) - reference = build_model( - state, args.hidden_size, args.thx, args.thh, device, fused=False - ) - fused = build_model(state, args.hidden_size, args.thx, args.thh, device, fused=True) - - reference_output = reference(x_reference) - reference_loss = torch.nn.functional.mse_loss(reference_output, target) - reference_loss.backward() - fused_output = fused(x_fused) - fused_loss = torch.nn.functional.mse_loss(fused_output, target) - fused_loss.backward() - synchronize(device) - - parameter_errors = {} - for (name, reference_parameter), (candidate_name, candidate_parameter) in zip( - reference.named_parameters(), fused.named_parameters(), strict=True - ): - if name != candidate_name: - raise RuntimeError(f"parameter order mismatch: {name} != {candidate_name}") - parameter_errors[name] = error_metrics( - reference_parameter.grad, candidate_parameter.grad - ) - - return { - "output": error_metrics(reference_output, fused_output), - "input_gradient": error_metrics(x_reference.grad, x_fused.grad), - "loss_abs": abs(reference_loss.item() - fused_loss.item()), - "parameter_gradients": parameter_errors, - } - - -def enforce_equivalence(equivalence: dict[str, object]) -> None: - """Fail before timing if the candidate exceeds calibrated FP32 tolerances.""" - - limits = { - "output": (2e-5, 1e-4), - "input_gradient": (2e-6, 1e-3), - } - for name, (max_abs_limit, relative_limit) in limits.items(): - metrics = equivalence[name] - if metrics["max_abs"] > max_abs_limit or metrics["relative_l2"] > relative_limit: - raise RuntimeError(f"{name} equivalence check failed: {metrics}") - for name, metrics in equivalence["parameter_gradients"].items(): - if metrics["max_abs"] > 2e-5 or metrics["relative_l2"] > 1e-4: - raise RuntimeError(f"{name} gradient equivalence check failed: {metrics}") - if equivalence["loss_abs"] > 1e-5: - raise RuntimeError(f"loss equivalence check failed: {equivalence['loss_abs']}") - - -def parse_args() -> argparse.Namespace: - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument("--device", default="cuda" if torch.cuda.is_available() else "cpu") - parser.add_argument("--batch-size", type=int, default=64) - parser.add_argument("--sequence-length", type=int, default=200) - parser.add_argument("--hidden-size", type=int, default=15) - parser.add_argument("--thx", type=float, default=0.01) - parser.add_argument("--thh", type=float, default=0.05) - parser.add_argument("--lr", type=float, default=5e-4) - parser.add_argument("--grad-clip", type=float, default=200.0) - parser.add_argument("--warmup", type=int, default=5) - parser.add_argument("--blocks", type=int, default=7) - parser.add_argument("--reference-steps-per-block", type=int, default=5) - parser.add_argument("--fused-steps-per-block", type=int, default=100) - parser.add_argument("--check-batch-size", type=int, default=8) - parser.add_argument("--seed", type=int, default=0) - parser.add_argument("--reference-only", action="store_true") - parser.add_argument("--json-out", type=Path) - return parser.parse_args() - - -def main() -> None: - args = parse_args() - positive_values = { - "batch_size": args.batch_size, - "sequence_length": args.sequence_length, - "hidden_size": args.hidden_size, - "blocks": args.blocks, - "reference_steps_per_block": args.reference_steps_per_block, - "fused_steps_per_block": args.fused_steps_per_block, - "check_batch_size": args.check_batch_size, - } - invalid = {name: value for name, value in positive_values.items() if value <= 0} - if invalid or args.warmup < 0: - raise ValueError(f"benchmark counts must be positive (warmup may be zero): {invalid}") - device = torch.device(args.device) - if device.type == "cuda" and not torch.cuda.is_available(): - raise RuntimeError("CUDA was requested but is unavailable") - - torch.manual_seed(args.seed) - if device.type == "cuda": - torch.cuda.manual_seed_all(args.seed) - # The fused recurrence accumulates in FP32. Disable TF32 in the reference - # so the equivalence check measures operation ordering, not lower precision. - torch.backends.cuda.matmul.allow_tf32 = False - torch.backends.cudnn.allow_tf32 = False - - with contextlib.redirect_stdout(io.StringIO()): - template = CoreModel( - input_size=2, - hidden_size=args.hidden_size, - num_layers=1, - backbone_type="tres_deltagru", - thx=args.thx, - thh=args.thh, - ).to(device) - state = copy.deepcopy(template.state_dict()) - generator = torch.Generator(device=device).manual_seed(args.seed) - features = torch.randn( - args.batch_size, - args.sequence_length, - 2, - generator=generator, - device=device, - ) - targets = torch.randn( - args.batch_size, - args.sequence_length, - 2, - generator=generator, - device=device, - ) - - system = { - "recorded_at_utc": datetime.now(timezone.utc).isoformat(), - "command": " ".join(sys.argv), - "git_revision": command_output(["git", "rev-parse", "HEAD"]), - "git_dirty": bool(command_output(["git", "status", "--porcelain"])), - "platform": platform.platform(), - "python": platform.python_version(), - "torch": torch.__version__, - "triton": triton.__version__ if triton is not None else None, - "device": torch.cuda.get_device_name(device) if device.type == "cuda" else str(device), - "compute_capability": ( - ".".join(map(str, torch.cuda.get_device_capability(device))) - if device.type == "cuda" - else None - ), - "driver": ( - command_output([ - "nvidia-smi", - "--query-gpu=driver_version", - "--format=csv,noheader", - ]) - if device.type == "cuda" - else None - ), - "cuda": torch.version.cuda, - "cudnn": torch.backends.cudnn.version(), - "matmul_tf32": torch.backends.cuda.matmul.allow_tf32, - "cudnn_tf32": torch.backends.cudnn.allow_tf32, - } - print(json.dumps(system, indent=2)) - print( - f"shape=B{args.batch_size}xT{args.sequence_length}x2, H={args.hidden_size}, " - f"thresholds=({args.thx}, {args.thh}), trainable_params=" - f"{sum(parameter.numel() for parameter in template.parameters()):,}" - ) - - equivalence = None - if device.type == "cuda" and not args.reference_only: - equivalence = check_equivalence(state, args, device) - enforce_equivalence(equivalence) - print("equivalence:") - print(json.dumps(equivalence, indent=2)) - - results = [ - time_implementation( - "eager-clean", - False, - state, - features, - targets, - args, - args.reference_steps_per_block, - ) - ] - if device.type == "cuda" and not args.reference_only: - results.append( - time_implementation( - "triton-fused", - True, - state, - features, - targets, - args, - args.fused_steps_per_block, - ) - ) - - baseline_ms = results[0].median_ms - print( - "\nimplementation median ms/step IQR(block means) " - "steps/block sequence positions/s peak MiB speedup" - ) - for result in results: - speedup = baseline_ms / result.median_ms - print( - f"{result.implementation:<20} {result.median_ms:>12.3f} " - f"{result.iqr_ms:>17.3f} {result.steps_per_block:>12d} " - f"{result.sequence_positions_per_second:>20,.0f} " - f"{result.peak_allocated_mib:>11.1f} {speedup:>9.2f}x" - ) - print( - f" block means ({result.implementation}, ms/step): " - + ", ".join(f"{value:.3f}" for value in result.block_ms) - ) - - payload = { - "system": system, - "config": vars(args) | {"json_out": str(args.json_out) if args.json_out else None}, - "equivalence": equivalence, - "results": [asdict(result) for result in results], - } - if args.json_out: - args.json_out.parent.mkdir(parents=True, exist_ok=True) - args.json_out.write_text(json.dumps(payload, indent=2) + "\n") - print(f"wrote {args.json_out}") - - -if __name__ == "__main__": - main() diff --git a/benchmark/benchmark_volterra.py b/benchmark/benchmark_volterra.py new file mode 100644 index 0000000..cf55d3c --- /dev/null +++ b/benchmark/benchmark_volterra.py @@ -0,0 +1,1025 @@ +"""Polynomial PA-modeling and indirect-learning DPD benchmarks. + +The benchmark supports two complex polynomial structures: + +* MP: a memory polynomial. +* GMP: a generalized memory polynomial with aligned, lagging, and leading + envelope terms. + +For PA modeling, the complex coefficients are identified directly from +``Phi(x) w ~= y``. For DPD, an indirect learning architecture (ILA) first +identifies the postdistorter from ``Phi(y / G) w ~= x``, copies those +coefficients to the predistorter, and evaluates the result through a trained +PA model. + +Large benchmark systems are solved on CUDA after L2 column scaling. The +well-conditioned MP and ILA systems use ``torch.linalg.lstsq`` with ``gels``. +GMP PA modeling can instead use a rank-controlled truncated SVD, because its +correlated cross-term basis does not satisfy CUDA ``gels``'s full-rank +assumption on every dataset. +""" + +from __future__ import annotations + +import argparse +from functools import partial +import hashlib +import json +import math +import os +from pathlib import Path +import time +from typing import Callable + +import numpy as np +import torch + +import models as model +from modules.data_collector import load_dataset +from utils import metrics +from utils.util import count_net_params, set_target_gain + + +REPO_ROOT = Path(__file__).resolve().parent.parent + + +# --------------------------------------------------------------------------- +# NumPy basis implementations (small inputs, reference tests, and API users) +# --------------------------------------------------------------------------- + +def build_mp_basis(x_complex, K, Q): + """Build an MP basis with columns ``x(n-q) * |x(n-q)|**k``.""" + _validate_positive_configuration({"K": K, "Q": Q}) + x_complex = np.asarray(x_complex, dtype=np.complex128) + n_samples = len(x_complex) + phi = np.zeros((n_samples, K * Q), dtype=np.complex128) + column = 0 + for k in range(K): + for q in range(Q): + delayed = _delay(x_complex, q) + phi[:, column] = delayed * np.abs(delayed) ** k + column += 1 + return phi + + +def _delay(x, delay): + """Shift a one-dimensional complex signal and zero-fill the boundary.""" + x = np.asarray(x) + n_samples = len(x) + output = np.zeros(n_samples, dtype=x.dtype) + if 0 <= delay < n_samples: + output[delay:] = x[:n_samples - delay] + elif -n_samples < delay < 0: + output[:n_samples + delay] = x[-delay:] + return output + + +def build_gmp_basis(x_complex, Ka, La, Kb, Lb, Mb, Kc, Lc, Mc): + """Build the aligned, lagging, and leading GMP basis.""" + configuration = { + "Ka": Ka, + "La": La, + "Kb": Kb, + "Lb": Lb, + "Mb": Mb, + "Kc": Kc, + "Lc": Lc, + "Mc": Mc, + } + _validate_positive_configuration(configuration) + x_complex = np.asarray(x_complex, dtype=np.complex128) + n_samples = len(x_complex) + n_columns = gmp_coefficient_count(configuration) + phi = np.zeros((n_samples, n_columns), dtype=np.complex128) + column = 0 + + for k in range(Ka): + for q in range(La): + xq = _delay(x_complex, q) + phi[:, column] = xq * np.abs(xq) ** k + column += 1 + + for k in range(1, Kb + 1): + for q in range(Lb): + for lag in range(1, Mb + 1): + xq = _delay(x_complex, q) + envelope = _delay(x_complex, q + lag) + phi[:, column] = xq * np.abs(envelope) ** k + column += 1 + + for k in range(1, Kc + 1): + for q in range(Lc): + for lead in range(1, Mc + 1): + xq = _delay(x_complex, q) + envelope = _delay(x_complex, q - lead) + phi[:, column] = xq * np.abs(envelope) ** k + column += 1 + + return phi + + +def build_segmented_numpy_basis( + x_complex: np.ndarray, + basis_builder: Callable[[np.ndarray], np.ndarray], + segment_length: int, +) -> np.ndarray: + """Build a reference basis while resetting delays at every segment.""" + if segment_length <= 0: + raise ValueError("segment_length must be positive") + x_complex = np.asarray(x_complex) + blocks = [ + basis_builder(x_complex[start:start + segment_length]) + for start in range(0, len(x_complex), segment_length) + ] + if not blocks: + raise ValueError("cannot build a basis for an empty signal") + return np.concatenate(blocks, axis=0) + + +# --------------------------------------------------------------------------- +# Memory-conscious Torch basis implementations used by the benchmark +# --------------------------------------------------------------------------- + +def _torch_delay(x: torch.Tensor, delay: int) -> torch.Tensor: + output = torch.zeros_like(x) + n_samples = x.numel() + if 0 <= delay < n_samples: + output[delay:] = x[:n_samples - delay] + elif -n_samples < delay < 0: + output[:n_samples + delay] = x[-delay:] + return output + + +def _torch_delay_columns(x: torch.Tensor, delays: list[int]) -> torch.Tensor: + return torch.stack([_torch_delay(x, delay) for delay in delays], dim=1) + + +def _build_mp_basis_torch_block( + x: torch.Tensor, + configuration: dict[str, int], +) -> torch.Tensor: + k_count = configuration["K"] + memory_depth = configuration["Q"] + delayed = _torch_delay_columns(x, list(range(memory_depth))) + magnitudes = torch.abs(delayed) + phi = torch.empty( + (x.numel(), k_count * memory_depth), + dtype=x.dtype, + device=x.device, + ) + for k in range(k_count): + start = k * memory_depth + phi[:, start:start + memory_depth] = delayed * magnitudes.pow(k) + return phi + + +def _build_gmp_basis_torch_block( + x: torch.Tensor, + configuration: dict[str, int], +) -> torch.Tensor: + Ka, La = configuration["Ka"], configuration["La"] + Kb, Lb, Mb = configuration["Kb"], configuration["Lb"], configuration["Mb"] + Kc, Lc, Mc = configuration["Kc"], configuration["Lc"], configuration["Mc"] + phi = torch.empty( + (x.numel(), gmp_coefficient_count(configuration)), + dtype=x.dtype, + device=x.device, + ) + column = 0 + + aligned = _torch_delay_columns(x, list(range(La))) + aligned_magnitude = torch.abs(aligned) + for k in range(Ka): + phi[:, column:column + La] = aligned * aligned_magnitude.pow(k) + column += La + + lag_base = _torch_delay_columns(x, list(range(Lb))) + lag_delays = [q + lag for q in range(Lb) for lag in range(1, Mb + 1)] + lag_envelopes = torch.abs(_torch_delay_columns(x, lag_delays)).reshape( + x.numel(), Lb, Mb + ) + for k in range(1, Kb + 1): + block = lag_base.unsqueeze(-1) * lag_envelopes.pow(k) + width = Lb * Mb + phi[:, column:column + width] = block.reshape(x.numel(), width) + column += width + + lead_base = _torch_delay_columns(x, list(range(Lc))) + lead_delays = [q - lead for q in range(Lc) for lead in range(1, Mc + 1)] + lead_envelopes = torch.abs(_torch_delay_columns(x, lead_delays)).reshape( + x.numel(), Lc, Mc + ) + for k in range(1, Kc + 1): + block = lead_base.unsqueeze(-1) * lead_envelopes.pow(k) + width = Lc * Mc + phi[:, column:column + width] = block.reshape(x.numel(), width) + column += width + + if column != phi.shape[1]: + raise RuntimeError("internal GMP column-count mismatch") + return phi + + +@torch.inference_mode() +def build_torch_basis( + x: torch.Tensor, + polynomial_model: str, + configuration: dict[str, int], + segment_length: int, +) -> torch.Tensor: + """Build a design matrix on ``x.device`` with per-segment delay resets.""" + if x.ndim != 1 or not torch.is_complex(x): + raise ValueError("x must be a one-dimensional complex Torch tensor") + if x.numel() == 0: + raise ValueError("cannot build a basis for an empty signal") + if segment_length <= 0: + raise ValueError("segment_length must be positive") + _validate_positive_configuration(configuration) + + n_columns = coefficient_count(polynomial_model, configuration) + phi = torch.empty( + (x.numel(), n_columns), + dtype=x.dtype, + device=x.device, + ) + build_block = ( + _build_mp_basis_torch_block + if polynomial_model == "mp" + else _build_gmp_basis_torch_block + ) + for start in range(0, x.numel(), segment_length): + stop = min(start + segment_length, x.numel()) + phi[start:stop] = build_block(x[start:stop], configuration) + return phi + + +# --------------------------------------------------------------------------- +# Configuration and least-squares helpers +# --------------------------------------------------------------------------- + +def _validate_positive_configuration(configuration: dict[str, int]) -> None: + for name, value in configuration.items(): + if not isinstance(value, (int, np.integer)) or value <= 0: + raise ValueError(f"{name} must be a positive integer, got {value!r}") + + +def gmp_coefficient_count(configuration: dict[str, int]) -> int: + return ( + configuration["Ka"] * configuration["La"] + + configuration["Kb"] * configuration["Lb"] * configuration["Mb"] + + configuration["Kc"] * configuration["Lc"] * configuration["Mc"] + ) + + +def coefficient_count( + polynomial_model: str, + configuration: dict[str, int], +) -> int: + if polynomial_model == "mp": + return configuration["K"] * configuration["Q"] + if polynomial_model == "gmp": + return gmp_coefficient_count(configuration) + raise ValueError(f"unsupported polynomial model: {polynomial_model!r}") + + +def basis_configuration(args: argparse.Namespace) -> dict[str, int]: + if args.model == "mp": + return {"K": args.K, "Q": args.Q} + return { + "Ka": args.Ka, + "La": args.La, + "Kb": args.Kb, + "Lb": args.Lb, + "Mb": args.Mb, + "Kc": args.Kc, + "Lc": args.Lc, + "Mc": args.Mc, + } + + +def select_basis(args): + """Return the NumPy reference builder, coefficient count, and banner.""" + configuration = basis_configuration(args) + if args.model == "gmp": + builder = partial(build_gmp_basis, **configuration) + banner = ( + "Polynomial GMP " + + ", ".join(f"{name}={value}" for name, value in configuration.items()) + ) + else: + builder = partial(build_mp_basis, **configuration) + banner = f"Polynomial MP K={args.K}, Q={args.Q}" + return builder, coefficient_count(args.model, configuration), banner + + +def resolve_solver_device(requested: str, cuda_index: int) -> torch.device: + requested = requested.strip().lower() + if requested == "cuda": + requested = f"cuda:{cuda_index}" + device = torch.device(requested) + if device.type == "cuda": + if not torch.cuda.is_available(): + raise RuntimeError("CUDA was requested for the least-squares solve but is unavailable") + if device.index is None: + device = torch.device(f"cuda:{cuda_index}") + elif device.type != "cpu": + raise ValueError("solver device must be 'cpu', 'cuda', or 'cuda:INDEX'") + return device + + +def resolve_complex_dtype(requested: str) -> torch.dtype: + mapping = { + "complex64": torch.complex64, + "torch.complex64": torch.complex64, + "complex128": torch.complex128, + "torch.complex128": torch.complex128, + } + try: + return mapping[requested.lower()] + except KeyError as error: + raise ValueError("solver dtype must be complex64 or complex128") from error + + +def _synchronize(device: torch.device) -> None: + if device.type == "cuda": + torch.cuda.synchronize(device) + + +@torch.inference_mode() +def fit_complex_least_squares( + basis_input: np.ndarray, + target: np.ndarray, + *, + polynomial_model: str, + configuration: dict[str, int], + segment_length: int, + device: torch.device, + dtype: torch.dtype, + solver_mode: str = "gels", + svd_rcond: float | None = None, +) -> tuple[torch.Tensor, dict[str, float | int | str | None]]: + """Fit complex coefficients after L2 column scaling.""" + basis_input = np.asarray(basis_input) + target = np.asarray(target) + if basis_input.ndim != 1 or target.ndim != 1: + raise ValueError("least-squares input and target must be one-dimensional") + if basis_input.shape != target.shape: + raise ValueError("least-squares input and target must have the same shape") + if not np.all(np.isfinite(basis_input)) or not np.all(np.isfinite(target)): + raise ValueError("least-squares input and target must contain only finite values") + + n_columns = coefficient_count(polynomial_model, configuration) + if basis_input.size < n_columns: + raise ValueError( + f"least-squares system is underdetermined: " + f"{basis_input.size} observations for {n_columns} coefficients" + ) + if solver_mode not in {"gels", "truncated_svd"}: + raise ValueError(f"unsupported solver mode: {solver_mode!r}") + if solver_mode == "gels" and svd_rcond is not None: + raise ValueError("svd_rcond is only valid for truncated_svd") + if solver_mode == "truncated_svd": + if svd_rcond is None or not math.isfinite(svd_rcond): + raise ValueError( + "truncated_svd requires a finite svd_rcond" + ) + if not 0.0 < svd_rcond < 1.0: + raise ValueError("svd_rcond must be between zero and one") + + _synchronize(device) + started = time.perf_counter() + x_tensor = torch.as_tensor(basis_input, dtype=dtype, device=device) + target_tensor = torch.as_tensor(target, dtype=dtype, device=device) + phi = build_torch_basis( + x_tensor, + polynomial_model, + configuration, + segment_length, + ) + _synchronize(device) + basis_seconds = time.perf_counter() - started + + column_norms = torch.linalg.vector_norm(phi, dim=0) + if not bool(torch.all(torch.isfinite(column_norms)).item()): + raise RuntimeError("basis column norms are not finite") + if bool(torch.any(column_norms == 0).item()): + zero_count = int(torch.count_nonzero(column_norms == 0).item()) + raise RuntimeError(f"basis contains {zero_count} all-zero columns") + smallest_norm = float(column_norms.min().item()) + largest_norm = float(column_norms.max().item()) + phi.div_(column_norms) + + _synchronize(device) + solve_started = time.perf_counter() + least_squares_rank: int | None = None + singular_value_max: float | None = None + singular_value_min: float | None = None + singular_value_cutoff: float | None = None + retained_singular_value_min: float | None = None + condition_number: float | None = None + if solver_mode == "gels": + solver_implementation = "torch.linalg.lstsq" + solver_driver = "gels" + regularization = None + try: + solution_scaled = torch.linalg.lstsq( + phi, + target_tensor.unsqueeze(1), + driver=solver_driver, + ).solution.squeeze(1) + except RuntimeError as error: + raise RuntimeError( + "torch.linalg.lstsq failed for the polynomial benchmark. " + "The CUDA gels driver assumes a full-rank design matrix; " + "verify the basis configuration and available accelerator " + "memory." + ) from error + else: + solver_implementation = "torch.linalg.svd" + solver_driver = "gesvdj" if device.type == "cuda" else "default" + regularization = "truncated_svd" + svd_driver = "gesvdj" if device.type == "cuda" else None + try: + left, singular_values, right_h = torch.linalg.svd( + phi, + full_matrices=False, + driver=svd_driver, + ) + except RuntimeError as error: + raise RuntimeError( + "torch.linalg.svd failed for the polynomial benchmark; " + "verify the basis configuration and available accelerator " + "memory." + ) from error + singular_value_max = float(singular_values[0].item()) + singular_value_min = float(singular_values[-1].item()) + singular_value_cutoff = singular_value_max * float(svd_rcond) + retained = singular_values > singular_value_cutoff + least_squares_rank = int(torch.count_nonzero(retained).item()) + if least_squares_rank == 0: + raise RuntimeError( + "truncated SVD rejected every singular direction" + ) + retained_singular_value_min = float( + singular_values[retained][-1].item() + ) + condition_number = ( + singular_value_max / singular_value_min + if singular_value_min > 0.0 + else None + ) + projected_target = left[:, retained].mH @ target_tensor + solution_scaled = right_h[retained].mH @ ( + projected_target / singular_values[retained] + ) + _synchronize(device) + solve_seconds = time.perf_counter() - solve_started + + fitted = phi @ solution_scaled + residual_norm = torch.linalg.vector_norm(fitted - target_tensor) + target_norm = torch.linalg.vector_norm(target_tensor) + relative_residual = residual_norm / target_norm + coefficients = solution_scaled / column_norms + + if not bool(torch.all(torch.isfinite(coefficients)).item()): + raise RuntimeError("least-squares coefficients are not finite") + relative_residual_value = float(relative_residual.item()) + if not math.isfinite(relative_residual_value): + raise RuntimeError("least-squares training relative residual is not finite") + coefficient_l2_norm = float(torch.linalg.vector_norm(coefficients).item()) + if not math.isfinite(coefficient_l2_norm): + raise RuntimeError("least-squares coefficient norm is not finite") + + diagnostics: dict[str, float | int | str | None] = { + "observations": int(basis_input.size), + "columns": int(n_columns), + # The gels driver does not estimate numerical rank. Its documented + # contract assumes that the design matrix is full rank. + "least_squares_rank": least_squares_rank, + "solver_mode": solver_mode, + "solver_implementation": solver_implementation, + "solver_driver": solver_driver, + "regularization": regularization, + "svd_rcond": svd_rcond, + "singular_value_max": singular_value_max, + "singular_value_min": singular_value_min, + "singular_value_cutoff": singular_value_cutoff, + "retained_singular_value_min": retained_singular_value_min, + "condition_number": condition_number, + "coefficient_l2_norm": coefficient_l2_norm, + "training_relative_residual": relative_residual_value, + "training_residual_nmse_db": float( + 20.0 * math.log10(max(relative_residual_value, np.finfo(float).tiny)) + ), + "basis_build_seconds": float(basis_seconds), + "solve_seconds": float(solve_seconds), + "column_norm_min": smallest_norm, + "column_norm_max": largest_norm, + } + return coefficients, diagnostics + + +@torch.inference_mode() +def apply_polynomial( + input_complex: np.ndarray, + coefficients: torch.Tensor, + *, + polynomial_model: str, + configuration: dict[str, int], + segment_length: int, +) -> np.ndarray: + """Apply fitted polynomial coefficients with the training boundary policy.""" + input_tensor = torch.as_tensor( + np.asarray(input_complex), + dtype=coefficients.dtype, + device=coefficients.device, + ) + phi = build_torch_basis( + input_tensor, + polynomial_model, + configuration, + segment_length, + ) + prediction = phi @ coefficients + if not bool(torch.all(torch.isfinite(prediction)).item()): + raise RuntimeError("polynomial prediction contains non-finite values") + return prediction.cpu().numpy() + + +# --------------------------------------------------------------------------- +# Data, PA, and metric helpers +# --------------------------------------------------------------------------- + +def iq_to_complex(iq): + iq = np.asarray(iq) + return iq[:, 0] + 1j * iq[:, 1] + + +def complex_to_iq(complex_signal): + complex_signal = np.asarray(complex_signal) + return np.stack( + [complex_signal.real, complex_signal.imag], + axis=-1, + ).astype(np.float32) + + +def sha256_file(path): + digest = hashlib.sha256() + with open(path, "rb") as file: + for chunk in iter(lambda: file.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def pa_model_id( + *, + seed: int, + backbone: str, + hidden_size: int, + frame_length: int, + parameter_count: int, +) -> str: + return ( + f"PA_S_{seed}_M_{backbone.upper()}_H_{hidden_size}_" + f"F_{frame_length}_P_{parameter_count}" + ) + + +def resolve_pa_checkpoint( + args: argparse.Namespace, + parameter_count: int, +) -> tuple[Path, str]: + model_id = pa_model_id( + seed=args.seed, + backbone=args.pa_backbone, + hidden_size=args.pa_hidden_size, + frame_length=args.frame_length, + parameter_count=parameter_count, + ) + if args.pa_checkpoint: + checkpoint = Path(args.pa_checkpoint).expanduser() + if not checkpoint.is_absolute(): + checkpoint = REPO_ROOT / checkpoint + else: + checkpoint = ( + REPO_ROOT + / "save" + / args.dataset_name + / "train_pa" + / f"{model_id}.pt" + ) + checkpoint = checkpoint.resolve() + if not checkpoint.is_file(): + raise FileNotFoundError(f"PA checkpoint does not exist: {checkpoint}") + return checkpoint, model_id + + +def _load_state_dict(path: Path): + try: + state = torch.load(path, map_location="cpu", weights_only=True) + except TypeError: # Compatibility with older supported Torch releases. + state = torch.load(path, map_location="cpu") + if isinstance(state, dict) and "state_dict" in state: + state = state["state_dict"] + if not isinstance(state, dict): + raise TypeError(f"PA checkpoint is not a state dictionary: {path}") + return state + + +def load_pa_model( + args: argparse.Namespace, +) -> tuple[torch.nn.Module, torch.device, Path, str, int]: + if args.device < 0: + pa_device = torch.device("cpu") + else: + if not torch.cuda.is_available(): + raise RuntimeError("CUDA PA evaluation was requested but CUDA is unavailable") + pa_device = torch.device(f"cuda:{args.device}") + + pa_net = model.CoreModel( + input_size=2, + hidden_size=args.pa_hidden_size, + num_layers=args.pa_num_layers, + backbone_type=args.pa_backbone, + ) + parameter_count = count_net_params(pa_net) + checkpoint, model_id = resolve_pa_checkpoint(args, parameter_count) + pa_net.load_state_dict(_load_state_dict(checkpoint), strict=True) + pa_net = pa_net.to(pa_device) + pa_net.eval() + return pa_net, pa_device, checkpoint, model_id, parameter_count + + +@torch.inference_mode() +def run_pa_model(iq_signal, pa_net, device, nperseg): + """Evaluate the PA with one independent recurrent state per segment.""" + iq_signal = np.asarray(iq_signal, dtype=np.float32) + n_samples = len(iq_signal) + segments = [] + for start in range(0, n_samples, nperseg): + segment = iq_signal[start:start + nperseg] + if len(segment) < nperseg: + segment = np.vstack( + [ + segment, + np.zeros((nperseg - len(segment), 2), dtype=np.float32), + ] + ) + segments.append(segment) + if not segments: + raise ValueError("cannot evaluate an empty signal") + tensor = torch.as_tensor(np.stack(segments), dtype=torch.float32, device=device) + output = pa_net(tensor).cpu().numpy() + return output.reshape(-1, 2)[:n_samples] + + +def compute_metrics(prediction_iq, ground_truth_iq, spec): + """Compute metrics with the same segmentation and definitions as training.""" + nperseg = int(spec["nperseg"]) + n_samples = min(len(prediction_iq), len(ground_truth_iq)) + n_segments = n_samples // nperseg + if n_segments == 0: + raise ValueError( + f"metric input needs at least one complete {nperseg}-sample segment" + ) + usable = n_segments * nperseg + prediction = np.asarray(prediction_iq[:usable]).reshape(n_segments, nperseg, 2) + ground_truth = np.asarray(ground_truth_iq[:usable]).reshape( + n_segments, nperseg, 2 + ) + nmse = metrics.NMSE(prediction, ground_truth) + evm = metrics.EVM( + prediction, + ground_truth, + sample_rate=int(spec["input_signal_fs"]), + bw_main_ch=spec["bw_main_ch"], + n_sub_ch=spec["n_sub_ch"], + nperseg=nperseg, + ) + aclr_left, aclr_right = metrics.ACLR( + prediction, + fs=spec["input_signal_fs"], + nperseg=nperseg, + bw_main_ch=spec["bw_main_ch"], + n_sub_ch=spec["n_sub_ch"], + ) + return nmse, evm, aclr_left, aclr_right + + +def metric_dict(prediction_iq, ground_truth_iq, spec) -> dict[str, float]: + nmse, evm, aclr_left, aclr_right = compute_metrics( + prediction_iq, + ground_truth_iq, + spec, + ) + result = { + "ACLR_L": float(aclr_left), + "ACLR_R": float(aclr_right), + "ACLR_AVG": float((aclr_left + aclr_right) / 2.0), + "EVM": float(evm), + "NMSE": float(nmse), + } + if not all(math.isfinite(value) for value in result.values()): + raise RuntimeError(f"evaluation produced non-finite metrics: {result}") + return result + + +def display_metrics(split: str, values: dict[str, float]) -> None: + print(f"\n{split} results") + print(f"{'Metric':<12} {'Value':>12}") + print("-" * 26) + for name in ("ACLR_L", "ACLR_R", "ACLR_AVG", "EVM", "NMSE"): + print(f"{name:<12} {values[name]:>12.2f} dB") + + +def _portable_path(path: Path) -> str: + try: + return path.relative_to(REPO_ROOT).as_posix() + except ValueError: + return str(path) + + +# --------------------------------------------------------------------------- +# CLI and benchmark execution +# --------------------------------------------------------------------------- + +def build_arg_parser(): + parser = argparse.ArgumentParser( + description="Fit and evaluate MP/GMP PA or ILA-DPD benchmarks." + ) + parser.add_argument( + "--task", + choices=("pa_modeling", "dpd_ila"), + default="dpd_ila", + help="Benchmark task (default preserves the historical DPD behavior).", + ) + parser.add_argument( + "--dataset-name", + "--dataset_name", + dest="dataset_name", + required=True, + ) + parser.add_argument("--model", choices=("mp", "gmp"), default="mp") + + parser.add_argument("--K", type=int, default=5) + parser.add_argument("--Q", type=int, default=50) + parser.add_argument("--Ka", type=int, default=5) + parser.add_argument("--La", type=int, default=15) + parser.add_argument("--Kb", type=int, default=4) + parser.add_argument("--Lb", type=int, default=15) + parser.add_argument("--Mb", type=int, default=2) + parser.add_argument("--Kc", type=int, default=4) + parser.add_argument("--Lc", type=int, default=15) + parser.add_argument("--Mc", type=int, default=1) + + parser.add_argument( + "--solver-device", + default="cuda", + help="'cuda', 'cuda:INDEX', or 'cpu' (default: cuda).", + ) + parser.add_argument( + "--solver-dtype", + choices=("complex64", "complex128"), + default="complex64", + ) + parser.add_argument( + "--solver-mode", + choices=("gels", "truncated_svd"), + default="gels", + ) + parser.add_argument( + "--svd-rcond", + type=float, + help="Relative singular-value cutoff for truncated_svd.", + ) + parser.add_argument( + "--device", + type=int, + default=0, + help="CUDA index for PA evaluation; -1 selects CPU.", + ) + + parser.add_argument( + "--pa-backbone", + "--pa_backbone", + dest="pa_backbone", + default="tres_gru", + ) + parser.add_argument( + "--pa-hidden-size", + "--pa_hidden_size", + dest="pa_hidden_size", + type=int, + default=24, + ) + parser.add_argument( + "--pa-num-layers", + "--pa_num_layers", + dest="pa_num_layers", + type=int, + default=1, + ) + parser.add_argument("--pa-checkpoint", help="Explicit trained PA checkpoint.") + parser.add_argument("--frame-length", type=int, default=200) + parser.add_argument("--seed", type=int, default=0) + parser.add_argument("--json-out", help="Write metrics and provenance as JSON.") + return parser + + +def run_benchmark(args: argparse.Namespace) -> dict: + spec_path = REPO_ROOT / "datasets" / args.dataset_name / "spec.json" + with open(spec_path, encoding="utf-8") as file: + spec = json.load(file) + nperseg = int(spec["nperseg"]) + configuration = basis_configuration(args) + _validate_positive_configuration(configuration) + n_complex_coefficients = coefficient_count(args.model, configuration) + n_real_parameters = 2 * n_complex_coefficients + solver_device = resolve_solver_device(args.solver_device, args.device) + solver_dtype = resolve_complex_dtype(args.solver_dtype) + + X_train, y_train, X_val, y_val, X_test, y_test = load_dataset( + dataset_name=args.dataset_name + ) + target_gain = float(set_target_gain(X_train, y_train)) + print( + f"\n=== {args.task}: {args.model.upper()} " + f"({n_complex_coefficients} complex / {n_real_parameters} real) ===" + ) + if args.solver_mode == "truncated_svd": + solver_description = ( + f"torch.linalg.svd truncated at rcond={args.svd_rcond:g}" + ) + else: + solver_description = "torch.linalg.lstsq gels" + print(f"Solver: {solver_description} on {solver_device} ({solver_dtype})") + + common_fit_arguments = { + "polynomial_model": args.model, + "configuration": configuration, + "segment_length": nperseg, + "device": solver_device, + "dtype": solver_dtype, + "solver_mode": args.solver_mode, + "svd_rcond": args.svd_rcond, + } + + if args.task == "pa_modeling": + coefficients, diagnostics = fit_complex_least_squares( + iq_to_complex(X_train), + iq_to_complex(y_train), + **common_fit_arguments, + ) + + validation_prediction = complex_to_iq( + apply_polynomial( + iq_to_complex(X_val), + coefficients, + polynomial_model=args.model, + configuration=configuration, + segment_length=nperseg, + ) + ) + validation_metrics = metric_dict(validation_prediction, y_val, spec) + del validation_prediction + + test_prediction = complex_to_iq( + apply_polynomial( + iq_to_complex(X_test), + coefficients, + polynomial_model=args.model, + configuration=configuration, + segment_length=nperseg, + ) + ) + test_metrics = metric_dict(test_prediction, y_test, spec) + method = "direct_least_squares" + pa_binding = {} + else: + coefficients, diagnostics = fit_complex_least_squares( + iq_to_complex(y_train) / target_gain, + iq_to_complex(X_train), + **common_fit_arguments, + ) + pa_net, pa_device, pa_path, pa_id, pa_parameters = load_pa_model(args) + + validation_dpd = complex_to_iq( + apply_polynomial( + iq_to_complex(X_val), + coefficients, + polynomial_model=args.model, + configuration=configuration, + segment_length=nperseg, + ) + ) + validation_prediction = run_pa_model( + validation_dpd, + pa_net, + pa_device, + nperseg, + ) + validation_target = (target_gain * X_val).astype(np.float32) + validation_metrics = metric_dict( + validation_prediction, + validation_target, + spec, + ) + del validation_dpd, validation_prediction + + test_dpd = complex_to_iq( + apply_polynomial( + iq_to_complex(X_test), + coefficients, + polynomial_model=args.model, + configuration=configuration, + segment_length=nperseg, + ) + ) + test_prediction = run_pa_model(test_dpd, pa_net, pa_device, nperseg) + test_target = (target_gain * X_test).astype(np.float32) + test_metrics = metric_dict(test_prediction, test_target, spec) + method = "indirect_learning_architecture" + pa_binding = { + "pa_backbone": args.pa_backbone, + "pa_hidden_size": int(args.pa_hidden_size), + "pa_num_layers": int(args.pa_num_layers), + "pa_model_id": pa_id, + "pa_parameters": int(pa_parameters), + "pa_evaluation_device": str(pa_device), + "pa_checkpoint": _portable_path(pa_path), + "pa_checkpoint_sha256": sha256_file(pa_path), + } + + display_metrics("Validation", validation_metrics) + display_metrics("Test", test_metrics) + dtype_name = str(solver_dtype) + device_name = str(solver_device) + result = { + "schema_version": 4, + "task": args.task, + "method": method, + "dataset": args.dataset_name, + "model": args.model, + "basis_configuration": configuration, + "complex_coefficients": int(n_complex_coefficients), + "real_parameters": int(n_real_parameters), + "parameter_count_convention": "two real degrees of freedom per complex coefficient", + "target_gain": target_gain, + "sample_rate_hz": float(spec["input_signal_fs"]), + "nperseg": nperseg, + "segment_boundary_policy": "zero delay state at every nperseg boundary", + "solver": diagnostics["solver_implementation"], + "solver_mode": diagnostics["solver_mode"], + "solver_driver": diagnostics["solver_driver"], + "device": device_name, + "dtype": dtype_name, + # Retain explicit aliases so downstream consumers cannot confuse the + # solver device with the separate neural-PA evaluation device. + "solver_device": device_name, + "solver_dtype": dtype_name, + "column_scaling": "l2", + "column_scale_min": diagnostics["column_norm_min"], + "column_scale_max": diagnostics["column_norm_max"], + "full_rank_assumption": args.solver_mode == "gels", + "least_squares_rank": diagnostics["least_squares_rank"], + "regularization": diagnostics["regularization"], + "svd_rcond": diagnostics["svd_rcond"], + "singular_value_max": diagnostics["singular_value_max"], + "singular_value_min": diagnostics["singular_value_min"], + "singular_value_cutoff": diagnostics["singular_value_cutoff"], + "retained_singular_value_min": diagnostics[ + "retained_singular_value_min" + ], + "condition_number": diagnostics["condition_number"], + "coefficient_l2_norm": diagnostics["coefficient_l2_norm"], + "training_relative_residual": diagnostics["training_relative_residual"], + "training_diagnostics": diagnostics, + "determinism": { + "stochastic_fitting": False, + "seed": int(args.seed), + "note": ( + "The design matrix and targets are deterministic; final low-order " + "floating-point bits can vary across CUDA library versions." + ), + }, + "validation": validation_metrics, + "test": test_metrics, + **pa_binding, + } + return result + + +def main(): + args = build_arg_parser().parse_args() + result = run_benchmark(args) + if args.json_out: + output_path = Path(args.json_out).expanduser() + output_path.parent.mkdir(parents=True, exist_ok=True) + with open(output_path, "w", encoding="utf-8") as file: + json.dump(result, file, indent=2, sort_keys=True) + file.write("\n") + print(f"\nRaw results written to {output_path}") + + +if __name__ == "__main__": + main() diff --git a/benchmark/benchmark_volterra_qr.py b/benchmark/benchmark_volterra_qr.py deleted file mode 100644 index c3f9c6e..0000000 --- a/benchmark/benchmark_volterra_qr.py +++ /dev/null @@ -1,314 +0,0 @@ -""" -Benchmark: Volterra-series-based DPD identified via QR decomposition. - -Supports two model structures: - - MP (Memory Polynomial): diagonal Volterra terms only - - GMP (Generalized Memory Polynomial): aligned + lagging + leading cross-terms - -Both identified in closed form via least squares (QR/SVD). - -Indirect Learning Architecture (ILA): - 1. Build basis Phi from normalized PA output z/G - 2. Solve x = Phi * w via QR (postdistorter) - 3. Copy w to predistorter: x_dpd = Phi(x) * w - 4. Pass through PA model: PA(x_dpd) vs G*x -""" - -import argparse -import json -import os -import numpy as np -import torch - -# Project imports -from modules.data_collector import load_dataset -from utils.util import set_target_gain -from utils import metrics -import models as model - - -# --------------------------------------------------------------------------- -# Memory Polynomial basis -# --------------------------------------------------------------------------- - -def build_mp_basis(x_complex, K, Q): - """ - Build Memory Polynomial basis matrix. - - Basis functions: phi_{k,q}(n) = x(n-q) * |x(n-q)|^k - for k = 0..K-1, q = 0..Q-1 - - Parameters - ---------- - x_complex : ndarray, shape (N,), complex - K : int - number of nonlinearity orders - Q : int - memory depth - - Returns - ------- - Phi : ndarray, shape (N, K*Q), complex - """ - N = len(x_complex) - Phi = np.zeros((N, K * Q), dtype=np.complex128) - col = 0 - for k in range(K): - for q in range(Q): - if q == 0: - xd = x_complex - else: - xd = np.zeros(N, dtype=np.complex128) - xd[q:] = x_complex[:N - q] - Phi[:, col] = xd * np.abs(xd) ** k - col += 1 - return Phi - - -# --------------------------------------------------------------------------- -# GMP basis (Morgan et al., IEEE TSP 2006) -# --------------------------------------------------------------------------- - -def _delay(x, d): - """Delay complex signal x by d samples (zero-pad).""" - N = len(x) - out = np.zeros(N, dtype=np.complex128) - if d >= 0 and d < N: - out[d:] = x[:N - d] - elif d < 0 and -d < N: - out[:N + d] = x[-d:] - return out - - -def build_gmp_basis(x_complex, Ka, La, Kb, Lb, Mb, Kc, Lc, Mc): - """ - Build Generalized Memory Polynomial basis matrix. - - Three components: - Aligned: x(n-q) * |x(n-q)|^k k=0..Ka-1, q=0..La-1 - Lagging: x(n-q) * |x(n-q-l)|^k k=1..Kb, q=0..Lb-1, l=1..Mb - Leading: x(n-q) * |x(n-q+l)|^k k=1..Kc, q=0..Lc-1, l=1..Mc - - Returns Phi of shape (N, Ka*La + Kb*Lb*Mb + Kc*Lc*Mc), complex. - """ - N = len(x_complex) - n_cols = Ka * La + Kb * Lb * Mb + Kc * Lc * Mc - Phi = np.zeros((N, n_cols), dtype=np.complex128) - col = 0 - - # Aligned terms - for k in range(Ka): - for q in range(La): - xq = _delay(x_complex, q) - Phi[:, col] = xq * np.abs(xq) ** k - col += 1 - - # Lagging cross-terms - for k in range(1, Kb + 1): - for q in range(Lb): - for l in range(1, Mb + 1): - xq = _delay(x_complex, q) - xql = _delay(x_complex, q + l) - Phi[:, col] = xq * np.abs(xql) ** k - col += 1 - - # Leading cross-terms - for k in range(1, Kc + 1): - for q in range(Lc): - for l in range(1, Mc + 1): - xq = _delay(x_complex, q) - xql = _delay(x_complex, q - l) - Phi[:, col] = xq * np.abs(xql) ** k - col += 1 - - return Phi - - -# --------------------------------------------------------------------------- -# Helpers -# --------------------------------------------------------------------------- - -def iq_to_complex(iq): - return iq[:, 0] + 1j * iq[:, 1] - - -def complex_to_iq(c): - return np.stack([c.real, c.imag], axis=-1).astype(np.float32) - - -def run_pa_model(iq_signal, pa_net, device, nperseg): - """Pass an IQ signal through the trained PA model segment-by-segment.""" - pa_net.eval() - N = len(iq_signal) - segments = [] - for i in range(0, N, nperseg): - seg = iq_signal[i:i + nperseg] - if len(seg) < nperseg: - pad = np.zeros((nperseg - len(seg), 2), dtype=np.float32) - seg = np.vstack([seg, pad]) - segments.append(seg) - segments = np.array(segments) # (n_seg, nperseg, 2) - - with torch.no_grad(): - out = pa_net(torch.tensor(segments, dtype=torch.float32).to(device)) - out = out.cpu().numpy() - - return out.reshape(-1, 2)[:N] - - -def compute_metrics(prediction_iq, ground_truth_iq, spec): - """Compute NMSE, EVM, ACLR on segmented data (same as OpenDPD training).""" - nperseg = int(spec['nperseg']) - fs = spec['input_signal_fs'] - bw = spec['bw_main_ch'] - nsc = spec['n_sub_ch'] - - # Segment prediction and ground truth - N = len(prediction_iq) - n_seg = N // nperseg - pred_seg = prediction_iq[:n_seg * nperseg].reshape(n_seg, nperseg, 2) - gt_seg = ground_truth_iq[:n_seg * nperseg].reshape(n_seg, nperseg, 2) - - nmse = metrics.NMSE(pred_seg, gt_seg) - evm = metrics.EVM(pred_seg, gt_seg, sample_rate=int(fs), - bw_main_ch=bw, n_sub_ch=nsc, nperseg=nperseg) - aclr_l, aclr_r = metrics.ACLR(pred_seg, fs=fs, nperseg=nperseg, - bw_main_ch=bw, n_sub_ch=nsc) - return nmse, evm, aclr_l, aclr_r - - -# --------------------------------------------------------------------------- -# Main -# --------------------------------------------------------------------------- - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument('--dataset_name', type=str, required=True) - parser.add_argument('--pa_hidden_size', type=int, default=24) - parser.add_argument('--model', type=str, default='mp', choices=['mp', 'gmp'], - help='Model type: mp (Memory Polynomial) or gmp (Generalized MP)') - # MP parameters - parser.add_argument('--K', type=int, default=5, - help='Nonlinearity order (number of |x|^k terms)') - parser.add_argument('--Q', type=int, default=50, - help='Memory depth (number of delay taps) for MP') - # GMP parameters - parser.add_argument('--Ka', type=int, default=5, help='GMP aligned nonlinearity orders') - parser.add_argument('--La', type=int, default=15, help='GMP aligned memory depth') - parser.add_argument('--Kb', type=int, default=4, help='GMP lagging nonlinearity orders') - parser.add_argument('--Lb', type=int, default=15, help='GMP lagging memory depth') - parser.add_argument('--Mb', type=int, default=2, help='GMP lagging cross-term depth') - parser.add_argument('--Kc', type=int, default=4, help='GMP leading nonlinearity orders') - parser.add_argument('--Lc', type=int, default=15, help='GMP leading memory depth') - parser.add_argument('--Mc', type=int, default=1, help='GMP leading cross-term depth') - parser.add_argument('--device', type=int, default=0) - args = parser.parse_args() - - # Load spec - spec_path = os.path.join('datasets', args.dataset_name, 'spec.json') - with open(spec_path) as f: - spec = json.load(f) - nperseg = int(spec['nperseg']) - - # Load dataset - X_train, y_train, X_val, y_val, X_test, y_test = load_dataset( - dataset_name=args.dataset_name) - - # Target gain (same as OpenDPD) - target_gain = set_target_gain(X_train, y_train) - - # Load PA model - device = torch.device(f'cuda:{args.device}') - pa_net = model.CoreModel(input_size=2, hidden_size=args.pa_hidden_size, - num_layers=1, backbone_type='gru') - from utils.util import count_net_params - n_pa = count_net_params(pa_net) - pa_path = (f'save/{args.dataset_name}/train_pa/' - f'PA_S_0_M_GRU_H_{args.pa_hidden_size}_F_200_P_{n_pa}.pt') - pa_net.load_state_dict(torch.load(pa_path, map_location='cpu')) - pa_net = pa_net.to(device) - - # ----------------------------------------------------------------------- - # Step 1: Identify DPD via ILA + QR - # ----------------------------------------------------------------------- - K, Q = args.K, args.Q - if args.model == 'gmp': - def build_basis(x): - return build_gmp_basis(x, args.Ka, args.La, args.Kb, args.Lb, - args.Mb, args.Kc, args.Lc, args.Mc) - n_complex_coeffs = (args.Ka * args.La + args.Kb * args.Lb * args.Mb - + args.Kc * args.Lc * args.Mc) - print(f"\n=== Volterra GMP DPD via QR (Ka={args.Ka}, La={args.La}, " - f"Kb={args.Kb}, Lb={args.Lb}, Mb={args.Mb}, " - f"Kc={args.Kc}, Lc={args.Lc}, Mc={args.Mc}) ===") - else: - def build_basis(x): - return build_mp_basis(x, K, Q) - n_complex_coeffs = K * Q - print(f"\n=== Volterra MP DPD via QR (K={K}, Q={Q}) ===") - n_real_params = 2 * n_complex_coeffs - print(f"Complex coefficients : {n_complex_coeffs}") - print(f"Real parameters : {n_real_params}") - - # Convert to complex - x_train_c = iq_to_complex(X_train) - z_train_c = iq_to_complex(y_train) # measured PA output - - # Normalise PA output by target gain - z_norm = z_train_c / target_gain - - # Build basis from normalised PA output (postdistorter input) - Phi_train = build_basis(z_norm) - - # Solve x_train = Phi_train * w via least squares (uses QR/SVD internally) - w, residuals, rank, sv = np.linalg.lstsq(Phi_train, x_train_c, rcond=None) - print(f"Least-squares rank : {rank} / {n_complex_coeffs}") - - # ----------------------------------------------------------------------- - # Step 2: Apply DPD to test data - # ----------------------------------------------------------------------- - x_test_c = iq_to_complex(X_test) - - # Build basis from test input (predistorter) - Phi_test = build_basis(x_test_c) - x_dpd_c = Phi_test @ w # predistorted signal - x_dpd_iq = complex_to_iq(x_dpd_c) - - # ----------------------------------------------------------------------- - # Step 3: Pass through PA model - # ----------------------------------------------------------------------- - pa_output_iq = run_pa_model(x_dpd_iq, pa_net, device, nperseg) - - # Ground truth for DPD: target_gain * x_test - gt_iq = (target_gain * X_test).astype(np.float32) - - # ----------------------------------------------------------------------- - # Step 4: Metrics - # ----------------------------------------------------------------------- - nmse, evm, aclr_l, aclr_r = compute_metrics(pa_output_iq, gt_iq, spec) - aclr_avg = (aclr_l + aclr_r) / 2 - - print(f"\nTest Results:") - print(f"{'Metric':<12} {'Value':>12}") - print("-" * 26) - print(f"{'ACLR_L':<12} {aclr_l:>12.2f} dB") - print(f"{'ACLR_R':<12} {aclr_r:>12.2f} dB") - print(f"{'ACLR_AVG':<12} {aclr_avg:>12.2f} dB") - print(f"{'EVM':<12} {evm:>12.2f} dB") - print(f"{'NMSE':<12} {nmse:>12.2f} dB") - - # Also run on val set - x_val_c = iq_to_complex(X_val) - Phi_val = build_basis(x_val_c) - x_dpd_val_c = Phi_val @ w - x_dpd_val_iq = complex_to_iq(x_dpd_val_c) - pa_val_iq = run_pa_model(x_dpd_val_iq, pa_net, device, nperseg) - gt_val_iq = (target_gain * X_val).astype(np.float32) - v_nmse, v_evm, v_aclr_l, v_aclr_r = compute_metrics(pa_val_iq, gt_val_iq, spec) - v_aclr_avg = (v_aclr_l + v_aclr_r) / 2 - print(f"\nVal Results:") - print(f"{'ACLR_AVG':<12} {v_aclr_avg:>12.2f} dB") - print(f"{'EVM':<12} {v_evm:>12.2f} dB") - print(f"{'NMSE':<12} {v_nmse:>12.2f} dB") - - -if __name__ == '__main__': - main() diff --git a/benchmark/collect_benchmark_report.py b/benchmark/collect_benchmark_report.py new file mode 100644 index 0000000..9e78f51 --- /dev/null +++ b/benchmark/collect_benchmark_report.py @@ -0,0 +1,3011 @@ +"""Collect one benchmark-report reproduction run into JSON and Markdown. + +The training entry point writes checkpoints and CSV logs to architecture-based +paths under ``save/`` and ``log/``. The benchmark runner archives those files +into a run-specific directory, then calls this module to validate the expected +recipes and assemble a portable evidence bundle. +""" + +from __future__ import annotations + +import argparse +import copy +import csv +from datetime import datetime, timezone +import gzip +import hashlib +import importlib.metadata +import io +import json +import math +import os +from pathlib import Path +import platform +import shlex +import subprocess +import tarfile +import tempfile +from typing import Any + + +REPO_ROOT = Path(__file__).resolve().parent.parent +RUN_SCHEMA_VERSION = 6 +POLYNOMIAL_SCHEMA_VERSION = 4 +GMP_PA_SVD_RCOND = 1e-4 +PA_MODEL_ORDER = ("mp", "gmp", "gru", "tres_gru", "tres_deltagru") +DPD_MODEL_ORDER = ("mp", "gmp", "gru", "tres_gru") + +DATASETS = { + "APA_200MHz": { + "slug": "apa", + "sample_rate_hz": 983_040_000.0, + "nperseg": 19_662, + }, + "DPA_160MHz": { + "slug": "dpa", + "sample_rate_hz": 640_000_000.0, + "nperseg": 16_384, + }, +} + +NEURAL_PA_MODELS = { + "gru": { + "display_name": "GRU-H28", + "backbone": "gru", + "hidden_size": 28, + "parameters": 2746, + "model_id": "PA_S_0_M_GRU_H_28_F_200_P_2746", + }, + "tres_gru": { + "display_name": "TRes-GRU-H27", + "backbone": "tres_gru", + "hidden_size": 27, + "parameters": 2751, + "model_id": "PA_S_0_M_TRES_GRU_H_27_F_200_P_2751", + }, + "tres_deltagru": { + "display_name": "TRes-DeltaGRU-H27 (THX=THH=0)", + "backbone": "tres_deltagru", + "hidden_size": 27, + "parameters": 2751, + "model_id": "PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751", + "delta_thresholds": { + "input": 0.0, + "hidden": 0.0, + }, + }, +} + +REFERENCE_PA_KEY = "tres_gru" +REFERENCE_PA_PARENT = "PA_S_0_M_TRES_GRU_H_27_F_200" +ALTERNATE_PA_KEY = "tres_deltagru" +ALTERNATE_PA_PARENT = "PA_S_0_M_TRES_DELTAGRU_H_27_F_200" + +NEURAL_DPD_MODELS = { + "gru": { + "display_name": "GRU-H16", + "backbone": "gru", + "hidden_size": 16, + "parameters": 994, + "model_id": "DPD_S_0_M_GRU_H_16_F_200_P_994", + }, + "tres_gru": { + "display_name": "TRes-GRU-H15", + "backbone": "tres_gru", + "hidden_size": 15, + "parameters": 999, + "model_id": "DPD_S_0_M_TRES_GRU_H_15_F_200_P_999", + }, +} + +TRES_DELTAGRU_DPD_MODEL = { + "display_name": "TRes-DeltaGRU-H15 (THX=THH=0)", + "backbone": "tres_deltagru", + "hidden_size": 15, + "parameters": 999, + "model_id": ( + "DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_" + "THX_0.000_THH_0.000" + ), + "delta_thresholds": { + "input": 0.0, + "hidden": 0.0, + }, +} + +NEURAL_DPD_EXPERIMENTS = { + **{ + f"{model_key}_via_{REFERENCE_PA_KEY}_pa": { + "model_key": model_key, + "pa_model_key": REFERENCE_PA_KEY, + "pa_parent": REFERENCE_PA_PARENT, + } + for model_key in NEURAL_DPD_MODELS + }, + "tres_deltagru_via_tres_gru_pa": { + "model_key": "tres_deltagru", + "pa_model_key": REFERENCE_PA_KEY, + "pa_parent": REFERENCE_PA_PARENT, + }, + "tres_deltagru_via_tres_deltagru_pa": { + "model_key": "tres_deltagru", + "pa_model_key": ALTERNATE_PA_KEY, + "pa_parent": ALTERNATE_PA_PARENT, + }, +} + +POLYNOMIAL_CONFIGURATIONS = { + "pa_modeling": { + "mp": { + "basis_configuration": {"K": 9, "Q": 150}, + "complex_coefficients": 1350, + "real_parameters": 2700, + }, + "gmp": { + "basis_configuration": { + "Ka": 5, + "La": 30, + "Kb": 4, + "Lb": 30, + "Mb": 5, + "Kc": 4, + "Lc": 30, + "Mc": 5, + }, + "complex_coefficients": 1350, + "real_parameters": 2700, + }, + }, + "dpd_ila": { + "mp": { + "basis_configuration": {"K": 5, "Q": 100}, + "complex_coefficients": 500, + "real_parameters": 1000, + }, + "gmp": { + "basis_configuration": { + "Ka": 5, + "La": 20, + "Kb": 4, + "Lb": 20, + "Mb": 3, + "Kc": 4, + "Lc": 20, + "Mc": 2, + }, + "complex_coefficients": 500, + "real_parameters": 1000, + }, + }, +} + +NEURAL_RECIPE = { + "epochs": 300, + "batch_size": 64, + "initial_learning_rate": 5e-3, + "lr_schedule": "ReduceLROnPlateau", + "minimum_learning_rate": 5e-5, + "decay_factor": 0.5, + "patience": 5, + "frame_length": 200, + "frame_stride": 1, + "optimizer": "AdamW", + "optimizer_weight_decay": 0.01, + "optimizer_betas": [0.9, 0.999], + "optimizer_eps": 1e-8, + "loss": "MSE", + "scheduler_threshold": 1e-4, + "scheduler_threshold_mode": "rel", + "scheduler_cooldown": 0, + "scheduler_eps": 1e-8, + "seed": 0, +} + +SOURCE_PATTERNS = ( + "*.py", + "backbones/**/*.py", + "benchmark/**/*.py", + "modules/**/*.py", + "opendpd/**/*.py", + "quant/**/*.py", + "steps/**/*.py", + "utils/**/*.py", +) +SOURCE_DOCUMENTS = ( + "benchmark/benchmark_report.md", + "benchmark/reproduce_benchmark_report.sh", +) + + +def sha256_file(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as handle: + for chunk in iter(lambda: handle.read(1024 * 1024), b""): + digest.update(chunk) + return digest.hexdigest() + + +def write_source_snapshot(paths: list[str], destination: Path) -> None: + """Write an atomic, deterministic archive of the exact benchmark sources.""" + temporary_path: Path | None = None + try: + with tempfile.NamedTemporaryFile( + dir=destination.parent, + prefix=f".{destination.name}.", + suffix=".tmp", + delete=False, + ) as temporary: + temporary_path = Path(temporary.name) + with temporary_path.open("wb") as raw_handle: + with gzip.GzipFile( + filename="", + mode="wb", + fileobj=raw_handle, + mtime=0, + ) as gzip_handle: + with tarfile.open( + fileobj=gzip_handle, + mode="w", + format=tarfile.GNU_FORMAT, + ) as archive: + for relative_path in sorted(paths): + source = REPO_ROOT / relative_path + if not source.is_file() or source.is_symlink(): + raise ValueError( + "Source snapshot entries must be regular files: " + f"{relative_path}" + ) + content = source.read_bytes() + information = tarfile.TarInfo(relative_path) + information.size = len(content) + information.mode = source.stat().st_mode & 0o777 + information.mtime = 0 + information.uid = 0 + information.gid = 0 + information.uname = "" + information.gname = "" + archive.addfile(information, io.BytesIO(content)) + os.replace(temporary_path, destination) + finally: + if temporary_path is not None and temporary_path.exists(): + temporary_path.unlink() + + +def validate_source_snapshot( + path: Path, + expected_hashes: dict[str, str], +) -> dict[str, Any]: + """Verify every archive member against the pre-run source hash map.""" + if not path.is_file(): + raise FileNotFoundError(f"Source snapshot is missing: {path}") + observed: dict[str, str] = {} + with tarfile.open(path, mode="r:gz") as archive: + for member in archive.getmembers(): + if not member.isfile(): + raise ValueError( + f"Source snapshot contains a non-file member: {member.name}" + ) + if member.name in observed: + raise ValueError( + f"Source snapshot contains a duplicate member: {member.name}" + ) + handle = archive.extractfile(member) + if handle is None: + raise ValueError( + f"Cannot read source snapshot member: {member.name}" + ) + observed[member.name] = hashlib.sha256(handle.read()).hexdigest() + require_equal(observed, expected_hashes, "source snapshot members") + return { + "path": path.name, + "sha256": sha256_file(path), + "file_count": len(observed), + } + + +def read_csv(path: Path) -> list[dict[str, str]]: + with path.open(newline="") as handle: + rows = list(csv.DictReader(handle)) + if not rows: + raise ValueError(f"CSV contains no data rows: {path}") + return rows + + +def as_int(row: dict[str, str], key: str) -> int: + value = as_float(row, key) + if not value.is_integer(): + raise ValueError(f"{key} is not an integer: {value}") + return int(value) + + +def as_float(row: dict[str, str], key: str) -> float: + value = float(row[key]) + if not math.isfinite(value): + raise ValueError(f"{key} is not finite: {value}") + return value + + +def require_equal(actual: Any, expected: Any, description: str) -> None: + if actual != expected: + raise ValueError( + f"{description} does not match the benchmark recipe: " + f"expected {expected!r}, got {actual!r}" + ) + + +def require_close( + actual: float, + expected: float, + description: str, + *, + tolerance: float = 1e-12, +) -> None: + if not math.isclose(actual, expected, rel_tol=0.0, abs_tol=tolerance): + raise ValueError( + f"{description} does not match the benchmark recipe: " + f"expected {expected}, got {actual}" + ) + + +def metric_block(row: dict[str, str]) -> dict[str, dict[str, float]]: + def split(prefix: str) -> dict[str, float]: + metrics = { + "loss": as_float(row, f"{prefix}_LOSS"), + "nmse_db": as_float(row, f"{prefix}_NMSE"), + "evm_db": as_float(row, f"{prefix}_EVM"), + "aclr_left_db": as_float(row, f"{prefix}_ACLR_L"), + "aclr_right_db": as_float(row, f"{prefix}_ACLR_R"), + "aclr_avg_db": as_float(row, f"{prefix}_ACLR_AVG"), + } + require_close( + metrics["aclr_avg_db"], + (metrics["aclr_left_db"] + metrics["aclr_right_db"]) / 2.0, + f"{prefix} logged ACLR average", + tolerance=1e-8, + ) + return metrics + + return {"validation": split("VAL"), "test": split("TEST")} + + +def source_files() -> tuple[str, ...]: + paths = { + path.relative_to(REPO_ROOT).as_posix() + for pattern in SOURCE_PATTERNS + for path in REPO_ROOT.glob(pattern) + if path.is_file() + } + paths.update(SOURCE_DOCUMENTS) + missing = [path for path in paths if not (REPO_ROOT / path).is_file()] + if missing: + raise FileNotFoundError( + f"Expected benchmark source files are missing: {sorted(missing)}" + ) + return tuple(sorted(paths)) + + +def validate_checkpoint(path: Path, expected_parameters: int) -> None: + import torch + + try: + state_dict = torch.load(path, map_location="cpu", weights_only=True) + except Exception as exc: + raise ValueError(f"Checkpoint cannot be loaded safely: {path}") from exc + if not isinstance(state_dict, dict) or not state_dict: + raise ValueError(f"Checkpoint is not a non-empty state dictionary: {path}") + if not all( + isinstance(key, str) and isinstance(value, torch.Tensor) + for key, value in state_dict.items() + ): + raise ValueError(f"Checkpoint contains non-tensor state entries: {path}") + parameter_count = sum(value.numel() for value in state_dict.values()) + require_equal( + parameter_count, + expected_parameters, + f"checkpoint parameter count for {path}", + ) + if not all(torch.isfinite(value).all().item() for value in state_dict.values()): + raise ValueError(f"Checkpoint contains a non-finite tensor: {path}") + + +def archived_artifact(output_dir: Path, source: Path) -> dict[str, Any]: + absolute_source = REPO_ROOT / source + archived_path = output_dir / "artifacts" / source + if not absolute_source.is_file(): + raise FileNotFoundError(f"Expected benchmark artifact is missing: {source}") + if not archived_path.is_file(): + raise FileNotFoundError( + f"Benchmark artifact was not archived into the run directory: {source}" + ) + source_hash = sha256_file(absolute_source) + archived_hash = sha256_file(archived_path) + require_equal(archived_hash, source_hash, f"archived hash for {source}") + return { + "source_path": source.as_posix(), + "archived_path": archived_path.relative_to(output_dir).as_posix(), + "sha256": source_hash, + "size_bytes": absolute_source.stat().st_size, + } + + +def read_pa_bindings( + output_dir: Path, +) -> dict[tuple[str, str, str], dict[str, str]]: + path = output_dir / "pa_checkpoint_bindings.tsv" + with path.open(newline="") as handle: + rows = list(csv.DictReader(handle, delimiter="\t")) + require_equal( + len(rows), + len(DATASETS) * len(NEURAL_DPD_EXPERIMENTS), + "neural DPD PA checkpoint binding count", + ) + + bindings: dict[tuple[str, str, str], dict[str, str]] = {} + for row in rows: + key = ( + row["dataset"], + row["dpd_model_key"], + row["pa_model_key"], + ) + if key in bindings: + raise ValueError(f"Duplicate PA checkpoint binding: {key}") + if row["dataset"] not in DATASETS: + raise ValueError(f"Unknown dataset in PA checkpoint binding: {key}") + if ( + row["dpd_model_key"] not in NEURAL_DPD_MODELS + and row["dpd_model_key"] != "tres_deltagru" + ): + raise ValueError(f"Unknown model in PA checkpoint binding: {key}") + if row["pa_model_key"] not in {REFERENCE_PA_KEY, ALTERNATE_PA_KEY}: + raise ValueError(f"Unknown PA surrogate in checkpoint binding: {key}") + if len(row["sha256"]) != 64: + raise ValueError(f"Invalid PA checkpoint hash for {key}") + bindings[key] = row + + expected_keys = { + ( + dataset, + experiment["model_key"], + experiment["pa_model_key"], + ) + for dataset in DATASETS + for experiment in NEURAL_DPD_EXPERIMENTS.values() + } + require_equal(set(bindings), expected_keys, "neural DPD PA checkpoint bindings") + return bindings + + +def read_recorded_commands(path: Path) -> dict[str, list[str]]: + commands: dict[str, list[str]] = {} + current_label: str | None = None + for raw_line in path.read_text().splitlines(): + line = raw_line.strip() + if line.startswith("# "): + current_label = line[2:] + if current_label in commands: + raise ValueError(f"Duplicate command label in {path}: {current_label}") + continue + if not line: + continue + if current_label is None: + raise ValueError(f"Unlabelled command in {path}: {line}") + commands[current_label] = shlex.split(line) + current_label = None + if current_label is not None: + raise ValueError(f"Command label has no command in {path}: {current_label}") + return commands + + +def cli_options(command: list[str], *, label: str) -> dict[str, str]: + try: + main_index = command.index("main.py") + except ValueError as exc: + raise ValueError(f"Recorded training command lacks main.py: {label}") from exc + tokens = command[main_index + 1 :] + if len(tokens) % 2: + raise ValueError(f"Recorded training command has an unpaired option: {label}") + options: dict[str, str] = {} + for option, value in zip(tokens[::2], tokens[1::2]): + if not option.startswith("--"): + raise ValueError( + f"Unexpected positional token in recorded training command " + f"{label}: {option}" + ) + key = option[2:] + if key in options: + raise ValueError(f"Duplicate --{key} in recorded command: {label}") + options[key] = value + return options + + +def validate_neural_commands(path: Path, device: int | None = None) -> None: + commands = read_recorded_commands(path) + training_commands = { + label: cli_options(command, label=label) + for label, command in commands.items() + if "main.py" in command + } + require_equal( + len(training_commands), + len(DATASETS) * (len(NEURAL_PA_MODELS) + len(NEURAL_DPD_EXPERIMENTS)), + "recorded neural training command count", + ) + + expected_matrix = { + *( + ( + "train_pa", + dataset, + model["backbone"], + model["hidden_size"], + None, + None, + ) + for dataset in DATASETS + for model in NEURAL_PA_MODELS.values() + ), + *( + ( + "train_dpd", + dataset, + ( + NEURAL_DPD_MODELS[experiment["model_key"]] + if experiment["model_key"] in NEURAL_DPD_MODELS + else TRES_DELTAGRU_DPD_MODEL + )["backbone"], + ( + NEURAL_DPD_MODELS[experiment["model_key"]] + if experiment["model_key"] in NEURAL_DPD_MODELS + else TRES_DELTAGRU_DPD_MODEL + )["hidden_size"], + NEURAL_PA_MODELS[experiment["pa_model_key"]]["backbone"], + NEURAL_PA_MODELS[experiment["pa_model_key"]]["hidden_size"], + ) + for dataset in DATASETS + for experiment in NEURAL_DPD_EXPERIMENTS.values() + ), + } + actual_matrix: set[tuple[str, str, str, int, str | None, int | None]] = set() + for label, options in training_commands.items(): + step = options.get("step") + if step not in {"train_pa", "train_dpd"}: + raise ValueError(f"Unexpected training step in {label}: {step!r}") + backbone_key = "PA_backbone" if step == "train_pa" else "DPD_backbone" + hidden_key = "PA_hidden_size" if step == "train_pa" else "DPD_hidden_size" + try: + matrix_key = ( + step, + options["dataset_name"], + options[backbone_key], + int(options[hidden_key]), + options.get("PA_backbone") if step == "train_dpd" else None, + ( + int(options["PA_hidden_size"]) + if step == "train_dpd" + else None + ), + ) + except (KeyError, ValueError) as exc: + raise ValueError(f"Incomplete model recipe in command {label}") from exc + if matrix_key in actual_matrix: + raise ValueError(f"Duplicate neural benchmark command: {matrix_key}") + actual_matrix.add(matrix_key) + + integer_expectations = { + "n_epochs": NEURAL_RECIPE["epochs"], + "batch_size": NEURAL_RECIPE["batch_size"], + "batch_size_eval": NEURAL_RECIPE["batch_size"], + "lr_schedule": 1, + "frame_length": NEURAL_RECIPE["frame_length"], + "frame_stride": NEURAL_RECIPE["frame_stride"], + "PA_num_layers": 1, + "DPD_num_layers": 1, + "log_precision": 8, + "eval_val": 1, + "eval_test": 1, + "seed": NEURAL_RECIPE["seed"], + } + if device is not None: + integer_expectations["devices"] = device + for option, expected in integer_expectations.items(): + try: + actual = int(options[option]) + except (KeyError, ValueError) as exc: + raise ValueError( + f"Missing or invalid --{option} in command {label}" + ) from exc + require_equal(actual, expected, f"--{option} in command {label}") + + float_expectations = { + "lr": NEURAL_RECIPE["initial_learning_rate"], + "lr_end": NEURAL_RECIPE["minimum_learning_rate"], + "decay_factor": NEURAL_RECIPE["decay_factor"], + "patience": NEURAL_RECIPE["patience"], + "grad_clip_val": 200.0, + "thx": 0.0, + "thh": 0.0, + } + for option, expected in float_expectations.items(): + try: + actual = float(options[option]) + except (KeyError, ValueError) as exc: + raise ValueError( + f"Missing or invalid --{option} in command {label}" + ) from exc + require_close(actual, expected, f"--{option} in command {label}") + + require_equal(options.get("opt_type"), "adamw", f"optimizer in {label}") + require_equal(options.get("loss_type"), "l2", f"loss in {label}") + require_equal(options.get("accelerator"), "cuda", f"accelerator in {label}") + require_equal( + options.get("re_level"), + "soft", + f"reproducibility level in {label}", + ) + require_equal( + actual_matrix, + expected_matrix, + "recorded neural model matrix", + ) + + +def module_cli_options( + command: list[str], + *, + label: str, + module: str, +) -> dict[str, str]: + try: + module_index = command.index("-m") + except ValueError as exc: + raise ValueError(f"Recorded command lacks -m {module}: {label}") from exc + if ( + module_index + 1 >= len(command) + or command[module_index + 1] != module + ): + raise ValueError(f"Recorded command uses the wrong module: {label}") + tokens = command[module_index + 2 :] + if len(tokens) % 2: + raise ValueError(f"Recorded module command has an unpaired option: {label}") + options: dict[str, str] = {} + for option, value in zip(tokens[::2], tokens[1::2]): + if not option.startswith("--"): + raise ValueError( + f"Unexpected positional token in recorded command {label}: " + f"{option}" + ) + key = option[2:] + if key in options: + raise ValueError(f"Duplicate --{key} in recorded command: {label}") + options[key] = value + return options + + +def validate_runner_commands( + path: Path, + *, + output_dir: Path, + device: int, +) -> None: + """Validate the complete recorded neural and polynomial experiment matrix.""" + validate_neural_commands(path, device=device) + commands = read_recorded_commands(path) + expected_labels = {"snapshot_context", "collect_report"} + expected_labels.update( + f"train_pa_{configuration['slug']}_{model}" + for configuration in DATASETS.values() + for model in NEURAL_PA_MODELS + ) + expected_labels.update( + f"train_dpd_{configuration['slug']}_{experiment_key}" + for configuration in DATASETS.values() + for experiment_key in NEURAL_DPD_EXPERIMENTS + ) + expected_labels.update( + f"pa_model_{configuration['slug']}_{model}" + for configuration in DATASETS.values() + for model in ("mp", "gmp") + ) + expected_labels.update( + f"dpd_ila_{configuration['slug']}_{model}" + for configuration in DATASETS.values() + for model in ("mp", "gmp") + ) + require_equal(set(commands), expected_labels, "recorded benchmark job matrix") + + for label in ("snapshot_context", "collect_report"): + command = commands[label] + require_equal( + command.count("benchmark.collect_benchmark_report"), + 1, + f"collector module in {label}", + ) + require_equal( + command[command.index("--output-dir") + 1], + str(output_dir), + f"collector output directory in {label}", + ) + require_equal( + int(command[command.index("--device") + 1]), + device, + f"collector device in {label}", + ) + require_equal( + "--snapshot-context" in commands["snapshot_context"], + True, + "pre-run context command", + ) + require_equal( + "--snapshot-context" in commands["collect_report"], + False, + "final collector command", + ) + + expected_solver_device = f"cuda:{device}" + for dataset, dataset_configuration in DATASETS.items(): + slug = dataset_configuration["slug"] + for task, label_prefix, filename_task in ( + ("pa_modeling", "pa_model", "pa"), + ("dpd_ila", "dpd_ila", "dpd"), + ): + for model_name in ("mp", "gmp"): + label = f"{label_prefix}_{slug}_{model_name}" + options = module_cli_options( + commands[label], + label=label, + module="benchmark.benchmark_volterra", + ) + expectations = { + "task": task, + "dataset-name": dataset, + "model": model_name, + "solver-device": expected_solver_device, + "solver-dtype": "complex64", + "device": str(device), + "json-out": str( + output_dir + / ( + f"benchmark_report_{slug}_{filename_task}_" + f"{model_name}.json" + ) + ), + } + if task == "pa_modeling" and model_name == "gmp": + expectations.update( + { + "solver-mode": "truncated_svd", + "svd-rcond": "1e-4", + } + ) + else: + expectations["solver-mode"] = "gels" + require_equal( + "svd-rcond" in options, + False, + f"unexpected --svd-rcond in command {label}", + ) + if task == "dpd_ila": + expectations.update( + { + "pa-backbone": "tres_gru", + "pa-hidden-size": "27", + "pa-num-layers": "1", + "pa-checkpoint": ( + f"save/{dataset}/train_pa/" + "PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt" + ), + } + ) + for key, value in expectations.items(): + require_equal( + options.get(key), + value, + f"--{key} in command {label}", + ) + + configuration = POLYNOMIAL_CONFIGURATIONS[task][model_name][ + "basis_configuration" + ] + for key, value in configuration.items(): + require_equal( + int(options[key]), + value, + f"--{key} in command {label}", + ) + + +def expected_runner_recipe() -> dict[str, Any]: + return { + "schema_version": RUN_SCHEMA_VERSION, + "datasets": list(DATASETS), + "parameter_count_convention": ( + "Neural parameters are real trainable scalars; each complex " + "polynomial coefficient counts as two real degrees of freedom." + ), + "neural": { + "optimizer": "AdamW", + "optimizer_weight_decay": NEURAL_RECIPE["optimizer_weight_decay"], + "optimizer_betas": NEURAL_RECIPE["optimizer_betas"], + "optimizer_eps": NEURAL_RECIPE["optimizer_eps"], + "loss": "MSE", + "epochs": NEURAL_RECIPE["epochs"], + "batch_size": NEURAL_RECIPE["batch_size"], + "evaluation_batch_size": NEURAL_RECIPE["batch_size"], + "initial_learning_rate": NEURAL_RECIPE["initial_learning_rate"], + "scheduler": "ReduceLROnPlateau", + "scheduler_factor": NEURAL_RECIPE["decay_factor"], + "scheduler_patience": NEURAL_RECIPE["patience"], + "scheduler_threshold": NEURAL_RECIPE["scheduler_threshold"], + "scheduler_threshold_mode": NEURAL_RECIPE[ + "scheduler_threshold_mode" + ], + "scheduler_cooldown": NEURAL_RECIPE["scheduler_cooldown"], + "scheduler_eps": NEURAL_RECIPE["scheduler_eps"], + "minimum_learning_rate": NEURAL_RECIPE[ + "minimum_learning_rate" + ], + "frame_length": NEURAL_RECIPE["frame_length"], + "frame_stride": NEURAL_RECIPE["frame_stride"], + "gradient_clip": 200, + "seed": NEURAL_RECIPE["seed"], + "reproducibility": "soft", + "pa_scheduler_and_selection_metric": "validation NMSE", + "dpd_scheduler_and_selection_metric": "validation ACLR_AVG", + }, + "pa_models": { + "mp": {"K": 9, "Q": 150, "real_parameters": 2700}, + "gmp": { + **POLYNOMIAL_CONFIGURATIONS["pa_modeling"]["gmp"][ + "basis_configuration" + ], + "real_parameters": 2700, + }, + "gru": {"hidden_size": 28, "real_parameters": 2746}, + "tres_gru": {"hidden_size": 27, "real_parameters": 2751}, + "tres_deltagru": { + "hidden_size": 27, + "real_parameters": 2751, + "delta_thresholds": { + "input": 0.0, + "hidden": 0.0, + }, + }, + }, + "dpd_models": { + "mp": { + "K": 5, + "Q": 100, + "real_parameters": 1000, + "method": "ILA", + }, + "gmp": { + **POLYNOMIAL_CONFIGURATIONS["dpd_ila"]["gmp"][ + "basis_configuration" + ], + "real_parameters": 1000, + "method": "ILA", + }, + "gru": {"hidden_size": 16, "real_parameters": 994}, + "tres_gru": {"hidden_size": 15, "real_parameters": 999}, + }, + "dpd_tres_deltagru_pa_surrogate_comparison": { + "model": { + "hidden_size": 15, + "real_parameters": 999, + "delta_thresholds": { + "input": 0.0, + "hidden": 0.0, + }, + }, + "pa_surrogates": { + "tres_gru": { + "hidden_size": 27, + "real_parameters": 2751, + "delta_thresholds": None, + }, + "tres_deltagru": { + "hidden_size": 27, + "real_parameters": 2751, + "delta_thresholds": { + "input": 0.0, + "hidden": 0.0, + }, + }, + }, + }, + "dpd_pa_surrogate": { + "backbone": "tres_gru", + "hidden_size": 27, + "real_parameters": 2751, + }, + "polynomial_solvers": { + "default": { + "implementation": "torch.linalg.lstsq", + "mode": "gels", + "driver": "gels", + "dtype": "torch.complex64", + "column_scaling": "l2", + "regularization": None, + }, + "gmp_pa": { + "implementation": "torch.linalg.svd", + "mode": "truncated_svd", + "driver": "gesvdj", + "dtype": "torch.complex64", + "column_scaling": "l2", + "regularization": { + "type": "truncated_svd", + "relative_cutoff": GMP_PA_SVD_RCOND, + }, + }, + "segment_boundary_policy": ( + "zero delay state at every nperseg boundary" + ), + }, + } + + +def validate_recipe_file(path: Path) -> dict[str, Any]: + if not path.is_file(): + raise FileNotFoundError(f"Benchmark recipe is missing: {path}") + with path.open() as handle: + recipe = json.load(handle) + require_equal(recipe, expected_runner_recipe(), "recorded benchmark recipe") + return recipe + + +def validate_learning_rate_schedule( + history_rows: list[dict[str, str]], + *, + model_id: str, + initial_learning_rate: float, + minimum_learning_rate: float, + decay_factor: float, +) -> None: + """Validate the observable portion of the configured plateau schedule.""" + learning_rates = [as_float(row, "LR") for row in history_rows] + require_close( + learning_rates[0], + initial_learning_rate, + f"initial learning rate for {model_id}", + tolerance=1e-10, + ) + for epoch, learning_rate in enumerate(learning_rates): + if learning_rate < minimum_learning_rate - 1e-10: + raise ValueError( + f"Learning rate at epoch {epoch} for {model_id} is below " + f"the configured minimum: {learning_rate} < " + f"{minimum_learning_rate}" + ) + if learning_rate > initial_learning_rate + 1e-10: + raise ValueError( + f"Learning rate at epoch {epoch} for {model_id} exceeds " + f"the configured initial value: {learning_rate} > " + f"{initial_learning_rate}" + ) + for epoch, (previous, current) in enumerate( + zip(learning_rates, learning_rates[1:]), start=1 + ): + if current > previous + 1e-10: + raise ValueError( + f"Learning rate increased at epoch {epoch} for {model_id}: " + f"{previous} -> {current}" + ) + if not math.isclose(current, previous, rel_tol=0.0, abs_tol=1e-10): + expected = max(previous * decay_factor, minimum_learning_rate) + require_close( + current, + expected, + f"scheduled learning rate at epoch {epoch} for {model_id}", + tolerance=1e-8, + ) + + +def collect_training_model( + output_dir: Path, + *, + dataset: str, + step: str, + parent: str | None, + model_id: str, + expected_epochs: int, + expected_batch_size: int, + expected_initial_lr: float, + expected_backbone: str, + expected_hidden_size: int, + expected_parameters: int, + selection_metric: str, + expected_delta_thresholds: dict[str, float] | None = None, + expected_pa_parameters: int | None = None, +) -> dict[str, Any]: + base = Path("log") / dataset / step + save_base = Path("save") / dataset / step + if parent is not None: + base /= parent + save_base /= parent + + best_path = base / "best" / f"{model_id}.csv" + history_path = base / "history" / f"{model_id}.csv" + checkpoint_path = save_base / f"{model_id}.pt" + validate_checkpoint(REPO_ROOT / checkpoint_path, expected_parameters) + + best_rows = read_csv(REPO_ROOT / best_path) + history_rows = read_csv(REPO_ROOT / history_path) + require_equal(len(best_rows), 1, f"best-row count for {model_id}") + require_equal( + len(history_rows), expected_epochs, f"history-row count for {model_id}" + ) + require_equal( + [as_int(row, "EPOCH") for row in history_rows], + list(range(expected_epochs)), + f"epoch sequence for {model_id}", + ) + + best = best_rows[0] + require_equal(as_int(best, "N_EPOCH"), expected_epochs, f"epochs for {model_id}") + require_equal( + as_int(best, "BATCH_SIZE"), + expected_batch_size, + f"batch size for {model_id}", + ) + require_equal(as_int(best, "FRAME_LENGTH"), 200, f"frame length for {model_id}") + require_equal(best["BACKBONE"], expected_backbone, f"backbone for {model_id}") + require_equal( + as_int(best, "HIDDEN_SIZE"), + expected_hidden_size, + f"hidden size for {model_id}", + ) + expected_logged_parameters = expected_parameters + if step == "train_dpd": + if expected_pa_parameters is None: + raise ValueError( + f"Expected PA parameter count is required for DPD model {model_id}" + ) + expected_logged_parameters += expected_pa_parameters + require_equal( + as_int(best, "N_PARAM"), + expected_logged_parameters, + f"logged network parameter count for {model_id}", + ) + if expected_delta_thresholds is not None: + for row_index, row in enumerate(history_rows): + require_close( + as_float(row, "THX"), + expected_delta_thresholds["input"], + f"input delta threshold at row {row_index} for {model_id}", + ) + require_close( + as_float(row, "THH"), + expected_delta_thresholds["hidden"], + f"hidden delta threshold at row {row_index} for {model_id}", + ) + require_close( + as_float(best, "THX"), + expected_delta_thresholds["input"], + f"selected input delta threshold for {model_id}", + ) + require_close( + as_float(best, "THH"), + expected_delta_thresholds["hidden"], + f"selected hidden delta threshold for {model_id}", + ) + validate_learning_rate_schedule( + history_rows, + model_id=model_id, + initial_learning_rate=expected_initial_lr, + minimum_learning_rate=NEURAL_RECIPE["minimum_learning_rate"], + decay_factor=NEURAL_RECIPE["decay_factor"], + ) + + best_epoch = as_int(best, "EPOCH") + logged_selection_values = [ + as_float(row, selection_metric) for row in history_rows + ] + minimum_logged_value = min(logged_selection_values) + tied_best_epochs = { + index + for index, value in enumerate(logged_selection_values) + if value == minimum_logged_value + } + if best_epoch not in tied_best_epochs: + raise ValueError( + f"Selected epoch {best_epoch} for {model_id} is not tied for the " + f"minimum logged {selection_metric}; tied epochs are " + f"{sorted(tied_best_epochs)}" + ) + matching_history_rows = [ + row for row in history_rows if as_int(row, "EPOCH") == best_epoch + ] + require_equal( + len(matching_history_rows), 1, f"selected epoch in history for {model_id}" + ) + for key, value in best.items(): + require_equal( + matching_history_rows[0].get(key), + value, + f"best/history value {key} for {model_id}", + ) + + result = { + "selected_epoch_zero_based": best_epoch, + "completed_epochs": len(history_rows), + "selected_learning_rate": as_float(best, "LR"), + "train_loss": as_float(best, "TRAIN_LOSS"), + "metrics": metric_block(best), + "artifacts": { + "checkpoint": archived_artifact(output_dir, checkpoint_path), + "best_csv": archived_artifact(output_dir, best_path), + "history_csv": archived_artifact(output_dir, history_path), + }, + } + if expected_delta_thresholds is not None: + result["delta_thresholds"] = dict(expected_delta_thresholds) + return result + + +def normalize_polynomial_metrics( + values: dict[str, float], +) -> dict[str, float]: + normalized = { + "nmse_db": float(values["NMSE"]), + "evm_db": float(values["EVM"]), + "aclr_left_db": float(values["ACLR_L"]), + "aclr_right_db": float(values["ACLR_R"]), + "aclr_avg_db": float(values["ACLR_AVG"]), + } + for key, value in normalized.items(): + if not math.isfinite(value): + raise ValueError(f"Polynomial metric {key} is not finite: {value}") + require_close( + normalized["aclr_avg_db"], + (normalized["aclr_left_db"] + normalized["aclr_right_db"]) / 2.0, + "polynomial-model ACLR average", + tolerance=1e-10, + ) + return normalized + + +def finite_number( + raw: dict[str, Any], + key: str, + *, + source_path: Path, + positive: bool = False, + nonnegative: bool = False, +) -> float: + try: + value = float(raw[key]) + except (KeyError, TypeError, ValueError) as exc: + raise ValueError(f"{key} is missing or non-numeric in {source_path}") from exc + if not math.isfinite(value): + raise ValueError(f"{key} is not finite in {source_path}: {value}") + if positive and value <= 0.0: + raise ValueError(f"{key} must be positive in {source_path}: {value}") + if nonnegative and value < 0.0: + raise ValueError(f"{key} must be nonnegative in {source_path}: {value}") + return value + + +def collect_polynomial_model( + output_dir: Path, + *, + dataset: str, + slug: str, + task: str, + model_name: str, + expected_pa_hash: str | None = None, + expected_device: str | None = None, + expected_target_gain: float | None = None, +) -> dict[str, Any]: + if task not in POLYNOMIAL_CONFIGURATIONS: + raise ValueError(f"Unsupported polynomial benchmark task: {task}") + filename_task = "pa" if task == "pa_modeling" else "dpd" + source_path = ( + output_dir / f"benchmark_report_{slug}_{filename_task}_{model_name}.json" + ) + with source_path.open() as handle: + raw = json.load(handle) + + configuration = POLYNOMIAL_CONFIGURATIONS[task][model_name] + expected_method = ( + "direct_least_squares" + if task == "pa_modeling" + else "indirect_learning_architecture" + ) + uses_truncated_svd = task == "pa_modeling" and model_name == "gmp" + + require_equal( + raw["schema_version"], + POLYNOMIAL_SCHEMA_VERSION, + f"polynomial schema in {source_path}", + ) + require_equal(raw["dataset"], dataset, f"polynomial dataset in {source_path}") + require_equal(raw["task"], task, f"polynomial task in {source_path}") + require_equal(raw["model"], model_name, f"polynomial model in {source_path}") + require_equal(raw["method"], expected_method, f"method in {source_path}") + expected_solver = ( + "torch.linalg.svd" if uses_truncated_svd else "torch.linalg.lstsq" + ) + expected_solver_mode = "truncated_svd" if uses_truncated_svd else "gels" + expected_solver_driver = "gesvdj" if uses_truncated_svd else "gels" + require_equal(raw["solver"], expected_solver, f"polynomial solver in {source_path}") + require_equal( + raw["solver_mode"], + expected_solver_mode, + f"polynomial solver mode in {source_path}", + ) + require_equal( + raw["solver_driver"], + expected_solver_driver, + f"least-squares driver in {source_path}", + ) + require_equal( + raw["dtype"], + "torch.complex64", + f"least-squares dtype in {source_path}", + ) + require_equal( + raw["column_scaling"], + "l2", + f"least-squares column scaling in {source_path}", + ) + if not isinstance(raw["device"], str) or not raw["device"].startswith("cuda:"): + raise ValueError( + f"Polynomial least-squares device must be a CUDA device in " + f"{source_path}: {raw['device']!r}" + ) + require_equal( + raw.get("solver_device"), + raw["device"], + f"least-squares device alias in {source_path}", + ) + if expected_device is not None: + require_equal( + raw["device"], + expected_device, + f"least-squares device in {source_path}", + ) + require_equal( + raw["basis_configuration"], + configuration["basis_configuration"], + f"polynomial basis in {source_path}", + ) + require_equal( + raw["complex_coefficients"], + configuration["complex_coefficients"], + f"least-squares complex coefficient count in {source_path}", + ) + require_equal( + raw["real_parameters"], + configuration["real_parameters"], + f"least-squares parameter count in {source_path}", + ) + require_equal( + raw["parameter_count_convention"], + "two real degrees of freedom per complex coefficient", + f"parameter-count convention in {source_path}", + ) + target_gain = finite_number( + raw, + "target_gain", + source_path=source_path, + positive=True, + ) + if expected_target_gain is not None: + require_close( + target_gain, + expected_target_gain, + f"target gain in {source_path}", + tolerance=1e-6, + ) + rank = raw.get("least_squares_rank") + if uses_truncated_svd: + require_equal( + raw.get("full_rank_assumption"), + False, + f"full-rank assumption for truncated SVD in {source_path}", + ) + require_equal( + raw.get("regularization"), + "truncated_svd", + f"regularization in {source_path}", + ) + svd_rcond = finite_number( + raw, + "svd_rcond", + source_path=source_path, + positive=True, + ) + require_close( + svd_rcond, + GMP_PA_SVD_RCOND, + f"SVD relative cutoff in {source_path}", + tolerance=1e-12, + ) + if not isinstance(rank, int) or isinstance(rank, bool): + raise ValueError( + f"least-squares rank is not an integer in {source_path}: " + f"{rank!r}" + ) + if not 0 < rank < configuration["complex_coefficients"]: + raise ValueError( + f"truncated-SVD rank is outside the expected range in " + f"{source_path}: {rank}" + ) + singular_value_max = finite_number( + raw, + "singular_value_max", + source_path=source_path, + positive=True, + ) + singular_value_min = finite_number( + raw, + "singular_value_min", + source_path=source_path, + positive=True, + ) + singular_value_cutoff = finite_number( + raw, + "singular_value_cutoff", + source_path=source_path, + positive=True, + ) + retained_singular_value_min = finite_number( + raw, + "retained_singular_value_min", + source_path=source_path, + positive=True, + ) + condition_number = finite_number( + raw, + "condition_number", + source_path=source_path, + positive=True, + ) + require_close( + singular_value_cutoff, + singular_value_max * svd_rcond, + f"singular-value cutoff in {source_path}", + tolerance=1e-5, + ) + if not ( + singular_value_min + <= retained_singular_value_min + <= singular_value_max + ): + raise ValueError( + f"retained singular-value bounds are invalid in {source_path}" + ) + if retained_singular_value_min <= singular_value_cutoff: + raise ValueError( + f"retained singular value does not exceed the cutoff in " + f"{source_path}" + ) + if not math.isclose( + condition_number, + singular_value_max / singular_value_min, + rel_tol=1e-6, + ): + raise ValueError( + f"condition number is inconsistent with singular values in " + f"{source_path}" + ) + else: + svd_rcond = None + singular_value_max = None + singular_value_min = None + singular_value_cutoff = None + retained_singular_value_min = None + condition_number = None + require_equal( + raw.get("regularization"), + None, + f"regularization in {source_path}", + ) + require_equal( + raw.get("svd_rcond"), + None, + f"SVD relative cutoff in {source_path}", + ) + for key in ( + "singular_value_max", + "singular_value_min", + "singular_value_cutoff", + "retained_singular_value_min", + "condition_number", + ): + require_equal( + raw.get(key), + None, + f"{key} in {source_path}", + ) + require_equal( + raw.get("full_rank_assumption"), + True, + f"full-rank assumption for CUDA gels in {source_path}", + ) + require_equal(rank, None, f"least-squares rank in {source_path}") + + residual = finite_number( + raw, + "training_relative_residual", + source_path=source_path, + nonnegative=True, + ) + column_scale_min = finite_number( + raw, + "column_scale_min", + source_path=source_path, + positive=True, + ) + column_scale_max = finite_number( + raw, + "column_scale_max", + source_path=source_path, + positive=True, + ) + if column_scale_max < column_scale_min: + raise ValueError( + f"column_scale_max is below column_scale_min in {source_path}: " + f"{column_scale_max} < {column_scale_min}" + ) + coefficient_l2_norm = finite_number( + raw, + "coefficient_l2_norm", + source_path=source_path, + positive=True, + ) + + expected_sample_rate = DATASETS[dataset]["sample_rate_hz"] + expected_nperseg = DATASETS[dataset]["nperseg"] + require_close( + float(raw["sample_rate_hz"]), + expected_sample_rate, + f"sample rate in {source_path}", + ) + require_equal( + raw["nperseg"], + expected_nperseg, + f"segment length in {source_path}", + ) + pa_checkpoint_binding: dict[str, str] | None = None + pa_evaluation_device: str | None = None + if task == "dpd_ila": + if expected_pa_hash is None: + raise ValueError( + f"Expected PA hash is required to collect DPD ILA result: " + f"{source_path}" + ) + expected_checkpoint = ( + Path("save") + / dataset + / "train_pa" + / f"{NEURAL_PA_MODELS[REFERENCE_PA_KEY]['model_id']}.pt" + ).as_posix() + require_equal( + raw["pa_checkpoint"], + expected_checkpoint, + f"PA checkpoint path in {source_path}", + ) + require_equal( + raw["pa_checkpoint_sha256"], + expected_pa_hash, + f"PA checkpoint hash in {source_path}", + ) + pa_evaluation_device = raw.get("pa_evaluation_device") + if expected_device is not None: + require_equal( + pa_evaluation_device, + expected_device, + f"PA evaluation device in {source_path}", + ) + pa_checkpoint_binding = { + "checkpoint": raw["pa_checkpoint"], + "sha256": raw["pa_checkpoint_sha256"], + } + else: + unexpected_binding_fields = { + key + for key in ("pa_checkpoint", "pa_checkpoint_sha256") + if key in raw + } + if unexpected_binding_fields: + raise ValueError( + f"Direct PA polynomial result must not contain a PA checkpoint " + f"binding in {source_path}: {sorted(unexpected_binding_fields)}" + ) + + validation_metrics = normalize_polynomial_metrics(raw["validation"]) + test_metrics = normalize_polynomial_metrics(raw["test"]) + + return { + "task": raw["task"], + "method": raw["method"], + "solver": raw["solver"], + "solver_mode": raw["solver_mode"], + "solver_driver": raw["solver_driver"], + "dtype": raw["dtype"], + "device": raw["device"], + "column_scaling": raw["column_scaling"], + "column_scale_min": column_scale_min, + "column_scale_max": column_scale_max, + "training_relative_residual": residual, + "regularization": raw.get("regularization"), + "svd_rcond": svd_rcond, + "singular_value_max": singular_value_max, + "singular_value_min": singular_value_min, + "singular_value_cutoff": singular_value_cutoff, + "retained_singular_value_min": retained_singular_value_min, + "condition_number": condition_number, + "coefficient_l2_norm": coefficient_l2_norm, + "full_rank_assumption": raw.get("full_rank_assumption"), + "basis_configuration": raw["basis_configuration"], + "complex_coefficients": int(raw["complex_coefficients"]), + "real_parameters": int(raw["real_parameters"]), + "parameter_count_convention": raw["parameter_count_convention"], + "target_gain": target_gain, + "least_squares_rank": int(rank) if rank is not None else None, + "sample_rate_hz": float(raw["sample_rate_hz"]), + "nperseg": int(raw["nperseg"]), + "pa_evaluation_device": pa_evaluation_device, + "pa_checkpoint_binding": pa_checkpoint_binding, + "metrics": { + "validation": validation_metrics, + "test": test_metrics, + }, + "artifact": { + "path": source_path.relative_to(output_dir).as_posix(), + "sha256": sha256_file(source_path), + "size_bytes": source_path.stat().st_size, + }, + } + + +def signal_record(dataset: str) -> dict[str, Any]: + import numpy as np + + arrays = [] + dataset_files: dict[str, str] = {} + train_input: Any = None + train_output: Any = None + for split in ("train", "val", "test"): + input_path = Path("datasets") / dataset / f"{split}_input.csv" + absolute_path = REPO_ROOT / input_path + input_iq = np.loadtxt( + absolute_path, + delimiter=",", + skiprows=1, + dtype=np.float64, + ) + arrays.append(input_iq) + dataset_files[input_path.as_posix()] = sha256_file(absolute_path) + output_path = Path("datasets") / dataset / f"{split}_output.csv" + absolute_output_path = REPO_ROOT / output_path + dataset_files[output_path.as_posix()] = sha256_file(absolute_output_path) + if split == "train": + train_input = input_iq + train_output = np.loadtxt( + absolute_output_path, + delimiter=",", + skiprows=1, + dtype=np.float64, + ) + + iq = np.vstack(arrays) + power = np.square(iq[:, 0]) + np.square(iq[:, 1]) + input_peak = float( + np.max(np.hypot(train_input[:, 0], train_input[:, 1])) + ) + output_peak = float( + np.max(np.hypot(train_output[:, 0], train_output[:, 1])) + ) + mean_power = float(np.mean(power)) + ccdf_probability = 1e-5 + ccdf_power = float( + np.quantile(power, 1.0 - ccdf_probability, method="linear") + ) + return { + "samples": int(power.size), + "target_gain": output_peak / input_peak, + "papr": { + "ccdf_probability": ccdf_probability, + "quantile_method": "numpy linear", + "ccdf_db": float(10.0 * np.log10(ccdf_power / mean_power)), + "absolute_peak_db": float( + 10.0 * np.log10(float(np.max(power)) / mean_power) + ), + }, + "dataset_file_sha256": dataset_files, + } + + +def package_version(name: str) -> str | None: + try: + return importlib.metadata.version(name) + except importlib.metadata.PackageNotFoundError: + return None + + +def command_output(command: list[str]) -> str | None: + try: + result = subprocess.run( + command, + cwd=REPO_ROOT, + check=True, + capture_output=True, + text=True, + ) + except (OSError, subprocess.CalledProcessError): + return None + return result.stdout.strip() + + +def environment_record(device: int) -> dict[str, Any]: + import torch + + gpu_name = ( + torch.cuda.get_device_name(device) + if torch.cuda.is_available() and device < torch.cuda.device_count() + else None + ) + return { + "python": platform.python_version(), + "platform": platform.platform(), + "numpy": package_version("numpy"), + "scipy": package_version("scipy"), + "pandas": package_version("pandas"), + "torch": torch.__version__, + "cuda": torch.version.cuda, + "cudnn": torch.backends.cudnn.version(), + "gpu": gpu_name, + "gpu_device_index": device, + "training_reproducibility_level": "soft", + "training_deterministic_algorithms": False, + "training_cudnn_benchmark": True, + } + + +def git_record() -> dict[str, Any]: + status = command_output(["git", "status", "--short", "--untracked-files=all"]) + return { + "commit": command_output(["git", "rev-parse", "HEAD"]), + "branch": command_output(["git", "branch", "--show-current"]), + "dirty": bool(status), + "status": status.splitlines() if status else [], + } + + +def runner_start_git_record(output_dir: Path) -> dict[str, Any]: + commit_path = output_dir / "git_commit_before.txt" + branch_path = output_dir / "git_branch_before.txt" + status_path = output_dir / "git_status_before.txt" + if not all(path.is_file() for path in (commit_path, branch_path, status_path)): + raise FileNotFoundError( + "Runner start-state files are missing; use " + "benchmark/reproduce_benchmark_report.sh." + ) + status = status_path.read_text().strip() + return { + "commit": commit_path.read_text().strip(), + "branch": branch_path.read_text().strip(), + "dirty": bool(status), + "status": status.splitlines() if status else [], + } + + +def capture_context( + output_dir: Path, + device: int, + *, + use_runner_start_git: bool, +) -> dict[str, Any]: + return { + "captured_at_utc": datetime.now(timezone.utc).isoformat(), + "git": ( + runner_start_git_record(output_dir) + if use_runner_start_git + else git_record() + ), + "environment": environment_record(device), + "source_file_sha256": { + path: sha256_file(REPO_ROOT / path) for path in source_files() + }, + "datasets": { + dataset: { + "spec_sha256": sha256_file( + REPO_ROOT / "datasets" / dataset / "spec.json" + ), + "signal": signal_record(dataset), + } + for dataset in DATASETS + }, + } + + +def validate_context_stability( + initial: dict[str, Any], + completion: dict[str, Any], +) -> None: + require_equal( + completion["git"]["commit"], + initial["git"]["commit"], + "Git commit across the benchmark run", + ) + require_equal( + completion["git"]["branch"], + initial["git"]["branch"], + "Git branch across the benchmark run", + ) + require_equal( + completion["environment"], + initial["environment"], + "software and hardware environment across the benchmark run", + ) + require_equal( + completion["source_file_sha256"], + initial["source_file_sha256"], + "source files across the benchmark run", + ) + require_equal( + completion["datasets"], + initial["datasets"], + "dataset files and signal evidence across the benchmark run", + ) + + +def load_and_validate_context( + output_dir: Path, + device: int, +) -> tuple[dict[str, Any], dict[str, Any]]: + context_path = output_dir / "context_before.json" + if not context_path.is_file(): + raise FileNotFoundError( + "Pre-run context snapshot is missing; run the collector once with " + "--snapshot-context before training." + ) + with context_path.open() as handle: + initial = json.load(handle) + snapshot_metadata = validate_source_snapshot( + output_dir / "source_snapshot.tar.gz", + initial["source_file_sha256"], + ) + require_equal( + initial.get("source_snapshot"), + snapshot_metadata, + "source snapshot metadata", + ) + completion = capture_context( + output_dir, + device, + use_runner_start_git=False, + ) + validate_context_stability(initial, completion) + return initial, completion + + +def collect_manifest( + output_dir: Path, + device: int, + initial_context: dict[str, Any], + completion_context: dict[str, Any], +) -> dict[str, Any]: + pa_bindings = read_pa_bindings(output_dir) + commands_path = output_dir / "commands.log" + validate_runner_commands( + commands_path, + output_dir=output_dir, + device=device, + ) + recipe_path = output_dir / "recipe.json" + validate_recipe_file(recipe_path) + manifest: dict[str, Any] = { + "schema_version": RUN_SCHEMA_VERSION, + "artifact_kind": "opendpd_benchmark_reproduction_run", + "started_at_utc": initial_context["captured_at_utc"], + "generated_at_utc": datetime.now(timezone.utc).isoformat(), + "canonical_report": "benchmark/benchmark_report.md", + "git": initial_context["git"], + "environment": initial_context["environment"], + "completion_context": { + "captured_at_utc": completion_context["captured_at_utc"], + "git_commit": completion_context["git"]["commit"], + "git_branch": completion_context["git"]["branch"], + "validated_unchanged": True, + }, + "run_file_sha256": { + "commands.log": sha256_file(commands_path), + "context_before.json": sha256_file( + output_dir / "context_before.json" + ), + "git_commit_before.txt": sha256_file( + output_dir / "git_commit_before.txt" + ), + "git_branch_before.txt": sha256_file( + output_dir / "git_branch_before.txt" + ), + "git_status_before.txt": sha256_file( + output_dir / "git_status_before.txt" + ), + "pa_checkpoint_bindings.tsv": sha256_file( + output_dir / "pa_checkpoint_bindings.tsv" + ), + "recipe.json": sha256_file(recipe_path), + "source_snapshot.tar.gz": sha256_file( + output_dir / "source_snapshot.tar.gz" + ), + }, + "source_snapshot": initial_context["source_snapshot"], + "source_file_sha256": initial_context["source_file_sha256"], + "recipes": { + "neural_pa": dict(NEURAL_RECIPE), + "neural_dpd": dict(NEURAL_RECIPE), + "neural_dpd_pa_surrogate_sensitivity": { + **NEURAL_RECIPE, + "dpd_model": dict(TRES_DELTAGRU_DPD_MODEL), + "pa_surrogates": [ + REFERENCE_PA_KEY, + ALTERNATE_PA_KEY, + ], + }, + "polynomial_pa": { + "method": "direct_least_squares", + "column_scaling": "l2", + "solvers": { + "mp": { + "implementation": "torch.linalg.lstsq", + "mode": "gels", + "driver": "gels", + "regularization": None, + }, + "gmp": { + "implementation": "torch.linalg.svd", + "mode": "truncated_svd", + "driver": "gesvdj", + "regularization": { + "type": "truncated_svd", + "relative_cutoff": GMP_PA_SVD_RCOND, + }, + }, + }, + "parameter_convention": ( + "two real degrees of freedom per complex coefficient" + ), + "models": POLYNOMIAL_CONFIGURATIONS["pa_modeling"], + }, + "polynomial_dpd": { + "method": "indirect_learning_architecture", + "solver": "torch.linalg.lstsq", + "solver_driver": "gels", + "column_scaling": "l2", + "parameter_convention": ( + "two real degrees of freedom per complex coefficient" + ), + "models": POLYNOMIAL_CONFIGURATIONS["dpd_ila"], + }, + }, + "metric_note": ( + "EVM is the repository-specific normalized mean absolute complex-" + "spectrum error across configured main-channel subchannels, not " + "demodulated constellation EVM. DPD metrics are simulated through " + "a frozen learned PA surrogate." + ), + "datasets": {}, + } + + for dataset, configuration in DATASETS.items(): + pa_models: dict[str, Any] = {} + for model_name in ("mp", "gmp"): + result = collect_polynomial_model( + output_dir, + dataset=dataset, + slug=configuration["slug"], + task="pa_modeling", + model_name=model_name, + expected_device=f"cuda:{device}", + expected_target_gain=initial_context["datasets"][dataset][ + "signal" + ]["target_gain"], + ) + result["model"] = { + "display_name": model_name.upper(), + "backbone": model_name, + "parameters": result["real_parameters"], + "parameter_convention": ( + "two real degrees of freedom per complex coefficient" + ), + } + pa_models[model_name] = result + + for key, model_configuration in NEURAL_PA_MODELS.items(): + result = collect_training_model( + output_dir, + dataset=dataset, + step="train_pa", + parent=None, + model_id=model_configuration["model_id"], + expected_epochs=NEURAL_RECIPE["epochs"], + expected_batch_size=NEURAL_RECIPE["batch_size"], + expected_initial_lr=NEURAL_RECIPE["initial_learning_rate"], + expected_backbone=model_configuration["backbone"], + expected_hidden_size=model_configuration["hidden_size"], + expected_parameters=model_configuration["parameters"], + selection_metric="VAL_NMSE", + expected_delta_thresholds=model_configuration.get( + "delta_thresholds" + ), + ) + result["task"] = "pa_modeling" + result["method"] = "supervised_training" + result["model"] = dict(model_configuration) + pa_models[key] = result + + reference_pa = pa_models[REFERENCE_PA_KEY] + pa_hash = reference_pa["artifacts"]["checkpoint"]["sha256"] + expected_pa_checkpoint = ( + Path("save") + / dataset + / "train_pa" + / f"{NEURAL_PA_MODELS[REFERENCE_PA_KEY]['model_id']}.pt" + ).as_posix() + + dpd_models: dict[str, Any] = {} + for model_name in ("mp", "gmp"): + result = collect_polynomial_model( + output_dir, + dataset=dataset, + slug=configuration["slug"], + task="dpd_ila", + model_name=model_name, + expected_pa_hash=pa_hash, + expected_device=f"cuda:{device}", + expected_target_gain=initial_context["datasets"][dataset][ + "signal" + ]["target_gain"], + ) + result["model"] = { + "display_name": model_name.upper(), + "backbone": model_name, + "parameters": result["real_parameters"], + "parameter_convention": ( + "two real degrees of freedom per complex coefficient" + ), + } + dpd_models[model_name] = result + + for key, model_configuration in NEURAL_DPD_MODELS.items(): + result = collect_training_model( + output_dir, + dataset=dataset, + step="train_dpd", + parent=REFERENCE_PA_PARENT, + model_id=model_configuration["model_id"], + expected_epochs=NEURAL_RECIPE["epochs"], + expected_batch_size=NEURAL_RECIPE["batch_size"], + expected_initial_lr=NEURAL_RECIPE["initial_learning_rate"], + expected_backbone=model_configuration["backbone"], + expected_hidden_size=model_configuration["hidden_size"], + expected_parameters=model_configuration["parameters"], + selection_metric="VAL_ACLR_AVG", + expected_delta_thresholds=model_configuration.get( + "delta_thresholds" + ), + expected_pa_parameters=reference_pa["model"]["parameters"], + ) + result["task"] = "dpd_training" + result["method"] = "direct_learning_architecture" + result["model"] = dict(model_configuration) + binding = pa_bindings.get((dataset, key, REFERENCE_PA_KEY)) + if binding is None: + raise ValueError( + f"Missing PA checkpoint binding for " + f"{dataset}/{key}/{REFERENCE_PA_KEY}" + ) + require_equal( + binding["checkpoint"], + expected_pa_checkpoint, + f"PA checkpoint path binding for {dataset}/{key}", + ) + require_equal( + binding["sha256"], + pa_hash, + f"PA checkpoint hash binding for {dataset}/{key}", + ) + result["pa_checkpoint_binding"] = binding + dpd_models[key] = result + + delta_dpd_by_pa_surrogate: dict[str, Any] = {} + for pa_model_key, pa_parent in ( + (REFERENCE_PA_KEY, REFERENCE_PA_PARENT), + (ALTERNATE_PA_KEY, ALTERNATE_PA_PARENT), + ): + pa_result = pa_models[pa_model_key] + pa_checkpoint = ( + Path("save") + / dataset + / "train_pa" + / f"{NEURAL_PA_MODELS[pa_model_key]['model_id']}.pt" + ).as_posix() + result = collect_training_model( + output_dir, + dataset=dataset, + step="train_dpd", + parent=pa_parent, + model_id=TRES_DELTAGRU_DPD_MODEL["model_id"], + expected_epochs=NEURAL_RECIPE["epochs"], + expected_batch_size=NEURAL_RECIPE["batch_size"], + expected_initial_lr=NEURAL_RECIPE["initial_learning_rate"], + expected_backbone=TRES_DELTAGRU_DPD_MODEL["backbone"], + expected_hidden_size=TRES_DELTAGRU_DPD_MODEL["hidden_size"], + expected_parameters=TRES_DELTAGRU_DPD_MODEL["parameters"], + selection_metric="VAL_ACLR_AVG", + expected_delta_thresholds=TRES_DELTAGRU_DPD_MODEL[ + "delta_thresholds" + ], + expected_pa_parameters=pa_result["model"]["parameters"], + ) + result["task"] = "dpd_training" + result["method"] = "direct_learning_architecture" + result["model"] = dict(TRES_DELTAGRU_DPD_MODEL) + binding = pa_bindings.get( + (dataset, "tres_deltagru", pa_model_key) + ) + if binding is None: + raise ValueError( + f"Missing PA checkpoint binding for " + f"{dataset}/tres_deltagru/{pa_model_key}" + ) + require_equal( + binding["checkpoint"], + pa_checkpoint, + ( + "PA checkpoint path binding for " + f"{dataset}/tres_deltagru/{pa_model_key}" + ), + ) + require_equal( + binding["sha256"], + pa_result["artifacts"]["checkpoint"]["sha256"], + ( + "PA checkpoint hash binding for " + f"{dataset}/tres_deltagru/{pa_model_key}" + ), + ) + result["pa_checkpoint_binding"] = binding + result["pa_surrogate"] = { + "model_key": pa_model_key, + "model": dict(NEURAL_PA_MODELS[pa_model_key]), + "checkpoint": pa_checkpoint, + "checkpoint_sha256": binding["sha256"], + "selection_metric": "validation NMSE", + } + delta_dpd_by_pa_surrogate[pa_model_key] = result + + manifest["datasets"][dataset] = { + "spec_sha256": initial_context["datasets"][dataset]["spec_sha256"], + "signal": initial_context["datasets"][dataset]["signal"], + "reference_pa": { + "model_key": REFERENCE_PA_KEY, + "checkpoint": expected_pa_checkpoint, + "checkpoint_sha256": pa_hash, + "selection_metric": "validation NMSE", + }, + "pa_models": pa_models, + "dpd_models": dpd_models, + "dpd_tres_deltagru_by_pa_surrogate": ( + delta_dpd_by_pa_surrogate + ), + } + + return manifest + + +def publish_manifest_from_run( + manifest: dict[str, Any], + run_directory: Path, +) -> dict[str, Any]: + """Bind post-collection source/job evidence into a canonical manifest.""" + source_schema_version = manifest["schema_version"] + source_result_count = sum( + len(dataset["pa_models"]) + + len(dataset["dpd_models"]) + + len(dataset["dpd_tres_deltagru_by_pa_surrogate"]) + for dataset in manifest["datasets"].values() + ) + if source_schema_version != RUN_SCHEMA_VERSION: + raise ValueError( + "Unsupported source manifest schema for publication: " + f"{source_schema_version}" + ) + context_path = run_directory / "context_before.json" + original_manifest_path = run_directory / "benchmark_report_results.json" + jobs_path = run_directory / "jobs.tsv" + recipe_path = run_directory / "recipe.json" + commands_path = run_directory / "commands.log" + with context_path.open() as handle: + context = json.load(handle) + + snapshot_path = run_directory / "source_snapshot.tar.gz" + snapshot_metadata = validate_source_snapshot( + snapshot_path, + context["source_file_sha256"], + ) + snapshot_time = datetime.fromtimestamp( + snapshot_path.stat().st_mtime, + timezone.utc, + ) + started = datetime.fromisoformat(manifest["started_at_utc"]) + collected = datetime.fromisoformat(manifest["generated_at_utc"]) + if not started <= snapshot_time <= collected: + raise ValueError( + "Source snapshot was not created during the recorded benchmark run: " + f"{snapshot_time.isoformat()} is outside " + f"{started.isoformat()} .. {collected.isoformat()}" + ) + + with jobs_path.open(newline="") as handle: + jobs = list(csv.DictReader(handle, delimiter="\t")) + command_labels = set(read_recorded_commands(commands_path)) + job_labels = [row["label"] for row in jobs] + require_equal(len(job_labels), len(set(job_labels)), "unique job labels") + require_equal(set(job_labels), command_labels, "completed benchmark jobs") + for row in jobs: + require_equal( + int(row["exit_status"]), + 0, + f"exit status for job {row['label']}", + ) + + published = copy.deepcopy(manifest) + published["schema_version"] = RUN_SCHEMA_VERSION + for dataset in published["datasets"].values(): + dataset["pa_models"] = { + key: dataset["pa_models"][key] for key in PA_MODEL_ORDER + } + dataset["dpd_models"] = { + key: dataset["dpd_models"][key] for key in DPD_MODEL_ORDER + } + dataset["dpd_tres_deltagru_by_pa_surrogate"] = { + key: dataset["dpd_tres_deltagru_by_pa_surrogate"][key] + for key in (REFERENCE_PA_KEY, ALTERNATE_PA_KEY) + } + published["source_snapshot"] = snapshot_metadata + published["run_file_sha256"].update( + { + "jobs.tsv": sha256_file(jobs_path), + "recipe.json": sha256_file(recipe_path), + "source_snapshot.tar.gz": sha256_file(snapshot_path), + } + ) + for stage in ("neural_pa", "neural_dpd"): + published["recipes"][stage].update(copy.deepcopy(NEURAL_RECIPE)) + published["metric_note"] = ( + "EVM is the repository-specific normalized mean absolute complex-" + "spectrum error across configured main-channel subchannels, not " + "demodulated constellation EVM. DPD metrics are simulated through a " + "frozen learned PA surrogate." + ) + published["publication"] = { + "source_run_id": run_directory.name, + "original_schema_version": source_schema_version, + "original_collector_manifest_sha256": sha256_file( + original_manifest_path + ), + "source_snapshot_created_during_run_utc": snapshot_time.isoformat(), + "source_snapshot_member_hashes_match_pre_run_context": True, + "source_job_count": len(jobs), + "source_result_count": source_result_count, + "published_result_count": ( + len(published["datasets"]) + * (len(PA_MODEL_ORDER) + len(DPD_MODEL_ORDER) + 2) + ), + "published_models": list(PA_MODEL_ORDER), + "published_models_by_stage": { + "pa_modeling": list(PA_MODEL_ORDER), + "dpd": list(DPD_MODEL_ORDER), + "dpd_pa_surrogate_sensitivity": ["tres_deltagru"], + }, + "published_dpd_pa_surrogates": [ + REFERENCE_PA_KEY, + ALTERNATE_PA_KEY, + ], + "all_jobs_exit_zero": True, + "total_job_duration_seconds": sum( + int(row["duration_seconds"]) for row in jobs + ), + "note": ( + "The canonical manifest contains the published model subset. " + "Source-run hashes, job totals, and archives cover the complete " + "source run and can include experiments outside that subset; " + "source-archive members were verified against the pre-run source " + "hash map." + ), + } + return published + + +def pair(metrics: dict[str, dict[str, float]], key: str) -> str: + return ( + f"{metrics['validation'][key]:.4f} / " + f"{metrics['test'][key]:.4f}" + ) + + +def aclr_triplet(metrics: dict[str, float]) -> str: + return ( + f"{metrics['aclr_left_db']:.4f} / " + f"{metrics['aclr_right_db']:.4f} / " + f"{metrics['aclr_avg_db']:.4f}" + ) + + +def result_method(result: dict[str, Any]) -> str: + if result["method"] == "supervised_training": + return "Supervised, AdamW" + if result["method"] == "direct_learning_architecture": + return "DLA, AdamW" + if result["method"] == "direct_least_squares": + if result.get("regularization") == "truncated_svd": + return ( + "Truncated SVD " + f"(rank {result['least_squares_rank']:,}/" + f"{result['complex_coefficients']:,})" + ) + return "Direct least squares" + if result["method"] == "indirect_learning_architecture": + return "ILA, least squares" + raise ValueError(f"Unknown benchmark method: {result['method']}") + + +def selected_epoch(result: dict[str, Any]) -> str: + epoch = result.get("selected_epoch_zero_based") + return "N/A" if epoch is None else str(epoch) + + +def result_table( + results: dict[str, dict[str, Any]], + model_order: tuple[str, ...], +) -> list[str]: + lines = [ + "| Model | Parameters | Method | Selected epoch | " + "NMSE, val / test (dB) | EVM, val / test (dB) | " + "Validation ACLR L / R / avg (dB) | " + "Test ACLR L / R / avg (dB) |", + "|---|---:|---|---:|---:|---:|---:|---:|", + ] + for key in model_order: + result = results[key] + lines.append( + f"| {result['model']['display_name']} | " + f"{result['model']['parameters']:,} | " + f"{result_method(result)} | {selected_epoch(result)} | " + f"{pair(result['metrics'], 'nmse_db')} | " + f"{pair(result['metrics'], 'evm_db')} | " + f"{aclr_triplet(result['metrics']['validation'])} | " + f"{aclr_triplet(result['metrics']['test'])} |" + ) + return lines + + +def delta_dpd_surrogate_table(values: dict[str, Any]) -> list[str]: + lines = [ + "| PA surrogate | PA NMSE, val / test (dB) | DPD parameters | " + "Selected epoch | DPD NMSE, val / test (dB) | " + "DPD EVM, val / test (dB) | DPD ACLR avg, val / test (dB) |", + "|---|---:|---:|---:|---:|---:|---:|", + ] + results = values["dpd_tres_deltagru_by_pa_surrogate"] + for pa_model_key in (REFERENCE_PA_KEY, ALTERNATE_PA_KEY): + result = results[pa_model_key] + pa_result = values["pa_models"][pa_model_key] + lines.append( + f"| {pa_result['model']['display_name']} | " + f"{pair(pa_result['metrics'], 'nmse_db')} | " + f"{result['model']['parameters']:,} | " + f"{selected_epoch(result)} | " + f"{pair(result['metrics'], 'nmse_db')} | " + f"{pair(result['metrics'], 'evm_db')} | " + f"{pair(result['metrics'], 'aclr_avg_db')} |" + ) + return lines + + +def write_results_figure(manifest: dict[str, Any], path: Path) -> None: + """Render a compact test-set comparison directly from the manifest.""" + import matplotlib + + matplotlib.use("Agg", force=True) + import matplotlib.pyplot as plt + + colors = { + "mp": "#4477AA", + "gmp": "#66CCEE", + "gru": "#228833", + "tres_gru": "#EE6677", + "tres_deltagru": "#AA3377", + } + panels = ( + ( + "APA_200MHz", + "pa_models", + "nmse_db", + "PA test NMSE (dB)", + PA_MODEL_ORDER, + ), + ( + "DPA_160MHz", + "pa_models", + "nmse_db", + "PA test NMSE (dB)", + PA_MODEL_ORDER, + ), + ( + "APA_200MHz", + "dpd_models", + "aclr_avg_db", + "DPD test ACLR average (dB)", + DPD_MODEL_ORDER, + ), + ( + "DPA_160MHz", + "dpd_models", + "aclr_avg_db", + "DPD test ACLR average (dB)", + DPD_MODEL_ORDER, + ), + ) + + figure, axes = plt.subplots( + 2, + 2, + figsize=(13.5, 9.0), + constrained_layout=True, + ) + figure.suptitle("OpenDPD benchmark — test split", fontsize=17, weight="bold") + for axis, (dataset, result_key, metric, title, model_order) in zip( + axes.flat, + panels, + ): + results = manifest["datasets"][dataset][result_key] + values = [ + results[key]["metrics"]["test"][metric] for key in model_order + ] + validation_winner = min( + model_order, + key=lambda key: results[key]["metrics"]["validation"][metric], + ) + span = max(values) - min(values) + label_offset = max(0.22, span * 0.025) + left_padding = max(0.4, span * 0.035) + right_padding = max(1.0, span * 0.16) + for y_position, (key, value) in enumerate(zip(model_order, values)): + axis.scatter( + value, + y_position, + s=115, + color=colors[key], + edgecolor="black" if key == validation_winner else "white", + linewidth=1.8 if key == validation_winner else 0.8, + zorder=3, + ) + axis.text( + value + label_offset, + y_position, + f"{value:.2f}", + va="center", + ha="left", + fontsize=9, + ) + axis.set_xlim( + min(values) - left_padding, + max(values) + right_padding, + ) + if min(values) < 0.0 < max(values): + axis.axvline(0.0, color="#777777", linestyle="--", linewidth=1) + axis.set_yticks( + range(len(model_order)), + [results[key]["model"]["display_name"] for key in model_order], + ) + axis.invert_yaxis() + axis.grid(axis="x", color="#D8D8D8", linewidth=0.8) + axis.set_axisbelow(True) + axis.set_title(f"{dataset}\n{title}", fontsize=12) + axis.set_xlabel("More negative is better ←") + for spine in ("top", "right"): + axis.spines[spine].set_visible(False) + + figure.text( + 0.5, + -0.01, + "Outlined markers are validation leaders. DPD is simulated through " + "the dataset-specific validation-selected TRes-GRU-H27 PA surrogate.", + ha="center", + fontsize=10, + ) + temporary_path: Path | None = None + try: + with tempfile.NamedTemporaryFile( + dir=path.parent, + prefix=f".{path.name}.", + suffix=".png", + delete=False, + ) as temporary: + temporary_path = Path(temporary.name) + figure.savefig( + temporary_path, + dpi=160, + facecolor="white", + bbox_inches="tight", + ) + os.replace(temporary_path, path) + finally: + plt.close(figure) + if temporary_path is not None and temporary_path.exists(): + temporary_path.unlink() + + +def write_delta_dpd_figure(manifest: dict[str, Any], path: Path) -> None: + """Render the TRes-DeltaGRU DPD PA-surrogate sensitivity comparison.""" + import matplotlib + + matplotlib.use("Agg", force=True) + import matplotlib.pyplot as plt + + pa_order = (REFERENCE_PA_KEY, ALTERNATE_PA_KEY) + colors = { + REFERENCE_PA_KEY: "#EE6677", + ALTERNATE_PA_KEY: "#AA3377", + } + figure, axes = plt.subplots( + 1, + 2, + figsize=(13.5, 4.8), + constrained_layout=True, + ) + figure.suptitle( + "TRes-DeltaGRU-H15 DPD — PA surrogate sensitivity (test split)", + fontsize=16, + weight="bold", + ) + for axis, dataset in zip(axes, DATASETS): + dataset_values = manifest["datasets"][dataset] + results = dataset_values["dpd_tres_deltagru_by_pa_surrogate"] + values = [ + results[key]["metrics"]["test"]["aclr_avg_db"] for key in pa_order + ] + validation_winner = min( + pa_order, + key=lambda key: results[key]["metrics"]["validation"]["aclr_avg_db"], + ) + span = max(values) - min(values) + label_offset = max(0.12, span * 0.08) + for y_position, (key, value) in enumerate(zip(pa_order, values)): + axis.scatter( + value, + y_position, + s=125, + color=colors[key], + edgecolor="black" if key == validation_winner else "white", + linewidth=1.8 if key == validation_winner else 0.8, + zorder=3, + ) + axis.text( + value + label_offset, + y_position, + f"{value:.2f}", + va="center", + ha="left", + fontsize=10, + ) + left_padding = max(0.35, span * 0.25) + right_padding = max(0.8, span * 0.55) + axis.set_xlim(min(values) - left_padding, max(values) + right_padding) + axis.set_yticks( + range(len(pa_order)), + [ + f"{dataset_values['pa_models'][key]['model']['display_name']} PA" + for key in pa_order + ], + ) + axis.invert_yaxis() + axis.grid(axis="x", color="#D8D8D8", linewidth=0.8) + axis.set_axisbelow(True) + axis.set_title( + f"{dataset}\nDPD test ACLR average (dB)", + fontsize=12, + ) + axis.set_xlabel("More negative is better ←") + for spine in ("top", "right"): + axis.spines[spine].set_visible(False) + + figure.text( + 0.5, + -0.02, + "Each point is an independently trained TRes-DeltaGRU-H15 DPD. " + "Outlined markers are selected by validation ACLR average.", + ha="center", + fontsize=10, + ) + temporary_path: Path | None = None + try: + with tempfile.NamedTemporaryFile( + dir=path.parent, + prefix=f".{path.name}.", + suffix=".png", + delete=False, + ) as temporary: + temporary_path = Path(temporary.name) + figure.savefig( + temporary_path, + dpi=160, + facecolor="white", + bbox_inches="tight", + ) + os.replace(temporary_path, path) + finally: + plt.close(figure) + if temporary_path is not None and temporary_path.exists(): + temporary_path.unlink() + + +def bind_derived_artifacts( + manifest: dict[str, Any], + *, + report_path: Path, + figure_path: Path, + delta_dpd_figure_path: Path, +) -> None: + manifest["derived_artifacts"] = { + report_path.name: { + "sha256": sha256_file(report_path), + "size_bytes": report_path.stat().st_size, + }, + figure_path.name: { + "sha256": sha256_file(figure_path), + "size_bytes": figure_path.stat().st_size, + }, + delta_dpd_figure_path.name: { + "sha256": sha256_file(delta_dpd_figure_path), + "size_bytes": delta_dpd_figure_path.stat().st_size, + }, + } + + +def render_markdown( + manifest: dict[str, Any], + *, + canonical: bool = False, +) -> str: + lines = [ + "# OpenDPD PA Modeling and DPD Benchmark", + "", + "## Technical summary", + "", + "This benchmark evaluates MP, GMP, GRU, TRes-GRU, and " + "TRes-DeltaGRU (THX=THH=0) for PA modeling on APA_200MHz and " + "DPA_160MHz. The DPD comparison evaluates MP, GMP, GRU, and TRes-GRU. " + "PA models use approximately 2,700 real parameters; DPD models use " + "approximately 1,000. Every neural run uses the same 300-epoch " + "optimization recipe. MP PA uses direct least squares and GMP PA uses " + "rank-controlled truncated SVD; their predistorters use the indirect " + "learning architecture (ILA). The four-model DPD comparison uses the " + "dataset-specific " + "TRes-GRU-H27 PA checkpoint selected by validation NMSE. A separate " + "sensitivity experiment trains TRes-DeltaGRU-H15 DPD independently " + "through both the TRes-GRU-H27 and zero-threshold " + "TRes-DeltaGRU-H27 PA surrogates.", + "", + "## Key findings", + "", + ] + + for dataset, values in manifest["datasets"].items(): + best_pa = min( + values["pa_models"].values(), + key=lambda result: result["metrics"]["validation"]["nmse_db"], + ) + best_dpd = min( + values["dpd_models"].values(), + key=lambda result: result["metrics"]["validation"]["aclr_avg_db"], + ) + delta_dpd_results = values["dpd_tres_deltagru_by_pa_surrogate"] + best_delta_pa_key = min( + delta_dpd_results, + key=lambda key: delta_dpd_results[key]["metrics"]["validation"][ + "aclr_avg_db" + ], + ) + best_delta_dpd = delta_dpd_results[best_delta_pa_key] + best_delta_pa = values["pa_models"][best_delta_pa_key] + lines.append( + f"- **{dataset}:** the validation PA leader is " + f"{best_pa['model']['display_name']} at " + f"{best_pa['metrics']['validation']['nmse_db']:.4f} dB NMSE " + f"({best_pa['metrics']['test']['nmse_db']:.4f} dB test). The " + f"validation DPD leader is {best_dpd['model']['display_name']} at " + f"{best_dpd['metrics']['validation']['aclr_avg_db']:.4f} dB ACLR " + f"average ({best_dpd['metrics']['test']['aclr_avg_db']:.4f} dB test). " + f"For TRes-DeltaGRU-H15 DPD, the better validation result uses the " + f"{best_delta_pa['model']['display_name']} PA surrogate at " + f"{best_delta_dpd['metrics']['validation']['aclr_avg_db']:.4f} dB " + f"ACLR average " + f"({best_delta_dpd['metrics']['test']['aclr_avg_db']:.4f} dB test)." + ) + + apa_gmp = manifest["datasets"]["APA_200MHz"]["pa_models"]["gmp"] + lines.extend( + [ + ( + "- **APA GMP stability:** column-normalized truncated SVD at " + f"`rcond={apa_gmp['svd_rcond']:.0e}` retains " + f"{apa_gmp['least_squares_rank']:,}/" + f"{apa_gmp['complex_coefficients']:,} singular directions. " + "Validation/test NMSE is " + f"{apa_gmp['metrics']['validation']['nmse_db']:.2f}/" + f"{apa_gmp['metrics']['test']['nmse_db']:.2f} dB. The fixed " + "cutoff suppresses ill-conditioned delayed-envelope directions " + "instead of applying CUDA `gels`'s invalid full-rank " + "assumption." + ), + "", + "![Test-set PA modeling and DPD results](benchmark_results.png)", + "", + "*Test split; more negative is better. Outlined points are the " + "models selected by validation. DPD is simulated through the " + "dataset-specific TRes-GRU-H27 PA surrogate.*", + "", + "![TRes-DeltaGRU DPD PA-surrogate sensitivity]" + "(benchmark_delta_dpd_results.png)", + "", + "*Test split; each point is an independently trained " + "TRes-DeltaGRU-H15 DPD using the named frozen PA surrogate. " + "These results compare surrogate sensitivity, not measurements " + "from one shared physical PA.*", + ] + ) + + for dataset, values in manifest["datasets"].items(): + lines.extend( + [ + "", + f"## {dataset}", + "", + "### PA modeling", + "", + ] + ) + lines.extend(result_table(values["pa_models"], PA_MODEL_ORDER)) + lines.extend( + [ + "", + "### DPD", + "", + ] + ) + lines.extend(result_table(values["dpd_models"], DPD_MODEL_ORDER)) + lines.extend( + [ + "", + "### TRes-DeltaGRU DPD by PA surrogate", + "", + "Both rows use TRes-DeltaGRU-H15 with 999 parameters and " + "THX=THH=0. They are separately trained through the indicated " + "frozen PA surrogate.", + "", + ] + ) + lines.extend(delta_dpd_surrogate_table(values)) + + lines.extend( + [ + "", + "## Definitions", + "", + "- **NMSE:** normalized mean-square error in dB; more negative is " + "better. The implementation averages per-segment dB ratios rather " + "than pooling all samples into one ratio.", + "- **EVM:** the repository-specific mean absolute complex-spectrum " + "error within the configured main channel, normalized within each " + "subchannel by reference-spectrum magnitude and converted with " + "`20 log10`. It is not demodulated constellation EVM; more negative " + "is better.", + "- **ACLR L / R / avg:** adjacent-subchannel power normalized by the " + "strongest configured main-channel subchannel, plus the arithmetic " + "mean of left and right, in dB. More negative is better.", + "- **Parameters:** neural checkpoint tensor elements. MP/GMP count " + "two real degrees of freedom for every complex coefficient.", + "- **Selected epoch:** zero-based neural checkpoint epoch. It is N/A " + "for closed-form least-squares fits.", + "", + "## Model configurations", + "", + "| Stage | MP | GMP | GRU | TRes-GRU | TRes-DeltaGRU |", + "|---|---|---|---|---|---|", + "| PA modeling | K=9, Q=150 | Ka/La=5/30; " + "Kb/Lb/Mb=4/30/5; Kc/Lc/Mc=4/30/5 | H28 | H27 | " + "H27, THX=THH=0 |", + "| DPD | K=5, Q=100 | Ka/La=5/20; " + "Kb/Lb/Mb=4/20/3; Kc/Lc/Mc=4/20/2 | H16 | H15 | " + "H15, THX=THH=0 (PA-surrogate sensitivity) |", + "", + "## Temporal context and sequence boundaries", + "", + "In sequence interiors, PA GMP uses up to five future samples and " + "DPD GMP uses up to two through their leading-envelope terms. " + "TRes-GRU and TRes-DeltaGRU use one-sample right context in their " + "recurrent features and 16-sample right context in their dilated " + "residual convolution. MP and GRU use no explicit future samples.", + "", + "These are offline segmented evaluations. GMP delay accesses are " + "zero-filled and reset at each `nperseg` boundary. In both TRes " + "models, `torch.roll(..., shifts=-1)` wraps the final position to " + "the first sample of the same supplied sequence; the convolution " + "zero-pads both boundaries, and recurrent state resets for each " + "sequence. Neural optimization uses overlapping 200-sample frames " + "with stride 1, while validation and test use independent " + "`nperseg` segments.", + "", + "## Methodology", + "", + "Neural PA and DPD models use batch size 64, 300 epochs, AdamW with " + "MSE loss, initial learning rate 5e-3, and ReduceLROnPlateau with " + "factor 0.5, patience 5, and minimum learning rate 5e-5. Frame " + "length is 200, frame stride is 1, and seed is 0. PA checkpoints " + "are selected by minimum validation NMSE; neural DPD checkpoints " + "are selected by minimum validation ACLR average.", + "", + "The TRes-DeltaGRU PA and DPD runs use input-delta threshold THX=0 " + "and hidden-state-delta threshold THH=0. This disables " + "threshold-induced temporal pruning; exact arithmetic deltas may " + "still naturally be zero. The configuration therefore evaluates " + "the dense zero-threshold recurrence, not a sparsity or efficiency " + "claim.", + "", + "AdamW uses weight decay 0.01, betas (0.9, 0.999), and epsilon " + "1e-8. The scheduler uses relative threshold 1e-4, cooldown 0, and " + "epsilon 1e-8.", + "", + "MP and GMP are complex polynomial models fit after L2 column " + "scaling. MP and both ILA-DPD fits use `torch.linalg.lstsq` " + "(`gels`). GMP PA modeling uses `torch.linalg.svd` (`gesvdj`) " + f"with a fixed relative cutoff of {GMP_PA_SVD_RCOND:.0e}; the " + "effective retained rank is reported with each GMP PA result. " + "These closed-form fits do not use the neural batch, epoch, " + "optimizer, or learning-rate settings. PA polynomial fits map " + "measured PA input to output directly. DPD polynomial fits use " + "ILA, fitting a postdistorter and copying its coefficients to the " + "predistorter. No ridge penalty or validation-tuned regularization " + "is applied.", + "", + "Each dataset uses its independently trained TRes-GRU-H27 PA " + "surrogate for the four-model DPD comparison. The two " + "TRes-DeltaGRU-H15 sensitivity rows are separate DPD training runs, " + "one through that TRes-GRU PA and one through the independently " + "trained TRes-DeltaGRU-H27 PA. Training data supply all gradient " + "and least-squares fits. Neural validation metrics drive the " + "learning-rate schedule and checkpoint selection; test data are " + "not used for fitting, scheduling, or selection.", + "", + "## Limitations and robustness", + "", + "- Neural execution uses soft reproducibility with cuDNN benchmark " + "enabled, so repeated runs can differ slightly.", + "- DPD scores measure simulated performance through a learned PA " + "surrogate, not a fresh over-the-air or bench measurement.", + "- One seed is evaluated. The reported table is not a distribution " + "over training runs.", + "- The five PA candidates and four primary DPD candidates are " + "matched approximately by real parameter count, not by FLOPs, " + "latency, memory traffic, or fit time. The PA-surrogate sensitivity " + "experiment adds two independently trained TRes-DeltaGRU DPD runs " + "per dataset.", + "- Results obtained through different learned PA surrogates are " + "simulator-sensitivity evidence; they are not a controlled ranking " + "against one shared physical PA response.", + "- CUDA `gels` assumes a full-rank design matrix and does not " + "return numerical rank. It remains in use for MP and ILA-DPD; the " + "GMP PA path records its SVD spectrum, cutoff, and retained rank.", + "- GMP PA has 1,350 stored complex coefficients (2,700 nominal real " + "parameters), but truncated SVD reduces its effective rank. The " + "comparison is matched by stored coefficient count, not effective " + "degrees of freedom.", + "- Look-ahead is an input dependency, not measured inference " + "latency. Streaming reformulations and continuous boundary/state " + "handling are not evaluated.", + "", + "## Provenance", + "", + f"- Generated: `{manifest['generated_at_utc']}`", + f"- Git commit: `{manifest['git']['commit']}`", + f"- Git branch: `{manifest['git']['branch']}`", + f"- Git working tree at launch: " + f"`{'dirty' if manifest['git']['dirty'] else 'clean'}`; exact " + "source hashes and start status are retained in the machine " + "evidence.", + f"- Python: `{manifest['environment']['python']}`", + f"- PyTorch: `{manifest['environment']['torch']}`", + f"- CUDA: `{manifest['environment']['cuda']}`", + f"- GPU: `{manifest['environment']['gpu']}`", + ] + ) + if canonical: + publication = manifest.get("publication") + if publication is not None: + lines.append( + "- Canonical evidence schema: " + f"`{manifest['schema_version']}` (published from collector " + f"schema `{publication['original_schema_version']}`); the " + "source archive and completed job ledger are cryptographically " + "bound in the machine-readable evidence." + ) + lines.extend( + [ + "- Reproduce the full matrix: " + "[`reproduce_benchmark_report.sh`](reproduce_benchmark_report.sh)", + "- Machine-readable evidence: " + "[`results/benchmark_report_results.json`]" + "(results/benchmark_report_results.json)", + "- Each reproduction run writes exact commands, a verified " + "source snapshot, raw polynomial results, checkpoints, and CSV " + "logs to its timestamped evidence directory.", + ] + ) + else: + lines.extend( + [ + "- Exact launch commands: [`commands.log`](commands.log)", + "- Machine-readable evidence: " + "[`benchmark_report_results.json`](benchmark_report_results.json)", + "- Source snapshot: " + "[`source_snapshot.tar.gz`](source_snapshot.tar.gz)", + "- Archived checkpoints and CSV logs: [`artifacts/`](artifacts/)", + ] + ) + lines.append("") + return "\n".join(lines) + + +def write_atomic(path: Path, content: str) -> None: + temporary_path: Path | None = None + try: + with tempfile.NamedTemporaryFile( + mode="w", + encoding="utf-8", + dir=path.parent, + prefix=f".{path.name}.", + suffix=".tmp", + delete=False, + ) as handle: + handle.write(content) + temporary_path = Path(handle.name) + os.replace(temporary_path, path) + finally: + if temporary_path is not None and temporary_path.exists(): + temporary_path.unlink() + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument( + "--output-dir", + type=Path, + required=True, + help="Run directory containing raw least-squares JSON and archived artifacts.", + ) + parser.add_argument( + "--device", + type=int, + default=0, + help="CUDA device index used by the benchmark run.", + ) + parser.add_argument( + "--snapshot-context", + action="store_true", + help="Capture pre-run source, dataset, Git, and environment evidence.", + ) + parser.add_argument( + "--overwrite-output", + action="store_true", + help="Replace an existing collector snapshot or final manifest.", + ) + args = parser.parse_args() + output_dir = args.output_dir.resolve() + output_dir.mkdir(parents=True, exist_ok=True) + + if args.snapshot_context: + context_path = output_dir / "context_before.json" + snapshot_path = output_dir / "source_snapshot.tar.gz" + if ( + (context_path.exists() or snapshot_path.exists()) + and not args.overwrite_output + ): + raise FileExistsError( + f"Context or source snapshot already exists in: {output_dir}" + ) + context = capture_context( + output_dir, + args.device, + use_runner_start_git=True, + ) + if context["environment"]["gpu"] is None: + raise ValueError( + "CUDA device evidence is missing from the pre-run context" + ) + write_source_snapshot( + list(context["source_file_sha256"]), + snapshot_path, + ) + context["source_snapshot"] = validate_source_snapshot( + snapshot_path, + context["source_file_sha256"], + ) + write_atomic( + context_path, + json.dumps( + context, + indent=2, + sort_keys=True, + allow_nan=False, + ) + + "\n", + ) + print(f"Wrote pre-run context snapshot to {context_path}") + return + + result_path = output_dir / "benchmark_report_results.json" + markdown_path = output_dir / "benchmark_report.md" + figure_path = output_dir / "benchmark_results.png" + delta_dpd_figure_path = output_dir / "benchmark_delta_dpd_results.png" + if ( + ( + result_path.exists() + or markdown_path.exists() + or figure_path.exists() + or delta_dpd_figure_path.exists() + ) + and not args.overwrite_output + ): + raise FileExistsError( + "Collector output already exists; use a new run directory or " + "--overwrite-output." + ) + + initial_context, completion_context = load_and_validate_context( + output_dir, args.device + ) + manifest = collect_manifest( + output_dir, + args.device, + initial_context, + completion_context, + ) + write_results_figure(manifest, figure_path) + write_delta_dpd_figure(manifest, delta_dpd_figure_path) + write_atomic( + markdown_path, + render_markdown(manifest), + ) + bind_derived_artifacts( + manifest, + report_path=markdown_path, + figure_path=figure_path, + delta_dpd_figure_path=delta_dpd_figure_path, + ) + write_atomic( + result_path, + json.dumps( + manifest, + indent=2, + sort_keys=True, + allow_nan=False, + ) + + "\n", + ) + print(f"Validated benchmark evidence in {output_dir}") + print(f"Wrote {output_dir / 'benchmark_report_results.json'}") + print(f"Wrote {output_dir / 'benchmark_report.md'}") + print(f"Wrote {output_dir / 'benchmark_results.png'}") + print(f"Wrote {output_dir / 'benchmark_delta_dpd_results.png'}") + + +if __name__ == "__main__": + main() diff --git a/benchmark/pa_modeling_investigation.md b/benchmark/pa_modeling_investigation.md deleted file mode 100644 index 4574a19..0000000 --- a/benchmark/pa_modeling_investigation.md +++ /dev/null @@ -1,143 +0,0 @@ -# APA_200MHz PA-Modeling NMSE Investigation - -Question: why does PA modeling on `APA_200MHz` saturate at ~-31.5 dB NMSE, and is -the `benchmark_report.md` figure of -43.52 dB attainable? - -Answer: **-31.5 dB is an undertrained-recipe artifact, not a data defect.** The -dataset's measurement noise floor is ~-38.6 dB, every architecture reaches it once -trained with the OpenDPDv2 recipe, and -43.52 dB lies *below* the noise floor, so -it is not physically attainable on this dataset. - -## 1. Backbone comparison on APA_200MHz (PA modeling, val/test NMSE in dB) - -All models sized to ~1900 parameters for a fair comparison. - -| Backbone | Params | Report recipe
(lr 5e-4, bs 256, 100 ep, no sched) | OpenDPDv2 recipe
(lr 5e-3, bs 64, 240 ep, ReduceLROnPlateau) | -|---|---|---|---| -| GRU (h23) | 1,911 | -31.48 / -31.40 | **-38.79 / -38.87** | -| DGRU (h23) | 2,751 | -31.67 / -31.61 | **-39.13 / -39.21** | -| TCN (h66) | 1,914 | -37.44 / -37.30 | **-38.38 / -38.25** | -| TRes-GRU (h22) | 1,916 | -35.62 / -35.50 | **-38.94 / -39.01** | - -Two observations: - -1. **The recipe, not the architecture, causes the -31.5 dB plateau.** The same GRU - improves by 7.4 dB purely from the training recipe. Recurrent models are the - most sensitive: with lr=5e-4 and no schedule they are badly undertrained at - 100 epochs, while the convolutional TCN already reaches -37.4 dB. -2. **With a proper recipe all four architectures land within 0.9 dB of each other** - (-38.25 to -39.21), because they are all at the data's noise floor. Ranking - there is not architecturally meaningful. - -## 2. Data ceiling: closed-form least-squares fits - -Closed-form identification is immune to optimizer/learning-rate issues, so it -measures what the *data* supports. Basis built on the contiguous signal, fit on -the train split, evaluated on the test split (64-sample guard). - -| Model | Real params | APA_200MHz | APA_200MHz_b | DPA_160MHz | -|---|---|---|---|---| -| MP K=5 Q=10 | 100 | -31.94 | -32.81 | -38.14 | -| MP K=7 Q=20 | 280 | -37.13 | -33.24 | -38.48 | -| MP K=9 Q=40 | 720 | -37.22 | -33.23 | -38.50 | -| GMP rich | 1,180 | -38.54 | -38.42 | -39.48 | -| GMP extra-rich | 3,520 | **-38.83** | **-38.48** | **-39.51** | - -All three datasets saturate in the same place, -38.5 to -39.5 dB. APA_200MHz is -**not** a worse dataset than DPA_160MHz. - -Note the damning comparison: a 100-real-parameter memory polynomial (-31.94 dB) -matches the 1,911-parameter GRU trained with the report recipe (-31.40 dB). - -## 3. The residual is measurement noise, not unmodeled distortion - -Residual of the GMP-rich fit, analyzed spectrally and against input amplitude: - -| Quantity | APA_200MHz | DPA_160MHz | -|---|---|---| -| Residual NMSE | -38.64 dB | -39.48 dB | -| Residual PSD in-band vs out-of-band | +3.9 dB | +4.8 dB | -| *Signal* PSD in-band vs out-of-band | +33.4 dB | +37.8 dB | -| Residual power at \|x\|→0 | -48.0 dB | -41.4 dB | -| Residual power at \|x\|→max | -44.5 dB | -37.3 dB | - -The residual is nearly white (+3.9 dB in/out-of-band tilt, against +33.4 dB for -the signal) and **its power barely depends on input amplitude — it stays at --48 dB even where the input goes to zero.** Unmodeled nonlinear distortion must -vanish as the drive vanishes; additive measurement noise does not. So ~-38.6 dB -is the noise floor of this capture. - -**Consequence: -43.52 dB is ~5 dB below the measurement noise floor and cannot be -achieved on APA_200MHz by any model.** This independently confirms it is a -misrecorded figure. - -## 4. Dataset integrity: no defects found - -- **Git history**: only 4 commits ever touched `datasets/APA_200MHz/`. The CSVs - have been bit-identical since 2025-07-09; every later commit changed only - `spec.json` metadata and plots. `fs`, `nperseg` and split ratios never changed. -- **Provenance**: R&S SMW200A generator -> 3.5 GHz Ampleon GaN Doherty PA -> - Keysight N9042B IQ capture (`Matlab/` scripts). -- **A vs B**: `APA_200MHz` and `APA_200MHz_b` have **byte-identical inputs** and - different output captures. Commit `2c7f91a` swapped the two output sets four - hours after the initial release and renamed `APA_200MHz_backup` to - `APA_200MHz_b`, so today's primary dataset is the capture the OpenDPDv2 paper - numbers were reported on. -- **Signal QA** (all three datasets): no NaN/Inf, no duplicate rows, no clipping - (only the 1-2 samples defining the normalization peak), DC offset < 1e-3, - AM/AM relative spread 0.045-0.049 (APA is in line with DPA). -- **Splits**: power and complex gain are consistent across train/val/test - (APA gain 1.1626 / 1.1628 / 1.1636); no discontinuity at split boundaries. -- **Alignment**: input/output are already time-aligned (peak lag 0, normalized - cross-correlation 0.9945). -- **Measurement A vs B**: NMSE between the two output captures of the same - stimulus is -23.75 dB (gain 0.98987, phase +0.309 deg). Since each capture is - individually modelable to -38.5 dB, this gap is a systematic operating-point - difference between the two measurements, not random capture noise. - -## 5. Downstream impact: the benchmark rests on an undertrained surrogate - -Re-running the QR benchmarks on APA_200MHz with the *same* code but a properly -trained PA surrogate (GRU h23 at -38.87 dB instead of -31.40 dB): - -| Model | Metric | Surrogate at -31.4 dB
(as in benchmark_report) | Surrogate at -38.9 dB | Change | -|---|---|---|---|---| -| MP (QR) | ACLR_AVG | -41.02 | -41.81 | -0.8 | -| MP (QR) | EVM | -32.70 | **-47.41** | **-14.7** | -| GMP (QR) | ACLR_AVG | -38.75 | -39.58 | -0.8 | -| GMP (QR) | EVM | -38.50 | **-34.89** | **+3.6** | - -EVM moves by up to 14.7 dB and the MP-vs-GMP ranking flips (MP now wins on both -metrics). `benchmark_report.md` Section 8 concludes that AI beats the best -traditional method by "10.6 dB in EVM" on APA_200MHz; with a converged surrogate -MP alone reaches -47.41 dB EVM, so that conclusion does not survive. The -DPA_160MHz surrogate was converged (-38.43 dB, at its noise floor), which is why -that half of the report reproduces cleanly. - -## 6. New backbone: TRes-GRU - -`backbones/tres_gru.py` is TRes-DeltaGRU with the DeltaGRU cell replaced by a -dense `nn.GRU` (bias-free, so parameter counts match at equal hidden size: h=10 -gives 524 params, identical to TRes-DeltaGRU). Registered as `tres_gru` in -`models.py` and in both backbone choice lists in `arguments.py`. - -Validated: with `thx=thh=0`, TRes-DeltaGRU is mathematically a dense GRU, and the -two implementations agree numerically (max abs difference 8.2e-7, relative L2 -1.3e-6) after weight transfer. - -## Reproducing - -```bash -# Report recipe -python main.py --step train_pa --dataset_name APA_200MHz --PA_backbone tcn --PA_hidden_size 66 --n_epochs 100 - -# OpenDPDv2 recipe -python main.py --step train_pa --dataset_name APA_200MHz --PA_backbone gru --PA_hidden_size 23 \ - --n_epochs 240 --lr 5e-3 --lr_schedule 1 --lr_end 1e-4 --decay_factor 0.5 --patience 10 --batch_size 64 -``` - -Caution: the checkpoint/log path (`model_id`) does not encode the learning rate, -batch size or epoch count, so re-running the same architecture with a different -recipe silently overwrites `save//train_pa/.pt` and its logs. -The checkpoint currently on disk for `PA_S_0_M_GRU_H_23_F_200_P_1911` is the -OpenDPDv2-recipe model (-38.87 dB), not the report-recipe one. diff --git a/benchmark/report/artifact.json b/benchmark/report/artifact.json deleted file mode 100644 index 9496b38..0000000 --- a/benchmark/report/artifact.json +++ /dev/null @@ -1,382 +0,0 @@ -{ - "surface": "report", - "manifest": { - "version": 1, - "surface": "report", - "title": "TRes-DeltaGRU end-to-end training optimization", - "description": "A controlled speed and numerical-equivalence study of OpenDPD TRes-DeltaGRU training.", - "generatedAt": "2026-07-11T13:45:00Z", - "filters": [], - "cards": [ - { - "id": "production_speedup", - "description": "Process workload speedup for 357 training updates plus validation, test, RF metrics, and artifacts.", - "dataset": "headline", - "sourceId": "e2e_summary", - "metrics": [ - {"label": "End-to-end speedup", "field": "total_speedup"}, - {"label": "Training speedup", "field": "train_speedup"} - ] - }, - { - "id": "output_equivalence", - "description": "Relative L2 difference between the original and optimized cascaded neural-network outputs.", - "dataset": "headline", - "sourceId": "e2e_summary", - "metrics": [ - {"label": "Cascade output rel-L2", "field": "cascade_relative_l2"}, - {"label": "Maximum absolute error", "field": "cascade_max_abs"} - ] - }, - { - "id": "rf_equivalence", - "description": "Largest absolute difference across ACLR-left, ACLR-right, ACLR-average, EVM, and NMSE.", - "dataset": "headline", - "sourceId": "e2e_summary", - "metrics": [ - {"label": "Maximum RF-metric delta", "field": "maximum_rf_delta"}, - {"label": "Acceptance limit", "field": "rf_limit"} - ] - }, - { - "id": "checkpoint_equivalence", - "description": "Comparison of every tensor in the selected best DPD state dictionary.", - "dataset": "headline", - "sourceId": "e2e_summary", - "metrics": [ - {"label": "DPD checkpoint", "field": "checkpoint_result"}, - {"label": "Best epoch", "field": "best_epoch_result"} - ] - } - ], - "charts": [ - { - "id": "gate_total_time", - "title": "Three-epoch controlled workload time", - "subtitle": "All arms used the same fixture and recorded batches; the direct Triton arm was rejected by the output-equivalence gate.", - "headerMarkdown": "Lower is faster. The strict whole-cascade graph is the fastest **accepted** method.", - "type": "bar", - "dataset": "candidate_arms", - "sourceId": "e2e_summary", - "valueFormat": "number", - "encodings": { - "x": {"field": "implementation", "type": "nominal", "label": "Implementation"}, - "y": {"field": "total_s", "type": "quantitative", "label": "Total time", "unit": "s", "format": "number"}, - "tooltip": [ - {"field": "train_s", "type": "quantitative", "label": "Training time", "format": "number"}, - {"field": "total_speedup", "type": "quantitative", "label": "Total speedup", "format": "number"}, - {"field": "cascade_output_relative_l2", "type": "quantitative", "label": "Output rel-L2", "format": "number"}, - {"field": "accepted", "type": "nominal", "label": "Accepted"} - ] - } - } - ], - "tables": [ - { - "id": "candidate_decision", - "title": "Optimization candidate decision", - "subtitle": "The acceptance decision combines speed, final neural output, checkpoint, and RF metrics.", - "dataset": "candidate_arms", - "sourceId": "e2e_summary", - "defaultSort": {"field": "total_s", "direction": "asc"}, - "columns": [ - {"field": "implementation", "label": "Implementation", "type": "text"}, - {"field": "total_s", "label": "Total s", "type": "number", "format": "number", "align": "right"}, - {"field": "train_s", "label": "Train s", "type": "number", "format": "number", "align": "right"}, - {"field": "total_speedup", "label": "Speedup", "type": "number", "format": "number", "align": "right"}, - {"field": "cascade_output_relative_l2_display", "label": "Output rel-L2", "type": "text", "align": "right"}, - {"field": "maximum_absolute_metric_delta_db_display", "label": "Max RF delta, dB", "type": "text", "align": "right"}, - {"field": "accepted", "label": "Accepted", "type": "text", "align": "center"} - ] - }, - { - "id": "rf_metric_equivalence", - "title": "Production-density RF metric equivalence", - "subtitle": "Candidate minus original; lower absolute delta is better.", - "dataset": "rf_metrics", - "sourceId": "e2e_summary", - "defaultSort": {"field": "metric", "direction": "asc"}, - "columns": [ - {"field": "metric", "label": "Metric", "type": "text"}, - {"field": "original_db", "label": "Original dB", "type": "number", "format": "number", "align": "right"}, - {"field": "optimized_db", "label": "Optimized dB", "type": "number", "format": "number", "align": "right"}, - {"field": "delta_db_display", "label": "Delta dB", "type": "text", "align": "right"}, - {"field": "absolute_delta_db_display", "label": "Absolute delta dB", "type": "text", "align": "right"} - ] - }, - { - "id": "implementation_summary", - "title": "Implemented optimizations and safeguards", - "subtitle": "All changes retain the original module parameters and checkpoint structure.", - "dataset": "implementation_changes", - "sourceId": "benchmark_code", - "defaultSort": {"field": "priority", "direction": "asc"}, - "columns": [ - {"field": "priority", "label": "Priority", "type": "number", "align": "right"}, - {"field": "component", "label": "Component", "type": "text"}, - {"field": "change", "label": "Change", "type": "text"}, - {"field": "equivalence", "label": "Equivalence behavior", "type": "text"} - ] - } - ], - "sources": [ - { - "id": "e2e_summary", - "label": "Reviewed end-to-end benchmark summary", - "path": "benchmark/results/end_to_end_summary.json" - }, - { - "id": "benchmark_code", - "label": "Reproducible benchmark and implementation", - "path": "benchmark/benchmark_end_to_end.py" - } - ], - "blocks": [ - { - "id": "title", - "type": "markdown", - "body": "# TRes-DeltaGRU end-to-end training optimization", - "layout": "full" - }, - { - "id": "executive_summary", - "type": "markdown", - "sourceId": "e2e_summary", - "body": "## Executive Summary\n\nThe recommended strict path is guarded whole-cascade CUDA-graph training, enabled with `--cuda_graph_training`. On the 357-update production-density workload it reduced total time from **95.78 s to 14.51 s and 13.96 s** across two runs (**6.60–6.86×**) and training time from **86.86 s to 12.41 s and 11.81 s** (**7.00–7.35×**). The selected DPD checkpoint was bitwise identical, cascade output relative L2 error was **1.70e-6**, and the largest ACLR/NMSE/EVM difference was **4.27e-6 dB**." - }, - { - "id": "headline_metrics", - "type": "metric-strip", - "cardIds": [ - "production_speedup", - "output_equivalence", - "rf_equivalence", - "checkpoint_equivalence" - ] - }, - { - "id": "key_findings", - "type": "markdown", - "sourceId": "e2e_summary", - "body": "## Key findings\n\n- The isolated persistent Triton backbone remains the fastest kernel-level method at **97.11×**, but long training amplifies its small FP32 differences around delta thresholds.\n- Direct persistent-Triton end-to-end training reached **13.40× total** and **46.77× training** speedup in the three-epoch gate, yet its final cascade output relative L2 error reached **1.04e-2**. It was rejected even though its RF metrics stayed within 0.035 dB.\n- Capturing the existing clean-eager cascade preserves its PyTorch/cuDNN arithmetic and removes recurrent launch overhead. It is slower than direct Triton but passes every output, checkpoint, and RF-metric gate.\n- Loop/data cleanups alone are bitwise exact and improve total time **1.33×**." - }, - { - "id": "timing_chart", - "type": "chart", - "chartId": "gate_total_time", - "layout": "full" - }, - { - "id": "selection_rationale", - "type": "markdown", - "sourceId": "e2e_summary", - "body": "## Why the strict graph is the recommendation\n\nThe graph records the original eager TRes-DeltaGRU, MSE loss, gradient clearing, frozen-PA input backward, and DPD backward. It replays those exact kernels at fixed shapes while leaving batch copies, gradient clipping, AdamW, scheduling, validation, testing, and checkpoint selection outside the graph. Full and partial batches share stable gradient buffers and one capture stream. Unsupported calls fall back to clean eager training; evaluation restores the fused inference path." - }, - { - "id": "candidate_table", - "type": "table", - "tableId": "candidate_decision", - "layout": "full" - }, - { - "id": "equivalence_findings", - "type": "markdown", - "sourceId": "e2e_summary", - "body": "## Output and RF equivalence\n\nThe production-density optimized checkpoint matched every original state-dict tensor exactly. The remaining output difference comes from using the faster fused inference kernel on the same weights: **4.95e-6 maximum absolute** and **1.70e-6 relative L2** at the cascade output. All five reported RF metrics were effectively unchanged, with absolute deltas between zero and **4.27e-6 dB**, far below the predeclared **0.05 dB** ceiling." - }, - { - "id": "rf_table", - "type": "table", - "tableId": "rf_metric_equivalence", - "layout": "full" - }, - { - "id": "scope_definitions", - "type": "markdown", - "sourceId": "e2e_summary", - "body": "## Scope, data, and metric definitions\n\nThe controlled workload uses bundled `DPA_200MHz` data, a TRes-DeltaGRU H15 DPD (`thx=.01`, `thh=.05`), a frozen DGRU H23 PA, FP32, B64×T200, AdamW at 5e-3, and gradient clipping at 200. The production-density arm uses all 22,841 stride-one frames (357 updates); the multi-epoch gate uses stride 16 (23 updates per epoch for three epochs). NMSE is the repository's mean per-segment normalized MSE in dB. EVM is its subchannel spectral-magnitude error in dB. ACLR-left/right compare adjacent-channel power with the strongest main subchannel; ACLR-average is their mean." - }, - { - "id": "methodology", - "type": "markdown", - "sourceId": "benchmark_code", - "body": "## Methodology\n\nThe exact original is detached commit `0976ce39`. A single deterministic PA surrogate was trained for 100 epochs because the repository ships no PA checkpoint; its SHA-256 fixture was reused unchanged by every arm. DPD initialization, frame order, full/partial batches, validation/test segments, optimizer hyperparameters, TF32 setting, and hard-determinism policy were fixed. Each run saves the exact permutations, best DPD checkpoint, DPD output, cascaded output, ground truth, phase timings, trajectory, and RF metrics. The comparison script rejects a fixture/order mismatch before evaluating speed or numerical results. Regression validation passed **164 standard tests plus 19 extended all-dataset/all-backbone tests**." - }, - { - "id": "implemented_changes", - "type": "table", - "tableId": "implementation_summary", - "layout": "full" - }, - { - "id": "limitations", - "type": "markdown", - "sourceId": "e2e_summary", - "body": "## Limitations and robustness\n\n- The bundled repository has no published PA checkpoint. The surrogate makes the original-versus-optimized comparison controlled, but its absolute RF quality must not be presented as a reproduction of published results.\n- The longest comparison is one 357-update epoch; the multi-epoch gate covers 69 updates. This is not a complete 240- or 300-epoch convergence study.\n- Whole-cascade graph training is deliberately opt-in and specialized to the FP32 TRes-DeltaGRU → frozen-DGRU cascade with mean MSE. CPU, AMP, QAT, changed modules, diagnostic delta collection, capture failure, and unsupported shapes use eager fallbacks.\n- Existing EVM behavior was preserved: `calculate_metrics` does not pass the dataset sample rate, so EVM uses its 800 MHz default. Correcting that is a separate semantic change.\n- One original production-density timing and two optimized timings were collected on a power-managed laptop GPU; use the observed range rather than treating one decimal speedup as universal." - }, - { - "id": "recommendations", - "type": "markdown", - "body": "## Recommended next steps\n\n1. Use `--cuda_graph_training` (or `cuda_graph_training=True` through the API) when strict training-result equivalence is required.\n2. Keep direct persistent Triton available for inference and experiments where endpoint metric equivalence is sufficient, but do not label its multi-epoch neural outputs strict-equivalent at nonzero thresholds.\n3. Stage the real production PA checkpoint and run the full intended epoch schedule on the target GPU before a release claim. Preserve the same fixture/order comparison and checkpoint/output/RF gates.\n4. If workload shapes or precision modes change, rerun the supplied end-to-end harness; the graph path will safely fall back, but its speedup is shape- and hardware-dependent." - }, - { - "id": "further_questions", - "type": "markdown", - "body": "## Further questions\n\nThe main unresolved question is full-schedule convergence with the real PA checkpoint. A secondary opportunity is a GPU-resident frame sampler for much larger datasets, where per-batch host staging may become material after recurrent launch overhead has been removed." - } - ] - }, - "snapshot": { - "version": 1, - "generatedAt": "2026-07-11T13:45:00Z", - "status": "ready", - "datasets": { - "headline": [ - { - "total_speedup": "6.60–6.86×", - "train_speedup": "7.00–7.35×", - "cascade_relative_l2": "≤ 1.70e-6", - "cascade_max_abs": "≤ 4.95e-6", - "maximum_rf_delta": "≤ 4.27e-6 dB", - "rf_limit": "0.05 dB", - "checkpoint_result": "Bitwise exact", - "best_epoch_result": "Same" - } - ], - "candidate_arms": [ - { - "implementation": "Exact original", - "total_s": 32.03585798398126, - "train_s": 17.237055696023162, - "total_speedup": 1.0, - "train_speedup": 1.0, - "cascade_output_relative_l2": 0.0, - "cascade_output_relative_l2_display": "0", - "maximum_absolute_metric_delta_db": 0.0, - "maximum_absolute_metric_delta_db_display": "0", - "accepted": "Yes", - "batch_count": 69, - "checkpoint_max_abs": 0.0 - }, - { - "implementation": "Clean eager pipeline", - "total_s": 24.029687639005715, - "train_s": 13.491934273974039, - "total_speedup": 1.3331782945018265, - "train_speedup": 1.2775822462516342, - "cascade_output_relative_l2": 0.0, - "cascade_output_relative_l2_display": "0", - "maximum_absolute_metric_delta_db": 0.0, - "maximum_absolute_metric_delta_db_display": "0", - "accepted": "Yes", - "batch_count": 69, - "checkpoint_max_abs": 0.0 - }, - { - "implementation": "Strict whole-cascade graph", - "total_s": 5.458723943011137, - "train_s": 3.434560444991803, - "total_speedup": 5.868744841914403, - "train_speedup": 5.018707916804272, - "cascade_output_relative_l2": 0.0000020480301293249045, - "cascade_output_relative_l2_display": "2.05e-6", - "maximum_absolute_metric_delta_db": 0.0000024523588528779783, - "maximum_absolute_metric_delta_db_display": "2.45e-6", - "accepted": "Yes", - "batch_count": 69, - "checkpoint_max_abs": 0.0 - }, - { - "implementation": "Direct persistent Triton", - "total_s": 2.3912337490182836, - "train_s": 0.36852700999588706, - "total_speedup": 13.397208866399414, - "train_speedup": 46.77284222997803, - "cascade_output_relative_l2": 0.010411809662242288, - "cascade_output_relative_l2_display": "1.04e-2", - "maximum_absolute_metric_delta_db": 0.03461828059020533, - "maximum_absolute_metric_delta_db_display": "3.46e-2", - "accepted": "No", - "batch_count": 69, - "checkpoint_max_abs": 0.000812530517578125 - } - ], - "rf_metrics": [ - {"metric": "ACLR left", "original_db": -33.009569123033046, "optimized_db": -33.009571182277476, "delta_db": -0.0000020592444300859825, "delta_db_display": "-2.06e-6", "absolute_delta_db": 0.0000020592444300859825, "absolute_delta_db_display": "2.06e-6"}, - {"metric": "ACLR right", "original_db": -32.416537505570915, "optimized_db": -32.41654177506668, "delta_db": -0.0000042694957684830115, "delta_db_display": "-4.27e-6", "absolute_delta_db": 0.0000042694957684830115, "absolute_delta_db_display": "4.27e-6"}, - {"metric": "ACLR average", "original_db": -32.71305331430198, "optimized_db": -32.71305647867208, "delta_db": -0.000003164370099284497, "delta_db_display": "-3.16e-6", "absolute_delta_db": 0.000003164370099284497, "absolute_delta_db_display": "3.16e-6"}, - {"metric": "EVM", "original_db": -25.64965659922391, "optimized_db": -25.649657576831792, "delta_db": -0.0000009776078826462253, "delta_db_display": "-9.78e-7", "absolute_delta_db": 0.0000009776078826462253, "absolute_delta_db_display": "9.78e-7"}, - {"metric": "NMSE", "original_db": -24.16977882385254, "optimized_db": -24.16977882385254, "delta_db": 0.0, "delta_db_display": "0", "absolute_delta_db": 0.0, "absolute_delta_db_display": "0"} - ], - "implementation_changes": [ - {"priority": 1, "component": "Whole cascade", "change": "Opt-in fixed-shape CUDA graph of clean-eager forward, MSE, gradient zeroing, and backward", "equivalence": "Original kernels; clean-eager fallback; clip and AdamW remain outside"}, - {"priority": 2, "component": "Frozen DGRU PA", "change": "Exact cuDNN CUDA-graph forward and input-backward replay", "equivalence": "Bitwise output/input gradient in focused tests; guarded eager fallback"}, - {"priority": 3, "component": "Training loop", "change": "One loss-vector device-to-host transfer per epoch; set-to-none gradients; trainable-only clip/optimizer", "equivalence": "Bitwise CPU trajectory and logged loss in lockstep tests"}, - {"priority": 4, "component": "Evaluation", "change": "Inference mode and consolidated output/target transfers", "equivalence": "Exact outputs, targets, and loss in tests"}, - {"priority": 5, "component": "Data", "change": "Vectorized frame construction and CUDA pinned/nonblocking loader path", "equivalence": "Exact frame order/content/dtype with independent storage"}, - {"priority": 6, "component": "Persistent Triton TRes", "change": "Fused recurrence and custom BPTT for supported FP32 NVIDIA shapes", "equivalence": "Minor one-step FP error; rejected as strict multi-epoch training path at nonzero thresholds"} - ] - }, - "accessIssues": [] - }, - "sources": [ - { - "id": "e2e_summary", - "label": "Reviewed end-to-end benchmark summary", - "path": "benchmark/results/end_to_end_summary.json", - "query": { - "engine": "duckdb", - "id": "opendpd-e2e-2026-07-11", - "sql": "SELECT * FROM read_json_auto('benchmark/results/end_to_end_summary.json');", - "description": "Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.", - "language": "sql", - "executed_at": "2026-07-11T13:42:00Z", - "tables_used": [ - "benchmark/results/e2e_dpa200_stride1_comparison_graph.json", - "benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json", - "benchmark/results/e2e_dpa200_stride16_comparison_eager.json", - "benchmark/results/e2e_dpa200_stride16_comparison_graph.json", - "benchmark/results/e2e_dpa200_stride16_comparison_fused.json", - "benchmark/results/tres_deltagru_rtx4090_laptop.json" - ], - "filters": [ - "DPA_200MHz bundled dataset", - "FP32 with TF32 disabled and hard deterministic policy", - "Same serialized PA/DPD fixture and recorded batch permutations", - "Plots and progress display excluded" - ], - "metric_definitions": [ - "Total speedup = original measured workload seconds / optimized measured workload seconds.", - "Training speedup = original synchronized net_train seconds / optimized synchronized net_train seconds.", - "Output relative L2 = L2(candidate - reference) / L2(reference), evaluated on saved best-checkpoint test outputs.", - "Maximum RF delta = max absolute candidate-minus-reference delta over ACLR-left, ACLR-right, ACLR-average, EVM, and NMSE, in dB." - ] - } - }, - { - "id": "benchmark_code", - "label": "Reproducible benchmark and implementation", - "path": "benchmark/benchmark_end_to_end.py", - "query": { - "engine": "duckdb", - "id": "benchmark-end-to-end-py", - "sql": "SELECT content FROM read_text('benchmark/benchmark_end_to_end.py');", - "description": "Loads repository data/models/metrics, prepares the immutable fixture, replays recorded batch orders, records phase timings and artifacts, and compares outputs, checkpoints, and RF metrics.", - "language": "sql", - "executed_at": "2026-07-11T13:42:00Z", - "tables_used": [ - "benchmark/benchmark_end_to_end.py", - "modules/cuda_graph_training.py", - "modules/train_funcs.py", - "backbones/cuda_graph_frozen_dgru.py", - "backbones/triton_deltagru.py" - ], - "filters": ["No architecture or state-dict changes", "Unsupported graph or kernel calls fall back to eager PyTorch"], - "metric_definitions": ["The benchmark preserves the repository's existing ACLR, EVM, and NMSE implementations without semantic corrections."] - } - } - ], - "package_info": { - "originUrl": "artifact://opendpd-tres-deltagru-e2e-2026-07-11" - } -} diff --git a/benchmark/reproduce_benchmark_report.sh b/benchmark/reproduce_benchmark_report.sh new file mode 100755 index 0000000..9050389 --- /dev/null +++ b/benchmark/reproduce_benchmark_report.sh @@ -0,0 +1,703 @@ +#!/usr/bin/env bash +# +# Reproduce benchmark/benchmark_report.md from the two bundled RF datasets. +# +# The benchmark matrix is fixed before execution: +# PA (~2,700 real parameters): MP, GMP, GRU, TRes-GRU, +# TRes-DeltaGRU (THX=THH=0) +# DPD (~1,000 real parameters): MP/ILA, GMP/ILA, GRU, TRes-GRU +# PA-surrogate sensitivity: TRes-DeltaGRU DPD (THX=THH=0) trained +# independently through TRes-GRU and +# TRes-DeltaGRU PA models +# +# All neural jobs use the same 300-epoch recipe. The primary DPD comparison +# uses the dataset's validation-selected TRes-GRU PA; the sensitivity runs use +# each of the two named PA surrogates. +# +# Default invocation: +# +# bash benchmark/reproduce_benchmark_report.sh +# +# Evidence is written to an immutable timestamped directory under +# benchmark/results/reproduced/. Architecture-addressed save/log artifacts are +# never overwritten unless --overwrite is supplied; in that case, the exact +# colliding files are archived into the run directory first. + +set -Eeuo pipefail + +SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +REPO_ROOT=$(cd "${SCRIPT_DIR}/.." && pwd) + +dry_run=0 +overwrite=0 +device=${DEVICE:-0} +output_dir="" + +usage() { + echo "Usage: $0 [--dry-run] [--overwrite] [--device INDEX] [--output-dir PATH]" + echo + echo " --dry-run Record and print every job without executing it." + echo " --overwrite Archive, then replace exact colliding save/log files." + echo " --device INDEX CUDA device index (default: ${device})." + echo " --output-dir PATH Run-specific evidence directory." +} + +while (($#)); do + case "$1" in + --dry-run) + dry_run=1 + shift + ;; + --overwrite) + overwrite=1 + shift + ;; + --device) + if (($# < 2)); then + echo "[ERROR] --device requires an index." >&2 + exit 2 + fi + device=$2 + shift 2 + ;; + --output-dir) + if (($# < 2)); then + echo "[ERROR] --output-dir requires a path." >&2 + exit 2 + fi + output_dir=$2 + shift 2 + ;; + -h|--help) + usage + exit 0 + ;; + *) + echo "[ERROR] Unknown argument: $1" >&2 + usage >&2 + exit 2 + ;; + esac +done + +if [[ -n "${OPENDPD_PYTHON:-}" ]]; then + python_bin=${OPENDPD_PYTHON} +elif [[ -n "${PYTHON:-}" ]]; then + python_bin=${PYTHON} +elif [[ -x "${REPO_ROOT}/.venv/bin/python" ]]; then + python_bin=${REPO_ROOT}/.venv/bin/python +elif command -v python3 >/dev/null 2>&1; then + python_bin=$(command -v python3) +else + echo "[ERROR] Python was not found. Set OPENDPD_PYTHON." >&2 + exit 1 +fi + +if [[ "${python_bin}" == */* ]]; then + if [[ "${python_bin}" != /* ]]; then + python_dir=$(cd "$(dirname "${python_bin}")" && pwd) + python_bin="${python_dir}/$(basename "${python_bin}")" + fi + if [[ ! -x "${python_bin}" ]]; then + echo "[ERROR] Python interpreter is not executable: ${python_bin}" >&2 + exit 1 + fi +else + resolved_python=$(type -P -- "${python_bin}" || true) + if [[ -z "${resolved_python}" ]]; then + echo "[ERROR] Python interpreter was not found on PATH: ${python_bin}" >&2 + exit 1 + fi + python_bin=${resolved_python} +fi + +if [[ ! "${device}" =~ ^[0-9]+$ ]]; then + echo "[ERROR] --device must be a non-negative integer: ${device}" >&2 + exit 2 +fi + +if [[ -z "${output_dir}" ]]; then + run_id=${RUN_ID:-$(date -u +%Y%m%dT%H%M%SZ)} + output_dir="${REPO_ROOT}/benchmark/results/reproduced/${run_id}" +elif [[ "${output_dir}" != /* ]]; then + output_dir="${REPO_ROOT}/${output_dir}" +fi + +benchmark_lock_fd="" +if ((dry_run == 0)); then + if ! command -v flock >/dev/null 2>&1; then + echo "[ERROR] flock is required to serialize benchmark reproductions." >&2 + exit 1 + fi + if ! benchmark_lock_path=$( + git -C "${REPO_ROOT}" rev-parse --git-path opendpd-benchmark-report.lock + ); then + echo "[ERROR] Could not resolve the repository benchmark lock path." >&2 + exit 1 + fi + if [[ "${benchmark_lock_path}" != /* ]]; then + benchmark_lock_path="${REPO_ROOT}/${benchmark_lock_path}" + fi + benchmark_lock_dir=$(cd "$(dirname "${benchmark_lock_path}")" && pwd) + benchmark_lock_path="${benchmark_lock_dir}/$(basename "${benchmark_lock_path}")" + exec {benchmark_lock_fd}> "${benchmark_lock_path}" + if ! flock -n "${benchmark_lock_fd}"; then + echo "[ERROR] Another benchmark reproduction is already running for this repository." >&2 + echo "Lock: ${benchmark_lock_path}" >&2 + exit 1 + fi +fi + +if [[ -e "${output_dir}" ]]; then + echo "[ERROR] Output path already exists: ${output_dir}" >&2 + echo "Choose a new --output-dir or RUN_ID; run directories are immutable." >&2 + exit 1 +fi + +for dataset in APA_200MHz DPA_160MHz; do + if [[ ! -f "${REPO_ROOT}/datasets/${dataset}/spec.json" ]]; then + echo "[ERROR] Required dataset is missing: datasets/${dataset}" >&2 + exit 1 + fi +done + +git_commit_before=$(git -C "${REPO_ROOT}" rev-parse HEAD) +git_branch_before=$(git -C "${REPO_ROOT}" branch --show-current) +git_status_before=$(git -C "${REPO_ROOT}" status --short --untracked-files=all) + +mkdir -p "$(dirname "${output_dir}")" +mkdir "${output_dir}" +mkdir "${output_dir}/logs" +commands_log="${output_dir}/commands.log" +jobs_log="${output_dir}/jobs.tsv" +pa_bindings_log="${output_dir}/pa_checkpoint_bindings.tsv" +: > "${commands_log}" +printf 'label\tstarted_at_utc\tfinished_at_utc\tduration_seconds\texit_status\n' > "${jobs_log}" +printf 'dataset\tdpd_model_key\tpa_model_key\tcheckpoint\tsha256\n' \ + > "${pa_bindings_log}" +printf '%s\n' "${git_commit_before}" > "${output_dir}/git_commit_before.txt" +printf '%s\n' "${git_branch_before}" > "${output_dir}/git_branch_before.txt" +printf '%s\n' "${git_status_before}" > "${output_dir}/git_status_before.txt" + +cd "${REPO_ROOT}" + +"${python_bin}" - "${output_dir}/recipe.json" <<'PY' +import json +from pathlib import Path +import sys + +recipe = { + "schema_version": 6, + "datasets": ["APA_200MHz", "DPA_160MHz"], + "parameter_count_convention": ( + "Neural parameters are real trainable scalars; each complex polynomial " + "coefficient counts as two real degrees of freedom." + ), + "neural": { + "optimizer": "AdamW", + "optimizer_weight_decay": 0.01, + "optimizer_betas": [0.9, 0.999], + "optimizer_eps": 1e-8, + "loss": "MSE", + "epochs": 300, + "batch_size": 64, + "evaluation_batch_size": 64, + "initial_learning_rate": 5e-3, + "scheduler": "ReduceLROnPlateau", + "scheduler_factor": 0.5, + "scheduler_patience": 5, + "scheduler_threshold": 1e-4, + "scheduler_threshold_mode": "rel", + "scheduler_cooldown": 0, + "scheduler_eps": 1e-8, + "minimum_learning_rate": 5e-5, + "frame_length": 200, + "frame_stride": 1, + "gradient_clip": 200, + "seed": 0, + "reproducibility": "soft", + "pa_scheduler_and_selection_metric": "validation NMSE", + "dpd_scheduler_and_selection_metric": "validation ACLR_AVG", + }, + "pa_models": { + "mp": {"K": 9, "Q": 150, "real_parameters": 2700}, + "gmp": { + "Ka": 5, "La": 30, + "Kb": 4, "Lb": 30, "Mb": 5, + "Kc": 4, "Lc": 30, "Mc": 5, + "real_parameters": 2700, + }, + "gru": {"hidden_size": 28, "real_parameters": 2746}, + "tres_gru": {"hidden_size": 27, "real_parameters": 2751}, + "tres_deltagru": { + "hidden_size": 27, + "real_parameters": 2751, + "delta_thresholds": {"input": 0.0, "hidden": 0.0}, + }, + }, + "dpd_models": { + "mp": {"K": 5, "Q": 100, "real_parameters": 1000, "method": "ILA"}, + "gmp": { + "Ka": 5, "La": 20, + "Kb": 4, "Lb": 20, "Mb": 3, + "Kc": 4, "Lc": 20, "Mc": 2, + "real_parameters": 1000, + "method": "ILA", + }, + "gru": {"hidden_size": 16, "real_parameters": 994}, + "tres_gru": {"hidden_size": 15, "real_parameters": 999}, + }, + "dpd_tres_deltagru_pa_surrogate_comparison": { + "model": { + "hidden_size": 15, + "real_parameters": 999, + "delta_thresholds": {"input": 0.0, "hidden": 0.0}, + }, + "pa_surrogates": { + "tres_gru": { + "hidden_size": 27, + "real_parameters": 2751, + "delta_thresholds": None, + }, + "tres_deltagru": { + "hidden_size": 27, + "real_parameters": 2751, + "delta_thresholds": {"input": 0.0, "hidden": 0.0}, + }, + }, + }, + "dpd_pa_surrogate": { + "backbone": "tres_gru", + "hidden_size": 27, + "real_parameters": 2751, + }, + "polynomial_solvers": { + "default": { + "implementation": "torch.linalg.lstsq", + "mode": "gels", + "driver": "gels", + "dtype": "torch.complex64", + "column_scaling": "l2", + "regularization": None, + }, + "gmp_pa": { + "implementation": "torch.linalg.svd", + "mode": "truncated_svd", + "driver": "gesvdj", + "dtype": "torch.complex64", + "column_scaling": "l2", + "regularization": { + "type": "truncated_svd", + "relative_cutoff": 1e-4, + }, + }, + "segment_boundary_policy": "zero delay state at every nperseg boundary", + }, +} + +path = Path(sys.argv[1]) +path.write_text(json.dumps(recipe, indent=2, sort_keys=True) + "\n") +PY + +record_command() { + local label=$1 + shift + printf '# %s\n' "${label}" >> "${commands_log}" + printf '%q ' "$@" >> "${commands_log}" + printf '\n\n' >> "${commands_log}" +} + +print_command() { + local label=$1 + shift + printf '\n[%s]\n' "${label}" + printf '+ ' + printf '%q ' "$@" + printf '\n' +} + +run_step() { + local label=$1 + shift + record_command "${label}" "$@" + print_command "${label}" "$@" + if ((dry_run)); then + return + fi + + local started_at finished_at started_epoch finished_epoch duration status + started_at=$(date -u +%Y-%m-%dT%H:%M:%SZ) + started_epoch=$(date +%s) + set +e + "$@" 2>&1 | tee "${output_dir}/logs/${label}.log" + status=${PIPESTATUS[0]} + set -e + finished_epoch=$(date +%s) + finished_at=$(date -u +%Y-%m-%dT%H:%M:%SZ) + duration=$((finished_epoch - started_epoch)) + printf '%s\t%s\t%s\t%s\t%s\n' \ + "${label}" "${started_at}" "${finished_at}" "${duration}" "${status}" \ + >> "${jobs_log}" + if ((status != 0)); then + echo "[ERROR] Job failed (${status}): ${label}" >&2 + exit "${status}" + fi +} + +copy_with_parents() { + local destination=$1 + shift + local path + for path in "$@"; do + [[ -f "${path}" ]] || continue + mkdir -p "${destination}/$(dirname "${path}")" + cp -p "${path}" "${destination}/${path}" + done +} + +sha256_path() { + "${python_bin}" - "$1" <<'PY' +import hashlib +from pathlib import Path +import sys + +path = Path(sys.argv[1]) +if not path.is_file(): + raise SystemExit(f"[ERROR] Required checkpoint is missing: {path}") +digest = hashlib.sha256() +with path.open("rb") as handle: + for chunk in iter(lambda: handle.read(1024 * 1024), b""): + digest.update(chunk) +print(digest.hexdigest()) +PY +} + +record_pa_binding() { + local dataset=$1 + local dpd_model_key=$2 + local pa_model_key=$3 + local checkpoint=$4 + if ((dry_run)); then + return + fi + local digest + digest=$(sha256_path "${checkpoint}") + printf '%s\t%s\t%s\t%s\t%s\n' \ + "${dataset}" "${dpd_model_key}" "${pa_model_key}" \ + "${checkpoint}" "${digest}" \ + >> "${pa_bindings_log}" +} + +# Only these exact architecture-addressed files can collide with this recipe. +target_artifacts=() +add_training_artifacts() { + local dataset=$1 + local step=$2 + local parent=$3 + local model_id=$4 + local save_base="save/${dataset}/${step}" + local log_base="log/${dataset}/${step}" + if [[ -n "${parent}" ]]; then + save_base="${save_base}/${parent}" + log_base="${log_base}/${parent}" + fi + target_artifacts+=( + "${save_base}/${model_id}.pt" + "${log_base}/best/${model_id}.csv" + "${log_base}/history/${model_id}.csv" + ) +} + +for dataset in APA_200MHz DPA_160MHz; do + add_training_artifacts "${dataset}" train_pa "" \ + PA_S_0_M_GRU_H_28_F_200_P_2746 + add_training_artifacts "${dataset}" train_pa "" \ + PA_S_0_M_TRES_GRU_H_27_F_200_P_2751 + add_training_artifacts "${dataset}" train_pa "" \ + PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751 + + dpd_parent=PA_S_0_M_TRES_GRU_H_27_F_200 + add_training_artifacts "${dataset}" train_dpd "${dpd_parent}" \ + DPD_S_0_M_GRU_H_16_F_200_P_994 + add_training_artifacts "${dataset}" train_dpd "${dpd_parent}" \ + DPD_S_0_M_TRES_GRU_H_15_F_200_P_999 + add_training_artifacts "${dataset}" train_dpd "${dpd_parent}" \ + DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000 + + delta_dpd_parent=PA_S_0_M_TRES_DELTAGRU_H_27_F_200 + add_training_artifacts "${dataset}" train_dpd "${delta_dpd_parent}" \ + DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000 +done + +existing_artifacts=() +for path in "${target_artifacts[@]}"; do + if [[ -L "${path}" ]]; then + echo "[ERROR] Refusing benchmark artifact symlink: ${path}" >&2 + exit 1 + elif [[ -e "${path}" && ! -f "${path}" ]]; then + echo "[ERROR] Refusing non-regular benchmark artifact: ${path}" >&2 + exit 1 + elif [[ -f "${path}" ]]; then + existing_artifacts+=("${path}") + fi +done + +if ((dry_run == 0 && ${#existing_artifacts[@]} > 0 && overwrite == 0)); then + echo "[ERROR] Matching benchmark artifacts already exist and would be overwritten:" >&2 + printf ' %s\n' "${existing_artifacts[@]}" >&2 + echo "Re-run with --overwrite to archive these exact files before training." >&2 + exit 1 +fi + +if ((dry_run == 0 && ${#existing_artifacts[@]} > 0)); then + copy_with_parents "${output_dir}/preexisting" "${existing_artifacts[@]}" + echo "[INFO] Archived ${#existing_artifacts[@]} pre-existing artifact(s)." +fi + +if ((dry_run == 0)); then + "${python_bin}" - "${device}" <<'PY' +import sys + +try: + import numpy + import pandas + import scipy + import torch +except ImportError as exc: + raise SystemExit(f"[ERROR] Missing benchmark dependency: {exc}") from exc + +from models import CoreModel +from utils.util import count_net_params + +device_index = int(sys.argv[1]) +if not torch.cuda.is_available(): + raise SystemExit("[ERROR] CUDA is required for the reference benchmark.") +if device_index >= torch.cuda.device_count(): + raise SystemExit( + f"[ERROR] CUDA device {device_index} is unavailable; " + f"detected {torch.cuda.device_count()} device(s)." + ) +device = torch.device(f"cuda:{device_index}") +print(f"[INFO] Python {sys.version.split()[0]}") +print(f"[INFO] PyTorch {torch.__version__}; CUDA {torch.version.cuda}") +print(f"[INFO] CUDA device {device_index}: {torch.cuda.get_device_name(device)}") + +expected = { + ("gru", 28): 2746, + ("tres_gru", 27): 2751, + ("tres_deltagru", 27): 2751, + ("gru", 16): 994, + ("tres_gru", 15): 999, + ("tres_deltagru", 15): 999, +} +for (backbone, hidden_size), expected_parameters in expected.items(): + network = CoreModel( + input_size=2, + hidden_size=hidden_size, + num_layers=1, + backbone_type=backbone, + thx=0.0, + thh=0.0, + ).to(device) + actual_parameters = count_net_params(network) + if actual_parameters != expected_parameters: + raise SystemExit( + f"[ERROR] {backbone}-H{hidden_size} has {actual_parameters} " + f"parameters, expected {expected_parameters}." + ) + sample = torch.randn(2, 200, 2, device=device, requires_grad=True) + output = network(sample) + output.square().mean().backward() + if not torch.isfinite(output).all() or sample.grad is None: + raise SystemExit(f"[ERROR] Non-finite smoke test for {backbone}-H{hidden_size}.") + del network, sample, output + +matrix = torch.randn(512, 16, dtype=torch.complex64, device=device) +target = torch.randn(512, 1, dtype=torch.complex64, device=device) +solution = torch.linalg.lstsq(matrix, target, driver="gels").solution +if not torch.isfinite(solution).all(): + raise SystemExit("[ERROR] CUDA complex least-squares smoke test failed.") +torch.cuda.synchronize(device) +print("[INFO] Neural and complex least-squares CUDA smoke tests passed.") +PY +fi + +neural_common=( + --PA_num_layers 1 + --DPD_num_layers 1 + --frame_length 200 + --frame_stride 1 + --n_epochs 300 + --opt_type adamw + --lr 5e-3 + --lr_schedule 1 + --lr_end 5e-5 + --decay_factor 0.5 + --patience 5 + --batch_size 64 + --batch_size_eval 64 + --loss_type l2 + --grad_clip_val 200 + --thx 0 + --thh 0 + --log_precision 8 + --seed 0 + --re_level soft + --eval_val 1 + --eval_test 1 + --accelerator cuda + --devices "${device}" +) + +run_step snapshot_context \ + "${python_bin}" -m benchmark.collect_benchmark_report \ + --output-dir "${output_dir}" --device "${device}" --snapshot-context + +run_neural_pa() { + local dataset=$1 + local slug=$2 + local backbone=$3 + local hidden_size=$4 + run_step "train_pa_${slug}_${backbone}" \ + "${python_bin}" main.py \ + --dataset_name "${dataset}" \ + --step train_pa \ + --PA_backbone "${backbone}" \ + --PA_hidden_size "${hidden_size}" \ + "${neural_common[@]}" +} + +run_neural_dpd() { + local dataset=$1 + local slug=$2 + local backbone=$3 + local hidden_size=$4 + local pa_model_key=$5 + local pa_backbone=$6 + local pa_hidden_size=$7 + local pa_model_id=$8 + local pa_checkpoint="save/${dataset}/train_pa/${pa_model_id}.pt" + record_pa_binding \ + "${dataset}" "${backbone}" "${pa_model_key}" "${pa_checkpoint}" + run_step "train_dpd_${slug}_${backbone}_via_${pa_model_key}_pa" \ + "${python_bin}" main.py \ + --dataset_name "${dataset}" \ + --step train_dpd \ + --PA_backbone "${pa_backbone}" \ + --PA_hidden_size "${pa_hidden_size}" \ + --DPD_backbone "${backbone}" \ + --DPD_hidden_size "${hidden_size}" \ + "${neural_common[@]}" +} + +run_polynomial_pa() { + local dataset=$1 + local slug=$2 + local polynomial=$3 + shift 3 + local solver_arguments=(--solver-mode gels) + if [[ "${polynomial}" == "gmp" ]]; then + solver_arguments=(--solver-mode truncated_svd --svd-rcond 1e-4) + fi + run_step "pa_model_${slug}_${polynomial}" \ + "${python_bin}" -m benchmark.benchmark_volterra \ + --task pa_modeling \ + --dataset-name "${dataset}" \ + --model "${polynomial}" \ + --solver-device "cuda:${device}" \ + --solver-dtype complex64 \ + "${solver_arguments[@]}" \ + --device "${device}" \ + --json-out "${output_dir}/benchmark_report_${slug}_pa_${polynomial}.json" \ + "$@" +} + +run_polynomial_dpd() { + local dataset=$1 + local slug=$2 + local polynomial=$3 + shift 3 + run_step "dpd_ila_${slug}_${polynomial}" \ + "${python_bin}" -m benchmark.benchmark_volterra \ + --task dpd_ila \ + --dataset-name "${dataset}" \ + --model "${polynomial}" \ + --solver-device "cuda:${device}" \ + --solver-dtype complex64 \ + --solver-mode gels \ + --device "${device}" \ + --pa-backbone tres_gru \ + --pa-hidden-size 27 \ + --pa-num-layers 1 \ + --pa-checkpoint \ + "save/${dataset}/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt" \ + --json-out "${output_dir}/benchmark_report_${slug}_dpd_${polynomial}.json" \ + "$@" +} + +for dataset_spec in "APA_200MHz apa" "DPA_160MHz dpa"; do + read -r dataset slug <<< "${dataset_spec}" + run_neural_pa "${dataset}" "${slug}" gru 28 + run_neural_pa "${dataset}" "${slug}" tres_gru 27 + run_neural_pa "${dataset}" "${slug}" tres_deltagru 27 +done + +for dataset_spec in "APA_200MHz apa" "DPA_160MHz dpa"; do + read -r dataset slug <<< "${dataset_spec}" + run_polynomial_pa "${dataset}" "${slug}" mp \ + --K 9 --Q 150 + run_polynomial_pa "${dataset}" "${slug}" gmp \ + --Ka 5 --La 30 --Kb 4 --Lb 30 --Mb 5 \ + --Kc 4 --Lc 30 --Mc 5 +done + +for dataset_spec in "APA_200MHz apa" "DPA_160MHz dpa"; do + read -r dataset slug <<< "${dataset_spec}" + run_neural_dpd \ + "${dataset}" "${slug}" gru 16 tres_gru tres_gru 27 \ + PA_S_0_M_TRES_GRU_H_27_F_200_P_2751 + run_neural_dpd \ + "${dataset}" "${slug}" tres_gru 15 tres_gru tres_gru 27 \ + PA_S_0_M_TRES_GRU_H_27_F_200_P_2751 + run_neural_dpd \ + "${dataset}" "${slug}" tres_deltagru 15 tres_gru tres_gru 27 \ + PA_S_0_M_TRES_GRU_H_27_F_200_P_2751 + run_neural_dpd \ + "${dataset}" "${slug}" tres_deltagru 15 \ + tres_deltagru tres_deltagru 27 \ + PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751 +done + +for dataset_spec in "APA_200MHz apa" "DPA_160MHz dpa"; do + read -r dataset slug <<< "${dataset_spec}" + run_polynomial_dpd "${dataset}" "${slug}" mp \ + --K 5 --Q 100 + run_polynomial_dpd "${dataset}" "${slug}" gmp \ + --Ka 5 --La 20 --Kb 4 --Lb 20 --Mb 3 \ + --Kc 4 --Lc 20 --Mc 2 +done + +if ((dry_run)); then + record_command collect_report \ + "${python_bin}" -m benchmark.collect_benchmark_report \ + --output-dir "${output_dir}" --device "${device}" + print_command collect_report \ + "${python_bin}" -m benchmark.collect_benchmark_report \ + --output-dir "${output_dir}" --device "${device}" + echo + echo "[DRY RUN] Commands were written to ${commands_log}" + exit 0 +fi + +copy_with_parents "${output_dir}/artifacts" "${target_artifacts[@]}" + +run_step collect_report \ + "${python_bin}" -m benchmark.collect_benchmark_report \ + --output-dir "${output_dir}" --device "${device}" + +echo +echo "[DONE] Reproduced benchmark evidence: ${output_dir}" +echo "[DONE] Markdown report: ${output_dir}/benchmark_report.md" +echo "[DONE] Machine-readable results: ${output_dir}/benchmark_report_results.json" +echo "[DONE] Results visualization: ${output_dir}/benchmark_results.png" +echo "[DONE] Delta-DPD sensitivity visualization: ${output_dir}/benchmark_delta_dpd_results.png" diff --git a/benchmark/results/benchmark_report_results.json b/benchmark/results/benchmark_report_results.json new file mode 100644 index 0000000..36f970f --- /dev/null +++ b/benchmark/results/benchmark_report_results.json @@ -0,0 +1,1904 @@ +{ + "artifact_kind": "opendpd_benchmark_reproduction_run", + "canonical_report": "benchmark/benchmark_report.md", + "completion_context": { + "captured_at_utc": "2026-07-26T20:45:34.695466+00:00", + "git_branch": "benchmark-fix", + "git_commit": "3df35e081e6e41463fa46f21778c72a748823274", + "validated_unchanged": true + }, + "datasets": { + "APA_200MHz": { + "dpd_models": { + "gmp": { + "artifact": { + "path": "benchmark_report_apa_dpd_gmp.json", + "sha256": "62912b11d4b370e2a0ae68f60bb03b53351e8c264bc0ddad149101beceb953d1", + "size_bytes": 2972 + }, + "basis_configuration": { + "Ka": 5, + "Kb": 4, + "Kc": 4, + "La": 20, + "Lb": 20, + "Lc": 20, + "Mb": 3, + "Mc": 2 + }, + "coefficient_l2_norm": 46.2047004699707, + "column_scale_max": 89.97786712646484, + "column_scale_min": 9.357341766357422, + "column_scaling": "l2", + "complex_coefficients": 500, + "condition_number": null, + "device": "cuda:0", + "dtype": "torch.complex64", + "full_rank_assumption": true, + "least_squares_rank": null, + "method": "indirect_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -43.5931687089929, + "aclr_left_db": -44.06568580030243, + "aclr_right_db": -43.120651617683365, + "evm_db": -46.352304380006316, + "nmse_db": -38.52589797973633 + }, + "validation": { + "aclr_avg_db": -42.972747788860104, + "aclr_left_db": -43.55596870580729, + "aclr_right_db": -42.38952687191292, + "evm_db": -46.27533200387405, + "nmse_db": -38.31670379638672 + } + }, + "model": { + "backbone": "gmp", + "display_name": "GMP", + "parameter_convention": "two real degrees of freedom per complex coefficient", + "parameters": 1000 + }, + "nperseg": 19662, + "pa_checkpoint_binding": { + "checkpoint": "save/APA_200MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "sha256": "fe08b5bdfa377af79bf1ea78fcfa0c96b10659bb050fe46ed2f3ef57dfcbc2eb" + }, + "pa_evaluation_device": "cuda:0", + "parameter_count_convention": "two real degrees of freedom per complex coefficient", + "real_parameters": 1000, + "regularization": null, + "retained_singular_value_min": null, + "sample_rate_hz": 983040000.0, + "singular_value_cutoff": null, + "singular_value_max": null, + "singular_value_min": null, + "solver": "torch.linalg.lstsq", + "solver_driver": "gels", + "solver_mode": "gels", + "svd_rcond": null, + "target_gain": 1.0, + "task": "dpd_ila", + "training_relative_residual": 0.010865671560168266 + }, + "gru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_GRU_H_16_F_200_P_994.csv", + "sha256": "a6d38797ef37bbe21ce76ee9b5068b8b158172c1b3ba10729e9095278812d2e6", + "size_bytes": 421, + "source_path": "log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_GRU_H_16_F_200_P_994.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_GRU_H_16_F_200_P_994.pt", + "sha256": "e20f7c4c97ed09ea991b479812db21bef9ebdc622d4a1ad1bb2418988602d627", + "size_bytes": 6832, + "source_path": "save/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_GRU_H_16_F_200_P_994.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_GRU_H_16_F_200_P_994.csv", + "sha256": "f535a28e527eb0594ac0f01450ed8cbfdb685c72f19aee8705005b533e030a3e", + "size_bytes": 62248, + "source_path": "log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_GRU_H_16_F_200_P_994.csv" + } + }, + "completed_epochs": 300, + "method": "direct_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -51.0114043, + "aclr_left_db": -51.0559093, + "aclr_right_db": -50.9668993, + "evm_db": -47.42746888, + "loss": 1.52e-06, + "nmse_db": -45.13145 + }, + "validation": { + "aclr_avg_db": -51.32400487, + "aclr_left_db": -51.38568411, + "aclr_right_db": -51.26232562, + "evm_db": -47.68851727, + "loss": 1.5e-06, + "nmse_db": -45.17349 + } + }, + "model": { + "backbone": "gru", + "display_name": "GRU-H16", + "hidden_size": 16, + "model_id": "DPD_S_0_M_GRU_H_16_F_200_P_994", + "parameters": 994 + }, + "pa_checkpoint_binding": { + "checkpoint": "save/APA_200MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "dataset": "APA_200MHz", + "dpd_model_key": "gru", + "pa_model_key": "tres_gru", + "sha256": "fe08b5bdfa377af79bf1ea78fcfa0c96b10659bb050fe46ed2f3ef57dfcbc2eb" + }, + "selected_epoch_zero_based": 299, + "selected_learning_rate": 0.00015625, + "task": "dpd_training", + "train_loss": 2.17e-06 + }, + "mp": { + "artifact": { + "path": "benchmark_report_apa_dpd_mp.json", + "sha256": "8d24721c1e3783f2247b4906e9b50ecb2feefe0040e0c93cf5ea9c6562ee3640", + "size_bytes": 2893 + }, + "basis_configuration": { + "K": 5, + "Q": 100 + }, + "coefficient_l2_norm": 4.383342266082764, + "column_scale_max": 89.97786712646484, + "column_scale_min": 13.769466400146484, + "column_scaling": "l2", + "complex_coefficients": 500, + "condition_number": null, + "device": "cuda:0", + "dtype": "torch.complex64", + "full_rank_assumption": true, + "least_squares_rank": null, + "method": "indirect_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -45.185983122836305, + "aclr_left_db": -46.0739531814713, + "aclr_right_db": -44.2980130642013, + "evm_db": -48.15347693703668, + "nmse_db": -42.189632415771484 + }, + "validation": { + "aclr_avg_db": -44.922360391352086, + "aclr_left_db": -45.558971707171324, + "aclr_right_db": -44.28574907553285, + "evm_db": -48.18950883574672, + "nmse_db": -42.11494827270508 + } + }, + "model": { + "backbone": "mp", + "display_name": "MP", + "parameter_convention": "two real degrees of freedom per complex coefficient", + "parameters": 1000 + }, + "nperseg": 19662, + "pa_checkpoint_binding": { + "checkpoint": "save/APA_200MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "sha256": "fe08b5bdfa377af79bf1ea78fcfa0c96b10659bb050fe46ed2f3ef57dfcbc2eb" + }, + "pa_evaluation_device": "cuda:0", + "parameter_count_convention": "two real degrees of freedom per complex coefficient", + "real_parameters": 1000, + "regularization": null, + "retained_singular_value_min": null, + "sample_rate_hz": 983040000.0, + "singular_value_cutoff": null, + "singular_value_max": null, + "singular_value_min": null, + "solver": "torch.linalg.lstsq", + "solver_driver": "gels", + "solver_mode": "gels", + "svd_rcond": null, + "target_gain": 1.0, + "task": "dpd_ila", + "training_relative_residual": 0.011005041189491749 + }, + "tres_gru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.csv", + "sha256": "60137327bb949de2422c86587071a005d68ea78d94887801156a24c995483880", + "size_bytes": 427, + "source_path": "log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.pt", + "sha256": "b26552ffbafe8edcdfb6df66ec50f179b81644977f6c2f331f471d3f76b2d9fc", + "size_bytes": 7541, + "source_path": "save/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.csv", + "sha256": "11afe746632723165fbad0abc4fa4a854c5aa41587aa0d749939feac589de9e9", + "size_bytes": 63720, + "source_path": "log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.csv" + } + }, + "completed_epochs": 300, + "method": "direct_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -53.48793859, + "aclr_left_db": -53.46930447, + "aclr_right_db": -53.50657272, + "evm_db": -45.09727783, + "loss": 1.84e-06, + "nmse_db": -44.285923 + }, + "validation": { + "aclr_avg_db": -53.47358387, + "aclr_left_db": -53.20646222, + "aclr_right_db": -53.74070552, + "evm_db": -44.86538699, + "loss": 1.95e-06, + "nmse_db": -44.03681 + } + }, + "model": { + "backbone": "tres_gru", + "display_name": "TRes-GRU-H15", + "hidden_size": 15, + "model_id": "DPD_S_0_M_TRES_GRU_H_15_F_200_P_999", + "parameters": 999 + }, + "pa_checkpoint_binding": { + "checkpoint": "save/APA_200MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "dataset": "APA_200MHz", + "dpd_model_key": "tres_gru", + "pa_model_key": "tres_gru", + "sha256": "fe08b5bdfa377af79bf1ea78fcfa0c96b10659bb050fe46ed2f3ef57dfcbc2eb" + }, + "selected_epoch_zero_based": 296, + "selected_learning_rate": 5e-05, + "task": "dpd_training", + "train_loss": 3.05e-06 + } + }, + "dpd_tres_deltagru_by_pa_surrogate": { + "tres_deltagru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/best/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv", + "sha256": "deb1fd39e3fde771614e01641ae9af14f96be47df3343611a8a941f5fe53e478", + "size_bytes": 462, + "source_path": "log/APA_200MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/best/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/APA_200MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.pt", + "sha256": "3699df3ad1fee950281b945e3f43f40015ab6f79380113b35ba981a1cff6bf5c", + "size_bytes": 8160, + "source_path": "save/APA_200MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/history/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv", + "sha256": "61e1ea3e9d31edd7d8cd63be2994f52b7b636d359bc8907d33138ac8a1c5aa16", + "size_bytes": 71889, + "source_path": "log/APA_200MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/history/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv" + } + }, + "completed_epochs": 300, + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "method": "direct_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -54.40097617, + "aclr_left_db": -54.56885076, + "aclr_right_db": -54.23310159, + "evm_db": -49.69994504, + "loss": 7.9e-07, + "nmse_db": -47.970295 + }, + "validation": { + "aclr_avg_db": -54.48738132, + "aclr_left_db": -55.10222104, + "aclr_right_db": -53.87254159, + "evm_db": -49.82003181, + "loss": 8.1e-07, + "nmse_db": -47.85823 + } + }, + "model": { + "backbone": "tres_deltagru", + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "display_name": "TRes-DeltaGRU-H15 (THX=THH=0)", + "hidden_size": 15, + "model_id": "DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000", + "parameters": 999 + }, + "pa_checkpoint_binding": { + "checkpoint": "save/APA_200MHz/train_pa/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.pt", + "dataset": "APA_200MHz", + "dpd_model_key": "tres_deltagru", + "pa_model_key": "tres_deltagru", + "sha256": "b9451d33c6c4433e5c5d5a1326ab80299fe4ac51d07329e00dab183eece22650" + }, + "pa_surrogate": { + "checkpoint": "save/APA_200MHz/train_pa/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.pt", + "checkpoint_sha256": "b9451d33c6c4433e5c5d5a1326ab80299fe4ac51d07329e00dab183eece22650", + "model": { + "backbone": "tres_deltagru", + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "display_name": "TRes-DeltaGRU-H27 (THX=THH=0)", + "hidden_size": 27, + "model_id": "PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751", + "parameters": 2751 + }, + "model_key": "tres_deltagru", + "selection_metric": "validation NMSE" + }, + "selected_epoch_zero_based": 296, + "selected_learning_rate": 5e-05, + "task": "dpd_training", + "train_loss": 1.51e-06 + }, + "tres_gru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv", + "sha256": "88afdf9d220f1445798caf7722627d4396e52849a04fd961c03a75bc3de0ca79", + "size_bytes": 462, + "source_path": "log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.pt", + "sha256": "8fc444b84bf85c7935f9d842b8753a8cdb9030672d0d5c61a5a1d8fb45d0f411", + "size_bytes": 8160, + "source_path": "save/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv", + "sha256": "fa350b8ac3620ed1abba12adffe797ca3c5c81fe3d10dbfd7488fe139369970a", + "size_bytes": 71864, + "source_path": "log/APA_200MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv" + } + }, + "completed_epochs": 300, + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "method": "direct_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -53.64353511, + "aclr_left_db": -53.87717378, + "aclr_right_db": -53.40989644, + "evm_db": -48.26290132, + "loss": 1.01e-06, + "nmse_db": -46.91838 + }, + "validation": { + "aclr_avg_db": -53.2897953, + "aclr_left_db": -53.47258954, + "aclr_right_db": -53.10700107, + "evm_db": -48.34864182, + "loss": 1.02e-06, + "nmse_db": -46.847137 + } + }, + "model": { + "backbone": "tres_deltagru", + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "display_name": "TRes-DeltaGRU-H15 (THX=THH=0)", + "hidden_size": 15, + "model_id": "DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000", + "parameters": 999 + }, + "pa_checkpoint_binding": { + "checkpoint": "save/APA_200MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "dataset": "APA_200MHz", + "dpd_model_key": "tres_deltagru", + "pa_model_key": "tres_gru", + "sha256": "fe08b5bdfa377af79bf1ea78fcfa0c96b10659bb050fe46ed2f3ef57dfcbc2eb" + }, + "pa_surrogate": { + "checkpoint": "save/APA_200MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "checkpoint_sha256": "fe08b5bdfa377af79bf1ea78fcfa0c96b10659bb050fe46ed2f3ef57dfcbc2eb", + "model": { + "backbone": "tres_gru", + "display_name": "TRes-GRU-H27", + "hidden_size": 27, + "model_id": "PA_S_0_M_TRES_GRU_H_27_F_200_P_2751", + "parameters": 2751 + }, + "model_key": "tres_gru", + "selection_metric": "validation NMSE" + }, + "selected_epoch_zero_based": 264, + "selected_learning_rate": 5e-05, + "task": "dpd_training", + "train_loss": 2.13e-06 + } + }, + "pa_models": { + "gmp": { + "artifact": { + "path": "benchmark_report_apa_pa_gmp.json", + "sha256": "e9e22d371ce762aa35667760df5cfb782747f0b6b6f9c6391e7f807dce421943", + "size_bytes": 2803 + }, + "basis_configuration": { + "Ka": 5, + "Kb": 4, + "Kc": 4, + "La": 30, + "Lb": 30, + "Lc": 30, + "Mb": 5, + "Mc": 5 + }, + "coefficient_l2_norm": 7.8917012214660645, + "column_scale_max": 76.96764373779297, + "column_scale_min": 3.718569040298462, + "column_scaling": "l2", + "complex_coefficients": 1350, + "condition_number": 4101974003.5174985, + "device": "cuda:0", + "dtype": "torch.complex64", + "full_rank_assumption": false, + "least_squares_rank": 650, + "method": "direct_least_squares", + "metrics": { + "test": { + "aclr_avg_db": -27.70622397315019, + "aclr_left_db": -27.783035363162686, + "aclr_right_db": -27.629412583137697, + "evm_db": -42.797116668332876, + "nmse_db": -38.66061984321832 + }, + "validation": { + "aclr_avg_db": -27.409084690382358, + "aclr_left_db": -27.40526404384027, + "aclr_right_db": -27.412905336924446, + "evm_db": -43.053951759619196, + "nmse_db": -38.7019771115391 + } + }, + "model": { + "backbone": "gmp", + "display_name": "GMP", + "parameter_convention": "two real degrees of freedom per complex coefficient", + "parameters": 2700 + }, + "nperseg": 19662, + "pa_checkpoint_binding": null, + "pa_evaluation_device": null, + "parameter_count_convention": "two real degrees of freedom per complex coefficient", + "real_parameters": 2700, + "regularization": "truncated_svd", + "retained_singular_value_min": 0.0013197693042457104, + "sample_rate_hz": 983040000.0, + "singular_value_cutoff": 0.0012831207275390626, + "singular_value_max": 12.831207275390625, + "singular_value_min": 3.1280567025504524e-09, + "solver": "torch.linalg.svd", + "solver_driver": "gesvdj", + "solver_mode": "truncated_svd", + "svd_rcond": 0.0001, + "target_gain": 1.0, + "task": "pa_modeling", + "training_relative_residual": 0.011340372264385223 + }, + "gru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_pa/best/PA_S_0_M_GRU_H_28_F_200_P_2746.csv", + "sha256": "7adb1c12e1a2e484c9426de6f31f70c9735e5b9e15efb686ec28be9bbbdc775d", + "size_bytes": 421, + "source_path": "log/APA_200MHz/train_pa/best/PA_S_0_M_GRU_H_28_F_200_P_2746.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/APA_200MHz/train_pa/PA_S_0_M_GRU_H_28_F_200_P_2746.pt", + "sha256": "71de3649529e335fde4d26d231728baf7e3d3b837d23a7e60768a62979312cb7", + "size_bytes": 13808, + "source_path": "save/APA_200MHz/train_pa/PA_S_0_M_GRU_H_28_F_200_P_2746.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_pa/history/PA_S_0_M_GRU_H_28_F_200_P_2746.csv", + "sha256": "3ada71d8783b7ec1475ea68fe2bcd33bb4931ecc6452be639bd423c1f58a4c9d", + "size_bytes": 62253, + "source_path": "log/APA_200MHz/train_pa/history/PA_S_0_M_GRU_H_28_F_200_P_2746.csv" + } + }, + "completed_epochs": 300, + "method": "supervised_training", + "metrics": { + "test": { + "aclr_avg_db": -27.67541149, + "aclr_left_db": -27.67831335, + "aclr_right_db": -27.67250962, + "evm_db": -43.57318158, + "loss": 8.64e-06, + "nmse_db": -38.93669 + }, + "validation": { + "aclr_avg_db": -27.38332431, + "aclr_left_db": -27.34550046, + "aclr_right_db": -27.42114816, + "evm_db": -43.63170309, + "loss": 8.78e-06, + "nmse_db": -38.85041 + } + }, + "model": { + "backbone": "gru", + "display_name": "GRU-H28", + "hidden_size": 28, + "model_id": "PA_S_0_M_GRU_H_28_F_200_P_2746", + "parameters": 2746 + }, + "selected_epoch_zero_based": 292, + "selected_learning_rate": 5e-05, + "task": "pa_modeling", + "train_loss": 1.486e-05 + }, + "mp": { + "artifact": { + "path": "benchmark_report_apa_pa_mp.json", + "sha256": "dc056f90d336dbaa5e6218cdf236d58133c191508e6ceb90303faccba63e1a6d", + "size_bytes": 2518 + }, + "basis_configuration": { + "K": 9, + "Q": 150 + }, + "coefficient_l2_norm": 1649.8330078125, + "column_scale_max": 76.96764373779297, + "column_scale_min": 3.0452980995178223, + "column_scaling": "l2", + "complex_coefficients": 1350, + "condition_number": null, + "device": "cuda:0", + "dtype": "torch.complex64", + "full_rank_assumption": true, + "least_squares_rank": null, + "method": "direct_least_squares", + "metrics": { + "test": { + "aclr_avg_db": -27.831701026650798, + "aclr_left_db": -27.886854192144813, + "aclr_right_db": -27.776547861156786, + "evm_db": -39.95707758634159, + "nmse_db": -36.963532286352084 + }, + "validation": { + "aclr_avg_db": -27.38812910025664, + "aclr_left_db": -27.405965138204177, + "aclr_right_db": -27.37029306230911, + "evm_db": -40.23019407942715, + "nmse_db": -37.040538398646866 + } + }, + "model": { + "backbone": "mp", + "display_name": "MP", + "parameter_convention": "two real degrees of freedom per complex coefficient", + "parameters": 2700 + }, + "nperseg": 19662, + "pa_checkpoint_binding": null, + "pa_evaluation_device": null, + "parameter_count_convention": "two real degrees of freedom per complex coefficient", + "real_parameters": 2700, + "regularization": null, + "retained_singular_value_min": null, + "sample_rate_hz": 983040000.0, + "singular_value_cutoff": null, + "singular_value_max": null, + "singular_value_min": null, + "solver": "torch.linalg.lstsq", + "solver_driver": "gels", + "solver_mode": "gels", + "svd_rcond": null, + "target_gain": 1.0, + "task": "pa_modeling", + "training_relative_residual": 0.013689383864402771 + }, + "tres_deltagru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_pa/best/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.csv", + "sha256": "b71d9051ce4ee78ec8a223abf93cb2730c3f4bfa6e5a81d603bef1ec53f52410", + "size_bytes": 463, + "source_path": "log/APA_200MHz/train_pa/best/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/APA_200MHz/train_pa/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.pt", + "sha256": "b9451d33c6c4433e5c5d5a1326ab80299fe4ac51d07329e00dab183eece22650", + "size_bytes": 14596, + "source_path": "save/APA_200MHz/train_pa/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_pa/history/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.csv", + "sha256": "3c938909f1f9c247499a7a07c401a7385680db95844788eca9a8e61cec294236", + "size_bytes": 71953, + "source_path": "log/APA_200MHz/train_pa/history/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.csv" + } + }, + "completed_epochs": 300, + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "method": "supervised_training", + "metrics": { + "test": { + "aclr_avg_db": -27.6760638, + "aclr_left_db": -27.68001247, + "aclr_right_db": -27.67211513, + "evm_db": -43.96833133, + "loss": 8.18e-06, + "nmse_db": -39.177734 + }, + "validation": { + "aclr_avg_db": -27.41638323, + "aclr_left_db": -27.3872018, + "aclr_right_db": -27.44556465, + "evm_db": -44.0254212, + "loss": 8.3e-06, + "nmse_db": -39.09286 + } + }, + "model": { + "backbone": "tres_deltagru", + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "display_name": "TRes-DeltaGRU-H27 (THX=THH=0)", + "hidden_size": 27, + "model_id": "PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751", + "parameters": 2751 + }, + "selected_epoch_zero_based": 294, + "selected_learning_rate": 5e-05, + "task": "pa_modeling", + "train_loss": 1.417e-05 + }, + "tres_gru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_pa/best/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.csv", + "sha256": "e0961441c4d10dd6292420c2032b7dff6083f24d7ba4976f7ef666351749fae5", + "size_bytes": 427, + "source_path": "log/APA_200MHz/train_pa/best/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/APA_200MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "sha256": "fe08b5bdfa377af79bf1ea78fcfa0c96b10659bb050fe46ed2f3ef57dfcbc2eb", + "size_bytes": 14773, + "source_path": "save/APA_200MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/APA_200MHz/train_pa/history/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.csv", + "sha256": "4a01e2a3108a95b63af42c5a9f1035cfd6992c53a651f60efb2b21a48fadd2be", + "size_bytes": 63772, + "source_path": "log/APA_200MHz/train_pa/history/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.csv" + } + }, + "completed_epochs": 300, + "method": "supervised_training", + "metrics": { + "test": { + "aclr_avg_db": -27.69532568, + "aclr_left_db": -27.75026686, + "aclr_right_db": -27.64038451, + "evm_db": -43.92993785, + "loss": 8.27e-06, + "nmse_db": -39.12926 + }, + "validation": { + "aclr_avg_db": -27.40869864, + "aclr_left_db": -27.40999309, + "aclr_right_db": -27.40740419, + "evm_db": -43.91182816, + "loss": 8.39e-06, + "nmse_db": -39.044727 + } + }, + "model": { + "backbone": "tres_gru", + "display_name": "TRes-GRU-H27", + "hidden_size": 27, + "model_id": "PA_S_0_M_TRES_GRU_H_27_F_200_P_2751", + "parameters": 2751 + }, + "selected_epoch_zero_based": 288, + "selected_learning_rate": 5e-05, + "task": "pa_modeling", + "train_loss": 1.415e-05 + } + }, + "reference_pa": { + "checkpoint": "save/APA_200MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "checkpoint_sha256": "fe08b5bdfa377af79bf1ea78fcfa0c96b10659bb050fe46ed2f3ef57dfcbc2eb", + "model_key": "tres_gru", + "selection_metric": "validation NMSE" + }, + "signal": { + "dataset_file_sha256": { + "datasets/APA_200MHz/test_input.csv": "5027d3d69391ed22ad79c410831bdfed47b25045088dda0756801cf591c947bf", + "datasets/APA_200MHz/test_output.csv": "991c1f97f38e57c7f3614dd3f23c411791e03d5eb5eae67492455cf9e94820f6", + "datasets/APA_200MHz/train_input.csv": "2ca703c9e7eb39839db1fb01f91081a86e18535e53751c587cc71d2d71e9c625", + "datasets/APA_200MHz/train_output.csv": "e760adf3908ed1be1e610c46f056e88bad6107a81cc8b01d91306727316b5930", + "datasets/APA_200MHz/val_input.csv": "39bb15c9bd92549d1653498c140caff5cb2f20edffd433eafa46b4a81c491981", + "datasets/APA_200MHz/val_output.csv": "02f67574444c7a8ba321cde1ea919c07fef1c99fb9d25678befc019c6b6645e2" + }, + "papr": { + "absolute_peak_db": 10.010544625499463, + "ccdf_db": 10.007981673494797, + "ccdf_probability": 1e-05, + "quantile_method": "numpy linear" + }, + "samples": 98304, + "target_gain": 1.0 + }, + "spec_sha256": "edaf447bc2d59c2cf10df4ad5bececf057bd8822a45864ec8959ddea1a0ebf9a" + }, + "DPA_160MHz": { + "dpd_models": { + "gmp": { + "artifact": { + "path": "benchmark_report_dpa_dpd_gmp.json", + "sha256": "56aef7fbcb816485d0d1339ed2a5bd068d609308a21d144203953ce2778328a2", + "size_bytes": 2998 + }, + "basis_configuration": { + "Ka": 5, + "Kb": 4, + "Kc": 4, + "La": 20, + "Lb": 20, + "Lc": 20, + "Mb": 3, + "Mc": 2 + }, + "coefficient_l2_norm": 19.907581329345703, + "column_scale_max": 210.84939575195312, + "column_scale_min": 24.099092483520508, + "column_scaling": "l2", + "complex_coefficients": 500, + "condition_number": null, + "device": "cuda:0", + "dtype": "torch.complex64", + "full_rank_assumption": true, + "least_squares_rank": null, + "method": "indirect_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -53.112459466114444, + "aclr_left_db": -52.616658084847344, + "aclr_right_db": -53.608260847381544, + "evm_db": -50.188747977606816, + "nmse_db": -43.97211837768555 + }, + "validation": { + "aclr_avg_db": -52.78473824545991, + "aclr_left_db": -52.35719844738584, + "aclr_right_db": -53.212278043533985, + "evm_db": -50.12855174608197, + "nmse_db": -44.266239166259766 + } + }, + "model": { + "backbone": "gmp", + "display_name": "GMP", + "parameter_convention": "two real degrees of freedom per complex coefficient", + "parameters": 1000 + }, + "nperseg": 16384, + "pa_checkpoint_binding": { + "checkpoint": "save/DPA_160MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "sha256": "e09da8eebdbf35746975ebf5013f6eb82d02adea3c9545bd50fe88a2bfe6ce6d" + }, + "pa_evaluation_device": "cuda:0", + "parameter_count_convention": "two real degrees of freedom per complex coefficient", + "real_parameters": 1000, + "regularization": null, + "retained_singular_value_min": null, + "sample_rate_hz": 640000000.0, + "singular_value_cutoff": null, + "singular_value_max": null, + "singular_value_min": null, + "solver": "torch.linalg.lstsq", + "solver_driver": "gels", + "solver_mode": "gels", + "svd_rcond": null, + "target_gain": 2.295543024968947, + "task": "dpd_ila", + "training_relative_residual": 0.01053396426141262 + }, + "gru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_GRU_H_16_F_200_P_994.csv", + "sha256": "0d5e9c035a56606e6eeaedd6752fc3e760b3c3490f6739d57c471375a84b3cde", + "size_bytes": 424, + "source_path": "log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_GRU_H_16_F_200_P_994.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_GRU_H_16_F_200_P_994.pt", + "sha256": "a7764785b413476b59d5f5e9528de2c8784b9abfa11f36a89383d836452dda9b", + "size_bytes": 6832, + "source_path": "save/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_GRU_H_16_F_200_P_994.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_GRU_H_16_F_200_P_994.csv", + "sha256": "0d5ab7a838ed9b7b2442d04efa0770da9c7ff7c707b67739d6ada72cc1593902", + "size_bytes": 62460, + "source_path": "log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_GRU_H_16_F_200_P_994.csv" + } + }, + "completed_epochs": 300, + "method": "direct_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -57.26420765, + "aclr_left_db": -57.675965, + "aclr_right_db": -56.85245031, + "evm_db": -53.97904848, + "loss": 2.95e-06, + "nmse_db": -49.760174 + }, + "validation": { + "aclr_avg_db": -57.35296233, + "aclr_left_db": -57.60844419, + "aclr_right_db": -57.09748047, + "evm_db": -53.73140247, + "loss": 2.9e-06, + "nmse_db": -49.905857 + } + }, + "model": { + "backbone": "gru", + "display_name": "GRU-H16", + "hidden_size": 16, + "model_id": "DPD_S_0_M_GRU_H_16_F_200_P_994", + "parameters": 994 + }, + "pa_checkpoint_binding": { + "checkpoint": "save/DPA_160MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "dataset": "DPA_160MHz", + "dpd_model_key": "gru", + "pa_model_key": "tres_gru", + "sha256": "e09da8eebdbf35746975ebf5013f6eb82d02adea3c9545bd50fe88a2bfe6ce6d" + }, + "selected_epoch_zero_based": 297, + "selected_learning_rate": 5e-05, + "task": "dpd_training", + "train_loss": 1.097e-05 + }, + "mp": { + "artifact": { + "path": "benchmark_report_dpa_dpd_mp.json", + "sha256": "3a1353f590f28c9c4a058315fcedade248f55976912762e142e3fed6d5a6da57", + "size_bytes": 2908 + }, + "basis_configuration": { + "K": 5, + "Q": 100 + }, + "coefficient_l2_norm": 3.943410873413086, + "column_scale_max": 210.84939575195312, + "column_scale_min": 38.87131118774414, + "column_scaling": "l2", + "complex_coefficients": 500, + "condition_number": null, + "device": "cuda:0", + "dtype": "torch.complex64", + "full_rank_assumption": true, + "least_squares_rank": null, + "method": "indirect_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -50.9351411277973, + "aclr_left_db": -49.44417246777463, + "aclr_right_db": -52.426109787819975, + "evm_db": -50.50021219066906, + "nmse_db": -43.193756103515625 + }, + "validation": { + "aclr_avg_db": -50.63197307642169, + "aclr_left_db": -49.06701086616408, + "aclr_right_db": -52.19693528667929, + "evm_db": -50.42040796343259, + "nmse_db": -43.55812072753906 + } + }, + "model": { + "backbone": "mp", + "display_name": "MP", + "parameter_convention": "two real degrees of freedom per complex coefficient", + "parameters": 1000 + }, + "nperseg": 16384, + "pa_checkpoint_binding": { + "checkpoint": "save/DPA_160MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "sha256": "e09da8eebdbf35746975ebf5013f6eb82d02adea3c9545bd50fe88a2bfe6ce6d" + }, + "pa_evaluation_device": "cuda:0", + "parameter_count_convention": "two real degrees of freedom per complex coefficient", + "real_parameters": 1000, + "regularization": null, + "retained_singular_value_min": null, + "sample_rate_hz": 640000000.0, + "singular_value_cutoff": null, + "singular_value_max": null, + "singular_value_min": null, + "solver": "torch.linalg.lstsq", + "solver_driver": "gels", + "solver_mode": "gels", + "svd_rcond": null, + "target_gain": 2.295543024968947, + "task": "dpd_ila", + "training_relative_residual": 0.010844217613339424 + }, + "tres_gru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.csv", + "sha256": "58a96914a057b9e4a58468d8a84f65c435e6f65da932c94fe03a2ab0b2a1d1ed", + "size_bytes": 428, + "source_path": "log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.pt", + "sha256": "751b9a9228713a3a25fc5bef2ca6e45e6a4e5bbd979651ea5666657b03fa5062", + "size_bytes": 7541, + "source_path": "save/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.csv", + "sha256": "d685adb6158f233b9f77f34a5d2375f66caadccbc65a49e1c6ebede68abde8d2", + "size_bytes": 63950, + "source_path": "log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_TRES_GRU_H_15_F_200_P_999.csv" + } + }, + "completed_epochs": 300, + "method": "direct_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -60.37169906, + "aclr_left_db": -60.27122719, + "aclr_right_db": -60.47217092, + "evm_db": -57.84510577, + "loss": 1.32e-06, + "nmse_db": -53.19377 + }, + "validation": { + "aclr_avg_db": -60.74250569, + "aclr_left_db": -60.45794513, + "aclr_right_db": -61.02706624, + "evm_db": -57.14251367, + "loss": 1.44e-06, + "nmse_db": -52.910625 + } + }, + "model": { + "backbone": "tres_gru", + "display_name": "TRes-GRU-H15", + "hidden_size": 15, + "model_id": "DPD_S_0_M_TRES_GRU_H_15_F_200_P_999", + "parameters": 999 + }, + "pa_checkpoint_binding": { + "checkpoint": "save/DPA_160MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "dataset": "DPA_160MHz", + "dpd_model_key": "tres_gru", + "pa_model_key": "tres_gru", + "sha256": "e09da8eebdbf35746975ebf5013f6eb82d02adea3c9545bd50fe88a2bfe6ce6d" + }, + "selected_epoch_zero_based": 296, + "selected_learning_rate": 5e-05, + "task": "dpd_training", + "train_loss": 1.49e-06 + } + }, + "dpd_tres_deltagru_by_pa_surrogate": { + "tres_deltagru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/best/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv", + "sha256": "8c583529041e534dc5cb1fbcd54c06d12f7578342c12309684da7c70521ef7d7", + "size_bytes": 464, + "source_path": "log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/best/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/DPA_160MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.pt", + "sha256": "a3cdb6bdf7c2fccb9a0bb7daa8fad29c659632bc6355287ad60fe199e3197e2e", + "size_bytes": 8160, + "source_path": "save/DPA_160MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/history/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv", + "sha256": "dd135e3d4951358d37f84799b2b4752f92da9e4fb5798a34b7ff4ddddcfa5d2d", + "size_bytes": 72065, + "source_path": "log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_DELTAGRU_H_27_F_200/history/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv" + } + }, + "completed_epochs": 300, + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "method": "direct_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -61.65856766, + "aclr_left_db": -61.4514239, + "aclr_right_db": -61.86571143, + "evm_db": -59.39778461, + "loss": 1e-06, + "nmse_db": -54.372208 + }, + "validation": { + "aclr_avg_db": -61.92533611, + "aclr_left_db": -61.54620906, + "aclr_right_db": -62.30446316, + "evm_db": -58.24780618, + "loss": 1.11e-06, + "nmse_db": -54.115932 + } + }, + "model": { + "backbone": "tres_deltagru", + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "display_name": "TRes-DeltaGRU-H15 (THX=THH=0)", + "hidden_size": 15, + "model_id": "DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000", + "parameters": 999 + }, + "pa_checkpoint_binding": { + "checkpoint": "save/DPA_160MHz/train_pa/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.pt", + "dataset": "DPA_160MHz", + "dpd_model_key": "tres_deltagru", + "pa_model_key": "tres_deltagru", + "sha256": "980f4f8eb48da7d96bf5b0ce6b348755398263cc34a83fea8209dec45d0d45a7" + }, + "pa_surrogate": { + "checkpoint": "save/DPA_160MHz/train_pa/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.pt", + "checkpoint_sha256": "980f4f8eb48da7d96bf5b0ce6b348755398263cc34a83fea8209dec45d0d45a7", + "model": { + "backbone": "tres_deltagru", + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "display_name": "TRes-DeltaGRU-H27 (THX=THH=0)", + "hidden_size": 27, + "model_id": "PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751", + "parameters": 2751 + }, + "model_key": "tres_deltagru", + "selection_metric": "validation NMSE" + }, + "selected_epoch_zero_based": 293, + "selected_learning_rate": 0.00015625, + "task": "dpd_training", + "train_loss": 1.15e-06 + }, + "tres_gru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv", + "sha256": "549232530b4ddba266549b6ec4d6d36b329998bf625b8763fd20f91ee0cd6d4f", + "size_bytes": 464, + "source_path": "log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/best/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.pt", + "sha256": "f69815ba379e01c1f492e906af021282d6045854ae1860e6c1b6aae0a611b64f", + "size_bytes": 8160, + "source_path": "save/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv", + "sha256": "f0614b1f2a87acd1a0573388af81e71131aacea773404826bd80f24c29052f04", + "size_bytes": 72105, + "source_path": "log/DPA_160MHz/train_dpd/PA_S_0_M_TRES_GRU_H_27_F_200/history/DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000.csv" + } + }, + "completed_epochs": 300, + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "method": "direct_learning_architecture", + "metrics": { + "test": { + "aclr_avg_db": -61.04416081, + "aclr_left_db": -60.57591376, + "aclr_right_db": -61.51240785, + "evm_db": -58.84856644, + "loss": 1.03e-06, + "nmse_db": -54.244564 + }, + "validation": { + "aclr_avg_db": -61.54248186, + "aclr_left_db": -61.01506389, + "aclr_right_db": -62.06989982, + "evm_db": -57.93123352, + "loss": 1.15e-06, + "nmse_db": -53.868393 + } + }, + "model": { + "backbone": "tres_deltagru", + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "display_name": "TRes-DeltaGRU-H15 (THX=THH=0)", + "hidden_size": 15, + "model_id": "DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000", + "parameters": 999 + }, + "pa_checkpoint_binding": { + "checkpoint": "save/DPA_160MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "dataset": "DPA_160MHz", + "dpd_model_key": "tres_deltagru", + "pa_model_key": "tres_gru", + "sha256": "e09da8eebdbf35746975ebf5013f6eb82d02adea3c9545bd50fe88a2bfe6ce6d" + }, + "pa_surrogate": { + "checkpoint": "save/DPA_160MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "checkpoint_sha256": "e09da8eebdbf35746975ebf5013f6eb82d02adea3c9545bd50fe88a2bfe6ce6d", + "model": { + "backbone": "tres_gru", + "display_name": "TRes-GRU-H27", + "hidden_size": 27, + "model_id": "PA_S_0_M_TRES_GRU_H_27_F_200_P_2751", + "parameters": 2751 + }, + "model_key": "tres_gru", + "selection_metric": "validation NMSE" + }, + "selected_epoch_zero_based": 295, + "selected_learning_rate": 7.813e-05, + "task": "dpd_training", + "train_loss": 1.29e-06 + } + }, + "pa_models": { + "gmp": { + "artifact": { + "path": "benchmark_report_dpa_pa_gmp.json", + "sha256": "070485cf88eebe45fbb0337976e315a03c31b56b1c50ace22522d4803506f885", + "size_bytes": 2818 + }, + "basis_configuration": { + "Ka": 5, + "Kb": 4, + "Kc": 4, + "La": 30, + "Lb": 30, + "Lc": 30, + "Mb": 5, + "Mc": 5 + }, + "coefficient_l2_norm": 10.034621238708496, + "column_scale_max": 165.83279418945312, + "column_scale_min": 7.7007365226745605, + "column_scaling": "l2", + "complex_coefficients": 1350, + "condition_number": 1985705.7386572887, + "device": "cuda:0", + "dtype": "torch.complex64", + "full_rank_assumption": false, + "least_squares_rank": 918, + "method": "direct_least_squares", + "metrics": { + "test": { + "aclr_avg_db": -34.80149418436232, + "aclr_left_db": -35.08585122730327, + "aclr_right_db": -34.517137141421365, + "evm_db": -42.38386821531598, + "nmse_db": -39.40143419744728 + }, + "validation": { + "aclr_avg_db": -34.63113398986266, + "aclr_left_db": -34.9108251117308, + "aclr_right_db": -34.35144286799453, + "evm_db": -41.65365023479418, + "nmse_db": -38.908763378736715 + } + }, + "model": { + "backbone": "gmp", + "display_name": "GMP", + "parameter_convention": "two real degrees of freedom per complex coefficient", + "parameters": 2700 + }, + "nperseg": 16384, + "pa_checkpoint_binding": null, + "pa_evaluation_device": null, + "parameter_count_convention": "two real degrees of freedom per complex coefficient", + "real_parameters": 2700, + "regularization": "truncated_svd", + "retained_singular_value_min": 0.0011493448400869966, + "sample_rate_hz": 640000000.0, + "singular_value_cutoff": 0.0011460232734680177, + "singular_value_max": 11.460232734680176, + "singular_value_min": 5.771365067630541e-06, + "solver": "torch.linalg.svd", + "solver_driver": "gesvdj", + "solver_mode": "truncated_svd", + "svd_rcond": 0.0001, + "target_gain": 2.295543024968947, + "task": "pa_modeling", + "training_relative_residual": 0.010578107088804245 + }, + "gru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_pa/best/PA_S_0_M_GRU_H_28_F_200_P_2746.csv", + "sha256": "7c5be39701ff59e16bdb4e23a4ad714adfdb611b6dd5a09b9079ae600016f6b3", + "size_bytes": 421, + "source_path": "log/DPA_160MHz/train_pa/best/PA_S_0_M_GRU_H_28_F_200_P_2746.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/DPA_160MHz/train_pa/PA_S_0_M_GRU_H_28_F_200_P_2746.pt", + "sha256": "c1d1dc696df19d7519def6dda23a22fcc82589224d43e5caef85cd84a573851f", + "size_bytes": 13808, + "source_path": "save/DPA_160MHz/train_pa/PA_S_0_M_GRU_H_28_F_200_P_2746.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_pa/history/PA_S_0_M_GRU_H_28_F_200_P_2746.csv", + "sha256": "5c8a49387a5b08af6eb09f044315011142dd642fd780277bac36f031ccedd95e", + "size_bytes": 62434, + "source_path": "log/DPA_160MHz/train_pa/history/PA_S_0_M_GRU_H_28_F_200_P_2746.csv" + } + }, + "completed_epochs": 300, + "method": "supervised_training", + "metrics": { + "test": { + "aclr_avg_db": -34.83799881, + "aclr_left_db": -35.03673896, + "aclr_right_db": -34.63925866, + "evm_db": -42.82822831, + "loss": 4.992e-05, + "nmse_db": -39.49081 + }, + "validation": { + "aclr_avg_db": -34.76237982, + "aclr_left_db": -34.95988762, + "aclr_right_db": -34.56487201, + "evm_db": -42.19929651, + "loss": 5.342e-05, + "nmse_db": -39.080143 + } + }, + "model": { + "backbone": "gru", + "display_name": "GRU-H28", + "hidden_size": 28, + "model_id": "PA_S_0_M_GRU_H_28_F_200_P_2746", + "parameters": 2746 + }, + "selected_epoch_zero_based": 34, + "selected_learning_rate": 0.00125, + "task": "pa_modeling", + "train_loss": 7.127e-05 + }, + "mp": { + "artifact": { + "path": "benchmark_report_dpa_pa_mp.json", + "sha256": "a5a6cb62b210f6e22f4107ec3f17338aafc3ac351c54b8ebda6dd88620c1ba0f", + "size_bytes": 2539 + }, + "basis_configuration": { + "K": 9, + "Q": 150 + }, + "coefficient_l2_norm": 1562.5501708984375, + "column_scale_max": 165.83279418945312, + "column_scale_min": 8.192251205444336, + "column_scaling": "l2", + "complex_coefficients": 1350, + "condition_number": null, + "device": "cuda:0", + "dtype": "torch.complex64", + "full_rank_assumption": true, + "least_squares_rank": null, + "method": "direct_least_squares", + "metrics": { + "test": { + "aclr_avg_db": -34.89261561507139, + "aclr_left_db": -35.144338147000205, + "aclr_right_db": -34.640893083142586, + "evm_db": -40.903476587562324, + "nmse_db": -38.350608084028664 + }, + "validation": { + "aclr_avg_db": -34.70183472040674, + "aclr_left_db": -34.931857098557934, + "aclr_right_db": -34.47181234225553, + "evm_db": -40.39402625607741, + "nmse_db": -37.98229716673007 + } + }, + "model": { + "backbone": "mp", + "display_name": "MP", + "parameter_convention": "two real degrees of freedom per complex coefficient", + "parameters": 2700 + }, + "nperseg": 16384, + "pa_checkpoint_binding": null, + "pa_evaluation_device": null, + "parameter_count_convention": "two real degrees of freedom per complex coefficient", + "real_parameters": 2700, + "regularization": null, + "retained_singular_value_min": null, + "sample_rate_hz": 640000000.0, + "singular_value_cutoff": null, + "singular_value_max": null, + "singular_value_min": null, + "solver": "torch.linalg.lstsq", + "solver_driver": "gels", + "solver_mode": "gels", + "svd_rcond": null, + "target_gain": 2.295543024968947, + "task": "pa_modeling", + "training_relative_residual": 0.011598878540098667 + }, + "tres_deltagru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_pa/best/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.csv", + "sha256": "cce446f3d8d7d7d49b9c9c72f5cb9091d53c5c7c70637ed42335d3bdfbc45b90", + "size_bytes": 462, + "source_path": "log/DPA_160MHz/train_pa/best/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/DPA_160MHz/train_pa/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.pt", + "sha256": "980f4f8eb48da7d96bf5b0ce6b348755398263cc34a83fea8209dec45d0d45a7", + "size_bytes": 14596, + "source_path": "save/DPA_160MHz/train_pa/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_pa/history/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.csv", + "sha256": "d315bfcd3c3f823a44a5b0e7974191139c3315cf20535b90f6696dd4b55bbadf", + "size_bytes": 72059, + "source_path": "log/DPA_160MHz/train_pa/history/PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751.csv" + } + }, + "completed_epochs": 300, + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "method": "supervised_training", + "metrics": { + "test": { + "aclr_avg_db": -34.89409696, + "aclr_left_db": -35.14318315, + "aclr_right_db": -34.64501077, + "evm_db": -43.31956339, + "loss": 4.677e-05, + "nmse_db": -39.735275 + }, + "validation": { + "aclr_avg_db": -34.70573261, + "aclr_left_db": -34.96491134, + "aclr_right_db": -34.44655387, + "evm_db": -42.96421325, + "loss": 4.832e-05, + "nmse_db": -39.480164 + } + }, + "model": { + "backbone": "tres_deltagru", + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "display_name": "TRes-DeltaGRU-H27 (THX=THH=0)", + "hidden_size": 27, + "model_id": "PA_S_0_M_TRES_DELTAGRU_H_27_F_200_P_2751", + "parameters": 2751 + }, + "selected_epoch_zero_based": 16, + "selected_learning_rate": 0.0025, + "task": "pa_modeling", + "train_loss": 5.689e-05 + }, + "tres_gru": { + "artifacts": { + "best_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_pa/best/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.csv", + "sha256": "b6abe61b2433d6d170b1c2483b97d3275e6f93642053baf894de4a25a69afc8c", + "size_bytes": 425, + "source_path": "log/DPA_160MHz/train_pa/best/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.csv" + }, + "checkpoint": { + "archived_path": "artifacts/save/DPA_160MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "sha256": "e09da8eebdbf35746975ebf5013f6eb82d02adea3c9545bd50fe88a2bfe6ce6d", + "size_bytes": 14773, + "source_path": "save/DPA_160MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt" + }, + "history_csv": { + "archived_path": "artifacts/log/DPA_160MHz/train_pa/history/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.csv", + "sha256": "19102ffefe250224113d0973e5a0e9cd1bb2de8375e9f93641c85c13faea3861", + "size_bytes": 63971, + "source_path": "log/DPA_160MHz/train_pa/history/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.csv" + } + }, + "completed_epochs": 300, + "method": "supervised_training", + "metrics": { + "test": { + "aclr_avg_db": -34.90779123, + "aclr_left_db": -35.15503937, + "aclr_right_db": -34.66054308, + "evm_db": -43.1446587, + "loss": 4.741e-05, + "nmse_db": -39.70443 + }, + "validation": { + "aclr_avg_db": -34.72994139, + "aclr_left_db": -34.99051361, + "aclr_right_db": -34.46936918, + "evm_db": -42.58117816, + "loss": 5.033e-05, + "nmse_db": -39.32285 + } + }, + "model": { + "backbone": "tres_gru", + "display_name": "TRes-GRU-H27", + "hidden_size": 27, + "model_id": "PA_S_0_M_TRES_GRU_H_27_F_200_P_2751", + "parameters": 2751 + }, + "selected_epoch_zero_based": 25, + "selected_learning_rate": 0.00125, + "task": "pa_modeling", + "train_loss": 5.561e-05 + } + }, + "reference_pa": { + "checkpoint": "save/DPA_160MHz/train_pa/PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt", + "checkpoint_sha256": "e09da8eebdbf35746975ebf5013f6eb82d02adea3c9545bd50fe88a2bfe6ce6d", + "model_key": "tres_gru", + "selection_metric": "validation NMSE" + }, + "signal": { + "dataset_file_sha256": { + "datasets/DPA_160MHz/test_input.csv": "7fb259816af61b34ce6a966858787ca164fd1aed287fafa6005c91ae4abcd5fb", + "datasets/DPA_160MHz/test_output.csv": "06eab1afc94c0ee3140cabc785ed1a81e7e3446d0a580aebc749c5853a1d07c5", + "datasets/DPA_160MHz/train_input.csv": "3de4709bcb4e9e5c155c075ab8e210de3b8545f73a43edaf05885b41a849a9d1", + "datasets/DPA_160MHz/train_output.csv": "e2d852dccac4f0db8934746f8c14aedb316edd5589c972d7a10d6dc85c0775c2", + "datasets/DPA_160MHz/val_input.csv": "ad04f3f272d6974429c7a5b6ee6bbcca91c180157066a5994ae7bb5912053c97", + "datasets/DPA_160MHz/val_output.csv": "efdfeb3d261a284024daa53378201917d1d7af96e128fa65a5c44c5266665c15" + }, + "papr": { + "absolute_peak_db": 10.139761791608466, + "ccdf_db": 10.131554833438559, + "ccdf_probability": 1e-05, + "quantile_method": "numpy linear" + }, + "samples": 491520, + "target_gain": 2.2955430249689464 + }, + "spec_sha256": "4e777ff275bd1b2676c5ffc6a34d3432b56aedb3ed78935734485f3f9c2f1e8b" + } + }, + "derived_artifacts": { + "benchmark_delta_dpd_results.png": { + "sha256": "cb2f7696c4654b0b735137c4498044edf756f10c6f57db6badb693899e8cdfa6", + "size_bytes": 112421 + }, + "benchmark_report.md": { + "sha256": "edd5a017414006e7b678e293ae1b7e3d61390b898e28e9e9f199e34a7c5a98d7", + "size_bytes": 13602 + }, + "benchmark_results.png": { + "sha256": "6bf8c8f61ba5664e6fd26ee849c6ac1718b8e238e1aff92fee7fe028379219e7", + "size_bytes": 201177 + } + }, + "environment": { + "cuda": "13.2", + "cudnn": 92000, + "gpu": "NVIDIA RTX PRO 6000 Blackwell Workstation Edition", + "gpu_device_index": 0, + "numpy": "2.5.1", + "pandas": "3.0.5", + "platform": "Linux-7.0.0-15-generic-x86_64-with-glibc2.43", + "python": "3.13.14", + "scipy": "1.18.0", + "torch": "2.13.0+cu132", + "training_cudnn_benchmark": true, + "training_deterministic_algorithms": false, + "training_reproducibility_level": "soft" + }, + "generated_at_utc": "2026-07-26T20:45:35.368238+00:00", + "git": { + "branch": "benchmark-fix", + "commit": "3df35e081e6e41463fa46f21778c72a748823274", + "dirty": true, + "status": [ + "M .gitignore", + " M arguments.py", + " D benchmark/BENCHMARK_FIX_PLAN.md", + " D benchmark/benchmark_end_to_end.py", + " M benchmark/benchmark_report.md", + " D benchmark/benchmark_training_speed.py", + " D benchmark/benchmark_training_speed_report.md", + " D benchmark/benchmark_tres_deltagru.py", + " D benchmark/benchmark_volterra_qr.py", + " D benchmark/pa_modeling_investigation.md", + " D benchmark/report/artifact.json", + " D benchmark/results/e2e_dpa200_stride16_comparison_eager.json", + " D benchmark/results/e2e_dpa200_stride16_comparison_fused.json", + " D benchmark/results/e2e_dpa200_stride16_comparison_graph.json", + " D benchmark/results/e2e_dpa200_stride16_eager_optimized/batch_orders.npz", + " D benchmark/results/e2e_dpa200_stride16_eager_optimized/outputs.npz", + " D benchmark/results/e2e_dpa200_stride16_eager_optimized/result.json", + " D benchmark/results/e2e_dpa200_stride16_fused_optimized/batch_orders.npz", + " D benchmark/results/e2e_dpa200_stride16_fused_optimized/outputs.npz", + " D benchmark/results/e2e_dpa200_stride16_fused_optimized/result.json", + " D benchmark/results/e2e_dpa200_stride16_graph_optimized/batch_orders.npz", + " D benchmark/results/e2e_dpa200_stride16_graph_optimized/outputs.npz", + " D benchmark/results/e2e_dpa200_stride16_graph_optimized/result.json", + " D benchmark/results/e2e_dpa200_stride16_original/batch_orders.npz", + " D benchmark/results/e2e_dpa200_stride16_original/outputs.npz", + " D benchmark/results/e2e_dpa200_stride16_original/result.json", + " D benchmark/results/e2e_dpa200_stride1_comparison_graph.json", + " D benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json", + " D benchmark/results/e2e_dpa200_stride1_graph_optimized/batch_orders.npz", + " D benchmark/results/e2e_dpa200_stride1_graph_optimized/outputs.npz", + " D benchmark/results/e2e_dpa200_stride1_graph_optimized/result.json", + " D benchmark/results/e2e_dpa200_stride1_graph_repeat/batch_orders.npz", + " D benchmark/results/e2e_dpa200_stride1_graph_repeat/outputs.npz", + " D benchmark/results/e2e_dpa200_stride1_graph_repeat/result.json", + " D benchmark/results/e2e_dpa200_stride1_original/batch_orders.npz", + " D benchmark/results/e2e_dpa200_stride1_original/outputs.npz", + " D benchmark/results/e2e_dpa200_stride1_original/result.json", + " D benchmark/results/end_to_end_summary.json", + " D benchmark/results/tres_deltagru_rtx4090_laptop.json", + " D benchmark/train_all_pa_2700.sh", + " D benchmark/tres_deltagru_end_to_end_report.html", + " D benchmark/tres_deltagru_training_speed.md", + " M modules/paths.py", + " M modules/train_funcs.py", + " M opendpd/api.py", + " M project.py", + " M steps/run_dpd.py", + " M steps/train_dpd.py", + " M steps/train_pa.py", + " M tests/test_api.py", + " M tests/test_cli.py", + " M tests/test_tres_deltagru_optimized.py", + "?? benchmark/benchmark_delta_dpd_results.png", + "?? benchmark/benchmark_results.png", + "?? benchmark/benchmark_volterra.py", + "?? benchmark/collect_benchmark_report.py", + "?? benchmark/reproduce_benchmark_report.sh", + "?? benchmark/results/benchmark_report_results.json", + "?? tests/test_benchmark_regressions.py", + "?? tests/test_metric_configuration.py" + ] + }, + "metric_note": "EVM is the repository-specific normalized mean absolute complex-spectrum error across configured main-channel subchannels, not demodulated constellation EVM. DPD metrics are simulated through a frozen learned PA surrogate.", + "publication": { + "all_jobs_exit_zero": true, + "note": "The canonical manifest contains the published model subset. Source-run hashes, job totals, and archives cover the complete source run and can include experiments outside that subset; source-archive members were verified against the pre-run source hash map.", + "original_collector_manifest_sha256": "65daa8b3f91d51f3ecb200e0477e44d20e0e23bd8201afbdb78087aa20a2e73b", + "original_schema_version": 6, + "published_dpd_pa_surrogates": [ + "tres_gru", + "tres_deltagru" + ], + "published_models": [ + "mp", + "gmp", + "gru", + "tres_gru", + "tres_deltagru" + ], + "published_models_by_stage": { + "dpd": [ + "mp", + "gmp", + "gru", + "tres_gru" + ], + "dpd_pa_surrogate_sensitivity": [ + "tres_deltagru" + ], + "pa_modeling": [ + "mp", + "gmp", + "gru", + "tres_gru", + "tres_deltagru" + ] + }, + "published_result_count": 22, + "source_job_count": 24, + "source_result_count": 22, + "source_run_id": "20260726T161245Z", + "source_snapshot_created_during_run_utc": "2026-07-26T16:12:47.861423+00:00", + "source_snapshot_member_hashes_match_pre_run_context": true, + "total_job_duration_seconds": 16369 + }, + "recipes": { + "neural_dpd": { + "batch_size": 64, + "decay_factor": 0.5, + "epochs": 300, + "frame_length": 200, + "frame_stride": 1, + "initial_learning_rate": 0.005, + "loss": "MSE", + "lr_schedule": "ReduceLROnPlateau", + "minimum_learning_rate": 5e-05, + "optimizer": "AdamW", + "optimizer_betas": [ + 0.9, + 0.999 + ], + "optimizer_eps": 1e-08, + "optimizer_weight_decay": 0.01, + "patience": 5, + "scheduler_cooldown": 0, + "scheduler_eps": 1e-08, + "scheduler_threshold": 0.0001, + "scheduler_threshold_mode": "rel", + "seed": 0 + }, + "neural_dpd_pa_surrogate_sensitivity": { + "batch_size": 64, + "decay_factor": 0.5, + "dpd_model": { + "backbone": "tres_deltagru", + "delta_thresholds": { + "hidden": 0.0, + "input": 0.0 + }, + "display_name": "TRes-DeltaGRU-H15 (THX=THH=0)", + "hidden_size": 15, + "model_id": "DPD_S_0_M_TRES_DELTAGRU_H_15_F_200_P_999_THX_0.000_THH_0.000", + "parameters": 999 + }, + "epochs": 300, + "frame_length": 200, + "frame_stride": 1, + "initial_learning_rate": 0.005, + "loss": "MSE", + "lr_schedule": "ReduceLROnPlateau", + "minimum_learning_rate": 5e-05, + "optimizer": "AdamW", + "optimizer_betas": [ + 0.9, + 0.999 + ], + "optimizer_eps": 1e-08, + "optimizer_weight_decay": 0.01, + "pa_surrogates": [ + "tres_gru", + "tres_deltagru" + ], + "patience": 5, + "scheduler_cooldown": 0, + "scheduler_eps": 1e-08, + "scheduler_threshold": 0.0001, + "scheduler_threshold_mode": "rel", + "seed": 0 + }, + "neural_pa": { + "batch_size": 64, + "decay_factor": 0.5, + "epochs": 300, + "frame_length": 200, + "frame_stride": 1, + "initial_learning_rate": 0.005, + "loss": "MSE", + "lr_schedule": "ReduceLROnPlateau", + "minimum_learning_rate": 5e-05, + "optimizer": "AdamW", + "optimizer_betas": [ + 0.9, + 0.999 + ], + "optimizer_eps": 1e-08, + "optimizer_weight_decay": 0.01, + "patience": 5, + "scheduler_cooldown": 0, + "scheduler_eps": 1e-08, + "scheduler_threshold": 0.0001, + "scheduler_threshold_mode": "rel", + "seed": 0 + }, + "polynomial_dpd": { + "column_scaling": "l2", + "method": "indirect_learning_architecture", + "models": { + "gmp": { + "basis_configuration": { + "Ka": 5, + "Kb": 4, + "Kc": 4, + "La": 20, + "Lb": 20, + "Lc": 20, + "Mb": 3, + "Mc": 2 + }, + "complex_coefficients": 500, + "real_parameters": 1000 + }, + "mp": { + "basis_configuration": { + "K": 5, + "Q": 100 + }, + "complex_coefficients": 500, + "real_parameters": 1000 + } + }, + "parameter_convention": "two real degrees of freedom per complex coefficient", + "solver": "torch.linalg.lstsq", + "solver_driver": "gels" + }, + "polynomial_pa": { + "column_scaling": "l2", + "method": "direct_least_squares", + "models": { + "gmp": { + "basis_configuration": { + "Ka": 5, + "Kb": 4, + "Kc": 4, + "La": 30, + "Lb": 30, + "Lc": 30, + "Mb": 5, + "Mc": 5 + }, + "complex_coefficients": 1350, + "real_parameters": 2700 + }, + "mp": { + "basis_configuration": { + "K": 9, + "Q": 150 + }, + "complex_coefficients": 1350, + "real_parameters": 2700 + } + }, + "parameter_convention": "two real degrees of freedom per complex coefficient", + "solvers": { + "gmp": { + "driver": "gesvdj", + "implementation": "torch.linalg.svd", + "mode": "truncated_svd", + "regularization": { + "relative_cutoff": 0.0001, + "type": "truncated_svd" + } + }, + "mp": { + "driver": "gels", + "implementation": "torch.linalg.lstsq", + "mode": "gels", + "regularization": null + } + } + } + }, + "run_file_sha256": { + "commands.log": "cc18c355294a0e2d9bb7056e8c06bbfd12492664eb3968976bfe913090ceb1b0", + "context_before.json": "9d578fbc05fa1d943193d5397dd6741c65b1658baaaea9f773a2d50ccfe20808", + "git_branch_before.txt": "758faa270e2de48355d38d5ec23cc5b5d89f668c8cd8b68c0a3b10af638fbb97", + "git_commit_before.txt": "c3001cec76c14bb641eeb21bbbf88dd42bd33fe6d73be1dc3bb1759dc646e98c", + "git_status_before.txt": "e6225bec19c0425e36bb3bb9bd49e2347500bf842b9f229f02d090538a4ece7b", + "jobs.tsv": "d580289f06f1be5f571bc9a8467910a41a0c0eb839834c6683b7468947cfa66c", + "pa_checkpoint_bindings.tsv": "cbbae37c50cfeb831d338e75b52bec9653657d90f4ae5544475c87e4f67f3770", + "recipe.json": "aa372944dbd085fca23f859edd1de5df3800282867f5263696c14d3e57dc991c", + "source_snapshot.tar.gz": "7ecc3ae72750b24ece1e2aa0814f539a7cf672b11da2f37d31e67f7a517f4811" + }, + "schema_version": 6, + "source_file_sha256": { + "arguments.py": "2d00505312ab0d87d58dcebaebaf3ab15d77b1c29e79ced7c8ec2bda0f9e7f6d", + "backbones/__init__.py": "c36ccba9afef9c5c2aad3776939a9746379c435054afd8673fc6096ad3e6d12c", + "backbones/apnrru.py": "9ec899243bc04a497cf479c49dea8bd875e50884c7cc0157581828fdde2a4e59", + "backbones/bojanet.py": "f1ae8fc298935afe9764836bda769cf31437cc325ddc1141927153dab68fc3c2", + "backbones/cuda_graph_frozen_dgru.py": "033e326dfa4782cd13e0c37f62d0581d8a8513a536b39130bfc9d3ee69b2682c", + "backbones/deltagru.py": "7582250e17a4bb5b27d3244bf06145388a0506c3e83205db6df79d259f6ed4e1", + "backbones/deltajanet.py": "7f2a48ffb375d403434aace161f858319ae981e90b7828ec5e665c0d6d9ec950", + "backbones/dgru.py": "6bcb7dcff9abba5424c1312515570eef3614b4c62bb7f8c228772a467d2720ef", + "backbones/dvrjanet.py": "e7112cbc194b1b95bc96b84075457a17ef7671cab38279b8086c65297873aee4", + "backbones/gmp.py": "53339dc48a8da7333a11756996223a4921759298604159ad7f2499e0c945585c", + "backbones/gru.py": "9e1e17ac9ad936bf91c821703a9137260e9df352541155262a5c0a8c0e1a6e30", + "backbones/lstm.py": "7cc761002c83f09f2e38878547a3c065c01fbfb64ee4db9c1cbe8510d17c1bed", + "backbones/mcldnn.py": "1cc9af20c6c35f4efe5fec95375b077a4e10563a4b5c2fa501cc3dde8940c464", + "backbones/pgjanet.py": "672f20e50e920826e570640efe6172e9f02d5e35eb5b66a607beddacf9ebfbfb", + "backbones/qgru.py": "5b029c99e8145628834dd0cc88cd68b9d1c9e1ef3174c8a85a8d46b68ccf6536", + "backbones/qgru_amp1.py": "21296ba3777722f5ff7d0ee9c0a1dfcd8d31c1da65c836d9577bdd10d49d245c", + "backbones/rvtdcnn.py": "d98b2a3e2161e4e74ebc37dc65f5cdd0a247644e363393d57fc4bc245e001923", + "backbones/tcn.py": "3d3c7048b36591409d90a7b0e4c4fb7ea73a01018ef73192e42df252c66cd827", + "backbones/tres_deltagru.py": "0351d322ce3ae615d0f1adfde2b76e8afaa0d85d6f9dc92f511905eca7762925", + "backbones/tres_gru.py": "0c03c302a7e98751f654f0e56da86498b9fc01723717c01e83dd98571be1d1e6", + "backbones/triton_deltagru.py": "1404d1bb55b512164eac1f281f318d7744cb682ee95fc25c170d6d5d1a9f4718", + "backbones/vdlstm.py": "bf268d65f47ecd18c31e68aaadcb3a26a433d7483b0fe888e39ef89f33d05619", + "benchmark/benchmark_report.md": "8d1b0ec5b368da42d3b35f4b71f3c31aafe14542e4167de793c8b73856c062c3", + "benchmark/benchmark_volterra.py": "79cb35031113908fdd177174c34383dad381f8e48b4eab008b4c14ef5988285b", + "benchmark/collect_benchmark_report.py": "f75caaa35812e8cf15635af523627e14b5740bddfef3c02535262c25aa81be95", + "benchmark/reproduce_benchmark_report.sh": "266949c88a18f4b7072c0809d0900bcd7abe3ac9584215b41fba932d3d162654", + "main.py": "07194242bd0b7fa8d1d05f1661daee42fc668ccea72fed04e661942e15239c26", + "models.py": "e1a7887a5e8621620088046e8aac4429247f039cddfedcb603b01fee57a979f7", + "modules/__init__.py": "c36ccba9afef9c5c2aad3776939a9746379c435054afd8673fc6096ad3e6d12c", + "modules/cuda_graph_training.py": "dc6d9c436eb8a06145f9e5472cd6cb72deebcc2b08f44a278a3be21409dde620", + "modules/data_collector.py": "7f3b55f38f80820c10d399d161b8cd233bfaf8837dc43613dd1410d6ed649a4a", + "modules/loggers.py": "192d4851f41581e211a32430856e630cb3e92fcb88e73525ec555acb0a76b3d6", + "modules/paths.py": "43c3cec2727db9c0b6206831440e9a26992a1366d151ab025ef2f35536403d66", + "modules/train_funcs.py": "c3c6057f8822ccd470b626e775fb66e6116954f4185265523f05146fb5ab2432", + "opendpd/__init__.py": "5535b674cf7a2b92563577dc5dc0036301e8a8ec06e10e718f858b976c7f1fee", + "opendpd/api.py": "e68edf808ee2feaa17c9563bc8adbb5b956e097649f3382449af31a308f8a66c", + "opendpd/cli.py": "1142070bd94de6dfe61e241f66391ee4f2779bae215d030d2143aa59f07997d1", + "project.py": "759a7c4d1d1d73a4444e83b83269ce346a3b1a849048c8ed8fc21ddc751098df", + "quant/__init__.py": "77870e58c91b6f96aa99dcfbd51cbc2af0647bc5471f6f1bce75fe3dc9844366", + "quant/modules/__init__.py": "5041f5f1c0c70267661470188147ee9c59b88dc75b1c9ba43a0f64f6c63a5929", + "quant/modules/gru.py": "768312fd67030bb909f3340ea61da470a8c6092094e2a161cd6fbb544f9416d4", + "quant/modules/ops.py": "2766edd66d3b4578c6c9b8c741950914de1f189db497351caf49ba5d00846eb9", + "quant/qmodules/__init__.py": "c65bf92be624ac36c266227fd10b217652ab4e188c4ac12b1c3d4c1a318ef1ad", + "quant/qmodules/quant_layers.py": "24352078f035768a8d640550f68b5f44048fa1f7d2cbaae09f50376fdd36a54c", + "quant/qmodules/quant_ops.py": "99ec701d2b7d095f3e75114e59a0843fdda849cf2ea82abdee096e67c822e6ac", + "quant/qmodules/quantizers.py": "1c44adfef579bf97afb314dd10074ba6eacc5207349873665b4e9e1ba2719e8b", + "quant/quant_envs.py": "803436d91459e76c0530951f1f068fe85385abac753a233b4d43a4553ade70c5", + "quant/utlis/__init__.py": "ce2b4d895b803d84d02351b68a1ebf536ebda3de11bb621637aa478610dd5973", + "quant/utlis/hooks.py": "4cf0063c4aa4c007b5f448d7427a7491e09793ed985a0337c1f170f452e0b3fc", + "quant/utlis/measures.py": "6b06453d2e8e68db39262eff3fe724764dcf5f8d15af1f4f8ebfdfa844b19649", + "setup.py": "ee47c04e451de6cf7fb05290cf8535a8311dc202ebaeedd41ae767b2513668cc", + "steps/__init__.py": "c36ccba9afef9c5c2aad3776939a9746379c435054afd8673fc6096ad3e6d12c", + "steps/plot.py": "0bd2c05b45df599d4d36f6393ada2454344f4bce84bbdadb6c586faee0a0bcdb", + "steps/run_dpd.py": "3d6dacc3fc11f17de6622a7ceadca6033a0fad279a86113eff61a7e8c08891be", + "steps/train_dpd.py": "03326bb221271531eb2db355604d0174d554f67d91211a9e32f5811760775f4f", + "steps/train_pa.py": "689fe78e150fa6600dca31f60d7b4f7493eb3f9b879fb4beabeb25b9ac381c1c", + "test_installation.py": "2fa9123da50e24dadc8bbe659440e7a2f9bd11d2482523ac1a323ffcfb490b0f", + "utils/__init__.py": "c36ccba9afef9c5c2aad3776939a9746379c435054afd8673fc6096ad3e6d12c", + "utils/metrics.py": "19e525834c96371e9837f909b8e848d4b32ff49ef52855e3281ec3f7682cd992", + "utils/plotting.py": "2ac10c110559b7ed999647ecdd9f06bde50044a8a1c807d33876f91729deedcf", + "utils/split_dataset.py": "472a9956db640dad7fb24e605d7722796d067366081d4e48d06a6e96f65ccc03", + "utils/util.py": "dcfe263cf2b3bb55e18f13439c3aed196a49d975ed3bfbab81f781a4cbcfef8b" + }, + "source_snapshot": { + "file_count": 62, + "path": "source_snapshot.tar.gz", + "sha256": "7ecc3ae72750b24ece1e2aa0814f539a7cf672b11da2f37d31e67f7a517f4811" + }, + "started_at_utc": "2026-07-26T16:12:47.178818+00:00" +} diff --git a/benchmark/results/e2e_dpa200_stride16_comparison_eager.json b/benchmark/results/e2e_dpa200_stride16_comparison_eager.json deleted file mode 100644 index 2efbda2..0000000 --- a/benchmark/results/e2e_dpa200_stride16_comparison_eager.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "acceptance_limits": { - "metric_abs_db": 0.05, - "prediction_relative_l2": 0.0001 - }, - "best_epoch": { - "candidate": 2, - "reference": 2 - }, - "candidate_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_eager_optimized", - "checkpoint_errors": { - "max_abs": 0.0, - "max_relative_l2": 0.0, - "per_parameter": { - "backbone.fc_out.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.rnn.h2h.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.rnn.x2h.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.tcn.0.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.tcn.2.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - } - } - }, - "checks": { - "all_metric_deltas": true, - "cascade_prediction_relative_l2": true, - "dpd_prediction_relative_l2": true, - "same_batch_orders": true, - "same_fixture": true - }, - "format_version": 1, - "metric_deltas_db": { - "ACLR_AVG": 0.0, - "ACLR_L": 0.0, - "ACLR_R": 0.0, - "EVM": 0.0, - "NMSE": 0.0 - }, - "output_errors": { - "cascade": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "dpd": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "ground_truth": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - } - }, - "passed": true, - "reference_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_original", - "speed": { - "total_candidate_s": 24.029687639005715, - "total_reference_s": 32.03585798398126, - "total_speedup": 1.3331782945018265, - "train_candidate_s": 13.491934273974039, - "train_reference_s": 17.237055696023162, - "train_speedup": 1.2775822462516342 - }, - "trajectory_deltas": [ - { - "epoch": 0, - "test": { - "ACLR_AVG": 0.0, - "ACLR_L": 0.0, - "ACLR_R": 0.0, - "EVM": 0.0, - "NMSE": 0.0 - }, - "train_loss": 0.0, - "val": { - "ACLR_AVG": 0.0, - "ACLR_L": 0.0, - "ACLR_R": 0.0, - "EVM": 0.0, - "NMSE": 0.0 - } - }, - { - "epoch": 1, - "test": { - "ACLR_AVG": 0.0, - "ACLR_L": 0.0, - "ACLR_R": 0.0, - "EVM": 0.0, - "NMSE": 0.0 - }, - "train_loss": 0.0, - "val": { - "ACLR_AVG": 0.0, - "ACLR_L": 0.0, - "ACLR_R": 0.0, - "EVM": 0.0, - "NMSE": 0.0 - } - }, - { - "epoch": 2, - "test": { - "ACLR_AVG": 0.0, - "ACLR_L": 0.0, - "ACLR_R": 0.0, - "EVM": 0.0, - "NMSE": 0.0 - }, - "train_loss": 0.0, - "val": { - "ACLR_AVG": 0.0, - "ACLR_L": 0.0, - "ACLR_R": 0.0, - "EVM": 0.0, - "NMSE": 0.0 - } - } - ] -} diff --git a/benchmark/results/e2e_dpa200_stride16_comparison_fused.json b/benchmark/results/e2e_dpa200_stride16_comparison_fused.json deleted file mode 100644 index 1efe2c5..0000000 --- a/benchmark/results/e2e_dpa200_stride16_comparison_fused.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "acceptance_limits": { - "metric_abs_db": 0.05, - "prediction_relative_l2": 0.0001 - }, - "best_epoch": { - "candidate": 2, - "reference": 2 - }, - "candidate_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_fused_optimized", - "checkpoint_errors": { - "max_abs": 0.000812530517578125, - "max_relative_l2": 0.000433965497494589, - "per_parameter": { - "backbone.fc_out.weight": { - "max_abs": 6.851553916931152e-05, - "mean_abs": 1.1124896506468455e-05, - "relative_l2": 5.879501418911826e-05 - }, - "backbone.rnn.h2h.weight": { - "max_abs": 0.000812530517578125, - "mean_abs": 6.815653639259161e-05, - "relative_l2": 0.0004310249302845425 - }, - "backbone.rnn.x2h.weight": { - "max_abs": 0.0005841851234436035, - "mean_abs": 5.633185652119142e-05, - "relative_l2": 0.0003386890819192577 - }, - "backbone.tcn.0.weight": { - "max_abs": 0.0003204345703125, - "mean_abs": 9.497876615367002e-05, - "relative_l2": 0.000433965497494589 - }, - "backbone.tcn.2.weight": { - "max_abs": 4.6133995056152344e-05, - "mean_abs": 2.179791529973348e-05, - "relative_l2": 4.036303903899724e-05 - } - } - }, - "checks": { - "all_metric_deltas": true, - "cascade_prediction_relative_l2": false, - "dpd_prediction_relative_l2": false, - "same_batch_orders": true, - "same_fixture": true - }, - "format_version": 1, - "metric_deltas_db": { - "ACLR_AVG": 0.006698572828423011, - "ACLR_L": 0.03461828059020533, - "ACLR_R": -0.021221134933355756, - "EVM": 0.012357549066297935, - "NMSE": 0.0137481689453125 - }, - "output_errors": { - "cascade": { - "max_abs": 0.08647939562797546, - "mean_abs": 0.0020805334110851467, - "relative_l2": 0.010411809662242288 - }, - "dpd": { - "max_abs": 0.02469591051340103, - "mean_abs": 0.000626542989095924, - "relative_l2": 0.00998412625107149 - }, - "ground_truth": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - } - }, - "passed": false, - "reference_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_original", - "speed": { - "total_candidate_s": 2.3912337490182836, - "total_reference_s": 32.03585798398126, - "total_speedup": 13.397208866399414, - "train_candidate_s": 0.36852700999588706, - "train_reference_s": 17.237055696023162, - "train_speedup": 46.77284222997803 - }, - "trajectory_deltas": [ - { - "epoch": 0, - "test": { - "ACLR_AVG": 3.4868965421708253e-06, - "ACLR_L": -5.957348992779998e-06, - "ACLR_R": 1.2931142080674363e-05, - "EVM": -3.5088017185103126e-06, - "NMSE": -9.5367431640625e-07 - }, - "train_loss": -1.1337840055691828e-08, - "val": { - "ACLR_AVG": 4.009756192857594e-06, - "ACLR_L": -9.952995164042022e-06, - "ACLR_R": 1.7972507553309924e-05, - "EVM": -1.8950754885338483e-06, - "NMSE": -1.9073486328125e-06 - } - }, - { - "epoch": 1, - "test": { - "ACLR_AVG": 6.151231414008862e-06, - "ACLR_L": 7.856817546780803e-06, - "ACLR_R": 4.445645281236921e-06, - "EVM": 1.222947293655352e-06, - "NMSE": 3.814697265625e-06 - }, - "train_loss": -6.883688591363679e-09, - "val": { - "ACLR_AVG": 7.795667166021758e-06, - "ACLR_L": 2.1923756570174646e-06, - "ACLR_R": 1.3398958682131479e-05, - "EVM": 2.696059411277929e-07, - "NMSE": 0.0 - } - }, - { - "epoch": 2, - "test": { - "ACLR_AVG": 0.006698572828423011, - "ACLR_L": 0.03461828059020533, - "ACLR_R": -0.021221134933355756, - "EVM": 0.012357549066297935, - "NMSE": 0.0137481689453125 - }, - "train_loss": 5.159810509370796e-06, - "val": { - "ACLR_AVG": -0.04601728180674769, - "ACLR_L": 0.014291041994521692, - "ACLR_R": -0.10632560560800997, - "EVM": 0.0012613322206895816, - "NMSE": -0.0032596588134765625 - } - } - ] -} diff --git a/benchmark/results/e2e_dpa200_stride16_comparison_graph.json b/benchmark/results/e2e_dpa200_stride16_comparison_graph.json deleted file mode 100644 index 7012e17..0000000 --- a/benchmark/results/e2e_dpa200_stride16_comparison_graph.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "acceptance_limits": { - "metric_abs_db": 0.05, - "prediction_relative_l2": 0.0001 - }, - "best_epoch": { - "candidate": 2, - "reference": 2 - }, - "candidate_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_graph_optimized", - "checkpoint_errors": { - "max_abs": 0.0, - "max_relative_l2": 0.0, - "per_parameter": { - "backbone.fc_out.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.rnn.h2h.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.rnn.x2h.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.tcn.0.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.tcn.2.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - } - } - }, - "checks": { - "all_metric_deltas": true, - "cascade_prediction_relative_l2": true, - "dpd_prediction_relative_l2": true, - "same_batch_orders": true, - "same_fixture": true - }, - "format_version": 1, - "metric_deltas_db": { - "ACLR_AVG": -1.8785027826595524e-06, - "ACLR_L": -1.3046467124411265e-06, - "ACLR_R": -2.4523588528779783e-06, - "EVM": 2.028292044542468e-06, - "NMSE": 1.9073486328125e-06 - }, - "output_errors": { - "cascade": { - "max_abs": 9.307637810707092e-06, - "mean_abs": 9.33147566684056e-07, - "relative_l2": 2.0480301293249045e-06 - }, - "dpd": { - "max_abs": 1.4603137969970703e-06, - "mean_abs": 2.556108711360139e-07, - "relative_l2": 1.9065793747243752e-06 - }, - "ground_truth": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - } - }, - "passed": true, - "reference_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride16_original", - "speed": { - "total_candidate_s": 5.458723943011137, - "total_reference_s": 32.03585798398126, - "total_speedup": 5.868744841914403, - "train_candidate_s": 3.434560444991803, - "train_reference_s": 17.237055696023162, - "train_speedup": 5.018707916804272 - }, - "trajectory_deltas": [ - { - "epoch": 0, - "test": { - "ACLR_AVG": -3.295660029323244e-07, - "ACLR_L": -1.0705163440150045e-06, - "ACLR_R": 4.1138434170306937e-07, - "EVM": 7.562740194089201e-07, - "NMSE": 2.86102294921875e-06 - }, - "train_loss": 0.0, - "val": { - "ACLR_AVG": -1.2742645694174826e-06, - "ACLR_L": -1.4162833856801171e-06, - "ACLR_R": -1.1322457496021343e-06, - "EVM": 1.281958789789428e-06, - "NMSE": 9.5367431640625e-07 - } - }, - { - "epoch": 1, - "test": { - "ACLR_AVG": -2.7133395832379392e-06, - "ACLR_L": 4.63138779593919e-06, - "ACLR_R": -1.0058066962415069e-05, - "EVM": 4.908597350805621e-07, - "NMSE": 0.0 - }, - "train_loss": 0.0, - "val": { - "ACLR_AVG": 4.6765898176204246e-07, - "ACLR_L": -2.7602561658568447e-06, - "ACLR_R": 3.6955741329336433e-06, - "EVM": -7.832428146059556e-07, - "NMSE": -1.9073486328125e-06 - } - }, - { - "epoch": 2, - "test": { - "ACLR_AVG": -1.8785027826595524e-06, - "ACLR_L": -1.3046467124411265e-06, - "ACLR_R": -2.4523588528779783e-06, - "EVM": 2.028292044542468e-06, - "NMSE": 1.9073486328125e-06 - }, - "train_loss": 0.0, - "val": { - "ACLR_AVG": 4.737642029795097e-07, - "ACLR_L": 0.0, - "ACLR_R": 9.475284130644468e-07, - "EVM": 2.8265898635027042e-06, - "NMSE": 1.9073486328125e-06 - } - } - ] -} diff --git a/benchmark/results/e2e_dpa200_stride16_eager_optimized/batch_orders.npz b/benchmark/results/e2e_dpa200_stride16_eager_optimized/batch_orders.npz deleted file mode 100644 index b11c7975d3a101ed36dd307570ccadaf53df0120..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10137 zcmZX42~-o=y0wamibA&ow9ODlP#L141_Y9JKw42y5zt16UP0P+h?1s5AW5kRs3<51 zhy=t#fqD=7pypYZ&S&uHQzUW6}?)sV%6?LUc0WX*tzMtvmLgUBTVwJCA%u3|@;DN{h}nzbm^6wX*5*Y){0G93T&mQ#QJtF~CyOFyDQ zjI0lhrg8U)Y<>YdEu6SMbHbn<-Yb z2iWhrruW-kaLigM!emz~f0ozIf_}v9X7~vIdXrD^Dc=U{5ClAz=wz13gd*I1Pd`DxnZesrEyU=ORlX^>Zk9(*k2rD#TN zo&sL9Idp5Zh%qzG9-OBu;@HVC8zv$~-4)3VnCAXfob8CK&>zOg(U+S(xIid%g*0-y zO)+x6(-pR9LkDs1Vf~{{kaq}w=44U0BD=xYV)y-|Lfslgz?jXuDxn8wrRKs26=F+DhWpPIU#kt6?8VU}**FF8lG z&LY|2Z4@YZ{Rcv$v9&*!oPx|W*(&kB5;9m>n2Q8o)4g^Ayrdy5+G$9Zf|3&1R;NFf zJ;l+HWAU8SfG(yqJe!-mHT%0)9Rl*(-dw!s*K z`?a$EDE3YBW8oadKIx4t{x!r|(TzpomDVEEMKBF)#oJ?-K}OhGU-q7_e;ZBvg#2Xq zLv*;*{Fx2uT%_h~8ewFC;go!rhPIHqz@vrD&~$n^myzNHp0La3%Y@1cf98T%n&F%w z+SJzSV)t_cDK{}7wy5Lnyx2NBPi_ma5PClNhsp9Pu#2?|aA2(AEH%4Dd8jsk52Vl~ zRQ*t6O)hfEU~JSo)}|R)CH#GYjqGViB#n2&$7pR>ubHgxKj{lU)@kML3jtRn%COZO zW&oVAKRGdj$Ot4?UwkK(VC7HE~@!pWkM(?1IxQM)T`FdVOUhX zn?cSiRRzO`L>}#0^k>VzLPP%8Xm#VIZaw8uE!OG*#l6jQ3h5 z%&0&PN@U~7`q}S8<*PZ%l`ILehih30G{3FqM@5}V#D6{{uo$YW;N2!!nlNy**`M;7 z%5iBRi15?eqQP0*;Tl_~?D)If2X7hnpy!aMk}9TNQuS8v5um(XdSrF|`Xt5X`!=7n z&g9~T;Fjvms?GSccA|V`qQ5zuX#J2|r_D1Eb$yD+?PyD;n6%uyxYpJ@Ptc`uc*cuY za^4rndN!%7+?HdVCYXY3DLunv#4h?*_&Q4%iJ6#qKF5DrjXj8&s<}^UtL% z`Gh-Es~XdIvV=LkkyfOu+FY$Qezze~?-+}^#&9>Eo1CuWOQT8!gX4(U?+Pk2yp@to z4d9@?LJB>OU`7{JddPs67s3aTRVquWgTrc0Sr=j=tsOY)Tjq%$V#q?~3wGn20A~rF z>?vn`KzEZ$*=H{D>I1R}%@k)=1sl_V8^(D`T)aFlP+n|hJ|*s&#H%B8WrL`9#Y*b? zb5cz^lxend$koi^x*3U@>%-J5$U{b>_JMEQ1C`>(7qh{a37+vD9jfG;y64So9&&18 zLtN11aPd)RD3NTsQA`l5q@d6IaX(P}ENwxrEMJvavW6LVlnoOyG2qQX^Xte}&P8Y9u+c1I>BzIhDf-z#vNIy=aWPpDg( zz*-Oawfl({6pISeV{_ON-JV!#SnSWfKTNji*GQZV-x|B43L$yD zg8#|SlCXej-&C`dAUMHZ==;+|7vV)>V1-<0S=VRaULfj-nb-|2UzQzdohliba-*-_t=avx5L5;K%3 zWR8+9WA}a1htf_M0_17*bTO2&Xk)P0=^*2`q1cmAsg)lB#}EuWgG#HH#2|ADMm@Jj zxpKJT*Y5x^qcCX()uztA4Lvs?#`nci@T@XXR3)oKxzUp<==`{%kgDv&?-iZG9ZKzN z$|d%3b^0f0HP%_RhI(Rhx#6!(8J^-QagvL12E3i@=LxhVc|xnH9>8w+3jOpb<0L*A zmz~5akM)*F94vWhnK8)oiSLc%1ddArI)bYC?LBD>Q&PG68$-OHdFxY}6};okUI7(u z8x_UjZmHI~HQ)n4(eZ#cbGHmKX0jd;>Y;<&$BA5fQYIUJp2PkMpHK|LJ9K;AJw1XE zT5GC?Btw>B>^ov<`9xG=A)VNOT(V1PQu;lec&4@y&Zkg|! zuwA-V8aKtCyvAJvIlL+v&@d5jb{3*RkjB5zrO)H~oKUI4nzz&!~W{Hcexj!)O#QSR3S8I#8^>~c& zkRteo2s9iTLf?iqXg?`Og!|&owU~bE%&#V0s(N3bf_pGrfWbZ7M4BvwF(XA+ zSRS>rX~C0tEHA6vN;ln`5si9;Se`Gv;G3y!Cx;j2N;jq1$a@zohqcOIxzQOdRK4e!Y1y@4HYIOxI$ZV$^ zV|zL1&5H56@tkL;-cpTjHY|r`aTa*vx>eJ54b@bjLkT}mk;jkEv%+r~%jnq}@EXPz zd=lvz?=n)f5M5+k?zNvyhqYoY52<Y2(8zYqks+WvsX3yE z3`({-WiWB>-1W%z_|7&k_PzdkbD2MP)znuGZlw?apPen!7kHx#xOFt%!UZt6kU_x)KyxEL&2Uw4KmLq`fWxTZa z?EcDK9j%MjAuQzjS@a<}f=sxv?W%;x75}l?$uH>vOTMJ{k1^lxNqR8&gZY89t-euR z7neLL=?ec|V^`BfvL~dOf#eh7UCrO$%M`I?#x5_J9w^2!C)OKm;S=T=RO!2hI7>O| zy`9pk0B|=C>q;AuBF-$Q(&wAtdY#>SnYgouiJ~`fgTXchx`X-rt!PZ7p5jIPgx{Mh zUsJE8=Pl7q-^_N1F{r`CGu z-#;Vs45tl6yV18!Kji6knyLOckNF=?D~!MQgqo(A880j;M`>jWRy(u;$}^lEYf#dn zDWXG<7~6m_u7%3f!}K*Bh?kVOK0fy&YVrKbJXKN~@Cf=fA*ydyN|~Zsw=>>OR5hv% zpkd_u47)VASO=BYuT&i6K0iL!P&w)^?|hN{Hd|eAl^+gV9h#_%Qfcfqow-tZBV z6HgUD!&f)zHt7AzlIp$Od!N+@s3L@@QUVLym$1)t?tbuN-UEIUe-yV5JbA=U#TKE{ zB9AT5tRCJq7^+V;$X;W-C0HD5=P;yk?Br%1$fKjQM=4 zgyp*H7p%jyR+PiwIfKKTG=)T_{d?eqI!Wcn*RC_q7e(%2J>qONJuA=r!X527Nb>?t zO*$IF>Rk)KLaA$yQQEVT*G&OONkY3e#%X$slF$-)hFvc|Esr82N{2d2(eNNs8q^9| z3rctt(d2vnNt}oFCi%ILaLHevr?7vokyeTPhGlnyE!j>$zJk@d^#N_UX_x5Cld1#Y zYyw^X5xUG8CTE%U-s0~0woLWg6`K&!nkgb)Z7wh<3=0};E?QOc4v-QjhhZ1Z(pIR0 zFxRfTKN_?$eq?nfUasooq?#XHaDMkR&Ogqh)sQ3EOdq4JX-C~5UNZb`aQuMI(Hu4n zPatOpVuP}#7nz4{k+>m? z%xM=ST>;%-2xhsS0uD3ZMXH~i&(hcaj?EU1ltV3b>l(){g4clO=Uh$k?8*yCG2b3l zO-jPh-SWIZ?$Xhz9w`YGL;D6+>75!TW8k#;>Ffmf>y$o)e-9NJYbgj9^?s>!K-LV zY*+3wBM#EKh|3fQ5;W!EQlOhvslYbj>g`7Rmq`xB8>Ol}oxSHb_#R;pdcWQ0{h%so zWBG&kCw@q{dz4sRsfhW4dz$3MAWmxI^17RbT=o8ghgCRR)S062HeeffI{s34hiaYV zsF_WV&_w1N*Bfri(7Ro=KGYGHw=!cms%Ka<XiTNo7vYL1aT5Zsz~t0n_CBkGPM>w*){dmeOG5|VcNX@)} z+s~b6zCW>F-ycUf&HgIQjdiT&$C%F_p77Ruv5cAt@~ZKsBS-RtFGpT(;9U@*_7Rqa zV|ka#GvNh>iFR)|js zmmtzK1L7@VjW1FS4B^p;$I%D8xpCUoZ-Gz||27yt z@hlF!t+k`wNeZjpV6f&(zK;j8Gb+W%9zQsIGFd8ZtGxl$BW~IN-CcVB@Rs_>^U*XH z@HMUdx^d+^?6Fx*#uF4vCLZ%#J{|l~8$fIM_r;gJ?^_z9z;7z%sp4M$FV?3a3 z@7quv5Ep#cw67>c+A2>g09}qqD!FO+mK@J>b9E(fM>UeoxC|~}w0k?C=VoFU&(BvG z6#CkesF{pQA+<$+j3`oJE8Ri(l70N?0(YaEE}eF| z63H$51Ln!6%e{1|25x&9rncrSW0X02JU#ig0mF64(BK+G+Mlwm79%gmVM7Rdd2$*Uyo>FifokV zR=^_gBj#yY7T2;AD8gS7L`Ke{5^~y5QlH|0;V4TSjz^3)2~+gIR2D^JTqRkh!967u z#N)J~aE4*v4v~npWN#77aw^i7A#1gZs_|jrX<#98ezMdX8LdhN<_tJj?KLgbkI6l& zJ>Z81dOJ56*wx94D;~}rrZ#K0e_K}_A}{jBcURTDHfVVi@hfz~UCwS~0I4L9|EBLnYQx09~W z>yLZJ+l&lchCXE8vS)C2)aS-!4~7`PBIC_bZ^j7uF_frZS%KnFcTI$d0iMZjU}d;H zAs6zY+~dB}<*3IP2;&(0xDM~_62mR0-5RJ$@G)&U37lcK%2y{=`rBq|7Z!7$rZRf9Z@HxMCTiGA8&ZfRzQxg8{n7ny|s8P**0X1((o`>LZ zj}iIH6r{V!`aABa9LJt~x$o!KCE?7d*SmYoeBkkf>kx=d5{mwn^fFpe>opzk!bz<~ zMFmpk`6hrX5Dmelb}kSZAH0Nn0A8YKOP^@qsBxp2b*1X0-n9X&%e*V-5+WLz+xR+_ z<~eZ8f!|WlN@BA+DD{e5xaW9)?&gJ8!>9#Q2G4M&(JcCVm`^6Ufe6S9u; z)Wc3e})^>~_=nvn39>#lAFXG333ZKybHDyzT+2Z`+ zI$u5(yf9>ZAE=}8ROz@<5ckQ^8Ck-4szXtjJp~`Z+oUUrQynkm^(#F@5$+r-r=3ts z6;`yL;9{DoX_O_cHEl^)1)S0&sg|uZIgq>8ZDh3Fp5jtZ9Cg)4jQK3h2<0XS(&6Vy z{!o(=mj&A8UQE}Ih^d~>{f4-M{R%&dOOL$_Ji^Eu74-zO%M0R(}WSWf-S*uD*SjxU^mZ_@`3KHMkgXY9z)As4Z zhZ>HZ(wuBYc5t~d*bhzb+CF`m&3%lo1LmB$r4KMom*y=&uVz`eHINny8gwUHBZ~A6 z_;*?#(>y)C1lS6iOM{_bxLJT*?E@N7Pe|41aLvX?V7Pj%dR{_GJ4uRu!ulvVYFKAj zAbovXJA-OXTaN7fjE9dY9;)@yKcDcg#9jvobd&I9qvv{+w|U9YXT0Czo%RE>aBJeO z>)Ld7FS0qO6|M438rJ^7Q2mKs#xKBhniY^2eg|4_I86OR$hyk4LVwcw>TTqOw5*W?LiGfNCkz~n)fb5! zi^1h^r9y82^Yy8S4aYe@SZC;#d}M7X3Xva>-st0cBcbZmdb47fva^W2yN}q&`!_+DLb@oyO9KQlI!ZtLqpQ&K z1G_ye!5iEa(xfkaC3|$>}(VbQl)?qft7K5OE-A7!j zk;$85xOV=!&a7K0{W}e+1FoVzATKW5X-+IPZ-$w5^>IZ%LVLN^ePPT?TcLL>A~qQ> zHLgN_);o?C3mxGFA23g~Z1&$2{7JtN#yUY3_6P2EN;%s?K~?HMaZ{13ayvCQ&bqbw zPEP7ui3#O=;WBy=>AI)USp+7819ZLMcUX-l#-qa}7+*Yl71FDsFy~ouS`=E4;82`l@~m z=9*Rkexh=^alP5T!l|y2lA`;`Yr$k%x;nocAd$1>Ghha#L;ZaPZ3`u+c8Q*zk)SL5+b!!{X2oCcd*pw*%f>QS=l40i~WQSgH>5wv0uVA+$H^wOBYOuJeOz zlsKQW8=j_*^u(8jFgW#IPX~>ytW-=gy4hz1&ko*TR8d&f0au6>tihx;!(HPP7j zNp)#sd1c^|zr!HuxQ{$f&*d{`o0r4w5;9I=pAgg+!$#xnbyR6te-?B`bn1kI%?K?N z4%FLyBwPt-X=B)AG@`mBR`4&WMN(6~v2r|MY*B@i3hFd4X?gTm`32>^RdT|WaAkN%)gto>+9J1o&^p$$#6^SDA;t(?4%O)nDw-%6fkaxf zSMReAKyrd(;_;%IalV+E5-bAKASyLT>~pBFNf*@S9S-j^*Nhg#q3K(t){9Uqf%{aZ zn6p~qs$dCMN=^2Vtr&cE&V~I8<(HA=hwrd%u`p42h<+;f-Jut(=in5TL~fy}6!sA& z=y8L<`z7QcF*jFY58kEz(zn4JqfGk<=I~u)rzdz7$gofNH&rDV!g`X>KzHqhcC&Uf z+*q#-y$$FQ@TuUO&JOf{aiA|4J`zvpV9$&FSR<_OMMBI*`41)=p2?E75+Jfu5;H&c zOCVRJbu(P3y2?q?5j!@_4QtcSViXXqu#0U+ee9g_iGR}~Mlr(!Ge~8mn9gn0+*ZH1 z35{Gt3`)*B2_AEZ&~>(&oq1siTj~hK$YX&8nJ{=X9%~D1l|5lgZbB#72}KcRy`C25)J)8!?wmYw{yMvblD?4< zi)yU;l^ZgeCa!*{J;Y3!SfbKba)d5*Qkber8ZL5?WDJyzhTJul5A?L4GcdM*GtZHI z2XbIv7_lLP>6lh>v&8WttDW{EgQ1%3>t~D=VZCKhW~UTxE*YcUs`U5>B>ky7)A`!l zrc2i1$~6B8m(Wq8tBFCpBqlF)psmE{;I?`;M4$}lJ!52v~ z2urDs)U%Vb)KxbK^Xc0GI06UFM;w}jLKG#CySN5l*h;N$Bl|HJ%Fj^rxxn2*Jl`B=ko1y z(|kVgV+)@kSMpk*OH))I)0w8Hs0+l%cHZ=1{y2Lyl3t z#;c{U_ z5It>FC=2_K_DaITyd2Ct)>`v?H+On^<& z4LWuUF-Ky1ee4M3_-_M1Gk&GOHrEap1@9w!5*89?+lTH`o8-l|K&g@LV494~F z#)k`2v?l11ZOpkCo!UP-Zj^=r#9K_(m|*OZGW+FyP57BV;5ypxRv ztK8cq4gE6DU9~^vqs5_17&)o}U5u2F!?&dc0S;letCmaH1E=MgeUbz5fn9kqKpj$% zNUHxWe~Q9OLNMAqZ@!3779M0WsGl4G8_;$@=r?K{FNM3Da|i2R$RE?nZ#E|;=kff) zI!`HSx!UNFyzu~eqB8BhipZNDe8s(2maNSJF0&OcT*2*%`17_VJN=1@V0A6UGU*zE z+8;Q5hP%c8tZe(IZ0(;CHmm=xUi+`>#p(Zq|F6#N-+}))ME}@7{|Qt~J^gRsfB8lK n4*W-5{Ue?J6F9N-{{a6>YwZu5HT$1ISWF#dQ}MI&KX?BN3r2x_ diff --git a/benchmark/results/e2e_dpa200_stride16_eager_optimized/outputs.npz b/benchmark/results/e2e_dpa200_stride16_eager_optimized/outputs.npz deleted file mode 100644 index 28ce44f3c0755612a2898513f2c32f674a92e03f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171295 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 ugt}#S*|AX@Z@b-N{^Nj;jZ3-z%JKNJ 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 z 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ⅅp}dArvBZH zd0hU&PRCwlo0&Pa6=krNaa%|&E1oMO56a&>1`V4m>C(IP*bM!QpS=}t=DP5KSJZIw z>?%sLxb0Eq4 zlECD4BGin}WqX(8!KvmT`c&ZpMta}q!L%|i?eo-ntL6W3OR7xk8!KnQJ0-39W|c

Bw;-&vO8K01hQ_oFeQ*9RFMvG$bygUrA{TE{5 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�o>_XdnFQ{Ff7+r-`#0>N(p5 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 diff --git a/benchmark/results/e2e_dpa200_stride16_original/outputs.npz b/benchmark/results/e2e_dpa200_stride16_original/outputs.npz deleted file mode 100644 index 28ce44f3c0755612a2898513f2c32f674a92e03f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171295 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 ugt}#S*|AX@Z@b-N{^Nj;jZ3-z%JKNJ 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 z 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ⅅp}dArvBZH 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 z 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 Bo>>3@ diff --git a/benchmark/results/e2e_dpa200_stride16_original/result.json b/benchmark/results/e2e_dpa200_stride16_original/result.json deleted file mode 100644 index b1e366a..0000000 --- a/benchmark/results/e2e_dpa200_stride16_original/result.json +++ /dev/null @@ -1,293 +0,0 @@ -{ - "artifacts": { - "checkpoint": { - "path": "best_dpd.pt", - "sha256": "d9104a960df60f6a1d1f5ab0a5a89b1e68cca51b740fc4a445fdfdf1c231da28" - }, - "orders": { - "path": "batch_orders.npz", - "sha256": "ff4dc43d09981b276c2f114d0a8f69c237dbe2331cff3d7c9572f239a434e71a" - }, - "outputs": { - "path": "outputs.npz", - "sha256": "ab05cbf0fa406f1ad661a0d9f753c552320e88a07f056d75722ba5be2f1c157c" - } - }, - "best": { - "epoch": 2, - "test": { - "ACLR_AVG": -27.226608217804756, - "ACLR_L": -26.815050106117365, - "ACLR_R": -27.638166329492147, - "EVM": -18.002733545368763, - "NMSE": -16.83683967590332 - }, - "test_loss": 0.008923204615712166 - }, - "config": { - "batch_size": 64, - "dataset_name": "DPA_200MHz", - "decay_factor": 0.5, - "dpd_backbone": "tres_deltagru", - "dpd_hidden_size": 15, - "epochs": 3, - "eval_batch_size": 256, - "frame_length": 200, - "frame_stride": 16, - "grad_clip": 200.0, - "hard_determinism": true, - "lr": 0.005, - "lr_end": 0.0001, - "lr_schedule": true, - "pa_backbone": "dgru", - "pa_hidden_size": 23, - "patience": 10, - "progress_display": false, - "seed": 0, - "tf32": false, - "thh": 0.05, - "thx": 0.01, - "train_batches": 23, - "train_frames": 1428 - }, - "environment": { - "cuda_runtime": "13.2", - "device": "cuda", - "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", - "git_dirty": false, - "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", - "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", - "python": "3.13.14", - "source_sha256": { - "backbones/tres_deltagru.py": "696b7215c19d64071e443e1b3b493d8fca7b8f83f2fce6e3c29fadea54542b87", - "models.py": "7634689e74dc9b19dedaff34f19ab5231fb6f337c58a3919fc98b196b0db56fe", - "modules/data_collector.py": "7ceb56237cc9366a23e6bc609c1122745b4d524e351148cc513bf52df8f2337c", - "modules/train_funcs.py": "8fa61983ce7a5ebb4b7729260305032de9caf2b9d77004333ebc2414383819ea", - "project.py": "9251b12dff20b42fb3591913b2ebe84689a0d13bb90fe998281ac61952ec971c" - }, - "timestamp_utc": "2026-07-11T11:09:01Z", - "torch": "2.13.0+cu132" - }, - "fixture": { - "pa_pretraining": { - "batch_size": 256, - "epoch_losses": [ - 0.19976529288623068, - 0.07552065874139467, - 0.035813659822775255, - 0.015496797549227873, - 0.0073165092151612045, - 0.004122809729435377, - 0.0028371868655085565, - 0.002260218708155056, - 0.0019730482547957863, - 0.001804672781791952, - 0.0016903372119284339, - 0.0016053243009890947, - 0.001537126708879239, - 0.0014795413240790366, - 0.0014301505237300364, - 0.001387344894465059, - 0.0013489203230063948, - 0.001313198775622166, - 0.0012807028911386927, - 0.0012508238070747918, - 0.001223458524327725, - 0.0011980035510431562, - 0.0011749541568052437, - 0.0011529860992191567, - 0.0011323490322360562, - 0.0011132779117259714, - 0.001094700538346337, - 0.0010788088470386962, - 0.0010624444707193308, - 0.0010472416890681619, - 0.0010330673915127085, - 0.0010188237324150072, - 0.0010063911839905712, - 0.0009942823542385465, - 0.0009820516201822708, - 0.0009706565599319421, - 0.0009600415631818275, - 0.0009499821249240388, - 0.0009395308883136345, - 0.0009299550076118774, - 0.0009213898977678683, - 0.0009129614317013572, - 0.0009045549577826427, - 0.0008978265001335077, - 0.0008889070233433611, - 0.0008808080501492238, - 0.0008747089848232766, - 0.0008677142930941449, - 0.0008612244461093925, - 0.0008541751471865508, - 0.0008492301761483153, - 0.0008438051025020994, - 0.0008372969226911664, - 0.0008320930349226627, - 0.0008262090624258337, - 0.0008212690894854152, - 0.0008170444033263872, - 0.0008116322116822832, - 0.0008085286788021525, - 0.0008024338063680463, - 0.0007971812136626492, - 0.0007941790558915171, - 0.0007888991599126409, - 0.0007850555250317686, - 0.0007812943005572177, - 0.0007774337214262535, - 0.0007736717008002517, - 0.0007680615494286434, - 0.000765761686488986, - 0.0007614624595993923, - 0.0007581874547112319, - 0.0007533019660816838, - 0.0007504364740776106, - 0.0007459188067716443, - 0.000741948351626181, - 0.000738971155240304, - 0.0007369754337964372, - 0.0007315872961448298, - 0.0007274452887941152, - 0.0007249550874500225, - 0.0007203698766210841, - 0.0007163520249175942, - 0.0007124568264569259, - 0.0007081288960762322, - 0.000703643683421736, - 0.0006989148180259185, - 0.0006963702481395255, - 0.000688923417409468, - 0.0006831818797056459, - 0.0006777228373620245, - 0.0006716486325280534, - 0.0006644388376217749, - 0.0006551507258942972, - 0.0006462268809425748, - 0.0006346332763011256, - 0.0006214740213989797, - 0.0006044942381170889, - 0.0005823747681764265, - 0.0005561722377832565, - 0.0005314765006510748 - ], - "epochs": 100, - "frame_stride": 1, - "lr": 0.0005, - "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." - }, - "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", - "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" - }, - "format_version": 1, - "implementation": "original", - "repo_root": "/tmp/OpenDPD-e2e-baseline", - "timing": { - "artifact_serialization_s": 0.0068528100091498345, - "best_dpd_inference_s": 1.555072506016586, - "best_test_inference_s": 1.6603073650039732, - "best_test_metrics_s": 0.0011606779880821705, - "compile_and_warmup_s": 0.8282131100131664, - "epochs": [ - { - "checkpoint_s": 0.0004195749934297055, - "test_inference_s": 1.6630636399786454, - "test_metrics_s": 0.0011976980022154748, - "total_s": 9.74018805596279, - "train_s": 6.085040089994436, - "val_inference_s": 1.560023623984307, - "val_metrics_s": 0.4304434290097561 - }, - { - "checkpoint_s": 0.0004845079965889454, - "test_inference_s": 1.5374629540019669, - "test_metrics_s": 0.0011564310116227716, - "total_s": 8.77447353900061, - "train_s": 5.610238676017616, - "val_inference_s": 1.6239780509786215, - "val_metrics_s": 0.0011529189941938967 - }, - { - "checkpoint_s": 0.0005074270011391491, - "test_inference_s": 1.6070739029964898, - "test_metrics_s": 0.0011016709904652089, - "total_s": 8.744379084004322, - "train_s": 5.54177693001111, - "val_inference_s": 1.5927995950041804, - "val_metrics_s": 0.0011195580009371042 - } - ], - "model_optimizer_setup_s": 0.009723005001433194, - "peak_allocated_mib": 113.1044921875, - "peak_reserved_mib": 126.0, - "setup_data_s": 0.03499383700545877, - "total_s": 32.03585798398126 - }, - "trajectory": [ - { - "epoch": 0, - "lr": 0.005, - "test": { - "ACLR_AVG": -23.802362727318418, - "ACLR_L": -24.37394008245006, - "ACLR_R": -23.23078537218678, - "EVM": -9.233125063892256, - "NMSE": -8.6369047164917 - }, - "test_loss": 0.0584484227001667, - "train_loss": 0.3155044079150843, - "val": { - "ACLR_AVG": -24.368007007685193, - "ACLR_L": -25.166700405152994, - "ACLR_R": -23.569313610217396, - "EVM": -8.888111584610337, - "NMSE": -8.287453651428223 - }, - "val_loss": 0.057822540402412415 - }, - { - "epoch": 1, - "lr": 0.005, - "test": { - "ACLR_AVG": -25.108314935280998, - "ACLR_L": -24.66642731083448, - "ACLR_R": -25.550202559727516, - "EVM": -15.074752071510995, - "NMSE": -14.206661224365234 - }, - "test_loss": 0.016343355178833008, - "train_loss": 0.03183207778341096, - "val": { - "ACLR_AVG": -25.800195622535483, - "ACLR_L": -25.37349478488941, - "ACLR_R": -26.22689646018156, - "EVM": -15.033653677372403, - "NMSE": -14.25285816192627 - }, - "val_loss": 0.014646782539784908 - }, - { - "epoch": 2, - "lr": 0.005, - "test": { - "ACLR_AVG": -27.226608217804756, - "ACLR_L": -26.815050106117365, - "ACLR_R": -27.638166329492147, - "EVM": -18.002733545368763, - "NMSE": -16.83683967590332 - }, - "test_loss": 0.008923204615712166, - "train_loss": 0.011922802371175392, - "val": { - "ACLR_AVG": -27.650038422759067, - "ACLR_L": -27.4008395120854, - "ACLR_R": -27.899237333432737, - "EVM": -17.838220021303275, - "NMSE": -16.874755859375 - }, - "val_loss": 0.008002975955605507 - } - ] -} diff --git a/benchmark/results/e2e_dpa200_stride1_comparison_graph.json b/benchmark/results/e2e_dpa200_stride1_comparison_graph.json deleted file mode 100644 index 13d6140..0000000 --- a/benchmark/results/e2e_dpa200_stride1_comparison_graph.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "acceptance_limits": { - "metric_abs_db": 0.05, - "prediction_relative_l2": 0.0001 - }, - "best_epoch": { - "candidate": 0, - "reference": 0 - }, - "candidate_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride1_graph_optimized", - "checkpoint_errors": { - "max_abs": 0.0, - "max_relative_l2": 0.0, - "per_parameter": { - "backbone.fc_out.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.rnn.h2h.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.rnn.x2h.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.tcn.0.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.tcn.2.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - } - } - }, - "checks": { - "all_metric_deltas": true, - "cascade_prediction_relative_l2": true, - "dpd_prediction_relative_l2": true, - "same_batch_orders": true, - "same_fixture": true - }, - "format_version": 1, - "metric_deltas_db": { - "ACLR_AVG": -3.164370099284497e-06, - "ACLR_L": -2.0592444300859825e-06, - "ACLR_R": -4.2694957684830115e-06, - "EVM": -9.776078826462253e-07, - "NMSE": 0.0 - }, - "output_errors": { - "cascade": { - "max_abs": 4.947185516357422e-06, - "mean_abs": 8.859038037674812e-07, - "relative_l2": 1.7005846856815116e-06 - }, - "dpd": { - "max_abs": 9.201467037200928e-07, - "mean_abs": 2.509646719772718e-07, - "relative_l2": 1.5120332981750944e-06 - }, - "ground_truth": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - } - }, - "passed": true, - "reference_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride1_original", - "speed": { - "total_candidate_s": 14.511434557003668, - "total_reference_s": 95.78045028200722, - "total_speedup": 6.600343329652451, - "train_candidate_s": 12.411166226986097, - "train_reference_s": 86.86389361001784, - "train_speedup": 6.99885023062105 - }, - "trajectory_deltas": [ - { - "epoch": 0, - "test": { - "ACLR_AVG": -3.164370099284497e-06, - "ACLR_L": -2.0592444300859825e-06, - "ACLR_R": -4.2694957684830115e-06, - "EVM": -9.776078826462253e-07, - "NMSE": 0.0 - }, - "train_loss": 0.0, - "val": { - "ACLR_AVG": -2.8244013101641485e-06, - "ACLR_L": 8.378235950345925e-06, - "ACLR_R": -1.4027038574226935e-05, - "EVM": -5.002445686130841e-06, - "NMSE": -3.814697265625e-06 - } - } - ] -} diff --git a/benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json b/benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json deleted file mode 100644 index 653072e..0000000 --- a/benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "acceptance_limits": { - "metric_abs_db": 0.05, - "prediction_relative_l2": 0.0001 - }, - "best_epoch": { - "candidate": 0, - "reference": 0 - }, - "candidate_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride1_graph_repeat", - "checkpoint_errors": { - "max_abs": 0.0, - "max_relative_l2": 0.0, - "per_parameter": { - "backbone.fc_out.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.rnn.h2h.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.rnn.x2h.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.tcn.0.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - }, - "backbone.tcn.2.weight": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - } - } - }, - "checks": { - "all_metric_deltas": true, - "cascade_prediction_relative_l2": true, - "dpd_prediction_relative_l2": true, - "same_batch_orders": true, - "same_fixture": true - }, - "format_version": 1, - "metric_deltas_db": { - "ACLR_AVG": -3.164370099284497e-06, - "ACLR_L": -2.0592444300859825e-06, - "ACLR_R": -4.2694957684830115e-06, - "EVM": -9.776078826462253e-07, - "NMSE": 0.0 - }, - "output_errors": { - "cascade": { - "max_abs": 4.947185516357422e-06, - "mean_abs": 8.859038037674812e-07, - "relative_l2": 1.7005846856815116e-06 - }, - "dpd": { - "max_abs": 9.201467037200928e-07, - "mean_abs": 2.509646719772718e-07, - "relative_l2": 1.5120332981750944e-06 - }, - "ground_truth": { - "max_abs": 0.0, - "mean_abs": 0.0, - "relative_l2": 0.0 - } - }, - "passed": true, - "reference_dir": "/home/cgao/OpenDPD/benchmark/results/e2e_dpa200_stride1_original", - "speed": { - "total_candidate_s": 13.95791669600294, - "total_reference_s": 95.78045028200722, - "total_speedup": 6.862087829298724, - "train_candidate_s": 11.811336595012108, - "train_reference_s": 86.86389361001784, - "train_speedup": 7.354281449120687 - }, - "trajectory_deltas": [ - { - "epoch": 0, - "test": { - "ACLR_AVG": -3.164370099284497e-06, - "ACLR_L": -2.0592444300859825e-06, - "ACLR_R": -4.2694957684830115e-06, - "EVM": -9.776078826462253e-07, - "NMSE": 0.0 - }, - "train_loss": 0.0, - "val": { - "ACLR_AVG": -2.8244013101641485e-06, - "ACLR_L": 8.378235950345925e-06, - "ACLR_R": -1.4027038574226935e-05, - "EVM": -5.002445686130841e-06, - "NMSE": -3.814697265625e-06 - } - } - ] -} diff --git a/benchmark/results/e2e_dpa200_stride1_graph_optimized/batch_orders.npz b/benchmark/results/e2e_dpa200_stride1_graph_optimized/batch_orders.npz deleted file mode 100644 index a29c52e01799a13c68e37d5c4da1f2cfefc1149c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61949 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

>p* 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

pHmq}SmD-b_Uz_cPw+Ns` zamC{d%me3f59sDY$QQjT&iHI#&2R;4N|X^~Bwwdne~!CF-QZMNarixF=5Lj0#%WX zb!w|2Vh<@s1Dk1xtmCBcED|=gb5G7cwTxt5Gzy}?{zL3_?m4y1=idHGR5YB!m{?f{nUlJQrC>M%;v3j3hQ1mFl3FZOkitXRQjwEj>$+79y8PzW64J#mVUlk25Gk=iZ zI*&97!pHjJO{T5r*Gh6gkNeFa*f3xRTk|;5ZWTI&9z>n{l!~EAZ z0i{jSN#&;>|xGsH3tRk^SdG@EQgz~ z@fR}1ret9Wv%$#$XKHBjs(!?_I|=elIcFCkx^LtaX@?cyXo23Z$-9bw;G3^Q9Ws;x%yokjPR$8bc?~q5{`URu@UQu^ytV`FMAJJ zKIb`So52ABZB|*~4h$=3*|ML#&z>EAExNM7ta`?qjR+!kfC*P=y> zegGd^7D-|Sza=UbE&9Fve~T=^EC2s?b@Bhbib=pk|B2r17N3AS;lFJ8|6N)P-VcD! K72t;!E&6}t2KGJx diff --git a/benchmark/results/e2e_dpa200_stride1_graph_optimized/outputs.npz b/benchmark/results/e2e_dpa200_stride1_graph_optimized/outputs.npz deleted file mode 100644 index f9f07265f46edfdfab8bdb9fa2f00b4d58616599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171363 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 Q9>RF)MNc&&`PtL_AD7z7_y7O^ diff --git a/benchmark/results/e2e_dpa200_stride1_graph_optimized/result.json b/benchmark/results/e2e_dpa200_stride1_graph_optimized/result.json deleted file mode 100644 index 91fdd5c..0000000 --- a/benchmark/results/e2e_dpa200_stride1_graph_optimized/result.json +++ /dev/null @@ -1,235 +0,0 @@ -{ - "artifacts": { - "checkpoint": { - "path": "best_dpd.pt", - "sha256": "483ddb048f4669587ffad1d4b1a56770fde1e77fbb167270d5f4d332bdab04bb" - }, - "orders": { - "path": "batch_orders.npz", - "sha256": "e0b2af77bce626475759cd478b9b99b62296a4e5f521a4d13006ba1c79871c94" - }, - "outputs": { - "path": "outputs.npz", - "sha256": "d80c324ec16597eb926d5c79af2453e42c1011c77f4deecc691d18d09bdc0d3a" - } - }, - "best": { - "epoch": 0, - "test": { - "ACLR_AVG": -32.71305647867208, - "ACLR_L": -33.009571182277476, - "ACLR_R": -32.41654177506668, - "EVM": -25.649657576831792, - "NMSE": -24.16977882385254 - }, - "test_loss": 0.001644389471039176 - }, - "config": { - "batch_size": 64, - "cuda_graph_training": true, - "dataset_name": "DPA_200MHz", - "decay_factor": 0.5, - "dpd_backbone": "tres_deltagru", - "dpd_hidden_size": 15, - "epochs": 1, - "eval_batch_size": 256, - "frame_length": 200, - "frame_stride": 1, - "grad_clip": 200.0, - "hard_determinism": true, - "lr": 0.005, - "lr_end": 0.0001, - "lr_schedule": true, - "pa_backbone": "dgru", - "pa_hidden_size": 23, - "patience": 10, - "progress_display": false, - "seed": 0, - "tf32": false, - "thh": 0.05, - "thx": 0.01, - "train_batches": 357, - "train_frames": 22841 - }, - "environment": { - "cuda_runtime": "13.2", - "device": "cuda", - "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", - "git_dirty": true, - "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", - "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", - "python": "3.13.14", - "source_sha256": { - "backbones/tres_deltagru.py": "0351d322ce3ae615d0f1adfde2b76e8afaa0d85d6f9dc92f511905eca7762925", - "models.py": "8213485a8c63142704c8c5a03d165494a1556554eecd6ab864966b34230032bd", - "modules/cuda_graph_training.py": "dc6d9c436eb8a06145f9e5472cd6cb72deebcc2b08f44a278a3be21409dde620", - "modules/data_collector.py": "7f3b55f38f80820c10d399d161b8cd233bfaf8837dc43613dd1410d6ed649a4a", - "modules/train_funcs.py": "a77e77c9cc848dc8e09f47ba785365a4d37af5fa1b134fba9f7641abb0610031", - "project.py": "a27b508e91e9988e96a78544cd5afc00d699a1dfc8c6f9f9c60f4087037c690e" - }, - "timestamp_utc": "2026-07-11T11:40:29Z", - "torch": "2.13.0+cu132" - }, - "fixture": { - "pa_pretraining": { - "batch_size": 256, - "epoch_losses": [ - 0.19976529288623068, - 0.07552065874139467, - 0.035813659822775255, - 0.015496797549227873, - 0.0073165092151612045, - 0.004122809729435377, - 0.0028371868655085565, - 0.002260218708155056, - 0.0019730482547957863, - 0.001804672781791952, - 0.0016903372119284339, - 0.0016053243009890947, - 0.001537126708879239, - 0.0014795413240790366, - 0.0014301505237300364, - 0.001387344894465059, - 0.0013489203230063948, - 0.001313198775622166, - 0.0012807028911386927, - 0.0012508238070747918, - 0.001223458524327725, - 0.0011980035510431562, - 0.0011749541568052437, - 0.0011529860992191567, - 0.0011323490322360562, - 0.0011132779117259714, - 0.001094700538346337, - 0.0010788088470386962, - 0.0010624444707193308, - 0.0010472416890681619, - 0.0010330673915127085, - 0.0010188237324150072, - 0.0010063911839905712, - 0.0009942823542385465, - 0.0009820516201822708, - 0.0009706565599319421, - 0.0009600415631818275, - 0.0009499821249240388, - 0.0009395308883136345, - 0.0009299550076118774, - 0.0009213898977678683, - 0.0009129614317013572, - 0.0009045549577826427, - 0.0008978265001335077, - 0.0008889070233433611, - 0.0008808080501492238, - 0.0008747089848232766, - 0.0008677142930941449, - 0.0008612244461093925, - 0.0008541751471865508, - 0.0008492301761483153, - 0.0008438051025020994, - 0.0008372969226911664, - 0.0008320930349226627, - 0.0008262090624258337, - 0.0008212690894854152, - 0.0008170444033263872, - 0.0008116322116822832, - 0.0008085286788021525, - 0.0008024338063680463, - 0.0007971812136626492, - 0.0007941790558915171, - 0.0007888991599126409, - 0.0007850555250317686, - 0.0007812943005572177, - 0.0007774337214262535, - 0.0007736717008002517, - 0.0007680615494286434, - 0.000765761686488986, - 0.0007614624595993923, - 0.0007581874547112319, - 0.0007533019660816838, - 0.0007504364740776106, - 0.0007459188067716443, - 0.000741948351626181, - 0.000738971155240304, - 0.0007369754337964372, - 0.0007315872961448298, - 0.0007274452887941152, - 0.0007249550874500225, - 0.0007203698766210841, - 0.0007163520249175942, - 0.0007124568264569259, - 0.0007081288960762322, - 0.000703643683421736, - 0.0006989148180259185, - 0.0006963702481395255, - 0.000688923417409468, - 0.0006831818797056459, - 0.0006777228373620245, - 0.0006716486325280534, - 0.0006644388376217749, - 0.0006551507258942972, - 0.0006462268809425748, - 0.0006346332763011256, - 0.0006214740213989797, - 0.0006044942381170889, - 0.0005823747681764265, - 0.0005561722377832565, - 0.0005314765006510748 - ], - "epochs": 100, - "frame_stride": 1, - "lr": 0.0005, - "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." - }, - "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", - "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" - }, - "format_version": 1, - "implementation": "graph_optimized", - "repo_root": "/home/cgao/OpenDPD", - "timing": { - "artifact_serialization_s": 0.01625754899578169, - "best_dpd_inference_s": 0.003394366998691112, - "best_test_inference_s": 0.004571271012537181, - "best_test_metrics_s": 0.0009814579971134663, - "compile_and_warmup_s": 0.7809879879932851, - "epochs": [ - { - "checkpoint_s": 0.0004043390217702836, - "test_inference_s": 0.005362235009670258, - "test_metrics_s": 0.0014795080060139298, - "total_s": 12.899781111016637, - "train_s": 12.411166226986097, - "val_inference_s": 0.010366453003371134, - "val_metrics_s": 0.47100234898971394 - } - ], - "model_optimizer_setup_s": 0.0002124680031556636, - "peak_allocated_mib": 177.2939453125, - "peak_reserved_mib": 388.0, - "setup_data_s": 0.09390165901277214, - "total_s": 14.511434557003668 - }, - "trajectory": [ - { - "epoch": 0, - "lr": 0.005, - "test": { - "ACLR_AVG": -32.71305647867208, - "ACLR_L": -33.009571182277476, - "ACLR_R": -32.41654177506668, - "EVM": -25.649657576831792, - "NMSE": -24.16977882385254 - }, - "test_loss": 0.001644389471039176, - "train_loss": 0.025925103514337865, - "val": { - "ACLR_AVG": -31.68385412221796, - "ACLR_L": -31.760641592934252, - "ACLR_R": -31.60706665150167, - "EVM": -25.506404082643797, - "NMSE": -24.145689010620117 - }, - "val_loss": 0.0014899137895554304 - } - ] -} diff --git a/benchmark/results/e2e_dpa200_stride1_graph_repeat/batch_orders.npz b/benchmark/results/e2e_dpa200_stride1_graph_repeat/batch_orders.npz deleted file mode 100644 index a29c52e01799a13c68e37d5c4da1f2cfefc1149c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61949 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

>p* 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

pHmq}SmD-b_Uz_cPw+Ns` zamC{d%me3f59sDY$QQjT&iHI#&2R;4N|X^~Bwwdne~!CF-QZMNarixF=5Lj0#%WX zb!w|2Vh<@s1Dk1xtmCBcED|=gb5G7cwTxt5Gzy}?{zL3_?m4y1=idHGR5YB!m{?f{nUlJQrC>M%;v3j3hQ1mFl3FZOkitXRQjwEj>$+79y8PzW64J#mVUlk25Gk=iZ zI*&97!pHjJO{T5r*Gh6gkNeFa*f3xRTk|;5ZWTI&9z>n{l!~EAZ z0i{jSN#&;>|xGsH3tRk^SdG@EQgz~ z@fR}1ret9Wv%$#$XKHBjs(!?_I|=elIcFCkx^LtaX@?cyXo23Z$-9bw;G3^Q9Ws;x%yokjPR$8bc?~q5{`URu@UQu^ytV`FMAJJ zKIb`So52ABZB|*~4h$=3*|ML#&z>EAExNM7ta`?qjR+!kfC*P=y> zegGd^7D-|Sza=UbE&9Fve~T=^EC2s?b@Bhbib=pk|B2r17N3AS;lFJ8|6N)P-VcD! K72t;!E&6}t2KGJx diff --git a/benchmark/results/e2e_dpa200_stride1_graph_repeat/outputs.npz b/benchmark/results/e2e_dpa200_stride1_graph_repeat/outputs.npz deleted file mode 100644 index f9f07265f46edfdfab8bdb9fa2f00b4d58616599..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171363 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 Q9>RF)MNc&&`PtL_AD7z7_y7O^ diff --git a/benchmark/results/e2e_dpa200_stride1_graph_repeat/result.json b/benchmark/results/e2e_dpa200_stride1_graph_repeat/result.json deleted file mode 100644 index f453ab3..0000000 --- a/benchmark/results/e2e_dpa200_stride1_graph_repeat/result.json +++ /dev/null @@ -1,235 +0,0 @@ -{ - "artifacts": { - "checkpoint": { - "path": "best_dpd.pt", - "sha256": "483ddb048f4669587ffad1d4b1a56770fde1e77fbb167270d5f4d332bdab04bb" - }, - "orders": { - "path": "batch_orders.npz", - "sha256": "e0b2af77bce626475759cd478b9b99b62296a4e5f521a4d13006ba1c79871c94" - }, - "outputs": { - "path": "outputs.npz", - "sha256": "d80c324ec16597eb926d5c79af2453e42c1011c77f4deecc691d18d09bdc0d3a" - } - }, - "best": { - "epoch": 0, - "test": { - "ACLR_AVG": -32.71305647867208, - "ACLR_L": -33.009571182277476, - "ACLR_R": -32.41654177506668, - "EVM": -25.649657576831792, - "NMSE": -24.16977882385254 - }, - "test_loss": 0.001644389471039176 - }, - "config": { - "batch_size": 64, - "cuda_graph_training": true, - "dataset_name": "DPA_200MHz", - "decay_factor": 0.5, - "dpd_backbone": "tres_deltagru", - "dpd_hidden_size": 15, - "epochs": 1, - "eval_batch_size": 256, - "frame_length": 200, - "frame_stride": 1, - "grad_clip": 200.0, - "hard_determinism": true, - "lr": 0.005, - "lr_end": 0.0001, - "lr_schedule": true, - "pa_backbone": "dgru", - "pa_hidden_size": 23, - "patience": 10, - "progress_display": false, - "seed": 0, - "tf32": false, - "thh": 0.05, - "thx": 0.01, - "train_batches": 357, - "train_frames": 22841 - }, - "environment": { - "cuda_runtime": "13.2", - "device": "cuda", - "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", - "git_dirty": true, - "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", - "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", - "python": "3.13.14", - "source_sha256": { - "backbones/tres_deltagru.py": "0351d322ce3ae615d0f1adfde2b76e8afaa0d85d6f9dc92f511905eca7762925", - "models.py": "8213485a8c63142704c8c5a03d165494a1556554eecd6ab864966b34230032bd", - "modules/cuda_graph_training.py": "dc6d9c436eb8a06145f9e5472cd6cb72deebcc2b08f44a278a3be21409dde620", - "modules/data_collector.py": "7f3b55f38f80820c10d399d161b8cd233bfaf8837dc43613dd1410d6ed649a4a", - "modules/train_funcs.py": "a77e77c9cc848dc8e09f47ba785365a4d37af5fa1b134fba9f7641abb0610031", - "project.py": "a27b508e91e9988e96a78544cd5afc00d699a1dfc8c6f9f9c60f4087037c690e" - }, - "timestamp_utc": "2026-07-11T11:42:14Z", - "torch": "2.13.0+cu132" - }, - "fixture": { - "pa_pretraining": { - "batch_size": 256, - "epoch_losses": [ - 0.19976529288623068, - 0.07552065874139467, - 0.035813659822775255, - 0.015496797549227873, - 0.0073165092151612045, - 0.004122809729435377, - 0.0028371868655085565, - 0.002260218708155056, - 0.0019730482547957863, - 0.001804672781791952, - 0.0016903372119284339, - 0.0016053243009890947, - 0.001537126708879239, - 0.0014795413240790366, - 0.0014301505237300364, - 0.001387344894465059, - 0.0013489203230063948, - 0.001313198775622166, - 0.0012807028911386927, - 0.0012508238070747918, - 0.001223458524327725, - 0.0011980035510431562, - 0.0011749541568052437, - 0.0011529860992191567, - 0.0011323490322360562, - 0.0011132779117259714, - 0.001094700538346337, - 0.0010788088470386962, - 0.0010624444707193308, - 0.0010472416890681619, - 0.0010330673915127085, - 0.0010188237324150072, - 0.0010063911839905712, - 0.0009942823542385465, - 0.0009820516201822708, - 0.0009706565599319421, - 0.0009600415631818275, - 0.0009499821249240388, - 0.0009395308883136345, - 0.0009299550076118774, - 0.0009213898977678683, - 0.0009129614317013572, - 0.0009045549577826427, - 0.0008978265001335077, - 0.0008889070233433611, - 0.0008808080501492238, - 0.0008747089848232766, - 0.0008677142930941449, - 0.0008612244461093925, - 0.0008541751471865508, - 0.0008492301761483153, - 0.0008438051025020994, - 0.0008372969226911664, - 0.0008320930349226627, - 0.0008262090624258337, - 0.0008212690894854152, - 0.0008170444033263872, - 0.0008116322116822832, - 0.0008085286788021525, - 0.0008024338063680463, - 0.0007971812136626492, - 0.0007941790558915171, - 0.0007888991599126409, - 0.0007850555250317686, - 0.0007812943005572177, - 0.0007774337214262535, - 0.0007736717008002517, - 0.0007680615494286434, - 0.000765761686488986, - 0.0007614624595993923, - 0.0007581874547112319, - 0.0007533019660816838, - 0.0007504364740776106, - 0.0007459188067716443, - 0.000741948351626181, - 0.000738971155240304, - 0.0007369754337964372, - 0.0007315872961448298, - 0.0007274452887941152, - 0.0007249550874500225, - 0.0007203698766210841, - 0.0007163520249175942, - 0.0007124568264569259, - 0.0007081288960762322, - 0.000703643683421736, - 0.0006989148180259185, - 0.0006963702481395255, - 0.000688923417409468, - 0.0006831818797056459, - 0.0006777228373620245, - 0.0006716486325280534, - 0.0006644388376217749, - 0.0006551507258942972, - 0.0006462268809425748, - 0.0006346332763011256, - 0.0006214740213989797, - 0.0006044942381170889, - 0.0005823747681764265, - 0.0005561722377832565, - 0.0005314765006510748 - ], - "epochs": 100, - "frame_stride": 1, - "lr": 0.0005, - "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." - }, - "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", - "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" - }, - "format_version": 1, - "implementation": "graph_optimized", - "repo_root": "/home/cgao/OpenDPD", - "timing": { - "artifact_serialization_s": 0.016647059994284064, - "best_dpd_inference_s": 0.0035933740145992488, - "best_test_inference_s": 0.007317051000427455, - "best_test_metrics_s": 0.0012601740017998964, - "compile_and_warmup_s": 0.8712959540134761, - "epochs": [ - { - "checkpoint_s": 0.0006351550109684467, - "test_inference_s": 0.005814445001306012, - "test_metrics_s": 0.0011821069929283112, - "total_s": 12.264488988032099, - "train_s": 11.811336595012108, - "val_inference_s": 0.009584471001289785, - "val_metrics_s": 0.43593621501349844 - } - ], - "model_optimizer_setup_s": 0.00022591199376620352, - "peak_allocated_mib": 177.2939453125, - "peak_reserved_mib": 388.0, - "setup_data_s": 0.08836299000540748, - "total_s": 13.95791669600294 - }, - "trajectory": [ - { - "epoch": 0, - "lr": 0.005, - "test": { - "ACLR_AVG": -32.71305647867208, - "ACLR_L": -33.009571182277476, - "ACLR_R": -32.41654177506668, - "EVM": -25.649657576831792, - "NMSE": -24.16977882385254 - }, - "test_loss": 0.001644389471039176, - "train_loss": 0.025925103514337865, - "val": { - "ACLR_AVG": -31.68385412221796, - "ACLR_L": -31.760641592934252, - "ACLR_R": -31.60706665150167, - "EVM": -25.506404082643797, - "NMSE": -24.145689010620117 - }, - "val_loss": 0.0014899137895554304 - } - ] -} diff --git a/benchmark/results/e2e_dpa200_stride1_original/batch_orders.npz b/benchmark/results/e2e_dpa200_stride1_original/batch_orders.npz deleted file mode 100644 index a29c52e01799a13c68e37d5c4da1f2cfefc1149c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61949 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

>p* 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

pHmq}SmD-b_Uz_cPw+Ns` zamC{d%me3f59sDY$QQjT&iHI#&2R;4N|X^~Bwwdne~!CF-QZMNarixF=5Lj0#%WX zb!w|2Vh<@s1Dk1xtmCBcED|=gb5G7cwTxt5Gzy}?{zL3_?m4y1=idHGR5YB!m{?f{nUlJQrC>M%;v3j3hQ1mFl3FZOkitXRQjwEj>$+79y8PzW64J#mVUlk25Gk=iZ zI*&97!pHjJO{T5r*Gh6gkNeFa*f3xRTk|;5ZWTI&9z>n{l!~EAZ z0i{jSN#&;>|xGsH3tRk^SdG@EQgz~ z@fR}1ret9Wv%$#$XKHBjs(!?_I|=elIcFCkx^LtaX@?cyXo23Z$-9bw;G3^Q9Ws;x%yokjPR$8bc?~q5{`URu@UQu^ytV`FMAJJ zKIb`So52ABZB|*~4h$=3*|ML#&z>EAExNM7ta`?qjR+!kfC*P=y> zegGd^7D-|Sza=UbE&9Fve~T=^EC2s?b@Bhbib=pk|B2r17N3AS;lFJ8|6N)P-VcD! K72t;!E&6}t2KGJx diff --git a/benchmark/results/e2e_dpa200_stride1_original/outputs.npz b/benchmark/results/e2e_dpa200_stride1_original/outputs.npz deleted file mode 100644 index 01f1c8b59d2c9e2b7dc93373fb90985e8a29a5d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171372 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: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� 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

dP{+`@W)vn>r^RX9(2(LTdR|xO9n>?hTrN#p@iX zxJn)WDr^!=zRrdX!%Cp;jWNwR))UA7ZlrPMTG%kUgI& z^F@0!z{}!|#tL|oe?a_m;=6dDt{bFRbrH zJ1f^?PfrE1RjS0tKKA^!xfWmSPhj`F1bnuB56AB>hqB(5tocTki=)0t8b&7aBiFHb zHlctw{8Ko^*&CSt&35CjCsJ-uf7GA-1p1FI5+BamfVz>^{L?HRQ^$t$ngM=zr)vYh zN$G=coAh|5OEjztokoA>=|ZFTalt$+4$PAj;KdkaoMWma2D^LW9Q!0vxeDyloAiH;drg7fO*@T~U<*z;N*jP8AgqtAAU^|#v~r!kSv)$M^P zOM39FxFf>6#R9kIrHL(i^Et1_5c)KI25aB+Aj@D~_I$RAeymKSeH=kA8tnz|K{52e zBm%6mRukkV!m7Bp;%~3P@WFbw(C1H*-QMsWpg%rROtCu;RWVD2(|@W#>~#iucg%$i zp9D1C@LW1JJsRUocGIcGbeviKh(2GB!c8fE>9hMt)UNqOD`H~cNB94zWw{c~5R~}K zsQZ*S)r=MQ^y9=QPCVbpieF~C@e8kU{OIv8PKlerp$D(hCucfe-&7HUw8fo+fcB>81+!WB^$D)0CRUR%{6ZRiwouoqtWccWxOb1XjbfMk}1U}>#9CkUBnolr!& zBXZGx_g5h&HxY-Jnc!y2K$IlxMBPObP+XagF9&PlZ}l+jIB*M=l?+Db=j_OjSZQ7kHoK?Yslr)Ow5kgrpm{PsP}n+y;|xn z@a*aV{e^0waOy;e9xNxxF7N{5g~P?Rs7P=h+$BCysDr0dBB^VQHilO>kaJ%LOg{RD zJUS-gGy6XjvQid;%w;~@f6LSYs%+xZ_p=;RPNTxkj1V;{5WhIKWg62Cre9t zvCUDsxaB+_&bbW(Mpy8ss~fPyD3tqdjlzCMUeS*gW;lClk<`36yE@?WS)t+SATEk? zq#&6fmJJ!tEBt5jcGbh&_h2bask_dak#R6#!x=94VvU|^ZhYCw4rfIlmkhJ11lud4 zaL3~n)URR--t}=}HDw#zc{her&ZbG09NWpYV<+(A>n<#(UdW|AyYZ}BNBODKS^BQG zng7~dBiZPqwB13G+npA`2~BNQXl#RJ>ucy~{(9K{p%17Y-$^d!3o&b~3yWq~(BXX? z7nsV9d+|uF?1k@zl?k6{P6VJd?<3{boWwzAK9bGu&nWqDmkzhf zjhmU4M;f{BF6lpqFmPI}WZ*k}9OW__bR)Xp{E8PK>zxX1CA#=?UWxE(rVcg-dy5+_u7Hz9 zqsVHmLU3NAD7z?+RO`D_&I3*EULQ`0Q`#~-S@Wy?G5JUID{HOtOO=Ht8{O5DBc5G1D19F7T^#6@lkv1dgH?`s^15{q!ItT_!X#~j&1 zd5v_|;9{CFbqD#23*qC54Dt`L#lnS})ZiP2PNfY(!Qn{!{%${b4WEXSLoPz#?niL$ zVLZqvFBWR=g-Jrb&!J1N^GJPN9_3EZI zztTnSFSpT+&+)Y5%wu}Cgv60A^*CmCqQrFk7}niATDaZcj-OR`ul87L#wM$7i>e3v zFkRV1BdcWi_0M{e4Q?l+ee!(e)f0Lr(dCk&dUD*-p9e}3sMqXQ)c*dSXfs=zZf|ZB zyi+p3Y*{8;u9}9s#y^G$J_k`YLk8VyE~BO4U+@oa!1QHL;Biw4&iPReZ5>lEbn{ZE z4*e-C?+Ze?RTtUpoIsWZzTCgKgI1@9^1c=Jd^yB{PdY5;W1IKU{`{q^itga_*^68*P4)uZtL+R~-s8pjii#$b`qVb;E%-*Rx{JF;Mw7 ziX#$x)5VG{yz^2SH7s=Hjqfj0&;?z7G&q}Pc6=h`$ZixoyNSxJX9^CNuhZ+L0NqYC z(XKPwAl+W1HNE{{yxS(qQRxGguWwe*J~lvl_00izs4|y+ZW@NuH$0}Kn-S=2X2dp& z4&a7S_AGm_1n&;F3 z=0Wv(@UgOq=7D~&?F+Ir+^+L~M zmqG%@{XU3=$5YT~gDWm9cEle^@zBSsR9JBQz8G<21Z&i^)Z$vvV!pQyV@Cw&6>i`RVq)e^_m z{SI8t@PS#0}gL~B5r;+5bbVM!n-9t@P6`KocK$IoV+t}$gD$@9-oKjmzPuI?nr#J zd?n3YHvm_T?=OD3ItXqJ?gg2fwMk|6LKyG8l1{`(;IQc}@y61P!UV(jLfF0oV&#ft z7?!C(K}q{zkdPxaP9Fyc*JXfwN`$>FPQ<`@t>R|;gE;P*rkH=B85LUBgH6pd)R!~F z%HtPtD~I6XF{mqoX)uG8QYGa{RqeFB_?i8l^xJVz&nq_}kS|sc}qa#k*&?=Z+HxpNn?_V|0;IOzvKbF4L zEugEJmK@ag5d|Dh;K&gstUtb*7k)xs8GMPGoJ`r_`!OD|p^{$y_T?8ppGZm{6j2se zfkmn{yxiOkPyKxWgEH>G$5*wWa$f;L&({h;Cuh;Fj0m#uc~9N5I>@|Jp5N|oqMDD_ z$zXGV=(cPGnJ=$_$+}YnQUg3a+8+AdbVFIAd9dnJ7r2j@28CZgiqEevg>S{4e0kYn zxT{&lY7e{N)JIo%dAT))$dvQvzK(cYcQtQ{wnoAA65Y{mhasM-Vz9w55HCw5bqYmd zz|6_?t9T}DT&BqJZZ34H#hIUXy%y*8cjcCmW5h*QdhjR9Xff!KmpDOoJgMZ}gHIi2 z$a%IMs)zrf_9YYW=Pd=+0u}uB?K2I29Rh8pL?^Dx3BT@S(}^xKVe76uS`@bz<}_U( zjruWIE`3A_FZW>g!A!!3L#Vpikn|R%qsdfL&`FTsyRYxSZO&ui%Rp`Hm?qB}BVR+O zG?cFf)(Q)LW^wc2Bc%N;nTL!p=CoHU*|5JUPgy;Xo%sy?q$*mq@s+Tsmor^HuYiBn z-4K&yhofW4RjKIF2{-o^3L|fQlKwfl5+F;D2Ysl8ec?Mey6h_~&r0Cd5${1QWE#L;rOJ;Q2NUx5R8j{cGWE1Jj!=9O7b`yeuM~ox zTK;?WeX=Wz=jUrza_`M~T=QTSKW|Fll_eADd(AYy7w3rP%Fie*?B5hGY|uZCJGXoCVB?1zyMF`!5}LTT_i9$(pU73= z_I&JTH+H}CketP0v19X9F}muOWWTBngnw6}m5Xw~{;!ng1#br{{b$rZ=85EV>?(4< z5l8cFH-oah0$)g-imoO4Twk7rW@~;>!J7g!j!>h!A0p5sa4)Rh-VJxuTBF8YOR?5q zIo2AzqK;N?OuXEmC1dr_K>jyf_?`&;1DDVl@w)x8$yq|`%#UIpAsOyvCyN8FoQ54H zc|x3KHuwbk!tQ2kc;}P^NhxE6WjB^XL&yzjNo$SJH#DhwP2mHn;msF9&$-Fs%(t1K z(bgm#rY?j3RfGu>tp;Ji(GFqci$QoRwO9ylehW)udxPO ztogjEzd!5U9SQYMCbRe99eASiAl-U=8rM%q0KJfWOfhoA$P*(lpd|=Re_yDQ%bJQ| zj}+Nge`8qTgqu8SSx45NzIS;o?C7&Ei{^{3~ zr_Opon-30UkC%b8amWDvI(xYII4YkUTy}(&JeDtqiQxPQI{izSV#$-bG4i%{GHx@U{ z*f+NFZX_OF7(w~9(U_~NT?DqHwrET(fR9Fn431ob#z$By^X zNzP_B*Tin8@W;D2T*IAWdJf~plWQsdp1XK!-Z@%%MH6Re>+t9c+pxEV7nhBW!tEEs zI7odW=A`Z5^v?(3=)_grbmO2X=@`aA1rg*|eV6Wes*s=iavFJf8oXLFoce6&i@E>& zg&pxk?OUo`9^{Cx9p>|yiC4k-Q4A-obEi4WcX79^Gg(V^0*^R(kgs%%rpNXtIIlwy z-GgFyUu+h>9PpHa>l@IftQ^c$Z{fVW-53>Hins1uLZx*xu$%HdRMO3dteaKXw==0) zeey;;+7coDzEc6S5|f3lbB?rP@j4I!Re8(oFz7bXnwS075H2Sg^JU{QdeH4BZQf(c zD-%k|{qIbk9UM-hNA_d0fG}ECcSIV#H<>2dW%T`= zQ$iv{R;7$WNg}e6A}Uf^N<%|Np(t7P{hZS

%0-VM8uemtJP?tkz5I@jx5@AEo0 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 diff --git a/benchmark/results/e2e_dpa200_stride1_original/result.json b/benchmark/results/e2e_dpa200_stride1_original/result.json deleted file mode 100644 index ec2c823..0000000 --- a/benchmark/results/e2e_dpa200_stride1_original/result.json +++ /dev/null @@ -1,233 +0,0 @@ -{ - "artifacts": { - "checkpoint": { - "path": "best_dpd.pt", - "sha256": "483ddb048f4669587ffad1d4b1a56770fde1e77fbb167270d5f4d332bdab04bb" - }, - "orders": { - "path": "batch_orders.npz", - "sha256": "e0b2af77bce626475759cd478b9b99b62296a4e5f521a4d13006ba1c79871c94" - }, - "outputs": { - "path": "outputs.npz", - "sha256": "fd33f4627676badc13412a5d8a6a28993e2f09d2623878944d1d6e2ae0d7ffc2" - } - }, - "best": { - "epoch": 0, - "test": { - "ACLR_AVG": -32.71305331430198, - "ACLR_L": -33.009569123033046, - "ACLR_R": -32.416537505570915, - "EVM": -25.64965659922391, - "NMSE": -24.16977882385254 - }, - "test_loss": 0.0016443891217932105 - }, - "config": { - "batch_size": 64, - "dataset_name": "DPA_200MHz", - "decay_factor": 0.5, - "dpd_backbone": "tres_deltagru", - "dpd_hidden_size": 15, - "epochs": 1, - "eval_batch_size": 256, - "frame_length": 200, - "frame_stride": 1, - "grad_clip": 200.0, - "hard_determinism": true, - "lr": 0.005, - "lr_end": 0.0001, - "lr_schedule": true, - "pa_backbone": "dgru", - "pa_hidden_size": 23, - "patience": 10, - "progress_display": false, - "seed": 0, - "tf32": false, - "thh": 0.05, - "thx": 0.01, - "train_batches": 357, - "train_frames": 22841 - }, - "environment": { - "cuda_runtime": "13.2", - "device": "cuda", - "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", - "git_dirty": false, - "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", - "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", - "python": "3.13.14", - "source_sha256": { - "backbones/tres_deltagru.py": "696b7215c19d64071e443e1b3b493d8fca7b8f83f2fce6e3c29fadea54542b87", - "models.py": "7634689e74dc9b19dedaff34f19ab5231fb6f337c58a3919fc98b196b0db56fe", - "modules/data_collector.py": "7ceb56237cc9366a23e6bc609c1122745b4d524e351148cc513bf52df8f2337c", - "modules/train_funcs.py": "8fa61983ce7a5ebb4b7729260305032de9caf2b9d77004333ebc2414383819ea", - "project.py": "9251b12dff20b42fb3591913b2ebe84689a0d13bb90fe998281ac61952ec971c" - }, - "timestamp_utc": "2026-07-11T11:26:26Z", - "torch": "2.13.0+cu132" - }, - "fixture": { - "pa_pretraining": { - "batch_size": 256, - "epoch_losses": [ - 0.19976529288623068, - 0.07552065874139467, - 0.035813659822775255, - 0.015496797549227873, - 0.0073165092151612045, - 0.004122809729435377, - 0.0028371868655085565, - 0.002260218708155056, - 0.0019730482547957863, - 0.001804672781791952, - 0.0016903372119284339, - 0.0016053243009890947, - 0.001537126708879239, - 0.0014795413240790366, - 0.0014301505237300364, - 0.001387344894465059, - 0.0013489203230063948, - 0.001313198775622166, - 0.0012807028911386927, - 0.0012508238070747918, - 0.001223458524327725, - 0.0011980035510431562, - 0.0011749541568052437, - 0.0011529860992191567, - 0.0011323490322360562, - 0.0011132779117259714, - 0.001094700538346337, - 0.0010788088470386962, - 0.0010624444707193308, - 0.0010472416890681619, - 0.0010330673915127085, - 0.0010188237324150072, - 0.0010063911839905712, - 0.0009942823542385465, - 0.0009820516201822708, - 0.0009706565599319421, - 0.0009600415631818275, - 0.0009499821249240388, - 0.0009395308883136345, - 0.0009299550076118774, - 0.0009213898977678683, - 0.0009129614317013572, - 0.0009045549577826427, - 0.0008978265001335077, - 0.0008889070233433611, - 0.0008808080501492238, - 0.0008747089848232766, - 0.0008677142930941449, - 0.0008612244461093925, - 0.0008541751471865508, - 0.0008492301761483153, - 0.0008438051025020994, - 0.0008372969226911664, - 0.0008320930349226627, - 0.0008262090624258337, - 0.0008212690894854152, - 0.0008170444033263872, - 0.0008116322116822832, - 0.0008085286788021525, - 0.0008024338063680463, - 0.0007971812136626492, - 0.0007941790558915171, - 0.0007888991599126409, - 0.0007850555250317686, - 0.0007812943005572177, - 0.0007774337214262535, - 0.0007736717008002517, - 0.0007680615494286434, - 0.000765761686488986, - 0.0007614624595993923, - 0.0007581874547112319, - 0.0007533019660816838, - 0.0007504364740776106, - 0.0007459188067716443, - 0.000741948351626181, - 0.000738971155240304, - 0.0007369754337964372, - 0.0007315872961448298, - 0.0007274452887941152, - 0.0007249550874500225, - 0.0007203698766210841, - 0.0007163520249175942, - 0.0007124568264569259, - 0.0007081288960762322, - 0.000703643683421736, - 0.0006989148180259185, - 0.0006963702481395255, - 0.000688923417409468, - 0.0006831818797056459, - 0.0006777228373620245, - 0.0006716486325280534, - 0.0006644388376217749, - 0.0006551507258942972, - 0.0006462268809425748, - 0.0006346332763011256, - 0.0006214740213989797, - 0.0006044942381170889, - 0.0005823747681764265, - 0.0005561722377832565, - 0.0005314765006510748 - ], - "epochs": 100, - "frame_stride": 1, - "lr": 0.0005, - "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." - }, - "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", - "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" - }, - "format_version": 1, - "implementation": "original", - "repo_root": "/tmp/OpenDPD-e2e-baseline", - "timing": { - "artifact_serialization_s": 0.019847713003400713, - "best_dpd_inference_s": 1.7315914120117668, - "best_test_inference_s": 1.61172785499366, - "best_test_metrics_s": 0.0012631099962163717, - "compile_and_warmup_s": 0.8425095450074878, - "epochs": [ - { - "checkpoint_s": 0.0005106719909235835, - "test_inference_s": 1.7132897100236733, - "test_metrics_s": 0.001207570981932804, - "total_s": 90.78155352899921, - "train_s": 86.86389361001784, - "val_inference_s": 1.6413530060090125, - "val_metrics_s": 0.5612989599758293 - } - ], - "model_optimizer_setup_s": 0.00024529400980100036, - "peak_allocated_mib": 113.1044921875, - "peak_reserved_mib": 124.0, - "setup_data_s": 0.08421342200017534, - "total_s": 95.78045028200722 - }, - "trajectory": [ - { - "epoch": 0, - "lr": 0.005, - "test": { - "ACLR_AVG": -32.71305331430198, - "ACLR_L": -33.009569123033046, - "ACLR_R": -32.416537505570915, - "EVM": -25.64965659922391, - "NMSE": -24.16977882385254 - }, - "test_loss": 0.0016443891217932105, - "train_loss": 0.025925103514337865, - "val": { - "ACLR_AVG": -31.68385129781665, - "ACLR_L": -31.760649971170203, - "ACLR_R": -31.607052624463094, - "EVM": -25.50639908019811, - "NMSE": -24.14568519592285 - }, - "val_loss": 0.0014899144880473614 - } - ] -} diff --git a/benchmark/results/end_to_end_summary.json b/benchmark/results/end_to_end_summary.json deleted file mode 100644 index 5d7adc8..0000000 --- a/benchmark/results/end_to_end_summary.json +++ /dev/null @@ -1,165 +0,0 @@ -{ - "recorded_date": "2026-07-11", - "source_base_revision": "0976ce39fc664727ab7ab640ccb349679f05d84f", - "system": { - "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", - "python": "3.13.14", - "torch": "2.13.0+cu132", - "cuda": "13.2", - "triton": "3.7.1", - "precision": "FP32", - "tf32": false, - "hard_determinism": true - }, - "benchmark_contract": { - "dataset": "DPA_200MHz", - "pa": "DGRU H23, one deterministic 100-epoch surrogate fixture shared by every arm", - "pa_fixture_sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c", - "dpd": "TRes-DeltaGRU H15", - "thresholds": { - "thx": 0.01, - "thh": 0.05 - }, - "frame_length": 200, - "batch_size": 64, - "optimizer": "AdamW", - "learning_rate": 0.005, - "gradient_clip": 200.0, - "acceptance": { - "prediction_relative_l2_max": 0.0001, - "rf_metric_absolute_delta_db_max": 0.05, - "same_fixture": true, - "same_batch_orders": true - } - }, - "production_density": { - "frame_stride": 1, - "train_frames": 22841, - "train_batches": 357, - "epochs": 1, - "reference": { - "total_s": 95.78045028200722, - "train_s": 86.86389361001784, - "test_metrics_db": { - "ACLR_L": -33.009569123033046, - "ACLR_R": -32.416537505570915, - "ACLR_AVG": -32.71305331430198, - "EVM": -25.64965659922391, - "NMSE": -24.16977882385254 - } - }, - "strict_graph_runs": [ - { - "total_s": 14.511434557003668, - "train_s": 12.411166226986097, - "total_speedup": 6.600343329652451, - "train_speedup": 6.99885023062105 - }, - { - "total_s": 13.95791669600294, - "train_s": 11.811336595012108, - "total_speedup": 6.862087829298724, - "train_speedup": 7.354281449120687 - } - ], - "equivalence": { - "checkpoint_max_abs": 0.0, - "checkpoint_max_relative_l2": 0.0, - "cascade_output_max_abs": 0.000004947185516357422, - "cascade_output_relative_l2": 0.0000017005846856815116, - "dpd_output_max_abs": 0.0000009201467037200928, - "dpd_output_relative_l2": 0.0000015120332981750944, - "metric_deltas_db": { - "ACLR_L": -0.0000020592444300859825, - "ACLR_R": -0.0000042694957684830115, - "ACLR_AVG": -0.000003164370099284497, - "EVM": -0.0000009776078826462253, - "NMSE": 0.0 - }, - "maximum_absolute_metric_delta_db": 0.0000042694957684830115, - "passed": true - } - }, - "three_epoch_gate": { - "frame_stride": 16, - "train_batches_per_epoch": 23, - "epochs": 3, - "arms": [ - { - "implementation": "Exact committed original", - "total_s": 32.03585798398126, - "train_s": 17.237055696023162, - "total_speedup": 1.0, - "train_speedup": 1.0, - "cascade_output_relative_l2": 0.0, - "maximum_absolute_metric_delta_db": 0.0, - "accepted": true - }, - { - "implementation": "Clean eager pipeline", - "total_s": 24.029687639005715, - "train_s": 13.491934273974039, - "total_speedup": 1.3331782945018265, - "train_speedup": 1.2775822462516342, - "cascade_output_relative_l2": 0.0, - "maximum_absolute_metric_delta_db": 0.0, - "accepted": true - }, - { - "implementation": "Strict whole-cascade CUDA graph", - "total_s": 5.458723943011137, - "train_s": 3.434560444991803, - "total_speedup": 5.868744841914403, - "train_speedup": 5.018707916804272, - "cascade_output_relative_l2": 0.0000020480301293249045, - "maximum_absolute_metric_delta_db": 0.0000024523588528779783, - "accepted": true - }, - { - "implementation": "Direct persistent Triton training", - "total_s": 2.3912337490182836, - "train_s": 0.36852700999588706, - "total_speedup": 13.397208866399414, - "train_speedup": 46.77284222997803, - "cascade_output_relative_l2": 0.010411809662242288, - "maximum_absolute_metric_delta_db": 0.03461828059020533, - "accepted": false, - "rejection_reason": "RF metrics passed, but the final output exceeded the predeclared relative-L2 equivalence limit after three epochs." - } - ] - }, - "isolated_results": { - "tres_backbone_training_step": { - "reference_ms": 164.302, - "optimized_ms": 1.692, - "speedup": 97.11 - }, - "frozen_dgru_forward_input_backward": { - "reference_ms": 1.2673, - "optimized_ms": 0.3261, - "speedup": 3.886, - "output_and_input_gradient_bitwise": true - } - }, - "validation": { - "pytest_non_extended_passed": 164, - "pytest_extended_passed": 19, - "pytest_total_passed": 183, - "benchmark_repeat_count_production_optimized": 2, - "diff_check_clean": true - }, - "raw_sources": [ - "benchmark/results/e2e_dpa200_stride1_comparison_graph.json", - "benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json", - "benchmark/results/e2e_dpa200_stride16_comparison_eager.json", - "benchmark/results/e2e_dpa200_stride16_comparison_graph.json", - "benchmark/results/e2e_dpa200_stride16_comparison_fused.json", - "benchmark/results/tres_deltagru_rtx4090_laptop.json" - ], - "limitations": [ - "The repository contained no pretrained PA checkpoint, so all arms used the same deterministic surrogate PA trained once on the bundled dataset.", - "The production-density comparison covers one 357-update epoch, while the multi-epoch gate covers three 23-update epochs; it is not a 240- or 300-epoch convergence study.", - "The strict CUDA-graph path is an explicit opt-in specialized to the measured FP32 TRes-DeltaGRU to frozen-DGRU cascade and MSE training.", - "Existing EVM semantics were preserved: calculate_metrics does not forward the dataset sample rate to EVM, so its default 800 MHz is used." - ] -} diff --git a/benchmark/results/tres_deltagru_rtx4090_laptop.json b/benchmark/results/tres_deltagru_rtx4090_laptop.json deleted file mode 100644 index 6f2c3fd..0000000 --- a/benchmark/results/tres_deltagru_rtx4090_laptop.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "recorded_date": "2026-07-11", - "source_base_revision": "0976ce39fc664727ab7ab640ccb349679f05d84f", - "source_state": "dirty: includes the TRes-DeltaGRU optimization in this working tree", - "command": ".venv/bin/python benchmark/benchmark_tres_deltagru.py", - "system": { - "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", - "python": "3.13.14", - "torch": "2.13.0+cu132", - "triton": "3.7.1", - "device": "NVIDIA GeForce RTX 4090 Laptop GPU", - "compute_capability": "8.9", - "driver": "610.74", - "cuda": "13.2", - "cudnn": 92000, - "matmul_tf32": false, - "cudnn_tf32": false - }, - "config": { - "batch_size": 64, - "sequence_length": 200, - "hidden_size": 15, - "thx": 0.01, - "thh": 0.05, - "dtype": "float32", - "optimizer": "AdamW", - "learning_rate": 0.0005, - "grad_clip": 200.0, - "warmup_steps": 5, - "blocks": 7, - "reference_steps_per_block": 5, - "fused_steps_per_block": 100, - "seed": 0 - }, - "equivalence": { - "check_batch_size": 8, - "output": { - "max_abs": 6.079673767089844e-06, - "mean_abs": 8.64025196278817e-07, - "relative_l2": 1.3402454897004645e-06 - }, - "input_gradient": { - "max_abs": 1.461885403841734e-07, - "mean_abs": 5.326960206275544e-09, - "relative_l2": 1.4971470591262914e-05 - }, - "loss_abs": 1.1920928955078125e-07, - "maximum_parameter_gradient_error": { - "parameter": "backbone.rnn.x2h.weight", - "max_abs": 7.152557373046875e-07, - "relative_l2": 8.59947533626837e-07 - } - }, - "results": [ - { - "implementation": "eager-clean", - "steps_per_block": 5, - "block_ms_per_step": [ - 164.302, - 164.948, - 176.296, - 158.841, - 164.257, - 169.615, - 163.938 - ], - "median_ms": 164.302, - "iqr_block_means_ms": 3.184, - "sequence_positions_per_second": 77905, - "peak_allocated_mib": 25.3, - "speedup": 1.0 - }, - { - "implementation": "triton-fused", - "steps_per_block": 100, - "block_ms_per_step": [ - 1.692, - 1.762, - 1.707, - 1.690, - 1.752, - 1.684, - 1.675 - ], - "median_ms": 1.692, - "iqr_block_means_ms": 0.043, - "sequence_positions_per_second": 7565624, - "peak_allocated_mib": 27.5, - "speedup": 97.11 - } - ] -} diff --git a/benchmark/train_all_pa_2700.sh b/benchmark/train_all_pa_2700.sh deleted file mode 100755 index b34347b..0000000 --- a/benchmark/train_all_pa_2700.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env bash -# Train every viable PA backbone at ~2700 params with the OpenDPDv2 recipe. -set -u -cd "$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -LOGDIR=${LOGDIR:-/tmp/opendpd_pa2700_logs} -mkdir -p "$LOGDIR" -DATASET=${DATASET:-APA_200MHz} -PYTHON=${PYTHON:-python} -export LOGDIR DATASET PYTHON - -# backbone:hidden_size (fast/cheap first so results land early) -JOBS=( - tcn:93 - rvtdcnn:68 - mcldnn:11 - gru:28 - lstm:24 - tres_gru:27 - dgru:23 - vdlstm:22 - qgru:27 - pgjanet:19 - dvrjanet:19 - deltajanet:32 - apnrru:34 - deltagru:26 -) - -run_one() { - local spec="$1" - local bb="${spec%%:*}" - local h="${spec##*:}" - local log="$LOGDIR/${DATASET}_${bb}_h${h}.log" - echo "[START] $bb h=$h" - "${PYTHON:-python}" main.py --step train_pa \ - --dataset_name "$DATASET" --PA_backbone "$bb" --PA_hidden_size "$h" \ - --n_epochs 240 --lr 5e-3 --lr_schedule 1 --lr_end 1e-4 \ - --decay_factor 0.5 --patience 10 --batch_size 64 > "$log" 2>&1 - echo "[DONE ] $bb h=$h exit=$?" -} -export -f run_one - -printf '%s\n' "${JOBS[@]}" | xargs -P "${CONC:-5}" -I{} bash -c 'run_one "$@"' _ {} -echo "ALL TRAINING COMPLETE" diff --git a/benchmark/tres_deltagru_end_to_end_report.html b/benchmark/tres_deltagru_end_to_end_report.html deleted file mode 100644 index 256a276..0000000 --- a/benchmark/tres_deltagru_end_to_end_report.html +++ /dev/null @@ -1,4900 +0,0 @@ - - - - - - - - -TRes-DeltaGRU end-to-end training optimization - - - -

Data Analytics report

TRes-DeltaGRU end-to-end training optimization

A controlled speed and numerical-equivalence study of OpenDPD TRes-DeltaGRU training.

-

Executive Summary

-

The recommended strict path is guarded whole-cascade CUDA-graph training, enabled with --cuda_graph_training. On the 357Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-update production-density workload it reduced total time from 95.78Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s to 14.51Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s and 13.96Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s across two runs (6.60Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json6.86Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json×) and training time from 86.86Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s to 12.41Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s and 11.81Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json s (7.00Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json7.35Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json×). The selected DPD checkpoint was bitwise identical, cascade output relative L2 error was 1.70e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json, and the largest ACLR/NMSE/EVM difference was 4.27e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json dB.

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

-

End-to-end speedup

6.60–6.86×Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Process workload speedup for 357 training updates plus validation, test, RF metrics, and artifacts.

Training speedup 7.00–7.35×Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
Process workload speedup for 357 training updates plus validation, test, RF metrics, and artifacts.Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

Cascade output rel-L2

≤ 1.70e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Relative L2 difference between the original and optimized cascaded neural-network outputs.

Maximum absolute error ≤ 4.95e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
Relative L2 difference between the original and optimized cascaded neural-network outputs.Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

Maximum RF-metric delta

≤ 4.27e-6 dBSource: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Largest absolute difference across ACLR-left, ACLR-right, ACLR-average, EVM, and NMSE.

Acceptance limit 0.05 dBSource: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
Largest absolute difference across ACLR-left, ACLR-right, ACLR-average, EVM, and NMSE.Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

DPD checkpoint

Bitwise exactSource: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Comparison of every tensor in the selected best DPD state dictionary.

Best epoch SameSource: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
Comparison of every tensor in the selected best DPD state dictionary.Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

-

Key findings

-
  • The isolated persistent Triton backbone remains the fastest kernel-level method at 97.11Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json×, but long training amplifies its small FP32 differences around delta thresholds.
  • Direct persistent-Triton end-to-end training reached 13.40Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json× total and 46.77Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json× training speedup in the three-epoch gate, yet its final cascade output relative L2 error reached 1.04e-2Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json. It was rejected even though its RF metrics stayed within 0.035Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json dB.
  • Capturing the existing clean-eager cascade preserves its PyTorch/cuDNN arithmetic and removes recurrent launch overhead. It is slower than direct Triton but passes every output, checkpoint, and RF-metric gate.
  • Loop/data cleanups alone are bitwise exact and improve total time 1.33Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json×.
Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

-

Lower is faster. The strict whole-cascade graph is the fastest accepted method.

Three-epoch controlled workload time data
ImplementationTotal timeTraining timeTotal speedupOutput rel-L2Accepted
Exact original32.04s17.2410Yes
Clean eager pipeline24.03s13.491.330Yes
Strict whole-cascade graph5.46s3.435.870Yes
Direct persistent Triton2.39s0.3713.40.01No
-

Why the strict graph is the recommendation

-

The graph records the original eager TRes-DeltaGRU, MSE loss, gradient clearing, frozen-PA input backward, and DPD backward. It replays those exact kernels at fixed shapes while leaving batch copies, gradient clipping, AdamW, scheduling, validation, testing, and checkpoint selection outside the graph. Full and partial batches share stable gradient buffers and one capture stream. Unsupported calls fall back to clean eager training; evaluation restores the fused inference path.

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

-

Optimization candidate decision

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

Optimization candidate decision
ImplementationTotal sTrain sSpeedupOutput rel-L2Max RF delta, dBAccepted
Direct persistent Triton2.39Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0.37Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json13.4Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0.01Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0.03Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.jsonNo
Strict whole-cascade graph5.46Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json3.43Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json5.87Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.jsonYes
Clean eager pipeline24.03Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json13.49Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json1.33Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.jsonYes
Exact original32.04Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json17.24Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json1Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.jsonYes
-

Output and RF equivalence

-

The production-density optimized checkpoint matched every original state-dict tensor exactly. The remaining output difference comes from using the faster fused inference kernel on the same weights: 4.95e-6 maximum absolute and 1.70e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json relative L2 at the cascade output. All five reported RF metrics were effectively unchanged, with absolute deltas between zero and 4.27e-6Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json dB, far below the predeclared 0.05Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json dB ceiling.

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

-

Production-density RF metric equivalence

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

Production-density RF metric equivalence
MetricOriginal dBOptimized dBDelta dBAbsolute delta dB
ACLR average-32.71Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-32.71Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
ACLR left-33.01Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-33.01Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
ACLR right-32.42Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-32.42Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
EVM-25.65Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-25.65Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
NMSE-24.17Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-24.17Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json0Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json
-

Scope, data, and metric definitions

-

The controlled workload uses bundled DPA_200MHz data, a TRes-DeltaGRU H15 DPD (thx=.01, thh=.05), a frozen DGRU H23 PA, FP32, B64×T200, AdamW at 5e-3Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json, and gradient clipping at 200Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json. The production-density arm uses all 22,841Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json stride-one frames (357Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json updates); the multi-epoch gate uses stride 16Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json (23Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json updates per epoch for three epochs). NMSE is the repository's mean per-segment normalized MSE in dB. EVM is its subchannel spectral-magnitude error in dB. ACLR-left/right compare adjacent-channel power with the strongest main subchannel; ACLR-average is their mean.

Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

-

Methodology

-

The exact original is detached commit 0976ce39. A single deterministic PA surrogate was trained for 100Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py epochs because the repository ships no PA checkpoint; its SHA-256Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py fixture was reused unchanged by every arm. DPD initialization, frame order, full/partial batches, validation/test segments, optimizer hyperparameters, TF32 setting, and hard-determinism policy were fixed. Each run saves the exact permutations, best DPD checkpoint, DPD output, cascaded output, ground truth, phase timings, trajectory, and RF metrics. The comparison script rejects a fixture/order mismatch before evaluating speed or numerical results. Regression validation passed 164Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py standard tests plus 19Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py extended all-dataset/all-backbone tests.

Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py

Loads repository data/models/metrics, prepares the immutable fixture, replays recorded batch orders, records phase timings and artifacts, and compares outputs, checkpoints, and RF metrics.

-

Implemented optimizations and safeguards

Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.py

Loads repository data/models/metrics, prepares the immutable fixture, replays recorded batch orders, records phase timings and artifacts, and compares outputs, checkpoints, and RF metrics.

Implemented optimizations and safeguards
PriorityComponentChangeEquivalence behavior
1Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyWhole cascadeOpt-in fixed-shape CUDA graph of clean-eager forward, MSE, gradient zeroing, and backwardOriginal kernels; clean-eager fallback; clip and AdamW remain outside
2Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyFrozen DGRU PAExact cuDNN CUDA-graph forward and input-backward replayBitwise output/input gradient in focused tests; guarded eager fallback
3Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyTraining loopOne loss-vector device-to-host transfer per epoch; set-to-none gradients; trainable-only clip/optimizerBitwise CPU trajectory and logged loss in lockstep tests
4Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyEvaluationInference mode and consolidated output/target transfersExact outputs, targets, and loss in tests
5Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyDataVectorized frame construction and CUDA pinned/nonblocking loader pathExact frame order/content/dtype with independent storage
6Source: Reproducible benchmark and implementationTables: benchmark/benchmark_end_to_end.py, modules/cuda_graph_training.py, modules/train_funcs.py, backbones/cuda_graph_frozen_dgru.py, backbones/triton_deltagru.pyPersistent Triton TResFused recurrence and custom BPTT for supported FP32 NVIDIA shapesMinor one-step FP error; rejected as strict multi-epoch training path at nonzero thresholds
-

Limitations and robustness

-
  • The bundled repository has no published PA checkpoint. The surrogate makes the original-versus-optimized comparison controlled, but its absolute RF quality must not be presented as a reproduction of published results.
  • The longest comparison is one 357Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-update epoch; the multi-epoch gate covers 69Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json updates. This is not a complete 240Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json- or 300Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json-epoch convergence study.
  • Whole-cascade graph training is deliberately opt-in and specialized to the FP32 TRes-DeltaGRU → frozen-DGRU cascade with mean MSE. CPU, AMP, QAT, changed modules, diagnostic delta collection, capture failure, and unsupported shapes use eager fallbacks.
  • Existing EVM behavior was preserved: calculate_metrics does not pass the dataset sample rate, so EVM uses its 800 MHz default. Correcting that is a separate semantic change.
  • One original production-density timing and two optimized timings were collected on a power-managed laptop GPU; use the observed range rather than treating one decimal speedup as universal.
Source: Reviewed end-to-end benchmark summaryTables: benchmark/results/e2e_dpa200_stride1_comparison_graph.json, benchmark/results/e2e_dpa200_stride1_comparison_graph_repeat.json, benchmark/results/e2e_dpa200_stride16_comparison_eager.json, benchmark/results/e2e_dpa200_stride16_comparison_graph.json, benchmark/results/e2e_dpa200_stride16_comparison_fused.json, benchmark/results/tres_deltagru_rtx4090_laptop.json

Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

-

Recommended next steps

-
  1. Use --cuda_graph_training (or cuda_graph_training=True through the API) when strict training-result equivalence is required.
  2. Keep direct persistent Triton available for inference and experiments where endpoint metric equivalence is sufficient, but do not label its multi-epoch neural outputs strict-equivalent at nonzero thresholds.
  3. Stage the real production PA checkpoint and run the full intended epoch schedule on the target GPU before a release claim. Preserve the same fixture/order comparison and checkpoint/output/RF gates.
  4. If workload shapes or precision modes change, rerun the supplied end-to-end harness; the graph path will safely fall back, but its speedup is shape- and hardware-dependent.
-

Further questions

-

The main unresolved question is full-schedule convergence with the real PA checkpoint. A secondary opportunity is a GPU-resident frame sampler for much larger datasets, where per-batch host staging may become material after recurrent launch overhead has been removed.

Sources

  1. Reviewed end-to-end benchmark summarybenchmark/results/end_to_end_summary.json · duckdb · 2026-07-11T13:42:00Z

    Controlled original, clean-eager, strict CUDA-graph, and direct-Triton benchmark results derived from saved run JSON, checkpoints, outputs, and batch permutations.

    SQL query
    SELECT * FROM read_json_auto('benchmark/results/end_to_end_summary.json');
  2. Reproducible benchmark and implementationbenchmark/benchmark_end_to_end.py · duckdb · 2026-07-11T13:42:00Z

    Loads repository data/models/metrics, prepares the immutable fixture, replays recorded batch orders, records phase timings and artifacts, and compares outputs, checkpoints, and RF metrics.

    SQL query
    SELECT content FROM read_text('benchmark/benchmark_end_to_end.py');
- - - - - - - diff --git a/benchmark/tres_deltagru_training_speed.md b/benchmark/tres_deltagru_training_speed.md deleted file mode 100644 index 42daaef..0000000 --- a/benchmark/tres_deltagru_training_speed.md +++ /dev/null @@ -1,179 +0,0 @@ -# TRes-DeltaGRU training-speed benchmark - -## Result - -In the documented production-shape run, the TRes-DeltaGRU backbone (`B=64`, -`T=200`, `H=15`, `thx=.01`, `thh=.05`, FP32) was **97.1x faster** with the fused implementation: -**164.30 ms -> 1.692 ms per training step**. The timed step includes forward, -MSE backward, gradient clipping, and AdamW. The recurrent layer by itself -improved from **176.69 ms -> 0.721 ms** in a separate forward/backward -microbenchmark (245x). - -The implementation has the same 999 parameters and unchanged state-dict keys. -It preserves the feature extractor, thresholds, delta state updates, gate -equations, TCN residual, and output layer. Floating-point reduction order, -FMA contraction, and sigmoid/tanh implementations differ. - -This headline applies to dense FP32, first-order training on a supported NVIDIA -CUDA/Triton system. CPU, AMP, QAT, higher-order autograd, and unsupported shapes -take or should take the eager path; see the limitations below. - -## Test system and method - -| Field | Value | -|---|---| -| GPU | NVIDIA GeForce RTX 4090 Laptop GPU, compute capability 8.9 | -| Software | Python 3.13.14, PyTorch 2.13.0+cu132, CUDA 13.2, cuDNN 9.20, Triton 3.7.1 | -| Host | WSL2, Linux 6.6.114.1 | -| Precision | FP32; cuBLAS and cuDNN TF32 disabled | -| Step | `zero_grad(set_to_none=True)`, forward, MSE, backward, clip norm 200, AdamW | -| Data | Seeded synthetic IQ and targets, resident on GPU | -| Timing | 5 warmups; 7 synchronized CUDA-event blocks; median and IQR reported | -| Eager block | 5 steps per timing block | -| Fused block | 100 steps per timing block | - -The table reports the IQR of block-average step times. Because eager blocks -average 5 steps and fused blocks average 100, those IQRs describe stability -within each implementation and should not be compared as equal-size samples. -The script runs eager before fused; repeated runs on this power-managed laptop -produced roughly 81x-99x, so the defensible conclusion is "about two orders of -magnitude," not a universal exact 98.5x. - -This isolates backbone compute and optimizer cost. It intentionally excludes -CSV loading, frame construction, DataLoader work, and host-to-device transfer. -The real DPD pipeline also backpropagates through its frozen PA model; that is a -separate cost and can cap end-to-end gains even after this backbone is fast. - -## Production-shape result - -| Implementation | Median ms/step | IQR of block means | Sequence positions/s | Peak allocated | Speedup | -|---|---:|---:|---:|---:|---:| -| Clean eager reference | 164.302 | 3.184 | 77,905 | 25.3 MiB | 1.00x | -| Persistent Triton | **1.692** | 0.043 | **7,565,624** | 27.5 MiB | **97.11x** | - -Raw block means, environment details, and the equivalence summary are archived -in [`results/tres_deltagru_rtx4090_laptop.json`](results/tres_deltagru_rtx4090_laptop.json). - -The original implementation was slower than the clean eager reference because -it collected delta statistics and performed two unused hidden-delta reductions -at every timestep. An exploratory pre-change measurement was about 275 ms for -forward plus MSE backward, but it is not included in the comparable table -because it used a different step boundary. - -## Scaling experiments - -These shorter runs used five timing blocks (three for `T=1000`). B=16 used -3/100 eager/fused steps per block, B=256 used 3/50, T=50 used 5/100, and T=1000 -used 1/20 with two warmups. Their IQRs are omitted because the block settings -differ. - -### Batch scaling at T=200 - -| Batch | Clean eager ms | Fused ms | Speedup | -|---:|---:|---:|---:| -| 16 | 165.060 | 1.694 | 97.45x | -| 64 | 164.302 | 1.692 | 97.11x | -| 256 | 168.910 | 1.939 | 87.12x | - -Eager latency is nearly flat across these batch sizes because fixed Python and -kernel-launch overhead dominates, so its throughput still rises with batch. -The persistent-kernel latency is also nearly flat across this measured range. - -### Sequence scaling at B=64 - -| Sequence | Clean eager ms | Fused ms | Speedup | -|---:|---:|---:|---:| -| 50 | 42.754 | 1.727 | 24.75x | -| 200 | 164.302 | 1.692 | 97.11x | -| 1000 | 1,041.712 | 3.657 | 284.86x | - -The fused runtime grows with arithmetic rather than with Python and CUDA-launch -overhead, so its advantage increases for longer sequences. - -## Numerical-equivalence result - -The production-length check used identical weights, `B=8`, the production -thresholds, MSE, and TF32 disabled. - -| Quantity | Maximum absolute error | Relative L2 error | -|---|---:|---:| -| Output | 6.08e-6 | 1.34e-6 | -| Input gradient | 1.46e-7 | 1.50e-5 | -| `x2h.weight` gradient | 7.15e-7 | 8.60e-7 | -| `h2h.weight` gradient | 1.07e-7 | 6.16e-7 | -| `fc_out.weight` gradient | 4.77e-7 | 4.48e-7 | -| TCN parameter gradients | <=1.49e-8 | <=1.28e-7 | - -The absolute loss difference was `1.19e-7`. Additional checks covered sequence -lengths 1, 17, 50, 200, and 1000; thresholds `(0,0)` and `(.01,.05)`; custom -initial recurrent states; recurrent-state gradients; delta-statistics equality; -and a 19,662-sample inference sequence. At `T=1000`, output relative L2 error -was `2.44e-6` and all parameter-gradient relative errors remained below -`2.9e-6`. These differences come from reduction/activation ordering in FP32. - -## What was tried - -Rows other than the selected kernel are exploratory scratch experiments; the -committed benchmark directly reproduces the eager-versus-fused full-backbone -rows, while the candidate observations explain why those routes were not kept. - -| Candidate | Experiment | Decision | -|---|---|---| -| Remove diagnostic/dead work | Fixed `set_debug(0)`, removed two unused reductions, Python scalar thresholds, and the discarded outer hidden-state allocation. | Kept as output/gradient-equivalent portable cleanup. Diagnostic collection is now explicit. | -| Algebraic held-state rewrite | Mathematically telescoped delta accumulators into held-state projections. About 1.66x faster in the recurrent experiment; FP32 max output error about 5.2e-6. | Useful fallback idea, but far below the fused kernel's gain and not valid across QAT fake-quant boundaries. | -| `torch.compile(..., fullgraph=True, mode="reduce-overhead")` | The 200-step Python loop produced an enormous unrolled graph; compilation did not finish in a practical window on this host. PyTorch's prototype `scan` has no Inductor lowering in this version. | Rejected for this implementation. | -| cuDNN `nn.GRU` fast path | With both thresholds exactly zero, the delta accumulators telescope to a bias-free GRU. RNN-only: about 178.2 -> 1.12 ms (159x), max FP32 output error 5.84e-6 with TF32 off. | Excellent special case, but it cannot represent the production nonzero thresholds. The persistent kernel is faster here and supports both cases. | -| BF16/TF32 | Lower precision can accelerate dense GEMMs, but this tiny cell is launch-bound and threshold decisions can change near the boundary. | Not needed; fused FP32 already gives the large gain while minimizing trajectory changes. | -| Persistent custom recurrence | One Triton program owns each batch sequence; a reverse program implements BPTT. | **Selected.** Highest speed and supports nonzero thresholds. | - -## Implementation notes - -The forward kernel keeps `x_p`, `h`, `h_p`, `dm`, and `dm_nh` local while it -scans time. It fuses thresholding, both small projections, accumulator updates, -sigmoid/tanh gates, and the hidden update. It saves only the intermediates -needed by BPTT. - -The backward kernel scans time in reverse and emits input gradients plus the two -linear-output adjoints. Two final matrix multiplications reduce weight -gradients over batch and time. Inference under `no_grad` or `inference_mode` -uses a forward-only path and does not allocate the training workspace. Initial -Triton compilation is cache-dependent and took roughly 0.6 seconds on this -machine; it is a one-time cost per kernel specialization and is excluded from -steady-state timings. - -The fused path currently dispatches only for: - -- NVIDIA CUDA with Triton available; -- FP32 dense-float modules; -- one recurrent layer; -- input width up to 16 and hidden width up to 32. - -CPU, unsupported shapes/dtypes, multi-layer cells, and quantization-aware models -use the cleaned eager recurrence. QAT deliberately stays eager because its -fake-quantized Linear/Sigmoid/Tanh/Add/Mul boundaries are part of that model's -actual computation; bypassing or reassociating them would not be equivalent. -Temporal sparsity counters are disabled by default; pass -`--collect_delta_stats` to restore `SP_T_DX`, `SP_T_DH`, `SP_T_DV`, and -`HW_PARAM` training-log fields when that diagnostic overhead is wanted. -CUDA autocast deliberately falls back to eager so AMP keeps its original -fake/mixed-precision boundaries. The custom backward is explicitly -first-order-only; use `OPENDPD_DISABLE_TRITON_DELTAGRU=1` for higher-order -autograd, JVP/vmap-style transforms, or gradient-penalty/meta-learning code. - -## Reproduction - -```bash -.venv/bin/python benchmark/benchmark_tres_deltagru.py -``` - -Useful variants: - -```bash -.venv/bin/python benchmark/benchmark_tres_deltagru.py --batch-size 256 -.venv/bin/python benchmark/benchmark_tres_deltagru.py --sequence-length 1000 \ - --blocks 3 --reference-steps-per-block 1 --fused-steps-per-block 20 -``` - -Set `OPENDPD_DISABLE_TRITON_DELTAGRU=1` for normal application runs that should -force the portable eager path. The benchmark itself explicitly chooses each -implementation so it can compare them in one process. diff --git a/modules/paths.py b/modules/paths.py index f205b26..c35323f 100644 --- a/modules/paths.py +++ b/modules/paths.py @@ -4,6 +4,7 @@ import argparse import os +import warnings def gen_log_stat(args: argparse.Namespace, elapsed_time, net, optimizer, epoch, train_stat=None, val_stat=None, @@ -45,19 +46,30 @@ def gen_log_stat(args: argparse.Namespace, elapsed_time, net, optimizer, epoch, 'HIDDEN_SIZE': hidden_size, } - # Add threshold values to log - if args.step == 'train_dpd': - if 'delta' in net.dpd_model.backbone_type: - log_stat['THX'] = net.dpd_model.backbone.thx - log_stat['THH'] = net.dpd_model.backbone.thh + # Record delta thresholds for both PA and DPD training. They are runtime + # model settings rather than checkpoint tensors, so the CSV evidence is + # what lets a benchmark prove which thresholds were actually used. + delta_model = None + if args.step == 'train_pa' and 'delta' in net.backbone_type: + delta_model = net + elif args.step == 'train_dpd' and 'delta' in net.dpd_model.backbone_type: + delta_model = net.dpd_model + + if delta_model is not None: + log_stat['THX'] = delta_model.backbone.thx + log_stat['THH'] = delta_model.backbone.thh - # Statistics are opt-in because collecting them in an eager - # recurrent cell adds reductions at every timestep. - if getattr(net.dpd_model.backbone.rnn, 'debug', 0): - sparsity_metrics = net.dpd_model.backbone.get_temporal_sparsity() - sparsity_log = {f'{k}': v for k, v in sparsity_metrics.items()} - log_stat.update(sparsity_log) - net.dpd_model.backbone.set_debug(1) + # Statistics are opt-in because collecting them in an eager recurrent + # cell adds reductions at every timestep. + if ( + getattr(delta_model.backbone.rnn, 'debug', 0) + and hasattr(delta_model.backbone, 'get_temporal_sparsity') + and hasattr(delta_model.backbone, 'set_debug') + ): + sparsity_metrics = delta_model.backbone.get_temporal_sparsity() + sparsity_log = {f'{k}': v for k, v in sparsity_metrics.items()} + log_stat.update(sparsity_log) + delta_model.backbone.set_debug(1) # Merge stat dicts into the log dict if train_stat is not None: @@ -96,6 +108,33 @@ def gen_file_paths(path_dir_save: str, path_dir_log_hist: str, path_dir_log_best return file_paths +def warn_if_model_artifacts_exist(model_id: str, file_paths): + """Warn before an architecture-only model ID reuses existing artifacts. + + Model IDs are part of the public checkpoint lookup convention, so changing + their format would break existing consumers. They do not, however, encode + the full training recipe. An explicit warning keeps that convention while + making a potentially destructive recipe collision visible before training. + """ + existing_paths = [path for path in file_paths if os.path.exists(path)] + if not existing_paths: + return + + formatted_paths = ", ".join(os.path.normpath(path) for path in existing_paths) + warnings.warn( + ( + f"Existing artifact(s) for model ID '{model_id}' will be reused or " + f"overwritten: {formatted_paths}. This model ID does not encode the " + "full training recipe (for example optimizer, learning rate, " + "schedule, batch size, and epoch count), so the existing artifacts " + "may come from a different recipe. Move or rename them before " + "continuing if they must be preserved." + ), + RuntimeWarning, + stacklevel=2, + ) + + def create_folder(folder_list): for folder in folder_list: try: diff --git a/modules/train_funcs.py b/modules/train_funcs.py index a1962ee..5b0b3a4 100644 --- a/modules/train_funcs.py +++ b/modules/train_funcs.py @@ -137,7 +137,14 @@ def net_eval(log: Dict, def calculate_metrics(args: argparse.Namespace, stat: Dict[str, Any], prediction: np.ndarray, ground_truth: np.ndarray): stat['NMSE'] = metrics.NMSE(prediction, ground_truth) - stat['EVM'] = metrics.EVM(prediction, ground_truth, bw_main_ch=args.bw_main_ch, n_sub_ch=args.n_sub_ch, nperseg=args.nperseg) + stat['EVM'] = metrics.EVM( + prediction, + ground_truth, + sample_rate=args.input_signal_fs, + bw_main_ch=args.bw_main_ch, + n_sub_ch=args.n_sub_ch, + nperseg=args.nperseg, + ) ACLR_L = [] ACLR_R = [] ACLR_left, ACLR_right = metrics.ACLR(prediction, fs=args.input_signal_fs, nperseg=args.nperseg, diff --git a/opendpd/api.py b/opendpd/api.py index df437f6..ffb608a 100644 --- a/opendpd/api.py +++ b/opendpd/api.py @@ -45,9 +45,9 @@ def train_pa( dataset_path: Optional[str] = None, PA_backbone: str = 'gru', PA_hidden_size: int = 23, - n_epochs: int = 100, - batch_size: int = 256, - lr: float = 5e-4, + n_epochs: int = 300, + batch_size: int = 64, + lr: float = 5e-3, accelerator: str = 'cpu', frame_length: int = 200, seed: int = 0, @@ -133,9 +133,9 @@ def train_dpd( DPD_hidden_size: int = 15, PA_backbone: str = 'gru', PA_hidden_size: int = 23, - n_epochs: int = 100, - batch_size: int = 256, - lr: float = 5e-4, + n_epochs: int = 300, + batch_size: int = 64, + lr: float = 5e-3, accelerator: str = 'cpu', frame_length: int = 200, seed: int = 0, diff --git a/project.py b/project.py index 1823270..717d301 100644 --- a/project.py +++ b/project.py @@ -13,7 +13,13 @@ from torch import optim from torch.utils.data import DataLoader from arguments import get_arguments -from modules.paths import create_folder, gen_log_stat, gen_dir_paths, gen_file_paths +from modules.paths import ( + create_folder, + gen_log_stat, + gen_dir_paths, + gen_file_paths, + warn_if_model_artifacts_exist, +) from modules.train_funcs import net_train, net_eval, calculate_metrics from utils import util from modules.loggers import PandasLogger @@ -94,6 +100,7 @@ def gen_dpd_model_id(self, n_net_params): def build_logger(self, model_id: str): # Get Save and Log Paths file_paths = gen_file_paths(self.path_dir_save, self.path_dir_log_hist, self.path_dir_log_best, model_id) + warn_if_model_artifacts_exist(model_id, file_paths) self.path_save_file_best, self.path_log_file_hist, self.path_log_file_best = file_paths print("::: Best Model Save Path: ", self.path_save_file_best) print("::: Log-History Path: ", self.path_log_file_hist) @@ -282,7 +289,13 @@ def build_optimizer(self, net: nn.Module): elif self.opt_type == 'rmsprop': optimizer = optim.RMSprop(trainable_params, lr=self.lr) elif self.opt_type == 'adamw': - optimizer = optim.AdamW(trainable_params, lr=self.lr) + optimizer = optim.AdamW( + trainable_params, + lr=self.lr, + weight_decay=0.01, + betas=(0.9, 0.999), + eps=1e-8, + ) elif self.opt_type == 'adabound': import adabound # Run pip install adabound (https://github.com/Luolc/AdaBound) optimizer = adabound.AdaBound(trainable_params, lr=self.lr, final_lr=0.1) @@ -295,7 +308,10 @@ def build_optimizer(self, net: nn.Module): factor=self.decay_factor, patience=self.patience, threshold=1e-4, - min_lr=self.lr_end) + threshold_mode='rel', + cooldown=0, + min_lr=self.lr_end, + eps=1e-8) return optimizer, lr_scheduler @staticmethod diff --git a/steps/run_dpd.py b/steps/run_dpd.py index 8686f1c..45ee012 100644 --- a/steps/run_dpd.py +++ b/steps/run_dpd.py @@ -37,7 +37,9 @@ def main(proj: Project): hidden_size=proj.PA_hidden_size, num_layers=proj.PA_num_layers, backbone_type=proj.PA_backbone, - num_dvr_units=proj.num_dvr_units) + num_dvr_units=proj.num_dvr_units, + thx=proj.thx, + thh=proj.thh) n_net_pa_params = count_net_params(net_pa) print("::: Number of PA Model Parameters: ", n_net_pa_params) pa_model_id = proj.gen_pa_model_id(n_net_pa_params) diff --git a/steps/train_dpd.py b/steps/train_dpd.py index be92811..093cf68 100644 --- a/steps/train_dpd.py +++ b/steps/train_dpd.py @@ -30,7 +30,9 @@ def main(proj: Project): num_layers=proj.PA_num_layers, backbone_type=proj.PA_backbone, window_size=proj.window_size, - num_dvr_units=proj.num_dvr_units) + num_dvr_units=proj.num_dvr_units, + thx=proj.thx, + thh=proj.thh) n_net_pa_params = count_net_params(net_pa) print("::: Number of PA Model Parameters: ", n_net_pa_params) pa_model_id = proj.gen_pa_model_id(n_net_pa_params) diff --git a/steps/train_pa.py b/steps/train_pa.py index be8a9db..0923440 100644 --- a/steps/train_pa.py +++ b/steps/train_pa.py @@ -26,7 +26,9 @@ def main(proj: Project): num_layers=proj.PA_num_layers, backbone_type=proj.PA_backbone, window_size=proj.window_size, - num_dvr_units=proj.num_dvr_units) + num_dvr_units=proj.num_dvr_units, + thx=proj.thx, + thh=proj.thh) n_net_pa_params = count_net_params(net) print("::: Number of PA Model Parameters: ", n_net_pa_params) pa_model_id = proj.gen_pa_model_id(n_net_pa_params) diff --git a/tests/test_api.py b/tests/test_api.py index 86b65a0..b4a70e6 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1,10 +1,12 @@ """Tests for the public opendpd Python API (opendpd/api.py).""" +import inspect import sys import numpy as np import pandas as pd import pytest +import torch import opendpd from conftest import REPO_ROOT, SMOKE_DATASET @@ -84,6 +86,68 @@ def test_rejects_wrong_columns(self, tmp_path): class TestApiTraining: + @pytest.mark.parametrize("function_name", ["train_pa", "train_dpd"]) + def test_benchmark_recipe_defaults_are_public_api_defaults(self, function_name): + signature = inspect.signature(getattr(opendpd, function_name)) + + assert signature.parameters["n_epochs"].default == 300 + assert signature.parameters["batch_size"].default == 64 + assert signature.parameters["lr"].default == 5e-3 + + def test_adamw_and_scheduler_recipe_is_explicit(self, monkeypatch): + import project as project_module + + calls = {} + optimizer_sentinel = object() + scheduler_sentinel = object() + + def capture_adamw(params, **kwargs): + calls["optimizer_params"] = tuple(params) + calls["optimizer_kwargs"] = kwargs + return optimizer_sentinel + + def capture_scheduler(**kwargs): + calls["scheduler_kwargs"] = kwargs + return scheduler_sentinel + + monkeypatch.setattr(project_module.optim, "AdamW", capture_adamw) + monkeypatch.setattr( + project_module.optim.lr_scheduler, + "ReduceLROnPlateau", + capture_scheduler, + ) + + project = project_module.Project.__new__(project_module.Project) + project.opt_type = "adamw" + project.lr = 5e-3 + project.decay_factor = 0.5 + project.patience = 5 + project.lr_end = 5e-5 + net = torch.nn.Linear(2, 2) + + optimizer, scheduler = project.build_optimizer(net) + + assert optimizer is optimizer_sentinel + assert scheduler is scheduler_sentinel + assert calls["optimizer_params"] == tuple(net.parameters()) + assert calls["optimizer_kwargs"] == { + "lr": 5e-3, + "weight_decay": 0.01, + "betas": (0.9, 0.999), + "eps": 1e-8, + } + assert calls["scheduler_kwargs"] == { + "optimizer": optimizer_sentinel, + "mode": "min", + "factor": 0.5, + "patience": 5, + "threshold": 1e-4, + "threshold_mode": "rel", + "cooldown": 0, + "min_lr": 5e-5, + "eps": 1e-8, + } + def test_cuda_graph_training_flag_is_explicit_opt_in(self, preserved_argv): from arguments import get_arguments diff --git a/tests/test_benchmark_regressions.py b/tests/test_benchmark_regressions.py new file mode 100644 index 0000000..8cad8de --- /dev/null +++ b/tests/test_benchmark_regressions.py @@ -0,0 +1,985 @@ +"""Focused regression tests for the benchmark workflow.""" + +import copy +import importlib.util +import json +import os +from pathlib import Path +import shlex +import subprocess +import sys +import warnings + +import numpy as np +import pytest + +from project import Project + + +REPO_ROOT = Path(__file__).resolve().parent.parent +BENCHMARK_PATH = REPO_ROOT / "benchmark" / "benchmark_volterra.py" +BENCHMARK_SPEC = importlib.util.spec_from_file_location( + "benchmark_volterra", BENCHMARK_PATH +) +benchmark_volterra = importlib.util.module_from_spec(BENCHMARK_SPEC) +BENCHMARK_SPEC.loader.exec_module(benchmark_volterra) +COLLECTOR_PATH = REPO_ROOT / "benchmark" / "collect_benchmark_report.py" +COLLECTOR_SPEC = importlib.util.spec_from_file_location( + "collect_benchmark_report", COLLECTOR_PATH +) +collect_benchmark_report = importlib.util.module_from_spec(COLLECTOR_SPEC) +COLLECTOR_SPEC.loader.exec_module(collect_benchmark_report) + + +def parse_recorded_commands(path): + blocks = {} + lines = path.read_text().splitlines() + for index, line in enumerate(lines): + if line.startswith("# "): + label = line[2:] + assert label not in blocks, f"duplicate command label: {label}" + blocks[label] = shlex.split(lines[index + 1]) + return blocks + + +def option(command, name): + assert command.count(name) == 1, f"expected one {name} in {command}" + return command[command.index(name) + 1] + + +def polynomial_metrics(): + return { + "NMSE": -39.0, + "EVM": -47.0, + "ACLR_L": -42.0, + "ACLR_R": -40.0, + "ACLR_AVG": -41.0, + } + + +def polynomial_result(task="pa_modeling", model="mp"): + configuration = collect_benchmark_report.POLYNOMIAL_CONFIGURATIONS[task][model] + method = ( + "direct_least_squares" + if task == "pa_modeling" + else "indirect_learning_architecture" + ) + result = { + "schema_version": 4, + "dataset": "APA_200MHz", + "task": task, + "method": method, + "model": model, + "solver": "torch.linalg.lstsq", + "solver_mode": "gels", + "solver_driver": "gels", + "dtype": "torch.complex64", + "device": "cuda:0", + "solver_device": "cuda:0", + "solver_dtype": "torch.complex64", + "column_scaling": "l2", + "column_scale_min": 1.0, + "column_scale_max": 10.0, + "training_relative_residual": 0.1, + "coefficient_l2_norm": 1.0, + "regularization": None, + "svd_rcond": None, + "singular_value_max": None, + "singular_value_min": None, + "singular_value_cutoff": None, + "retained_singular_value_min": None, + "condition_number": None, + "full_rank_assumption": True, + "least_squares_rank": None, + "basis_configuration": configuration["basis_configuration"], + "complex_coefficients": configuration["complex_coefficients"], + "real_parameters": configuration["real_parameters"], + "parameter_count_convention": ( + "two real degrees of freedom per complex coefficient" + ), + "target_gain": 1.2, + "sample_rate_hz": 983_040_000.0, + "nperseg": 19_662, + "validation": polynomial_metrics(), + "test": polynomial_metrics(), + } + if task == "pa_modeling" and model == "gmp": + result.update( + { + "solver": "torch.linalg.svd", + "solver_mode": "truncated_svd", + "solver_driver": "gesvdj", + "full_rank_assumption": False, + "least_squares_rank": 650, + "regularization": "truncated_svd", + "svd_rcond": 1e-4, + "singular_value_max": 10.0, + "singular_value_min": 1e-6, + "singular_value_cutoff": 1e-3, + "retained_singular_value_min": 1.1e-3, + "condition_number": 1e7, + "coefficient_l2_norm": 8.0, + } + ) + if task == "dpd_ila": + result.update( + { + "pa_checkpoint": ( + "save/APA_200MHz/train_pa/" + "PA_S_0_M_TRES_GRU_H_27_F_200_P_2751.pt" + ), + "pa_checkpoint_sha256": "a" * 64, + "pa_evaluation_device": "cuda:0", + } + ) + return result + + +def test_volterra_cli_selects_distinct_mp_and_gmp_bases(): + parser = benchmark_volterra.build_arg_parser() + mp_args = parser.parse_args(["--dataset-name", "fixture", "--model", "mp"]) + gmp_args = parser.parse_args(["--dataset-name", "fixture", "--model", "gmp"]) + + mp_builder, mp_coefficients, mp_banner = benchmark_volterra.select_basis(mp_args) + gmp_builder, gmp_coefficients, gmp_banner = benchmark_volterra.select_basis( + gmp_args + ) + + signal = np.linspace(0.1, 1.0, 64) * np.exp( + 1j * np.linspace(0.0, 2.0 * np.pi, 64) + ) + mp_basis = mp_builder(signal) + gmp_basis = gmp_builder(signal) + + assert mp_coefficients == mp_args.K * mp_args.Q == 250 + assert gmp_coefficients == ( + gmp_args.Ka * gmp_args.La + + gmp_args.Kb * gmp_args.Lb * gmp_args.Mb + + gmp_args.Kc * gmp_args.Lc * gmp_args.Mc + ) == 255 + assert mp_basis.shape == (signal.size, mp_coefficients) + assert gmp_basis.shape == (signal.size, gmp_coefficients) + assert not np.allclose(mp_basis, gmp_basis[:, :mp_coefficients]) + assert " MP " in mp_banner + assert " GMP " in gmp_banner + + +def test_segmented_polynomial_basis_resets_delay_state(): + signal = np.arange(1, 9, dtype=np.float64).astype(np.complex128) + builder = lambda values: benchmark_volterra.build_mp_basis(values, K=1, Q=2) + + full = builder(signal) + segmented = benchmark_volterra.build_segmented_numpy_basis( + signal, builder, segment_length=4 + ) + + assert full[4, 1] == signal[3] + assert segmented[4, 1] == 0 + assert np.array_equal(segmented[:4], full[:4]) + + +def test_truncated_svd_stabilizes_rank_deficient_gmp_basis(): + import torch + + signal = np.ones(64, dtype=np.complex128) + target = 1.5 * signal + configuration = { + "Ka": 2, + "La": 2, + "Kb": 1, + "Lb": 2, + "Mb": 1, + "Kc": 1, + "Lc": 2, + "Mc": 1, + } + + coefficients, diagnostics = ( + benchmark_volterra.fit_complex_least_squares( + signal, + target, + polynomial_model="gmp", + configuration=configuration, + segment_length=64, + device=torch.device("cpu"), + dtype=torch.complex128, + solver_mode="truncated_svd", + svd_rcond=1e-4, + ) + ) + prediction = benchmark_volterra.apply_polynomial( + signal, + coefficients, + polynomial_model="gmp", + configuration=configuration, + segment_length=64, + ) + + assert diagnostics["solver_mode"] == "truncated_svd" + assert diagnostics["solver_implementation"] == "torch.linalg.svd" + assert diagnostics["regularization"] == "truncated_svd" + assert 0 < diagnostics["least_squares_rank"] < diagnostics["columns"] + assert diagnostics["svd_rcond"] == 1e-4 + assert np.all(np.isfinite(coefficients.numpy())) + assert np.linalg.norm(prediction - target) / np.linalg.norm(target) < 1e-12 + + +def test_solver_mode_rejects_incompatible_svd_cutoff(): + import torch + + signal = np.ones(16, dtype=np.complex128) + with pytest.raises(ValueError, match="only valid for truncated_svd"): + benchmark_volterra.fit_complex_least_squares( + signal, + signal, + polynomial_model="mp", + configuration={"K": 1, "Q": 1}, + segment_length=16, + device=torch.device("cpu"), + dtype=torch.complex128, + solver_mode="gels", + svd_rcond=1e-4, + ) + + +def test_build_logger_warns_before_existing_recipe_artifacts_are_overwritten( + tmp_path, +): + project = Project.__new__(Project) + project.path_dir_save = str(tmp_path / "save") + project.path_dir_log_hist = str(tmp_path / "history") + project.path_dir_log_best = str(tmp_path / "best") + project.log_precision = 8 + for directory in ( + project.path_dir_save, + project.path_dir_log_hist, + project.path_dir_log_best, + ): + Path(directory).mkdir() + + model_id = "PA_S_0_M_GRU_H_28_F_200_P_2746" + with warnings.catch_warnings(record=True) as caught: + warnings.simplefilter("always") + project.build_logger(model_id) + assert caught == [] + + Path(project.path_save_file_best).touch() + with pytest.warns(RuntimeWarning, match="does not encode the full training recipe"): + project.build_logger(model_id) + + +def test_benchmark_report_runner_dry_run_records_complete_recipe(tmp_path): + output_dir = tmp_path / "benchmark-run" + runner = REPO_ROOT / "benchmark" / "reproduce_benchmark_report.sh" + environment = dict(os.environ, OPENDPD_PYTHON=sys.executable) + + result = subprocess.run( + [ + "bash", + str(runner), + "--dry-run", + "--output-dir", + str(output_dir), + ], + cwd=REPO_ROOT, + env=environment, + capture_output=True, + text=True, + timeout=30, + ) + + assert result.returncode == 0, result.stderr + commands = parse_recorded_commands(output_dir / "commands.log") + expected_labels = {"snapshot_context", "collect_report"} + expected_labels.update( + f"train_pa_{slug}_{model}" + for slug in ("apa", "dpa") + for model in ("gru", "tres_gru", "tres_deltagru") + ) + expected_labels.update( + f"train_dpd_{slug}_{experiment}" + for slug in ("apa", "dpa") + for experiment in ( + "gru_via_tres_gru_pa", + "tres_gru_via_tres_gru_pa", + "tres_deltagru_via_tres_gru_pa", + "tres_deltagru_via_tres_deltagru_pa", + ) + ) + expected_labels.update( + f"pa_model_{slug}_{model}" + for slug in ("apa", "dpa") + for model in ("mp", "gmp") + ) + expected_labels.update( + f"dpd_ila_{slug}_{model}" + for slug in ("apa", "dpa") + for model in ("mp", "gmp") + ) + assert set(commands) == expected_labels + + for slug, dataset in (("apa", "APA_200MHz"), ("dpa", "DPA_160MHz")): + for backbone, hidden_size in { + "gru": "28", + "tres_gru": "27", + "tres_deltagru": "27", + }.items(): + command = commands[f"train_pa_{slug}_{backbone}"] + assert command[1] == "main.py" + assert option(command, "--dataset_name") == dataset + assert option(command, "--step") == "train_pa" + assert option(command, "--frame_length") == "200" + assert option(command, "--frame_stride") == "1" + assert option(command, "--n_epochs") == "300" + assert option(command, "--opt_type") == "adamw" + assert option(command, "--batch_size") == "64" + assert option(command, "--batch_size_eval") == "64" + assert option(command, "--lr") == "5e-3" + assert option(command, "--lr_schedule") == "1" + assert option(command, "--lr_end") == "5e-5" + assert option(command, "--decay_factor") == "0.5" + assert option(command, "--patience") == "5" + assert option(command, "--loss_type") == "l2" + assert option(command, "--grad_clip_val") == "200" + assert option(command, "--thx") == "0" + assert option(command, "--thh") == "0" + assert option(command, "--seed") == "0" + assert option(command, "--re_level") == "soft" + assert option(command, "--accelerator") == "cuda" + assert option(command, "--devices") == "0" + assert option(command, "--PA_backbone") == backbone + assert option(command, "--PA_hidden_size") == hidden_size + + dpd_experiments = { + "gru_via_tres_gru_pa": ("gru", "16", "tres_gru"), + "tres_gru_via_tres_gru_pa": ( + "tres_gru", + "15", + "tres_gru", + ), + "tres_deltagru_via_tres_gru_pa": ( + "tres_deltagru", + "15", + "tres_gru", + ), + "tres_deltagru_via_tres_deltagru_pa": ( + "tres_deltagru", + "15", + "tres_deltagru", + ), + } + for experiment, (backbone, hidden_size, pa_backbone) in ( + dpd_experiments.items() + ): + command = commands[f"train_dpd_{slug}_{experiment}"] + assert command[1] == "main.py" + assert option(command, "--dataset_name") == dataset + assert option(command, "--step") == "train_dpd" + assert option(command, "--frame_length") == "200" + assert option(command, "--frame_stride") == "1" + assert option(command, "--n_epochs") == "300" + assert option(command, "--opt_type") == "adamw" + assert option(command, "--batch_size") == "64" + assert option(command, "--batch_size_eval") == "64" + assert option(command, "--lr") == "5e-3" + assert option(command, "--lr_schedule") == "1" + assert option(command, "--lr_end") == "5e-5" + assert option(command, "--decay_factor") == "0.5" + assert option(command, "--patience") == "5" + assert option(command, "--loss_type") == "l2" + assert option(command, "--grad_clip_val") == "200" + assert option(command, "--thx") == "0" + assert option(command, "--thh") == "0" + assert option(command, "--seed") == "0" + assert option(command, "--re_level") == "soft" + assert option(command, "--accelerator") == "cuda" + assert option(command, "--devices") == "0" + assert option(command, "--PA_backbone") == pa_backbone + assert option(command, "--PA_hidden_size") == "27" + assert option(command, "--DPD_backbone") == backbone + assert option(command, "--DPD_hidden_size") == hidden_size + + for slug, dataset in (("apa", "APA_200MHz"), ("dpa", "DPA_160MHz")): + pa_mp = commands[f"pa_model_{slug}_mp"] + pa_gmp = commands[f"pa_model_{slug}_gmp"] + dpd_mp = commands[f"dpd_ila_{slug}_mp"] + dpd_gmp = commands[f"dpd_ila_{slug}_gmp"] + for command, task in ( + (pa_mp, "pa_modeling"), + (pa_gmp, "pa_modeling"), + (dpd_mp, "dpd_ila"), + (dpd_gmp, "dpd_ila"), + ): + assert command[1:3] == ["-m", "benchmark.benchmark_volterra"] + assert option(command, "--task") == task + assert option(command, "--dataset-name") == dataset + assert option(command, "--solver-device") == "cuda:0" + assert option(command, "--solver-dtype") == "complex64" + assert option(pa_mp, "--solver-mode") == "gels" + assert option(pa_gmp, "--solver-mode") == "truncated_svd" + assert option(pa_gmp, "--svd-rcond") == "1e-4" + assert option(dpd_mp, "--solver-mode") == "gels" + assert option(dpd_gmp, "--solver-mode") == "gels" + assert "--svd-rcond" not in pa_mp + assert "--svd-rcond" not in dpd_mp + assert "--svd-rcond" not in dpd_gmp + assert option(pa_mp, "--K") == "9" + assert option(pa_mp, "--Q") == "150" + assert option(pa_gmp, "--La") == "30" + assert option(pa_gmp, "--Mb") == "5" + assert option(pa_gmp, "--Mc") == "5" + assert option(dpd_mp, "--K") == "5" + assert option(dpd_mp, "--Q") == "100" + assert option(dpd_gmp, "--La") == "20" + assert option(dpd_gmp, "--Mb") == "3" + assert option(dpd_gmp, "--Mc") == "2" + for command in (dpd_mp, dpd_gmp): + assert option(command, "--pa-backbone") == "tres_gru" + assert option(command, "--pa-hidden-size") == "27" + + assert "--snapshot-context" in commands["snapshot_context"] + assert "--snapshot-context" not in commands["collect_report"] + collect_benchmark_report.validate_neural_commands( + output_dir / "commands.log" + ) + collect_benchmark_report.validate_runner_commands( + output_dir / "commands.log", + output_dir=output_dir, + device=0, + ) + + recipe = json.loads((output_dir / "recipe.json").read_text()) + assert recipe == collect_benchmark_report.expected_runner_recipe() + assert recipe["schema_version"] == 6 + assert recipe["neural"]["epochs"] == 300 + assert recipe["neural"]["batch_size"] == 64 + assert recipe["neural"]["initial_learning_rate"] == 5e-3 + assert recipe["neural"]["scheduler_patience"] == 5 + assert recipe["neural"]["minimum_learning_rate"] == 5e-5 + assert recipe["neural"]["optimizer_weight_decay"] == 0.01 + assert recipe["neural"]["optimizer_betas"] == [0.9, 0.999] + assert recipe["neural"]["scheduler_threshold_mode"] == "rel" + assert recipe["pa_models"]["mp"]["real_parameters"] == 2700 + assert recipe["pa_models"]["tres_deltagru"] == { + "hidden_size": 27, + "real_parameters": 2751, + "delta_thresholds": {"input": 0.0, "hidden": 0.0}, + } + assert recipe["dpd_models"]["gmp"]["real_parameters"] == 1000 + assert recipe["polynomial_solvers"]["gmp_pa"] == { + "implementation": "torch.linalg.svd", + "mode": "truncated_svd", + "driver": "gesvdj", + "dtype": "torch.complex64", + "column_scaling": "l2", + "regularization": { + "type": "truncated_svd", + "relative_cutoff": 1e-4, + }, + } + assert recipe["dpd_tres_deltagru_pa_surrogate_comparison"] == { + "model": { + "hidden_size": 15, + "real_parameters": 999, + "delta_thresholds": {"input": 0.0, "hidden": 0.0}, + }, + "pa_surrogates": { + "tres_gru": { + "hidden_size": 27, + "real_parameters": 2751, + "delta_thresholds": None, + }, + "tres_deltagru": { + "hidden_size": 27, + "real_parameters": 2751, + "delta_thresholds": {"input": 0.0, "hidden": 0.0}, + }, + }, + } + + +def test_distributed_signal_papr_is_stable(): + apa_record = collect_benchmark_report.signal_record("APA_200MHz") + dpa_record = collect_benchmark_report.signal_record("DPA_160MHz") + apa = apa_record["papr"] + dpa = dpa_record["papr"] + + assert apa_record["samples"] == 98_304 + assert dpa_record["samples"] == 491_520 + assert apa["ccdf_probability"] == 1e-5 + assert apa["quantile_method"] == "numpy linear" + assert apa["ccdf_db"] == pytest.approx(10.00798, abs=1e-5) + assert apa["absolute_peak_db"] == pytest.approx(10.01054, abs=1e-5) + assert dpa["ccdf_db"] == pytest.approx(10.13155, abs=1e-5) + assert dpa["absolute_peak_db"] == pytest.approx(10.13976, abs=1e-5) + + +def test_pa_checkpoint_bindings_require_eight_unique_rows(tmp_path): + experiments = ( + ("gru", "tres_gru"), + ("tres_gru", "tres_gru"), + ("tres_deltagru", "tres_gru"), + ("tres_deltagru", "tres_deltagru"), + ) + rows = [ + ( + dataset, + dpd_model, + pa_model, + f"save/{dataset}/{pa_model}.pt", + digest * 64, + ) + for dataset, digest in (("APA_200MHz", "a"), ("DPA_160MHz", "b")) + for dpd_model, pa_model in experiments + ] + path = tmp_path / "pa_checkpoint_bindings.tsv" + path.write_text( + "dataset\tdpd_model_key\tpa_model_key\tcheckpoint\tsha256\n" + + "".join("\t".join(row) + "\n" for row in rows) + ) + + bindings = collect_benchmark_report.read_pa_bindings(tmp_path) + assert set(bindings) == { + (dataset, dpd_model, pa_model) + for dataset in ("APA_200MHz", "DPA_160MHz") + for dpd_model, pa_model in experiments + } + + rows[-1] = rows[0] + path.write_text( + "dataset\tdpd_model_key\tpa_model_key\tcheckpoint\tsha256\n" + + "".join("\t".join(row) + "\n" for row in rows) + ) + with pytest.raises(ValueError, match="Duplicate PA checkpoint binding"): + collect_benchmark_report.read_pa_bindings(tmp_path) + + +def test_polynomial_metric_validation_rejects_nonfinite_and_bad_average(): + metrics = polynomial_metrics() + assert collect_benchmark_report.normalize_polynomial_metrics(metrics) == { + "nmse_db": -39.0, + "evm_db": -47.0, + "aclr_left_db": -42.0, + "aclr_right_db": -40.0, + "aclr_avg_db": -41.0, + } + + with pytest.raises(ValueError, match="not finite"): + collect_benchmark_report.normalize_polynomial_metrics( + dict(metrics, NMSE=float("nan")) + ) + with pytest.raises(ValueError, match="ACLR average"): + collect_benchmark_report.normalize_polynomial_metrics( + dict(metrics, ACLR_AVG=-40.5) + ) + + +def benchmark_context(): + return { + "git": {"commit": "abc", "branch": "benchmark-fix", "dirty": False}, + "environment": {"python": "3.13"}, + "source_file_sha256": {"main.py": "1" * 64}, + "datasets": {"APA_200MHz": {"spec_sha256": "2" * 64}}, + } + + +def test_context_stability_accepts_identical_context(): + initial = benchmark_context() + collect_benchmark_report.validate_context_stability( + initial, copy.deepcopy(initial) + ) + + +@pytest.mark.parametrize( + ("path", "replacement", "message"), + [ + (("git", "commit"), "def", "Git commit"), + (("git", "branch"), "other", "Git branch"), + (("environment", "python"), "3.14", "software and hardware"), + (("source_file_sha256", "main.py"), "3" * 64, "source files"), + ( + ("datasets", "APA_200MHz", "spec_sha256"), + "4" * 64, + "dataset files", + ), + ], +) +def test_context_stability_rejects_drift(path, replacement, message): + initial = benchmark_context() + changed = copy.deepcopy(initial) + target = changed + for key in path[:-1]: + target = target[key] + target[path[-1]] = replacement + + with pytest.raises(ValueError, match=message): + collect_benchmark_report.validate_context_stability(initial, changed) + + +def test_context_loader_requires_pre_run_snapshot(tmp_path): + with pytest.raises(FileNotFoundError, match="Pre-run context snapshot"): + collect_benchmark_report.load_and_validate_context(tmp_path, 0) + + +def test_source_snapshot_covers_runtime_sources(): + sources = set(collect_benchmark_report.source_files()) + assert { + "arguments.py", + "models.py", + "project.py", + "backbones/gru.py", + "backbones/tres_deltagru.py", + "backbones/tres_gru.py", + "benchmark/benchmark_volterra.py", + "benchmark/collect_benchmark_report.py", + "modules/train_funcs.py", + "steps/train_dpd.py", + "steps/train_pa.py", + "utils/metrics.py", + } <= sources + + +def test_polynomial_pa_artifact_contract_rejects_recipe_drift(tmp_path): + canonical = polynomial_result(task="pa_modeling", model="mp") + output_path = tmp_path / "benchmark_report_apa_pa_mp.json" + output_path.write_text(json.dumps(canonical)) + + result = collect_benchmark_report.collect_polynomial_model( + tmp_path, + dataset="APA_200MHz", + slug="apa", + task="pa_modeling", + model_name="mp", + ) + assert result["real_parameters"] == 2700 + assert result["least_squares_rank"] is None + assert result["pa_checkpoint_binding"] is None + + mutations = [ + ("solver", "other", "polynomial solver"), + ("basis_configuration", {"K": 9, "Q": 149}, "polynomial basis"), + ("complex_coefficients", 1349, "complex coefficient count"), + ("real_parameters", 2698, "parameter count"), + ("sample_rate_hz", 800_000_000.0, "sample rate"), + ("nperseg", 16_384, "segment length"), + ("column_scale_min", 0.0, "must be positive"), + ] + for field, replacement, message in mutations: + changed = copy.deepcopy(canonical) + changed[field] = replacement + output_path.write_text(json.dumps(changed)) + with pytest.raises(ValueError, match=message): + collect_benchmark_report.collect_polynomial_model( + tmp_path, + dataset="APA_200MHz", + slug="apa", + task="pa_modeling", + model_name="mp", + ) + + +def test_gmp_pa_artifact_contract_requires_truncated_svd_evidence(tmp_path): + canonical = polynomial_result(task="pa_modeling", model="gmp") + output_path = tmp_path / "benchmark_report_apa_pa_gmp.json" + output_path.write_text(json.dumps(canonical)) + + result = collect_benchmark_report.collect_polynomial_model( + tmp_path, + dataset="APA_200MHz", + slug="apa", + task="pa_modeling", + model_name="gmp", + ) + assert result["solver"] == "torch.linalg.svd" + assert result["solver_mode"] == "truncated_svd" + assert result["svd_rcond"] == 1e-4 + assert result["least_squares_rank"] == 650 + assert result["coefficient_l2_norm"] == 8.0 + + mutations = [ + ("solver_mode", "gels", "solver mode"), + ("svd_rcond", 1e-6, "SVD relative cutoff"), + ("least_squares_rank", 1350, "rank is outside"), + ("retained_singular_value_min", 5e-4, "does not exceed"), + ("condition_number", 1e3, "inconsistent"), + ] + for field, replacement, message in mutations: + changed = copy.deepcopy(canonical) + changed[field] = replacement + output_path.write_text(json.dumps(changed)) + with pytest.raises(ValueError, match=message): + collect_benchmark_report.collect_polynomial_model( + tmp_path, + dataset="APA_200MHz", + slug="apa", + task="pa_modeling", + model_name="gmp", + ) + + +def test_polynomial_dpd_artifact_requires_reference_pa_hash(tmp_path): + canonical = polynomial_result(task="dpd_ila", model="mp") + output_path = tmp_path / "benchmark_report_apa_dpd_mp.json" + output_path.write_text(json.dumps(canonical)) + + result = collect_benchmark_report.collect_polynomial_model( + tmp_path, + dataset="APA_200MHz", + slug="apa", + task="dpd_ila", + model_name="mp", + expected_pa_hash="a" * 64, + ) + assert result["real_parameters"] == 1000 + assert result["pa_checkpoint_binding"]["sha256"] == "a" * 64 + + changed = dict(canonical, pa_checkpoint_sha256="b" * 64) + output_path.write_text(json.dumps(changed)) + with pytest.raises(ValueError, match="checkpoint hash"): + collect_benchmark_report.collect_polynomial_model( + tmp_path, + dataset="APA_200MHz", + slug="apa", + task="dpd_ila", + model_name="mp", + expected_pa_hash="a" * 64, + ) + + +def test_checkpoint_validation_checks_loadability_and_parameter_count(tmp_path): + import torch + + checkpoint = tmp_path / "model.pt" + torch.save({"weight": torch.ones(3), "bias": torch.zeros(2)}, checkpoint) + collect_benchmark_report.validate_checkpoint(checkpoint, 5) + + with pytest.raises(ValueError, match="checkpoint parameter count"): + collect_benchmark_report.validate_checkpoint(checkpoint, 4) + + checkpoint.write_bytes(b"not a checkpoint") + with pytest.raises(ValueError, match="cannot be loaded safely"): + collect_benchmark_report.validate_checkpoint(checkpoint, 5) + + +def test_run_manifest_uses_v6_schema(): + assert collect_benchmark_report.RUN_SCHEMA_VERSION == 6 + + +def report_manifest(): + values = { + "APA_200MHz": { + "pa": [-37.0, -38.7, -38.8, -39.1, -39.2], + "dpd": [-45.2, -43.6, -51.4, -53.4], + "delta_dpd": [-54.1, -55.2], + }, + "DPA_160MHz": { + "pa": [-38.4, -39.4, -39.5, -39.7, -39.8], + "dpd": [-50.7, -52.8, -56.5, -59.5], + "delta_dpd": [-60.1, -61.3], + }, + } + display_names = { + "mp": "MP", + "gmp": "GMP", + "gru": "GRU-H28", + "tres_gru": "TRes-GRU-H27", + "tres_deltagru": "TRes-DeltaGRU-H27 (THX=THH=0)", + } + datasets = {} + for dataset, dataset_values in values.items(): + pa_models = {} + dpd_models = {} + delta_dpd_by_pa_surrogate = {} + for index, key in enumerate(collect_benchmark_report.PA_MODEL_ORDER): + polynomial = key in {"mp", "gmp"} + pa_models[key] = { + "method": ( + "direct_least_squares" + if polynomial + else "supervised_training" + ), + "model": { + "display_name": display_names[key], + "parameters": 2700 + index, + }, + "selected_epoch_zero_based": None if polynomial else 10 + index, + "metrics": { + "validation": { + "nmse_db": dataset_values["pa"][index] + 0.1, + "evm_db": -40.0 - index, + "aclr_left_db": -30.0 - index, + "aclr_right_db": -31.0 - index, + "aclr_avg_db": -30.5 - index, + }, + "test": { + "nmse_db": dataset_values["pa"][index], + "evm_db": -40.2 - index, + "aclr_left_db": -30.2 - index, + "aclr_right_db": -31.2 - index, + "aclr_avg_db": -30.7 - index, + }, + }, + } + if key == "gmp": + pa_models[key]["training_relative_residual"] = 0.0112 + pa_models[key]["regularization"] = "truncated_svd" + pa_models[key]["svd_rcond"] = 1e-4 + pa_models[key]["least_squares_rank"] = 650 + pa_models[key]["complex_coefficients"] = 1350 + if key == "tres_deltagru": + pa_models[key]["delta_thresholds"] = { + "input": 0.0, + "hidden": 0.0, + } + + for index, key in enumerate(collect_benchmark_report.DPD_MODEL_ORDER): + polynomial = key in {"mp", "gmp"} + dpd_models[key] = { + "method": ( + "indirect_learning_architecture" + if polynomial + else "direct_learning_architecture" + ), + "model": { + "display_name": display_names[key], + "parameters": 1000 + index, + }, + "selected_epoch_zero_based": None if polynomial else 20 + index, + "metrics": { + "validation": { + "nmse_db": -42.0 - index, + "evm_db": -45.0 - index, + "aclr_left_db": dataset_values["dpd"][index] - 0.4, + "aclr_right_db": dataset_values["dpd"][index] + 0.2, + "aclr_avg_db": dataset_values["dpd"][index] - 0.1, + }, + "test": { + "nmse_db": -42.2 - index, + "evm_db": -45.2 - index, + "aclr_left_db": dataset_values["dpd"][index] - 0.3, + "aclr_right_db": dataset_values["dpd"][index] + 0.3, + "aclr_avg_db": dataset_values["dpd"][index], + }, + }, + } + for index, pa_model_key in enumerate(("tres_gru", "tres_deltagru")): + aclr = dataset_values["delta_dpd"][index] + delta_dpd_by_pa_surrogate[pa_model_key] = { + "method": "direct_learning_architecture", + "model": { + "display_name": "TRes-DeltaGRU-H15 (THX=THH=0)", + "parameters": 999, + }, + "selected_epoch_zero_based": 30 + index, + "metrics": { + "validation": { + "nmse_db": -48.0 - index, + "evm_db": -50.0 - index, + "aclr_left_db": aclr - 0.3, + "aclr_right_db": aclr + 0.1, + "aclr_avg_db": aclr - 0.1, + }, + "test": { + "nmse_db": -48.2 - index, + "evm_db": -50.2 - index, + "aclr_left_db": aclr - 0.2, + "aclr_right_db": aclr + 0.2, + "aclr_avg_db": aclr, + }, + }, + "pa_surrogate": {"model_key": pa_model_key}, + } + datasets[dataset] = { + "pa_models": pa_models, + "dpd_models": dpd_models, + "dpd_tres_deltagru_by_pa_surrogate": ( + delta_dpd_by_pa_surrogate + ), + } + return { + "generated_at_utc": "2026-07-24T00:00:00+00:00", + "git": {"commit": "abc", "branch": "benchmark-fix", "dirty": False}, + "environment": { + "python": "3.13", + "torch": "2.0", + "cuda": "13.0", + "gpu": "Fixture GPU", + }, + "datasets": datasets, + } + + +def test_report_is_latest_only_and_documents_gmp_stability_and_temporal_context(): + markdown = collect_benchmark_report.render_markdown( + report_manifest(), + canonical=True, + ) + + assert "benchmark_results.png" in markdown + assert "benchmark_delta_dpd_results.png" in markdown + assert "APA GMP stability" in markdown + assert "rcond=1e-04" in markdown + assert "650/1,350 singular directions" in markdown + assert "Truncated SVD (rank 650/1,350)" in markdown + assert "16-sample right context" in markdown + assert "wraps the final position" in markdown + assert "not demodulated constellation EVM" in markdown + assert "reproduce_benchmark_report.sh" in markdown + assert "commands.log" not in markdown + assert "previous report" not in markdown.lower() + assert "DGRU" not in markdown + assert "TRes-DeltaGRU" in markdown + assert "THX=THH=0" in markdown + assert "dense zero-threshold recurrence" in markdown + assert "TRes-DeltaGRU DPD by PA surrogate" in markdown + assert "separately trained" in markdown + for dataset in ("APA_200MHz", "DPA_160MHz"): + dataset_section = markdown.split(f"## {dataset}", 1)[1].split( + "\n## ", + 1, + )[0] + primary_dpd = dataset_section.split("### DPD\n", 1)[1].split( + "### TRes-DeltaGRU DPD by PA surrogate", + 1, + )[0] + assert "TRes-DeltaGRU" not in primary_dpd + + +def test_results_figure_is_a_nonempty_png(tmp_path): + output = tmp_path / "benchmark_results.png" + + collect_benchmark_report.write_results_figure(report_manifest(), output) + + assert output.read_bytes().startswith(b"\x89PNG\r\n\x1a\n") + assert output.stat().st_size > 10_000 + + +def test_delta_dpd_figure_is_a_nonempty_png(tmp_path): + output = tmp_path / "benchmark_delta_dpd_results.png" + + collect_benchmark_report.write_delta_dpd_figure( + report_manifest(), + output, + ) + + assert output.read_bytes().startswith(b"\x89PNG\r\n\x1a\n") + assert output.stat().st_size > 10_000 + + +def test_source_snapshot_roundtrip_matches_pre_run_hashes(tmp_path): + paths = ["arguments.py", "benchmark/collect_benchmark_report.py"] + expected = { + path: collect_benchmark_report.sha256_file(REPO_ROOT / path) + for path in paths + } + output = tmp_path / "source_snapshot.tar.gz" + + collect_benchmark_report.write_source_snapshot(paths, output) + metadata = collect_benchmark_report.validate_source_snapshot( + output, + expected, + ) + + assert metadata["path"] == "source_snapshot.tar.gz" + assert metadata["file_count"] == len(paths) + assert metadata["sha256"] == collect_benchmark_report.sha256_file(output) diff --git a/tests/test_cli.py b/tests/test_cli.py index 30b6e10..984cd74 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -4,6 +4,7 @@ import subprocess import sys +from arguments import get_arguments from conftest import MAIN_PY, REPO_ROOT @@ -38,3 +39,23 @@ def test_main_py_rejects_unknown_backbone(): [sys.executable, str(MAIN_PY), "--step", "train_pa", "--PA_backbone", "bogus"] ) assert result.returncode != 0 + + +def test_training_defaults_match_opendpdv2_recipe(monkeypatch): + monkeypatch.setattr(sys, "argv", ["main.py"]) + + args = get_arguments() + + assert args.batch_size == 64 + assert args.batch_size_eval == 64 + assert args.n_epochs == 300 + assert args.frame_length == 200 + assert args.frame_stride == 1 + assert args.opt_type == "adamw" + assert args.loss_type == "l2" + assert args.seed == 0 + assert args.lr_schedule == 1 + assert args.lr == 5e-3 + assert args.lr_end == 5e-5 + assert args.decay_factor == 0.5 + assert args.patience == 5 diff --git a/tests/test_metric_configuration.py b/tests/test_metric_configuration.py new file mode 100644 index 0000000..faea388 --- /dev/null +++ b/tests/test_metric_configuration.py @@ -0,0 +1,37 @@ +from types import SimpleNamespace + +import numpy as np + +from modules import train_funcs + + +def test_calculate_metrics_uses_dataset_sample_rate(monkeypatch): + prediction = np.zeros((1, 8, 2), dtype=np.float32) + ground_truth = np.zeros_like(prediction) + args = SimpleNamespace( + input_signal_fs=983.04e6, + bw_main_ch=200e6, + n_sub_ch=5, + nperseg=8, + ) + evm_kwargs = {} + + monkeypatch.setattr(train_funcs.metrics, "NMSE", lambda *_: -1.0) + + def fake_evm(*_, **kwargs): + evm_kwargs.update(kwargs) + return -2.0 + + monkeypatch.setattr(train_funcs.metrics, "EVM", fake_evm) + monkeypatch.setattr(train_funcs.metrics, "ACLR", lambda *_, **__: (-3.0, -5.0)) + + result = train_funcs.calculate_metrics(args, {}, prediction, ground_truth) + + assert evm_kwargs["sample_rate"] == args.input_signal_fs + assert result == { + "NMSE": -1.0, + "EVM": -2.0, + "ACLR_L": -3.0, + "ACLR_R": -5.0, + "ACLR_AVG": -4.0, + } diff --git a/tests/test_tres_deltagru_optimized.py b/tests/test_tres_deltagru_optimized.py index 0c2568c..abdd20e 100644 --- a/tests/test_tres_deltagru_optimized.py +++ b/tests/test_tres_deltagru_optimized.py @@ -45,6 +45,29 @@ def test_debug_setting_reaches_recurrent_layer(): assert model.backbone.rnn.debug == 0 +def test_h15_matches_the_approximately_1000_parameter_dpd_budget(): + model = build_model("cpu", fused=False, thx=0.0, thh=0.0) + + assert sum(parameter.numel() for parameter in model.parameters()) == 999 + + +def test_pa_delta_thresholds_are_recorded(): + model = build_model("cpu", fused=False, thx=0.0, thh=0.0) + args = SimpleNamespace( + step="train_pa", + n_epochs=2, + batch_size=2, + frame_length=3, + PA_backbone="tres_deltagru", + PA_hidden_size=15, + ) + + log = gen_log_stat(args, 0.0, model, None, 0) + + assert log["THX"] == 0.0 + assert log["THH"] == 0.0 + + def test_opt_in_statistics_are_logged_and_reset(): model = build_model("cpu", fused=False) model.backbone.set_debug(1) @@ -64,6 +87,8 @@ def test_opt_in_statistics_are_logged_and_reset(): log = gen_log_stat(args, 0.0, wrapper, None, 0) + assert log["THX"] == 0.01 + assert log["THH"] == 0.05 assert {"SP_T_DX", "SP_T_DH", "SP_T_DV", "HW_PARAM"} <= log.keys() assert model.backbone.rnn.statistics == { "num_dx_zeros": 0,

V@#n&B^3BuNzY29)RGM3yf$F$NuLdm=T|eYPBEPhcyv+ce@3pRcNE{txa_J zb{?$JT}I*AF^~|cKxTJeLZ0wLRzA#6TC;N4)nV_)->vLYzcyZ-K8Os>)<-d-$Jgr5uE1F0X;1M4e3zWSoj?%YA-xZ6vpwtl3;UY zBecz}g8RRRxMlIxVAO}qS?m;a4}D}OW6WXKi;t|KxPp^%U(U>KzZaaWKL-h6C%ANe zGxl6L!pj?#V0zO_Hu_QH@P9iJI6fi{@ zk8CNS9=V0M)oB~G|MW$iJBsG6+=*2apRmZq*64Zl6Z@f14|v#^v}6C{rzowYWfIre z{sZ%9DxgirDbzIE;1_;MP1DQ1zOQ zuViJJY3m=DmlV%_InIVh$puU;!JF9*7_tgBlO%2$)#dx8QQT`C81H^so`pS+Cec`v9AAtHQuRg;8$Oa#iB*WdD*vTu*xlnbDP?T zx@(GIg;Fd2SveCws9i@I;f+1nw{V^Lb`1X1jO}*%cvHR+Kao3BlwZQBah~kaNgf~a z|CoYd5k5%}qY*OxC{t_2@*j;tCCMCklykSv@P$5Vbxk9w2d=0j*iE@B?J(fM9$HuO z7(7SWQK8UN{=vwj%sfPythl)lzGod7224eVumuzs@*ge>C}Pju{PEYO3`p}qOn$!} zyEoWELrN~L?YYjrTt9`jIXj43l!h}7pQ2y~8`PWMNCqxZO;1?Eg43+OHI~VWey!^eI?uUoa^QYGki`{tSNOn@f#^Ev12YNB!41>q()o2I zsL`;6WYiAh3AT<7c3R@$W(ztdx)NOGNz*!mjco4nDrRFQONBupY*m^Ot(+3hrfBO> z=j7weM&uW}w>OPRygSQU7DVtXE%Vvq7u(@w6R}!9Vcc~7BbzWd2|sKdVqD=DD3UH? zQCH)*;ycH9$KPV){q{WfVD%B&cw#hInb(oXt`@G~aS2V){lx#gy_(!xt}sox(M;=> z3XQwg0>75%kZz7X-p-VyP0~Z)+ic9{Z!?A`;WI%!`4a2YsDZtgrqi_@zoF1noc50Y z2p;}+oW}JEPQlKfDqL|I7zx>yWW_17QC8+fbr_vNttUH!Ke(B>d{MLS2+ZxS}`Rh!l zp6(-!B^&6BppSaBc9Fu^QT6Bg6Uc1#Pulq^hi0l?B&q%^@~ttWfAI(ChqEZlT|1t7 zTx7s*UR_;eUK*F?QwOKU-DCsDenIbYdm1TO48mu;NTc=<-=k(vX45BXtj*zoeD0e_3oGLbJaaI+QH2HW4KX7>?m$0yeMOg~t&V~`x-iSDFdOsT|6=3E5 zdF;mJuVA=uBy_&H%ia6f1|o{FtRm+fNag-vd%H8iJWYaL7i(}aY1i24;Ai~a)AoFi zp*?FAbp(&-NcM1c7c^BnvXg!z@KNkvUgFnxh@SYB&zW8ei;5#yb>~(PQx>OG&s6U7 zyW#UGd#>)-e>=%ULyq^nx}V}C72(4~7t;2<1X*u?us=ssaNL$&-uJ-@j2veLMiD`n zqdOW?W`yCn^|q+6BoHl458{oB^DyUU4Au?)gGY%;!;C)(f`;D_5$Lhf_nS~=Vkf(l zJPljU8PVlucVV^kM*2KP0F|_lv^zF(joxuoc*%*YIT}y5cFl(U55nnXZwAO-*h10E zt3c_79?3;t2K$IwHmxWOk}ONjr~Y>16>j7}ZqzH*?5l)6&Oola9ntljCs}K_;=8Xt zG{Mad{eCT^U+2VdoYGhtC(wn?s-rAWGlwZzYcOp)Q>tlO#oV5R5Bp9tgP1%LS!7Of zMrTN_G>isAkI~epu@q^(k6wPCVXhe_RN1*e8Cwnb70-d=dZ<|MA?3(XVQ^EV2tc8&%=A#W@jAsPni zzH$P^JJNVP=m0GIHXj@IN#M>AYw=0=I^3S)hf;cnarAC)+$*TYWjFkBdh`{nn7#%T zT^rH%`V#cmeip@I&2U6pIF4K@j%jzL@SCDB9L=A}H92+hX>k%H_4gs0bbA-IWR@|B zuzVUiI~l}fPtem`7p(M7r{DXVP&UG!+V>3NkxFao-S7^-U6P~MW%+nP|2Rv2e*_j; z88YQU50ZIg$$qbTPc26xSbLd7{notWEH3X0$*#G?{yTJrMwt$FI5cvxYXryV5!J#+Nt@8xj{9TK$97XC=E6Sou@NWF)!r!eWi>7K zeF1-}qN(Cg0sC_;jx=48DInXG#=L(-6<3JufAoTOY9EGyx*9T1--^yYyC}fB1Yew0 zC9ivge?r^X+wtd6Z`N5BDS8y=mh`b}fq__bZ!&eXS>RLG85A~K4*T|wq&Wv0p|m!h z9huHSn!yy#FQJg1+rAgh{;Xt{Q@r8wOgYjDl7NzQ4O$+5fSwCqF%VEE1jxKw&91{*QmQp8%z`xnWTlQAKcz z8-4sVUfOF|x2`A?-(BkB7YKRb-83DRW-}T^ib7d#K_+aUypUzDQ3A0UUwNf1Dxh1Y z#49&%gy=iNW+j?8>}RW(OM5Pyc{h^&%vk}^eFx~b)fAAud6}@~A{Tq?BfVbuha36d zH?qpz1S`foqbEBr!6t)aKyXvI7Ra=918l6Cm|BfqG;GM7i zb2*5IO>aZhxpg?@@hIG$WP!VL=b&-GEEN9dhe>FJ3eO6#UtAYI?YoG%A`<9yyAhX< zSq$D?)p%Z7kBJ;i$BM0=*a1m1?5i0^vEjomYcQTVHVnJFR0lKewIr|lV@$YV7e#%y zVFNRKNOtBQzEeS&CY^fA8(!GV+Lmr+Rz-zeX#RCpyk!c!N>Zbn64G_Ss~xEL{_r`R zl08aUdQWiho=`L!193eD2)_$E+2=e^nOzPK;!&XNtJ}yd=f@ zpX1YC$kHZ*wX92DjJ^$3vdzohup0YePF?8lT6HEO3Io}T9s3%W*XyJ==(ZpbtkYZJ3Q%HSBNWrN;A=c*cpy@epb0U8Xy?wa7zdkRF`KVgZKV=|Y)+6~wjC z9`{RZ_1y%*(NpQ@TxGg+d_VQ}9b~J1CDL)9ZG87tKMFDH;gY+hDd2Ss-0AJ%*9wba znxYGI3_9VBno{^$nuxA9?!tttd06oG6c{QcBh?guR+I_n-<|xWF5mnLA1d6ymRCIF_uW#YcWb8d`{L)(y6a{9dKq)#=o-IZtQNs| zDZXpzYi9SZoom<8WC!*5u;ORxh04bsv>BuRxsj5yO%c zaqI3kcyEy{*u-DN-A~lnS&=POo73-BRY3d>WK>#!+CWDAb26qv9Ql zn9Kt&O0Rywz8&_YlA2M}m}N}e6CW`D!BmzMzRnyEOTkrzP7p8e2LB%(=Gy4P^Xs~j8WUWb^u(Rgc-7~WZ`hmy1HFuCX~_+O7kDUTe0=u(V(rHam5 zF5<=I8R)K4g7!yy@Ue*(#`}!0eBl-V65GGx7yG+R&9@B0k1nUcae#u!(bVT8!O1>K zqywYN*yZ_#$;C1C7rDve2hk(3 ziK|>U9s?J}!#59ke#F=gF#4`bV|)xyFJ>uS546J5kHu(vpfY}WF%n8vSi$=1p=hmG z#WKX6p~jBYB>%Yw2MSZkWAqu^T^~v8=_jz>{*>{iW2iSL8N9_$5y-AV+3WRGzAXv) z(nI7Vyc4Y?a+%SFMrhclf}RDb?A70NT)fbQ{{F4NIZ|;Hx&JV3uZg9vT8q(2(u5v2 zk4L}MaCXzB1>Ba~)|vW!fKE{ZPW_B2zF#2S2d6 zMhCESXdWw?VuPA4`XFr33|2yKA$Fnr?oDXCW;y{dEW$@X>^Qj&TywM_QV2|A2N?$!)(<&k^8&h7MnCL1Ja|@Seb7d zT$;Fp4}M(^1uoI>FMO6vf(Ii+08i!LyE;R%&VS>QYH4VLYU;tJYV;rYDT%;eC%%5Z9(A9UA?4Rg$vu1x zWlr2nof4rWJIn-qtJCPkY!|Aw%^(kt9u{}^DBW4OnCGXZkmL3!C~)0Or#8I<&5u%K z#@eCdl0I8geh5r0C7^lYYIx0MgXSH7kZ#U`D>n7;t4$o{%Ke71gQC3BpcEc>^WQMP z+=F9Y(x97jl=Gh34OtEa%yQXkywEz14rt_}%uIP|5WS50paj4$ z8=D4>qr z0Z!K~13NbJV5h8x9l?`PVrwgZZR;F-R;Wr8wG3PQbm@b=HO?K|#8O90z-9A|px7!M zp61WS*L|AYGL2aLFjG>DvI@G&AdG*GHzhq?5$|od?r_ z8+0hZ3;Vc4D*NM$fl5L&W~vAZd7Y@4=l+@Rk-fqBPnb%Q?N3+*3tLH zUG#N!Cp-M_FIik24;roaD63o;opY=y#Yha#rbL2w_6P2Icmi(fyupHIm14{DRph!b z5X&YXBD3$_0{Qd=x}Xt4pMHmuwDfbb2ymw0>n}-4)r`Jl9*Jblq8%4rvsag_Y1wNR zNSHK*j+BaF-v%)zv;HK^5S@Z2?xeH0WoI$(T@?9FAHtiZWdsVcmSb-u(b*g+%l@+( zq}f|Bi-qliIWZs-E$ay*SmrcGkb7I#^}thM~{U{R9aFbjes zZLdIs;7U%-sWOBJRCr04oowb63BmtVtl!M>O z*4VCi2l^e2kV;MP#eN}t^u_^Wv^PNG4aCwV%eixfgJ2POnE!BWFZcZ0Z(hsqJSz=4 z!oE$KO6@B~(uc9@DEr|yD!9LkHk>b}(qT7>=(s}$&vIz#>uy@1UPHx)A5;6q+ceL# zmWpmXpoEJdB)+(gmUb%8oC;TZdLoQPkBO+Om}6cit8R`b(kxl};cOhS`#metD#9#b zOAA?=wH<*k|PNk6X^L5Bnl1XvxIe415jj|d(@|I>TOkw>KR@J@? zWPScHZo;~tW3q=0 z`sA_?VUL;BV+-0YCqxfA577NTP0YLM5IM#tFv-H5WNdbn-A$WHHnufPkXXx}pZ&!W zuM4wL9fo9Ib4f7sBG7XP;Tj5uUCF<$W_FSpY1|#=xF0jAxZx^W@X>?<3n!6d#B|#7 z*p6&GX3!4ajj&@B6{I>)*|Z$CCq#VM=|k%>x@PdXjrm|cQ3@jyzJS+^6r3$O8oP4t zpjU|)mOTBAcM4=tedTw2y80hHPr8c6LC4`;sVnAx4dFsXX2Z3MBiVyfznID9UbbC4 zfOcMXB8OMebUr?ww93|#dR!LSuc}}gQL$t{-yaN)nN!tf9n2qX#Z)>M;GX#>z@%d| z+NSFdXKV?#1-GJn{$qxrTQMoqohrsn!gY0-WZz;3&#g-+(9M`#Z9Ps^Uz*qkqgXOh z>Sfn%E+zA%JT^yW3QaBl#2;NCMd81%adX2*QuRnfn49p0HE!Pxm#5uh+A1ONb&ny_ z_0R(}k%HCpBRDs)5$JFyoAq1`M&CXqk_oNE3FB-i+2$cWO>rPa{fGGLtr0nTm11@6 zXI9DFDaLaT!6Ui^gJJuhh6xD;?Hd_#2T9W%EP7cz%oG~rtGd(hd1o@jMc>6;4#xPVxC1>trQ;{A8l`1ZFPVJB+HG0ud5HStrJB#fht^A&aFWGPTr?DZK3g~2yAJpRU+QKI9fv1FYS2{hfGd3U z6{0^6@`rK`V%BXN=9hF6F9j%Bcxe8`L&Yu7Hg}|Dx3)Vz^XkT#{4vbAkc>u(JW766 zgnLIT(V=5C1qr7iFLsMc-Ymq!qyN&A56__5@-KZ|brn`BJfXka_0d&ul)@U0`}}d(@d9yMh<_!nd~16^S1eE zRNYj-JX(qEKcB?L4HA^f{U^|N+=tWZ`XKjO399O@!*8-@ux(W=)^AEj>7f`Dd%pp{ z<*mcNX`|7uLkVNPw!^Q+a}ZW^3nYvL@NW4TSfro>MYSvlHM4S^QeU;#jz&+jsDD?KNJ?S)^;bEX-)hDZjY;IQ}=ps+j*0; zY)|v~YfI_(_y|_mJcnF&SFw@r#FcLR0qLEJmtW09bz!_jsi8 z!pg3waBLoMrE4*Fpb^%de+MtRe?!rMUCix-G};)%(8EItc-Zz16{rF_2fU;Ba6erB zwvALx!Z4#XgSNiggB}^<$*as3_5Xd~bK)8yxMx4F=d_PgFH2#akrGU%WeQy!2w~RK z{Hb4VFH?H#NhZ=u**8CN`WL;1J%9F)dziU{UAZ?IbCsmXQrr*6?b9F{&Miabab*8v zF0MHDgZZug2={`YvmZ69z@@&09c>MT57Dn!@hCa8doM-;)kq9Y8%2I@mDp@J!0s9~ zpkCrGqq8 zp5wddvXG66q1`Ji$p zvuh-pJ$T7_+zoJLNFTG4nu6LoH`vZ+>iEs;0K1qm52t<^&wh)=V1bGnyZ5OSC&(u= zo4yO^KKm0}qneDx?!7ERVFadJJkI8aWwN5*BiZ*8K9qMo3TkBc)3|vYs{NIu@t%p; zI@TIwn@-~1%s@;_O~q*6Rvin)b1g0Y}JSek>(TA-Wvr zPPOv24VD~BNUv-V}PZY)cvZg5>V@PPX36mFH&nKu0 zLAdJ~=sfqiR>k5KTq=!VZs&$s_H7)ixZYV~IOC2*cjIfe|I|}(2%ASwjlxjO)t=f5 zd2IP0K|+DIQRu?2S_#jyD8E?=>rO4gyZD-2C;bk+|V%Q9`O;aG@S`{QXSHOm& z$xx+m9BzrugPTX^LWQR}bhu66-3Z1du%!#k{ylz z9_Ubtg8>!>&fyQ=8jD%UBhg@aILxqdM2)Oee&@L*_+fo6b0~fa(%HwD!H3Cg!Ol#+ zY=aib{-^@&;Nf~_o8dCEKDP6lH~KZD)_Q;3j-}GSpyY%y8tYi%>_s!d&ukX{C*{FZ zhaF3^_BInsw_*m>H<{Y1du;N;D3&#t$=ZW*`EofK=ue(gr@dGlN9hT1eP6ergPbr( zyiUVl`{Q7CD+0~$Yhe3`)%ZMo8`kdp46ic}Aiwx9m?hX@WOFA}hfjsldpao1PbaOL zE3s)uHLZ>^!LJH`NxwWAT3e;+t=6Qm9?Jn*k-v!Yhjx*aZYUW^q(Nns329$VM}gL4 zw)r37;ioU))Vczc`?(Vn^k?Av?MW!TP@2<=_dykzPUcjS0}tQn(uyPZSyz-Yb-71U zyXk!vKB|Q5G(s4E_Bcgx``F=z5ZYVX&N3DNwMm$gqr5mhPH`fw%ZJ!zMUFm57u1veaG|bZb0{hi}^M3m- z0Y$qp9oYz2VQ`q-aodIbsgUes@Y9Y(atQl5tj-aZ`5dzfk9!uS&S=kp!5 zM2g@cjZm1clM3TY4s(wVN3#5zLhOp_LDCnEWXfthEqvR+4r*T{f#^e4ZRt$6B1X{p z-3mPJGNJIj^YLhe551Nz$Lh>fS~!m|e9cKZBzhPhMHkVl)l<>ZB92~5tHGSvj`U-$ zEHhP+AwkWfI(3h0>|FLW$W^?=e8(=t>_ekz<+TuuTHrtzw)v zI2&MT+BgW*N=4bQSg6(%LHmL>DBQ=fOS7JXYrHO9 zTayh+(u?V;6UU$Rv8Lq0&#cINItei+D(V)Zp!n@neCstc)|4g1P7z9vo(cywAG0rR z+py@^GZyZD4jb%BnNwLU9#9hFU6kW+N@yZf-u(e5rBrd#NNe7|W&v&<6~laVZ1F+* z6n_oqzw`Vu+aTbg3#{mjVwi6M&~jc6CwFfJXN?qm_0|ZS-Li4v+8!eR-T@6)X_LHf z>#3xX8^^moi3m(P%I)aj2i+VQQsncG9Ri*am8#36&d>lt7Z?-SJUy@ui)P}FjS-WO zI}B#zFl&z%Gp>K{)2iV{PRt`)oYVY@{VC;w6?>0UCkrtwcdMt8H)FV?hi*{Yd0phS z;c2SmVgaW^edxpLb)Y0UpN7lYfKJm~a!xLiXtdaXk(3N|Tp0z*xxIs)Qmxl7ZzWa)|8-I3FkhA@ym{`WB#SyC>{d z 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 Bo>>3@ diff --git a/benchmark/results/e2e_dpa200_stride16_eager_optimized/result.json b/benchmark/results/e2e_dpa200_stride16_eager_optimized/result.json deleted file mode 100644 index de3cdde..0000000 --- a/benchmark/results/e2e_dpa200_stride16_eager_optimized/result.json +++ /dev/null @@ -1,293 +0,0 @@ -{ - "artifacts": { - "checkpoint": { - "path": "best_dpd.pt", - "sha256": "d9104a960df60f6a1d1f5ab0a5a89b1e68cca51b740fc4a445fdfdf1c231da28" - }, - "orders": { - "path": "batch_orders.npz", - "sha256": "ff4dc43d09981b276c2f114d0a8f69c237dbe2331cff3d7c9572f239a434e71a" - }, - "outputs": { - "path": "outputs.npz", - "sha256": "ab05cbf0fa406f1ad661a0d9f753c552320e88a07f056d75722ba5be2f1c157c" - } - }, - "best": { - "epoch": 2, - "test": { - "ACLR_AVG": -27.226608217804756, - "ACLR_L": -26.815050106117365, - "ACLR_R": -27.638166329492147, - "EVM": -18.002733545368763, - "NMSE": -16.83683967590332 - }, - "test_loss": 0.008923204615712166 - }, - "config": { - "batch_size": 64, - "dataset_name": "DPA_200MHz", - "decay_factor": 0.5, - "dpd_backbone": "tres_deltagru", - "dpd_hidden_size": 15, - "epochs": 3, - "eval_batch_size": 256, - "frame_length": 200, - "frame_stride": 16, - "grad_clip": 200.0, - "hard_determinism": true, - "lr": 0.005, - "lr_end": 0.0001, - "lr_schedule": true, - "pa_backbone": "dgru", - "pa_hidden_size": 23, - "patience": 10, - "progress_display": false, - "seed": 0, - "tf32": false, - "thh": 0.05, - "thx": 0.01, - "train_batches": 23, - "train_frames": 1428 - }, - "environment": { - "cuda_runtime": "13.2", - "device": "cuda", - "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", - "git_dirty": true, - "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", - "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", - "python": "3.13.14", - "source_sha256": { - "backbones/tres_deltagru.py": "0351d322ce3ae615d0f1adfde2b76e8afaa0d85d6f9dc92f511905eca7762925", - "models.py": "8213485a8c63142704c8c5a03d165494a1556554eecd6ab864966b34230032bd", - "modules/data_collector.py": "7f3b55f38f80820c10d399d161b8cd233bfaf8837dc43613dd1410d6ed649a4a", - "modules/train_funcs.py": "1b9600635eb09b3846399307c3679f2d4d4a8014d6332f886bce6b647d337dd7", - "project.py": "9a4c6e847c0b498c0af19e73f2501b98b9556092a59fcb54d5d0e200151cbe72" - }, - "timestamp_utc": "2026-07-11T11:15:21Z", - "torch": "2.13.0+cu132" - }, - "fixture": { - "pa_pretraining": { - "batch_size": 256, - "epoch_losses": [ - 0.19976529288623068, - 0.07552065874139467, - 0.035813659822775255, - 0.015496797549227873, - 0.0073165092151612045, - 0.004122809729435377, - 0.0028371868655085565, - 0.002260218708155056, - 0.0019730482547957863, - 0.001804672781791952, - 0.0016903372119284339, - 0.0016053243009890947, - 0.001537126708879239, - 0.0014795413240790366, - 0.0014301505237300364, - 0.001387344894465059, - 0.0013489203230063948, - 0.001313198775622166, - 0.0012807028911386927, - 0.0012508238070747918, - 0.001223458524327725, - 0.0011980035510431562, - 0.0011749541568052437, - 0.0011529860992191567, - 0.0011323490322360562, - 0.0011132779117259714, - 0.001094700538346337, - 0.0010788088470386962, - 0.0010624444707193308, - 0.0010472416890681619, - 0.0010330673915127085, - 0.0010188237324150072, - 0.0010063911839905712, - 0.0009942823542385465, - 0.0009820516201822708, - 0.0009706565599319421, - 0.0009600415631818275, - 0.0009499821249240388, - 0.0009395308883136345, - 0.0009299550076118774, - 0.0009213898977678683, - 0.0009129614317013572, - 0.0009045549577826427, - 0.0008978265001335077, - 0.0008889070233433611, - 0.0008808080501492238, - 0.0008747089848232766, - 0.0008677142930941449, - 0.0008612244461093925, - 0.0008541751471865508, - 0.0008492301761483153, - 0.0008438051025020994, - 0.0008372969226911664, - 0.0008320930349226627, - 0.0008262090624258337, - 0.0008212690894854152, - 0.0008170444033263872, - 0.0008116322116822832, - 0.0008085286788021525, - 0.0008024338063680463, - 0.0007971812136626492, - 0.0007941790558915171, - 0.0007888991599126409, - 0.0007850555250317686, - 0.0007812943005572177, - 0.0007774337214262535, - 0.0007736717008002517, - 0.0007680615494286434, - 0.000765761686488986, - 0.0007614624595993923, - 0.0007581874547112319, - 0.0007533019660816838, - 0.0007504364740776106, - 0.0007459188067716443, - 0.000741948351626181, - 0.000738971155240304, - 0.0007369754337964372, - 0.0007315872961448298, - 0.0007274452887941152, - 0.0007249550874500225, - 0.0007203698766210841, - 0.0007163520249175942, - 0.0007124568264569259, - 0.0007081288960762322, - 0.000703643683421736, - 0.0006989148180259185, - 0.0006963702481395255, - 0.000688923417409468, - 0.0006831818797056459, - 0.0006777228373620245, - 0.0006716486325280534, - 0.0006644388376217749, - 0.0006551507258942972, - 0.0006462268809425748, - 0.0006346332763011256, - 0.0006214740213989797, - 0.0006044942381170889, - 0.0005823747681764265, - 0.0005561722377832565, - 0.0005314765006510748 - ], - "epochs": 100, - "frame_stride": 1, - "lr": 0.0005, - "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." - }, - "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", - "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" - }, - "format_version": 1, - "implementation": "eager_optimized", - "repo_root": "/home/cgao/OpenDPD", - "timing": { - "artifact_serialization_s": 0.007120674999896437, - "best_dpd_inference_s": 1.0520350569859147, - "best_test_inference_s": 1.0241523160075303, - "best_test_metrics_s": 0.0011255400022491813, - "compile_and_warmup_s": 0.7439701170078479, - "epochs": [ - { - "checkpoint_s": 0.00046170499990694225, - "test_inference_s": 1.0270227660075761, - "test_metrics_s": 0.0011447400029283017, - "total_s": 7.231319698999869, - "train_s": 4.545975369983353, - "val_inference_s": 1.2378135250182822, - "val_metrics_s": 0.41890159298782237 - }, - { - "checkpoint_s": 0.0003644930256996304, - "test_inference_s": 1.133408719993895, - "test_metrics_s": 0.0011637140123639256, - "total_s": 6.7356913380208425, - "train_s": 4.502270314987982, - "val_inference_s": 1.097342674009269, - "val_metrics_s": 0.0011414219916332513 - }, - { - "checkpoint_s": 0.0004925200191792101, - "test_inference_s": 1.050014116015518, - "test_metrics_s": 0.0011185460025444627, - "total_s": 6.536286696995376, - "train_s": 4.443688589002704, - "val_inference_s": 1.0398243139788974, - "val_metrics_s": 0.0011486119765322655 - } - ], - "model_optimizer_setup_s": 0.00018820198602043092, - "peak_allocated_mib": 115.154296875, - "peak_reserved_mib": 126.0, - "setup_data_s": 0.0291538409946952, - "total_s": 24.029687639005715 - }, - "trajectory": [ - { - "epoch": 0, - "lr": 0.005, - "test": { - "ACLR_AVG": -23.802362727318418, - "ACLR_L": -24.37394008245006, - "ACLR_R": -23.23078537218678, - "EVM": -9.233125063892256, - "NMSE": -8.6369047164917 - }, - "test_loss": 0.0584484227001667, - "train_loss": 0.3155044079150843, - "val": { - "ACLR_AVG": -24.368007007685193, - "ACLR_L": -25.166700405152994, - "ACLR_R": -23.569313610217396, - "EVM": -8.888111584610337, - "NMSE": -8.287453651428223 - }, - "val_loss": 0.057822540402412415 - }, - { - "epoch": 1, - "lr": 0.005, - "test": { - "ACLR_AVG": -25.108314935280998, - "ACLR_L": -24.66642731083448, - "ACLR_R": -25.550202559727516, - "EVM": -15.074752071510995, - "NMSE": -14.206661224365234 - }, - "test_loss": 0.016343355178833008, - "train_loss": 0.03183207778341096, - "val": { - "ACLR_AVG": -25.800195622535483, - "ACLR_L": -25.37349478488941, - "ACLR_R": -26.22689646018156, - "EVM": -15.033653677372403, - "NMSE": -14.25285816192627 - }, - "val_loss": 0.014646782539784908 - }, - { - "epoch": 2, - "lr": 0.005, - "test": { - "ACLR_AVG": -27.226608217804756, - "ACLR_L": -26.815050106117365, - "ACLR_R": -27.638166329492147, - "EVM": -18.002733545368763, - "NMSE": -16.83683967590332 - }, - "test_loss": 0.008923204615712166, - "train_loss": 0.011922802371175392, - "val": { - "ACLR_AVG": -27.650038422759067, - "ACLR_L": -27.4008395120854, - "ACLR_R": -27.899237333432737, - "EVM": -17.838220021303275, - "NMSE": -16.874755859375 - }, - "val_loss": 0.008002975955605507 - } - ] -} diff --git a/benchmark/results/e2e_dpa200_stride16_fused_optimized/batch_orders.npz b/benchmark/results/e2e_dpa200_stride16_fused_optimized/batch_orders.npz deleted file mode 100644 index b11c7975d3a101ed36dd307570ccadaf53df0120..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10137 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 diff --git a/benchmark/results/e2e_dpa200_stride16_fused_optimized/outputs.npz b/benchmark/results/e2e_dpa200_stride16_fused_optimized/outputs.npz deleted file mode 100644 index 808c6332d1cf0fc23ea5b63f08730c3fa88cec76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171327 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�!yDuyk-JJha(| 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 diff --git a/benchmark/results/e2e_dpa200_stride16_fused_optimized/result.json b/benchmark/results/e2e_dpa200_stride16_fused_optimized/result.json deleted file mode 100644 index f08046c..0000000 --- a/benchmark/results/e2e_dpa200_stride16_fused_optimized/result.json +++ /dev/null @@ -1,293 +0,0 @@ -{ - "artifacts": { - "checkpoint": { - "path": "best_dpd.pt", - "sha256": "a02e5f83483e24bba6e5d0698514ec91f93e737459040a3db79b75360b832966" - }, - "orders": { - "path": "batch_orders.npz", - "sha256": "ff4dc43d09981b276c2f114d0a8f69c237dbe2331cff3d7c9572f239a434e71a" - }, - "outputs": { - "path": "outputs.npz", - "sha256": "f009d37b5840c1e4697d2e54f4b107dd9a9bab5cebfc234d7fa499aff1740291" - } - }, - "best": { - "epoch": 2, - "test": { - "ACLR_AVG": -27.219909644976333, - "ACLR_L": -26.78043182552716, - "ACLR_R": -27.659387464425503, - "EVM": -17.990375996302465, - "NMSE": -16.823091506958008 - }, - "test_loss": 0.008949208073318005 - }, - "config": { - "batch_size": 64, - "dataset_name": "DPA_200MHz", - "decay_factor": 0.5, - "dpd_backbone": "tres_deltagru", - "dpd_hidden_size": 15, - "epochs": 3, - "eval_batch_size": 256, - "frame_length": 200, - "frame_stride": 16, - "grad_clip": 200.0, - "hard_determinism": true, - "lr": 0.005, - "lr_end": 0.0001, - "lr_schedule": true, - "pa_backbone": "dgru", - "pa_hidden_size": 23, - "patience": 10, - "progress_display": false, - "seed": 0, - "tf32": false, - "thh": 0.05, - "thx": 0.01, - "train_batches": 23, - "train_frames": 1428 - }, - "environment": { - "cuda_runtime": "13.2", - "device": "cuda", - "git_commit": "0976ce39fc664727ab7ab640ccb349679f05d84f", - "git_dirty": true, - "gpu": "NVIDIA GeForce RTX 4090 Laptop GPU", - "platform": "Linux-6.6.114.1-microsoft-standard-WSL2-x86_64-with-glibc2.43", - "python": "3.13.14", - "source_sha256": { - "backbones/tres_deltagru.py": "0351d322ce3ae615d0f1adfde2b76e8afaa0d85d6f9dc92f511905eca7762925", - "models.py": "8213485a8c63142704c8c5a03d165494a1556554eecd6ab864966b34230032bd", - "modules/data_collector.py": "7f3b55f38f80820c10d399d161b8cd233bfaf8837dc43613dd1410d6ed649a4a", - "modules/train_funcs.py": "1b9600635eb09b3846399307c3679f2d4d4a8014d6332f886bce6b647d337dd7", - "project.py": "9a4c6e847c0b498c0af19e73f2501b98b9556092a59fcb54d5d0e200151cbe72" - }, - "timestamp_utc": "2026-07-11T11:15:33Z", - "torch": "2.13.0+cu132" - }, - "fixture": { - "pa_pretraining": { - "batch_size": 256, - "epoch_losses": [ - 0.19976529288623068, - 0.07552065874139467, - 0.035813659822775255, - 0.015496797549227873, - 0.0073165092151612045, - 0.004122809729435377, - 0.0028371868655085565, - 0.002260218708155056, - 0.0019730482547957863, - 0.001804672781791952, - 0.0016903372119284339, - 0.0016053243009890947, - 0.001537126708879239, - 0.0014795413240790366, - 0.0014301505237300364, - 0.001387344894465059, - 0.0013489203230063948, - 0.001313198775622166, - 0.0012807028911386927, - 0.0012508238070747918, - 0.001223458524327725, - 0.0011980035510431562, - 0.0011749541568052437, - 0.0011529860992191567, - 0.0011323490322360562, - 0.0011132779117259714, - 0.001094700538346337, - 0.0010788088470386962, - 0.0010624444707193308, - 0.0010472416890681619, - 0.0010330673915127085, - 0.0010188237324150072, - 0.0010063911839905712, - 0.0009942823542385465, - 0.0009820516201822708, - 0.0009706565599319421, - 0.0009600415631818275, - 0.0009499821249240388, - 0.0009395308883136345, - 0.0009299550076118774, - 0.0009213898977678683, - 0.0009129614317013572, - 0.0009045549577826427, - 0.0008978265001335077, - 0.0008889070233433611, - 0.0008808080501492238, - 0.0008747089848232766, - 0.0008677142930941449, - 0.0008612244461093925, - 0.0008541751471865508, - 0.0008492301761483153, - 0.0008438051025020994, - 0.0008372969226911664, - 0.0008320930349226627, - 0.0008262090624258337, - 0.0008212690894854152, - 0.0008170444033263872, - 0.0008116322116822832, - 0.0008085286788021525, - 0.0008024338063680463, - 0.0007971812136626492, - 0.0007941790558915171, - 0.0007888991599126409, - 0.0007850555250317686, - 0.0007812943005572177, - 0.0007774337214262535, - 0.0007736717008002517, - 0.0007680615494286434, - 0.000765761686488986, - 0.0007614624595993923, - 0.0007581874547112319, - 0.0007533019660816838, - 0.0007504364740776106, - 0.0007459188067716443, - 0.000741948351626181, - 0.000738971155240304, - 0.0007369754337964372, - 0.0007315872961448298, - 0.0007274452887941152, - 0.0007249550874500225, - 0.0007203698766210841, - 0.0007163520249175942, - 0.0007124568264569259, - 0.0007081288960762322, - 0.000703643683421736, - 0.0006989148180259185, - 0.0006963702481395255, - 0.000688923417409468, - 0.0006831818797056459, - 0.0006777228373620245, - 0.0006716486325280534, - 0.0006644388376217749, - 0.0006551507258942972, - 0.0006462268809425748, - 0.0006346332763011256, - 0.0006214740213989797, - 0.0006044942381170889, - 0.0005823747681764265, - 0.0005561722377832565, - 0.0005314765006510748 - ], - "epochs": 100, - "frame_stride": 1, - "lr": 0.0005, - "surrogate_notice": "Deterministically trained benchmark surrogate; the repository does not contain a published PA checkpoint." - }, - "path": "/home/cgao/OpenDPD/benchmark/fixtures/dpa200_dgru_h23.pt", - "sha256": "394fa38ca6f2f39e334f7231fd74f67dd35f276bc2d47a98a26791ccc409b40c" - }, - "format_version": 1, - "implementation": "fused_optimized", - "repo_root": "/home/cgao/OpenDPD", - "timing": { - "artifact_serialization_s": 0.006799441995099187, - "best_dpd_inference_s": 0.004696738993516192, - "best_test_inference_s": 0.006331028998829424, - "best_test_metrics_s": 0.0010608499869704247, - "compile_and_warmup_s": 0.8184028269897681, - "epochs": [ - { - "checkpoint_s": 0.00046286097494885325, - "test_inference_s": 0.007243523985380307, - "test_metrics_s": 0.0012444540043361485, - "total_s": 0.6581104569777381, - "train_s": 0.21840748700196855, - "val_inference_s": 0.011568956018891186, - "val_metrics_s": 0.419183174992213 - }, - { - "checkpoint_s": 0.0007332230161409825, - "test_inference_s": 0.006434084003558382, - "test_metrics_s": 0.0009385189914610237, - "total_s": 0.09366751098423265, - "train_s": 0.07804798899451271, - "val_inference_s": 0.006510526989586651, - "val_metrics_s": 0.0010031689889729023 - }, - { - "checkpoint_s": 0.0003146270173601806, - "test_inference_s": 0.008646130008855835, - "test_metrics_s": 0.0009823169966693968, - "total_s": 0.08942699304316193, - "train_s": 0.0720715339994058, - "val_inference_s": 0.006281366018811241, - "val_metrics_s": 0.0011310190020594746 - } - ], - "model_optimizer_setup_s": 0.00015189300756901503, - "peak_allocated_mib": 214.951171875, - "peak_reserved_mib": 388.0, - "setup_data_s": 0.029942201013909653, - "total_s": 2.3912337490182836 - }, - "trajectory": [ - { - "epoch": 0, - "lr": 0.005, - "test": { - "ACLR_AVG": -23.802359240421875, - "ACLR_L": -24.37394603979905, - "ACLR_R": -23.2307724410447, - "EVM": -9.233128572693975, - "NMSE": -8.636905670166016 - }, - "test_loss": 0.05844841152429581, - "train_loss": 0.3155043965772442, - "val": { - "ACLR_AVG": -24.368002997929, - "ACLR_L": -25.16671035814816, - "ACLR_R": -23.569295637709843, - "EVM": -8.888113479685826, - "NMSE": -8.287455558776855 - }, - "val_loss": 0.057822518050670624 - }, - { - "epoch": 1, - "lr": 0.005, - "test": { - "ACLR_AVG": -25.108308784049584, - "ACLR_L": -24.666419454016932, - "ACLR_R": -25.550198114082235, - "EVM": -15.074750848563701, - "NMSE": -14.206657409667969 - }, - "test_loss": 0.016343364492058754, - "train_loss": 0.03183207089972237, - "val": { - "ACLR_AVG": -25.800187826868317, - "ACLR_L": -25.373492592513752, - "ACLR_R": -26.22688306122288, - "EVM": -15.033653407766462, - "NMSE": -14.25285816192627 - }, - "val_loss": 0.014646781608462334 - }, - { - "epoch": 2, - "lr": 0.005, - "test": { - "ACLR_AVG": -27.219909644976333, - "ACLR_L": -26.78043182552716, - "ACLR_R": -27.659387464425503, - "EVM": -17.990375996302465, - "NMSE": -16.823091506958008 - }, - "test_loss": 0.008949208073318005, - "train_loss": 0.011927962181684763, - "val": { - "ACLR_AVG": -27.696055704565815, - "ACLR_L": -27.38654847009088, - "ACLR_R": -28.005562939040747, - "EVM": -17.836958689082586, - "NMSE": -16.878015518188477 - }, - "val_loss": 0.007999087683856487 - } - ] -} diff --git a/benchmark/results/e2e_dpa200_stride16_graph_optimized/batch_orders.npz b/benchmark/results/e2e_dpa200_stride16_graph_optimized/batch_orders.npz deleted file mode 100644 index b11c7975d3a101ed36dd307570ccadaf53df0120..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10137 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 diff --git a/benchmark/results/e2e_dpa200_stride16_graph_optimized/outputs.npz b/benchmark/results/e2e_dpa200_stride16_graph_optimized/outputs.npz deleted file mode 100644 index e74154850aa212546189037848674e779f0cf340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171247 zcmV)0K+eBVO9KQg000080000X04mrR#{d8S|NsC0{|f*V0ApcuV_{@vE^csn0RRvH zfbakS000009Nqu`00000oSFGsj?eeNAJLvvLRyq0Ns^G%bDvWoNl3_+l%nh*WKSiP zRN7TYLI_C`J@+|DlHMU%OGrZY5JLF+{0ratVdgsX+st+5oY(7`q$x8eyU*z&Sufc< z$bZpVzcqvGj0Q;;j~rxSG-&avHNk6qS1wq!#(&ZO_MLr~uU+(Se{G;|(4v2_*$4|G z>rpmV|K`CKMq7>kA46r2ZEujfr%e@AL6Bz=Cf+qlg@hYVWG#h3kp0;}NIn%OxNA5H zZGC!@&%jHv{YTGHQag z8h@MuZ8i-;Lc~Cbo$#N~#)pKm{H{W`$K|4IfGWkt2U6$zSrjN1lY{nHQvP^?B$W!X zZ`;mL;qKv3{Wyk5^)+1CJ%So$^+xwgcf^?k^f145fw=Tj7rfuASS)qh3pP3f$)|9= z_$z)F`I}_Z#slZ+;k-9w-MxuApQ>@UlBaZHRySVl(M%P(Ota5Fq=zcrbi62^$}%HG zL$8q}u__oNf31g*y>yAtS>yl?5(ROBwJ((WBvOLX0(h-w$dP?73mF01SmQy3SY?#Q zGX~|-{m4?*O>U>I&o1z(R&{bx zx$}B;MCsjN{u-x<{JifIW~cfX1G(}@mO}7--DYSym;I7p)8pz&&H|Bym-1P zxh)?@+Gl!#wEr+@jM@jcyS9Skh`SIxbtr!5+6fy>W}xSVcG&V{4UTmA1wF=Z!`#?r z$i5zlC4KjU_xezrH|4KTIde6-kLg1Df~I4FRwixgKLA}7zEMNqCFp;-3tK5A2riea zDdMdowOpD&W__=cWYl@P49j;^Id~*Y43p;#>q9`}Wedgrj0EY)E7X2H0i-$6q-2o| zO$UF9jbYUgXqqV4)O~`yvNGr~{~NeZorU#=74S3h00uV%fbPlL_+Ig>7;x$}+S}Ao z+WePz>AE?$gxx}&p&s15$059oL;1&vY3RQ5G+jAd2X$u01fyG%prGX;NFI#>o%+%E z^XheY@W&Nj^sqUWlCKW`Z> zPTmb4e8!=Fs}gQItBy5ihU2F>J0QZ_5)py#SgL3mUQYiH=g z&hyt`?X_6=_URo2dzZtN992Ae{0;QZ)xi$|&*1$;HN;7I;HO*+2Zm3DvOii7sH!4b zg=tV@k_xrQEvFfUKyB7QtDAKwsv}9PY7Y_}@<9xJ^;&p0Re{Fr+y$q{Jto7=6)E1}b zDW^d#U<4gC{R=*!?c(AN1FRjlokkBGgGP#P=tJxPGXn$B&Yr+AR zw?wlMzeLgh4rwcN!}>9Xyj6D>UfN^H6=QSJ_{9ibsu7QauV``6F$+BUy@edcEtI)S z75U7JfgCb?1Z$1l%yO=)IQ~gE%Zej-Q{XJtxER9gV|2K|X&C=9Z={z$%*bW`Sc0-R z@Cj@YM=k1r+IKoaXZstdNL≧S*s>Tr)_{CQxL2FZ>fVf;CtbL#mhX0o@E}aG%L# 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�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