From 56cc1ccb8397bb35464abe370df7514a56da92be Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 13 Jan 2026 20:04:25 +0000 Subject: [PATCH 01/51] refactor MLP to LoRAMLP --- fme/core/models/conditional_sfno/layers.py | 144 ++++++++++++++++++-- fme/core/models/conditional_sfno/sfnonet.py | 6 +- 2 files changed, 134 insertions(+), 16 deletions(-) diff --git a/fme/core/models/conditional_sfno/layers.py b/fme/core/models/conditional_sfno/layers.py index 8fba9691e..e9a6da1cf 100644 --- a/fme/core/models/conditional_sfno/layers.py +++ b/fme/core/models/conditional_sfno/layers.py @@ -327,7 +327,99 @@ def forward(self, x): # pragma: no cover return x -class MLP(nn.Module): +class LoraConv2d(nn.Module): + """ + LoRA adapter for Conv2d. + + Returns ONLY the low-rank update (delta), so you can do: + y = base_conv(x) + lora_conv(x) + + Design: + - Down projection: Conv2d(in -> r, same kernel/stride/pad/dilation/groups as base) + - Up projection: 1x1 Conv2d(r -> out) + - delta scaled by (alpha / r) + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + kernel_size: int | tuple[int, int], + stride: int | tuple[int, int] = 1, + padding: int | tuple[int, int] = 0, + dilation: int | tuple[int, int] = 1, + groups: int = 1, + lora_rank: int = 0, + lora_alpha: float | None = None, + dropout: float = 0.0, + bias: bool = False, # LoRA update typically no bias; keep False unless you want it + ) -> None: + super().__init__() + if lora_rank <= 0: + raise ValueError(f"lora_rank must be > 0, got {lora_rank}") + + if in_channels % groups != 0: + raise ValueError("in_channels must be divisible by groups") + if out_channels % groups != 0: + raise ValueError("out_channels must be divisible by groups") + + self.in_channels = in_channels + self.out_channels = out_channels + self.groups = groups + self.rank = int(lora_rank) + self.alpha = float(lora_alpha) if lora_alpha is not None else float(self.rank) + self.scaling = self.alpha / self.rank + + # LoRA dropout is applied on the input to the adapter (common choice) + self.lora_dropout = ( + nn.Dropout(dropout) if dropout and dropout > 0.0 else nn.Identity() + ) + + # Down: match base conv's spatial behavior; keep same groups so it composes cleanly. + self.down = nn.Conv2d( + in_channels=in_channels, + out_channels=self.rank, + kernel_size=kernel_size, + stride=stride, + padding=padding, + dilation=dilation, + groups=groups, + bias=False, + ) + + # Up: 1x1 to map rank -> out_channels; use same groups for consistency. + # Note: requires rank divisible by groups (since conv groups split channels). + if self.rank % groups != 0: + raise ValueError( + f"lora_rank ({self.rank}) must be divisible by groups ({groups})" + ) + self.up = nn.Conv2d( + in_channels=self.rank, + out_channels=out_channels, + kernel_size=1, + stride=1, + padding=0, + dilation=1, + groups=groups, + bias=bias, + ) + + self.reset_parameters() + + def reset_parameters(self) -> None: + # Common LoRA init: down ~ Kaiming, up = 0 so initial delta is exactly 0. + nn.init.kaiming_uniform_(self.down.weight, a=math.sqrt(5)) + nn.init.zeros_(self.up.weight) + if self.up.bias is not None: + nn.init.zeros_(self.up.bias) + + def forward(self, x: torch.Tensor) -> torch.Tensor: + x = self.lora_dropout(x) + delta = self.up(self.down(x)) + return delta * self.scaling + + +class LoRAMLP(nn.Module): """ Basic CNN with support for gradient checkpointing """ @@ -340,34 +432,62 @@ def __init__( act_layer=nn.GELU, output_bias=True, drop_rate=0.0, - checkpointing=0, + lora_rank: int = 0, + lora_alpha: int | None = None, ): # pragma: no cover - super(MLP, self).__init__() - self.checkpointing = checkpointing + super(LoRAMLP, self).__init__() out_features = out_features or in_features hidden_features = hidden_features or in_features fc1 = nn.Conv2d(in_features, hidden_features, 1, bias=True) act = act_layer() fc2 = nn.Conv2d(hidden_features, out_features, 1, bias=output_bias) + # self.fwd structure is kept for backwards compatibility with old checkpoints if drop_rate > 0.0: drop = nn.Dropout(drop_rate) self.fwd = nn.Sequential(fc1, act, drop, fc2, drop) else: self.fwd = nn.Sequential(fc1, act, fc2) - # by default, all weights are shared + if lora_rank > 0: + self.lora1: None | LoraConv2d = LoraConv2d( + in_features, + hidden_features, + 1, + lora_rank=lora_rank, + lora_alpha=lora_alpha, + ) + self.lora2: None | LoraConv2d = LoraConv2d( + hidden_features, + out_features, + 1, + lora_rank=lora_rank, + lora_alpha=lora_alpha, + ) + else: + self.lora1 = None + self.lora2 = None - @torch.jit.ignore - def checkpoint_forward(self, x): # pragma: no cover - """Forward method with support for gradient checkpointing""" - return checkpoint(self.fwd, x) + # by default, all weights are shared def forward(self, x): # pragma: no cover - if self.checkpointing >= 2: - return self.checkpoint_forward(x) + if len(self.fwd) == 5: + fc1, act, drop1, fc2, drop2 = self.fwd else: - return self.fwd(x) + fc1, act, fc2 = self.fwd + drop1 = drop2 = nn.Identity() + if self.lora1 is not None: + x = fc1(x) + self.lora1(x) + else: + x = fc1(x) + x = act(x) + x = drop1(x) + if self.lora2 is not None: + x = fc2(x) + self.lora2(x) + else: + x = fc2(x) + x = drop2(x) + return x class RealFFT2(nn.Module): diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index d3b7b58c2..affbc13b3 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -32,7 +32,7 @@ # import global convolution and non-linear spectral layers # helpers from .layers import ( - MLP, + LoRAMLP, ConditionalLayerNorm, Context, ContextConfig, @@ -257,14 +257,12 @@ def __init__( ) if use_mlp == True: - MLPH = MLP mlp_hidden_dim = int(embed_dim * mlp_ratio) - self.mlp = MLPH( + self.mlp = LoRAMLP( in_features=embed_dim, hidden_features=mlp_hidden_dim, act_layer=act_layer, drop_rate=drop_rate, - checkpointing=checkpointing, ) if outer_skip == "linear": From 5204ae134a1664a79466ef32a222c6b3bf92e8f7 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 13 Jan 2026 21:47:44 +0000 Subject: [PATCH 02/51] add lora to Conv2d in conditional sfno --- fme/core/models/conditional_sfno/layers.py | 164 ++++-------------- fme/core/models/conditional_sfno/lora.py | 134 ++++++++++++++ fme/core/models/conditional_sfno/sfnonet.py | 83 +++++++-- fme/core/models/conditional_sfno/test_lora.py | 23 +++ 4 files changed, 261 insertions(+), 143 deletions(-) create mode 100644 fme/core/models/conditional_sfno/lora.py create mode 100644 fme/core/models/conditional_sfno/test_lora.py diff --git a/fme/core/models/conditional_sfno/layers.py b/fme/core/models/conditional_sfno/layers.py index e9a6da1cf..3756b3d1c 100644 --- a/fme/core/models/conditional_sfno/layers.py +++ b/fme/core/models/conditional_sfno/layers.py @@ -24,6 +24,8 @@ import torch.nn.functional as F from torch.utils.checkpoint import checkpoint +from fme.core.models.conditional_sfno.lora import LoRAConv2d + from .activations import ComplexReLU from .contractions import compl_mul2d_fwd, compl_muladd2d_fwd @@ -327,99 +329,7 @@ def forward(self, x): # pragma: no cover return x -class LoraConv2d(nn.Module): - """ - LoRA adapter for Conv2d. - - Returns ONLY the low-rank update (delta), so you can do: - y = base_conv(x) + lora_conv(x) - - Design: - - Down projection: Conv2d(in -> r, same kernel/stride/pad/dilation/groups as base) - - Up projection: 1x1 Conv2d(r -> out) - - delta scaled by (alpha / r) - """ - - def __init__( - self, - in_channels: int, - out_channels: int, - kernel_size: int | tuple[int, int], - stride: int | tuple[int, int] = 1, - padding: int | tuple[int, int] = 0, - dilation: int | tuple[int, int] = 1, - groups: int = 1, - lora_rank: int = 0, - lora_alpha: float | None = None, - dropout: float = 0.0, - bias: bool = False, # LoRA update typically no bias; keep False unless you want it - ) -> None: - super().__init__() - if lora_rank <= 0: - raise ValueError(f"lora_rank must be > 0, got {lora_rank}") - - if in_channels % groups != 0: - raise ValueError("in_channels must be divisible by groups") - if out_channels % groups != 0: - raise ValueError("out_channels must be divisible by groups") - - self.in_channels = in_channels - self.out_channels = out_channels - self.groups = groups - self.rank = int(lora_rank) - self.alpha = float(lora_alpha) if lora_alpha is not None else float(self.rank) - self.scaling = self.alpha / self.rank - - # LoRA dropout is applied on the input to the adapter (common choice) - self.lora_dropout = ( - nn.Dropout(dropout) if dropout and dropout > 0.0 else nn.Identity() - ) - - # Down: match base conv's spatial behavior; keep same groups so it composes cleanly. - self.down = nn.Conv2d( - in_channels=in_channels, - out_channels=self.rank, - kernel_size=kernel_size, - stride=stride, - padding=padding, - dilation=dilation, - groups=groups, - bias=False, - ) - - # Up: 1x1 to map rank -> out_channels; use same groups for consistency. - # Note: requires rank divisible by groups (since conv groups split channels). - if self.rank % groups != 0: - raise ValueError( - f"lora_rank ({self.rank}) must be divisible by groups ({groups})" - ) - self.up = nn.Conv2d( - in_channels=self.rank, - out_channels=out_channels, - kernel_size=1, - stride=1, - padding=0, - dilation=1, - groups=groups, - bias=bias, - ) - - self.reset_parameters() - - def reset_parameters(self) -> None: - # Common LoRA init: down ~ Kaiming, up = 0 so initial delta is exactly 0. - nn.init.kaiming_uniform_(self.down.weight, a=math.sqrt(5)) - nn.init.zeros_(self.up.weight) - if self.up.bias is not None: - nn.init.zeros_(self.up.bias) - - def forward(self, x: torch.Tensor) -> torch.Tensor: - x = self.lora_dropout(x) - delta = self.up(self.down(x)) - return delta * self.scaling - - -class LoRAMLP(nn.Module): +class MLP(nn.Module): """ Basic CNN with support for gradient checkpointing """ @@ -432,62 +342,50 @@ def __init__( act_layer=nn.GELU, output_bias=True, drop_rate=0.0, + checkpointing=0, lora_rank: int = 0, - lora_alpha: int | None = None, + lora_alpha: float | None = None, ): # pragma: no cover - super(LoRAMLP, self).__init__() + super(MLP, self).__init__() + self.checkpointing = checkpointing out_features = out_features or in_features hidden_features = hidden_features or in_features - fc1 = nn.Conv2d(in_features, hidden_features, 1, bias=True) + fc1 = LoRAConv2d( + in_features, + hidden_features, + 1, + bias=True, + lora_rank=lora_rank, + lora_alpha=lora_alpha, + ) act = act_layer() - fc2 = nn.Conv2d(hidden_features, out_features, 1, bias=output_bias) - # self.fwd structure is kept for backwards compatibility with old checkpoints + fc2 = LoRAConv2d( + hidden_features, + out_features, + 1, + bias=output_bias, + lora_rank=lora_rank, + lora_alpha=lora_alpha, + ) if drop_rate > 0.0: drop = nn.Dropout(drop_rate) self.fwd = nn.Sequential(fc1, act, drop, fc2, drop) else: self.fwd = nn.Sequential(fc1, act, fc2) - if lora_rank > 0: - self.lora1: None | LoraConv2d = LoraConv2d( - in_features, - hidden_features, - 1, - lora_rank=lora_rank, - lora_alpha=lora_alpha, - ) - self.lora2: None | LoraConv2d = LoraConv2d( - hidden_features, - out_features, - 1, - lora_rank=lora_rank, - lora_alpha=lora_alpha, - ) - else: - self.lora1 = None - self.lora2 = None - # by default, all weights are shared + @torch.jit.ignore + def checkpoint_forward(self, x): # pragma: no cover + """Forward method with support for gradient checkpointing""" + return checkpoint(self.fwd, x) + def forward(self, x): # pragma: no cover - if len(self.fwd) == 5: - fc1, act, drop1, fc2, drop2 = self.fwd - else: - fc1, act, fc2 = self.fwd - drop1 = drop2 = nn.Identity() - if self.lora1 is not None: - x = fc1(x) + self.lora1(x) + if self.checkpointing >= 2: + return self.checkpoint_forward(x) else: - x = fc1(x) - x = act(x) - x = drop1(x) - if self.lora2 is not None: - x = fc2(x) + self.lora2(x) - else: - x = fc2(x) - x = drop2(x) - return x + return self.fwd(x) class RealFFT2(nn.Module): diff --git a/fme/core/models/conditional_sfno/lora.py b/fme/core/models/conditional_sfno/lora.py new file mode 100644 index 000000000..cdc8d4949 --- /dev/null +++ b/fme/core/models/conditional_sfno/lora.py @@ -0,0 +1,134 @@ +from __future__ import annotations + +import math + +import torch +import torch.nn as nn + + +class LoRAConv2d(nn.Conv2d): + """ + Drop-in Conv2d with optional LoRA. + + - API matches torch.nn.Conv2d, with extra args: + lora_rank: int = 0 (0 disables LoRA) + lora_alpha: float = None (defaults to lora_rank) + lora_dropout: float = 0.0 + + - Can load a checkpoint saved from nn.Conv2d even when lora_rank > 0 + (i.e., state_dict only has "weight"/"bias"). + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + kernel_size: int | tuple[int, int], + stride: int | tuple[int, int] = 1, + padding: int | tuple[int, int] = 0, + dilation: int | tuple[int, int] = 1, + groups: int = 1, + bias: bool = True, + padding_mode: str = "zeros", + device=None, + dtype=None, + *, + lora_rank: int = 0, + lora_alpha: float | None = None, + lora_dropout: float = 0.0, + ) -> None: + factory_kwargs = {"device": device, "dtype": dtype} + super().__init__( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + padding=padding, + dilation=dilation, + groups=groups, + bias=bias, + padding_mode=padding_mode, + **factory_kwargs, + ) + + if lora_rank < 0: + raise ValueError(f"lora_rank must be >= 0, got {lora_rank}") + if lora_dropout < 0.0: + raise ValueError(f"lora_dropout must be >= 0, got {lora_dropout}") + + self.lora_rank = int(lora_rank) + self.lora_alpha = ( + float(lora_alpha) if lora_alpha is not None else float(lora_rank) + ) + self.lora_dropout_p = float(lora_dropout) + + self._lora_merged = False + + if self.lora_rank > 0: + # Group-compatible LoRA via two convs: + # down: 1x1 grouped conv: in_channels -> (groups * r), groups=groups + # up: kxk grouped conv: (groups * r) -> out_channels, groups=groups + # This produces a delta with the same grouped structure as the base conv. + mid_channels = self.groups * self.lora_rank + + self.lora_down = nn.Conv2d( + in_channels=self.in_channels, + out_channels=mid_channels, + kernel_size=1, + stride=1, + padding=0, + dilation=1, + groups=self.groups, + bias=False, + **factory_kwargs, + ) + self.lora_up = nn.Conv2d( + in_channels=mid_channels, + out_channels=self.out_channels, + kernel_size=self.kernel_size, + stride=self.stride, + padding=self.padding, + dilation=self.dilation, + groups=self.groups, + bias=False, + padding_mode=self.padding_mode, + **factory_kwargs, + ) + + self.lora_dropout = ( + nn.Dropout(p=self.lora_dropout_p) + if self.lora_dropout_p > 0 + else nn.Identity() + ) + + # Init: down ~ Kaiming, up = 0 so the module starts + # identical to base Conv2d. + nn.init.kaiming_uniform_(self.lora_down.weight, a=math.sqrt(5)) + nn.init.zeros_(self.lora_up.weight) + + # Scaling as in LoRA: alpha / r + self.lora_scaling = self.lora_alpha / float(self.lora_rank) + else: + # Keep attributes for easier introspection, but no parameters. + self.lora_down = None + self.lora_up = None + self.lora_dropout = nn.Identity() + self.lora_scaling = 0.0 + + def extra_repr(self) -> str: + base = super().extra_repr() + if self.lora_rank > 0: + return ( + f"{base}, lora_rank={self.lora_rank}, lora_alpha={self.lora_alpha}, " + f"lora_dropout={self.lora_dropout_p}, lora_merged={self._lora_merged}" + ) + return f"{base}, lora_rank=0" + + def forward(self, x: torch.Tensor) -> torch.Tensor: + y = super().forward(x) + if self.lora_rank == 0 or self._lora_merged: + return y + assert self.lora_down is not None and self.lora_up is not None + return ( + y + self.lora_up(self.lora_down(self.lora_dropout(x))) * self.lora_scaling + ) diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index affbc13b3..aa709d29e 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -32,13 +32,14 @@ # import global convolution and non-linear spectral layers # helpers from .layers import ( - LoRAMLP, + MLP, ConditionalLayerNorm, Context, ContextConfig, DropPath, SpectralAttention2d, ) +from .lora import LoRAConv2d from .s2convolutions import SpectralAttentionS2, SpectralConvS2 from .makani.spectral_convolution import SpectralConv @@ -195,6 +196,8 @@ def __init__( filter_residual=False, affine_norms=False, filter_num_groups: int = 1, + lora_rank: int = 0, + lora_alpha: float | None = None, ): super(FourierNeuralOperatorBlock, self).__init__() @@ -232,14 +235,23 @@ def __init__( ) if inner_skip == "linear": - self.inner_skip = nn.Conv2d(embed_dim, embed_dim, 1, 1) + self.inner_skip = LoRAConv2d( + embed_dim, embed_dim, 1, 1, lora_rank=lora_rank, lora_alpha=lora_alpha + ) elif inner_skip == "identity": self.inner_skip = nn.Identity() self.concat_skip = concat_skip if concat_skip and inner_skip is not None: - self.inner_skip_conv = nn.Conv2d(2 * embed_dim, embed_dim, 1, bias=False) + self.inner_skip_conv = LoRAConv2d( + 2 * embed_dim, + embed_dim, + 1, + bias=False, + lora_rank=lora_rank, + lora_alpha=lora_alpha, + ) if filter_type == "linear" or filter_type == "real linear": self.act_layer = act_layer() @@ -258,20 +270,31 @@ def __init__( if use_mlp == True: mlp_hidden_dim = int(embed_dim * mlp_ratio) - self.mlp = LoRAMLP( + self.mlp = MLP( in_features=embed_dim, hidden_features=mlp_hidden_dim, act_layer=act_layer, drop_rate=drop_rate, + lora_rank=lora_rank, + lora_alpha=lora_alpha, ) if outer_skip == "linear": - self.outer_skip = nn.Conv2d(embed_dim, embed_dim, 1, 1) + self.outer_skip = LoRAConv2d( + embed_dim, embed_dim, 1, 1, lora_rank=lora_rank, lora_alpha=lora_alpha + ) elif outer_skip == "identity": self.outer_skip = nn.Identity() if concat_skip and outer_skip is not None: - self.outer_skip_conv = nn.Conv2d(2 * embed_dim, embed_dim, 1, bias=False) + self.outer_skip_conv = LoRAConv2d( + 2 * embed_dim, + embed_dim, + 1, + bias=False, + lora_rank=lora_rank, + lora_alpha=lora_alpha, + ) def forward(self, x, context_embedding): x_norm = torch.zeros_like(x) @@ -522,6 +545,8 @@ def __init__( local_blocks: Optional[List[int]] = None, normalize_big_skip: bool = False, affine_norms: bool = False, + lora_rank: int = 0, + lora_alpha: float | None = None, ): super(SphericalFourierNeuralOperatorNet, self).__init__() @@ -635,6 +660,10 @@ def __init__( if hasattr(params, "filter_num_groups") else filter_num_groups ) + self.lora_rank = params.lora_rank if hasattr(params, "lora_rank") else lora_rank + self.lora_alpha = ( + params.lora_alpha if hasattr(params, "lora_alpha") else lora_alpha + ) # no global padding because we removed the horizontal distributed code self.padding = (0, 0) @@ -674,11 +703,27 @@ def __init__( encoder_modules = [] for i in range(self.encoder_layers): encoder_modules.append( - nn.Conv2d(current_dim, encoder_hidden_dim, 1, bias=True) + LoRAConv2d( + current_dim, + encoder_hidden_dim, + 1, + bias=True, + lora_rank=self.lora_rank, + lora_alpha=self.lora_alpha, + ) ) encoder_modules.append(self.activation_function()) current_dim = encoder_hidden_dim - encoder_modules.append(nn.Conv2d(current_dim, self.embed_dim, 1, bias=False)) + encoder_modules.append( + LoRAConv2d( + current_dim, + self.embed_dim, + 1, + bias=False, + lora_rank=self.lora_rank, + lora_alpha=self.lora_alpha, + ) + ) self.encoder = nn.Sequential(*encoder_modules) # dropout @@ -730,6 +775,8 @@ def __init__( filter_residual=self.filter_residual, affine_norms=self.affine_norms, filter_num_groups=self.filter_num_groups, + lora_rank=self.lora_rank, + lora_alpha=self.lora_alpha, ) self.blocks.append(block) @@ -740,11 +787,27 @@ def __init__( decoder_modules = [] for i in range(self.encoder_layers): decoder_modules.append( - nn.Conv2d(current_dim, decoder_hidden_dim, 1, bias=True) + LoRAConv2d( + current_dim, + decoder_hidden_dim, + 1, + bias=True, + lora_rank=self.lora_rank, + lora_alpha=self.lora_alpha, + ) ) decoder_modules.append(self.activation_function()) current_dim = decoder_hidden_dim - decoder_modules.append(nn.Conv2d(current_dim, self.out_chans, 1, bias=False)) + decoder_modules.append( + LoRAConv2d( + current_dim, + self.out_chans, + 1, + bias=False, + lora_rank=self.lora_rank, + lora_alpha=self.lora_alpha, + ) + ) self.decoder = nn.Sequential(*decoder_modules) # learned position embedding diff --git a/fme/core/models/conditional_sfno/test_lora.py b/fme/core/models/conditional_sfno/test_lora.py new file mode 100644 index 000000000..d880098d5 --- /dev/null +++ b/fme/core/models/conditional_sfno/test_lora.py @@ -0,0 +1,23 @@ +import torch +from torch import nn + +from fme.core.models.conditional_sfno.lora import LoRAConv2d + + +def test_lora_conv2d_load_conv2d_checkpoint(): + conv = nn.Conv2d(8, 16, 3, padding=1) + lora = LoRAConv2d(8, 16, 3, padding=1) # default should not use/require lora + + lora.load_state_dict(conv.state_dict(), strict=True) + + x = torch.randn(2, 8, 32, 32) + with torch.no_grad(): + y0 = conv(x) + y1 = lora(x) + torch.testing.assert_close( + y0, + y1, + atol=1e-6, + rtol=0, + msg="Outputs do not match after loading Conv2d checkpoint", + ) From 0a6ab69166817221bec52d6c276b9defda46eec7 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Wed, 14 Jan 2026 22:18:13 +0000 Subject: [PATCH 03/51] add lora for spectral convolutions, add to csfno config --- fme/ace/registry/stochastic_sfno.py | 12 ++++ fme/core/models/conditional_sfno/lora.py | 12 ++-- .../models/conditional_sfno/s2convolutions.py | 55 +++++++++++++++++++ fme/core/models/conditional_sfno/sfnonet.py | 29 +++++++++- .../conditional_sfno/test_s2convolutions.py | 49 +++++++++++++++++ 5 files changed, 151 insertions(+), 6 deletions(-) create mode 100644 fme/core/models/conditional_sfno/test_s2convolutions.py diff --git a/fme/ace/registry/stochastic_sfno.py b/fme/ace/registry/stochastic_sfno.py index debc12fde..84abcf761 100644 --- a/fme/ace/registry/stochastic_sfno.py +++ b/fme/ace/registry/stochastic_sfno.py @@ -134,6 +134,14 @@ class NoiseConditionedSFNOBuilder(ModuleConfig): normalization layers. filter_num_groups: Number of groups to use in grouped convolutions for the spectral filter. + lora_rank: Rank of the LoRA adaptations outside of spectral convolutions. + 0 (default) disables LoRA. + lora_alpha: Strength of the LoRA adaptations outside of spectral convolutions. + Defaults to lora_rank. + spectral_lora_rank: Rank of the LoRA adaptations for spectral convolutions. + 0 (default) disables LoRA. + spectral_lora_alpha: Strength of the LoRA adaptations for spectral convolutions. + Defaults to spectral_lora_rank. """ spectral_transform: Literal["sht"] = "sht" @@ -166,6 +174,10 @@ class NoiseConditionedSFNOBuilder(ModuleConfig): normalize_big_skip: bool = False affine_norms: bool = False filter_num_groups: int = 1 + lora_rank: int = 0 + lora_alpha: float | None = None + spectral_lora_rank: int = 0 + spectral_lora_alpha: float | None = None def build( self, diff --git a/fme/core/models/conditional_sfno/lora.py b/fme/core/models/conditional_sfno/lora.py index cdc8d4949..f473f5fe4 100644 --- a/fme/core/models/conditional_sfno/lora.py +++ b/fme/core/models/conditional_sfno/lora.py @@ -101,11 +101,7 @@ def __init__( else nn.Identity() ) - # Init: down ~ Kaiming, up = 0 so the module starts - # identical to base Conv2d. - nn.init.kaiming_uniform_(self.lora_down.weight, a=math.sqrt(5)) - nn.init.zeros_(self.lora_up.weight) - + self.reset_parameters() # Scaling as in LoRA: alpha / r self.lora_scaling = self.lora_alpha / float(self.lora_rank) else: @@ -115,6 +111,12 @@ def __init__( self.lora_dropout = nn.Identity() self.lora_scaling = 0.0 + def reset_parameters(self) -> None: + # Init: down ~ Kaiming, up = 0 so the module starts + # identical to base Conv2d. + nn.init.kaiming_uniform_(self.lora_down.weight, a=math.sqrt(5)) + nn.init.zeros_(self.lora_up.weight) + def extra_repr(self) -> str: base = super().extra_repr() if self.lora_rank > 0: diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index b6a373d8c..ebdd83493 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -44,6 +44,17 @@ from .factorizations import get_contract_fun +@torch.jit.script +def _contract_lora( + lora_A: torch.Tensor, + lora_B: torch.Tensor, + x: torch.Tensor, +): + lora_A = torch.view_as_complex(lora_A) + lora_B = torch.view_as_complex(lora_B) + return torch.einsum("irx,rox,bixy->boxy", lora_A, lora_B, x) + + class SpectralConvS2(nn.Module): """ Spectral Convolution according to Driscoll & Healy. Designed for convolutions on @@ -67,9 +78,16 @@ def __init__( bias=False, use_tensorly=True, filter_residual: bool = False, + lora_rank: int = 0, + lora_alpha: float | None = None, ): # pragma: no cover super(SpectralConvS2, self).__init__() + if in_channels != out_channels: + raise NotImplementedError( + "Currently only in_channels == out_channels is supported." + ) + if scale == "auto": scale = 1 / (in_channels * out_channels) @@ -151,6 +169,33 @@ def __init__( else: self.weight.is_shared_mp = ["matmul"] + if lora_rank > 0: + if self.weight.shape != ( + in_channels, + out_channels, + self.modes_lat_local, + 2, + ): + raise NotImplementedError( + "LoRA is only implemented for dhconv with unpadded weights." + ) + if use_tensorly: + raise NotImplementedError( + "LoRA is not implemented for tensorly factorized weights." + ) + self.lora_A = nn.Parameter( + scale * torch.randn(in_channels, lora_rank, self.modes_lat_local, 2) + ) + self.lora_B = nn.Parameter( + torch.zeros(lora_rank, out_channels, self.modes_lat_local, 2) + ) + self.lora_alpha = lora_alpha if lora_alpha is not None else lora_rank + self.lora_scaling = self.lora_alpha / lora_rank + else: + self.lora_A = None + self.lora_B = None + self.lora_scaling = 0.0 + # get the contraction handle self._contract = get_contract_fun( self.weight, implementation="factorized", separable=separable @@ -172,6 +217,15 @@ def forward(self, x): # pragma: no cover residual = self.inverse_transform(x) residual = residual.to(dtype) + if self.lora_A is not None and self.lora_B is not None: + lora_update = _contract_lora( + self.lora_A, + self.lora_B, + x[..., : self.modes_lat_local, : self.modes_lon_local], + ) + else: + lora_update = 0.0 + # approach with unpadded weights xp = torch.zeros_like(x) xp[..., : self.modes_lat_local, : self.modes_lon_local] = self._contract( @@ -180,6 +234,7 @@ def forward(self, x): # pragma: no cover separable=self.separable, operator_type=self.operator_type, ) + xp = xp + self.lora_scaling * lora_update x = xp.contiguous() # # approach with padded weights diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index aa709d29e..248d8f845 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -91,9 +91,14 @@ def __init__( drop_rate=0.0, num_groups=1, filter_residual=False, + lora_rank: int = 0, + lora_alpha: float | None = None, ): super(SpectralFilterLayer, self).__init__() + if lora_rank != 0 and filter_type != "linear": + raise NotImplementedError("LoRA is only supported for linear filter type.") + if filter_type == "non-linear": self.filter = SpectralAttentionS2( forward_transform, @@ -122,6 +127,8 @@ def __init__( bias=True, use_tensorly=False if factorization is None else True, filter_residual=filter_residual, + lora_rank=lora_rank, + lora_alpha=lora_alpha, ) elif filter_type == "makani-linear": self.filter = SpectralConv( @@ -198,6 +205,8 @@ def __init__( filter_num_groups: int = 1, lora_rank: int = 0, lora_alpha: float | None = None, + spectral_lora_rank: int = 0, + spectral_lora_alpha: float | None = None, ): super(FourierNeuralOperatorBlock, self).__init__() @@ -232,6 +241,8 @@ def __init__( drop_rate=drop_rate, filter_residual=filter_residual, num_groups=filter_num_groups, + lora_rank=spectral_lora_rank, + lora_alpha=spectral_lora_alpha, ) if inner_skip == "linear": @@ -547,6 +558,8 @@ def __init__( affine_norms: bool = False, lora_rank: int = 0, lora_alpha: float | None = None, + spectral_lora_rank: int = 0, + spectral_lora_alpha: float | None = None, ): super(SphericalFourierNeuralOperatorNet, self).__init__() @@ -664,6 +677,16 @@ def __init__( self.lora_alpha = ( params.lora_alpha if hasattr(params, "lora_alpha") else lora_alpha ) + self.spectral_lora_rank = ( + params.spectral_lora_rank + if hasattr(params, "spectral_lora_rank") + else spectral_lora_rank + ) + self.spectral_lora_alpha = ( + params.spectral_lora_alpha + if hasattr(params, "spectral_lora_alpha") + else spectral_lora_alpha + ) # no global padding because we removed the horizontal distributed code self.padding = (0, 0) @@ -777,6 +800,8 @@ def __init__( filter_num_groups=self.filter_num_groups, lora_rank=self.lora_rank, lora_alpha=self.lora_alpha, + spectral_lora_rank=self.spectral_lora_rank, + spectral_lora_alpha=self.spectral_lora_alpha, ) self.blocks.append(block) @@ -828,7 +853,9 @@ def __init__( def _init_weights(self, m): """Helper routine for weight initialization""" - if isinstance(m, nn.Linear) or isinstance(m, nn.Conv2d): + if isinstance(m, LoRAConv2d): + m.reset_parameters() + elif isinstance(m, nn.Linear) or isinstance(m, nn.Conv2d): trunc_normal_(m.weight, std=0.02) if m.bias is not None: nn.init.constant_(m.bias, 0) diff --git a/fme/core/models/conditional_sfno/test_s2convolutions.py b/fme/core/models/conditional_sfno/test_s2convolutions.py new file mode 100644 index 000000000..be102d628 --- /dev/null +++ b/fme/core/models/conditional_sfno/test_s2convolutions.py @@ -0,0 +1,49 @@ +import torch + +from fme.core.gridded_ops import LatLonOperations +from fme.core.models.conditional_sfno.s2convolutions import SpectralConvS2 + + +def test_spectral_conv_s2_lora(): + in_channels = 8 + out_channels = in_channels + n_lat = 12 + n_lon = 24 + operations = LatLonOperations( + area_weights=torch.ones(n_lat, n_lon), + grid="legendre-gauss", + ) + sht = operations.get_real_sht() + isht = operations.get_real_isht() + + conv1 = SpectralConvS2( + forward_transform=sht, + inverse_transform=isht, + in_channels=in_channels, + out_channels=out_channels, + operator_type="dhconv", + use_tensorly=False, + ) + assert conv1.lora_A is None + assert conv1.lora_B is None + conv2 = SpectralConvS2( + forward_transform=sht, + inverse_transform=isht, + in_channels=in_channels, + out_channels=out_channels, + operator_type="dhconv", + use_tensorly=False, + lora_rank=4, + lora_alpha=8, + ) + assert conv2.lora_A is not None + assert conv2.lora_B is not None + + conv2.load_state_dict(conv1.state_dict(), strict=False) + x = torch.randn(2, in_channels, n_lat, n_lon) + y1, residual1 = conv1(x) + y2, residual2 = conv2(x) + + # initial outputs should be identical since LoRA starts at 0 + assert torch.allclose(y1, y2, atol=1e-6) + assert torch.allclose(residual1, residual2, atol=1e-6) From 044168a250f02cc5ff3508e6c218f49eb5a9403f Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Thu, 15 Jan 2026 15:26:16 +0000 Subject: [PATCH 04/51] avoid crash on super init --- fme/core/models/conditional_sfno/lora.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/fme/core/models/conditional_sfno/lora.py b/fme/core/models/conditional_sfno/lora.py index f473f5fe4..78f84bf09 100644 --- a/fme/core/models/conditional_sfno/lora.py +++ b/fme/core/models/conditional_sfno/lora.py @@ -38,6 +38,8 @@ def __init__( lora_dropout: float = 0.0, ) -> None: factory_kwargs = {"device": device, "dtype": dtype} + self.lora_down: nn.Conv2d | None = None + self.lora_up: nn.Conv2d | None = None super().__init__( in_channels=in_channels, out_channels=out_channels, @@ -101,21 +103,24 @@ def __init__( else nn.Identity() ) - self.reset_parameters() # Scaling as in LoRA: alpha / r self.lora_scaling = self.lora_alpha / float(self.lora_rank) else: - # Keep attributes for easier introspection, but no parameters. - self.lora_down = None - self.lora_up = None self.lora_dropout = nn.Identity() self.lora_scaling = 0.0 + self.reset_parameters() def reset_parameters(self) -> None: + super().reset_parameters() + self._reset_lora_parameters() + + def _reset_lora_parameters(self): # Init: down ~ Kaiming, up = 0 so the module starts # identical to base Conv2d. - nn.init.kaiming_uniform_(self.lora_down.weight, a=math.sqrt(5)) - nn.init.zeros_(self.lora_up.weight) + if self.lora_down is not None: + nn.init.kaiming_uniform_(self.lora_down.weight, a=math.sqrt(5)) + if self.lora_up is not None: + nn.init.zeros_(self.lora_up.weight) def extra_repr(self) -> str: base = super().extra_repr() From 3dd7aa985b75bc033d7687c6e8ea6c2ddc10b010 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Thu, 15 Jan 2026 15:40:12 +0000 Subject: [PATCH 05/51] fix change to model output --- fme/core/models/conditional_sfno/lora.py | 6 +++--- fme/core/models/conditional_sfno/sfnonet.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fme/core/models/conditional_sfno/lora.py b/fme/core/models/conditional_sfno/lora.py index 78f84bf09..ea548ef32 100644 --- a/fme/core/models/conditional_sfno/lora.py +++ b/fme/core/models/conditional_sfno/lora.py @@ -108,13 +108,13 @@ def __init__( else: self.lora_dropout = nn.Identity() self.lora_scaling = 0.0 - self.reset_parameters() + self.reset_lora_parameters() # base parameters already reset in super init def reset_parameters(self) -> None: super().reset_parameters() - self._reset_lora_parameters() + self.reset_lora_parameters() - def _reset_lora_parameters(self): + def reset_lora_parameters(self): # Init: down ~ Kaiming, up = 0 so the module starts # identical to base Conv2d. if self.lora_down is not None: diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index 248d8f845..ab760c8ba 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -853,12 +853,12 @@ def __init__( def _init_weights(self, m): """Helper routine for weight initialization""" - if isinstance(m, LoRAConv2d): - m.reset_parameters() - elif isinstance(m, nn.Linear) or isinstance(m, nn.Conv2d): + if isinstance(m, nn.Linear) or isinstance(m, nn.Conv2d): trunc_normal_(m.weight, std=0.02) if m.bias is not None: nn.init.constant_(m.bias, 0) + if isinstance(m, LoRAConv2d): + m.reset_lora_parameters() elif isinstance(m, ConditionalLayerNorm): m.reset_parameters() From 7f6cc527fbc82da0a38dd84fc792c5cc1a6dcb54 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Thu, 22 Jan 2026 22:00:42 +0000 Subject: [PATCH 06/51] update regression target to use dhconv --- .../models/conditional_sfno/s2convolutions.py | 16 ++++++++++++++++ .../models/conditional_sfno/test_sfnonet.py | 5 +++-- .../test_sfnonet_output_is_unchanged.pt | Bin 9177 -> 9624 bytes 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index ebdd83493..f9864c26a 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -82,6 +82,22 @@ def __init__( lora_alpha: float | None = None, ): # pragma: no cover super(SpectralConvS2, self).__init__() + if operator_type != "dhconv": + raise NotImplementedError( + "Only 'dhconv' operator type is currently supported." + ) + if factorization is not None: + raise NotImplementedError( + "Factorizations other than None are not currently supported." + ) + if use_tensorly: + raise NotImplementedError( + "Tensorly-based implementation is not currently supported." + ) + if separable: + raise NotImplementedError( + "Separable convolutions are not currently supported." + ) if in_channels != out_channels: raise NotImplementedError( diff --git a/fme/core/models/conditional_sfno/test_sfnonet.py b/fme/core/models/conditional_sfno/test_sfnonet.py index 43945893c..d2489d7d6 100644 --- a/fme/core/models/conditional_sfno/test_sfnonet.py +++ b/fme/core/models/conditional_sfno/test_sfnonet.py @@ -101,10 +101,10 @@ def test_sfnonet_output_is_unchanged(): img_shape = (9, 18) n_samples = 4 conditional_embed_dim_scalar = 8 - conditional_embed_dim_labels = 0 + conditional_embed_dim_labels = 4 conditional_embed_dim_noise = 16 device = get_device() - params = SimpleNamespace(embed_dim=16, num_layers=2) + params = SimpleNamespace(embed_dim=16, num_layers=2, operator_type="dhconv") model = get_lat_lon_sfnonet( params=params, img_shape=img_shape, @@ -165,6 +165,7 @@ def forward(self, x): num_layers=2, normalize_big_skip=normalize_big_skip, global_layer_norm=True, # so it uses nn.LayerNorm + operator_type="dhconv", ) model = get_lat_lon_sfnonet( params=params, diff --git a/fme/core/models/conditional_sfno/testdata/test_sfnonet_output_is_unchanged.pt b/fme/core/models/conditional_sfno/testdata/test_sfnonet_output_is_unchanged.pt index 6fb14b9be8c623160ea04fd0d327a3c93bd4a335..c3e6f7897a226acbfe6ba1116080aaf445a57610 100644 GIT binary patch literal 9624 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�gnvVc#3XIr1y; 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 Y!+(GNU9cnbOS014Mo#dn{_l1FA6%k}g8%>k literal 9177 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 From 71aac8b29679c618486655c414b91ada45e66bf5 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Thu, 22 Jan 2026 22:04:56 +0000 Subject: [PATCH 07/51] use dhconv directly, disable other options --- .../models/conditional_sfno/s2convolutions.py | 81 ++++++++----------- 1 file changed, 32 insertions(+), 49 deletions(-) diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index f9864c26a..c039de151 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -50,11 +50,36 @@ def _contract_lora( lora_B: torch.Tensor, x: torch.Tensor, ): + """ + Performs LoRA update contraction. + + Args: + lora_A: LoRA A matrix of shape (in_channels, rank, nlat, 2) + lora_B: LoRA B matrix of shape (rank, out_channels, nlat, 2) + x: Complex input tensor of shape + (batch_size, in_channels, nlat, nlon) + """ lora_A = torch.view_as_complex(lora_A) lora_B = torch.view_as_complex(lora_B) return torch.einsum("irx,rox,bixy->boxy", lora_A, lora_B, x) +@torch.jit.script +def _contract_dhconv( + xc: torch.Tensor, weight: torch.Tensor +) -> torch.Tensor: # pragma: no cover + """ + Performs a complex Driscoll-Healy style convolution operation between two tensors + 'a' and 'b'. + + Args: + xc: Complex input tensor of shape (batch_size, in_channels, nlat, nlon) + weight: Weight tensor of shape (in_channels, out_channels, nlat, 2) + """ + wc = torch.view_as_complex(weight) + return torch.einsum("bixy,iox->boxy", xc, wc) + + class SpectralConvS2(nn.Module): """ Spectral Convolution according to Driscoll & Healy. Designed for convolutions on @@ -134,11 +159,6 @@ def __init__( assert self.inverse_transform.lmax == self.modes_lat assert self.inverse_transform.mmax == self.modes_lon - weight_shape = [in_channels] - - if not self.separable: - weight_shape += [out_channels] - if isinstance(self.inverse_transform, thd.DistributedInverseRealSHT): self.modes_lat_local = self.inverse_transform.lmax_local self.modes_lon_local = self.inverse_transform.mmax_local @@ -150,40 +170,14 @@ def __init__( self.lpad = 0 self.mpad = 0 - # padded weights - # if self.operator_type == 'diagonal': - # weight_shape += [self.modes_lat_local+self.lpad_local, self.modes_lon_local+self.mpad_local] - # elif self.operator_type == 'dhconv': - # weight_shape += [self.modes_lat_local+self.lpad_local] - # else: - # raise ValueError(f"Unsupported operator type f{self.operator_type}") - - # unpadded weights - if self.operator_type == "diagonal": - weight_shape += [self.modes_lat_local, self.modes_lon_local] - elif self.operator_type == "dhconv": - weight_shape += [self.modes_lat_local] - else: - raise ValueError(f"Unsupported operator type f{self.operator_type}") + weight_shape = [in_channels, out_channels, self.modes_lat_local] - if use_tensorly: - # form weight tensors - self.weight = FactorizedTensor.new( - weight_shape, - rank=self.rank, - factorization=factorization, - fixed_rank_modes=False, - **decomposition_kwargs, - ) - # initialization of weights - self.weight.normal_(0, scale) + assert factorization == "ComplexDense" + self.weight = nn.Parameter(scale * torch.randn(*weight_shape, 2)) + if self.operator_type == "dhconv": + self.weight.is_shared_mp = ["matmul", "w"] else: - assert factorization == "ComplexDense" - self.weight = nn.Parameter(scale * torch.randn(*weight_shape, 2)) - if self.operator_type == "dhconv": - self.weight.is_shared_mp = ["matmul", "w"] - else: - self.weight.is_shared_mp = ["matmul"] + self.weight.is_shared_mp = ["matmul"] if lora_rank > 0: if self.weight.shape != ( @@ -212,11 +206,6 @@ def __init__( self.lora_B = None self.lora_scaling = 0.0 - # get the contraction handle - self._contract = get_contract_fun( - self.weight, implementation="factorized", separable=separable - ) - if bias: self.bias = nn.Parameter(scale * torch.zeros(1, out_channels, 1, 1)) @@ -244,19 +233,13 @@ def forward(self, x): # pragma: no cover # approach with unpadded weights xp = torch.zeros_like(x) - xp[..., : self.modes_lat_local, : self.modes_lon_local] = self._contract( + xp[..., : self.modes_lat_local, : self.modes_lon_local] = _contract_dhconv( x[..., : self.modes_lat_local, : self.modes_lon_local], self.weight, - separable=self.separable, - operator_type=self.operator_type, ) xp = xp + self.lora_scaling * lora_update x = xp.contiguous() - # # approach with padded weights - # x = self._contract(x, self.weight, separable=self.separable, operator_type=self.operator_type) - # x = x.contiguous() - with torch.amp.autocast("cuda", enabled=False): x = self.inverse_transform(x) From c09fd5a98056f2bd85fa1dfc56b379cdc63e2a6b Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Thu, 22 Jan 2026 22:12:01 +0000 Subject: [PATCH 08/51] delete unused code --- .../models/conditional_sfno/factorizations.py | 260 ------------------ .../models/conditional_sfno/s2convolutions.py | 7 - fme/core/models/conditional_sfno/sfnonet.py | 3 - 3 files changed, 270 deletions(-) delete mode 100644 fme/core/models/conditional_sfno/factorizations.py diff --git a/fme/core/models/conditional_sfno/factorizations.py b/fme/core/models/conditional_sfno/factorizations.py deleted file mode 100644 index 66cf6fa17..000000000 --- a/fme/core/models/conditional_sfno/factorizations.py +++ /dev/null @@ -1,260 +0,0 @@ -# flake8: noqa -# Copied from https://github.com/ai2cm/modulus/commit/22df4a9427f5f12ff6ac891083220e7f2f54d229 -# Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import tensorly as tl -import torch - -tl.set_backend("pytorch") -# from tensorly.plugins import use_opt_einsum -# use_opt_einsum('optimal') - -from tltorch.factorized_tensors.core import FactorizedTensor - -from .contractions import ( - _contract_dhconv, - _contract_diagonal, - _contract_sep_dhconv, - _contract_sep_diagonal, -) - -einsum_symbols = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" - - -def _contract_dense( - x, weight, separable=False, operator_type="diagonal" -): # pragma: no cover - order = tl.ndim(x) - # batch-size, in_channels, x, y... - x_syms = list(einsum_symbols[:order]) - - # in_channels, out_channels, x, y... - weight_syms = list(x_syms[1:]) # no batch-size - - # batch-size, out_channels, x, y... - if separable: - out_syms = [x_syms[0]] + list(weight_syms) - else: - weight_syms.insert(1, einsum_symbols[order]) # outputs - out_syms = list(weight_syms) - out_syms[0] = x_syms[0] - - if operator_type == "diagonal": - pass - elif operator_type == "block-diagonal": - weight_syms.insert(-1, einsum_symbols[order + 1]) - out_syms[-1] = weight_syms[-2] - elif operator_type == "dhconv": - weight_syms.pop() - else: - raise ValueError(f"Unkonw operator type {operator_type}") - - eq = "".join(x_syms) + "," + "".join(weight_syms) + "->" + "".join(out_syms) - - if not torch.is_tensor(weight): - weight = weight.to_tensor() - - return tl.einsum(eq, x, weight) - - -def _contract_cp( - x, cp_weight, separable=False, operator_type="diagonal" -): # pragma: no cover - order = tl.ndim(x) - - x_syms = str(einsum_symbols[:order]) - rank_sym = einsum_symbols[order] - out_sym = einsum_symbols[order + 1] - out_syms = list(x_syms) - - if separable: - factor_syms = [einsum_symbols[1] + rank_sym] # in only - else: - out_syms[1] = out_sym - factor_syms = [einsum_symbols[1] + rank_sym, out_sym + rank_sym] # in, out - - factor_syms += [xs + rank_sym for xs in x_syms[2:]] # x, y, ... - - if operator_type == "diagonal": - pass - elif operator_type == "block-diagonal": - out_syms[-1] = einsum_symbols[order + 2] - factor_syms += [out_syms[-1] + rank_sym] - elif operator_type == "dhconv": - factor_syms.pop() - else: - raise ValueError(f"Unkonw operator type {operator_type}") - - eq = ( - x_syms + "," + rank_sym + "," + ",".join(factor_syms) + "->" + "".join(out_syms) - ) - - return tl.einsum(eq, x, cp_weight.weights, *cp_weight.factors) - - -def _contract_tucker( - x, tucker_weight, separable=False, operator_type="diagonal" -): # pragma: no cover - order = tl.ndim(x) - - x_syms = str(einsum_symbols[:order]) - out_sym = einsum_symbols[order] - out_syms = list(x_syms) - if separable: - core_syms = einsum_symbols[order + 1 : 2 * order] - # factor_syms = [einsum_symbols[1]+core_syms[0]] #in only - factor_syms = [xs + rs for (xs, rs) in zip(x_syms[1:], core_syms)] # x, y, ... - - else: - core_syms = einsum_symbols[order + 1 : 2 * order + 1] - out_syms[1] = out_sym - factor_syms = [ - einsum_symbols[1] + core_syms[0], - out_sym + core_syms[1], - ] # out, in - factor_syms += [ - xs + rs for (xs, rs) in zip(x_syms[2:], core_syms[2:]) - ] # x, y, ... - - if operator_type == "diagonal": - pass - elif operator_type == "block-diagonal": - raise NotImplementedError( - f"Operator type {operator_type} not implemented for Tucker" - ) - else: - raise ValueError(f"Unkonw operator type {operator_type}") - - eq = ( - x_syms - + "," - + core_syms - + "," - + ",".join(factor_syms) - + "->" - + "".join(out_syms) - ) - - return tl.einsum(eq, x, tucker_weight.core, *tucker_weight.factors) - - -def _contract_tt( - x, tt_weight, separable=False, operator_type="diagonal" -): # pragma: no cover - order = tl.ndim(x) - - x_syms = list(einsum_symbols[:order]) - weight_syms = list(x_syms[1:]) # no batch-size - - if not separable: - weight_syms.insert(1, einsum_symbols[order]) # outputs - out_syms = list(weight_syms) - out_syms[0] = x_syms[0] - else: - out_syms = list(x_syms) - - if operator_type == "diagonal": - pass - elif operator_type == "block-diagonal": - weight_syms.insert(-1, einsum_symbols[order + 1]) - out_syms[-1] = weight_syms[-2] - elif operator_type == "dhconv": - weight_syms.pop() - else: - raise ValueError(f"Unkonw operator type {operator_type}") - - rank_syms = list(einsum_symbols[order + 2 :]) - tt_syms = [] - for i, s in enumerate(weight_syms): - tt_syms.append([rank_syms[i], s, rank_syms[i + 1]]) - eq = ( - "".join(x_syms) - + "," - + ",".join("".join(f) for f in tt_syms) - + "->" - + "".join(out_syms) - ) - - return tl.einsum(eq, x, *tt_weight.factors) - - -# jitted PyTorch contractions: -def _contract_dense_pytorch( - x, weight, separable=False, operator_type="diagonal" -): # pragma: no cover - # to cheat the fused optimizers convert to real here - x = torch.view_as_real(x) - - if separable: - if operator_type == "diagonal": - x = _contract_sep_diagonal(x, weight) - elif operator_type == "dhconv": - x = _contract_sep_dhconv(x, weight) - else: - raise ValueError(f"Unkonw operator type {operator_type}") - else: - if operator_type == "diagonal": - x = _contract_diagonal(x, weight) - elif operator_type == "dhconv": - x = _contract_dhconv(x, weight) - else: - raise ValueError(f"Unkonw operator type {operator_type}") - - # to cheat the fused optimizers convert to real here - x = torch.view_as_complex(x) - return x - - -def get_contract_fun( - weight, implementation="reconstructed", separable=False, operator_type="diagonal" -): # pragma: no cover - """Generic ND implementation of Fourier Spectral Conv contraction - - Parameters - ---------- - weight : tensorly-torch's FactorizedTensor - implementation : {'reconstructed', 'factorized'}, default is 'reconstructed' - whether to reconstruct the weight and do a forward pass (reconstructed) - or contract directly the factors of the factorized weight with the input - (factorized) - - Returns - ------- - function : (x, weight) -> x * weight in Fourier space - """ - if implementation == "reconstructed": - return _contract_dense - elif implementation == "factorized": - if torch.is_tensor(weight): - return _contract_dense_pytorch - elif isinstance(weight, FactorizedTensor): - if weight.name.lower() == "complexdense" or weight.name.lower() == "dense": - return _contract_dense - elif weight.name.lower() == "complextucker": - return _contract_tucker - elif weight.name.lower() == "complextt": - return _contract_tt - elif weight.name.lower() == "complexcp": - return _contract_cp - else: - raise ValueError(f"Got unexpected factorized weight type {weight.name}") - else: - raise ValueError( - f"Got unexpected weight type of class {weight.__class__.__name__}" - ) - else: - raise ValueError( - f'Got {implementation=}, expected "reconstructed" or "factorized"' - ) diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index c039de151..b816fcd38 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -15,19 +15,13 @@ # limitations under the License. # import FactorizedTensor from tensorly for tensorized operations -import tensorly as tl import torch import torch.nn as nn import torch.nn.functional as F -tl.set_backend("pytorch") import torch_harmonics as th import torch_harmonics.distributed as thd -# from tensorly.plugins import use_opt_einsum -# use_opt_einsum('optimal') -from tltorch.factorized_tensors.core import FactorizedTensor - # import convenience functions for factorized tensors from .activations import ComplexReLU @@ -41,7 +35,6 @@ real_mul2d_fwd, real_muladd2d_fwd, ) -from .factorizations import get_contract_fun @torch.jit.script diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index ab760c8ba..afdea19b1 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -15,7 +15,6 @@ # limitations under the License. import math -from functools import partial from typing import Any, Callable, List, Optional, Tuple import torch @@ -24,7 +23,6 @@ # get spectral transforms from torch_harmonics import torch_harmonics as th from torch.utils.checkpoint import checkpoint -from typing_extensions import Literal from .initialization import trunc_normal_ @@ -37,7 +35,6 @@ Context, ContextConfig, DropPath, - SpectralAttention2d, ) from .lora import LoRAConv2d from .s2convolutions import SpectralAttentionS2, SpectralConvS2 From 2f7ca0f5332c4b7f466d2473f801b0de81337eae Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Thu, 22 Jan 2026 22:31:58 +0000 Subject: [PATCH 09/51] enable grouped convolutions for linear filter type --- .../models/conditional_sfno/s2convolutions.py | 65 +++++++++++-------- fme/core/models/conditional_sfno/sfnonet.py | 1 + 2 files changed, 40 insertions(+), 26 deletions(-) diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index b816fcd38..0763318d1 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -47,14 +47,14 @@ def _contract_lora( Performs LoRA update contraction. Args: - lora_A: LoRA A matrix of shape (in_channels, rank, nlat, 2) - lora_B: LoRA B matrix of shape (rank, out_channels, nlat, 2) + lora_A: LoRA A matrix of shape (group, in_channels, rank, nlat, 2) + lora_B: LoRA B matrix of shape (group, rank, out_channels, nlat, 2) x: Complex input tensor of shape - (batch_size, in_channels, nlat, nlon) + (batch_size, group, in_channels, nlat, nlon) """ lora_A = torch.view_as_complex(lora_A) lora_B = torch.view_as_complex(lora_B) - return torch.einsum("irx,rox,bixy->boxy", lora_A, lora_B, x) + return torch.einsum("girx,grox,bgixy->bgoxy", lora_A, lora_B, x) @torch.jit.script @@ -66,11 +66,11 @@ def _contract_dhconv( 'a' and 'b'. Args: - xc: Complex input tensor of shape (batch_size, in_channels, nlat, nlon) - weight: Weight tensor of shape (in_channels, out_channels, nlat, 2) + xc: Complex input tensor of shape (batch_size, group, in_channels, nlat, nlon) + weight: Weight tensor of shape (group, in_channels, out_channels, nlat, 2) """ wc = torch.view_as_complex(weight) - return torch.einsum("bixy,iox->boxy", xc, wc) + return torch.einsum("bgixy,giox->bgoxy", xc, wc) class SpectralConvS2(nn.Module): @@ -87,6 +87,7 @@ def __init__( inverse_transform, in_channels, out_channels, + num_groups: int = 1, scale="auto", operator_type="diagonal", rank=0.2, @@ -121,9 +122,12 @@ def __init__( raise NotImplementedError( "Currently only in_channels == out_channels is supported." ) + assert in_channels % num_groups == 0 + assert out_channels % num_groups == 0 + self.num_groups = num_groups if scale == "auto": - scale = 1 / (in_channels * out_channels) + scale = 1 / ((in_channels / num_groups) * (out_channels / num_groups)) self.forward_transform = forward_transform self.inverse_transform = inverse_transform @@ -163,7 +167,12 @@ def __init__( self.lpad = 0 self.mpad = 0 - weight_shape = [in_channels, out_channels, self.modes_lat_local] + weight_shape = [ + num_groups, + in_channels // num_groups, + out_channels // num_groups, + self.modes_lat_local, + ] assert factorization == "ComplexDense" self.weight = nn.Parameter(scale * torch.randn(*weight_shape, 2)) @@ -173,24 +182,24 @@ def __init__( self.weight.is_shared_mp = ["matmul"] if lora_rank > 0: - if self.weight.shape != ( - in_channels, - out_channels, - self.modes_lat_local, - 2, - ): - raise NotImplementedError( - "LoRA is only implemented for dhconv with unpadded weights." - ) - if use_tensorly: - raise NotImplementedError( - "LoRA is not implemented for tensorly factorized weights." - ) self.lora_A = nn.Parameter( - scale * torch.randn(in_channels, lora_rank, self.modes_lat_local, 2) + scale + * torch.randn( + num_groups, + in_channels // num_groups, + lora_rank, + self.modes_lat_local, + 2, + ) ) self.lora_B = nn.Parameter( - torch.zeros(lora_rank, out_channels, self.modes_lat_local, 2) + torch.zeros( + num_groups, + lora_rank, + out_channels // num_groups, + self.modes_lat_local, + 2, + ) ) self.lora_alpha = lora_alpha if lora_alpha is not None else lora_rank self.lora_scaling = self.lora_alpha / lora_rank @@ -201,12 +210,12 @@ def __init__( if bias: self.bias = nn.Parameter(scale * torch.zeros(1, out_channels, 1, 1)) + self.out_channels = out_channels def forward(self, x): # pragma: no cover dtype = x.dtype residual = x x = x.float() - B, C, H, W = x.shape with torch.amp.autocast("cuda", enabled=False): x = self.forward_transform(x) @@ -215,6 +224,10 @@ def forward(self, x): # pragma: no cover residual = self.inverse_transform(x) residual = residual.to(dtype) + B, C, H, W = x.shape + assert C % self.num_groups == 0 + x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) + if self.lora_A is not None and self.lora_B is not None: lora_update = _contract_lora( self.lora_A, @@ -224,13 +237,13 @@ def forward(self, x): # pragma: no cover else: lora_update = 0.0 - # approach with unpadded weights xp = torch.zeros_like(x) xp[..., : self.modes_lat_local, : self.modes_lon_local] = _contract_dhconv( x[..., : self.modes_lat_local, : self.modes_lon_local], self.weight, ) xp = xp + self.lora_scaling * lora_update + xp = xp.reshape(B, self.out_channels, H, W) x = xp.contiguous() with torch.amp.autocast("cuda", enabled=False): diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index afdea19b1..b65047aeb 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -126,6 +126,7 @@ def __init__( filter_residual=filter_residual, lora_rank=lora_rank, lora_alpha=lora_alpha, + num_groups=num_groups, ) elif filter_type == "makani-linear": self.filter = SpectralConv( From bc6b789d59f5120428bfd25646974c35512c838f Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Fri, 23 Jan 2026 14:29:00 +0000 Subject: [PATCH 10/51] restore MLP checkpointing --- fme/core/models/conditional_sfno/sfnonet.py | 1 + 1 file changed, 1 insertion(+) diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index ab760c8ba..c9e41c6ab 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -286,6 +286,7 @@ def __init__( hidden_features=mlp_hidden_dim, act_layer=act_layer, drop_rate=drop_rate, + checkpointing=checkpointing, lora_rank=lora_rank, lora_alpha=lora_alpha, ) From 08323ba8cf8e352f7646115ec77110856b7a1eca Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Thu, 29 Jan 2026 19:35:04 +0000 Subject: [PATCH 11/51] enforce not implemented features at config level --- fme/ace/registry/stochastic_sfno.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/fme/ace/registry/stochastic_sfno.py b/fme/ace/registry/stochastic_sfno.py index 84abcf761..ff2e19b7a 100644 --- a/fme/ace/registry/stochastic_sfno.py +++ b/fme/ace/registry/stochastic_sfno.py @@ -114,8 +114,8 @@ class NoiseConditionedSFNOBuilder(ModuleConfig): pos_embed: Whether to use a position embedding. big_skip: Whether to use a big skip connection in the model. rank: Rank of the model. - factorization: Factorization to use. - separable: Whether to use a separable filter. + factorization: Unused, kept for backwards compatibility only. + separable: Unused, kept for backwards compatibility only. complex_network: Whether to use a complex network. complex_activation: Activation function to use. spectral_layers: Number of spectral layers in the model. @@ -146,7 +146,7 @@ class NoiseConditionedSFNOBuilder(ModuleConfig): spectral_transform: Literal["sht"] = "sht" filter_type: str = "non-linear" - operator_type: str = "diagonal" + operator_type: Literal["dhconv"] = "dhconv" residual_filter_factor: int = 1 embed_dim: int = 256 noise_embed_dim: int = 256 @@ -160,7 +160,7 @@ class NoiseConditionedSFNOBuilder(ModuleConfig): pos_embed: bool = True big_skip: bool = True rank: float = 1.0 - factorization: str | None = None + factorization: None = None separable: bool = False complex_network: bool = True complex_activation: str = "real" @@ -179,6 +179,17 @@ class NoiseConditionedSFNOBuilder(ModuleConfig): spectral_lora_rank: int = 0 spectral_lora_alpha: float | None = None + def __post_init__(self): + if self.factorization is not None: + raise ValueError("The 'factorization' parameter is no longer supported.") + if self.separable: + raise ValueError("The 'separable' parameter is no longer supported.") + if self.operator_type != "dhconv": + raise ValueError( + "Only 'dhconv' operator_type is supported for " + "NoiseConditionedSFNO models." + ) + def build( self, n_in_channels: int, From c3f65feb008aeafa8428627ba30538a67e484472 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Thu, 29 Jan 2026 19:45:34 +0000 Subject: [PATCH 12/51] update sfno init to use updated makani scheme --- fme/core/models/conditional_sfno/s2convolutions.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index d213c230a..8dea3d9a5 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -15,6 +15,7 @@ # limitations under the License. # import FactorizedTensor from tensorly for tensorized operations +import math import torch import torch.nn as nn import torch.nn.functional as F @@ -122,15 +123,19 @@ def __init__( "Currently only in_channels == out_channels is supported." ) - if scale == "auto": - scale = 1 / (in_channels * out_channels) - self.forward_transform = forward_transform self.inverse_transform = inverse_transform self.modes_lat = self.inverse_transform.lmax self.modes_lon = self.inverse_transform.mmax + if scale == "auto": + scale = math.sqrt(1 / (in_channels)) * torch.ones( + self.modes_lat, dtype=torch.complex64 + ) + # seemingly the first weight is not really complex, so we need to account for that + scale[0] *= math.sqrt(2.0) + self._round_trip_residual = filter_residual or ( (self.forward_transform.nlat != self.inverse_transform.nlat) or (self.forward_transform.nlon != self.inverse_transform.nlon) From 29cd0ff44d55c332d2f1274647f96a5c20a20506 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Thu, 29 Jan 2026 20:49:15 +0000 Subject: [PATCH 13/51] use correctly shaped scale --- .../models/conditional_sfno/s2convolutions.py | 8 +++----- .../test_sfnonet_output_is_unchanged.pt | Bin 9624 -> 9624 bytes 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index 8dea3d9a5..2d847ab6e 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -130,11 +130,9 @@ def __init__( self.modes_lon = self.inverse_transform.mmax if scale == "auto": - scale = math.sqrt(1 / (in_channels)) * torch.ones( - self.modes_lat, dtype=torch.complex64 - ) + scale = math.sqrt(1 / (in_channels)) * torch.ones(self.modes_lat, 2) # seemingly the first weight is not really complex, so we need to account for that - scale[0] *= math.sqrt(2.0) + scale[0, :] *= math.sqrt(2.0) self._round_trip_residual = filter_residual or ( (self.forward_transform.nlat != self.inverse_transform.nlat) @@ -205,7 +203,7 @@ def __init__( self.lora_scaling = 0.0 if bias: - self.bias = nn.Parameter(scale * torch.zeros(1, out_channels, 1, 1)) + self.bias = nn.Parameter(torch.zeros(1, out_channels, 1, 1)) def forward(self, x): # pragma: no cover dtype = x.dtype diff --git a/fme/core/models/conditional_sfno/testdata/test_sfnonet_output_is_unchanged.pt b/fme/core/models/conditional_sfno/testdata/test_sfnonet_output_is_unchanged.pt index c3e6f7897a226acbfe6ba1116080aaf445a57610..40812ebf151aaa2a0278085f34fd436f67d9d161 100644 GIT binary patch delta 7911 zcmWlecU;ep6UUoqYoL@$5-OuYpZA@J3Q1(7B0|Z^3`O`Tl}c$LlroYQLhAFrE1@#; zwUU*H%#^(<`uY8PkNfBDUXQzb-tBYS=T_vXC~aC)0)ysEhBbmBT&eshn5>M0J|p@< zmv$|*@YyK59ljP0J2->;wjwA$vJocOED(A+mq0^)j?iy>l5lm*4RN6x$=*C$z=2Zc z2$uuAZR(a(~z^W+9i7+X}k}; zi>wy^`x6Z3;!IhyX&X;&(C61bt%bOdEUur_m9K4#<6!v?*(+0544<(dyHpelkKewh z&9`P_@)zlLyxqka)tw!A^CEAGl7EU@RraFTYKiLNN<5a|m1|4F(t;rNv3g?#L@&@FuZ&Kr>amP%hFQW2-5O!7 zVw3O;%wXBr^FlY@N}+RY6g-J(mBl=q1K)qF1_P_f(Cjq<)cRKoc41M1(>En4d^JiH zof_YlZunj&(Q!CNe5;09r$q8M`#-WRs$(cSy29S{5tC%)fAmxeVt&Oyj&U9GFEfQ= z`^F;Ls4XE+@B5S^XTb-%cH!^4$8hP;TAHv{+1|p#9EvJ8z_!bOAX3#EwJs%K=g;N% z-8&kqhsvR&o7551Rm@@5i3l3-sG9cgE)u`q5#UUj7SGJl<1=lGv4_$a*{VAd)-HGA z-HUB`clPOV{FQs}b1kwkzIztA=LN^ktomj;tD3Mb1u27<{arawetG-2?sc z@rK*5p=XWo+rA%s-4qI4BVP!ms@G6YDwl!By^qkA*VE~X9#Z&8DTIc|QC+MLztFU$ z*&?CFTo-hkB**#l+R5V`lE0cc2xDETW04(A8-9l8zbNDTSG&oKi`IkR;-AnER)WRZ zYfw+Q05VI`U`;2m`h!ReeeeaRGYEnln?Q4fF~Y+D%q2zCD)hh>#}ve-kgCjTc)xB~Tdc$JZ8?Gh42f(&AGdxMY4S zj4){ijn*`*994APW@EIdVy zzdM~3))%IfUKleN4J!8H(SpCQK-xD0^x_C7hfFG6a)_!x7^s4M1RI_z*rRz zao$aDu`E4VG`D)ibYeSSIJuTWQZnO)dWnB$>4=XC0Zameg zQh29kJ*|Ss8WZ4)?qYg^=Nv|>r3A`z2>U*Js&RwX`vk{G&-->b| zR&0m9c}F0(G!b?*Qxf_kz`||em%pa`O~$Uh65iRM0Be{--CVBrX$DVsa_*TmtXQj^?Ew zN3&7qXX@y52iZJTGHqz5p!vDtGP4j^H|wp?X}yoe9{B+C+<(%Wl06)JS&qAf)FvaZ@H1rjPwjIX=HRM9 z8n|q24zFFUST@o0EHA_?GH>6-s+(rxLGRr5L%c0WKJ=A%7QnRyKCv(E0gLacBc56uO9Ip_M)vNRnb~gmhfB6JE#Nh2yjP)Ii5dM|-VZXS-xK?8SK`s1cZ#1)W9dcjAM{ynHO;KMNFUuk zk>{w{QqcanOPG1X408jX3)($@g7*DJSTeE@Q)fLwH?3GSxVR9Fqff%0yk?;@rj0sQ zX|VBtA+)QF=v)5*@bS|bim;48vlC~9^rgkr;OoZ*yHr^FU^*;5aUS(0XE0!8D2{R4 z3tKHG;`1+4A#i*scPvSU!JDL$@Zp92^rgLwsygGuqY|Q`;r;O!cj1E85v((OkgV_6 zYZ#kz4eKg?LC~Yke5rB@6%}?9>t70@Q`JuXT0WD|YAl8<{sj?Z71;IQLMq$PMg_N8 zA^F-pnRR0ya=Z7E6SjMCWvMOdpLeD{4p;D{#yNZ-RnEYEl0pn`KP389P3H02%`mE3 zVU&7B5Pj24<$|wXSl_O|4qf+9hUr$UU(Wml<9YWAUzTd?ZNL#T zC1{wfPv7=d(dh~9e8_qNDXQ(DYS#eP{glGHI=a(=VOh{J++V0)@ESs<1>&dYaVWUx z;Jv0UAn7%WCb$&P2U|nbZNDZKIHU+FMe}8scQ40OSq`rF*aziaB*Vai20XY)6MSF< zSUr6Nj}-N!X!GMPSl(5IMczu-qbXK+Qg9mb4OIjO`Fl_hrGj>TU%_qr2yEFfAEF=% zZz`*y`8#hoHA@?mK4ifD`#wThfU=Bc2?FA7sF%6RK#WVkb#5Pq2IJ3bM7HiYufC-7rP*C~bc`L71cZfSm&_ z^Vkhq^vkFldnatixlM8OJfe>JHuT~ZSNh`1W_O`uW;CxmSBbvo>xDTRUSLRDINm>K zNAm*G@tCm}27EN&_fZj0=h=>f<}AUwnTeS8tCQC1B29W}!p^I&!TkfC_+pF>OUn-~ z1@}LOFvKT;wF?(QX7U_%bN{E%{$9`;Ya@9!PYF&atmKX#eZYN477Z>hr(w1d?6dF! zHEHeUxtW@1QTtqo&(6cb^*W=%Vt`EFZ4~S6G|^Az7tI~yE{3#P;SkR^V%v!nh(Gic zhRsN(sNvSaO=*jiwtbgl92kMV_uC-8e|LV=^9Q?4N}@0Gql90kJ-C-oykJ*u%xWK0 zsOEt+w%T>$y@ezAlq7)n?5shz`;jo(X(l<>@d}Je$QDMJS#yB98Q;EsM*J~5 zOAJi>Aii(gMNTQhxc~cMEN5_p4twa4*r$w&dWX}NSS8jdQsB)Viy%Y%S0bk-L8;)q zP;O8G{SGaJS8r{>_F`>m;j_Jv>*iNg80 zABA7{sYYY+?=|3p}9Z$uy4 z&I;Mz|AX9By-~rU5Xdo5jEGH-!8D z;*iGtHR0=P>Sg=p?2~jV$3oM>N?Ld2E(97pCzqB4o_FObeLuTba=0#o7j3H}b)Qun z)XJhp=Qf;kAq@*7cRSU!1&Fwf^X^$1wYK@Z9VdBbEBZta3Q@dV@ArjzQ2?&RF> z8$I@v*$TV$=CmyyHzQ1g%d;hiU&&)d?w4?I3N``Vox6jNh=h@-WA?D3rZP zOyWMLyYSmdVZ8d#3@#itmdm;vrozVC;xG+!^nduA5*;qEi+%#v1Z`uT03TYa^Oy|V zGh}J^$3n@z(Xj8B5gZOt!2UUw=y7%y_cDqkAa_jHh34CN&^2QMlumsms1N+7@U_QFhu2*Y0#prQZT3L8GocVZ?CKPr z{!A#9b6h8!w22e;H(wT9USEax731Mzh>>8Eu%8Ovb>a6p?`UOxr06jFFWu0e3p-}+ zpx@VCQ>ejfQ5qI#A+F3E#rt>l=C&`U+@5RB^@_0+ufB`*o^+RN+>QL^VWcqim^rOc zD26wUHQ>H!6u!Dy13^)xxV~A2YFE(y?hdeNlxXvC zHRo-7Tsr6TNbE07r$n<`Vo_{@Q2PE7)Qy&+N5>TMy=_Rrp@T8S{3bp+at3!Div<-Q zCVAZhNb#;>E9s{Z)F|+X=j6HjpHm&Lf zY3EYmn{R_;&etrEzB*O~j%O~QRp@41>+=*An<;~iIx2YPS^OJ93-HIw zI(YcE0lcP7ghgT>yoRbcHfw-wGQniy1sEQ67;1aI0Xef`ST-?O zJgp$0>gh0vUg|EGHC3Hz-pTWQ%ja-Qyba0`nV|N1kGSSRIoNibg11lAF=G8<-22lE zuJ$^OCPS^zwz)#mrl-eoarIQ;sl?A*jWN;Yl>JhcqOVs13-hFw{5IPMZ%3K(-?&;R zzWNQ!78FzAKxO!SF^$d7C((I_ELgH67tfknaNh;BqVWC#pMJ8RhaBqyUy9z)kx!0T zVSJbDU%0Zzw0K#5V+=a)HlSNOjQFm92ClpmjERk_v9i7ji|6!$lIw?X=W`RZu-0IC z>4sV`=yC%U(q&i>d=&7`cCL(z66W5GC#{iF(BtKM{9D{cJ9@mbH@tFJxHQ_I@+*wk z;h-T8ahL?bn}VqzZ!$i3l5amJKaj7y9)sIM9Ju*y96xv&DNK6Sm+j3C^NK^0ah_!v z9QrsLtB3r-l)rJbbbSIzW893<(P;{qrVinYXCrap{R4Emc?*1cS`7zc&QRx-4APR< zV(S-fp!I;ZeFL#?j%OS;G462V`X)%lM1> z7Op9bqir+*%Zm02nx2+)`PmIn^Yq5C6Jqi0!z?LG@iL@qk9=9;W65di`(c>JIF9@h z!G}t8_>+w@DVtq@SE(Z)^urd6+Pt3L-<<#lPoI=cw27p)hNW=uTt7~TJxOCEIrJ*c z&i>FuH~7?AOrNbZxc1C{l)vykt-q5<6T0`rO#id8J3ZTJcI#@Wp0v1^gzE~qzT1=)1$>)K!u8`H~K(^HD%XcT80++34d1Zwkr45VVt%st?-YOV}>n7sC zp$7%6(;?#SKEY^Lv>Xj3gHR>Tj-{71=YVz46Fi|FivCW@sOS@g@BQj%;^-&hM)vaQQ)K6<@EaBt*>pPE0!ACqtb?W*8OQ(*85~Mcda$!*PlYz z_r-8tVQRu2-mhr&uSD^R`bS9g@1)dB;>r2j`C(!#8*KiM_Wy&>#FVwr;`bP4g-Ye< z(ePfBQ`ibY`)A<^eScwU$7=rB{~4P!uVy(lWp;gz*r_@Oo!01~hI^VgqfbwM|2>>r z9=s9Mj-3`%<#l0b>}jw|PJpXo1mM))g4V|xc=k3^V*Dr_yo!5+*eeTCj!lD2_Mb`* zMTU#DqxC?w_^!|*9h?rEE8~TtP&q!=J^-o~S(h%FxsUc-dnYSCHG)^ViL{~EK~PDy zqx6^k#l{N?{77Drr~kYyYF_>*1ZlcbdrWV>anpp~I=+zz^Fjo7%{I7{xCp~HO-1MW7{tbE_u|eDP1Sz~PJ4iY~>5}6| zFA2^T&V2CeWU6jTK%KV%q~)c|D~5!Ti^jTtCzVn7XJj9!?B@$V>aX*>L-*J#Z2}Bj zX(Nt$a10;Z&c#-}P+U7n8#Oj8ft@$9#CusgP^tVEw*0OlH~-xnpFb7@r|a^5-D%_~ zcMMIoO7+BN8`T*048?oLYUyS86N>B9M$77c!tF6C9B{D;W@oR*0n3hHl2;}q++0ET zp0&W8A9IB>Y7to7=K|&k0Bk#$A2-HwzHc~2OwC6{olN23gg9~;agt_~Z=ziv3Mi;1 ziKn-m=XrZo#AKg-nEzyta8C+bz@#7%HIf=IGhPwB_iYyE)4xYl^JvIW-X$i@)Z#|l zEc!G2xR4oG1N~0_qu*}U5Wn*pC1qb19i|%zOUv!R*`peEo$Zb}7TZzZ)Bx+QUWKW3 zL-C8gEjGvgYdBj1aC!D3-1zx8u*YC@oUae34+ob@`(N*kc{7TjfhOX(S({f8!|l42!oD>fwtQzsO+hTOOE7;iv~Ur5;Z+gtP7HDQy7Ehs~(Cs729c( zLy0iB?^5zGz6;ui>|sgNHG98xGa=Q$8&eBs{`&_mL#sN+*#C>IOD+`tMJ>JIy`FXMD_YNP>9LKqRYuVJt~V=;Bk|-p3C@M}mhw|UFS?ly(L3!0+>QoxS_TRViIFW^i(Mt5B z=?1vv?j_X?&&4C&vw6foz~C!VR+0+C*sh=y>?dsDQ=>BYKO-YpyW_doOYbGFZBiWd zVZ1qMM%|!~x_hzZx=0B(Y z@Awc%ZukRc#_nQEcVlYRNhZe|No0}!2-#zf9F&%Kd$tDQ|c@8v;PCJa?r&9 delta 7911 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 From 16813fca1c1a588062a632e634a56abd5d7b4d2f Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 3 Feb 2026 19:39:47 +0000 Subject: [PATCH 14/51] default to linear filter type, disallow non-linear --- fme/ace/registry/stochastic_sfno.py | 2 +- fme/core/models/conditional_sfno/sfnonet.py | 13 +------------ 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/fme/ace/registry/stochastic_sfno.py b/fme/ace/registry/stochastic_sfno.py index ff2e19b7a..5c88d4f3e 100644 --- a/fme/ace/registry/stochastic_sfno.py +++ b/fme/ace/registry/stochastic_sfno.py @@ -145,7 +145,7 @@ class NoiseConditionedSFNOBuilder(ModuleConfig): """ spectral_transform: Literal["sht"] = "sht" - filter_type: str = "non-linear" + filter_type: Literal["linear"] = "linear" operator_type: Literal["dhconv"] = "dhconv" residual_filter_factor: int = 1 embed_dim: int = 256 diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index c82e6508c..04378d0ea 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -97,18 +97,7 @@ def __init__( raise NotImplementedError("LoRA is only supported for linear filter type.") if filter_type == "non-linear": - self.filter = SpectralAttentionS2( - forward_transform, - inverse_transform, - embed_dim, - operator_type=operator_type, - sparsity_threshold=sparsity_threshold, - hidden_size_factor=hidden_size_factor, - complex_activation=complex_activation, - spectral_layers=spectral_layers, - drop_rate=drop_rate, - bias=False, - ) + raise NotImplementedError("Non-linear spectral filters are not supported.") # spectral transform is passed to the module elif filter_type == "linear": From 15abf2c83514b9bf8faf6bd5d277d63a5c692e28 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 3 Feb 2026 19:41:44 +0000 Subject: [PATCH 15/51] allow makani-linear filter --- fme/ace/registry/stochastic_sfno.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fme/ace/registry/stochastic_sfno.py b/fme/ace/registry/stochastic_sfno.py index 5c88d4f3e..81236106d 100644 --- a/fme/ace/registry/stochastic_sfno.py +++ b/fme/ace/registry/stochastic_sfno.py @@ -145,7 +145,7 @@ class NoiseConditionedSFNOBuilder(ModuleConfig): """ spectral_transform: Literal["sht"] = "sht" - filter_type: Literal["linear"] = "linear" + filter_type: Literal["linear", "makani-linear"] = "linear" operator_type: Literal["dhconv"] = "dhconv" residual_filter_factor: int = 1 embed_dim: int = 256 From 39dec0dd9c25e089fb529b1c9cadeee42721bb9a Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 3 Feb 2026 19:48:22 +0000 Subject: [PATCH 16/51] update sfnonet regression target to match primary code path --- .../models/conditional_sfno/test_sfnonet.py | 6 ++++-- .../test_sfnonet_output_is_unchanged.pt | Bin 9177 -> 9624 bytes 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fme/core/models/conditional_sfno/test_sfnonet.py b/fme/core/models/conditional_sfno/test_sfnonet.py index 43945893c..0f566cd9a 100644 --- a/fme/core/models/conditional_sfno/test_sfnonet.py +++ b/fme/core/models/conditional_sfno/test_sfnonet.py @@ -101,10 +101,12 @@ def test_sfnonet_output_is_unchanged(): img_shape = (9, 18) n_samples = 4 conditional_embed_dim_scalar = 8 - conditional_embed_dim_labels = 0 + conditional_embed_dim_labels = 4 conditional_embed_dim_noise = 16 device = get_device() - params = SimpleNamespace(embed_dim=16, num_layers=2) + params = SimpleNamespace( + embed_dim=16, num_layers=2, filter_type="linear", operator_type="dhconv" + ) model = get_lat_lon_sfnonet( params=params, img_shape=img_shape, diff --git a/fme/core/models/conditional_sfno/testdata/test_sfnonet_output_is_unchanged.pt b/fme/core/models/conditional_sfno/testdata/test_sfnonet_output_is_unchanged.pt index 6fb14b9be8c623160ea04fd0d327a3c93bd4a335..c3e6f7897a226acbfe6ba1116080aaf445a57610 100644 GIT binary patch literal 9624 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�gnvVc#3XIr1y; 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 Y!+(GNU9cnbOS014Mo#dn{_l1FA6%k}g8%>k literal 9177 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 From f615a26e656e059664d2882a7f5fec210c1ad61f Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 3 Feb 2026 20:29:30 +0000 Subject: [PATCH 17/51] update diffusion regression test to latest settings --- fme/diffusion/registry/sfno.py | 2 +- .../testdata/stepper_predict_regression.pt | Bin 13386 -> 13821 bytes .../testdata/stepper_step_regression.pt | Bin 5496 -> 5925 bytes ...stepper_train_on_batch_regression-False.pt | Bin 36082 -> 36543 bytes .../stepper_train_on_batch_regression-True.pt | Bin 36066 -> 36525 bytes 5 files changed, 1 insertion(+), 1 deletion(-) diff --git a/fme/diffusion/registry/sfno.py b/fme/diffusion/registry/sfno.py index 83ab0c1b6..b8ed2a267 100644 --- a/fme/diffusion/registry/sfno.py +++ b/fme/diffusion/registry/sfno.py @@ -20,7 +20,7 @@ class ConditionalSFNOBuilder(ModuleConfig): spectral_transform: str = "sht" filter_type: str = "linear" - operator_type: str = "diagonal" + operator_type: Literal["dhconv"] = "dhconv" scale_factor: int = 1 embed_dim: int = 256 num_layers: int = 12 diff --git a/fme/diffusion/testdata/stepper_predict_regression.pt b/fme/diffusion/testdata/stepper_predict_regression.pt index b038a58a68059f3d87319963f2655e13b9b061de..2d465efb4802e7c0eccb3396eb6030b7b4325354 100644 GIT binary patch literal 13821 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 Ve^=!QkLXhP#D+g3=l_20{{b!Hq9_0W literal 13386 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 KewY8F?Ee8$~^6_E~FxT}09{0)f1|;6JwB z0y{xebikZB0g>MAd+*4ApvZuzsE~+oQ-7amACozuVGee~1)l$}ZAqs%vA}Sulq9^b zSjsOtBGNC|#5*QBBrHl%645s%B+TDCIv_kMBGP-VP*L2;&~U1pWO9^brcY3SSo-TB ziVk5BKGAMpzf=^<`~fr*cb+OOnd>(vMl3u2fmF0uZlXvak`^h5x+aU|McYJOMN-LP zg%y5&5n*8ge$kRsi&Aus^bd#(@E;Z87p*8(9Ox=miWYZq6)XRN^b@NDOC$tK2Y(G= zE>;cxidOput^OCf>x$rZf=0Ah(^cFp#>7P=Ctn_`UHV+2s(rY0c=Zhg!#ceBCV>%= zvwfny=LST!uZDx2_5Xbl%-bbV^R2}86=)wFOEMA|bS&x5_3-uy3keFJ9S|PvVAt<| zqKa9z3m7p^{J4`Oc>CyBKp%l=hXQ=(M+Zc-ubhM3p#MqSzmhgABsw}Qpk2fAVfTKL zmBeo!9c$1Pm~^P2{jM-IbFee|UkI2mw}5FJ??jv25~#*W&q`IfJMFw>h?)~LV3Si4 zP2Q@@++v-{w!i~bgI3c6@muoBs>0&C0>0tC8x}h0(8US0Y^aq!lW|&0xm|Wq>FzC`MQP9~aD-KZrejZjCq$q7fW$oD=n9?<2(M$~TfJ~`tR_87_NV7<8(4#f z9$0Mghe*|ZY=`hEIR?hSnV);H%sI+bZhVqLJ1amVc7YQoj^oEGd6s2+`@!hBQ@Bf7 z<1y)yJu_}N%=+i`!QO99z~}xaac|OiI{RfX<7)k=>u;~QR;gSvcGe+<7sVtPa+)r0 zUdG!f&!;|zkJFS-8nCNvXo=_3O;om70Ebx?d^xy|URAuXSU)a`U*6r8ZSI}JI~&TE zLia0l!ZMw~!J(I}W5K%qHaxFS&}?GSFM8h+SWwXZH0@v^{4%Olvp}h41s3LsBvei|h%uPM2+KPxt6uQRO6Ry$qHWxJ_fYaUo(l`so6uH6)M)k$~W#Tb+$4m``m}?tE59uYwXBu!v;!! zzZX<*Ns+sc87!MvMs3@S2rdfB^>quc5flAl0SvB*N+3!g>jZ?XQLs$K9oK+sDO^mR66_SD!$KL ziv7sUx7TjI5j89Ss zfbmMdK+HL$Sao^G*c}hTy$-N0(2Kp_wT3HH7{#4+AA_Do!C?7lKkn`B!spE@VmAcy z*~>F#FnPu{oUu5N@^2mC6!xlsRa+mtX<$YnyRNWnq3PV=X9>8nx`^E=Qv&N{id5b5 zJ9XVYi*80Pg9DMNOl_JHOdVE82TG)2(&a65-@FGLZ>faMAFgu~oo9gmj0Ko;v>%QB z*poT+-w2P6*}|BMUX}y&Cy@TC+hmsao-e#jJ<7Ut!CPm&|Pch$lHF(M#pbc_yG|;F9j}1S`RL1n6M?vS<+DE^k{#YYCJF}jNP31vn zeGwSdyRf>Io%mmOWw6dwyGi?}Q0y%l22%S@;H?Fk+_j)1%-~LEidcUg^pA1y{ICU9 zDq9e@zMNMGRfe?Nd6c9d$`V2}sD94|xcg-tD3oaNO^2qzpokdaqlbXSCy ziW8Vpdx=>U^n@#;D(Us0JYsufDRhli^Dp@Ev#AL zHcp9)Ag#&**6Ushndh#9OI0S&e0x1LSBJ7vt5mXZRwZc`1KVLUONmmY`VT{K{7;D> zIi!Nb4OtAVAs9Fj^K=%2tz}!Fw-kT>EfwOmhjmKBJRgys%HzQc7G&P z8ZGCGhNQFE6&f^2S{KK@beGf%8_HX6%(uoYhxFxlaA4k0JZ+FddgsQ%$Dl@%QZ9n%vI8u?+{lckW$;Ue&V-!`2k^w_Aa0tlp6{ch4=`ve=uf#+@~THa zYH>=1{uxu~{Jh1`Ic5d84oU~TdnYjZ#3Irj;>I=(-GJ#yXK>~KotWU&b9^y>0!#Yw&Ki zTILm7EC|B5U=cjqyBa&kA4AJcrBaGbt*?;aXHC8aa!IP&3Y_F( z%Bl~BLB+ZnCiG2!O8YiGU#LOO0Y;Rf{0QmyM0}9bjTJ^YQvFbMSQE)(%iS@&vchBB zTPW#I&dZYjT%z3E8Tjd^Lww)XdwfCgE8hNHEV#+PLZiAueBQbSLtUJd)Sw{Nv(#-mCs;Ub&qh8( zFUMqxeSe#M8mmm6PLbTfr^;6Lg*PzJkeE+g3*HWLgN zCxmGm!SA#5iLcSZRcl-^DtRMr+P?_pf_A|inU$7SHKvd@zl!g*B9pEfSn`7>$3x?} zo$T_jAJ~0EMYw!*o`bQ0mqIs;=ITdp0cLP6kThTbX2%4;SzTP2tQgArZf9 z`iaF3zCm}DC3zXK2<${0P0r7O`H?aF^i3kV@OmjH6I05xw<KQt79q7>nnL4kk25KMg737H41yW-(p!FtMGP8 zPngh6hZ=`RlWkZF6#vF!nfns%$yfvCJ28}5S10kyl(sV!4;wQ2bq1C`+=?lmq`_dG z9IVwpkD9%Q<9pAw%pxxkF7<7|F&R2A!ulYVBrL);&GFcpG7+|fXOY>EooFvz&dNoJ zB(&^LX)TRx!2CtKC71mz= zoz6~b`1ks+C(!Az{{QXJXm`{ASSYqfx||o}{_p;WiJ)(Xkxc$DAEE*xLnIE&0-ts( z%R9v1!A`fMz<(MbW*jp&H?!h|7R=n5ff*;Xwlou3fzU$8EG#7NmYjt-Gymgyl>4UZ z8A{xd_TeIuY8U*sbNH>R)w}(N@3w#Q5r3q8Ye*Shf!oi0O-j#+=+0YAdNO(m1>U|IhF`|p$7MI3ATN2f&;L62zW@+jRMMauDeAL# zNkXQIZpM^^3<+JXxT1?6-~0Qm_5I^_*4k^Y=j>-c`>b`&TF)so@1IznEiGdpxOnCbCZ(1DRU#TwEfMf~4Cz0*{6o__A>^of&w9(bAgG^`MEmCm+SiU~|^s z@c_STyx@a#s&J214sO392l=1%;8Sc7X&btTP&e}uGm4MInNDGx(Xboj*)s{+BLX2n zb_|+PEWWU5u5``s=2qTMV&k^tu$gsfxX$kd|Dt<3+HZT0B^%c=gH|d2w!{g}mvf|R z7L1`Q4#2G*PocE(UU zT?cO3KciKn11O;*1L^QR4EfTF&$Q*3%5Tf5IeJkoY_ z1RK>S?1cPowsTw$u5K7h&$lP=LAzt|?TCw<%h=sG_}O9jwqhKuP1^ubWfBzR&xc!y zYe`DrSF zMI_aH2A|3n(%}9W>hDlg_5><`{%eaKIh@b~(9Q4+n6`7X=Ggi{G@XCSL~c%e|i$U&q^mp&CA%mqM2`2&SaNo5?lHqmkc%+;n0n_7^bL5)xqCUTJr~M z5QU8ZE7j91Q06x<-)6xDZZ9c5K8K1oPGMn49&R4(PK{d6*+<`-SkkQw zAv+V9YyBvy5{-jpLJ4}EcZIJpm8|Q@fPh>7f#=Wsg<|bNRZ|#Nd6b?_>;#{@9mFE9;-Y6BkF+bjgBuA7595WIB*}Z#F=LHu!z4W5SjM z(wKJxHp%HxezK4owZt15Do3#T`S%1`+Iwh+?FkYG1i^Ou;V`T+kREi%(X88v^x;z| zW{Iz%+87hUP(@N(xs#2a5s6pb^+8^;n$z=7715;rb-2(-2!b6M^z5H$=uset&zozg z(dip?1!Z!#ZVW>0Rd(c0gFwmVGnc@KtsStTxbbl`Phm*K>P8Xm5tq`)&c(P&rki&j z`8(e}O8{{bf?2NoSX#ayjs2Omo&1Lb&DZguNd|wTv3(j^ED^K6bVLiFv{wb{BfVK} zqL3_&?a6()G<01IBbkR%^mkhlg>t&!HZ7Y?{A`E~d974YUk95C7<+qN2PD@{Lh%<( zdfIr5lsxaSxTMu|1?%~Hp%Y-BKA7xX*K?v>UMxLqAvskjgY9}n$aJlwq20%*>3j>u zi5e~8RH_|ZKk5w5EtbIVtj5|*bHS+49*os@gV?!pptB-@_O!^u*TWT1A79Hkuj}K> zC4aJ}Ze{9K+lO^78jzq;jl;9ztzYcU$3@d~;I(W9=;lWd)%x@KamUbkh8hW?KC-J$ zo$S`<4P5Y|HYPb%%0#8YVy1KbBu;78XRAlM2{K=((AY1Yc-+jf@;vLZmMjRQxXI@s zKQf(+b^Qfc z$)r$wkAwk7u_8K?iI?InBsu|WtK!{Wf}2L~n@dsvfO9J~xP#t+6$5H3%QpKnG? zW;!`MZDFPPMzC~45!B}G!9Oc9_}*LLPc4i_~4K!vl;B)=dFjn*DT$pl5xa$ih= zajl%(Z$+)i02Ya&_bX1mb-tAd5P3Lz$)pr9dvA6=clTV=G!&R{B>3ZC* z^$kC`&ZIfZ`b3!j;+o*2XCp=w8iB!qYRFl11pU?#Gd=pLa^i$UcJBOo5~+(&{jnQ~ zWt~`q{BB4yxP{-h{6(4l7g2L|4L@O#5|*aM(W7%+OlQ|qZf(a<{*&M$ZNI^RZOVR- z`CSE<1YF~t&V6T=tNuiPcSC#^yc?WVMfF&oppJL@igCoK5>{@12UW6maK}H}uoB^X zYF5pH=e8$s?Z{Lx9~e$-a|)TCRcFO=Vu<|sl}+=g;lyT*Tu|s@T0eOo-FH;6!R&bowU1jjKcs7*#PN6vGYi!obg|Jll8xB|IE2@H1KySSUc-}XG7BYd{1!^R! zelU&|{l>E?g^^IJydK}~PsD|OP7og&3TF4sAxB#WgvZa~>URe4wp9iLgLZIDZ7J~h zfHFu7Be}c%5}LPWB-p*N#TCJZWL262(T=f|hNlj*Bg1PeXAKiVdvY4DclRM$O_%|{ zB^{!PR$`n|p3f|{RfyOp-7l!;FoI$XI{BCY3&NQ3?BMWNTvqN21=mF^`dvA89X|vO zuZQ5$n;gq^U4X~>QaKXXkN?GnZ@ezJ5yD$Nzorav1tYgTH2Ncr0=SX5WduIP?|VH-sP zchzvx)cA*;KYWk#J30vlmYl(wkNTiFJ_SrllCk_{2Wo^^p!kF)y|U?JX}ylzu@s)| zos|K@*4W|bRY6pGSioW}5+Occ3j$h&B+lQ3HQh}(I&&G#aK6mKLuaz~&*j+mTEZDQ zoFmZ;k5P2;%NA$Kpv7!v zlr#*Uzm~XaEqv`!Ookq@B0W-&~Sb}%-#z`mZJNZsm9YPJ16eq3@Mm*R)=Y48DYq= zOW1oN4&QH!0ms}G;1NBU)|yoF8fGyt>1G}pXElIcPy^bkM6soPhMeP#E_kvqhfK7# zfrWSgJu8jTLe&r9kM;aEmvA^G909(Lh2Z|c6+5O~WUF!#37tmMA<@L$_)oJFiKkcL zrFB{W22!v!vLNezf(n+>@`PE~PG#Le4cviFPbh55CDX^| zylB&wcq;B)1zsoT5N~rA_5F|XeleC5KV>e}4Nru=l59F?8O_`e9ss+DJU+v&8{5a7 zXBTT6;XuelX1Ym-)PL-PoKpw*v2G4@p`sY!2lX)*5c7PX>MYj8FG!+ zQC595Bn(!hh=!k6p`R#1q17igU{nM)#-6*UJ;qVpg!Y`b@q%>RDx)(MYbsUL6LfX$X%t??vaLRLXjk0rr2J0Lba# zy=8%dQJEfSCtpXmJHMcs{sNFmxeN-yMX)JMWB?IV%6h%-(v=@iq0=s>BI0-pik2He zRdFWnJ7&vVoi?J2&SAXa6azmBj<9NxDO9S7Sh><^=DkcAUw2M{nkEigJEv0EOE+|5 zqu|57G4#Ma99Jj2#H+D3R4_P|+D?-54Lwj(l5_8J2rBkL|^rZT=^sQPbqni^JkBBBHX1|&-m!6uoNB%mTlR0#$|MKNNZ zwG;ywz<`PwLBR+r=7eJWaNha;d*}UU?!9xXrfR+_y4c-SUG#d^3ANAJ>v^7a+*~Ak zh>6L_i2eUwrefw|(J?^_76e84#69U0{lXD%m{Ffj1y`Ijh>QGUTeLdidVBIgty z=@;YK_4BST<%B)F#Jm2-R4C;o+4UK)AXX^tA|4~`>Fy$CXt+8cATm5WC?KY5!=mLT zM+F8&1qC{U2E@n-Weh!pvN1wA523tQzrUZWP$8r%hY-n-KQPRMy+ZyHTk((BA-_W? z#Rz+Q2>W>T`Hv96K@mQG*?s=PzJC+IT-Yx}+VzrTjIe)K1OpdI7jYK}7g?9SF+ybn zR|oN~KbI1hzQ5B~N&8E5)fl0ghfw|RMh_4U_?ze!!hwH{uJPySntzHu=#S`HF+yz* zp^jJo|HwVYFDf`F=KrRz`!@gr;o!dl4EZyF-k$)5uKr8<`Y}QS524{d0tgTe`x^jG zX!KWr;eQ4&{u6-79{?j_gr*)sv;R2R%>VAmX8t!YAhh`7I10K@y3Ucmq{_tz!9&RY z<5c+DNJ7iM3BiO`e}owMpF&v22yHxsqyFPynVbBlQ^EFc0$2)1|8-Nx{CQKy{%KR~ z{y13nF+v9qq2u3;9w2o3o9I@;aes|I{?E~!{}g?~AJJW6gcCi4uK#hQ%uW9GRG9St z0Z4S6EoP>|$$v#~`!j<3pAbC$*ukDL!YLlYss9KeKsfDh5zK_s|BB%CXM`DlLYVmn z!mJqKY!9J#tcjaTPZ@BmQ%~%g2Y(N@e>fvDG4=oPjA$}9GHSkGj89xp)bDxH$xiw2 zPmE^2;pxr2q~G(>@9~e}M~bQb&*7v0nDKo4!b5{2<_AT@INA04dl`V>cLJjq3ZMTz zQoqMPPQXk|>wlbp|KgaS$lo)llik3-hx>mo65*jSG2ubKb67R%vAT2@{_pXRb1)Gb z^gqtw_p~~~)X8qZf04k}HzUXVMxTG>NpaV~7yCW_D|GFD4&BVjPUF8opE>hijBozm z;V0xwVb#s;0*UQ?;XwIB7!{qX01QG=!EJPi?r>N@b#6aeBADME@P#IVD6=OK1%aCuCH$8Bvnhn*Je9~ zU%ieek|fyUHgBw}^`S^bJr?=Kf%0tgan2SMs;hSZC*`x;h|v-hHeZJ}m*nBV4IXgA zs6V@3Wx#&c_rz1D`!c)xV^J%>RYgqT27^xmXbzzV~9k;`d+=D^-Y-e*(7)_33NqNAUa{4vtA$tkQEEz1(3% z^Q_O~*KzK=pNTwNkJyJL-jmsq!bze`cYSzMzJSzT%;aA!$i%ou7O?g6eaJ001vR4_ zJn~qUnp$3Q(Q)hekdDtHH-}xEwxue{>utvMalJWlUIjeHYeD0&cYM1-swif^DQ3^R z#Z5Rbz>OWZ? z7e1Q^HH)U<+dX^0I5Ao@t=D@&tI!eoih}9{}4EHX|Qo^0n}{X4v+1Q^1G!sB5%5uUwqmT@01&H zVVYA#YOzVYH!5LdNhUgfTg-2;c*q%P^@V1?rQG67CBShL;7CpuI!cZZs5!5~K4resZEot-ROXRdD^~S8liLR_Hgpn$wCM%745i z1&^1tbB{Ya_~q$y1PVt&;K9#$-s#mt&b(M+9a-ky-0+Y63crNU)Hdyv=hejnqP?dqri{M82P$0Q^j2Dn0#^@!unieJ>Zsy2zfxGBE6%UFIu$bVYhl~*?Oe;^ z#EP?@b5N!2Ay&@Z#alHSf_U$T{FN8(_-UIK=Tqj4_fQ^JZ0OHb74PRHHu}N)S!M8~ zw*%^}oq$Q1Yj|1R4nAt?6?o`q%ZYbN;5KV0(PN zdD05k=Os|s>00iXp*c=Ze!*9E&W9aQry4U6=g*$>j$I7 zL=C#Q_b?mWGKLMl@si2NDzJ&Oen3RZN_yY1nq+Jzv&}Ek_?0$O*@C-2QQhST8n+jb zqe(E_7&@NGEL@AP_lza$Lt-#|z#W!g`INJLoxrM!7P4iE8&J7lU%{_5ef;RhK=9xM zd!sNF3X~JrmUFXN5AR`UF+z$Bm2SpM9hR)u-bTz?Axij4QGAX|m17RB6-b5rlbLLJM-FLP z=i`}s2jPCiFm}6bH_C?;3Px|6Mzy0d`KoK-=u+y$mS@@0$4vvNQ8p7yb9*q~L&;ck zsDbn2Hqni;9T`Rku9Ss4hquA$ zju?dYr*0CMWlGq_JEpoNkMiIC6VZGuYb~G{-_Y_{HRL+vcJsZOwKNLV!k9C;* zQV#DY0=uCCd~8`CO4%g=Be<0i60e5|!%W!nn{!F}eh-%6)&x-#_d$z zgasuF=}cW8)|fPci_>1n41buC?_O_KV*i|vsC>cClDUgRmi1z_&Cf8dErS+J)hFY} zCvjZ63VE~_g7tvo+^BN{ame*rxTkm@nk*|Yb%d|zQN&)f+9VD!Ujv!*%RD;v!W-W$ zS`J%;{h8PhQ&zOmp7uN)%UbS_qRvMiEJV1RTb5n|PaNc!jajY8-k=zImXBtuGCpI1 zQ#LcqH>TdRG(dCMWr4=?4P@6E%*sMGvUghtlFlSknmyit)}Icd-ks^By(0nKVr|Kb z^MLc)4gnf_V$7NTSd*{7BsUzQK3ehk<=$MlzxXJ3{jv~_aobtH$}+mxb{prrmmZFu ze*_;Nl_iyX?Ywu54l^{L&0i>xpwcaOIpgnNU`_NstS-^TQ5)y6F?v~~qQ8<)YL{l> zCo=h0CH?9C)^~XCjy-LipUA$eh2aP7ZKO$rg9@3t5`WNzax7|lGaUxHk%fE|^2jYUf% zX=#oLL~lx@S#?K1e~=~ZtbZjsR=gi%)z>k%(^_oAKIGEhk70ZHW0*S9f(?}tr!x!d z!Kh{$__zU^RI-7ea5|N@YVXTF2;XsrQ(O37vG(MsUd>*Ov4pzj=`iO055e1gl5{;W z1D{TGVIFSs)V2@sq*?*&)BS?IT@uLZbr!qVP7S@tjufilHX$|JX=ULrzfcFD)o>+YbKs@3UZaD~cE@!L%KB z(OFA%s@w7s%>_!_#CkvW_LmqNuNFlPOA@IgL53EYjKihJeJDnrVOalO)c&xDx%tbp zx&U#C3)qNz)L(;vyBr?Oi)2O**0Ob0r$D^pAvb!|p+l{uVdy$xHucj!%YXa)7N;)q zVMZ$#LCYN>i>fW*a*Cd!J`|&G$98aewHmc@c2ULT6q+!qHXjIjdVX)Q^Fi2?rohE9h=aLEC(;gu=^XB z@TdUFPLE(uO?wK?9Mxe98y6E5IYD}<7&d*%fn8=HptiUio>c!rtHZgx?)*@8`BeWHDyZu^)Qa3}FUKlj+mh!JOC+f((PcY_IkP&hztYnE9;}pNJ_@z|z-(OB$cS zd+ukbx@<%)(%EPQbMe>7=P<9V0gqHY#m&bLagxDh7&ECu^k7FGt~%U{O+B~+re@f& z9Ud3(uv9wFpKah;W+i~BlLr;gu;jh8hf#`_2Or$@6P>l6@GUo93qth7*}KwBnAGCJ zc1a-3fPsCbvWkJNGch)2b07+VWgcHg=I{^=<6rpfOrJk z>NSM(pY{OTyi35?(u|cY>BEmG??*-NfgF1Vasz{{VXU1!`!pbc6))5v!HEcXT%L`4 zsFGi4Y(SmMq`<#LlGQE?ws7t!fnDl%(WSZ#^E^w)bV-HC!)!EsgC<2E0=?|Lf&!)Et-%T3u_YndLLc^h^!vi%no}`)ER|G2q(7Sk`e`g*#PXi$)Tz z+=#cOFt)Z1kK7caoW^)m7-xv*c9e*$KVCxTOgmN*x*1Kc%d^bR<2ZeO*Iu7f#?=U} zR%A4;<}AIgLGr1w5Tal~E^*euo%s9)P+zlDTPvKN=o%9{DQI}bo!PIWv|g>LrOGA$PeX?UGB|a*?S#lj&Fr> zodnpaq79>_t;gbAcUsZkOd$Cok&QUQ*kfNI`&}z|BC@wKRq84uca8t5Rv`H2Y6TWf zcBcPjt>FLGO#bs{fypQaQ+qN|)^L`#E}Bek*|Kl*R^hji?RX`&R+PPg=S%%GAZ7Jt zT<0ifF(@jRU#Yv4rY&Ad&&{T?)?aTxX15jF#rI(j;a_0sw^i_F)fvbbKb%r;+#wH_ z{!COSgBPU<{5@5eO;9xWdfY*|%q*IG(gNC7^#e^jsi&|t%u~}=`&*mnsT-=_{d@W#oFW1wAlSwRcp$JO0nliIbosiI>hJG2Y zv^P(R4sQE|Aq^MshMF#SxaU1Q*pg3aXD@-_#Phlj>AF+lwqY4(_ zwT=@{?$2)DoJkgo7UG@71IS`-2e+cnYw+&12qr%jkbPn_8`6GW^l{+~+OvK<7eeNo z{LC>>JI5Tys9wggi+Zsqw|?@rl{sh~IRXb?+li`nYvAIwnRLIjnt$?Kjvnkh!D||? zVJb=3FK)P%p!K*Au|MR0#%lT3Xnb z9O7T}HihPlL{Tlbj*su`%MC9dglCk~aa_tpe$eoEn42BJr+LQX?pMS3dg-^K`4@J> z{^2fsT%a;$#f0<2+N5Bs25;dQb&VGs7|Bn`-^um!kl>6*T0rsODR4x1l6&=WXGPt* zxfrIdDbk;Nl>ZiLg07B(!B*)feK~7@!VE!;JVxVhKHrNeSRLC(d8_5 z?cKKb=*V?XeH zITdOnk_6+Po`++TC!nHxI#>JMnXC2B1lR5JK+(t)HO`)f`&&csZbG)`-sHpF``j`v z;^|sGK70;N$x0?6^z27GqiOX3>z# zJZ}{=8m%I$$pJj3*<6F7bVOhM+(|uf?t~7jkxC&d!iXd)Y3FqMU9TKk&qRTZ3yt*v0BTu%% z4>v{fMk9D!=f@0Rt)v6WZ{WrWC+@Mi28)YTMWwqOunlE6W#vLL+46{wed2d#l|Xuf(nz47rzFRKe!6{`bJC-k5d zIg^=m(>`{>B?a&!@W-po*`~=CfHyk~Ywx?@LEV+)-ey6&1`6QUiA=8Km?E3zI)cVj zZecWP4I6au37lHDlO(Gq!NaTd;N$xQ>R+Bft5a{_pm`yf`1XW%fvT+SajBp%C6xt9 z7=VT5W6nD(6+Y>JLow$XIZ&wN}R_c%HPO|jss1v@jSqGmVJ;ywVr-sA! zm?-%DYt=7sJKKYu=;Onbb$+30%N;CSdWm_R+)sDR<=Kfz)(nc=s8gT5l{;<>FML2bG3v7FGo9cplk=U!p zSn?o>9f;_G*ZY~1v+qz^Uv?8FX0N2fLJjhkSVI1u_^O-oGfs$PG&=smyq`PG3?95JleZ>HJN=ahSxnd z@s)awpgN(R9I7|N>PtTCqxTW)6?dGAS`fn4+BV@i!A9Eo>myXAWJ8}(>+q<`D{kiT zIxI19Wod2wnf1*mcwmvmRZ0s;uFp8CxYvtm=iGy{^(XjDgLpQ5`a#UNCc!qyzvV3s z9p==X_6qJM&mhInTG0QgK-Yfl>$->0gLCl`g6I3((Pz;_`ZcL9NlkhRXWVsZnrmPB z8n_Zi9v&^aSYt$X#}?3+Wexnb(;p#0P>Jh1Y{+OuJ`HU27Rc39VGqnh)elLW`r{V@ z{&XbR+6`nYs+=*2Z)BJ5=uo4FHM36{%Vg>Vq!jlEo|-yRQNAU{p4rOMTnfM}qy*kp z1j8sx33j1*H`5ZWM=RUe%;4-8X0j!Z@0WTJ@2~s;4o1o>ZRBgg!fAuxpkfcQv#f-c z;~Jb)$|Wo^sbgG>6P3nhvqye`aO(P2K4@??W)5Es=64R`{)N6UMQJLH%2elP#U#^% z^Z>U0P*0MYVg>6qA7lEX7oyb2TDDJi2-;_6q0OlooX*U?Y?tLz{CeA(Mb2!18oe8! zwxS8{H{PPi#5AaHQWLb@4rK{;=Xh^tKU_Mh7`9w=LiyIa?D7g_T5u|!0$wz8->$~P zz=oZC=A*fwSh)lm6&tZWRuz{0m_=IyjF^qqQTP@ch=XuEOU}QGvDYmqsfy9Tv0e8W zCR?~Rc|B^}Fr4-+%4G^G2Cxgy7PAQHX|(-QJ9er~VGSCVO#MnVcAn`^?ca*=d%7h! zHtMptnh4?-%fiP88)3kDe=-|Y4hC)#^vkUWJ*Qgm4?hWeHs9l>n$L&mb|sn_Gm|pA z<`|#lm$=Vv#b7n}6_;_&f-bt|p}waI)j!!T5UI}Qe#zhF_irc=Jyh5OBck{6`H|-I zBYO?S)XH=f<$-wCQ;XZ+K8vkuzmIo5Euyk1``LuR7`R|yMVl6Xf%&g%_%F*< zQT^^pLC&J~!?T{IupmQ4N{aM==bdxRZjR|eH8HVl*@qBzL9~vX@sjpv2vG|arQT0x3U8M1)7+<$l#()AyR9Fk>^+0C2ddEP%UM`) zU4^#qEftOWb_}n&rosM{vJ3D;%LJJyh$l{#YJ;-86Bu#s82X?HN6}&o?$Z5VeAP@1iRIyo_ z>orLi``&tv^}W7xGA@Xww_8@BMTF);Vy%Czee#Yfm1uXDvGMF7*3OAOj z(Bu)D5PCXr#f`R5H~I*O>3!mq+vmc;^Afz4tSXz~JDUX#%fe3W!OW)RFdo?9hv6*| zFiBa7E;OlA?4IwONIHsEGzNjKQ-7A=lEN(3M8FB9atQl=j6bknpX$DjrI&8cp{z=W z*7ozIHMZXT_Q82vNRBnXC-E%m?7Ykg2W(-7?>)k-JX5ym+DKN_qQx2(X5f+iYpCg7 zDyH>V!8IIxFY4ht7%`Rx}y`ii2THnP{ z{X)q9&hJnygtK1_NqWa1%v|#X^q1z4qt`V&-lGrHYj<&?SMQ>j*(S_$@Z;mU=ER59 zPccAeC>x%%7oGIpf=-@0mu`@T5-QTn>tX;J7^?AZTk|OIjS#dtW--?hYhm(aNgTir zV3#gE#^3Arr>)kaf5G})@V{BVck}Pv{QJKH|K2g(lj^^H#kMgU@N~S0jm3Dja*ZtA zwlXE#rvf~u@`SetuEXz&BF?=n1ol5EBIkuCU}RxE*EseCfB5E3*m}^AU!jx5igt#f z*62^5KI<-6NGP$@19JJ#3;M9Z?+R#qY&dM&T?kW#--Me!rTmquL?#hG0di(tMaA)J zyExrc*t_4CDK5N$IYHj6uGJOoL5gJ;B!YBq2>YyUfW!K3B?DbO*0f~{L}rS!A8J0F zLxLC-o%Vo3X-DCz$ck-|)1WOnD$Ju{Gbb7~4sGxdr*Of^V!Gs;j?TqOFaafD-dRUhdsq<@J#8U&$P;|)cn~_8V~M;r!?^p20vAOU zEM9KU&W*`{Ue_hKis&jQilyC#$@E zk?HA%k@2D#Y~BV#*04m5)^^oFad{-0^dOCSC3<79IsrFe8jJSXOJWP;0F-!~a&Z-; z7YxDpz+`6Qb`3OGGToc-0<@SU_&nau+65_;md|LWj6ObaAIcgGHe>2NKRV{5Lc?zx zF~f7()Nn9^-zy&iGYu>8+*xa?o^pn_o|+=CbLdjn-=x~We=S5pG)KONW13d++(cPmQVrT|* z^Y7jK`@aMK&Ndzfb@5#+Fnuej1SYcE{nnG!_P(t5jNUZ0*@5ZjZYA5?0=m%WKDP81 z*2 z$bM|i&Qi#Adcr+X7>;3=tjL?sWc%){W_bk$)Z(+5mizmnynnJn9DC5tB<3~687eEvm<9bDH~gk#4Uvhe0qYF;m3Ys=E1 z_uZ}BwhhBk^k^C1c}oH{j031h?Ey3|5#VRVc((eq0{LlMvtP!$F|9!Y?cWvnr&n6({0#58>Lic=&C?G3bw$7_?R!#8$UMz`-L}D$~yCW%%*iM~;Wa zMb4~`V-?9{QQ8GwZ#hS(cR(ow6CmIy5HJ&HFCwd4-EWxWXM;F7{$89`-|g za0oQ?Y}ht?2U>qQn0bc}riHT|V0r0M&el4C?!Sv3RAI-<#PMG6$xc!(EvCbP4r zOUS>a1npl*v9!ci?${S8vgkdWoK-9+Vx^h%20jAsHFMU~^*ceCM{oHBEEN@In0x8j1aVc;z7Np5y~=#jKI zwxv06(MfBWmF6~l5n&2((}q#TGh-?|w2InbuBh_OB-m@HD)O&dhSRKdVZzPB{A$k< zIQUV76|?JbRF6boMq9WC8tU&S?)OhVS%d{U)<-Ii7j@xFC`r#7Ha&N<3 zc6S9Ar#^#PYh%)Q*9)HyvxB%g3ziwbg;S_<1>D0i^8+W?Q+;2i8F-(1ym6u-gv|7I z6ZkAy!kut(fM4cntYMuaUSIueup0?QFzf`>olg4mFzAwu5cou|&|oNt5C6 za**`$L*G0dwt3Jp;;)Qg`&@Kj$?S>rCc}p5`?^tDa8Ej`KM7;Tq>*gW1=zUv8909o zV*^U_G1=ReKKE8-CW|kymtLA|@6H{6;osk=w0-&)tlzo+&HBBYfA8ks{~h@EelsW0 zxs%!4qH1Y2-`9wq`1fSZ73)#z#7w+ABZmfrw}9dhYxZUTM3$4WgY`T$m3P_1n1Z(w zb{goS?50iRbM84jTJ;_`<*nrtvLxuc<}%hOsX}Ibk6?$#XMWeUP1N(`V47mDim!8o zoZgmu&{I~Dc}Zq4$4ie{@vlbM{5^$}&z(jp_ZP8c1_MCj%T!jH;K=57@GRW%1vetk zn!BZ`Ltt(~2MZSPw#S}u+|Q%HS4lEQ1y=|yF=T}jqe$<~OOazsHC)(yjIX-Uj}02y zhZe2bb-4G#k?i#QQH)?ID6T(*hk@*da44G_=7<7?KnOe~ z%iiU^f_ulGLt6jCsH}UBFWIq?T`kRpD*-n+eT_FLh_i*TkpsH81QT2~U=+(Mrb7}Kj3OvJn9@r`Hj_R`aEYiJx^9$?O5&pJ__ z{&CLzoH4CAYk;qMmBWGsA5gbqE=>B6h-doGU~@g+;Fmu3Y+rkSP(RyWH1XSOJm&iW zH`$J6OUpH&sL>UbMjPSk=3%Vl+(U5meTAyG7qQX(QZfIRB=yq?V-ro)*!OL1xN81R z8rwb^Q>M?uv%O-N)~pfi!nqSLB`u0g*0Ewsx-{GuDxSfuRjH63qd>W8x+s_H%KANi z4rdB>z-x(I47}!oZRM$~HDV;ij@4tYn*-Thw;H~ifA8ks{~h@EX|4mAvQ{&MPqbi9 zRdm_4vSM_)vIxh&dBj#)Z>8xEd$0})p$UgZQ@OHT7auI7m#qReSgakQYj5M62|ld3 zV-0X!IxH>2&lUj=Cgl6wfN9UW1ao6T$z;b|zT!hZy!e>J8vK>J=G9N!j7^4uS3@VT zuwsA8xTHyM^)t}6Ne?3`pQ7U}9Y*g~VnI(sDkzR;5#L|qDiv84D(MFqrae)`HG#H; zZDcEzUZZ`#dHjuy*-R!)nmI2WLjJ~%?88t6-eq?U_o*tKmfz`s;@!7!WK%Ub_PPrX zCJbW+u1%bB$XLi5Q_pv37_&+1PSZQ>2WV4VhL2^IumGL!d_&b|-#;FJ!E_-0W8d}Zfp*P2S`ycfpOcL!sSypi0_ z8}{tz>}I@JT1?tuoe(+5fP0?(7?b;b7vxNiz#UH~vJ2}&*pjmS(DXCaUMOiZ7X19dKSzW5KeXDZoY8}fnmr>L9_S-8|@EkrNJ{m(tC@ck}Q67X14_gH*a8bqVE+!b4x4U6SyaV-^R&YLYN`D#lO#ut)b%3D~y&y~Dx z7{R?u)tLNTgV|b3u<(AbL=MwhAbDCZj-Njm&pI3>5sCA+CtBmF$mcjAXuW94tOKIH z)zz@`c{TRo)?&}4lC=NpOlVtC%PyUBV${Vs^*W@=imZFb9u&r^wI z7+pfUcVhVHT`dluTE<)xRVnFW6(#F;Y1&T9$QDe+>hv@wnWYQ|vg2`_ zxi}j)=rox^USx{QJY8* z?1MhFs(j0vb8sr?Bp4S);*ILfhfN1Ejk?GeI!kcZ0Xp`v?k~ zxAW!9iz?E`(}9EYs3?65S{5a-!f-qC99c#E4kW>_Yk@3gO$|PcUEQUVyN{znR4Koq z%YR_;PVn4F2mI!#@ec}|Nh;Ni&Pgt3FT$Q;!We(HHocj8+Z@C^dUizA76 zS&;2)`V0TQ#5LIFU$B0M|IPZ{W@`25-C2N{JjKv*XAo9Gk9A$zeSaX+U!ti1%E}S+L_gWNSFk4Ov zZpv(o14qO1{UJVE6GFyIVcNyx+}+#KI5%TE*IRP{tCc{ITXqqo44v4thE(cNas$cl zF<xbpTk^ZhA`Y)I(`ZkN!ALL6OT+DA9GWU>W1Wl6F9@taXm`~*Jqih}vA zcI?%+WUM%qNOz{kGdnF~wkT&m#M=#mRQEGj8eb=v@OA(*l@jmrt?opxuv{49*`NDf zl8+JZbm;qndEj7n98SJ6r^rnwc*~hTu-~c}=Cfrsf|M({sN6*7mmHZXk75trgt5Sc zX?RBR5r6qz5;je{3{wtR(tt)M_V9SKc~ajhQ0?Lv6~~+LqmJ|DZ_9?W1C&p1JFQrs z!kjK0S`D^LD~67>OEKf!N!08A5v~tXqscEX!r)_;0^foHTp4Y^j=$7nN5}NW2fOqr z}tl(D5rU#bGy6*u6i{6w`IEUtHDYLWRG|8a#rN||4H-3ATg8kCI zW4`}x%o{+Qm!leNpRW&hMjpfVow{T;rw!jGUSe|1*5EULBDs(Iimy9(zHOW}8E3zS z0NYkwo$q^n27dIdJm$APX^Xfm6yZ4_FuiTtt|&exE}f-W8X<6(L%G1ZkO`8Ps9 zY$DUH350n;Z@5flRsQ`uYn<(LhL>t6WI}WRT7yLlezU8zO(28tSnB2p${KYO7%n*mN|lb7UT~W2CrY^NV|z} zFa9UjA|6gV!k4f~-;S_35&dw#qdYb4Orjaf=F(c3oz$_s0(7+#NzYLU-d}hFaoaoj zmF=B^cV=qr<=NSkcIF)_3i`4_@)4caTaNjWTiC(7QS{KgHzhxs%YFam3YUlUCMkPs zl+{`U3tQfcY`o8)RL){g++P9@$V3w~#FzlT2z>k1=lWK=#I~KTgXUiDOQw zQufD-cyG1_(+z9 zmWTPF0b*nz*9K8h5BYEPn?b)ypDpUh!1@w%_A0d;-vx*hEIt4c%^5JZtH02_#-%hU z`51rA`~iP@!gK5saTNNCj^`n~ux2O{cqC z#Bp(xCyWmn#KMo}GfDecv|Clk-OTr(i(MMr4dX>4#Ndk$O=!Aq0(0+U%W9frXz}?$G+%y?=;-8RT-WiHFP}RE^-qlCr)p26 zs>(PT7`ue63eSVI^*zB+b`gDO8pSRhSqo1#WWZqcAWFZH$bDb%7!)VwlZ#M_Kc;Y& zn{4aFM$O9QUj?Ybz9w&0e*2M4i+;G=L*F9&TS%pr5jT$I@8#a_fsB#a7U zvFCU2-(nTWzuuDt%yc62JFq$&G4EVd0s2B;NL-iU~q0Oz0th^`zk-c+~-;}@^*jL z+~UT`a+|5Fqe_oU%oHE{5jBljkIC1?l7v&Rpnved9uB6qbO&~PW1J3ena4t0J6HjPI~KyCeO=dvbR)LdLI=Loyx~+`<_n^G&&4m^>zH@e3D~Ht!{+qy059$~m}eFX zQgW&=@ks}lv)Y}s?*9a>Q_{Sp?+6q|+~>a5Z02>RR)U4SFVkM)#Tvevfzl|uET^(}dXh&cw zJ6zSyyGAa@2;otfGO-hXPEp7G+O2{YiyC-m)p&@$;Yr40g7Mg>-jIE;tM}adG)~Jw zjuuUn!;s#O;dtz7ZcX?NtnQ_Tyvjg++U>+Nnd>$Vh>jXpw#UHy0(+_Sm5yNc*hF9!}e zxooK41~4$X3M|tCDvDyTm=mYoeh8CSKZlgjj5Os#DX#x^zN4U2&|hgi1UyT!*rv0R z?R`_qc9v9v`U(a+;Wm^z4CbCRRN~R2Ze6E`h#x$!M}t4K=-XF8-3h^RbK7K&Z*`6e7Xr_Tvyl~jY1rBE?D?m3SnNKQ4f3i%+g5e*epCsZ zHxDy%r_jy*p-{GZJLopYF}_y}>^Zan%4&welQrX+x4RMT@{gd)TnFd0H46uRdxB*j z)S3B13H($mP7h|rvvDJ8FiheiysDneb-0~CVRZoQ`!SnMJsFEzr`nvRqYV^*{Gn)gq3$l;uMw2g_0a>CI4`l?LrbC%B%@@odg4e+sjz z<=Pf;7$hqT7hCk;(F8ksuks3JZ}Y&M0}9OE{0KZ>VcXT$PLW%3W)Ni^pGh|_&4=;T z(VWQD10UYta8-jMzAKcY`w0=Wd(AO4%wGowL&Qi^Uy{Tpq|tRc4!b9R#%U!w=;|hK z@lnhQWt6Q@YLG9)XKO^BhsDOrwYQ9-uEzQdIC)NYyzF*)3D0fpRUYnh2(RR z?8*B|?k&@$`on#3lJqxtv#1$6JgmpV<5gdT@*M2*s`>hFsae2~o?dKEDgulxTRQComrFQ(3dkh8Xva~lN7Y@6gX8I1j znOeqtHgv^nSpL0%yR~fzKVt5CywFpHoyg9FxQWF$;G;NxvHy-Q`s`;%<5cP3hpVJm z<<5!<2arD>-kiL|BBkE(F1ACtm~V#k_^kxxJ+q`K+;Q00cNgjgy%(q+ZbQ52x!lE@=KQ(u z(j-%4!>#%9jA`^#r(@cS*^Q&?xJ@;h@bq+lZuHAw5{~NHp07Gk>}eK9m`Mh3NUv9~rr#Leg zU$WdVgnCD9X8n)cMbU;CEcIw5B}$IPZ~O@s(aVzcm$#;K1x|P*L!W+g{cnXXoB#Xu z`v@_Mf3AO@S=XZmM*Oo4{JQz~ZvOq>fq(Dz|9AWUyZ!&&{r9{3@Bh(%zuW)c?f>ug z|9AJ_@9w|ug|9AJ_ z@9w|ttxrHTTX3VndnG$B^95b^5b2Bqj#smU05CHc(%O(CFpBi*!_NIB@;=pq_`x%C^0=X9vJTFdAX^1CFu6F+CG+K1DX%QhA8$30fmSSs-()2 z)cm59)FO1_bI(1Q3p+_d55@RtBp44)J_f{_Ey7N`)4^sNqMMC;t0k(tr;uv45xUvP zH*TPs?I2E~yN%J!Mm`M`)occJ63sS2Hyin+5>&Gfn2~5UFbAXNSmYB&P|a>|BhhR# z;>{LuC(&%+jwe)iBkz7fb@vof&9*={8+m0Gs@V?VB)Z!Y-E8D^qK}d<8PZ8K+YlpT zA}177!w-~^YB)yDM6R7s4R2^8-f$eHE^?(}hY~D8?Zg|7y}AqVW@FQVnkmPu3pZT| p%7W2LfdwN7>;T#b0ziH2AUd`WL_(^a0B=^XDj{Gc3{nqK3jou}9%cXl literal 36082 zcmeFa2T+vDwl+-8B9b$LN>GXOcDDf&B8nIYqKFs(5fMZQ1~3pLi6EjR5flLhQ9+ou zSEC|e0u=)oFkwIxbIyqRgONo7Zw(%Cb;zf4>m%-`*nU z5VXuY+^y&BJuk|INO*|${EbzJq=$IVv+wd1AyQ7F;UUs4P9kPz8-0D31qJ!}hWB(V zOm2GULcdVIh4uly;c_7|X09Q!;URLaA@Uw7|Fx|l3X6MeSS-HyHxBENK8yc`t@s=E z;$IMb!$Xu@L;892`v-)-U-10D4WCbl^6vm_LR1z@O+7Cj9-`WVVCp39BN?jOhBl+f6O=f9RU|I;O_(j|41=|7N~Pc!;TMh}pj)@C_OK zI|39k#N?^E(F)-`0*KPJn@;-8kn=-&Yh3mNnGu8#d5V(<-_`FjTIkXe6c@c1Lc>_0Gg z{>CsTJjBa2WbO(JXD4YHJfTS|wr3yw)tvw3j%Y1n@IT%WeImmBmi^j69PD)d-If>> z5FQ@n_sfR(Q5{-RJ)`xj{c9U6MD+j1HvHOFEUg^uwEv9(y5XT?ezE^Ju6wel^CG|6 zzhm$J=h&?s>~#MPyQk-$etFRk)n*)pNzQduT`G{A(} z3^AsUCoaNMH=n}_srp38a3Z@hR*CH%+K9-4fZaP};^6U5B&p>J^zr|ET&m|P;v zBG|;*Nk0a*U8w_o<5Cj1cQz?{eh@TIC&K2*p>*%v7Zj9iNuLW3;HE(`Zu=0&c3T~X zEw9~JdjUtpmnJap)B~hJ7)=xwY{DbPZ^U0ztMTw-Gf4L`%o3-I;Pc_Ns68Vc>$;lb z&F7|&>ds`mZoxFR_4`P&!?X{Xc|i)Fnvsk@*%`5-1y5=HF?ZyA!Hl(hn8O~V%47Hb zQDl{g430)Jgg#isK8(m@)q1Dl{NfmXUFa8lX@LwbTojF`jt^r8OQo4bXe7~i`ws8C zRS8Fo;&Gs6DbjR~CM_}zZ00~4wmDmkxY{YOBbq14Z09t*ZJz^X9!A`qMk_MpVa#rsWON56GVd0}RJaK3wh#uZUt5l0Ps=NSIn04XuDkCr)S_=z1 z{fsOVe4hi| z9+CKJ!x*;d{c9|mHigs~ZGlm~6WGwN6Nu}8YdFbJgUqQk!m<&sA++=&i4(Md<>U+! zDO6(%bmWI^yrWH={M>Pl+7;+NehPWbcmh^_o5-5HrKI@Eb^7T5A>*g&gJ<;)+ImQg ze0U?t6n2K;Ewjb}cjXDbVW7%FxME^Zya6jU4B^dPT5+}F6!K$11X=V`jhJrhPevU* zg8TFSc&t|t=mzMaT)|H~TlrbK*4I1_5R0k=QPrnksY z(zeEcUA9*vwR0oL>+)_$4}OQ|n;wRPlRD5h8w+;xM+2NJVK~Iq86TKi3_rhx5$`HJ zlDhIZR(oO2lBeusuPR@&r)e|U!dC~Wbk15VJaYw}zlkAvtp}hwe<4wtAjTeiXaJi8 z!tm-?ns;&)T(4bB)@;9qosYJG===@jb;u(Ky`>6Q%)UbQ&=j`hTpqD@NN2XIJg|j! z1}VywgHg#%cu8~<2);0U%YQbo;abrBd=(j>Gz~|4*|Rmeo3M0CB;=Z?5Hm|zHhg0| z@!uN;=XS`l%6G>FTk;l=?KAt5W8<C8i>pD@y%(Iq>wlssQ>>|2gx(R7bF~ZW9yx8W@`w(6H z5I@l|U|~l$;PfQ{q@Un0&UUM&c~j;QUyTs*)<2vX-Kr;br}{9mq84va-b(b^;;@zH zbaG(1|9j?)^4eKdI-lkl2O| z9Xk09Kv#1NJ>388P$1byShbC-#CL6WBTG%uGY49da z3%P`Pl9$IW(%~NlvoUukGW|!hvDCxcIP~(2~q!j#p&ak8C-Zmj98iZBk~R zrUx;tq3T3F(vw-nWP#)4lT_hD1o6qZ$rcZkW*9HPQUivNL)xKmjXOl1RShCWw)^nT zpg5SbvILb6OtaaOE5q6jM8KIC7c}*$JefB`7UO17va6pHGr?lyf#zkRSYSv$xM4PI z??KW!+>}UI>9P@(Vz6eOF)@)?Kq{IJ0hcul?2b%X)k!+ouokTQx7{wq^@CCYsG& zysBe!&WeypbxEM0{ucbNE(MK?VbmeH9pw*y2xk3OatUAc@bY8{oF=~rQg!x{pfe6+ zbygYp?=>Y?UW{Q6Bc+&_Qx#N1Cqmw{-Q=|>#d5a~L#SjsIkP<<-;S~&rW=;BpDN~L zS4#$2mcAaZaiw^b`6ZMKTFl6+3O|{jPENi*zycFW@z6*+;?k!SU-RBij4wCiY@d1o z|5ct`dL%(cl<&j?^>X3ESWQ%$Jdy-m-hlHOOkwD!BlM}dB`74-;?vsx?3l5Dq`a3T zgI}M)hwc@?53kGk*y3Gm?&Sk)fZ=WS$X6XN+tNnYd|6GtcY3j-Z&hK2b2i!WGYtgX zRx%(L_Z)sv1vhk0+1BpP@qEcsL*R4Vtf{u*`N>rtu^J2cP>6@O29N^s1R|YmjFTu5QD1 z=dRhVLuv9Kz7bn&^iAY z4}Dn6u5=y6db-o_;^+J6Rf%0NF2Iu*o^HYG$E6T<9g*?hzVo^1C-HbOYqnz6Ta-4# zo$ai=hUc4%BirYtu#XS7vAu_Uacr^{u{J-4`z}htnd?I#FKY#s(%EXlGR?i{4B#v=&)r*&ctqau{+lL`il5^!7pJ2rg=_GQ^;X0w!^T4dFXh4`N2 z9df=ghc#&p#Zy-*<53X>tSY3Ys`lVvz9D@9=q6i{WNDuHD4YSW=K*Ynj~EkQbq^WH zY^C;JN3w5A{7BKfFEILgA!@QShf@uAAs|?uV2k_kvNMo4j!eQAH3PstMT9jx7{_UR zb|k58EAaB_DExMdJh9M;f_ZV}w4!=ESt2)@#Yx=2(=N1QjV+^?!?8Mc&-4r093X*K zj7$N~yHy}a?ZV`~35(K+Ak({tJd0$J$Y2sCUsn{aYAu|z+_?-va!XNDCLQ7Kh!k@^+8NtbJF=nfAkcoEJ zLylq)+2>J-?|r;TQ2r)TapxYEX{e(P=LV3ODh2ec`vNd1jc0RsQ#R|sK{hqY7+sgI z1*2J;Vf|1IR>+^l_5O|c{ZJ$9C2P(O)wR-h&&^rI@xi1;bP91-&O%Z#mvL5@2NrbK zk|D1)K-kP}Om)3IXsod(-Q}KGWYQ_D?oxtB9h^eC&YKfUvuW({p0BuMpf<6eVMiY4 z{GfKJMyx`7646RH4143Yk_F!T*y!he?DfZIa5!QEdpJU$JR4h%b7mfa;n#d&_!Uzo zw#1mQ(ir$u6is{`#EDa#59mtxlB417sB_5$bgO$F9pofJbZa&fySdRsJxd?v_0?sy zIfRWn6Gu+R`jT)-L!7(cl(nwfgJ#Z}N8H-3!Uu^yL{PSs4oFLeRd=NzX>BF^v~I#p z$eEeXv!J4p&aA((GK(2kh{bZIvP2DiGQmxjBw6}HY{)c(+^*1uf|n39MU_dY_k3rp zlORXK60zA_RW_lr4xVqeW8HCwNJl^-qkU^JJ+~RJi#?6}?rN}tnVDqd=q|j!I*)jr zI*j&eW)amgFTxEI!HuDh@%_}hq@ZIF`ZzR*JSp7Ho{fJ*GipYXnjM8m`cX0XCQFm6 zuQEus&3nkxYsW{A?V>Ilv-qPo>(H@IJ=U>m4n*wf#zTA-v5#%*u;P;a(0}qm##Wi* zS3B0R8e8dMLsBL1`AB$1(3M(9y_eQg+?yH< zuq+;0`Ay(_P6Qv0Z%1wwi^xW;xAfuMbV$CtoTN^x0_Wg`?BzLEGI!QS^k#S#Q+&9L zxt&-GKQBDP+geYMdW%N1eav^5z4aMfk!*$K6&moy6%mJy{$$Kye z<39b(NtUudi}TvS(u~#FuDeQPgo`?G-I^p%{0H}?@HC2hRSlMN&Dp_6JU(#Sg^85} zu*dq^th{kNu$`CTq_Z{=X^O*XDsdok&6fP~6@1zdWp35C$Bo+4{zpSf(`or};ectzD_Kg3O8$8oIt zS;#%PkX6+=GOg|h_-aQAI4$3eUHx>}#bg7PJiP|^hlNaVClR01@`8#xlgYO;GQ{O< zFlw5;l_m61W{as6e(ITnofSv1vN#^+-Ad&zOW(k`D2w!UuEI5K>GWBw1+!}$i=QsM z4>P}tu|2~s<5PQ=u&;*>0uGL)n+y~2(S`epK>(P7>>MkMUy zTL^cp#@)*c*kP*;%($+W8tgTp@23o-$Gyy8V%u^mrRRu6k4Q2_gE$hBs6;XpT3Ozh z+puCu79M8hjiWxKK)m-^bmLQf&wjTQmzMaD1y~6rf6B3l-Oqn3p~89z2(LyEN23yK zUp5d9S09CGJFD1&b~~b?)Cpgnm($AO3w1)oO#$gOHAD zf4pDc4aTO-V(yc@;l1QZc2KySIXV|2{S#>@-0TN`_Ps3eZ;&B(+rvrzT+A9|CXsW2 zFHq}lYts6B6-@LUNH(%*_|D@g>}#h#`zqH!f_d3$J(Y6&?N&6dwUA?mM#|`h!WzzI z&Kh`}Tg=RrV_~rSbK;Xs;DK^7wj84X=L&gL2GxQSdIm5={1u+9r%a}te(a>oS5{Pj)~q(mK~4BY85iPN>vO| zU8u)ayJLL#tu^sz(I-JuGYDQQiA&WcvF@I|`*7GGJk?g0h5010HBlyLt6e_GdG17K zQ-`vEwHv`PJ|4?|-^OU$8Axk&gM#6o(IZh2V*c|Dt~|aQ7pr`wDyIzC_K+6XJH(aw zuNH-U*E4B*<0Y;@aR}D>yaB(cb79}q>akw9Ecv{m54%vJ%H~*^;s7f{R(+xmiOrIv zhew|zdi}?-X9daJjD(#~eJKZQRP@lIV-@hAYa2N*?Hrp{q)zV7AH_tIO{@Dqh-IEp zV&qY*KDo4I8?0)c#tQKOW_Jycv9nYGwK=B(rCozXLmS3#4{P zNM#=^WhYEcI8Id;A986RLjq)Q#$^oZ0S@rB#*rw-d1LV}w_$j24G54Z`S^V{%P4hX z6?Z$a*v#W(VW|qcCcXoyRHU)-!PA+_hLWO^m|+>PH4x~NitjBZ zbZlcT8>g%%oH4Zm}P{(UR<#4>;K*$?i$CLtt$XcmNRyg^b zb>%T-b|6WE%`aJu`CWH$M@oNk@vU@H6_c03izoNALLYRvtC*G>+`xsCRu%1VOn(Aq$vaUu=!^@sJR9r2}O zrfgzDFy8rj4)hZljA6JktWkLl`DX3dDmVzAXtiJ)R!(5}a07m%wSmnVIEFc$c@CW^ z$s{a)GqRT4&m9>g!t_)V@sTbCRyel-dy>_VaCH#NFY_R)wj+FOrVkr)IgKc|oCNo8 zDsZ#ah@Dc1;Y1>{*~xclms<+Ck9quNFW*caLwtCP zjAV9Xg9KFTW|6a%cd^Wzsbpi97bABZQT_X?aQkW>b}^H{>9guAB}RdzS~sHR&09g4 z*<DTJS&iVF@+!ZQ{HLWhbjzLl0v?zL+(S5FBh zKttGPuYN3cP7EsCF@x;=Fpmsdx{g(aGqTO$4Zaz%l!%x7gx4Aqq4hTlYVE)XnvhJw(2OS z9p$<3!^D_u$;cI2yU5}mA0Vh$DnX9(YzU2#BonPj8q4;J>~d}^eepeku%#F9?V3^S-fb^9(XxUgXuRYkV&5b zq9U}Il5r`XQ!Ygo8TjKpO1B_Gdp)VRpMW>5+f65S=i_O6qu@n$UsCg&kk>1BvP0YD zuz2KmG;C}$>MJ})k50%W$GW#eXJ*2zXNm;I7h&NA(LM zZY3YU$^w(Kmls1>i5cU~jmU|~m7w-@3`@OTf%%7n$UUEW)@UI zabW^KJ0%(qpER1pj<*Kypt-C}X&;l{lS2%f#qo?4quCS%o`sIICtB(X_|v-egqwE| z+r6E`Y&;klQftJ_74M;tMtd~*SYMo|WWoZZ;&8;sAolpd8IXFrm9;z^$n-)-voEs8 z=#s1YBu_6DEH=5b$E)wqkOp&-y}PsL{N0DtJ={oI$4w`@EDPc7l5SW#xDxwoTQiYw zIr!ifca~~cME0j!kk6sB$^J%7a`#aq z*7N_N=H(1_QSl%imYoH|W!%a4kr^~Ta01(VO_FG(2at;m61XRLfu?2;B97(<@yl~M zuzLkZ;*+M4XQNLuQ{!1AWaJc5TJFW{s`fB3kFVIo*$Xe$IKgTP6WQq|24=B#?EABR zaC+Px2oW=aws)7X(_JlAFYZrN^asQ0S%&12!eSOm<6!K&uVC?7giPqV%tqEp4|}6x zK-Q$mk`?yn>Bg|nsD4%k7ID8uK9~lOxAG~lKfelUuk7bven!OaYb@?wG=i0Hokwnb z-iVj21xgKOtz}zS zl5GsR|5yczS1(1MQ#XTp#1~wdH;!L6&!1dW+km^HUZ9!lj)R)+0;2K03Ehm^K-T7p zvAcu6!Sgd6_>B>dV;kaFj&ENKwo)v1g*&VWPKMpYh&>os+Hu?SScI5x$(6RXS+BO}Agk$ulu{ZaIO zFblax?^eh2M+VAax5!ucy{ZR3C)@>-4#%>TvV8Kn$0mj9SoE}HDYT8-0YUbzbk*E# zB)ZRF*syX6S?rF4CbFMkdSe39oxg*PSzAHS{vqsai9gQPawiY_$*}cv3US}blh_`s zrC>hJfTYhfWM35q+}0 zY9oA~aFA#mbH@_`szF(lkS2FKvh!I<&m2uAwPT(m-dl!ja4*N%c3yDmejj!sG=)3x zQxq~bbi*`vAzsKGrRwdLe9P-sPB0_<7eY zBXHYM8(tQe;^j7339=+zF7bP5AO11 zn*-_R)kmnqp?22UF`g6_XcOhaHjsMNt)!x zgPY*sk_NbYe?64Fx{cq=pUbLTB-w+&QsQitO=c{v#CmB*(3R&?3HS8}Cs!1M_u2RO zr;A?FvYs_~Z$k-a&)7?AZ8nqq3pI2=?qNK;=o0)GP|jWpi?H;WVtDmtBYs+ML1bpS zu^CwlJ#{*Hg0 z-~G#{$o%)`cMB2j&z;|G9PF(A?D5^RH~!umfB!4Q-=Erk;Y#x_aAzw*=!$0>If;T6 z;dnn0w5ju%;8T<|T6_E>*C^4(FKl=z40kU^4j+Vqjo0?^9;I_A&bQ_?`bth%B&p-Ed1y5q#YHv|wB2Aj8kB#Edp-6WFaC4^cW!;0)yxlzI7f>- z^sS%`omM_1l-&co=;(fELb(*bsADs)bG$(quJD12Y9EP?Y&E1`vlX})D&#Fqk5b6E zO3S2z>8xBAy01uxo_apzv(}~4W+gGy&$@`OHhU;sl>bz4!*c|UWI2K{nQLjum(55& zc`a{Mwuisp-iMq2IE>CqGUcy5Z{<}=wYYV=m-C)sFZeTuig~&0AnGmVK*t>Vz{kH< z<&*+*>9RRd+?I~7{J>^{GN;vWtT}=IQ0GL4sJ97^w)Uy)3h3lVOj>7i{Ny6~psI!o zI{J-!^E#VrjH{p(zKy)k+l|Pezc}3+ugEPAbmG@|5cm$^ZG9QhaX$1_$^P)I^0|! z`mKW-Fd<%eqR5T@Kr5)%o8f4Btqg6JR1@kia;6}*i8r1YhrX+Pt6Uh0IafVP+Wxtb z>vT`ymk-WGGXtmc8q;s_C*X{rt;2)&-SdFYxvWJ$eYwkRAJBx{=bhzqw@;&0NBYqA zj_qjVkr3YD*>F_ep+u_($WWDoiG1g?mx7CGH~F;Y`+TL))21aSU6dKJV zuA(gk)%2l=hVJG9({fR&=^HNn?lbPgDN&?#^%>V2fA5XI{}tlzxdBovVa9CQZ;mLw zaM%l8Ef|8*9Is%5v1uqkCl=F@o%qdlF}PgQ0RF?&!Ki}6hE)f!Nm4qx7ADD(>&{bM zwjC{st3eiT?ICI4a_9`$1rbY~sOqh&;Iv;E3WLAU2A#F|RN*Op%*jjqaQP}+Hh&D3 zZfF5DvrRB##T_*J{6tu)fpFWZNqD4b0xo&nT4mW(jeZzhfPk2nAh})=AE+wAT2IHI zU5f8$QPFC6_^b(=XC~uzRVB8#BZ+QI9|MuA<{^uUcleTo5DH$jV*B^%q)UGmAp6VU z<)(w9cZ(tKBXw|3r!UbYPSoMiDLAxq8NdC63ssBs#H;sR#+IvF@z>Yov^xt!(c?61 z+jkTUt}Dh}vSP^S?Lg{tF%PB9&cO+$dyv_HW~^H#2cm;=Q1spv)a62sO_!Vk@ay-% zI&DWdEw=@I?^I!O{B(G7K!~58-$83G?#3?f6ZoUCl#Z#uG+RO(e9sJ^^V_u06RpGW z{ap(@DvyIybse&H`W6J`d32(x6A1DK3xZFc#I>n*uFK`;G^*%8AH@AvNM` zW#JhZBl!SX2?nyr{?lpOhE5cy6@^tMmkKWgrepiS7_8-a5tgb2cbpUq1CHAHge>PNXI;AEHN!dr_9F5k!v>qtj+z z!=c5_Sm?SBWu4!L+l^bHk3u}`@4p#GWtKog{~I{jb`5+Du)$pI6Z(XAq_QuLpovKr zQUBn2n`c9cVVtKB2Dz$nH?7_Ajb@JK9~1D>ZG%y`cqN|Nqy+B^Qt0LbUQ|&(m-?U4 z0gb&IklCG$=*m8Ze>R^%ZS|i)ZcjXZ*EtK^M#ti`?0q2PoQZYa8d1M>yZE&|@d^o> zPkdMF28g)fi%&gR3|6}X=#flz(crBddT_HFWp-9mRP6-1Ts`M%WW$cmQio^vG@16zaJ_|Hh6xDK|m5gruU(L6_*nzU64T)O?t=d=70Ed5><#ZN|5_K&s~6 zfRhI#(60O^xHj7e6pr1eXiF+R;W!mL+5e<-tc&r!$SU-;q6x45ItQ;?`<$MLe@MUF zp9>CNlOT8NDZEHnALjo!{Nn=2iVKoZkii$@#rE{@xpZ|0~4b<2sXRm&_t0rJ{%eqD$!@u{2sE zk-@nS*Qd5iiYt}kcGA;FhV#aaPDnLAhL7s3NEC*Q7 zpTZs7$2BT+tA7wzwc{sewY(5L$+8y?(3VEyL`-SRvX{JFMkTGXOh&UC%u(Rsp>$Pi zCZF@d1u3Q^(#r58p{>FkZeLIVlIs|4wVKc8_TE`T>*u&~D+AoR)b*?juusyCf6Oo}S{#&Ug@*wex!Gn9A1 zllS*h=G1qn(6jXtbj)~Jq<&-&dNfFdj<(H0ncf5Vl&D7G^viMlv*t27=102V#r~o6 z(9FJ-W3{aL)T|}Qeb)i*nchiWZ*d_f9deI9qg2K@GIcunr;VWLOdc0eA}V~9J`Yt& zZ$$N8+vp6PJpQIxHUIXl6zw~GI&F`P7N|bLRQB3wZtn6zpVZ|Gz4j94MY7NkEIKzSa4fIIs|8f^ZAo|Kk=Vs zG*R6HjyrX$!lw0kvLIa4oUWcY5Uub#%2~>AT(ggg&4t?y{QJ4v(SaG6Tm}D`Z$7$- zm)DaP6zH$!8q&|u{RZ#&S+xmvJ>?}q>`p<+%AJ66D)TMYg@u&QUE5~W% z{0S)I*D)*CmtOD(_`C`A^zs-n;^8nD(w@!%6)DebeoJVtmoUx_ENStB)343^^z{>L{tz~C#gqBwmaYoq| zn{3&IP<^x?dq|qm=nLDpvZG%>ci}2n*>(pPeOv)<0g-g$Qz4#JDx{+KwPBO~V4V44 z1}tt|j(3g9hoRf!@xp`6SXJs9T=9H`OHMgpeoHZZS^Ax3$4C*;fDYlp6h%1ZuL&~; zy@A#526684esJhK79P9M2KMdokW?Oz5w{O!-Eo1z7uLY+jmm7LkuKa;H$@-vzSCI` zmm@>-W}C``Je1d*!eh=)#1Aitp`G^9?2PL}`e9@sRt0#D%w*$VjOA%`Ad+r#{n1c?8F5()_FG7`mV(h}VS)kl?2hM7SfMr2E60S=^ z8|Ll89;qeVY4#95nj}ps2Bad@jg(rf>!91+htm7&UZbgo{%A~-56nm|Fkt}P6PT9F6n-dqKczNpXT7`3Cie6OSx)9bPN0wJk97X#&$eIq95J{fXw>DMClPq{xIMHE4HKCHI|= z(XTI)x#j0Z)#G0FHfc5gRwG@veF8@lS_v3i4w$JP8sictP8fy zTWRW!U~CcfiL1At3Z=U7xT>!f{V4MYR`%SFPdt8wDl7Jk!RM1badLv$zV2SOoS)$GDKKPqaHkKXIgav6AaE{p?x}bXyG*4>oahqD=bmOZ?E}`en zcAh$p9sfwEuJ#Da9J0fGM&6WmGysfitL{dx4CoZoxn@4fN&ze4=ISO4Ct zfA7`5_v+t!_3yp<_g?*bul~JP|K6*A@72He>fir=q<_c%$@zW2sDi)c-@iSqU&;SM z{(bV_<=_8b<{$Ro@%P?8=)HgNSGa#57itR!PMyM|I34B{ro=20&1oIJ11q&1m_7M{ z1IIg|a~o$1Y!x(s`*ae1(w5ng$$yJ`QFDE&}3}f%Cq`(;MMMAQPO9dF6@3 zQ%95*9eRO}6bE7BDreGvgE)kbJA)HOZAR`P>$r*PO(@6t0q$s+4a0nF!M(r%*W}mH zsFynIUH<^MaMd2~nsETS0#nH5ivl#qCkzy~9K~C98Gy#2msIn971+Ky1Sd9+#;tez zV5>0}M6T-_3_mJQ4o<5E?U~_V-C~9(ZEJ+u_;*z7!xPY5oP~z%)8^eij{(&iUocC^ z#WD}?aV3Soud8-KzOC`-=?+4c1wVt!2Bv7V%y{Ou{ty)p?gq_NS-7fk3l@l9#qeql zWW7`B$vt`(2Dv;yZPPL!z~}>&bCYJ@MKodW$|5vv)Ct;@J_Ou$Jfz^BO$9dL^2$_9STMox=F~ zcCfCg#6HpC6z&>e4IdeNfBR>UnXU=fns-4%-+Sm;WeE8u){hM}I)R48KgJUJ7GP`G z!rho;&mUVcj}$qa;=&K5zyymL)bF$hKDHu-*R)LrzqCqtcl-q!BmWNje7Qo;FS&|a zS4AT2qeFSadj#Lz+Mj$8-3Qyv1`_v3F=G56-)2fhE94b9gX!rmh`n?fiz`Iq(Jisq zr|c@s>(S|@f1e2@N(?d`*MR(vPc%PXpQg@x0Lscvc)&*??Dp(N7gmasGhSJi4tN2a z3)~02`u|@2|6f7>|7hh!oR$;?0eg<&p=X`hfW7X5$dQPwk1>Vr`kE>es{|+*GMz=4 zUS-LaE$sgM-8T0>f8+G4M-k!VfviCz6w<|NNZIW=uvpTMXq^fH#j0scV5Gs)4WnVK z3?@5z@@M-L6%)1UQkbkQLbhWkV&FB0^$8PU4w`Cgs@h(BuTY!SOfJTm3+u4Q8cUMy zB0|O~)Ixk%JWfCEgtP9aF{MHA?E0Q$yi_fowI)^I1!}Iu+I9lh<>M6DU>K-mw8G;7XVJzw z5pYsJ1aGe@lC`xd=*#Ub_~1u?jw#)>_UNS2Sa`ONM>(ALwPs5Sg{a8#EUa{qBcJ5t==aD&Ou2sny&`tGSO4FefB!F$ zf8SjFHNQXA0b=Z(P^|hb8{w@kWP51~ExPrZ8#A_@zurC=-7(CgC*;p_wz=(;+fqUm zLLz9txFwu)#xcQ~{cn-hhj>BF9YRy<>`+?!P@3j+3r$*d-sXh!V=kq^LfFsvsUUdl z8v54HKoF3Sg7OB>r)CfO^YZFuRDiqqPsJa26JHCMWlqtqI4L?ob1S|20#NgU1a!l5 z1C6{ff^yWDDqrp9&pV6aa|iV3j-QBM^T-tZp7rF7#G3?HKCY$(!Yg1 z+aOr@bSHn{x4`sJ_$?x@?^(!5CCBB80s+%BK>4{#x)&!HIB6O4Gao(V;NHC)ymw)Lv4C!cA za$*MtqtckMD5pjb&+T&(&DP(6DCBXhoYA%8ywQyA34-s!p)^rVlm-{7Q$=TKL2Ymn zN+8Lc_s?gjDeVWp)#o-X&uvG>Hp}|*+xe-D}hiW)fJ$Bo~?a2JbUpO#| zuDvvvKdoPkGzt^Y6^Vnq{i{9=w?S=b^qzi9k)WIVDxun5`;OweM^37r}1 zLM3XvIl&Q(B5;yTgog_aHakxP6kl-Ffyy*H;tX08dx^^W-a!SsP9ZWa5uL33$)BC) zhRm``5c54peHM)7zrB)2%8Ltajz{mLo(IdQ*zD_qpt@q(>d_w$Z9gygrT^DX;`o ztYksFEEQh9%E8CuO5i@o(+>GC6s>Rv#ATAP=JsJsMY9!76k|L?RE{ilKZTvMmyv-| z>72Kr0Wr;wrH-F}!f40!XoIsAJpI|19hV%7lWecT&cjb&pz=7I$6nSf!cm>ob*~4v zBk_2-+H`VSt^f*V$ALMgL&H3uf^YRCyynJ;5HFB6+C zXb0?INnRYjitzZ`Sf-p})8?79C1NHXdFT;*ESdrfy0@VcG95=fJcTp%Ou)Bpw!xhr zfxsmmz-zA?(}%n-3dj!Z$>rKpqX>oyTUSgbS3k}{H+N*h%>1Q2H5PVPZE!z`&PHs; zWh&A=^#W>Wib^8NODM%kH9hr$j$H-EqQhXkc`II5;RVJ~vdBID8YD*EgtZl(5f%XQ#&&TE<_wjbsuXMwcyE-aamhBr8rz#t||E{r$?l5uBngJB5X zBsv{kKC=%iyn2q(jkgMyAM=9O3&mN``Yc>>YaO(|-b?3bOou~lQ|aY_8Q8&RCoYkb z#l8CfUj6@HLI3~Na2|B`y+R+U8Iz|opJ0#m{fLduR>%|wayR}WzG&1RebDaFf9rd~H6h654P>7dzel;^OOW{4@31H8Blq0E4vas&ft_o< zg2y^pHpOTcv!DI}7GBRIc8YsJVTLLezq67LZ?+@d3bF9H`VLwxx*Hs3#;~U5IxHgk zn)j^GB9Y<#;9k>7Pd9&riJs|9Z__t=x2Hy2%L!3(!;Ql^>yqKNBO#BWD=+N zcsA?RH1bpV3YVWiDgJgAq;V`R*`3WY#+s1npS!7z$8l(RmyRb#UxNePgV~$$cQE*m zfP!X8R`$h|R1P@B^*<&_`}EXjTSonf!f|bq+oKOQvm8O3svm&d=&9^(=@VLI*oR3r zn2~AH8%h0_>FoZMMfg*A5_azr1I0sQU}JR}Sv`9I42A(NaY~J!F{JN?q_k2NL zmN;+@a|<>lNjL7ngtFrhd1Wv&tc^q;=`3>FN&`E8Yl7fY<;>;64sw4?G40L2-QUm9~OLy*5F*EoA|NSKLp|{ zMR1XaHr&n8$5NG>`IvXpY3jIL+^L@qG;C8nEoq9UrMZ+pAGHVVS7zw=h6 zFWi~F!*IT>2Yoo)5M{A)lqlXN*cH@*E}XWZ@#+terce~iFD&He?A*wYa*Rip+r=oG z;7?ao=?mgo!ja>kO~~C)NL}w4;PJr=(4HHPLZgt6bmxl*y4msr*CMt67wX5LiNjxW zF_Z5Ki}Y#*HG?0bEI}SxWwa2j9WH_FLMckwrwW+SOP>H@@ z>Do3!PU?s>F5TEnoyQg;t!3Bv*U#Q?Ka>SkRZ}I=KGzC?s_S61wEH>@my)HC+50%> z4Jt_bSOYcu`IhHzZQv8V_0gLr4859RiWcT5}*l&GkNMQ*+4(`p+y6}?jQ zRA9mnuPaCMD%Az%F|#?3Yw5zXb}hn*?j}&0e1~uOkj?c6xgLM33_Z8|lR)I+L*(*q z6Tg3i4Ij=Ip@FvRXsu!sR~Wm4+ckFwf2npLZ>%Cma{@c4WAp^1bbC5~Gvx+dx2>mI zO~ZbaXQlvqhXzvT^mzKcHWww%*&~2UHFRQ(2KuqRjZ@k#ZF9q29FMbWL+eY;vCiOh zG_c_jx;FN-0B`z9=SRgOot{|W_e&$8=fVP{s@gV|CizaT&3do;A7SQtl|Hc<^P;Q^Yha|D4|A z_t^FS&rC@)8#vsD8k@)=j%s#;D~VSG7d6M8@- V0|O%v2Y9oxf!G2-2vQGG3jk1%Uts_M diff --git a/fme/diffusion/testdata/stepper_train_on_batch_regression-True.pt b/fme/diffusion/testdata/stepper_train_on_batch_regression-True.pt index 18d4e938503340ef41be6671d788a3ad7e2285a2..c3a8721e19bbcaf7b893df0233784d0bcde3ff3a 100644 GIT binary patch literal 36525 zcmeFa2~>`6w?E#XG!deKk|q_JpL<`W6itRig=9!YDM@KG)1*NusZ7a`Br^Bhds8S> zBxFu#LLp?1jQ_mf_xC^N{r=B;&Uw!|zqP*qwR%?9^Q?8Rp8eVPeO>E%?!7T$KY=G-(X%QhD-b+!WJzEHw+315BK`pG2>9t z1rZ@(3jz$iA|n&)0s@f(V&VDSfw4>4;Dnw@_IRh5y*sP`Q9^9|FV!{=hH^?Gx}f+kOAA z9q`+Pd_-tJx6u9`{r}B`zhAJ|->%>M&;kEoz%*1LK+^fDctq&HZVP%&;!dJYVouUd z10q5P={ehrcKt>-t{%&3M&(_ucWPRu# z*3~0Ihq;AncnthE-y?j&{QV;SkNcYc03Zm}`a6L3p8<6K1TZ}LZ|>_xgzCA4>i;u< z1)(GU0e}k~`FDU(e+Dr46M*3#07em^#%`e||F+mn|HH**`VTM=YWBxG3c69c*T~;o zZGhrDKYULI>=HDjE)bQUe1?zt>U><7o_fsAF z=TjZ`r&G24W3ucbLhao`9sWb>3ql?L!Ma80_`h49@Mr52|73mAAJ&~BLMOY0I{({D znHv7%Qke4p0*H0578B#pseeas`7?s+pAg*sxWLmQLZ`ch&iH2t3qsxh5y2#M=HC%K z{){l|PYARBK$sH|I@c}KGt$t-skan3)TqRE?}NXG%Rk)_L1gfMcSkf_7!tO`C&DYr zFYNa=>1eC?Pc}xA-|+P2QQYr+>G$~O@D?J<|84m2KQ=rspP)tl!AtytBOGl9{)Zlb z;I{)d%R*oLo~hsCpF3bIGVH(W!2A^vej&d%P)A$U{}A{8{7M8ZiiimE`|ZQ}F;7$^ zyYYXIf9`{Ui28rmhu^!Zk+GxgkpIkqJ#R*j{f)ll`qSL*$rt%O{xfuqe+k{h(N^t0 zL!UkS|1Q4ie~BNHIh~a^vLxXXXC`!lQvJRsq&(bzB(-AjXh;sZ^3!H6{)7y9vlZ%a7H#_6u3l# zcI9Q`kgaZTd*ndYRHny%*7nBp7X~ofrg5kqolhovQ&40}FXHBAv(mO|SUf>ruzmXt zJTfMW8u#r6zg1c+d1W-6_#Dme&@e~;Zv(g&)UuKQF?ZCqG0pv+e zWhU2a>8{}lVQ8ubN-gZq-Va{{eWos;5*fg;ajICpDTfAa^TGEG30QYGjz;y<=DaMIT|>=OA#1 zQ)ea9_R_2U7PQ#%GJYNJ%KI3~!mZ#VnCCf_t<0GsOn23VH$_WH`Q>c>_0n{VdTa)J zJ~u&DkufNb%*0bqr0GH9Yc4!$BOlQDS?FSafE#A6gt9uja8p!2PLx*!w+ZS{U;2)3 zmrE2z95u$xi|=xiE(Zm zBZ2b7^|;2x6<4=QqW{|Yg8AoGLY;^;e17Z9i))DSE}cI);gnY1O6tmsQ_sH8O=MsZsANHtl(Ok^x)08l9My0H*>?s zq+{_6MO1t;2#trV2aC>;7}ReX#Ao$^GZu+(P2Ub=HN5%GyoFr94Y9&uOHOjt@{8f* zwM5L{t_?Ro^oMtymIC47^Jdd+s(D|z>zvLyOQCP_U;t?-gFcA%YvHfIbj445)j6-iiTDU*aqZTDTv_f> zPHdYGyq{ADPy5-UPRb;VOW(jtYj*NsGp<96gEc4GC5C$~Md8j^WehoCh-dVoIf-ar zex%6*Zs_0%aC=L*P;5du7qi$KA1nt>u;LrH&)tA)TeBZlo>o=EVSwOQ zk}iJqVIXKe%ihS%fE|Nk*zQYnSuf8KXl5kAhD$c!)lPHP=Wsn{td*t(4ZR^VXeS!i z+(Fqs3b55L29n>MM5AUaEIIw0|9VV}21}Qrl36ad|I&26WDv(v2hE2(HBW)BVLeD~ zk%!QqUTnZNdGVq%Y>mW>=WO4zX{)d#TNdX(^o-*VWoVl&(SN{7CE zHir6wm*7{>1x;&WAvE2F8D>1;hh7@aCiQklj}MX{t#A#5PV3-I*H&)Ei?gV{%7L6* z``}~Cxin#PJ)Yb63>S_Y%(OR%(o?OcaADzOEbwjQ<%dk?c1|3@mN&k}5%vnqC#*lp z2(@ru;3C$xRGVa#)u`m)bS&H6kEI34^2Uz-FjDI)PMeocOJ$ccE3p*Rby23%nxFY} z!`W<2XC|pxZo!L>jzd%M2zIaSAj$^h2yFJcQ`MMszU*cYI^{dEH5u0Qar+Remre)c ztX|CfL_AiWsN;ON?R2|vKZf7Wg6xDFaJ2UwK$_2LT-=~avI||d?gXLXSzh{a1i224 z;rnvA$Q5+LEBgWPV(K;K8o8J5KS^hk-z}p4*G90NN7QLV>_TSdJC8={N06GcKc09v z2!p@vp|aO$Y-8(qs=d;mozlx=Po3r>_RfMw$5kL~Pa*!wy@8d#5}E51WMPsC%%o&J zJAGgq?h9^&JL4qS)1!xB{k2p~ydX;D`t_8jHxhjkN2Ak|qZn`PM{sEYTRk+M6QBMJ z;!C9Ae(_$o5Fde~wmra+0UO!==W*b5f9~DqeRY}MLi$O zp0o&{tk*`2eQqJ`O&N7TZN3;;S#4 z_$r%9UwY!ZS!Bcw~W@S<(wA0Il z-bFTSecES?aoo)Gw-`{rIjW#G;+jD9#a6Oy^=E|v+t|B3Lr7zaG0mNzN1HDAQNONK z8n!gL8w+drtrwOv8wa1F>?8924Jqg8HjR%4)~wC5c@x^G8&mc+8}%7OS{*f&i0m5TYUgK@&PEZqA*zzr>z zVoO_E!FRPMSQ_tv&O;V--^`nx4pfBRYg@r&ggo;u^5$~TicY?oM$-#N(Nb;?eY)?= zT&=f2Qb_{4YJ31}{pL~85=$ER$qIblmqXe2NpQ0$nzqXYgRaX8aFe=+zrcpMS-t|9 zDgiq!)qy)#h0v-@LkQm%z7!Kj zo3Y^%qI7XtEsU&m2QL?3Q}VX*lP)Ck7VQJrhtPMN{)|TcSEL;|sFbtUW6hzaVJ3`i z`XP9GM4WELrs1>6PRz|kmfDU0o>SfdM>M}+Kc^V7=*VD?9yr06CvLoWgbcN|k3zG3 zH}T-Tdfd2QjjrFm4;S)=u<|3<_ooyWzKsH8$k)`ZoL14pEz;YQ@-(bhaf;l zl)cN}j&Y4n?7+-??(FG@9~;9Ktw}X)xMWgaXs1 zWB9Fea7;9q?eWm&=DRmzn`a&vn47S|mHm06A_dy{9>}4$FE_;B62{ruu}^~+u-s*; zBsd!kPl`6GJbk%&K^&(VBa#VgyEM95%vw`S2b9% z5sId;NK}MgHb~L*u>J5=(HqjZXf&OuOtCvJa%WB%vBdZnsO!*yy4lm{r*jn??`j0o z;zKx0$_X0Q`jBwiS3GHE!!lJup;lZ1CD54UYZLgTh1zuCt`u$FpvJWGR4J4n&Xr#4 z$6r5u3ujMgg(8g@C{P>*W861kZk8*p9cUsD{}9WJPBHexJCyy-6+9K%Ss2TAr;)qI zf0irY{-s=jnWL@Af1WG&KRJ_s|GC3(41*cHnJ{A%OWGJthIg&mx5ex6+vs+@9$6*a zyp`wkeN-VKc^7VUkTDw?mc_5rTt)6HR?!QS8Lai!8<09^!4B~KnSIa~SoLi^yjgz{ z(k6_e#M}4D&1oPL)=1$MNrL&)6q%J@IC#6=N15~tntIL*+Sm7I6NYKBnup?~^kWBr z+f+8bs6XxKlpy0;C8klQMy>&p<~%CXJ%3GhqkKLSN#$AB{wlb$^(}?w9OAcpnMF&A zPBXVHdr{u!1B9X~ae2BldCnY=FuTCKFC>G&$_HmHX%lXG_8htnPi0y~X*BrDGID?W z5^aADAYUg7GL&}(iKg=`G>>Cp%MBdUTPUgGD!43EVzIxv@9|xt@bH_N zY;D0E9FkLy?w@5?-hLf^oW>x!X5-9)bGO69twwZV+XS{*tN|v3oTGR0Z5T3hFE*wg z-~^-G=|x~VR~Rk}e3ByDGeCxZ+>i#oQJa_bj)lCcEyBJrw#9=#9A}@L=dtSDW9f+8 zXtu>@192lyvIQO+Innrm?B1Q(WVU=6-d{18%ocWXYx{SAXP@OT^_hU|V#Aqs`(@$B zWwYqerU_gCnR2qT$3oRSQyi;w4aY6-!=B##$y=9XqGgB?YTYbACEE>f<>qW^$}i`i zzL25jg0sAu!3L%n*NQg=Hp7gWGhxZ}QtYb~1h!9CF|Douwx>-WHeO1Dr6H*#>yZrF zE^=6{WyyWq70n;Wx`ShTS8x?$jBrA$2|7*m#uZ@(=$>$g>)N7+g%b+}dMbtZ=vEBO z&zFZGUFK$Xc_;Xn{fwa@Eml~?ZRDf725_T_hT_FRsW?923O{sIG%Va4%qLBY#)Gd% z@U@a}g-far!qHJqe3b7X%!ml$N3==69#!7VA?zkEI5wJ}zNLUua1-MUMw>yd)^s=( zdX9VjvEXFQ#)TNDq9)W`c$)vV$Pk?!w7^>aCx6{n$b0P+hg1IVIfI3*+>nj;_^mDZ zxNk`|T-4;u4jkUbrDp9gt=u;XXAT_)Rt^Wja`!eq!yvF)7}zb3v$;P0{?OB%LtKl>`uwqERU^Z< zNZjP^Y*PU5S2Lh0I8HGB*<~o5Itlx_rgBx^CvsKu)4_S)V(2^47*#7SK+~Q8d>FG? z_-JY|_dctT3x1ZuM+ePAcRp1(>ux0Gm;Mlbdpe(Ud(1eG?@C}CUB@5yF6X|@HRr>f zFA1|BR|^9lahyhQFb-LVyqS*%^3Hwv%?ErSwJZpBX@BD0R_zqLbDhe|35wA4u`PG? zzzQtv*C5os#`6|_HgJ8!S`18oz+DZ<6{@F8LUHv9&ZVyw$SZmBqqP>p$Lmv3fr^CR z)3?I4H?vXLEacXoI>!mU4S9JNOFpH}n@@;xfxM7IAem}{H3wbLQfVu0w2cwYGw6q5 zUDdq)88g0p<99*s^K@=>bSu|7B7@g>c7)5;l!PxW>#?zLCqymIggW%;nJ5paU?vc@nQO}*U_;-Z{YS>NA8KKDvOF#LivXru&sqSecduL-2Ir3 zeC9+x>&CKi-p_^JL5Fd%QxmT}-ia&*^&#PI89MvUg1JY_K&x*QnkLVrH(s9TVNs1` zks9!9QZHJYIh9F1IKs|4B>;W|{!F!8jn(N55&5RBV5x}pr>0DlE zU*_&?L}N>KGa9pj4L$x8&TlLr@vhI2-tf*>iM2h+ z7vv-)GCwgrFjIR1>b+)@^SRx)uI>`|)%k>QWwa@4iFg1Z#^cyCkIke$Hkyxm%;2Q% zNuix%4cF&Q5`7-jk8Ymbz}@TIN!1!1yzC4w(lxk@4_`3maomJ$$f(9UW3H1@e{(9* zTE|Ybx!@VUHn`yS2}4qWmu=P!L#pB`}$Zqs`Usio%Y~{4{{*-@Ik2I zw+6oJ_G6ct5mv-)rn}QGqNjKfwBFeYYPPw!(b{@S|2mEc#9T$(S2_*x61~i z&N@?zcMFJVO9{iyp643hltE#?VRYqJ5m%%eLw(zxa#@e&vptd?u;Y#`UTlhEq0cqp zcFB(Je76Dj>G3E~C_mJl12&|iXXBXlgWl9JM28d(B+v@^fvDmrO|MTo;%lpo@cHoz z%!X*HE4IUQ2^(QfiWTi{(x&ZhkD){93*6i6#?JQlVuLh(p;F_0%vp7nd7L{+_f2Kl z(-ny%I$|Cf%u%Kf_Os|frw)@|Cdvx;|G>vpAuMN25;8%RsA#V12@VJ`= zL7O6IwBrd-bZZ9VzK5A+!)@>h?%?_tr9hD)$4=^c(xbU?is(sMFE>+Ltlt=j+&3Y&@@wU*6P z??WQ5pI}~d7&{i+3vVfy(nRm!w5jk8Oy0bXibGY&Q*0&8pEe#pugIiv3w)SDHo>qL zrMRwl81uO7M9!gmXz?m-cK%HT7|Tt81LHno_SATRlVv;`9>0=?T^`H6T*;=xE0W3N zYc6#3+Rm5g)PvHbTCy+S1<6;v*hkM(*eB`?7q&EjrC2|}OM-1w@arR#By5KMV>aSx z#n;^IGc}lJ=**JZ1~SV#VbE-r!Iek~NT&aII{By%83Y#@=FH=mc2kUP zm3_;bohas191jZ~#?PX@i>g5PrySkEXipH zm;~g(+mrq<#$1e5HymW@!cAylJ(uZKjAe$qvw4NYE7-K|2iT7s#F9pL2$s1Ih2wpD zk*#?NG@eoABoeOTPQx0;ML1G^G$vhz zpA!*J&8Z96rW3tMV!8!v+*QhSZI+?L=qh$ZS{v=sGtlb%EKXzg0CvFq8GgNI$wFq= zL8Z=ZP+t20n(FUTNNf_+K2R34-CM+BY%lSi6Mb;im|WO>#Svv&AF^v}2hq~=(X`-Y z1NZGlGz_UL;L{&3guW#!p}ucD)K}7x&w`Q6O8qo^i}b~zIDy4)d5Dp>%qXsm z(eZKJ_Zfz}xi(oHs^2<_jx5h&a%%^(>gOw1u%tWf`_ztI%F|h$syS1+UXEQC2U7dD zT>PGD4i5F2EUGe?_!ZLdv3VN|-ZY;~#uR~`ix~ZK=|wN73g!o$gG0L>aWhPpKzO@6 z&5oE&>D_yb*P5%`XO~>CSooStyJSXJoU>7Pnj+Oc-6s$#&E}OlE|l#r1bG8 zWc2RObUGF@1?5uA5_iF?j)|}m7j^SD_dzep5xbIeIE&|IY~{xsiZN_qIT54qT46D2 zF6^Yk&6?EzXEWx!slnPG(s*^44Fo7J5+*jKGPyS^d3V7DE@EX^BYLXVz_I`z zdeNfBtykNP7q+RgL&l?Fysa&^yi|v}+tN61ZZ9&^4k7pE`>=nLwBYsmSWfM|9=VC8 z(8*nrT%ReLINZozI4(vEPJb+x@7qJDy){vke}6{fukWcQD_IcrZD= z3U04bq^U;R5qjHmx%JjiV{-~bbUtx|+84s{%VNB`v=W=;J(u~8$iS{)TFk1k7?17u z!Jx)qm@-J7svoFORn&XQSc{qodAS(8zY>QuUHhOi_|~Tv>p6`pUe^o@~l~6AJ2`bC|PH3QV0U zj)VEZ?CRAg_&a`o)@mvI-;dt~|D*W5hkx(k-~S5yd*{q)RQv5KwvFA27ovr197eNs z8>H!;g)vz_6W}Gqr@Wbe4Sw${J;(L=wHg_0 zXF(vU+k66*IS;{1Or9kV&f-5W?a#E{?Vt&fL9q8=4on|)2kv;~^ViE_nOO8B$eeQn z`%Xyd=5!O`@KJBpciC;s^z&pjtA4rg_GyD;&Q50yG9 z(x`hQnf|3=RChd$KP(#nv-L~xQiUazPrt}p&PWj0I`o5=rui7jThZjNlQ1kmg%YL8 zSk8$?yt$UAw`nGHIX(sC+z-)~eh;v(t}Vq6?Z=$8HMrQFmxa62R8U&A6Q>E1(bcU8 zB4`%$@b5kR`(J^7XWNQFMf3pkP2EF^zOn3{!X~oVH-Pn<)sJR0*fZU%J!GA=gR1*C zVdFp%e&5U@648!h^Eb~V%a2NIyY*()%RY(s((~u;7%AYVFBkaN`{wZ9^wzTkooeRM zp24m@*ukp8uOO}P0@s38sH`Z1{byxyPj@c;unIdHUd?yi6+=~n1+-JS85&j!@N?g2mV7~ue1=)FUj_#;sZI>-q8hM8 zMV%d$ti|y!bE%?2kyO;9guLbnOi97ww=tzK5Y5pqWf+Jgx5I+tr!ZftozqG4;rET6 z0QJi!vi=U~)bJ`AD@}M%FjirfhizDfg(ID}8o@eMr_!A!C-&l`lOS}hD>Po|!`8Ma zAU2->RUIp~*Up|cUGrz2L0YtIu05>DU&UEl#!%C{5O(fBF{@A*K&EBGx?`$g6n`a@ z!pcw5cO`jt^o0ivD5>M}3>#q6ZbFseI+(8A0nZeYNpX)Q=9P1>QvV>VA6XA0M+;fw zs-v`h_G7$VpuS`F7`3|GHdG?lsxxyVkQuw32bJ@_YG&Wp30VX?- zr^0R9VE?OVmLH)>i>@aKE>4S~kzqyn_T5}~E;EQtbWCD75BK2Gae**VavHhV9-_yR zqS%&X&xOaOFblQ4_%hfSqTEMN+H(WSIkBGFV4<+&%@jDSuOysbwi?|nHDS`7Vm^6V z9vuHD#FKMta7?dQcH^Kw#j1S;yI#`fPcfy572VUBAX z9bpMpVuUS3)tIsL=-r%LnKR%aj+q`i%bw|aGd15P>h;Evvz3_D*GTZ`;rI?O!RV<0MJ{ zOc98C_@H;T2HQ1sHSyPt*byfUSUGnxy-BlTy5267q$oSlu=W@XagphoDcZOOhIoy;=R_OssSXYfwj8I$vr z$1Xihl-|Cbye_?f$LrtY_UsfsCPR$AtF31B;)-N4;1qVcedZ6`+)lmEY0-2$CG5xy z<#cvGg5J{N%tJhlIb40ha(~ssuI~w)Y?eDIHZ5nX^#+6Lml-TS#(^#DL11b~$9F8{txKPB+|Sd%mx(h6IcHdur_XZ4#*ogNS3-xza;V-_%9q_%U_*!Z zr{xhV{s4IWDGgU&*@q!fMsFofL>9nKa8I-o$#7ktl4 zvv=9A;nA5FkTkFu2WdXy^Y(9JH}bRK`hwe>uId{UL|H@N=)v7wf+4ORydHB3i}2Z{ zw|uByB83?yU>_T28Z_$*3l}Xx$A%H~TJa#re_T#$6+ht6f)Wgx@KC6>?XBSBc}?2W zwgM_w-bA+YIc85^g$pCY>8kDwZkd-6M)auyL(%SieA`95x9S4i9Ug_(2Ai_T3P;M; zJ;S+PGN26=dic6e5iDK$0X0u9gef0l@#4T)Y~i#w_@%!cJJLQ7R4N7vCx7d}QtuDA z-P(q&DpG}=_0A}7GZK>Aw(G)pOhjldgvWG5}d=LNL!@vI(_;+{bA#9L(0|ZSrW6u;d z+0DXSbiBSCC%k#g)>-bMnJv9oCk4=?6E;*d$hMmg4y9ME0;VO>4&hbzaNZ;@*3h{D zxb8YEb^Xs~3+xTa`@0?+w)iS6j95g5`xo*jKWu@QALCfv{6XFO>L+g2c74I?;geWk z?tDtSszz^h)6n{X4hEMzLx;N>jNYxo9liBwM{YC={@#J>6{XoCaUV!C?v0AhF|;>u z8(Syefp!Xu`PwzBXj)IaSH4}Td_*NATY z-dugQ^mri*9G52;w`Bp#oM=OKBB!`BwOK-sy=!4zY6i?297Hwa@4)P{giWfdEG4HA zue>+ zTXg^pOgcz|mq>&5$LMbDP!hV;Jm8hqh`=VBbZ(Snf3{DfN+__XV;inX5FQsWHA!by zWCHZeUW`e)xY6;Qj;OUbp@)C(;otuf{QD5SM5>m!iZTX)Onl4(+$__Z9lNDY(=J=l z^ykmH>aAnAadm}wRVAJt^qtR4bjGkVx>q26v>YA3_6WTniZZ`ED;%-w3f8?#zn~6Ak@myivS8JLyA%}bt-a_&bXY#l` z5*}SG$M_ej%-T|n1u481+PgPGyn7#xU!sK-_NPfmqWrzdmUuqo1y1tYB%D6ym~cRO zITXAo$NpRj_Fg4UN59U7wzXC4>Lo`;-JDaO6H08ScY7!IA7zD>QN8@-? zQ8s?)1u}Uyi%pk(4Lg*VP<^B-TCEGj_cu?l`YVe-&gr{=Ss9V2nkuDaM^QtZCEWWu ziIh71@bMQ>tlDP7mAt*g*?l>TA0vM7eovmT#7qfVnwiD|&dHzrboRIU-;dwne-yu~O)t0kT@x^F)X?nzef>ZCFZK8Tck#{tOZ=YtgP!_> zze4@Nob%e0|KU8k86suqn==!y5p24`QsI)uHAoA^*l`))SJ$?p?xf+k*L(+FG+#p+ zZiASuEk~<1%?Go6YT$1pf!57uxVw##=w7goGa5RW)%8XwUUvnWM>?`q_Y=uI=QgI# ze!{!Yu!DihC%J15&rNL;`ZDpn58U>pBWb;>GbDDourJPLsF*FmlGp9R>)+2{_^dFH zX|rWwpW<=Tg;=6l(QK5K0khkB6n41|g-cT|qUfa>L3GDpc2Gi;r8pO0W=Iy4tQ*Mn zE7*eiZ!~CV=wj&2&H%hNrHTz_`RB8L;E#j|=DL3_u8?%5cI7)br=6oy%41mAyFfN? zwL50KZQ=Fb$Kn3j*Ffo*Imtb8WU^d~DfTOaFWnqt2s7blo0ggyA05Tk(H460!-Bot zoe2x{E3v<4F5FC9h0og0VW`SSIH#se;%~1&LAZq=de;s#kJ4k$-s&*ZG5v7iK^@At zWX*nz%S93#0#)e{<|vcQyk`}Wfyy+t;?oe8oMA=};!i>Nv!N{NQ4?Mr`VsVT;Ou=3;j5Kn}Y;I)RPY?28a^O*nN(KKSd&!$I$% zxL|oDRv#{-d$%@X!UP#oTe%81d3{1J(~0ckhQ54#X()3Li-+NxonYCo!LlL#kTT4>7o$t-V^5&OJgi@?}a2G^?FJLks*=AB z4qBm@mYd0@-1DUD0$pY#zKT;&&BXT`2hwBlS7t%^2GrG3K)zxQ^!3qMP;0Hjgzs5s zQI-l1jihLgRyZilDDAF~x4;X&z44ccE*QrooRmJg0Tye_qVWOQ=-00vw#I!1jaPk` zpT8bGyK`IcUeurRqPlCK-7Vl~^j?rUA*9dxE7}L)cS~f#|$7* zqJ^KXV6&$xn-kEj4Lo8^{zJWb>JNJK|9=VnfAJ7i)HyE6zU-QBxXtK5fAf4_8si z%2K}Epqa0k@B&wcoQ8|S)2t#l3lx`TGJ^mo_$cf}8;7Z~haZPw<^&sh-*%q=D0LZY z#$DjA%g!K^w;T??Sp=`8-C0!#b#rT**l_(?>@X>3QBK`4@)KY7CNPeTe$|UzFo}hE zAv{d%*7n3^52aS+J|Gxxhud%DGYzYq?662NZ}?yxC3d~%##kCMxk|n6o**;v&fb~i zk}Hbp_ou;zfT7Iu^cE&<6N#~#a=0B^+^D>}2G`(X7{<2VfVpimS!ZKBcjt3&-f*W1 z6-3OZ<;i)}`B075STF%yZw%vvB?Y+M;Xc2`&l<0%Zh_ctZISb}*V!w8w>wD-{%wyq=vB6p<0XB9sRx*f~y4SNFfCU2o2KMDR$ zp9)UZ#)I9Tmc`FptOUi6JlV+F3}(5FTZHOyIv`{wkeBQ z-5ANt=S$#3t#~ZY*n;)iBWQ}{RF<`E0-e|LV{-yeL!Ndf+AlE$^zk(ahAp7c)C|5++6ku%(GgB!0pd<{r5wlupvb#p)f%PdLfP zY7U_@MJg~SFa;gAo&nwK<8b}LY21hf11NW|fHrma`-uK_iM#ew12*Nib6*PD;o7z| zmO{H(b96S8=nla8FTF{6RwdY;ao|?%UI)GXqnTFo3|8T}Uf5fu7aY6d&kb3!4<}A| z3?C&vL$HY%$h}zxL5EuK)W(s_&r}0mo`1ttWh@b#lUayc=WS$iDQ97jq6X8Gaf3*+ zd*HM$S8zGI3{#ssIj1C7(rEq(w~t8jrQSxU7tq9=so2Foa4mu1cHS&%g$GmqX##3i zw)8x>9kaB3z|AUw6E|HT9F@Bh6>c_Tr4|PVwn))M(`o$7z)G&!YZMshT}SKNtN3_# zEBfG@$TnPP=Zz!QU|sO(ZeFtsm(Eqe!oIBnBK9^Uzav5uL)&1b#$mO$_t23qF#;L#W@?pA#X^54U3iSu4-WaoqXWiK48wxB{S)BEcNX5e%qbUCE zL3TergUXD5a7`~4(00>xq_krRHK~8Y?7@d&NtGx&esTc8#R*L8ODagXj$^?yDsgSA z3VA#(f%l#~+{~Iz0fQDnLGnImeHg`(k!gi6Jv=@z|TK z?Ccy#c6Om8o$3|E@WyLSOu>fx^vRDpL`2!4$q)F0I^s-fZ8Ze_dJ6UfV$ml=AFf($ zfGv)i%&5AEW-l_NN9GxrIn$l(n>ZSOmQ+ZGEUx)52dXBc6w^PDIPkd-3 zOP^=zvrIE%Sgf-hqYMjJ(KC5EesLLHHO>L6(F-~KqD;uX;LnY^TPO4!zKAWqkV#*| zlUb^oF3B}-qa)+Gd(O6{;u0Nqu)e;Qpz{K}9x;UNTeTb0cR1iIuSC}S);qM5wxC;a zTfxdRhp+Ca#M$bJ*zaOOcVEHo`Z)guY{jlqu=)HK*qh-+Q?z9$)4c%_HYLHLk!Ly4 ziP21d&U`v%TE!`@*)H(1q*yp+7kz;a9%J>w_US|y}5B24mE(|5D z(%F=JbqP3BhI2YDZs>7?!_Renu{1}9w#Ek2?9@_p+qx0_14L+tjyTCrN}_qE&veiK zXI!;c1KUky&8kH$@V=r27OQ$gscJRfJF=YF>Ws$^9wV5Mlo_*LXH3!~4A}mGj249y zaK^Z@r~aU){@^cBe^8@YO!|wub%Vpkur~)L(({ywtnwsblzexeE%zAs)@2B5$0y;C zN%QH|;#P3HB+fcNmTg%x= zZC0FMP82Qr`4KBtef@A7|-1-%uSMMgS&pPY+Z--)8W-FFllaFnqq zC93^!gVN8rGU=UzX>Y}1(y*__Z`ZSM+3aNIvfp2D)4~MRrzOx*)gy52+dy{rk`2@F zTgKnYtmLnzZ^VP6jp@wiZQPWiv5;)H3RlS|vGG&Sa=&}MDC}4a*Lzjd?xB{<=fE>? zbe=;)4(M_YYh)<-+*M{G^^Vsz9nL-P*4!Js6Qf7Z&1tIO49E{SfD&Qv1($_wxOiq3 zx4GJsH~TJ0-w#-EfnT1pb&@J%F>D2^6}jbRak6l|N~WQ6jT%8eltdWcTk> zG>Ce?PMR;u`R7Kr(dY35j6J;$K2Gn&#z=h;xbM6LjmdHRZJ$+?(e6fd zwL{1?zKK)+zJztOboX(~IZQ6C(qQ2f%AOrnr|{)7p{#pOv)iqytU{MY$1mY$jVgez zd(Lw^oxJJ(R&9C}x{HmZhiJKV7CUshgwmzPp)8(d+vLpIMQKY~m*a>nX}a{A>#t`D z?*DcCZYU!7m-_dabU$jq_+M_|*TcW}@b7;G{=G;4-=qKU(f{}K-|y+a|40A*9{qoh z{=Y~6-_w7;r~m#R{r7wH|2_Ku|9|QK|K<3-`(b_mdi>tQzxVL(e+B-%NB`fW|L@WN z_w?WI>A(L+|NS2Qe~Hq(Q_&v%mEPPQ&@c$%! zHkx$T~l|B*O-gzzZb+ncL zbAf?spGLgt;G_eLaMTFKZL|nG(GCY2ZHR6(@_m-5 zuAV}o(MIS-BVVYhJ^)PqL?#k&Sev37 zjeO1ss?iN@q#12SywM`=q!|s|<%F8}kas+xx_SzUMq8j8jl38O)o6!s(p+tcZZvWV z(L>3N4C$m9ZHSQ_k&_6j*$2uj$Pkf~DN&Llg*e}RZADRv zqCu0pfl5lVG?!FA-S_kRKhJ%?@AJIR{jB%D*8N|9mVM4zXE~qGwTH8v>$>*m+AfZL z#6?7;rA7YBkA;YhNN|Yvs#V@W3qyhy`vops8MtuC;t;Q83xm9UgS>--{Zz~j2QU2fHA{i0 zSIEjBuVv;7SBLlo1k3gquw=Dgz|w^w-hsg@gBGr_mKBH@8M#aSin20jv9GtF&u?#$ zbqH9wIAmte+k0M=6^Ofw_WX^dK*GIG&$HL6)dERJ(GY>u3`Y@T<2Wy`l>q_XULidl z3znT8wA4Gud#SyjSBR`Y+SpYf6C#jx709`({P(sBu&mFr-#DxU3d?@Q?)w|| zvY!x&Ap#{=K|l9?e~0k(4qW)__$?7A{|>-fpt4MI+QmL00@WS_Bga0DqK;yYGLFh2 z0yU#)_M$z%j=7G?Kh0O)`YXCdh(Oa-p!MIPdkOmg4&6pD;BV;Ke?-^$1G?^S=z1Z7 zfv$o--w1~MkznW_2n^zWHQz8qVB{(={$~VU0+Zhn zAc5)M2!{QU!0ZnM=D!hGga|BM1y+AwY}WtnVzd4o4Hnq^Hji8nOV1kl)l?KBz^(%F z_oeWAB!TVkAc$c2ZxAE?0b*o`V3ez1^xr4T+Wa4u!kFIy*b2t}t*hhy*wyiW=&Ids zlQkhkVDBoJ_}`*?2^@ZhK3p*AZ|IZ%h(6^H=u>|~cMK6YxeBKJeWt9x*{~rRe zp4DPyDVY8@2A4lF%=iO?>u&=*Gej`URp9o|7`z0tf6rhgnDaLV_dhbs{R4x?Zw&K7 z1fH&f`K!%c9Hpf3#0IU%o_+9VbNQz`qNT{de|JY*5*p&Y^5+KPV5j{rx5NOykdOfH zpEg8~Zqt(N8Lgk~pW9$2qWACG@N-wOuyn8+@UINe4hb6jll}W??V6s>i~MZ=ihagpBr;+`e1&bccR_ zvMDH<{kSe-yRI<@qQ&cBv78gR@mzrgUZnVqcs zaoF3bn(hB&OY-*=z?qm+lseBL%eNGe#<^m+SoRCQqHGCEmkuIV3RCgp!G_G*)PO#j zXSDjH8*;g1%&xwl#~voiVYh){WUZkz z4oA|2K3vP*k4R_7H2fJzb5s+R3vMnl)suOA_97*a0(leXga>l9+x-CEqHP=!}+= zY>owH<7Tg7)iWZA@Ypdde4KX#2jnC)P3jclNdyxsNR*GQ{UOb_rb$Hf3^c{P(Eep4vmti*F=0UgndVHgH zEZg?(H5N^BB31f3V6@jnHtfqp;yU;y-a1Hw%q!K$GNG>_sNgb*vbhQtQ&Y%#p&DB> zK+ZOcEcHJ*P;9LS>!qEDOh@MBO9_-ki6@^(2qw6nJ`TkJj(abrek8{eWwJI z-y4i~%oz{d^{4ojo+=Y?c|K%@1t)>@ZsvRLvykY-D1f!{+tKAn@8x&bcHEiBOT2v1gPB8}A(`N?*J*+^-E(G334!~p*?AdDD$oMNI^8^Kk^hc23KNSYG#vD6h$wms+pgy%iNPY39+ z;EF9cdAT3yXLB5<&n%}|P78>ahJd{B4Pp9ss!7#Z1x8k%!aJ0A5}oEKZ0RwboLMjd zsx~N-J_|F*p>8$&_0&L;b!afOdtbue^k3oKQ;y?dlMGqayIr(;a?fWWwiyp{Xy>;{ z+`}oF0upy_E-P(JhVifJVXJW#%N}FOf;*0)gxM!ypz{&f|LPu`4mD%8o2*#HyOZS6 z=Ur6wp&$8WrU-M}HHA!DwTKMx>B4HdUHJORYpmFz0UMo9M@=0|d&WNrI-|7Ej35v4 z>f~iQ{JjYqdv6lceLNRSKDtZp{xTF#*b)g^5?O4@bs6?OT^5|PKhTX0%IxFx0H!re zoye{CU=|T+FlA~Dm46>fmZaQf%Z5lXj2B_a!KUO`{~)-@9V5@nh7$czhw zB4l#aR*+YJ1HLy_fX3xu>JZ4YMXjTUM|iDrRKg)fBQa zc{ASNO7U8=D<~7Rn7(Hje!4K3)Vw>&{9_96u=RFihC%_px%db%xYmf%msH#EU*yP@ z$Kqr}@m@ScCllU}(?qA@N0NYRTX0sb5e)lyf<9BX0Qs$_@VWlJ?4*GWNq8qgOkSVI z$L{CAch771ok`*}&XKNIVS>JX?(z?o+1qA>(s(1lTyw0?dP)#OYBClZIAQ>3Ap^zW(*?|}i z@nAG83UB&hgMW;a!!xQAi0A6-bm-IpI7Xt43%fF#X=TK*`Wu5u|Io{91}_TlzD^;B zJmwNJkxn)|{2IPs_Z|}aCP7EbM>13c6I~HgX5(>(3i~Rt7hl9#aqdn zj&eMyHJUu`^Bm=RMZ?9guh4isfu**(GL5G(II#X3z!xX>v7?dhs+D68Z|uTV^}pb8 z&zFMo?oDir|5I4+lZ)MVy`Zs|v+)}T53=2}l^#LBE5EBb83shfi!D{VEF9gt6SJ=K_SgBe*BEn|Cp zb0&E`v>IzU$K#64oqW=f3aBr;j&JT%!^wkGnC8qK9aMtJ#V}9 zAPB~LkIyB-%Q^VvA;j9l;_=&eaU{y)E0iU93Pp79p{t|4h-hp)p4XYjhMN{pW3i>U zWcYJfZQ+ZxHcnt0W%VF;js{wD^#iU^pF=EW?xkjVb%6B!fTig`QlK6z7lacmJOYS+ z!#+5*pc(e*OsZ!+%71Xdr?M&h&`E$0yA1MegCQvHECbKfP-gj9gQfD6-8)@R+jq*b ztro4&Qbb{cdjR-4w_^?c11NJzBIx2F4kqR z2CZRu+8Sj%Iy8rs2`bA@6&>emlNW(@yd{a3;@J}U^WgcykIh;l#`>(ikMyK>Qu{9> z+1KUX@@XKU|)U!WYp<`3XiyFZySax1>9=?C@+BCPh|cuwQf6p}b| zHC|O7hTrUvBjy9bU_n$dEh(QsmdlP|QR26-^QBg-v12rII9bK+8+}IG{lwAgkqO{& zuMBJwyD)iR$ifDMlIh*U@$?TTPz*_EK4`4u0)Os|!ouH_$a<*~`+jFlY?MY36YZ{sjJ^Tn zuzM-K|KT!0+1p4-%Y7_eTSXn}2b0+Hs@#&n-*q(evvx``g69! z=3yEvm%o6kee3YMVfxrp#*7`SYNBsnn6Z-6CgiH96LC{cLy{5Ka9XfCw&^}aOgpwf z@a$bob+bKaY_KQY#U5B>@>#4tBOi}0aw1(9&4`7uGkbFI3(gkrT2c<2`PXoN0#KCT#N%sv6bZ+gM->qbm$xdCAX z5%BRqIPr4mLmaD?fVQ|7sR(gH?aMErJKYQDP)8A>UAdju%?~H)X}YjLQJbC0AZ+~k zC~_{+i-brF!kI^mSku~rX!e{1WM=aXcrUI%YzlYM!AbG3_MRkc-B=1gtQv3wa$#l* z%&F*l7dB8?nMI7x#bO!LSgeLFnK)C1Y_;%(NP#m#Gq2OyoL3Owq{_tAd%iPPiIa-p zSZq9Bl}#+If*0HESa;Mh(&iV-sNyM1>$l@gk>`;2Jq?yKJC%$a(}jcDktlB_=8xzD-hP*g`bSj;zLMUQ!W^zIBMmhZ=&==NvD zbrXQ?y#_Td{fS6J6i!l!0+E}e$j?~8$1P!ImWn-L)SmXwV+H0S+@FgT^aKkm|8=n7 zzX>hJA3lzDpcznhRgrj3No5Lx0Wd`}mYi5JpB-+w46QaDRBi4f+z@;kN4i~r%$lXF ztZE9=>VAlCv?YM!s{Pp2djPu}ugBu2R|5Yim)W$$;(9GlC~28WzMhvRGcE+8hPgXg zjDj*-MlJC(j|}Y6cQh-E;&IlUME;u8Eu4wch@wjwu53=G&m+y5UEMhRZ0Q4-{Y8u& zw7rJU9$L=694i7G7)iGcip3R64?{!YVOT##6})8?*qhL1uy{IvEzZyg8$J z)^afpd!GQ&i!Y#CAFF%zyA`+~e+gNHl|bT$EDPNq4qZWWSRp@)#UyRVVoHImsNo16 zq^iTp%Z39~-o+oKE<)hytI!>zLQa%xBi(NtG^*!;zWaJ8v04to8=+*1em=G@90JG7 zE5Lbg8C%q9M^u#B;q!}PS~`3@v3cMGx2L6nZlfZ3^I!{#a#}_7WFF#4;+Oc%I!Q1n z%N`uQnUFAJD;8;dgl#r=#m6^(!_n?9(aCKmX#Kt21f3JI37=HU^~MZE15^j%Bf2wT zT*4gYHgz$)lc-@u!c}aFOD@tqlY~Nyzw;N~$q?UKX>zYMgk;ahtX6t5srP@0n)X|f zrWb2rlGhLt$DDD?6DRhi-IsllttElHOu3FqG5&fd9G^0mWrOsU(JlE6ob|j7@FX*j znJGttiQ5aZB%Z)S<#=o{Rvzkec~l7HHfMD7z_d>Xo~xrwoGy0Sbnmxi3wP`!=aX%4 z%sEYBSo)ag&%DU1-iu}BO1oIdp26&(PA87t`iYJW-%eJZj>c*w(!5Gp1W{e8!`8WB zeEf|Salfid0;Z)9yio!ds7+?wJ$v`@;GuZhC~X$JWGmYcW{7s$WrM88UUVUG81vg0 z2UDV>vD~*^j5eQ#q^6mWGyD^JEGk0Gesto})BACr$``6~R*&r#T!llXuFQ9xC>;JJ zmA2Mh;d1(#Vy#bG@XM+h?5kQe)(MdzpH?fdOZlp7o~04?vmC_A&nS?{GzofqObyW) zIG#PviRWg;?1l0x8DOoVgM3bwz{9Rx9xNQqMB|Oh2R@8s9${kSailJ} zvSSylZFFY2crdfO3CN(oJehSf2@dzfn#9D6SzNg??GU8)tn;^EXJ(GnjtQyE!xij| zks-&aYU5)wYKf_zG)}pOLEX;*zEn;jeWMoRKA-Qx@W4v2L89ctx4A5(z>$^QYsX@< zPm`quD(q&TJxHY_iA@Nc&Qzv0LW)r^EjyS)G|OArA}qxQPfNlpo^2(m#z8nae=ZeI z-%3wRFNGy{ICe~Df|B^&}e;J|U>N44Q zWgX${*%Hj_xB)Rqb0))fXtLFlGq7TE7^`H1$;zDgp63);ePKJ3zNHB}bN7I}Xdw&O zWXR~2I5xS_jJ(uWC$DB?W1{JZN1sv08-iqUwD%Cm8dJrT`~%2F$x@a(wce`qq%u3Y zRf8?eUxxX8_i$UnKvMI*0109yva~&CxRGy%vdP9gR9-S?5pMlRaHuL7ymJ#xI@X`m zjqt!Z(Jm0PF$_X}#E=6?1x3=Y<&)?Xic!w9uHet3SbkCxgkkksH}} z@&Z?m`vrfp&Ep5OYw#sgSHR0MhD9$Az~&8F%y80OFqm)&tevKEH%3e)eYu59Li{lH zm~a#emRPZ-VdtQ&SRY&6pTVy7UB;H3Ph}FLP7pPtcsNiN&YmBW1lTS)dmYxm-!uUoEnHT>+DIHr8wQAwS|P^SQ_Bv3!BeP!BKgJ26y*>8Qry6J7EwcYZDQAnPFJ#!!}B=uXz|M)>6HC2Z`qBqBef2Hd`?!0je| zc2+)u6Iq|mYThQ13XN^dwI@DfYqttJ%D57rxC7+#n5|56PA-0}v=aN>@CPsPNA$F- z4_r}*fOVH*$>f9a?CRPr%t#>&=mt+VVNDWV-(QSGhH^rKqddfFk7JsqOL+5?cy?lo zIFxIrkqf2wu=KoXB(BSok(Mc_`rQqef;vlxkY|Zjb*ORsPEcm{*ld9v z8QM`uBFk4W4eyIYq}!HN#4jbeqi>K!hT2T(cn(?7u#8n$^vBZ^HCgEfb9T}8D4OZ) z2Covo;G}-*=;kR)8Iiq!+txY}eqkccIW`&3^6`f@6>WScDVf}F?ay32#F-5;WuH9z zvB-H5D0j~+a_Id6V!L7!D+^&{mqRDM9lC<_$^QYbH6}sR%bpl^XCT&_phGU7`vRG= zZP2aRK_$lMk;~WeSZwG@*5G#lyM3913zgU6`Ta3Vkn2zSoiC)>Rc6?-t(dkIXTo2NYCDNy^_ zlI(3VVD}BxN#e(m$az#Wvy?Pusz1h)IdwUB(yIQ@F;0~@eE}qKZZ`Aun~xP-%GuN% zRj>+KF}02}EFxbC!}V-zRrUZ@Wgf%_2e0j!OH=e!Gn%=q34`RjHEiW1f3CVb zT)4Ij3iFK_Z>CSqOf3bqFJoEa-4e_{8cOajsYbpoc`W~&GP!(5o4K0o@g$ioTNc#Tv9{*c`R6U9#P2;DNeHOX!W_dSkG%3Zt{jHeD*9=^=!;K{l zIzWyjo0CsLbIFl9O>+EGC<|R{!@jL4hD*DVZzEG^wEskQ=%xhGO7DJb@2c4Y^dnEMxO=;Dc&X`Eq|xv}hA0|VnoJNE5)KR7r3APB_t zq516QHzQT+1 zZMajP$C0&BEW=9?!zf7>x!Mg@2gbvGqR$=`rO06o5iR^<& z{P92lVWzGmQ!bMn8#W5>s>uJIedf`5pd_0mR6lRl8JvPagN1|u>E1-G&9tf~^rEBN!BH;=quw{)C zS>}d>hB6;vdR+|DUbu&i-B?1<5mR;{-xsHAxsgZxq}k?qxma=PWOmSU1(=Q3BgwM| zu`i_=WOafB+S7D`e&4kbUUsy>^1b1V9z2HZUZ=xkk;%;E+&H%6gf7`!76;!Z77>k; zZg`?!IVg(~(%@!C_CC+=nWL%X)Yun@Uo1_wxE14cJ5MS<6bXPSOc<{lzrGefiGG9*Dq)?R(s_-cGVFRnozk$MM_)SK#~LV)j~i085?EgO1KP{H)rXNY9?hW~JqWg?0q> z9Fq)14%W=QayEXCNR~jCsHQhJX6+zQs<`|Fi#Y zCW8Ky|8DJIXZ5GucaPrudvE^zuaJL#HtI81kbQ}}P$HnKpT}|HIah@fyhYHq_UASq z!=%v0(;v7x@n(K$?JHr3TOM+FFSLofd6;)Em`8E86{n#v4aK+IM;ndoQDlrIN*FhV zuPc*#21eFH(e^`@ht*=M=e4zp3OY%N#+xY>fYlR{5@42wnk?6$ELG(+yJQqQQyoFH(g_Ik#P%@Ct$(%tC z9}uEv9?$r+P06%TNeuO~I>473KN9+6KeM^zF@mmV88%~6H`4si+mUYkM&7dUApf9M zfm`?_m@e3A#NT|;#H$o&ahvw9;yr?2^5>7`@v`Xwbg`HN9eeCOAN^XDQ}WNGE9ZrA zJKDbRLmCN6b*|)CV+{Yk%8{C?Hw!D86iU1N+W8TaH(8&q@u3gPD!G7)uUzNrbgnL{ zgqC>K@k`#sA-#cp=%MJo+$w)Ze)D!0>fe2lYxW$4ZiMaNE4p0k?x``jSb~}GjcLx9d`%c>Djt6HIVrC=ywT&A*FGRZ`< z{ipF7)9>(S;Ji(9n>+7y@FAaZO^bf~e2?2bxBxWH%bcBW+~6liPPZZz_QfOmL4 z92K`I(elC4RHZ1EZ-4&E=CaytKB@5mUn=ylu1nd;A1te}7OzO4;XL9>niEi^0!1`v zKj)v6i4u)Ex#WA#x%X#9k=BjpTyOrpH~;=u$iHX$NwSz(b7{YMqWIErPv}@=ijt;W z$9m(Ekl%nvOh>lk&R@jfT4gQx+Ny(o35N%j9mR%QlhMs!2^L>Op5@2ZT;YeymEppLW3g22RZuhD2D4VT zpt%<(!3qt8o7YapBaLEk{*$IMi-vOaUGEb3MZ5xu%@X)%*#WHeY%JQ>_bokeU>!Vq z-hjm?a$YuJ`*-T3OLq<+`)lAia{vzCFNPMM zsDk?g6p1Erqz;eI!m+(8`Q2w`P_^|Qc-`S^*kWB1{_?t*cBf%D@FWS3QXCB?Re88e zMhxk{8A6v_&O%9ZGjNR2L1a9*5o;I9g6Pl;6n>2`RVZVs1U!nxQA9=-j8Rzi{UFGDIHsaX}WkH@H#)3E^O99PqmK2x3^c}ad8wR zst+I=r|&>eoJA+8I)Y7>iA`Wl4L+4<2P;ooB4LIyurQP7lf^_6P?;nA+JTAiumB|n~B@MO6MWDBp;-per4C_2d zho{1UU^gs-Mx`Y~Z~nbE|Nd9Vzh`aWAm!BwkQ`uuBTy}G8Tg%u;H`QRH0usbuS*l%NI$9)f>G*^8HA1g+k=ibCYc`jJ! zdKjf$Jd9fnnm|E58jcLyj>A&(p?2Uc96xFUeDSl!+^MJZDL;kEygY#>ZM}>J23A`? zH_e0b9zq!Es>a>6a>KV8IhuXahL>tKK_Pug@w5gdc$bqvw;%PSeRVUb@A(0sacB!N zZiz$J4>SCu@jPm-{sgiIqw(AJIWTifBu+{{4AL&CSbJt2>bGehzp*D@A#VMV?`qlt zp|`y7*@w%(a=#xvkxG!$VhKj7#K9nbHWlnQ!D5q>;eu@mjl5S5FjosJT)T?b&5uPU zJ2~|5b~j3GFQ=&75wy8#&Q;%_WCvs!_C$Tc)4%EMIBm@c)QNi==I700M4c}}5 zmR>C|VfcI0b$KuUE;10Dx|+GMuWn+A5)0(yn2WwEs)5#m^SJZXIjrxZ0-uLw;#0B3 z@Y8>HQ(I8>zwf`>{73$KZ~nbE|Nd9Vzelyl(=KTrB&pID`GptIp<+q2Qapuo8?H-7 zEzc`eirP!hofys=)Hx#6=mkT-lx+ohD!GK+XLx7G~#A0I~7Hl^|zFK3{> z39+;^WUFwL{5;R4(akEa!Yj zNeCOOIeq8zyx;m_-sAEEp-ELDy6}7Ptf(%kWF%&%>szS$%N<*oO2lEMGb;9Y_qWI^Hg>>xqWSf^qhS6iQ6-&oy zS@DT!%aPl@qug_y8eV5vE+-|p&!1N+SBrcPQ=h3!qKZS;-!uvjwe%I5taysn8_j^H7hK@# zvBU5!Z2=wS_KMaUMetgBn47i74hEDo&*u$ z>(U|~iYw3Ju@@)dM_0tqUVABa-t`fEKhhs7Sp`B>+Abuv(Facqju8 zp5h^k9dOIOzHrLE=ZxX3dFZI94_AB92bFq@u}fd)fO1z0T+kGNMNTvlZrX~rEZB$L z6Z5%q>=AxES&EblPDHA4l$vj9qr2UP(FdDeqiKVD(b$G1FsrXB`>;zDw{9E*shyfQ zL+>Ex8B>QmQl7##s~;e&jK*#5n!Wk=-u(MtBLBV?H{!kZIVgO~AgX$A82C>20Pb5T ztw~smH->zI1J`!Lf}$08ow6%ku`8WEk?M(ct&w8}UE3i;U4nHfq{7o!j%fL;2DHD8 zOVYW*&8%Gj-ltcfY>cqz5Q@Md~O5`EBKVKfCF6(j``mLxc{t8{{xgHX) zo`E0VUVz8_QBYkq4ZZ8QNJq5P;R(NNM?(j#$2+nof$3ufJhfvu$cza>#g_xIvi1@< zy;2gggU{i#DOpG&)fSJ~y%wLT{Z6Cmjv}#PM(D!pEpYQ{67`#y!@uy2fFVabpxf_0 zvY5()tc@ItyW zDh{uVvB35>EztJXCHSj;I+ihQz&1&jaE9?gx~O|7G)`{p37cBrWP=+>Hm2vyc9uGh zobXtvuJ#y9AG5;>BU`B4?Lp8HdIb3!x!^%N)z~+;+crwOO3{llBfQVc0IKEs!o4mz zdTvY4{tR_suD63$KCJsS|6Vu7OX`2$f9L)q|GhW=-kX2_E9BpM_3yp<_g?*bul~JP z|K6*A@72He>fd|y@4fo>Uj2Ko{{8>E`u9J3ejfct{(Eo!y*K~fd|y@4fo> zUj2Ko{=HZK-m8D_)xY=Z-+T4%z54fF{rmra^zZmT^4|+a=KNZJf9C45yZ`s=@00(r z{{H{F{I>rifA9H&-tz~4h4Tk?vq!=BOJ{KxH-McERAQ_5n9@`| zXm{yLyuBg-zbJPhU4lNKKJGl;JaIcxf3%6Kly5+Ft`D*Gskv}|)+pGu(*c_%R8j4h z1K4U6KiKiq9&eg_6q5ZDNYrB+w0dnYIP9pv+tc(Qv-lN#bib!g_p@UlxqA$r^i=`- z*_o5|&%Q$PNjWlqVmZ8Z4}s__#@I2b4!&l-rFT9*g;qftdNWCjU)(kp@>@USZLyj7 z?e+WIoV~y+lsO{O5{>F}2$>xC99~2jp-GYxSlFy%)HkzP9TVkQtgVv2h=mjlPe*2nFPVNIzCM=?qfd_5?eqn8Tg^ z*SO*3_PpHM1tfRfSuWvl0;G?uM4vCYQfd2pT17u>*K z*RMz0R}ACz-Vz*>G?3(eD*)S}L&%JtT83%12dpFZH-Q^<0f&k%C~LficdCbD>t7-< zf9M7nc;3WjA7?|F0)uSR4dArlBQ@KnO9y#AgkX6`JnWSaik!O9Css>{YD`2WRnq$(5@=Wv5EmFlj$tQ z@CI|VxXOIa=2;KW@8-6{XyP-uNB1os1n2rxlGC@Upu@i(X)71NyCP>cQeT6;92gEm zcqNa{Csw_texJL^2w3Ak?c6 zZibyDjwOm@63XU?Opi8c)ekx~pa!~6_;NpHJcEcl(*p5Zz}ZSvW&9&2dX!n=ef@E?2uO|K9E z3zcJVsi`lCr3pys(P+q#-@}xr0L-?(fkq8)!o%-IuxIZ-;AxRvD0HI<815L!I!DV9 z3-k=bm@pFgaU_vO;qYOuG}c`fgEba3;H=IFaNCoIwIn4-?4mekGcJ+k<1>hH(S z>)s1(v+7^R4?6=T@ z{1J5XV*?twshbzNiQ=@)I#fCW@we_6L0n@BH5k3!MnSNSF78s`jlWvsjQGK@gsZjj z7Td?C4C{+4ZYt0ji`(d>A|K(^BNAw`T^Ox7WI=B{ok|7wOi=&CTXe0`AQ-o1rm&|X zHJ5wh4sRoShBJLM01O&>^tRItk<@MvboHSoG@FXh$yL>SsBOMYTwW%B%*_`02A6Uv z?@fC2N8^xHp$;A_UxOZt>_M~cXL0FqjE)?&7|ryaY-3w8jFuaTQu$r#)a8)8&8q0F zXu2?-Tle8P8W{4OuQ9qy%~&gXbKxPkg>>>hl~1UV@Hrin8qc>yOsCyhIozy*5+u`N z!mk{sgTyr|X}`GBsJSZ3T4z`x>VGWBM*QS9RBLyTyOqu8^aRr~UAt}E$S+;|p&g^? z7;O`NseWFMjWI}Aca--%b&F2QnL*!9HAe-OqtJw&`@<}jM5BqBKCmR#5bZtWh(4Ij zpwlZCb80~K-U6}-Y)22QTd zhi$ep5K)u}Nv|@n(e`|JQ7A{($OofkiY;I&7mv$RZJD8F6KLl5l++cMCGB(0;?(q& z#Odn}&Si)m*^?bf?LYqj7mv-Tr=TYs`>x2mzl_BjY;S-ldkQPJ+gq!6Suxis>TJ=s z&0t;;joq}SlaUHJu*fwEKAH`n!QRh6>F8uU_4*^ekG48{eOHnt=cp2a=mgkeVnBwt z6~o5`WyrVo0=g& zA^;vl9mR5;1~mJo7uvtupIv#n6|Z_@EY#XCl?1waqN#gQK_+7bEYICnW@}Z1rf=Gg z4b`Mr-sMVKCLN2G#T8(Yv#W7T<&B;(I1cMlcjCFZo^Urq28G7mgo(kop`Y6s?8#EG z=)hQrI{px-&LB3n=WdXTWv}V}?}adUM;g3$-iNR3NWxCe`QUt9hM0~$2Df9+mq3 zeD_%$G|z7;q(_;damSv3r~3|KugPO$zjZXAARV?}Q^6T)sv)&Vl(bKo#g&{iCU$!t zqM_@R;cdGp*}JL@4mOPfzqQ+N(xyC?yzd)6P_!G~_e+D=a~dq{7eC^5a5VXHMxISG zo=#@1NCy*3OE%_YHGbGHjSXKj28JpNVS3gOCK31!4c1(aX4ZX!vYj8eenxgM_;V-3 zhkb#fO)~7{;C*bp>w7rYltmon4}r@ZReV)!E#G?8j!aaDgbUDu28r*77qcUndt((& zP<+itlxUI9fxe)Brk!rN{sG3%OJ-m9e5KxHN8s35QF3z*hd*qHhb)UCXcl#1CKjn= zVstdC>2M~AbFOp#QIt;Yz5uz_kv(;s)0xV6L!u`7jgE3Z4ck8?| z4(E)?U8y)C^?5qGdeaC060#L1yb*)(1!H0Q@g%Zv-hSA>q7;uwieMu*K8E>$d+=sU zKNxsk8|=H1z_E4)d6RVzZ{D__TacB4ao^#1@lF%AZuD22TyYa}w^_1tD;w}0p&PN; zugEeD=P|{VMkM=}`>?L)G|1jCVJ}XsM{DRDVq~I${kj`q@!4WF_VOO`h2+uR`un~0 z_x}p@_p?)i=+d{xXtkjtEjRdudwXp!)m@)&i_ zmxy4~x&7hVZe85cyq!0$o=)Wo_i_5)9q7az)ieX5>77){ONAapa{U-Oe6R$ykGw^X zPx#E;RJXK6Hrt5BTt#}kH9h;J4RxIm#VdVs`DdkZJPC|ON1lt( z7mB{Lcz~WwKwJnaQrd=Q81&RDxub{cf)}B>I0vCv+y`29Bb0iYz2^?gF2a4)B9OzE z4lbbUzVLy0m5r#uBXq_r3+cHnMYjsM=3haznMExpodmY z-9q;{Z9{r(H~A5>)sQ-V!b@+ELr((QkxoYpz5B6-U!iy%1@054pH3X5vF9z3-Pj!3 zSMdvt+^WynQz@*L(?}akb5WIA6TiUr4fod8v@B??1o|=Xm`(L;6I5(+i{AYrO~=Av zZr)lIbS$@)9)A0VPk6b7=ZEN`IcFI%Ut)wZ3bs+TH^|1I!x^p6RKs`V-}5-UmebWL zKz25HarHhSAOi?MUx9` z5O?MX5;KzrrvQKYDm!4q0pw z>>cE{IKXfH;*cKe7Wyr9uv7fw4FOi1r4@&)FlRFy*&r)RTf`Ad&I%!9Yh`0=g?nBh z#LD{DapTgZoQ--c{MlR_MSmJAA}#&%QA7k!Y|x7AIY9BVS^W0WKRgD9c&}RJ9kehc zXt7`5!X8_eEDrHnwlK)sH^@8q=g^tW3R>-L@zZGYRsI2g1dkrwrX|?}_p@341FVRM zvV_RLJ0wd&L%df8E%griBl`E#+BN_8=!e|$M2!5|IbWG zGa5L|hnl>RLmSoT23OLI2IeGGqmcs})o6!M(u_7mHyU|S6ROb+siYYVJU0c^)wqqG zLZZ>YD@{?2Mjl>8b+t$uX|A?FHyXL*M>YCDDQQMqq8p7|grnw}hE}4DhE^o#W+NB8 zwkUaBsEuf|u~!KJ-fV0-P$T7-5n&<#6@$?ySRn#CfEI!PP#-&pZs-A#3=E7w9N^8$ N24V{UAxJ$$EdcsKRY(8; From 54fecc622f2198124dbe9f1841cc414973f3b672 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 3 Feb 2026 22:08:03 +0000 Subject: [PATCH 18/51] incorporate review comments --- fme/ace/registry/stochastic_sfno.py | 2 +- fme/core/models/conditional_sfno/s2convolutions.py | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/fme/ace/registry/stochastic_sfno.py b/fme/ace/registry/stochastic_sfno.py index 81236106d..1d48be83f 100644 --- a/fme/ace/registry/stochastic_sfno.py +++ b/fme/ace/registry/stochastic_sfno.py @@ -98,7 +98,7 @@ class NoiseConditionedSFNOBuilder(ModuleConfig): spectral_transform: Type of spherical transform to use. Kept for backwards compatibility. filter_type: Type of filter to use. - operator_type: Type of operator to use. + operator_type: Type of operator to use. Only "dhconv" is supported. residual_filter_factor: Factor by which to downsample the residual. embed_dim: Dimension of the embedding. noise_embed_dim: Dimension of the noise embedding. diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index ec28d168d..4e3f06438 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -172,10 +172,7 @@ def __init__( assert factorization == "ComplexDense" self.weight = nn.Parameter(scale * torch.randn(*weight_shape, 2)) - if self.operator_type == "dhconv": - self.weight.is_shared_mp = ["matmul", "w"] - else: - self.weight.is_shared_mp = ["matmul"] + self.weight.is_shared_mp = ["matmul", "w"] if lora_rank > 0: if self.weight.shape != ( From f43e8afd62f312202db6cba0ff42fb32c2135285 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Wed, 4 Feb 2026 19:58:33 +0000 Subject: [PATCH 19/51] remove overwrite of conv2d weights --- fme/core/models/conditional_sfno/s2convolutions.py | 5 ----- fme/core/models/conditional_sfno/sfnonet.py | 12 ------------ 2 files changed, 17 deletions(-) diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index 3e956eac8..d16c5408d 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -128,11 +128,6 @@ def __init__( "Currently only in_channels == out_channels is supported." ) - if in_channels != out_channels: - raise NotImplementedError( - "Currently only in_channels == out_channels is supported." - ) - self.forward_transform = forward_transform self.inverse_transform = inverse_transform diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index 04378d0ea..85b13c548 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -826,7 +826,6 @@ def __init__( if self.pos_embed: self.pos_embed = get_pos_embed() - self.apply(self._init_weights) if normalize_big_skip: self.norm_big_skip = ConditionalLayerNorm( in_chans, @@ -838,17 +837,6 @@ def __init__( else: self.norm_big_skip = NoLayerNorm() - def _init_weights(self, m): - """Helper routine for weight initialization""" - if isinstance(m, nn.Linear) or isinstance(m, nn.Conv2d): - trunc_normal_(m.weight, std=0.02) - if m.bias is not None: - nn.init.constant_(m.bias, 0) - if isinstance(m, LoRAConv2d): - m.reset_lora_parameters() - elif isinstance(m, ConditionalLayerNorm): - m.reset_parameters() - @torch.jit.ignore def no_weight_decay(self): # pragma: no cover """Helper""" From cbbc0b677930e59ce7f14ade734d4266fcba87d8 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Wed, 4 Feb 2026 20:01:00 +0000 Subject: [PATCH 20/51] use varname makani is using --- fme/core/models/conditional_sfno/s2convolutions.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index d16c5408d..9d3960b56 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -134,11 +134,6 @@ def __init__( self.modes_lat = self.inverse_transform.lmax self.modes_lon = self.inverse_transform.mmax - if scale == "auto": - scale = math.sqrt(1 / (in_channels)) * torch.ones(self.modes_lat, 2) - # seemingly the first weight is not really complex, so we need to account for that - scale[0, :] *= math.sqrt(2.0) - self._round_trip_residual = filter_residual or ( (self.forward_transform.nlat != self.inverse_transform.nlat) or (self.forward_transform.nlon != self.inverse_transform.nlon) @@ -171,6 +166,11 @@ def __init__( self.lpad = 0 self.mpad = 0 + if scale == "auto": + scale = math.sqrt(1 / (in_channels)) * torch.ones(self.modes_lat_local, 2) + # seemingly the first weight is not really complex, so we need to account for that + scale[0, :] *= math.sqrt(2.0) + weight_shape = [in_channels, out_channels, self.modes_lat_local] assert factorization == "ComplexDense" From 965765e64891dc8c87cf789540281f6fce4082a9 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Wed, 4 Feb 2026 20:14:27 +0000 Subject: [PATCH 21/51] update regression target --- .../test_sfnonet_output_is_unchanged.pt | Bin 9624 -> 9624 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/fme/core/models/conditional_sfno/testdata/test_sfnonet_output_is_unchanged.pt b/fme/core/models/conditional_sfno/testdata/test_sfnonet_output_is_unchanged.pt index c3e6f7897a226acbfe6ba1116080aaf445a57610..95ea10fc68914a89ffcabd8475309b91785230a5 100644 GIT binary patch delta 7911 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 From 8c1846591a1994663d64fb78b7a67ec768af01b9 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Wed, 4 Feb 2026 20:31:22 +0000 Subject: [PATCH 22/51] update diffusion regression targets --- .../testdata/stepper_predict_regression.pt | Bin 13821 -> 13821 bytes .../testdata/stepper_step_regression.pt | Bin 5925 -> 5925 bytes ...stepper_train_on_batch_regression-False.pt | Bin 36543 -> 36543 bytes .../stepper_train_on_batch_regression-True.pt | Bin 36525 -> 36525 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/fme/diffusion/testdata/stepper_predict_regression.pt b/fme/diffusion/testdata/stepper_predict_regression.pt index 2d465efb4802e7c0eccb3396eb6030b7b4325354..bd7f669fac86d46f8041d57f7f1b418bbde48478 100644 GIT binary patch delta 9901 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 NC;7km-A-KP{{fDdc0&LF diff --git a/fme/diffusion/testdata/stepper_step_regression.pt b/fme/diffusion/testdata/stepper_step_regression.pt index 8166a37f9f8d6672425d8ddaddde09f062005aee..f880ce4a0599e98ae988feec175fcccbf64f1112 100644 GIT binary patch delta 4007 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 BgO30J diff --git a/fme/diffusion/testdata/stepper_train_on_batch_regression-False.pt b/fme/diffusion/testdata/stepper_train_on_batch_regression-False.pt index 8a36b853aee367d23918ca7d8ed19eced8e2d414..18448e32577d93eb6b3a25f82b7fe6171841317a 100644 GIT binary patch literal 36543 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 literal 36543 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 diff --git a/fme/diffusion/testdata/stepper_train_on_batch_regression-True.pt b/fme/diffusion/testdata/stepper_train_on_batch_regression-True.pt index c3a8721e19bbcaf7b893df0233784d0bcde3ff3a..bfa01273e3af52912ee304ee737aa95b9c158b67 100644 GIT binary patch literal 36525 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 Date: Wed, 4 Feb 2026 20:59:12 +0000 Subject: [PATCH 23/51] remove second copy of _contract_dhconv --- .../models/conditional_sfno/s2convolutions.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index 0adbea5aa..08b7985db 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -74,22 +74,6 @@ def _contract_dhconv( return torch.einsum("bgixy,giox->bgoxy", xc, wc) -@torch.jit.script -def _contract_dhconv( - xc: torch.Tensor, weight: torch.Tensor -) -> torch.Tensor: # pragma: no cover - """ - Performs a complex Driscoll-Healy style convolution operation between two tensors - 'a' and 'b'. - - Args: - xc: Complex input tensor of shape (batch_size, in_channels, nlat, nlon) - weight: Weight tensor of shape (in_channels, out_channels, nlat, 2) - """ - wc = torch.view_as_complex(weight) - return torch.einsum("bixy,iox->boxy", xc, wc) - - class SpectralConvS2(nn.Module): """ Spectral Convolution according to Driscoll & Healy. Designed for convolutions on From aa03c6df5a2b3b2c6989a4c60b368c4696c3f243 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Fri, 6 Feb 2026 19:17:01 +0000 Subject: [PATCH 24/51] add unit test that dhconv is faster when using groups --- .../models/conditional_sfno/test_sfnonet.py | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/fme/core/models/conditional_sfno/test_sfnonet.py b/fme/core/models/conditional_sfno/test_sfnonet.py index 6f8d3bb80..87b58111f 100644 --- a/fme/core/models/conditional_sfno/test_sfnonet.py +++ b/fme/core/models/conditional_sfno/test_sfnonet.py @@ -1,3 +1,4 @@ +import dataclasses import os from types import SimpleNamespace @@ -9,11 +10,91 @@ from fme.core.testing.regression import validate_tensor from .layers import Context, ContextConfig +from .s2convolutions import _contract_dhconv from .sfnonet import get_lat_lon_sfnonet DIR = os.path.abspath(os.path.dirname(__file__)) +@dataclasses.dataclass +class BenchmarkResult: + ms_total: float + ms_per: float + max_alloc: int + max_reserved: int + y_shape: tuple + y_dtype: torch.dtype + + +def benchmark(fn, iters=10, warmup=1) -> BenchmarkResult: + for _ in range(warmup): + fn() + torch.cuda.synchronize() + + torch.cuda.reset_peak_memory_stats() + starter = torch.cuda.Event(enable_timing=True) + ender = torch.cuda.Event(enable_timing=True) + + starter.record() + for _ in range(iters): + y = fn() + ender.record() + torch.cuda.synchronize() + + ms = starter.elapsed_time(ender) + return BenchmarkResult( + ms_total=ms, + ms_per=ms / iters, + max_alloc=torch.cuda.max_memory_allocated(), + max_reserved=torch.cuda.max_memory_reserved(), + y_shape=tuple(y.shape), + y_dtype=y.dtype, + ) + + +@pytest.mark.skipif( + get_device().type != "cuda", + reason=( + "This test is only relevant for CUDA since " + "it's testing speed of DHConv groups on GPU." + ), +) # noqa: E501 +def test_contract_dhconv_groups_are_faster(): + B = 2 + C = 512 + H = 180 + L = 360 + G = 8 + x = torch.randn(B, 1, C, H, L, dtype=torch.complex64, device=get_device()) + w = torch.randn(1, C, C, H, 2, dtype=torch.float32, device=get_device()) + + def contract_ungrouped(): + return _contract_dhconv(x, w) + + ungrouped_result = benchmark(contract_ungrouped) + + x_grouped = x.reshape(B, G, C // G, H, L) + w_grouped = torch.randn( + G, C // G, C // G, H, 2, dtype=torch.float32, device=get_device() + ) + + def contract_grouped(): + return _contract_dhconv(x_grouped, w_grouped) + + grouped_result = benchmark(contract_grouped) + + assert grouped_result.ms_per < 2 / G * ungrouped_result.ms_per, ( + "Expected grouped DHConv to be faster than ungrouped, but got " + f"{grouped_result.ms_per:.6f} seconds for grouped and " + f"{ungrouped_result.ms_per:.6f} seconds for ungrouped." + ) + assert grouped_result.max_alloc < ungrouped_result.max_alloc, ( + "Expected grouped DHConv to use less memory than ungrouped, but got " + f"{grouped_result.max_alloc/1024/1024:.2f} MB for grouped and " + f"{ungrouped_result.max_alloc/1024/1024:.2f} MB for ungrouped." + ) + + @pytest.mark.parametrize( "conditional_embed_dim_scalar, conditional_embed_dim_labels, conditional_embed_dim_noise, residual_filter_factor", # noqa: E501 [ From 460198fc747dd8d4db4dc7cfeefffeb06098b714 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Fri, 6 Feb 2026 19:20:55 +0000 Subject: [PATCH 25/51] move test to correct file --- .../conditional_sfno/test_s2convolutions.py | 85 +++++++++++++++++++ .../models/conditional_sfno/test_sfnonet.py | 81 ------------------ 2 files changed, 85 insertions(+), 81 deletions(-) diff --git a/fme/core/models/conditional_sfno/test_s2convolutions.py b/fme/core/models/conditional_sfno/test_s2convolutions.py index be102d628..cc6fcd1d6 100644 --- a/fme/core/models/conditional_sfno/test_s2convolutions.py +++ b/fme/core/models/conditional_sfno/test_s2convolutions.py @@ -1,8 +1,93 @@ +import dataclasses + +import pytest import torch +from fme.core.device import get_device from fme.core.gridded_ops import LatLonOperations from fme.core.models.conditional_sfno.s2convolutions import SpectralConvS2 +from .s2convolutions import _contract_dhconv + + +@dataclasses.dataclass +class BenchmarkResult: + ms_total: float + ms_per: float + max_alloc: int + max_reserved: int + y_shape: tuple + y_dtype: torch.dtype + + +def benchmark(fn, iters=10, warmup=1) -> BenchmarkResult: + for _ in range(warmup): + fn() + torch.cuda.synchronize() + + torch.cuda.reset_peak_memory_stats() + starter = torch.cuda.Event(enable_timing=True) + ender = torch.cuda.Event(enable_timing=True) + + starter.record() + for _ in range(iters): + y = fn() + ender.record() + torch.cuda.synchronize() + + ms = starter.elapsed_time(ender) + return BenchmarkResult( + ms_total=ms, + ms_per=ms / iters, + max_alloc=torch.cuda.max_memory_allocated(), + max_reserved=torch.cuda.max_memory_reserved(), + y_shape=tuple(y.shape), + y_dtype=y.dtype, + ) + + +@pytest.mark.skipif( + get_device().type != "cuda", + reason=( + "This test is only relevant for CUDA since " + "it's testing speed of DHConv groups on GPU." + ), +) # noqa: E501 +def test_contract_dhconv_groups_are_faster(): + B = 2 + C = 512 + H = 180 + L = 360 + G = 8 + x = torch.randn(B, 1, C, H, L, dtype=torch.complex64, device=get_device()) + w = torch.randn(1, C, C, H, 2, dtype=torch.float32, device=get_device()) + + def contract_ungrouped(): + return _contract_dhconv(x, w) + + ungrouped_result = benchmark(contract_ungrouped) + + x_grouped = x.reshape(B, G, C // G, H, L) + w_grouped = torch.randn( + G, C // G, C // G, H, 2, dtype=torch.float32, device=get_device() + ) + + def contract_grouped(): + return _contract_dhconv(x_grouped, w_grouped) + + grouped_result = benchmark(contract_grouped) + + assert grouped_result.ms_per < 2 / G * ungrouped_result.ms_per, ( + "Expected grouped DHConv to be faster than ungrouped, but got " + f"{grouped_result.ms_per:.6f} seconds for grouped and " + f"{ungrouped_result.ms_per:.6f} seconds for ungrouped." + ) + assert grouped_result.max_alloc < ungrouped_result.max_alloc, ( + "Expected grouped DHConv to use less memory than ungrouped, but got " + f"{grouped_result.max_alloc/1024/1024:.2f} MB for grouped and " + f"{ungrouped_result.max_alloc/1024/1024:.2f} MB for ungrouped." + ) + def test_spectral_conv_s2_lora(): in_channels = 8 diff --git a/fme/core/models/conditional_sfno/test_sfnonet.py b/fme/core/models/conditional_sfno/test_sfnonet.py index afe586f2c..3230d7c87 100644 --- a/fme/core/models/conditional_sfno/test_sfnonet.py +++ b/fme/core/models/conditional_sfno/test_sfnonet.py @@ -1,4 +1,3 @@ -import dataclasses import os from types import SimpleNamespace @@ -10,91 +9,11 @@ from fme.core.testing.regression import validate_tensor from .layers import Context, ContextConfig -from .s2convolutions import _contract_dhconv from .sfnonet import get_lat_lon_sfnonet DIR = os.path.abspath(os.path.dirname(__file__)) -@dataclasses.dataclass -class BenchmarkResult: - ms_total: float - ms_per: float - max_alloc: int - max_reserved: int - y_shape: tuple - y_dtype: torch.dtype - - -def benchmark(fn, iters=10, warmup=1) -> BenchmarkResult: - for _ in range(warmup): - fn() - torch.cuda.synchronize() - - torch.cuda.reset_peak_memory_stats() - starter = torch.cuda.Event(enable_timing=True) - ender = torch.cuda.Event(enable_timing=True) - - starter.record() - for _ in range(iters): - y = fn() - ender.record() - torch.cuda.synchronize() - - ms = starter.elapsed_time(ender) - return BenchmarkResult( - ms_total=ms, - ms_per=ms / iters, - max_alloc=torch.cuda.max_memory_allocated(), - max_reserved=torch.cuda.max_memory_reserved(), - y_shape=tuple(y.shape), - y_dtype=y.dtype, - ) - - -@pytest.mark.skipif( - get_device().type != "cuda", - reason=( - "This test is only relevant for CUDA since " - "it's testing speed of DHConv groups on GPU." - ), -) # noqa: E501 -def test_contract_dhconv_groups_are_faster(): - B = 2 - C = 512 - H = 180 - L = 360 - G = 8 - x = torch.randn(B, 1, C, H, L, dtype=torch.complex64, device=get_device()) - w = torch.randn(1, C, C, H, 2, dtype=torch.float32, device=get_device()) - - def contract_ungrouped(): - return _contract_dhconv(x, w) - - ungrouped_result = benchmark(contract_ungrouped) - - x_grouped = x.reshape(B, G, C // G, H, L) - w_grouped = torch.randn( - G, C // G, C // G, H, 2, dtype=torch.float32, device=get_device() - ) - - def contract_grouped(): - return _contract_dhconv(x_grouped, w_grouped) - - grouped_result = benchmark(contract_grouped) - - assert grouped_result.ms_per < 2 / G * ungrouped_result.ms_per, ( - "Expected grouped DHConv to be faster than ungrouped, but got " - f"{grouped_result.ms_per:.6f} seconds for grouped and " - f"{ungrouped_result.ms_per:.6f} seconds for ungrouped." - ) - assert grouped_result.max_alloc < ungrouped_result.max_alloc, ( - "Expected grouped DHConv to use less memory than ungrouped, but got " - f"{grouped_result.max_alloc/1024/1024:.2f} MB for grouped and " - f"{ungrouped_result.max_alloc/1024/1024:.2f} MB for ungrouped." - ) - - @pytest.mark.parametrize( "conditional_embed_dim_scalar, conditional_embed_dim_labels, " "conditional_embed_dim_noise, " From 0bc701af46cd1a679dac36a09db24134ee01c9d7 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Fri, 6 Feb 2026 20:48:36 +0000 Subject: [PATCH 26/51] add test with profiling for sfno --- fme/core/models/conditional_sfno/layers.py | 104 +++++---- .../models/conditional_sfno/s2convolutions.py | 55 +++-- fme/core/models/conditional_sfno/sfnonet.py | 76 +++--- fme/core/models/conditional_sfno/sht.py | 220 ++++++++++++++++++ .../models/conditional_sfno/test_sfnonet.py | 132 ++++++++++- fme/core/models/conditional_sfno/timer.py | 40 ++++ 6 files changed, 530 insertions(+), 97 deletions(-) create mode 100644 fme/core/models/conditional_sfno/sht.py create mode 100644 fme/core/models/conditional_sfno/timer.py diff --git a/fme/core/models/conditional_sfno/layers.py b/fme/core/models/conditional_sfno/layers.py index 47648d781..2fe7e71d7 100644 --- a/fme/core/models/conditional_sfno/layers.py +++ b/fme/core/models/conditional_sfno/layers.py @@ -25,6 +25,7 @@ from torch.utils.checkpoint import checkpoint from fme.core.models.conditional_sfno.lora import LoRAConv2d +from fme.core.models.conditional_sfno.timer import CUDATimer, NullTimer from .activations import ComplexReLU from .contractions import compl_mul2d_fwd, compl_muladd2d_fwd @@ -223,7 +224,12 @@ def reset_parameters(self): torch.nn.init.constant_(self.W_bias_pos.weight, 0.0) # no bias on 2d layers as it is already handled in the non-2d layers - def forward(self, x: torch.Tensor, context: Context) -> torch.Tensor: + def forward( + self, + x: torch.Tensor, + context: Context, + timer: CUDATimer | NullTimer | None = None, + ) -> torch.Tensor: """ Conditional Layer Normalization @@ -238,56 +244,64 @@ def forward(self, x: torch.Tensor, context: Context) -> torch.Tensor: Returns: The normalized tensor, of shape (batch_size, channels, height, width). """ + if timer is None: + timer = NullTimer() if context.labels is None and ( self.W_scale_labels is not None or self.W_bias_labels is not None ): raise ValueError("labels must be provided") - if self.W_scale is not None: - if context.embedding_scalar is None: - raise ValueError("embedding_scalar must be provided") - scale: torch.Tensor = ( - self.W_scale(context.embedding_scalar).unsqueeze(-1).unsqueeze(-1) - ) - else: - scale = torch.ones( - list(x.shape[:-2]) + [1, 1], device=x.device, dtype=x.dtype - ) + with timer.context("layer_norm_compute_scaling_and_bias"): + if self.W_scale is not None: + if context.embedding_scalar is None: + raise ValueError("embedding_scalar must be provided") + scale: torch.Tensor = ( + self.W_scale(context.embedding_scalar).unsqueeze(-1).unsqueeze(-1) + ) + else: + scale = torch.ones( + list(x.shape[:-2]) + [1, 1], device=x.device, dtype=x.dtype + ) - if self.W_scale_2d is not None: - if context.noise is None: - raise ValueError("embedding_2d must be provided") - scale = scale + self.W_scale_2d(context.noise) - if self.W_bias is not None: - if context.embedding_scalar is None: - raise ValueError("embedding_scalar must be provided") - bias: torch.Tensor = ( - self.W_bias(context.embedding_scalar).unsqueeze(-1).unsqueeze(-1) - ) - else: - bias = torch.zeros( - list(x.shape[:-2]) + [1, 1], device=x.device, dtype=x.dtype - ) + if self.W_scale_2d is not None: + if context.noise is None: + raise ValueError("embedding_2d must be provided") + scale = scale + self.W_scale_2d(context.noise) + if self.W_bias is not None: + if context.embedding_scalar is None: + raise ValueError("embedding_scalar must be provided") + bias: torch.Tensor = ( + self.W_bias(context.embedding_scalar).unsqueeze(-1).unsqueeze(-1) + ) + else: + bias = torch.zeros( + list(x.shape[:-2]) + [1, 1], device=x.device, dtype=x.dtype + ) - if self.W_scale_labels is not None: - scale = scale + self.W_scale_labels(context.labels).unsqueeze(-1).unsqueeze( - -1 - ) - if self.W_bias_labels is not None: - bias = bias + self.W_bias_labels(context.labels).unsqueeze(-1).unsqueeze(-1) - if self.W_bias_2d is not None: - if context.noise is None: - raise ValueError("embedding_2d must be provided") - bias = bias + self.W_bias_2d(context.noise) - if self.W_scale_pos is not None: - if context.embedding_pos is None: - raise ValueError("embedding_pos must be provided") - scale = scale + self.W_scale_pos(context.embedding_pos) - if self.W_bias_pos is not None: - if context.embedding_pos is None: - raise ValueError("embedding_pos must be provided") - bias = bias + self.W_bias_pos(context.embedding_pos) - x_norm: torch.Tensor = self.norm(x) - return x_norm * scale + bias + if self.W_scale_labels is not None: + scale = scale + self.W_scale_labels(context.labels).unsqueeze( + -1 + ).unsqueeze(-1) + if self.W_bias_labels is not None: + bias = bias + self.W_bias_labels(context.labels).unsqueeze( + -1 + ).unsqueeze(-1) + if self.W_bias_2d is not None: + if context.noise is None: + raise ValueError("embedding_2d must be provided") + bias = bias + self.W_bias_2d(context.noise) + if self.W_scale_pos is not None: + if context.embedding_pos is None: + raise ValueError("embedding_pos must be provided") + scale = scale + self.W_scale_pos(context.embedding_pos) + if self.W_bias_pos is not None: + if context.embedding_pos is None: + raise ValueError("embedding_pos must be provided") + bias = bias + self.W_bias_pos(context.embedding_pos) + with timer.context("layer_norm_normalize"): + x_norm: torch.Tensor = self.norm(x) + with timer.context("layer_norm_apply_scaling_and_bias"): + return_value = x_norm * scale + bias + return return_value @torch.jit.script diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index 81ea83fc3..f0e6c204b 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -22,6 +22,8 @@ import torch_harmonics as th import torch_harmonics.distributed as thd +from fme.core.models.conditional_sfno.timer import CUDATimer, NullTimer + # import convenience functions for factorized tensors from .activations import ComplexReLU @@ -218,45 +220,56 @@ def __init__( self.bias = nn.Parameter(torch.zeros(1, out_channels, 1, 1)) self.out_channels = out_channels - def forward(self, x): # pragma: no cover + def forward( + self, x, timer: CUDATimer | NullTimer | None = None + ): # pragma: no cover + if timer is None: + timer = NullTimer() dtype = x.dtype residual = x x = x.float() with torch.amp.autocast("cuda", enabled=False): - x = self.forward_transform(x.float()) + with timer.context("forward_transform"): + x = self.forward_transform(x.float()) if self._round_trip_residual: - x = x.contiguous() - residual = self.inverse_transform(x) - residual = residual.to(dtype) + with timer.context("round_trip_residual"): + x = x.contiguous() + residual = self.inverse_transform(x) + residual = residual.to(dtype) B, C, H, W = x.shape assert C % self.num_groups == 0 - x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) + with timer.context("group_reshape"): + x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) if self.lora_A is not None and self.lora_B is not None: - lora_update = _contract_lora( - self.lora_A, - self.lora_B, - x[..., : self.modes_lat_local, : self.modes_lon_local], - ) + with timer.context("lora_update"): + lora_update = _contract_lora( + self.lora_A, + self.lora_B, + x[..., : self.modes_lat_local, : self.modes_lon_local], + ) else: lora_update = 0.0 - xp = torch.zeros_like(x) - xp[..., : self.modes_lat_local, : self.modes_lon_local] = _contract_dhconv( - x[..., : self.modes_lat_local, : self.modes_lon_local], - self.weight, - ) - xp = xp + self.lora_scaling * lora_update - xp = xp.reshape(B, self.out_channels, H, W) - x = xp.contiguous() + with timer.context("dhconv"): + xp = torch.zeros_like(x) + xp[..., : self.modes_lat_local, : self.modes_lon_local] = _contract_dhconv( + x[..., : self.modes_lat_local, : self.modes_lon_local], + self.weight, + ) + xp = xp + self.lora_scaling * lora_update + xp = xp.reshape(B, self.out_channels, H, W) + x = xp.contiguous() with torch.amp.autocast("cuda", enabled=False): - x = self.inverse_transform(x) + with timer.context("inverse_transform"): + x = self.inverse_transform(x) if hasattr(self, "bias"): - x = x + self.bias + with timer.context("add_bias"): + x = x + self.bias x = x.type(dtype) diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index 61d35ca27..e3df29d18 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -24,6 +24,8 @@ import torch_harmonics as th from torch.utils.checkpoint import checkpoint +from fme.core.models.conditional_sfno.timer import CUDATimer, NullTimer + from .initialization import trunc_normal_ # wrap fft, to unify interface to spectral transforms @@ -153,8 +155,8 @@ def __init__( else: raise (NotImplementedError) - def forward(self, x): - return self.filter(x) + def forward(self, x, timer: CUDATimer | None = None): + return self.filter(x, timer=timer) class FourierNeuralOperatorBlock(nn.Module): @@ -295,44 +297,58 @@ def __init__( lora_alpha=lora_alpha, ) - def forward(self, x, context_embedding): - x_norm = torch.zeros_like(x) - x_norm[..., : self.input_shape_loc[0], : self.input_shape_loc[1]] = self.norm0( - x[..., : self.input_shape_loc[0], : self.input_shape_loc[1]], - context_embedding, - ) - x, residual = self.filter(x_norm) + def forward(self, x, context_embedding, timer: CUDATimer | NullTimer | None = None): + if timer is None: + timer = NullTimer() + with timer.context("norm0"): + x_norm = torch.zeros_like(x) + x_norm[..., : self.input_shape_loc[0], : self.input_shape_loc[1]] = ( + self.norm0( + x[..., : self.input_shape_loc[0], : self.input_shape_loc[1]], + context_embedding, + timer=timer, + ) + ) + with timer.context("filter"): + x, residual = self.filter(x_norm, timer=timer) if hasattr(self, "inner_skip"): - if self.concat_skip: - x = torch.cat((x, self.inner_skip(residual)), dim=1) - x = self.inner_skip_conv(x) - else: - x = x + self.inner_skip(residual) + with timer.context("inner_skip"): + if self.concat_skip: + x = torch.cat((x, self.inner_skip(residual)), dim=1) + x = self.inner_skip_conv(x) + else: + x = x + self.inner_skip(residual) if hasattr(self, "act_layer"): - x = self.act_layer(x) - - x_norm = torch.zeros_like(x) - x_norm[..., : self.output_shape_loc[0], : self.output_shape_loc[1]] = ( - self.norm1( - x[..., : self.output_shape_loc[0], : self.output_shape_loc[1]], - context_embedding, + with timer.context("activation"): + x = self.act_layer(x) + + with timer.context("norm1"): + x_norm = torch.zeros_like(x) + x_norm[..., : self.output_shape_loc[0], : self.output_shape_loc[1]] = ( + self.norm1( + x[..., : self.output_shape_loc[0], : self.output_shape_loc[1]], + context_embedding, + timer=timer, + ) ) - ) - x = x_norm + x = x_norm if hasattr(self, "mlp"): - x = self.mlp(x) + with timer.context("mlp"): + x = self.mlp(x) - x = self.drop_path(x) + with timer.context("drop_path"): + x = self.drop_path(x) if hasattr(self, "outer_skip"): - if self.concat_skip: - x = torch.cat((x, self.outer_skip(residual)), dim=1) - x = self.outer_skip_conv(x) - else: - x = x + self.outer_skip(residual) + with timer.context("outer_skip"): + if self.concat_skip: + x = torch.cat((x, self.outer_skip(residual)), dim=1) + x = self.outer_skip_conv(x) + else: + x = x + self.outer_skip(residual) return x diff --git a/fme/core/models/conditional_sfno/sht.py b/fme/core/models/conditional_sfno/sht.py new file mode 100644 index 000000000..c2d5bee2a --- /dev/null +++ b/fme/core/models/conditional_sfno/sht.py @@ -0,0 +1,220 @@ +# flake8: noqa +# fmt: off +# isort: skip_file + +""" +This file contains a fix that we needed to get the SFNO to work on multiple +unroll steps in multiprocessing (e.g. multi-GPU mode.) We forked this code from +the torch harmonics sht.py file [*]. + +[*] https://github.com/NVIDIA/torch-harmonics/blob/17eefa53468d1a885d72087918eba905fa53e10a/torch_harmonics/sht.py +""" + + +# coding=utf-8 + +# SPDX-FileCopyrightText: Copyright (c) 2022 The torch-harmonics Authors. All rights reserved. +# SPDX-License-Identifier: BSD-3-Clause +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +import torch +import torch.nn as nn +import torch.fft + +from torch_harmonics.quadrature import legendre_gauss_weights, lobatto_weights, clenshaw_curtiss_weights +from torch_harmonics.legendre import _precompute_legpoly + +from fme.core.device import get_device + + +class RealSHT(nn.Module): + """ + Defines a module for computing the forward (real-valued) SHT. + Precomputes Legendre Gauss nodes, weights and associated Legendre polynomials on these nodes. + The SHT is applied to the last two dimensions of the input + + [1] Schaeffer, N. Efficient spherical harmonic transforms aimed at pseudospectral numerical simulations, G3: Geochemistry, Geophysics, Geosystems. + [2] Wang, B., Wang, L., Xie, Z.; Accurate calculation of spherical and vector spherical harmonic expansions via spectral element grids; Adv Comput Math. + """ + + def __init__(self, nlat, nlon, lmax=None, mmax=None, grid="lobatto", norm="ortho", csphase=True): + """ + Initializes the SHT Layer, precomputing the necessary quadrature weights + + Parameters: + nlat: input grid resolution in the latitudinal direction + nlon: input grid resolution in the longitudinal direction + grid: grid in the latitude direction (for now only tensor product grids are supported) + """ + + super().__init__() + + self.nlat = nlat + self.nlon = nlon + self.grid = grid + self.norm = norm + self.csphase = csphase + + # TODO: include assertions regarding the dimensions + + # compute quadrature points + if self.grid == "legendre-gauss": + cost, w = legendre_gauss_weights(nlat, -1, 1) + self.lmax = lmax or self.nlat + elif self.grid == "lobatto": + cost, w = lobatto_weights(nlat, -1, 1) + self.lmax = lmax or self.nlat-1 + elif self.grid == "equiangular": + cost, w = clenshaw_curtiss_weights(nlat, -1, 1) + # cost, w = fejer2_weights(nlat, -1, 1) + self.lmax = lmax or self.nlat + elif self.grid == "healpix": + raise(NotImplementedError("'healpix' grid not supported by InverseRealVectorSHT")) + else: + raise(ValueError("Unknown quadrature mode")) + + # apply cosine transform and flip them + tq = torch.flip(torch.arccos(cost), dims=(0,)) + + # determine the dimensions + self.mmax = mmax or self.nlon // 2 + 1 + + # combine quadrature weights with the legendre weights + pct = torch.as_tensor(_precompute_legpoly(self.mmax, self.lmax, tq, norm=self.norm, csphase=self.csphase)) + weights = torch.einsum('mlk,k->mlk', pct, w) + + # remember quadrature weights + self.weights = weights.float().to(get_device()) + + def extra_repr(self): + """ + Pretty print module + """ + return f'nlat={self.nlat}, nlon={self.nlon},\n lmax={self.lmax}, mmax={self.mmax},\n grid={self.grid}, csphase={self.csphase}' + + def forward(self, x: torch.Tensor): + + assert(x.shape[-2] == self.nlat) + assert(x.shape[-1] == self.nlon) + with torch.autocast("cuda", enabled=False): + # rfft and view_as_complex don't support BF16, see https://github.com/pytorch/pytorch/issues/117844 + x = x.float() + + # apply real fft in the longitudinal direction + x = 2.0 * torch.pi * torch.fft.rfft(x, dim=-1, norm="forward") + + # do the Legendre-Gauss quadrature + x = torch.view_as_real(x) + + # distributed contraction: fork + out_shape = list(x.size()) + out_shape[-3] = self.lmax + out_shape[-2] = self.mmax + xout = torch.zeros(out_shape, dtype=x.dtype, device=x.device) + + # contraction + weights = self.weights.to(x.device).to(x.dtype) + xout[..., 0] = torch.einsum('...km,mlk->...lm', x[..., :self.mmax, 0], weights) + xout[..., 1] = torch.einsum('...km,mlk->...lm', x[..., :self.mmax, 1], weights) + x = torch.view_as_complex(xout) + + return x + +class InverseRealSHT(nn.Module): + """ + Defines a module for computing the inverse (real-valued) SHT. + Precomputes Legendre Gauss nodes, weights and associated Legendre polynomials on these nodes. + nlat, nlon: Output dimensions + lmax, mmax: Input dimensions (spherical coefficients). For convenience, these are inferred from the output dimensions + + [1] Schaeffer, N. Efficient spherical harmonic transforms aimed at pseudospectral numerical simulations, G3: Geochemistry, Geophysics, Geosystems. + [2] Wang, B., Wang, L., Xie, Z.; Accurate calculation of spherical and vector spherical harmonic expansions via spectral element grids; Adv Comput Math. + """ + + def __init__(self, nlat, nlon, lmax=None, mmax=None, grid="lobatto", norm="ortho", csphase=True): + + super().__init__() + + self.nlat = nlat + self.nlon = nlon + self.grid = grid + self.norm = norm + self.csphase = csphase + + # compute quadrature points + if self.grid == "legendre-gauss": + cost, _ = legendre_gauss_weights(nlat, -1, 1) + self.lmax = lmax or self.nlat + elif self.grid == "lobatto": + cost, _ = lobatto_weights(nlat, -1, 1) + self.lmax = lmax or self.nlat-1 + elif self.grid == "equiangular": + cost, _ = clenshaw_curtiss_weights(nlat, -1, 1) + self.lmax = lmax or self.nlat + elif self.grid == "healpix": + raise(NotImplementedError("'healpix' grid not supported by RealVectorSHT")) + else: + raise(ValueError("Unknown quadrature mode")) + + # apply cosine transform and flip them + t = torch.flip(torch.arccos(cost), dims=(0,)) + + # determine the dimensions + self.mmax = mmax or self.nlon // 2 + 1 + + pct = torch.as_tensor(_precompute_legpoly(self.mmax, self.lmax, t, norm=self.norm, inverse=True, csphase=self.csphase)) + + # register buffer + self.pct = pct.float().to(get_device()) + + def extra_repr(self): + """ + Pretty print module + """ + return f'nlat={self.nlat}, nlon={self.nlon},\n lmax={self.lmax}, mmax={self.mmax},\n grid={self.grid}, csphase={self.csphase}' + + def forward(self, x: torch.Tensor): + + assert(x.shape[-2] == self.lmax) + assert(x.shape[-1] == self.mmax) + + with torch.autocast("cuda", enabled=False): + # irfft and view_as_complex don't support BF16, see https://github.com/pytorch/pytorch/issues/117844 + # Evaluate associated Legendre functions on the output nodes + x = torch.view_as_real(x).float() + + pct = self.pct.to(x.device).to(x.dtype) + rl = torch.einsum('...lm, mlk->...km', x[..., 0], pct ) + im = torch.einsum('...lm, mlk->...km', x[..., 1], pct ) + xs = torch.stack((rl, im), -1) + + # apply the inverse (real) FFT + x = torch.view_as_complex(xs) + x = torch.fft.irfft(x, n=self.nlon, dim=-1, norm="forward") + + return x diff --git a/fme/core/models/conditional_sfno/test_sfnonet.py b/fme/core/models/conditional_sfno/test_sfnonet.py index 3230d7c87..fb9f6dc45 100644 --- a/fme/core/models/conditional_sfno/test_sfnonet.py +++ b/fme/core/models/conditional_sfno/test_sfnonet.py @@ -1,3 +1,4 @@ +import dataclasses import os from types import SimpleNamespace @@ -9,7 +10,9 @@ from fme.core.testing.regression import validate_tensor from .layers import Context, ContextConfig -from .sfnonet import get_lat_lon_sfnonet +from .sfnonet import FourierNeuralOperatorBlock, get_lat_lon_sfnonet +from .sht import InverseRealSHT, RealSHT +from .timer import CUDATimer DIR = os.path.abspath(os.path.dirname(__file__)) @@ -221,3 +224,130 @@ def forward(self, x): assert not torch.isnan(output).any() else: assert torch.isnan(output).any() + + +@dataclasses.dataclass +class BenchmarkResult: + ms_total: float + ms_per: float + max_alloc: int + max_reserved: int + y_shape: tuple + y_dtype: torch.dtype + + +def benchmark(fn, iters=10, warmup=1) -> BenchmarkResult: + for _ in range(warmup): + fn() + torch.cuda.synchronize() + + torch.cuda.reset_peak_memory_stats() + starter = torch.cuda.Event(enable_timing=True) + ender = torch.cuda.Event(enable_timing=True) + + starter.record() + for _ in range(iters): + y = fn() + ender.record() + torch.cuda.synchronize() + + ms = starter.elapsed_time(ender) + return BenchmarkResult( + ms_total=ms, + ms_per=ms / iters, + max_alloc=torch.cuda.max_memory_allocated(), + max_reserved=torch.cuda.max_memory_reserved(), + y_shape=tuple(y.shape), + y_dtype=y.dtype, + ) + + +@pytest.mark.skipif( + get_device().type != "cuda", + reason=( + "This test is only relevant for CUDA since " + "it's testing speed of SFNO blocks on GPU." + ), +) # noqa: E501 +def test_block_speed(): + B = 2 + C = 512 + H = 180 + L = 360 + G = 8 + device = get_device() + conditional_embed_dim_scalar = 0 + conditional_embed_dim_noise = 64 + conditional_embed_dim_labels = 3 + conditional_embed_dim_pos = 32 + embedding_scalar = None + context_embedding_noise = torch.randn(B, conditional_embed_dim_noise, H, L).to( + device + ) + context_embedding_labels = torch.randn(B, conditional_embed_dim_labels).to(device) + context_embedding_pos = torch.randn(B, conditional_embed_dim_pos, H, L).to(device) + context = Context( + embedding_scalar=embedding_scalar, + embedding_pos=context_embedding_pos, + noise=context_embedding_noise, + labels=context_embedding_labels, + ) + x = torch.randn(B, C, H, L, device=get_device()) + forward = RealSHT(nlat=H, nlon=L) + inverse = InverseRealSHT(nlat=H, nlon=L) + context_config = ContextConfig( + embed_dim_scalar=conditional_embed_dim_scalar, + embed_dim_noise=conditional_embed_dim_noise, + embed_dim_labels=conditional_embed_dim_labels, + embed_dim_pos=conditional_embed_dim_pos, + ) + block = FourierNeuralOperatorBlock( + forward_transform=forward, + inverse_transform=inverse, + embed_dim=C, + img_shape=(H, L), + filter_type="linear", + operator_type="dhconv", + use_mlp=True, + context_config=context_config, + ).to(device) + timer = CUDATimer() + grouped_block = FourierNeuralOperatorBlock( + forward_transform=forward, + inverse_transform=inverse, + embed_dim=C, + img_shape=(H, L), + filter_type="linear", + operator_type="dhconv", + use_mlp=True, + context_config=context_config, + filter_num_groups=G, + ).to(device) + grouped_timer = CUDATimer() + + def call_block(): + return block(x, context, timer=timer) + + def call_grouped_block(): + return grouped_block(x, context, timer=grouped_timer) + + for _ in range(10): + block(x, context) + ungrouped = benchmark(call_block, warmup=0, iters=10) + for _ in range(10): + grouped_block(x, context) + grouped = benchmark(call_grouped_block, warmup=0, iters=10) + + print("ungrouped timers: ", timer.report()) + print("grouped timers: ", grouped_timer.report()) + + assert grouped.ms_per < 2 / G * ungrouped.ms_per, ( + "Expected grouped DHConv to be faster than ungrouped, but got " + f"{grouped.ms_per:.6f} ms for grouped and " + f"{ungrouped.ms_per:.6f} ms for ungrouped." + ) + assert grouped.max_alloc < ungrouped.max_alloc, ( + "Expected grouped DHConv to use less memory than ungrouped, but got " + f"{grouped.max_alloc/1024/1024:.2f} MB for grouped and " + f"{ungrouped.max_alloc/1024/1024:.2f} MB for ungrouped." + ) diff --git a/fme/core/models/conditional_sfno/timer.py b/fme/core/models/conditional_sfno/timer.py new file mode 100644 index 000000000..b71b0c278 --- /dev/null +++ b/fme/core/models/conditional_sfno/timer.py @@ -0,0 +1,40 @@ +import collections +import contextlib + +import torch + + +class CUDATimer: + def __init__(self): + self._starters = [] + self._enders = [] + self._names = [] + + @contextlib.contextmanager + def context(self, name: str): + starter = torch.cuda.Event(enable_timing=True) + ender = torch.cuda.Event(enable_timing=True) + self._starters.append(starter) + self._enders.append(ender) + self._names.append(name) + torch.cuda.synchronize() + stream = torch.cuda.current_stream() + starter.record(stream) + try: + yield + finally: + ender.record(stream) + torch.cuda.synchronize() + return + + def report(self): + torch.cuda.synchronize() + total_times: dict[str, float] = collections.defaultdict(float) + for starter, ender, name in zip(self._starters, self._enders, self._names): + total_times[name] += starter.elapsed_time(ender) + return total_times + + +class NullTimer: + def context(self, name: str) -> contextlib.nullcontext: + return contextlib.nullcontext() From f788fae3956d513dcc17ddcbbc4b6ea9ceefa865 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Fri, 6 Feb 2026 23:20:11 +0000 Subject: [PATCH 27/51] update docstrings --- fme/core/models/conditional_sfno/s2convolutions.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index 81ea83fc3..93299256a 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -47,11 +47,13 @@ def _contract_lora( Performs LoRA update contraction. Args: - - lora_A: LoRA A matrix of shape (in_channels, rank, nlat, 2) - lora_B: LoRA B matrix of shape (rank, out_channels, nlat, 2) + lora_A: LoRA A matrix of shape (group, in_channels, rank, nlat, 2) + lora_B: LoRA B matrix of shape (group, rank, out_channels, nlat, 2) x: Complex input tensor of shape - (batch_size, in_channels, nlat, nlon) + (batch_size, group, in_channels, nlat, nlon) + + Returns: + Complex output tensor of shape (batch_size, group, out_channels, nlat, nlon) """ lora_A = torch.view_as_complex(lora_A) lora_B = torch.view_as_complex(lora_B) @@ -69,6 +71,9 @@ def _contract_dhconv( Args: xc: Complex input tensor of shape (batch_size, group, in_channels, nlat, nlon) weight: Weight tensor of shape (group, in_channels, out_channels, nlat, 2) + + Returns: + Complex output tensor of shape (batch_size, group, out_channels, nlat, nlon) """ wc = torch.view_as_complex(weight) return torch.einsum("bgixy,giox->bgoxy", xc, wc) From 768fdd9c9f0373508173e29d0bf3626432bd7539 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 15:20:54 +0000 Subject: [PATCH 28/51] add CUDATimer --- fme/core/benchmark/__init__.py | 0 fme/core/benchmark/test_timer.py | 42 ++++++++++++++++ fme/core/benchmark/timer.py | 85 ++++++++++++++++++++++++++++++++ 3 files changed, 127 insertions(+) create mode 100644 fme/core/benchmark/__init__.py create mode 100644 fme/core/benchmark/test_timer.py create mode 100644 fme/core/benchmark/timer.py diff --git a/fme/core/benchmark/__init__.py b/fme/core/benchmark/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/fme/core/benchmark/test_timer.py b/fme/core/benchmark/test_timer.py new file mode 100644 index 000000000..9e22caa63 --- /dev/null +++ b/fme/core/benchmark/test_timer.py @@ -0,0 +1,42 @@ +from unittest.mock import patch + +import pytest +import torch + +from fme.core.benchmark.timer import CUDATimer + + +@pytest.mark.parametrize("is_available", [True, False]) +def test_new_if_available(is_available: bool): + from fme.core.benchmark.timer import CUDATimer, NullTimer + + with patch("torch.cuda.is_available", return_value=is_available): + timer = CUDATimer.new_if_available() + if is_available: + assert isinstance(timer, CUDATimer) + else: + assert isinstance(timer, NullTimer) + + +@pytest.mark.skipif( + not torch.cuda.is_available(), + reason="CUDA is not available, skipping CUDATimer tests.", +) +def test_timer_with_child(): + timer = CUDATimer() + # get cuda to wait + with timer.context("parent"): + torch.cuda._sleep(100_000) + child_timer = timer.child("child") + with child_timer.context("child_time"): + torch.cuda._sleep(100_000) + report = timer.report() + assert "parent" in report.average_time_seconds + assert "child" in report.children + assert "child_time" in report.children["child"].average_time_seconds + # parent time should include the child time, so it should be + # at least 2x the child time (since we sleep for the same amount of time in both) + assert ( + report.average_time_seconds["parent"] + >= 2.0 * report.children["child"].average_time_seconds["child_time"] + ) diff --git a/fme/core/benchmark/timer.py b/fme/core/benchmark/timer.py new file mode 100644 index 000000000..75c605470 --- /dev/null +++ b/fme/core/benchmark/timer.py @@ -0,0 +1,85 @@ +import collections +import contextlib +import dataclasses +from typing import Protocol, Self + +import torch + + +@dataclasses.dataclass +class TimerReport: + average_time_seconds: dict[str, float] + children: dict[str, "TimerReport"] + + +class Timer(Protocol): + def context(self, name: str) -> contextlib.AbstractContextManager[None]: ... + def child(self, name: str) -> Self: ... + + +class NullTimer: + def context(self, name: str) -> contextlib.nullcontext: + return contextlib.nullcontext() + + def child(self, name: str) -> "Self": + return self + + +_: Timer = NullTimer() +del _ + + +class CUDATimer: + def __init__(self): + if not torch.cuda.is_available(): + raise RuntimeError("CUDA is not available, cannot use CUDATimer.") + self._starters = [] + self._enders = [] + self._names = [] + self._children: collections.defaultdict[str, CUDATimer] = ( + collections.defaultdict(CUDATimer) + ) + + @classmethod + def new_if_available(cls) -> "CUDATimer" | NullTimer: + if torch.cuda.is_available(): + return cls() + else: + return NullTimer() + + @contextlib.contextmanager + def context(self, name: str): + starter = torch.cuda.Event(enable_timing=True) + ender = torch.cuda.Event(enable_timing=True) + self._starters.append(starter) + self._enders.append(ender) + self._names.append(name) + stream = torch.cuda.current_stream() + starter.record(stream) + try: + yield + finally: + ender.record(stream) + return + + def child(self, name: str) -> "CUDATimer": + return self._children[name] + + def report(self) -> TimerReport: + torch.cuda.synchronize() + total_time_seconds: dict[str, float] = collections.defaultdict(float) + counts: dict[str, int] = collections.defaultdict(int) + for starter, ender, name in zip(self._starters, self._enders, self._names): + total_time_seconds[name] += starter.elapsed_time(ender) + counts[name] += 1 + average_time_seconds = { + name: total / counts[name] for name, total in total_time_seconds.items() + } + children = {} + for name, child in self._children.items(): + children[name] = child.report() + return TimerReport(average_time_seconds=average_time_seconds, children=children) + + +__: Timer = CUDATimer() +del __ From dd9d85de80fbc4b7d291cd7ca2048a3b1df6b7c3 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 15:38:47 +0000 Subject: [PATCH 29/51] use core timer --- fme/core/benchmark/timer.py | 5 +- fme/core/models/conditional_sfno/layers.py | 12 ++--- .../makani/spectral_convolution.py | 50 +++++++++++-------- .../models/conditional_sfno/s2convolutions.py | 8 +-- fme/core/models/conditional_sfno/sfnonet.py | 14 +++--- .../models/conditional_sfno/test_sfnonet.py | 17 +++---- fme/core/models/conditional_sfno/timer.py | 40 --------------- 7 files changed, 51 insertions(+), 95 deletions(-) delete mode 100644 fme/core/models/conditional_sfno/timer.py diff --git a/fme/core/benchmark/timer.py b/fme/core/benchmark/timer.py index 75c605470..3fd40707d 100644 --- a/fme/core/benchmark/timer.py +++ b/fme/core/benchmark/timer.py @@ -24,6 +24,9 @@ def context(self, name: str) -> contextlib.nullcontext: def child(self, name: str) -> "Self": return self + def report(self) -> TimerReport: + return TimerReport(average_time_seconds={}, children={}) + _: Timer = NullTimer() del _ @@ -41,7 +44,7 @@ def __init__(self): ) @classmethod - def new_if_available(cls) -> "CUDATimer" | NullTimer: + def new_if_available(cls) -> "CUDATimer | NullTimer": if torch.cuda.is_available(): return cls() else: diff --git a/fme/core/models/conditional_sfno/layers.py b/fme/core/models/conditional_sfno/layers.py index 2fe7e71d7..25b19c8f4 100644 --- a/fme/core/models/conditional_sfno/layers.py +++ b/fme/core/models/conditional_sfno/layers.py @@ -24,8 +24,8 @@ import torch.nn.functional as F from torch.utils.checkpoint import checkpoint +from fme.core.benchmark.timer import Timer, NullTimer from fme.core.models.conditional_sfno.lora import LoRAConv2d -from fme.core.models.conditional_sfno.timer import CUDATimer, NullTimer from .activations import ComplexReLU from .contractions import compl_mul2d_fwd, compl_muladd2d_fwd @@ -228,7 +228,7 @@ def forward( self, x: torch.Tensor, context: Context, - timer: CUDATimer | NullTimer | None = None, + timer: Timer = NullTimer(), ) -> torch.Tensor: """ Conditional Layer Normalization @@ -244,13 +244,11 @@ def forward( Returns: The normalized tensor, of shape (batch_size, channels, height, width). """ - if timer is None: - timer = NullTimer() if context.labels is None and ( self.W_scale_labels is not None or self.W_bias_labels is not None ): raise ValueError("labels must be provided") - with timer.context("layer_norm_compute_scaling_and_bias"): + with timer.context("compute_scaling_and_bias"): if self.W_scale is not None: if context.embedding_scalar is None: raise ValueError("embedding_scalar must be provided") @@ -297,9 +295,9 @@ def forward( if context.embedding_pos is None: raise ValueError("embedding_pos must be provided") bias = bias + self.W_bias_pos(context.embedding_pos) - with timer.context("layer_norm_normalize"): + with timer.context("normalize"): x_norm: torch.Tensor = self.norm(x) - with timer.context("layer_norm_apply_scaling_and_bias"): + with timer.context("apply_scaling_and_bias"): return_value = x_norm * scale + bias return return_value diff --git a/fme/core/models/conditional_sfno/makani/spectral_convolution.py b/fme/core/models/conditional_sfno/makani/spectral_convolution.py index f38894c83..ba925c70a 100644 --- a/fme/core/models/conditional_sfno/makani/spectral_convolution.py +++ b/fme/core/models/conditional_sfno/makani/spectral_convolution.py @@ -19,6 +19,8 @@ import torch.nn as nn from torch import amp +from fme.core.benchmark.timer import NullTimer, Timer + # import convenience functions for factorized tensors from .factorizations import get_contract_fun @@ -124,30 +126,34 @@ def __init__( if bias: self.bias = nn.Parameter(torch.zeros(1, self.out_channels, 1, 1)) - def forward(self, x): - dtype = x.dtype - residual = x - x = x.float() - - with amp.autocast(device_type="cuda", enabled=False): - x = self.forward_transform(x).contiguous() - if self.scale_residual: - residual = self.inverse_transform(x) - residual = residual.to(dtype) - - B, C, H, W = x.shape - x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) - xp = self._contract( - x, self.weight, separable=self.separable, operator_type=self.operator_type - ) - x = xp.reshape(B, self.out_channels, H, W).contiguous() + def forward(self, x, timer: Timer = NullTimer()): + with timer.context("spectral_conv_forward"): + dtype = x.dtype + residual = x + x = x.float() + + with amp.autocast(device_type="cuda", enabled=False): + x = self.forward_transform(x).contiguous() + if self.scale_residual: + residual = self.inverse_transform(x) + residual = residual.to(dtype) + + B, C, H, W = x.shape + x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) + xp = self._contract( + x, + self.weight, + separable=self.separable, + operator_type=self.operator_type, + ) + x = xp.reshape(B, self.out_channels, H, W).contiguous() - with amp.autocast(device_type="cuda", enabled=False): - x = self.inverse_transform(x) + with amp.autocast(device_type="cuda", enabled=False): + x = self.inverse_transform(x) - if hasattr(self, "bias"): - x = x + self.bias + if hasattr(self, "bias"): + x = x + self.bias - x = x.to(dtype=dtype) + x = x.to(dtype=dtype) return x, residual diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index f0e6c204b..0713e2315 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -22,7 +22,7 @@ import torch_harmonics as th import torch_harmonics.distributed as thd -from fme.core.models.conditional_sfno.timer import CUDATimer, NullTimer +from fme.core.benchmark.timer import NullTimer, Timer # import convenience functions for factorized tensors from .activations import ComplexReLU @@ -220,11 +220,7 @@ def __init__( self.bias = nn.Parameter(torch.zeros(1, out_channels, 1, 1)) self.out_channels = out_channels - def forward( - self, x, timer: CUDATimer | NullTimer | None = None - ): # pragma: no cover - if timer is None: - timer = NullTimer() + def forward(self, x, timer: Timer = NullTimer()): # pragma: no cover dtype = x.dtype residual = x x = x.float() diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index e3df29d18..efee681b7 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -24,7 +24,7 @@ import torch_harmonics as th from torch.utils.checkpoint import checkpoint -from fme.core.models.conditional_sfno.timer import CUDATimer, NullTimer +from fme.core.benchmark.timer import Timer, NullTimer from .initialization import trunc_normal_ @@ -155,7 +155,7 @@ def __init__( else: raise (NotImplementedError) - def forward(self, x, timer: CUDATimer | None = None): + def forward(self, x, timer: Timer = NullTimer()): return self.filter(x, timer=timer) @@ -297,20 +297,18 @@ def __init__( lora_alpha=lora_alpha, ) - def forward(self, x, context_embedding, timer: CUDATimer | NullTimer | None = None): - if timer is None: - timer = NullTimer() + def forward(self, x, context_embedding, timer: Timer = NullTimer()): with timer.context("norm0"): x_norm = torch.zeros_like(x) x_norm[..., : self.input_shape_loc[0], : self.input_shape_loc[1]] = ( self.norm0( x[..., : self.input_shape_loc[0], : self.input_shape_loc[1]], context_embedding, - timer=timer, + timer=timer.child("norm0"), ) ) with timer.context("filter"): - x, residual = self.filter(x_norm, timer=timer) + x, residual = self.filter(x_norm, timer=timer.child("filter")) if hasattr(self, "inner_skip"): with timer.context("inner_skip"): @@ -330,7 +328,7 @@ def forward(self, x, context_embedding, timer: CUDATimer | NullTimer | None = No self.norm1( x[..., : self.output_shape_loc[0], : self.output_shape_loc[1]], context_embedding, - timer=timer, + timer=timer.child("norm1"), ) ) x = x_norm diff --git a/fme/core/models/conditional_sfno/test_sfnonet.py b/fme/core/models/conditional_sfno/test_sfnonet.py index fb9f6dc45..320e722ac 100644 --- a/fme/core/models/conditional_sfno/test_sfnonet.py +++ b/fme/core/models/conditional_sfno/test_sfnonet.py @@ -6,13 +6,13 @@ import torch from torch import nn +from fme.core.benchmark.timer import CUDATimer from fme.core.device import get_device from fme.core.testing.regression import validate_tensor from .layers import Context, ContextConfig from .sfnonet import FourierNeuralOperatorBlock, get_lat_lon_sfnonet from .sht import InverseRealSHT, RealSHT -from .timer import CUDATimer DIR = os.path.abspath(os.path.dirname(__file__)) @@ -331,23 +331,18 @@ def call_block(): def call_grouped_block(): return grouped_block(x, context, timer=grouped_timer) - for _ in range(10): + for _ in range(1): block(x, context) - ungrouped = benchmark(call_block, warmup=0, iters=10) - for _ in range(10): + ungrouped = benchmark(call_block, warmup=0, iters=5) + for _ in range(1): grouped_block(x, context) - grouped = benchmark(call_grouped_block, warmup=0, iters=10) + grouped = benchmark(call_grouped_block, warmup=0, iters=5) print("ungrouped timers: ", timer.report()) print("grouped timers: ", grouped_timer.report()) - assert grouped.ms_per < 2 / G * ungrouped.ms_per, ( + assert grouped.ms_per < ungrouped.ms_per, ( "Expected grouped DHConv to be faster than ungrouped, but got " f"{grouped.ms_per:.6f} ms for grouped and " f"{ungrouped.ms_per:.6f} ms for ungrouped." ) - assert grouped.max_alloc < ungrouped.max_alloc, ( - "Expected grouped DHConv to use less memory than ungrouped, but got " - f"{grouped.max_alloc/1024/1024:.2f} MB for grouped and " - f"{ungrouped.max_alloc/1024/1024:.2f} MB for ungrouped." - ) diff --git a/fme/core/models/conditional_sfno/timer.py b/fme/core/models/conditional_sfno/timer.py deleted file mode 100644 index b71b0c278..000000000 --- a/fme/core/models/conditional_sfno/timer.py +++ /dev/null @@ -1,40 +0,0 @@ -import collections -import contextlib - -import torch - - -class CUDATimer: - def __init__(self): - self._starters = [] - self._enders = [] - self._names = [] - - @contextlib.contextmanager - def context(self, name: str): - starter = torch.cuda.Event(enable_timing=True) - ender = torch.cuda.Event(enable_timing=True) - self._starters.append(starter) - self._enders.append(ender) - self._names.append(name) - torch.cuda.synchronize() - stream = torch.cuda.current_stream() - starter.record(stream) - try: - yield - finally: - ender.record(stream) - torch.cuda.synchronize() - return - - def report(self): - torch.cuda.synchronize() - total_times: dict[str, float] = collections.defaultdict(float) - for starter, ender, name in zip(self._starters, self._enders, self._names): - total_times[name] += starter.elapsed_time(ender) - return total_times - - -class NullTimer: - def context(self, name: str) -> contextlib.nullcontext: - return contextlib.nullcontext() From 25a9fdba4819953defd73929be49788f7fed56c9 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 15:53:26 +0000 Subject: [PATCH 30/51] add timing for sht operations --- fme/core/models/conditional_sfno/sht.py | 65 +++++++++++++------------ 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/fme/core/models/conditional_sfno/sht.py b/fme/core/models/conditional_sfno/sht.py index c2d5bee2a..1738be8f7 100644 --- a/fme/core/models/conditional_sfno/sht.py +++ b/fme/core/models/conditional_sfno/sht.py @@ -50,6 +50,7 @@ from torch_harmonics.legendre import _precompute_legpoly from fme.core.device import get_device +from fme.core.benchmark.timer import Timer, NullTimer class RealSHT(nn.Module): @@ -117,31 +118,33 @@ def extra_repr(self): """ return f'nlat={self.nlat}, nlon={self.nlon},\n lmax={self.lmax}, mmax={self.mmax},\n grid={self.grid}, csphase={self.csphase}' - def forward(self, x: torch.Tensor): + def forward(self, x: torch.Tensor, timer: Timer = NullTimer()): assert(x.shape[-2] == self.nlat) assert(x.shape[-1] == self.nlon) with torch.autocast("cuda", enabled=False): - # rfft and view_as_complex don't support BF16, see https://github.com/pytorch/pytorch/issues/117844 - x = x.float() + with timer.context("rfft"): + # rfft and view_as_complex don't support BF16, see https://github.com/pytorch/pytorch/issues/117844 + x = x.float() - # apply real fft in the longitudinal direction - x = 2.0 * torch.pi * torch.fft.rfft(x, dim=-1, norm="forward") + # apply real fft in the longitudinal direction + x = 2.0 * torch.pi * torch.fft.rfft(x, dim=-1, norm="forward") - # do the Legendre-Gauss quadrature - x = torch.view_as_real(x) + with timer.context("contraction"): + # do the Legendre-Gauss quadrature + x = torch.view_as_real(x) - # distributed contraction: fork - out_shape = list(x.size()) - out_shape[-3] = self.lmax - out_shape[-2] = self.mmax - xout = torch.zeros(out_shape, dtype=x.dtype, device=x.device) + # distributed contraction: fork + out_shape = list(x.size()) + out_shape[-3] = self.lmax + out_shape[-2] = self.mmax + xout = torch.zeros(out_shape, dtype=x.dtype, device=x.device) - # contraction - weights = self.weights.to(x.device).to(x.dtype) - xout[..., 0] = torch.einsum('...km,mlk->...lm', x[..., :self.mmax, 0], weights) - xout[..., 1] = torch.einsum('...km,mlk->...lm', x[..., :self.mmax, 1], weights) - x = torch.view_as_complex(xout) + # contraction + weights = self.weights.to(x.device).to(x.dtype) + xout[..., 0] = torch.einsum('...km,mlk->...lm', x[..., :self.mmax, 0], weights) + xout[..., 1] = torch.einsum('...km,mlk->...lm', x[..., :self.mmax, 1], weights) + x = torch.view_as_complex(xout) return x @@ -198,23 +201,25 @@ def extra_repr(self): """ return f'nlat={self.nlat}, nlon={self.nlon},\n lmax={self.lmax}, mmax={self.mmax},\n grid={self.grid}, csphase={self.csphase}' - def forward(self, x: torch.Tensor): + def forward(self, x: torch.Tensor, timer: Timer = NullTimer()): assert(x.shape[-2] == self.lmax) assert(x.shape[-1] == self.mmax) with torch.autocast("cuda", enabled=False): - # irfft and view_as_complex don't support BF16, see https://github.com/pytorch/pytorch/issues/117844 - # Evaluate associated Legendre functions on the output nodes - x = torch.view_as_real(x).float() - - pct = self.pct.to(x.device).to(x.dtype) - rl = torch.einsum('...lm, mlk->...km', x[..., 0], pct ) - im = torch.einsum('...lm, mlk->...km', x[..., 1], pct ) - xs = torch.stack((rl, im), -1) - - # apply the inverse (real) FFT - x = torch.view_as_complex(xs) - x = torch.fft.irfft(x, n=self.nlon, dim=-1, norm="forward") + with timer.context("contraction"): + # irfft and view_as_complex don't support BF16, see https://github.com/pytorch/pytorch/issues/117844 + # Evaluate associated Legendre functions on the output nodes + x = torch.view_as_real(x).float() + + pct = self.pct.to(x.device).to(x.dtype) + rl = torch.einsum('...lm, mlk->...km', x[..., 0], pct ) + im = torch.einsum('...lm, mlk->...km', x[..., 1], pct ) + xs = torch.stack((rl, im), -1) + + # apply the inverse (real) FFT + x = torch.view_as_complex(xs) + with timer.context("irfft"): + x = torch.fft.irfft(x, n=self.nlon, dim=-1, norm="forward") return x From 7a5b7c33fd445f8500d24b84d8482ac5e6db8292 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 16:33:19 +0000 Subject: [PATCH 31/51] remove redundant context timers --- fme/core/benchmark/test_timer.py | 14 +-- fme/core/benchmark/timer.py | 118 +++++++++++++----- fme/core/models/conditional_sfno/layers.py | 6 +- .../makani/spectral_convolution.py | 49 ++++---- .../models/conditional_sfno/s2convolutions.py | 14 +-- fme/core/models/conditional_sfno/sfnonet.py | 23 ++-- fme/core/models/conditional_sfno/sht.py | 8 +- .../models/conditional_sfno/test_sfnonet.py | 6 +- 8 files changed, 142 insertions(+), 96 deletions(-) diff --git a/fme/core/benchmark/test_timer.py b/fme/core/benchmark/test_timer.py index 9e22caa63..82a2a578f 100644 --- a/fme/core/benchmark/test_timer.py +++ b/fme/core/benchmark/test_timer.py @@ -24,19 +24,13 @@ def test_new_if_available(is_available: bool): ) def test_timer_with_child(): timer = CUDATimer() - # get cuda to wait - with timer.context("parent"): + with timer: + # get cuda to wait torch.cuda._sleep(100_000) - child_timer = timer.child("child") - with child_timer.context("child_time"): + with timer.child("child"): torch.cuda._sleep(100_000) report = timer.report() - assert "parent" in report.average_time_seconds assert "child" in report.children - assert "child_time" in report.children["child"].average_time_seconds # parent time should include the child time, so it should be # at least 2x the child time (since we sleep for the same amount of time in both) - assert ( - report.average_time_seconds["parent"] - >= 2.0 * report.children["child"].average_time_seconds["child_time"] - ) + assert report.avg_time >= 2.0 * report.children["child"].avg_time diff --git a/fme/core/benchmark/timer.py b/fme/core/benchmark/timer.py index 3fd40707d..bac29e541 100644 --- a/fme/core/benchmark/timer.py +++ b/fme/core/benchmark/timer.py @@ -1,20 +1,21 @@ import collections import contextlib import dataclasses -from typing import Protocol, Self +from typing import Literal, Protocol, Self import torch @dataclasses.dataclass class TimerReport: - average_time_seconds: dict[str, float] + avg_time: float children: dict[str, "TimerReport"] class Timer(Protocol): - def context(self, name: str) -> contextlib.AbstractContextManager[None]: ... def child(self, name: str) -> Self: ... + def __enter__(self) -> Self: ... + def __exit__(self, exc_type, exc_val, exc_tb) -> Literal[False]: ... class NullTimer: @@ -24,24 +25,65 @@ def context(self, name: str) -> contextlib.nullcontext: def child(self, name: str) -> "Self": return self + def __enter__(self) -> "Self": + return self + + def __exit__(self, exc_type, exc_val, exc_tb) -> Literal[False]: + return False + def report(self) -> TimerReport: - return TimerReport(average_time_seconds={}, children={}) + return TimerReport(avg_time=0.0, children={}) _: Timer = NullTimer() del _ +class EventPair: + def __init__(self): + self.start = torch.cuda.Event(enable_timing=True) + self.end = torch.cuda.Event(enable_timing=True) + self._stream = None + self._start_recorded = False + self._end_recorded = False + + def record_start(self): + if self._start_recorded: + raise RuntimeError( + "record_start has already been called on this EventPair." + ) + self._stream = torch.cuda.current_stream() + self.start.record(self._stream) + self._start_recorded = True + + def record_end(self): + if not self._start_recorded: + raise RuntimeError("record_start must be called before record_end") + if self._end_recorded: + raise RuntimeError("record_end has already been called on this EventPair.") + if self._stream is None: + raise RuntimeError("record_start must be called before record_end") + self.end.record(self._stream) + self._end_recorded = True + + def elapsed_time_seconds(self) -> float: + if not self._start_recorded or not self._end_recorded: + raise RuntimeError( + "Both record_start and record_end must be called " + "before elapsed_time_seconds can be called." + ) + return self.start.elapsed_time(self.end) + + class CUDATimer: def __init__(self): if not torch.cuda.is_available(): raise RuntimeError("CUDA is not available, cannot use CUDATimer.") - self._starters = [] - self._enders = [] - self._names = [] self._children: collections.defaultdict[str, CUDATimer] = ( collections.defaultdict(CUDATimer) ) + self._global_event_pairs: list[EventPair] = [] + self._entered = False @classmethod def new_if_available(cls) -> "CUDATimer | NullTimer": @@ -50,38 +92,48 @@ def new_if_available(cls) -> "CUDATimer | NullTimer": else: return NullTimer() - @contextlib.contextmanager - def context(self, name: str): - starter = torch.cuda.Event(enable_timing=True) - ender = torch.cuda.Event(enable_timing=True) - self._starters.append(starter) - self._enders.append(ender) - self._names.append(name) - stream = torch.cuda.current_stream() - starter.record(stream) - try: - yield - finally: - ender.record(stream) - return + def __enter__(self): + if self._entered: + raise RuntimeError("CUDATimer is already entered.") + self._entered = True + self._global_event_pairs.append(EventPair()) + self._global_event_pairs[-1].record_start() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + if not self._global_event_pairs: + raise RuntimeError("CUDATimer context was not properly entered.") + self._global_event_pairs[-1].record_end() + self._entered = False + return False def child(self, name: str) -> "CUDATimer": + if not self._entered: + raise RuntimeError( + "CUDATimer child cannot be used before entering the timer." + ) return self._children[name] + @property + def _avg_global_time(self) -> float: + if len(self._global_event_pairs) == 0: + raise RuntimeError( + "CUDATimer report cannot be generated before entering the timer." + ) + total_time = sum( + event_pair.elapsed_time_seconds() for event_pair in self._global_event_pairs + ) + return total_time / len(self._global_event_pairs) + + def _child_reports(self) -> dict[str, TimerReport]: + return {name: child.report() for name, child in self._children.items()} + def report(self) -> TimerReport: torch.cuda.synchronize() - total_time_seconds: dict[str, float] = collections.defaultdict(float) - counts: dict[str, int] = collections.defaultdict(int) - for starter, ender, name in zip(self._starters, self._enders, self._names): - total_time_seconds[name] += starter.elapsed_time(ender) - counts[name] += 1 - average_time_seconds = { - name: total / counts[name] for name, total in total_time_seconds.items() - } - children = {} - for name, child in self._children.items(): - children[name] = child.report() - return TimerReport(average_time_seconds=average_time_seconds, children=children) + return TimerReport( + avg_time=self._avg_global_time, + children=self._child_reports(), + ) __: Timer = CUDATimer() diff --git a/fme/core/models/conditional_sfno/layers.py b/fme/core/models/conditional_sfno/layers.py index 25b19c8f4..5f6dcbe8e 100644 --- a/fme/core/models/conditional_sfno/layers.py +++ b/fme/core/models/conditional_sfno/layers.py @@ -248,7 +248,7 @@ def forward( self.W_scale_labels is not None or self.W_bias_labels is not None ): raise ValueError("labels must be provided") - with timer.context("compute_scaling_and_bias"): + with timer.child("compute_scaling_and_bias"): if self.W_scale is not None: if context.embedding_scalar is None: raise ValueError("embedding_scalar must be provided") @@ -295,9 +295,9 @@ def forward( if context.embedding_pos is None: raise ValueError("embedding_pos must be provided") bias = bias + self.W_bias_pos(context.embedding_pos) - with timer.context("normalize"): + with timer.child("normalize"): x_norm: torch.Tensor = self.norm(x) - with timer.context("apply_scaling_and_bias"): + with timer.child("apply_scaling_and_bias"): return_value = x_norm * scale + bias return return_value diff --git a/fme/core/models/conditional_sfno/makani/spectral_convolution.py b/fme/core/models/conditional_sfno/makani/spectral_convolution.py index ba925c70a..e99a7f5e1 100644 --- a/fme/core/models/conditional_sfno/makani/spectral_convolution.py +++ b/fme/core/models/conditional_sfno/makani/spectral_convolution.py @@ -127,33 +127,32 @@ def __init__( self.bias = nn.Parameter(torch.zeros(1, self.out_channels, 1, 1)) def forward(self, x, timer: Timer = NullTimer()): - with timer.context("spectral_conv_forward"): - dtype = x.dtype - residual = x - x = x.float() - - with amp.autocast(device_type="cuda", enabled=False): - x = self.forward_transform(x).contiguous() - if self.scale_residual: - residual = self.inverse_transform(x) - residual = residual.to(dtype) - - B, C, H, W = x.shape - x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) - xp = self._contract( - x, - self.weight, - separable=self.separable, - operator_type=self.operator_type, - ) - x = xp.reshape(B, self.out_channels, H, W).contiguous() + dtype = x.dtype + residual = x + x = x.float() + + with amp.autocast(device_type="cuda", enabled=False): + x = self.forward_transform(x).contiguous() + if self.scale_residual: + residual = self.inverse_transform(x) + residual = residual.to(dtype) + + B, C, H, W = x.shape + x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) + xp = self._contract( + x, + self.weight, + separable=self.separable, + operator_type=self.operator_type, + ) + x = xp.reshape(B, self.out_channels, H, W).contiguous() - with amp.autocast(device_type="cuda", enabled=False): - x = self.inverse_transform(x) + with amp.autocast(device_type="cuda", enabled=False): + x = self.inverse_transform(x) - if hasattr(self, "bias"): - x = x + self.bias + if hasattr(self, "bias"): + x = x + self.bias - x = x.to(dtype=dtype) + x = x.to(dtype=dtype) return x, residual diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index 7873a2a8c..61e2e2215 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -231,21 +231,21 @@ def forward(self, x, timer: Timer = NullTimer()): # pragma: no cover x = x.float() with torch.amp.autocast("cuda", enabled=False): - with timer.context("forward_transform"): + with timer.child("forward_transform"): x = self.forward_transform(x.float()) if self._round_trip_residual: - with timer.context("round_trip_residual"): + with timer.child("round_trip_residual"): x = x.contiguous() residual = self.inverse_transform(x) residual = residual.to(dtype) B, C, H, W = x.shape assert C % self.num_groups == 0 - with timer.context("group_reshape"): + with timer.child("group_reshape"): x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) if self.lora_A is not None and self.lora_B is not None: - with timer.context("lora_update"): + with timer.child("lora_update"): lora_update = _contract_lora( self.lora_A, self.lora_B, @@ -254,7 +254,7 @@ def forward(self, x, timer: Timer = NullTimer()): # pragma: no cover else: lora_update = 0.0 - with timer.context("dhconv"): + with timer.child("dhconv"): xp = torch.zeros_like(x) xp[..., : self.modes_lat_local, : self.modes_lon_local] = _contract_dhconv( x[..., : self.modes_lat_local, : self.modes_lon_local], @@ -265,11 +265,11 @@ def forward(self, x, timer: Timer = NullTimer()): # pragma: no cover x = xp.contiguous() with torch.amp.autocast("cuda", enabled=False): - with timer.context("inverse_transform"): + with timer.child("inverse_transform"): x = self.inverse_transform(x) if hasattr(self, "bias"): - with timer.context("add_bias"): + with timer.child("add_bias"): x = x + self.bias x = x.type(dtype) diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index efee681b7..19e0410fe 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -298,20 +298,19 @@ def __init__( ) def forward(self, x, context_embedding, timer: Timer = NullTimer()): - with timer.context("norm0"): + with timer.child("norm0") as norm0_timer: x_norm = torch.zeros_like(x) x_norm[..., : self.input_shape_loc[0], : self.input_shape_loc[1]] = ( self.norm0( x[..., : self.input_shape_loc[0], : self.input_shape_loc[1]], context_embedding, - timer=timer.child("norm0"), + timer=norm0_timer, ) ) - with timer.context("filter"): - x, residual = self.filter(x_norm, timer=timer.child("filter")) - + with timer.child("filter") as filter_timer: + x, residual = self.filter(x_norm, timer=filter_timer) if hasattr(self, "inner_skip"): - with timer.context("inner_skip"): + with timer.child("inner_skip"): if self.concat_skip: x = torch.cat((x, self.inner_skip(residual)), dim=1) x = self.inner_skip_conv(x) @@ -319,29 +318,29 @@ def forward(self, x, context_embedding, timer: Timer = NullTimer()): x = x + self.inner_skip(residual) if hasattr(self, "act_layer"): - with timer.context("activation"): + with timer.child("activation"): x = self.act_layer(x) - with timer.context("norm1"): + with timer.child("norm1") as norm1_timer: x_norm = torch.zeros_like(x) x_norm[..., : self.output_shape_loc[0], : self.output_shape_loc[1]] = ( self.norm1( x[..., : self.output_shape_loc[0], : self.output_shape_loc[1]], context_embedding, - timer=timer.child("norm1"), + timer=norm1_timer, ) ) x = x_norm if hasattr(self, "mlp"): - with timer.context("mlp"): + with timer.child("mlp"): x = self.mlp(x) - with timer.context("drop_path"): + with timer.child("drop_path"): x = self.drop_path(x) if hasattr(self, "outer_skip"): - with timer.context("outer_skip"): + with timer.child("outer_skip"): if self.concat_skip: x = torch.cat((x, self.outer_skip(residual)), dim=1) x = self.outer_skip_conv(x) diff --git a/fme/core/models/conditional_sfno/sht.py b/fme/core/models/conditional_sfno/sht.py index 1738be8f7..dd9f8fc02 100644 --- a/fme/core/models/conditional_sfno/sht.py +++ b/fme/core/models/conditional_sfno/sht.py @@ -123,14 +123,14 @@ def forward(self, x: torch.Tensor, timer: Timer = NullTimer()): assert(x.shape[-2] == self.nlat) assert(x.shape[-1] == self.nlon) with torch.autocast("cuda", enabled=False): - with timer.context("rfft"): + with timer.child("rfft"): # rfft and view_as_complex don't support BF16, see https://github.com/pytorch/pytorch/issues/117844 x = x.float() # apply real fft in the longitudinal direction x = 2.0 * torch.pi * torch.fft.rfft(x, dim=-1, norm="forward") - with timer.context("contraction"): + with timer.child("contraction"): # do the Legendre-Gauss quadrature x = torch.view_as_real(x) @@ -207,7 +207,7 @@ def forward(self, x: torch.Tensor, timer: Timer = NullTimer()): assert(x.shape[-1] == self.mmax) with torch.autocast("cuda", enabled=False): - with timer.context("contraction"): + with timer.child("contraction"): # irfft and view_as_complex don't support BF16, see https://github.com/pytorch/pytorch/issues/117844 # Evaluate associated Legendre functions on the output nodes x = torch.view_as_real(x).float() @@ -219,7 +219,7 @@ def forward(self, x: torch.Tensor, timer: Timer = NullTimer()): # apply the inverse (real) FFT x = torch.view_as_complex(xs) - with timer.context("irfft"): + with timer.child("irfft"): x = torch.fft.irfft(x, n=self.nlon, dim=-1, norm="forward") return x diff --git a/fme/core/models/conditional_sfno/test_sfnonet.py b/fme/core/models/conditional_sfno/test_sfnonet.py index 320e722ac..bb0cd8d20 100644 --- a/fme/core/models/conditional_sfno/test_sfnonet.py +++ b/fme/core/models/conditional_sfno/test_sfnonet.py @@ -333,10 +333,12 @@ def call_grouped_block(): for _ in range(1): block(x, context) - ungrouped = benchmark(call_block, warmup=0, iters=5) + with timer: + ungrouped = benchmark(call_block, warmup=0, iters=5) for _ in range(1): grouped_block(x, context) - grouped = benchmark(call_grouped_block, warmup=0, iters=5) + with grouped_timer: + grouped = benchmark(call_grouped_block, warmup=0, iters=5) print("ungrouped timers: ", timer.report()) print("grouped timers: ", grouped_timer.report()) From 88f682a48fce6d38bbb609f36b86f9892c11310c Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 16:45:12 +0000 Subject: [PATCH 32/51] add memory benchmarking context --- fme/core/benchmark/memory.py | 66 +++++++++++++++++++++++++++++++ fme/core/benchmark/test_memory.py | 26 ++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 fme/core/benchmark/memory.py create mode 100644 fme/core/benchmark/test_memory.py diff --git a/fme/core/benchmark/memory.py b/fme/core/benchmark/memory.py new file mode 100644 index 000000000..bfc879b1f --- /dev/null +++ b/fme/core/benchmark/memory.py @@ -0,0 +1,66 @@ +from typing import Literal, NamedTuple + +import torch + +_benchmark_memory_started = False + + +class MemoryBenchmarkResult(NamedTuple): + max_alloc: int + max_reserved: int + + +class MemoryBenchmark: + def __init__(self): + self._started = False + self._ended = False + + def __enter__(self) -> "MemoryBenchmark": + global _benchmark_memory_started + if _benchmark_memory_started: + raise RuntimeError( + "benchmark_memory cannot be nested due to its use of globals" + ) + _benchmark_memory_started = True + if self._started: + raise RuntimeError( + "MemoryBenchmark cannot be nested due to its use of globals" + ) + if self._ended: + raise RuntimeError("MemoryBenchmark cannot be reused after it has ended.") + self._started = True + torch.cuda.synchronize() + torch.cuda.reset_peak_memory_stats() + self._max_alloc = 0 + self._max_reserved = 0 + return self + + def __exit__(self, exc_type, exc_val, exc_tb) -> Literal[False]: + torch.cuda.synchronize() + global _benchmark_memory_started + _benchmark_memory_started = False + self._started = False + self._ended = True + self._max_alloc = torch.cuda.max_memory_allocated() + self._max_reserved = torch.cuda.max_memory_reserved() + return False # Don't suppress exceptions + + @property + def result(self) -> MemoryBenchmarkResult: + if self._started: + raise RuntimeError( + "MemoryBenchmark is still running. " + "Please exit the context before getting results." + ) + if not self._ended: + raise RuntimeError( + "MemoryBenchmark has not been run yet. " + "Please enter and exit the context before getting results." + ) + return MemoryBenchmarkResult( + max_alloc=self._max_alloc, max_reserved=self._max_reserved + ) + + +def benchmark_memory() -> MemoryBenchmark: + return MemoryBenchmark() diff --git a/fme/core/benchmark/test_memory.py b/fme/core/benchmark/test_memory.py new file mode 100644 index 000000000..6b099d52c --- /dev/null +++ b/fme/core/benchmark/test_memory.py @@ -0,0 +1,26 @@ +import pytest +import torch + +from fme.core.benchmark.memory import benchmark_memory + + +def test_cannot_nest_benchmark(): + with benchmark_memory(): + with pytest.raises(RuntimeError, match="benchmark_memory cannot be nested"): + with benchmark_memory(): + pass + + +def test_cannot_get_result_before_end(): + with benchmark_memory() as bm: + with pytest.raises(RuntimeError, match="MemoryBenchmark is still running"): + bm.result + + +def test_larger_array_uses_larger_memory(): + with benchmark_memory() as bm1: + _ = torch.randn(100, 100, device="cuda") + with benchmark_memory() as bm2: + _ = torch.randn(200, 200, device="cuda") + + assert bm2.result.max_alloc > bm1.result.max_alloc From 7eb9d854237d08441dc5906fc0f18c6f7cc6bd1c Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 16:58:42 +0000 Subject: [PATCH 33/51] implement combining results --- fme/core/benchmark/memory.py | 14 ++++++---- fme/core/benchmark/test_memory.py | 10 ++++++- fme/core/benchmark/test_timer.py | 46 +++++++++++++++++++++++++++++-- fme/core/benchmark/timer.py | 41 +++++++++++++++++++++------ 4 files changed, 95 insertions(+), 16 deletions(-) diff --git a/fme/core/benchmark/memory.py b/fme/core/benchmark/memory.py index bfc879b1f..7c21c6696 100644 --- a/fme/core/benchmark/memory.py +++ b/fme/core/benchmark/memory.py @@ -5,10 +5,16 @@ _benchmark_memory_started = False -class MemoryBenchmarkResult(NamedTuple): +class MemoryResult(NamedTuple): max_alloc: int max_reserved: int + def combine(self, other: "MemoryResult") -> "MemoryResult": + return MemoryResult( + max_alloc=max(self.max_alloc, other.max_alloc), + max_reserved=max(self.max_reserved, other.max_reserved), + ) + class MemoryBenchmark: def __init__(self): @@ -46,7 +52,7 @@ def __exit__(self, exc_type, exc_val, exc_tb) -> Literal[False]: return False # Don't suppress exceptions @property - def result(self) -> MemoryBenchmarkResult: + def result(self) -> MemoryResult: if self._started: raise RuntimeError( "MemoryBenchmark is still running. " @@ -57,9 +63,7 @@ def result(self) -> MemoryBenchmarkResult: "MemoryBenchmark has not been run yet. " "Please enter and exit the context before getting results." ) - return MemoryBenchmarkResult( - max_alloc=self._max_alloc, max_reserved=self._max_reserved - ) + return MemoryResult(max_alloc=self._max_alloc, max_reserved=self._max_reserved) def benchmark_memory() -> MemoryBenchmark: diff --git a/fme/core/benchmark/test_memory.py b/fme/core/benchmark/test_memory.py index 6b099d52c..15b12fdf9 100644 --- a/fme/core/benchmark/test_memory.py +++ b/fme/core/benchmark/test_memory.py @@ -1,7 +1,7 @@ import pytest import torch -from fme.core.benchmark.memory import benchmark_memory +from fme.core.benchmark.memory import MemoryResult, benchmark_memory def test_cannot_nest_benchmark(): @@ -24,3 +24,11 @@ def test_larger_array_uses_larger_memory(): _ = torch.randn(200, 200, device="cuda") assert bm2.result.max_alloc > bm1.result.max_alloc + + +def test_memory_benchmark_combine(): + result1 = MemoryResult(max_alloc=100, max_reserved=200) + result2 = MemoryResult(max_alloc=150, max_reserved=180) + combined = result1.combine(result2) + assert combined.max_alloc == 150 + assert combined.max_reserved == 200 diff --git a/fme/core/benchmark/test_timer.py b/fme/core/benchmark/test_timer.py index 82a2a578f..f066ed125 100644 --- a/fme/core/benchmark/test_timer.py +++ b/fme/core/benchmark/test_timer.py @@ -3,7 +3,7 @@ import pytest import torch -from fme.core.benchmark.timer import CUDATimer +from fme.core.benchmark.timer import CUDATimer, TimerResult @pytest.mark.parametrize("is_available", [True, False]) @@ -29,8 +29,50 @@ def test_timer_with_child(): torch.cuda._sleep(100_000) with timer.child("child"): torch.cuda._sleep(100_000) - report = timer.report() + report = timer.result() assert "child" in report.children # parent time should include the child time, so it should be # at least 2x the child time (since we sleep for the same amount of time in both) assert report.avg_time >= 2.0 * report.children["child"].avg_time + + +def test_combine_two_timer_results(): + result1 = TimerResult( + avg_time=1.0, children={"a": TimerResult(avg_time=0.5, children={})} + ) + result2 = TimerResult( + avg_time=1.5, children={"a": TimerResult(avg_time=0.7, children={})} + ) + combined = result1.combine(result2) + torch.testing.assert_close(combined.avg_time, 1.25) + assert set(combined.children.keys()) == {"a"} + torch.testing.assert_close(combined.children["a"].avg_time, 0.6) + + +def test_combine_three_timer_results(): + result1 = TimerResult( + avg_time=1.0, children={"a": TimerResult(avg_time=0.5, children={})} + ) + result2 = TimerResult( + avg_time=1.5, children={"a": TimerResult(avg_time=0.7, children={})} + ) + result3 = TimerResult( + avg_time=2.0, children={"a": TimerResult(avg_time=0.9, children={})} + ) + combined = result1.combine(result2).combine(result3) + torch.testing.assert_close(combined.avg_time, 1.5) + assert set(combined.children.keys()) == {"a"} + torch.testing.assert_close(combined.children["a"].avg_time, 0.7) + + +def test_combine_timer_results_different_children(): + result1 = TimerResult( + avg_time=1.0, children={"a": TimerResult(avg_time=0.5, children={})} + ) + result2 = TimerResult( + avg_time=1.5, children={"b": TimerResult(avg_time=0.7, children={})} + ) + with pytest.raises( + ValueError, match="Cannot combine TimerResults with different children" + ): + result1.combine(result2) diff --git a/fme/core/benchmark/timer.py b/fme/core/benchmark/timer.py index bac29e541..4a9d36033 100644 --- a/fme/core/benchmark/timer.py +++ b/fme/core/benchmark/timer.py @@ -7,9 +7,34 @@ @dataclasses.dataclass -class TimerReport: +class TimerResult: avg_time: float - children: dict[str, "TimerReport"] + children: dict[str, "TimerResult"] + _total_results_combined: int = ( + 1 # Used for averaging results when combining multiple TimerResults + ) + + def combine(self, other: "TimerResult") -> "TimerResult": + # raise if children aren't the same + if set(self.children.keys()) != set(other.children.keys()): + raise ValueError( + "Cannot combine TimerResults with different children, " + f"got {set(self.children.keys())} and {set(other.children.keys())}." + ) + new_avg_time = ( + self.avg_time * self._total_results_combined + + other.avg_time * other._total_results_combined + ) / (self._total_results_combined + other._total_results_combined) + new_children = { + name: self.children[name].combine(other.children[name]) + for name in self.children.keys() + } + return TimerResult( + avg_time=new_avg_time, + children=new_children, + _total_results_combined=self._total_results_combined + + other._total_results_combined, + ) class Timer(Protocol): @@ -31,8 +56,8 @@ def __enter__(self) -> "Self": def __exit__(self, exc_type, exc_val, exc_tb) -> Literal[False]: return False - def report(self) -> TimerReport: - return TimerReport(avg_time=0.0, children={}) + def report(self) -> TimerResult: + return TimerResult(avg_time=0.0, children={}) _: Timer = NullTimer() @@ -125,12 +150,12 @@ def _avg_global_time(self) -> float: ) return total_time / len(self._global_event_pairs) - def _child_reports(self) -> dict[str, TimerReport]: - return {name: child.report() for name, child in self._children.items()} + def _child_reports(self) -> dict[str, TimerResult]: + return {name: child.result() for name, child in self._children.items()} - def report(self) -> TimerReport: + def result(self) -> TimerResult: torch.cuda.synchronize() - return TimerReport( + return TimerResult( avg_time=self._avg_global_time, children=self._child_reports(), ) From 122c1df7067d0e34e444782f84aa5d973ae666a0 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 17:44:14 +0000 Subject: [PATCH 34/51] refactor sfno profile to use central benchmark --- fme/core/benchmark/benchmark.py | 33 ++++ fme/core/benchmark/memory.py | 6 - fme/core/benchmark/test_benchmark.py | 16 ++ fme/core/benchmark/test_memory.py | 10 +- fme/core/benchmark/test_timer.py | 50 +----- fme/core/benchmark/timer.py | 63 +++----- .../models/conditional_sfno/test_sfnonet.py | 145 ++++++++---------- 7 files changed, 144 insertions(+), 179 deletions(-) create mode 100644 fme/core/benchmark/benchmark.py create mode 100644 fme/core/benchmark/test_benchmark.py diff --git a/fme/core/benchmark/benchmark.py b/fme/core/benchmark/benchmark.py new file mode 100644 index 000000000..2f3b883be --- /dev/null +++ b/fme/core/benchmark/benchmark.py @@ -0,0 +1,33 @@ +import dataclasses +from collections.abc import Callable + +import torch + +from fme.core.benchmark.memory import MemoryResult, benchmark_memory +from fme.core.benchmark.timer import CUDATimer, NullTimer, Timer, TimerResult + + +@dataclasses.dataclass +class BenchmarkResult: + memory: MemoryResult + timer: TimerResult + + +BenchmarkFn = Callable[[Timer], None] + + +def run_benchmark(fn: BenchmarkFn, iters=10, warmup=1) -> BenchmarkResult: + if not torch.cuda.is_available(): + raise RuntimeError("CUDA is not available, cannot run benchmark.") + null_timer = NullTimer() + for _ in range(warmup): + fn(null_timer) + timer = CUDATimer() + with benchmark_memory() as bm: + for _ in range(iters): + with timer: + fn(timer) + return BenchmarkResult( + timer=timer.result, + memory=bm.result, + ) diff --git a/fme/core/benchmark/memory.py b/fme/core/benchmark/memory.py index 7c21c6696..6deb6430b 100644 --- a/fme/core/benchmark/memory.py +++ b/fme/core/benchmark/memory.py @@ -9,12 +9,6 @@ class MemoryResult(NamedTuple): max_alloc: int max_reserved: int - def combine(self, other: "MemoryResult") -> "MemoryResult": - return MemoryResult( - max_alloc=max(self.max_alloc, other.max_alloc), - max_reserved=max(self.max_reserved, other.max_reserved), - ) - class MemoryBenchmark: def __init__(self): diff --git a/fme/core/benchmark/test_benchmark.py b/fme/core/benchmark/test_benchmark.py new file mode 100644 index 000000000..6a99f7407 --- /dev/null +++ b/fme/core/benchmark/test_benchmark.py @@ -0,0 +1,16 @@ +import torch + +from fme.core.benchmark.benchmark import run_benchmark + + +def test_run_benchmark(): + def benchmark_fn(timer): + torch.cuda._sleep(100_000) + + first_result = run_benchmark(benchmark_fn, iters=5, warmup=1) + assert first_result.timer.total_runs == 5 + second_result = run_benchmark(benchmark_fn, iters=10, warmup=1) + assert second_result.timer.total_runs == 10 + torch.testing.assert_close( + first_result.timer.avg_time, second_result.timer.avg_time, rtol=0.05, atol=0 + ) diff --git a/fme/core/benchmark/test_memory.py b/fme/core/benchmark/test_memory.py index 15b12fdf9..6b099d52c 100644 --- a/fme/core/benchmark/test_memory.py +++ b/fme/core/benchmark/test_memory.py @@ -1,7 +1,7 @@ import pytest import torch -from fme.core.benchmark.memory import MemoryResult, benchmark_memory +from fme.core.benchmark.memory import benchmark_memory def test_cannot_nest_benchmark(): @@ -24,11 +24,3 @@ def test_larger_array_uses_larger_memory(): _ = torch.randn(200, 200, device="cuda") assert bm2.result.max_alloc > bm1.result.max_alloc - - -def test_memory_benchmark_combine(): - result1 = MemoryResult(max_alloc=100, max_reserved=200) - result2 = MemoryResult(max_alloc=150, max_reserved=180) - combined = result1.combine(result2) - assert combined.max_alloc == 150 - assert combined.max_reserved == 200 diff --git a/fme/core/benchmark/test_timer.py b/fme/core/benchmark/test_timer.py index f066ed125..dd9cd5624 100644 --- a/fme/core/benchmark/test_timer.py +++ b/fme/core/benchmark/test_timer.py @@ -3,7 +3,7 @@ import pytest import torch -from fme.core.benchmark.timer import CUDATimer, TimerResult +from fme.core.benchmark.timer import CUDATimer @pytest.mark.parametrize("is_available", [True, False]) @@ -29,50 +29,8 @@ def test_timer_with_child(): torch.cuda._sleep(100_000) with timer.child("child"): torch.cuda._sleep(100_000) - report = timer.result() - assert "child" in report.children + result = timer.result + assert "child" in result.children # parent time should include the child time, so it should be # at least 2x the child time (since we sleep for the same amount of time in both) - assert report.avg_time >= 2.0 * report.children["child"].avg_time - - -def test_combine_two_timer_results(): - result1 = TimerResult( - avg_time=1.0, children={"a": TimerResult(avg_time=0.5, children={})} - ) - result2 = TimerResult( - avg_time=1.5, children={"a": TimerResult(avg_time=0.7, children={})} - ) - combined = result1.combine(result2) - torch.testing.assert_close(combined.avg_time, 1.25) - assert set(combined.children.keys()) == {"a"} - torch.testing.assert_close(combined.children["a"].avg_time, 0.6) - - -def test_combine_three_timer_results(): - result1 = TimerResult( - avg_time=1.0, children={"a": TimerResult(avg_time=0.5, children={})} - ) - result2 = TimerResult( - avg_time=1.5, children={"a": TimerResult(avg_time=0.7, children={})} - ) - result3 = TimerResult( - avg_time=2.0, children={"a": TimerResult(avg_time=0.9, children={})} - ) - combined = result1.combine(result2).combine(result3) - torch.testing.assert_close(combined.avg_time, 1.5) - assert set(combined.children.keys()) == {"a"} - torch.testing.assert_close(combined.children["a"].avg_time, 0.7) - - -def test_combine_timer_results_different_children(): - result1 = TimerResult( - avg_time=1.0, children={"a": TimerResult(avg_time=0.5, children={})} - ) - result2 = TimerResult( - avg_time=1.5, children={"b": TimerResult(avg_time=0.7, children={})} - ) - with pytest.raises( - ValueError, match="Cannot combine TimerResults with different children" - ): - result1.combine(result2) + assert result.avg_time >= 2.0 * result.children["child"].avg_time diff --git a/fme/core/benchmark/timer.py b/fme/core/benchmark/timer.py index 4a9d36033..03333ca8c 100644 --- a/fme/core/benchmark/timer.py +++ b/fme/core/benchmark/timer.py @@ -8,33 +8,9 @@ @dataclasses.dataclass class TimerResult: + total_runs: int avg_time: float children: dict[str, "TimerResult"] - _total_results_combined: int = ( - 1 # Used for averaging results when combining multiple TimerResults - ) - - def combine(self, other: "TimerResult") -> "TimerResult": - # raise if children aren't the same - if set(self.children.keys()) != set(other.children.keys()): - raise ValueError( - "Cannot combine TimerResults with different children, " - f"got {set(self.children.keys())} and {set(other.children.keys())}." - ) - new_avg_time = ( - self.avg_time * self._total_results_combined - + other.avg_time * other._total_results_combined - ) / (self._total_results_combined + other._total_results_combined) - new_children = { - name: self.children[name].combine(other.children[name]) - for name in self.children.keys() - } - return TimerResult( - avg_time=new_avg_time, - children=new_children, - _total_results_combined=self._total_results_combined - + other._total_results_combined, - ) class Timer(Protocol): @@ -57,7 +33,7 @@ def __exit__(self, exc_type, exc_val, exc_tb) -> Literal[False]: return False def report(self) -> TimerResult: - return TimerResult(avg_time=0.0, children={}) + return TimerResult(total_runs=0, avg_time=0.0, children={}) _: Timer = NullTimer() @@ -107,8 +83,9 @@ def __init__(self): self._children: collections.defaultdict[str, CUDATimer] = ( collections.defaultdict(CUDATimer) ) - self._global_event_pairs: list[EventPair] = [] + self._event_pairs: list[EventPair] = [] self._entered = False + self._result: TimerResult | None = None @classmethod def new_if_available(cls) -> "CUDATimer | NullTimer": @@ -121,14 +98,14 @@ def __enter__(self): if self._entered: raise RuntimeError("CUDATimer is already entered.") self._entered = True - self._global_event_pairs.append(EventPair()) - self._global_event_pairs[-1].record_start() + self._event_pairs.append(EventPair()) + self._event_pairs[-1].record_start() return self def __exit__(self, exc_type, exc_val, exc_tb): - if not self._global_event_pairs: + if not self._event_pairs: raise RuntimeError("CUDATimer context was not properly entered.") - self._global_event_pairs[-1].record_end() + self._event_pairs[-1].record_end() self._entered = False return False @@ -140,25 +117,29 @@ def child(self, name: str) -> "CUDATimer": return self._children[name] @property - def _avg_global_time(self) -> float: - if len(self._global_event_pairs) == 0: + def _avg_time(self) -> float: + if len(self._event_pairs) == 0: raise RuntimeError( "CUDATimer report cannot be generated before entering the timer." ) total_time = sum( - event_pair.elapsed_time_seconds() for event_pair in self._global_event_pairs + event_pair.elapsed_time_seconds() for event_pair in self._event_pairs ) - return total_time / len(self._global_event_pairs) + return total_time / len(self._event_pairs) def _child_reports(self) -> dict[str, TimerResult]: - return {name: child.result() for name, child in self._children.items()} + return {name: child.result for name, child in self._children.items()} + @property def result(self) -> TimerResult: - torch.cuda.synchronize() - return TimerResult( - avg_time=self._avg_global_time, - children=self._child_reports(), - ) + if self._result is None: + torch.cuda.synchronize() + self._result = TimerResult( + total_runs=len(self._event_pairs), + avg_time=self._avg_time, + children=self._child_reports(), + ) + return self._result __: Timer = CUDATimer() diff --git a/fme/core/models/conditional_sfno/test_sfnonet.py b/fme/core/models/conditional_sfno/test_sfnonet.py index bb0cd8d20..42b58b245 100644 --- a/fme/core/models/conditional_sfno/test_sfnonet.py +++ b/fme/core/models/conditional_sfno/test_sfnonet.py @@ -6,7 +6,8 @@ import torch from torch import nn -from fme.core.benchmark.timer import CUDATimer +from fme.core.benchmark.benchmark import BenchmarkFn, run_benchmark +from fme.core.benchmark.timer import Timer from fme.core.device import get_device from fme.core.testing.regression import validate_tensor @@ -262,6 +263,62 @@ def benchmark(fn, iters=10, warmup=1) -> BenchmarkResult: ) +def run_block(filter_num_groups: int) -> BenchmarkFn: + def _run_block(timer: Timer) -> None: + with timer.child("setup_inputs"): + B = 2 + C = 512 + H = 180 + L = 360 + G = filter_num_groups + device = get_device() + conditional_embed_dim_scalar = 0 + conditional_embed_dim_noise = 64 + conditional_embed_dim_labels = 3 + conditional_embed_dim_pos = 32 + embedding_scalar = None + context_embedding_noise = torch.randn( + B, conditional_embed_dim_noise, H, L + ).to(device) + context_embedding_labels = torch.randn(B, conditional_embed_dim_labels).to( + device + ) + context_embedding_pos = torch.randn(B, conditional_embed_dim_pos, H, L).to( + device + ) + context = Context( + embedding_scalar=embedding_scalar, + embedding_pos=context_embedding_pos, + noise=context_embedding_noise, + labels=context_embedding_labels, + ) + x = torch.randn(B, C, H, L, device=get_device()) + forward = RealSHT(nlat=H, nlon=L) + inverse = InverseRealSHT(nlat=H, nlon=L) + context_config = ContextConfig( + embed_dim_scalar=conditional_embed_dim_scalar, + embed_dim_noise=conditional_embed_dim_noise, + embed_dim_labels=conditional_embed_dim_labels, + embed_dim_pos=conditional_embed_dim_pos, + ) + with timer.child("setup_block"): + block = FourierNeuralOperatorBlock( + forward_transform=forward, + inverse_transform=inverse, + embed_dim=C, + img_shape=(H, L), + filter_type="linear", + operator_type="dhconv", + use_mlp=True, + context_config=context_config, + filter_num_groups=G, + ).to(device) + with timer.child("call_block") as child_timer: + block(x, context, timer=child_timer) + + return _run_block + + @pytest.mark.skipif( get_device().type != "cuda", reason=( @@ -270,81 +327,15 @@ def benchmark(fn, iters=10, warmup=1) -> BenchmarkResult: ), ) # noqa: E501 def test_block_speed(): - B = 2 - C = 512 - H = 180 - L = 360 - G = 8 - device = get_device() - conditional_embed_dim_scalar = 0 - conditional_embed_dim_noise = 64 - conditional_embed_dim_labels = 3 - conditional_embed_dim_pos = 32 - embedding_scalar = None - context_embedding_noise = torch.randn(B, conditional_embed_dim_noise, H, L).to( - device - ) - context_embedding_labels = torch.randn(B, conditional_embed_dim_labels).to(device) - context_embedding_pos = torch.randn(B, conditional_embed_dim_pos, H, L).to(device) - context = Context( - embedding_scalar=embedding_scalar, - embedding_pos=context_embedding_pos, - noise=context_embedding_noise, - labels=context_embedding_labels, - ) - x = torch.randn(B, C, H, L, device=get_device()) - forward = RealSHT(nlat=H, nlon=L) - inverse = InverseRealSHT(nlat=H, nlon=L) - context_config = ContextConfig( - embed_dim_scalar=conditional_embed_dim_scalar, - embed_dim_noise=conditional_embed_dim_noise, - embed_dim_labels=conditional_embed_dim_labels, - embed_dim_pos=conditional_embed_dim_pos, - ) - block = FourierNeuralOperatorBlock( - forward_transform=forward, - inverse_transform=inverse, - embed_dim=C, - img_shape=(H, L), - filter_type="linear", - operator_type="dhconv", - use_mlp=True, - context_config=context_config, - ).to(device) - timer = CUDATimer() - grouped_block = FourierNeuralOperatorBlock( - forward_transform=forward, - inverse_transform=inverse, - embed_dim=C, - img_shape=(H, L), - filter_type="linear", - operator_type="dhconv", - use_mlp=True, - context_config=context_config, - filter_num_groups=G, - ).to(device) - grouped_timer = CUDATimer() - - def call_block(): - return block(x, context, timer=timer) - - def call_grouped_block(): - return grouped_block(x, context, timer=grouped_timer) - - for _ in range(1): - block(x, context) - with timer: - ungrouped = benchmark(call_block, warmup=0, iters=5) - for _ in range(1): - grouped_block(x, context) - with grouped_timer: - grouped = benchmark(call_grouped_block, warmup=0, iters=5) - - print("ungrouped timers: ", timer.report()) - print("grouped timers: ", grouped_timer.report()) - - assert grouped.ms_per < ungrouped.ms_per, ( + ungrouped = run_benchmark(run_block(filter_num_groups=1), iters=5, warmup=1) + grouped = run_benchmark(run_block(filter_num_groups=8), iters=5, warmup=1) + assert grouped.timer.avg_time < ungrouped.timer.avg_time, ( "Expected grouped DHConv to be faster than ungrouped, but got " - f"{grouped.ms_per:.6f} ms for grouped and " - f"{ungrouped.ms_per:.6f} ms for ungrouped." + f"{grouped.timer.avg_time:.6f} ms for grouped and " + f"{ungrouped.timer.avg_time:.6f} ms for ungrouped." + ) + assert grouped.memory.max_alloc < ungrouped.memory.max_alloc, ( + "Expected grouped DHConv to use less memory than ungrouped, but got " + f"{grouped.memory.max_alloc / 1e6:.2f} MB for grouped and " + f"{ungrouped.memory.max_alloc / 1e6:.2f} MB for ungrouped." ) From 83a302c94ae13c9c89382ea568b035bbdfc30b2e Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 20:40:33 +0000 Subject: [PATCH 35/51] define a way to run benchmarks --- .pre-commit-config.yaml | 3 +- conftest.py | 13 ++++ fme/core/__init__.py | 3 + fme/core/benchmark/benchmark.py | 23 +++++- fme/core/benchmark/run.py | 52 ++++++++++++++ fme/core/benchmark/test_benchmark.py | 15 +++- fme/core/benchmark/timer.py | 2 +- fme/core/models/__init__.py | 3 + fme/core/models/conditional_sfno/__init__.py | 3 + fme/core/models/conditional_sfno/benchmark.py | 70 +++++++++++++++++++ .../models/conditional_sfno/test_sfnonet.py | 63 +---------------- fme/core/registry/registry.py | 3 + 12 files changed, 189 insertions(+), 64 deletions(-) create mode 100644 fme/core/benchmark/run.py create mode 100644 fme/core/models/__init__.py create mode 100644 fme/core/models/conditional_sfno/benchmark.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 56aa68e18..a0fa4dffc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -12,7 +12,8 @@ repos: args: [--maxkb=250] exclude: | (?x)^( - fme/ace/aggregator/inference/testdata/.*-regression.pt + fme/ace/aggregator/inference/testdata/.*-regression\.pt | + fme/core/benchmark/testdata/.*\.pt )$ - id: trailing-whitespace - id: file-contents-sorter diff --git a/conftest.py b/conftest.py index 84c62901a..930e9fc68 100644 --- a/conftest.py +++ b/conftest.py @@ -1,3 +1,7 @@ +import os + +os.environ["CUBLAS_WORKSPACE_CONFIG"] = ":4096:8" # required for determinism + import gc import signal from unittest import mock @@ -5,6 +9,15 @@ import pytest import torch +from fme.core.rand import set_seed + + +@pytest.fixture(autouse=True, scope="session") +def deterministic_pytorch(): + torch.use_deterministic_algorithms(True) + torch.backends.cudnn.benchmark = False + set_seed(0) + def pytest_addoption(parser): parser.addoption( diff --git a/fme/core/__init__.py b/fme/core/__init__.py index 67658ccfa..a2650da09 100644 --- a/fme/core/__init__.py +++ b/fme/core/__init__.py @@ -1,3 +1,4 @@ +from . import models as _ # to trigger registrations from .atmosphere_data import AtmosphereData from .device import get_device, using_gpu from .gridded_ops import GriddedOperations @@ -14,6 +15,8 @@ from .rand import set_seed from .registry import Registry +del _ + __all__ = [ "spherical_area_weights", "weighted_mean", diff --git a/fme/core/benchmark/benchmark.py b/fme/core/benchmark/benchmark.py index 2f3b883be..eccbe1930 100644 --- a/fme/core/benchmark/benchmark.py +++ b/fme/core/benchmark/benchmark.py @@ -5,6 +5,7 @@ from fme.core.benchmark.memory import MemoryResult, benchmark_memory from fme.core.benchmark.timer import CUDATimer, NullTimer, Timer, TimerResult +from fme.core.typing_ import TensorDict @dataclasses.dataclass @@ -12,8 +13,28 @@ class BenchmarkResult: memory: MemoryResult timer: TimerResult + def __repr__(self) -> str: + return f"BenchmarkResult(memory={self.memory}, timer={self.timer})" -BenchmarkFn = Callable[[Timer], None] + +BenchmarkFn = Callable[[Timer], TensorDict] + + +_BENCHMARKS: dict[str, BenchmarkFn] = {} + + +def register_benchmark(name: str) -> Callable[[BenchmarkFn], BenchmarkFn]: + def _register(fn: BenchmarkFn) -> BenchmarkFn: + if name in _BENCHMARKS: + raise ValueError(f"Benchmark with name '{name}' is already registered.") + _BENCHMARKS[name] = fn + return fn + + return _register + + +def get_benchmarks() -> dict[str, BenchmarkFn]: + return _BENCHMARKS.copy() def run_benchmark(fn: BenchmarkFn, iters=10, warmup=1) -> BenchmarkResult: diff --git a/fme/core/benchmark/run.py b/fme/core/benchmark/run.py new file mode 100644 index 000000000..0c4177e26 --- /dev/null +++ b/fme/core/benchmark/run.py @@ -0,0 +1,52 @@ +import argparse + +import torch + +from fme.core.benchmark.benchmark import get_benchmarks, run_benchmark + + +def main(names: list[str] | None, iters: int): + if torch.cuda.is_available(): + device_name = torch.cuda.get_device_properties(0).name + else: + device_name = "CPU" + + print(f"Running benchmarks on device: {device_name}") + benchmarks = get_benchmarks() + if names is not None: + if any(name not in benchmarks for name in names): + print("Some specified benchmarks not found. Available benchmarks:") + for name in benchmarks: + print(f" - {name}") + return + benchmarks_to_run = {name: benchmarks[name] for name in names} + else: + benchmarks_to_run = benchmarks + + for name, fn in benchmarks_to_run.items(): + print(f"Running benchmark: {name}") + result = run_benchmark(fn, iters=iters) + print(f" Result: {result}") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Run registered benchmarks.") + parser.add_argument( + "benchmark", + type=str, + nargs="?", + default=None, + help=( + "Name of the benchmark to run. If not provided, " + "all benchmarks will be run." + ), + ) + parser.add_argument( + "--iters", + type=int, + default=10, + help="Number of iterations to run each benchmark for.", + ) + args = parser.parse_args() + + main(names=[args.benchmark] if args.benchmark else None, iters=args.iters) diff --git a/fme/core/benchmark/test_benchmark.py b/fme/core/benchmark/test_benchmark.py index 6a99f7407..e7e4d199b 100644 --- a/fme/core/benchmark/test_benchmark.py +++ b/fme/core/benchmark/test_benchmark.py @@ -1,6 +1,13 @@ +import os + import torch -from fme.core.benchmark.benchmark import run_benchmark +import fme # to trigger registration of benchmarks +from fme.core.benchmark.benchmark import get_benchmarks, run_benchmark + +del fme + +DIR = os.path.abspath(os.path.dirname(__file__)) def test_run_benchmark(): @@ -14,3 +21,9 @@ def benchmark_fn(timer): torch.testing.assert_close( first_result.timer.avg_time, second_result.timer.avg_time, rtol=0.05, atol=0 ) + + +def test_benchmarks_are_not_empty(): + assert ( + len(get_benchmarks()) > 0 + ), "No benchmarks were registered, but at least one was expected." diff --git a/fme/core/benchmark/timer.py b/fme/core/benchmark/timer.py index 03333ca8c..b73c73a1d 100644 --- a/fme/core/benchmark/timer.py +++ b/fme/core/benchmark/timer.py @@ -73,7 +73,7 @@ def elapsed_time_seconds(self) -> float: "Both record_start and record_end must be called " "before elapsed_time_seconds can be called." ) - return self.start.elapsed_time(self.end) + return self.start.elapsed_time(self.end) / 1000.0 class CUDATimer: diff --git a/fme/core/models/__init__.py b/fme/core/models/__init__.py new file mode 100644 index 000000000..4ce828d37 --- /dev/null +++ b/fme/core/models/__init__.py @@ -0,0 +1,3 @@ +from . import conditional_sfno as _ # to trigger registrations + +del _ diff --git a/fme/core/models/conditional_sfno/__init__.py b/fme/core/models/conditional_sfno/__init__.py index e69de29bb..d37a22639 100644 --- a/fme/core/models/conditional_sfno/__init__.py +++ b/fme/core/models/conditional_sfno/__init__.py @@ -0,0 +1,3 @@ +from . import benchmark as _ # to trigger registrations + +del _ diff --git a/fme/core/models/conditional_sfno/benchmark.py b/fme/core/models/conditional_sfno/benchmark.py new file mode 100644 index 000000000..953d81e07 --- /dev/null +++ b/fme/core/models/conditional_sfno/benchmark.py @@ -0,0 +1,70 @@ +import torch + +from fme.core.benchmark.benchmark import BenchmarkFn, register_benchmark +from fme.core.benchmark.timer import Timer +from fme.core.device import get_device +from fme.core.models.conditional_sfno.layers import Context, ContextConfig +from fme.core.models.conditional_sfno.sfnonet import FourierNeuralOperatorBlock +from fme.core.models.conditional_sfno.sht import InverseRealSHT, RealSHT +from fme.core.typing_ import TensorDict + + +def run_block(filter_num_groups: int) -> BenchmarkFn: + def _run_block(timer: Timer) -> TensorDict: + with timer.child("setup_inputs"): + B = 2 + C = 512 + H = 180 + L = 360 + G = filter_num_groups + device = get_device() + conditional_embed_dim_scalar = 0 + conditional_embed_dim_noise = 64 + conditional_embed_dim_labels = 3 + conditional_embed_dim_pos = 32 + embedding_scalar = None + context_embedding_noise = torch.randn( + B, conditional_embed_dim_noise, H, L + ).to(device) + context_embedding_labels = torch.randn(B, conditional_embed_dim_labels).to( + device + ) + context_embedding_pos = torch.randn(B, conditional_embed_dim_pos, H, L).to( + device + ) + context = Context( + embedding_scalar=embedding_scalar, + embedding_pos=context_embedding_pos, + noise=context_embedding_noise, + labels=context_embedding_labels, + ) + x = torch.randn(B, C, H, L, device=get_device()) + forward = RealSHT(nlat=H, nlon=L) + inverse = InverseRealSHT(nlat=H, nlon=L) + context_config = ContextConfig( + embed_dim_scalar=conditional_embed_dim_scalar, + embed_dim_noise=conditional_embed_dim_noise, + embed_dim_labels=conditional_embed_dim_labels, + embed_dim_pos=conditional_embed_dim_pos, + ) + with timer.child("setup_block"): + block = FourierNeuralOperatorBlock( + forward_transform=forward, + inverse_transform=inverse, + img_shape=(H, L), + embed_dim=C, + filter_type="linear", + operator_type="dhconv", + use_mlp=True, + context_config=context_config, + filter_num_groups=G, + ).to(device) + with timer.child("call_block") as child_timer: + result = block(x, context, timer=child_timer) + return {"output": result[0].detach(), "residual": result[1].detach()} + + return _run_block + + +register_benchmark("csfno_block")(run_block(filter_num_groups=1)) +register_benchmark("csfno_block_8_groups")(run_block(filter_num_groups=8)) diff --git a/fme/core/models/conditional_sfno/test_sfnonet.py b/fme/core/models/conditional_sfno/test_sfnonet.py index 42b58b245..f60bc21f1 100644 --- a/fme/core/models/conditional_sfno/test_sfnonet.py +++ b/fme/core/models/conditional_sfno/test_sfnonet.py @@ -6,14 +6,13 @@ import torch from torch import nn -from fme.core.benchmark.benchmark import BenchmarkFn, run_benchmark -from fme.core.benchmark.timer import Timer +from fme.core.benchmark.benchmark import run_benchmark from fme.core.device import get_device +from fme.core.models.conditional_sfno.benchmark import run_block from fme.core.testing.regression import validate_tensor from .layers import Context, ContextConfig -from .sfnonet import FourierNeuralOperatorBlock, get_lat_lon_sfnonet -from .sht import InverseRealSHT, RealSHT +from .sfnonet import get_lat_lon_sfnonet DIR = os.path.abspath(os.path.dirname(__file__)) @@ -263,62 +262,6 @@ def benchmark(fn, iters=10, warmup=1) -> BenchmarkResult: ) -def run_block(filter_num_groups: int) -> BenchmarkFn: - def _run_block(timer: Timer) -> None: - with timer.child("setup_inputs"): - B = 2 - C = 512 - H = 180 - L = 360 - G = filter_num_groups - device = get_device() - conditional_embed_dim_scalar = 0 - conditional_embed_dim_noise = 64 - conditional_embed_dim_labels = 3 - conditional_embed_dim_pos = 32 - embedding_scalar = None - context_embedding_noise = torch.randn( - B, conditional_embed_dim_noise, H, L - ).to(device) - context_embedding_labels = torch.randn(B, conditional_embed_dim_labels).to( - device - ) - context_embedding_pos = torch.randn(B, conditional_embed_dim_pos, H, L).to( - device - ) - context = Context( - embedding_scalar=embedding_scalar, - embedding_pos=context_embedding_pos, - noise=context_embedding_noise, - labels=context_embedding_labels, - ) - x = torch.randn(B, C, H, L, device=get_device()) - forward = RealSHT(nlat=H, nlon=L) - inverse = InverseRealSHT(nlat=H, nlon=L) - context_config = ContextConfig( - embed_dim_scalar=conditional_embed_dim_scalar, - embed_dim_noise=conditional_embed_dim_noise, - embed_dim_labels=conditional_embed_dim_labels, - embed_dim_pos=conditional_embed_dim_pos, - ) - with timer.child("setup_block"): - block = FourierNeuralOperatorBlock( - forward_transform=forward, - inverse_transform=inverse, - embed_dim=C, - img_shape=(H, L), - filter_type="linear", - operator_type="dhconv", - use_mlp=True, - context_config=context_config, - filter_num_groups=G, - ).to(device) - with timer.child("call_block") as child_timer: - block(x, context, timer=child_timer) - - return _run_block - - @pytest.mark.skipif( get_device().type != "cuda", reason=( diff --git a/fme/core/registry/registry.py b/fme/core/registry/registry.py index 98c00d6f2..4358447d9 100644 --- a/fme/core/registry/registry.py +++ b/fme/core/registry/registry.py @@ -57,3 +57,6 @@ def register_func(cls: type[T]) -> type[T]: def get(self, type_name: str, config: Mapping[str, Any]) -> T: cls = self._types[type_name] return cls.from_state(config) + + def get_all(self) -> dict[str, type[T]]: + return self._types.copy() From 66ca2aa167717e77240958e8968eac5530859237 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 21:14:23 +0000 Subject: [PATCH 36/51] add regressions --- .pre-commit-config.yaml | 1 - fme/core/benchmark/benchmark.py | 114 ++++++++++++++---- fme/core/benchmark/run.py | 6 +- fme/core/benchmark/test_benchmark.py | 35 ++++-- .../testdata/csfno_block-regression.pt | Bin 0 -> 12178 bytes .../csfno_block_8_groups-regression.pt | Bin 0 -> 12241 bytes fme/core/models/conditional_sfno/benchmark.py | 82 +++++++++++-- .../models/conditional_sfno/test_sfnonet.py | 9 +- 8 files changed, 193 insertions(+), 54 deletions(-) create mode 100644 fme/core/benchmark/testdata/csfno_block-regression.pt create mode 100644 fme/core/benchmark/testdata/csfno_block_8_groups-regression.pt diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a0fa4dffc..03f1d06a2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,7 +13,6 @@ repos: exclude: | (?x)^( fme/ace/aggregator/inference/testdata/.*-regression\.pt | - fme/core/benchmark/testdata/.*\.pt )$ - id: trailing-whitespace - id: file-contents-sorter diff --git a/fme/core/benchmark/benchmark.py b/fme/core/benchmark/benchmark.py index eccbe1930..ab38bad72 100644 --- a/fme/core/benchmark/benchmark.py +++ b/fme/core/benchmark/benchmark.py @@ -1,5 +1,7 @@ +import abc import dataclasses from collections.abc import Callable +from typing import Self, TypeVar import torch @@ -17,14 +19,91 @@ def __repr__(self) -> str: return f"BenchmarkResult(memory={self.memory}, timer={self.timer})" -BenchmarkFn = Callable[[Timer], TensorDict] - - -_BENCHMARKS: dict[str, BenchmarkFn] = {} - - -def register_benchmark(name: str) -> Callable[[BenchmarkFn], BenchmarkFn]: - def _register(fn: BenchmarkFn) -> BenchmarkFn: +T = TypeVar("T") + + +class BenchmarkABC(abc.ABC): + @classmethod + def new_from_fn( + cls, + fn: Callable[[Timer], TensorDict], + ) -> "BenchmarkABC": + class FnBenchmark(BenchmarkABC): + @classmethod + def new(cls) -> "FnBenchmark": + return FnBenchmark() + + def run_instance(self, timer: Timer) -> TensorDict: + return fn(timer) + + return FnBenchmark() + + @classmethod + @abc.abstractmethod + def new(cls: type[Self]) -> Self: + """ + Initialize any state needed for the benchmark. + This will be called once before the benchmark is run. + """ + pass + + @classmethod + def new_for_regression(cls: type[Self]) -> Self | None: + """ + Initialize any state needed for regression testing. + This will be called once before regression tests are run. + + If regression testing is not needed, this can return None, + and regression testing will not be run. + + This exists as a separate method from new so that it can + use small data sizes more conducive to storing regression targets in git. + """ + return None + + @classmethod + def run_benchmark(cls, iters=10, warmup=1) -> BenchmarkResult: + if not torch.cuda.is_available(): + raise RuntimeError("CUDA is not available, cannot run benchmark.") + null_timer = NullTimer() + benchmark = cls.new() + for _ in range(warmup): + benchmark.run_instance(null_timer) + timer = CUDATimer() + with benchmark_memory() as bm: + for _ in range(iters): + with timer: + benchmark.run_instance(timer) + return BenchmarkResult( + timer=timer.result, + memory=bm.result, + ) + + @classmethod + def run_regression(cls) -> TensorDict | None: + benchmark = cls.new_for_regression() + if benchmark is None: + return None + null_timer = NullTimer() + return benchmark.run_instance(null_timer) + + @abc.abstractmethod + def run_instance(self: Self, timer: Timer) -> TensorDict: + """ + Run the benchmark. This will be called multiple times, + and should return a TensorDict of results. + + This must not mutate any state on self, since the same instance may be + used across multiple iterations. + """ + pass + + +_BENCHMARKS: dict[str, type[BenchmarkABC]] = {} + + +def register_benchmark(name: str) -> Callable[[type[BenchmarkABC]], type[BenchmarkABC]]: + def _register(fn: type[BenchmarkABC]) -> type[BenchmarkABC]: if name in _BENCHMARKS: raise ValueError(f"Benchmark with name '{name}' is already registered.") _BENCHMARKS[name] = fn @@ -33,22 +112,5 @@ def _register(fn: BenchmarkFn) -> BenchmarkFn: return _register -def get_benchmarks() -> dict[str, BenchmarkFn]: +def get_benchmarks() -> dict[str, type[BenchmarkABC]]: return _BENCHMARKS.copy() - - -def run_benchmark(fn: BenchmarkFn, iters=10, warmup=1) -> BenchmarkResult: - if not torch.cuda.is_available(): - raise RuntimeError("CUDA is not available, cannot run benchmark.") - null_timer = NullTimer() - for _ in range(warmup): - fn(null_timer) - timer = CUDATimer() - with benchmark_memory() as bm: - for _ in range(iters): - with timer: - fn(timer) - return BenchmarkResult( - timer=timer.result, - memory=bm.result, - ) diff --git a/fme/core/benchmark/run.py b/fme/core/benchmark/run.py index 0c4177e26..d569d7181 100644 --- a/fme/core/benchmark/run.py +++ b/fme/core/benchmark/run.py @@ -2,7 +2,7 @@ import torch -from fme.core.benchmark.benchmark import get_benchmarks, run_benchmark +from fme.core.benchmark.benchmark import get_benchmarks def main(names: list[str] | None, iters: int): @@ -23,9 +23,9 @@ def main(names: list[str] | None, iters: int): else: benchmarks_to_run = benchmarks - for name, fn in benchmarks_to_run.items(): + for name, cls in benchmarks_to_run.items(): print(f"Running benchmark: {name}") - result = run_benchmark(fn, iters=iters) + result = cls.run_benchmark(iters=iters) print(f" Result: {result}") diff --git a/fme/core/benchmark/test_benchmark.py b/fme/core/benchmark/test_benchmark.py index e7e4d199b..bec5fbd7e 100644 --- a/fme/core/benchmark/test_benchmark.py +++ b/fme/core/benchmark/test_benchmark.py @@ -1,9 +1,11 @@ import os +import pytest import torch import fme # to trigger registration of benchmarks -from fme.core.benchmark.benchmark import get_benchmarks, run_benchmark +from fme.core.benchmark.benchmark import BenchmarkABC, get_benchmarks +from fme.core.testing.regression import validate_tensor_dict del fme @@ -12,14 +14,16 @@ def test_run_benchmark(): def benchmark_fn(timer): - torch.cuda._sleep(100_000) + torch.cuda._sleep(100_000_000) - first_result = run_benchmark(benchmark_fn, iters=5, warmup=1) - assert first_result.timer.total_runs == 5 - second_result = run_benchmark(benchmark_fn, iters=10, warmup=1) - assert second_result.timer.total_runs == 10 + benchmark = BenchmarkABC.new_from_fn(benchmark_fn) + + first_result = benchmark.run_benchmark(iters=15, warmup=1) + assert first_result.timer.total_runs == 15 + second_result = benchmark.run_benchmark(iters=20, warmup=1) + assert second_result.timer.total_runs == 20 torch.testing.assert_close( - first_result.timer.avg_time, second_result.timer.avg_time, rtol=0.05, atol=0 + first_result.timer.avg_time, second_result.timer.avg_time, rtol=0.2, atol=0 ) @@ -27,3 +31,20 @@ def test_benchmarks_are_not_empty(): assert ( len(get_benchmarks()) > 0 ), "No benchmarks were registered, but at least one was expected." + + +BENCHMARKS = get_benchmarks() + + +@pytest.mark.parametrize("benchmark_name", BENCHMARKS.keys()) +def test_regression(benchmark_name: str): + benchmark_cls = BENCHMARKS[benchmark_name] + regression_result = benchmark_cls.run_regression() + if regression_result is None: + pytest.skip("Benchmark does not have regression targets.") + # If run_regression returns something, we expect it to be a TensorDict of results + assert isinstance(regression_result, dict) + validate_tensor_dict( + regression_result, + os.path.join(DIR, "testdata", f"{benchmark_name}-regression.pt"), + ) diff --git a/fme/core/benchmark/testdata/csfno_block-regression.pt b/fme/core/benchmark/testdata/csfno_block-regression.pt new file mode 100644 index 0000000000000000000000000000000000000000..3ae9270b3f9f25352474bd2ff95f804ab6dc3611 GIT binary patch literal 12178 zcmbt)2{=|?yZ&oPGL$A%rY0FOl_~amUd^H;Q*)9jA=8^Q$($)uLdcYm6v+=2n%!m zOOxj;<=Fc;?e?(U;pSoQs^;zJ?Ct2|z6-%`K_tDh) z&7|_vv*6!1`@8>{i84p&k4*kOl(u$mF3!8%9e49qESd8^BBQJQn*evO*E{~vi~sI_ zCZNF4{1bs4`*@BXzoWfk$^8G(b^jyl++27(H^<)`LdmOXzw_vK|1$?!j>exj{LX3( z%@s>j|2G6CSr|~E_sW!c8cf4Waxlv(se1PrZR+U)SRwe4CJel$hLtXOd)pc!DdmqM z)rvK5$P+4@x&qA~PDcf=jrioTEe0(SM;ry-uqP}7dHPgOBss~qr zd678#>H1!DXiLGQxE|an9gGvEXw|%)Bw8~rFAnp4BvH59nYz`M<1W*aIOk_5ats>{ z4$YH8o8_@E>3JolSC`_gu#?E2mWcNlKCqNpfzQtk(pfQAsWDHurYka!NVE4LAZNc} z&zUB46ZA)?sCo<-8KmC?7NYTy0`~U$z0`YG3${PeW}ROUP>`;nJl~x-CvPm8eJQ{# zZ;xZZNhun#&k2nKV$kfi5lV*qg;|fc;j$xUBrkapt~e2i-&bgW|Fs4zKUqMH9%>t2 zJDZ3`ZN?}iCxzo;RdH#DM9tFP%Q#POI?6q9#%IlOXpkyY<33juHrNPKtIo6N9I^^! zt{mO4nvCX?#EB?3gNEzPp@Rnr=7SPmQamcc-p z8ys2H1lMhX;B@>Ix@xsK$UV3Q_Zr7@7jIeznjN2*K;5s`dOpmb1!G+N=dW>%_VGJCu;~cns?VE1}Fe z00d9&fc@Jv2)AH49CA2LPAK^kVS#mU)V&c}$4my-*ty){rYHzVbi~vFIS5)-Np3p1 zlWAR9P^){L=;ntJX7>O|TRQ@c!mB`W=~}4w42QnpV8Rhj)YlSDox%mxMwq)l0UA!paD^|& zgADyi#2#E^xU)iV&(kk7lFTCNI&-miWgydeO%@cJTR>y_XE4e10L{=$Lz@#5x!I>! zcyKBQT4n7){i6pM+uJgnR4`BqE`dPj`(StX5h=Cwg_@WxFnRZPNL}C#C-)<%;Lm|= zd_J%wEQJLG=h&|tquU=i327UxdECJ749jFO>uUO0TOsDyiw_2h{T zr42PNVQBt+Xo?*qdmsHG=`$aYCi9cfKgJ2V2Zh1UG=ptvUj{0#x5JJ}5?q_G*<6_3 z07dd~U^P3CQA!J8Jv3gDHU&j=dAN`SZQ#Mm#jY@B5rx`^Bdl|y7z9Kmfp=>Q_pa+-Ixa_z`-Oy+>584+an<#S*TDNL&uXinl+OZYP zg$#Mn(_Tj|KHd)QN9@5$ke{0qa1<1doj06)rxE(L%X1}iDD>pa1Vse!+;$%Niwt1p zNF9`L<*3vKl(V3c%kkgBG+Z!b#aDusS=Dnd^seu2l#tG#X*b*+R&BC_((M*Mp!fKbISk z1PR|nxZ9NEfK&3UYH;giSn9&Z?RNbH>6<$!bJq`w+yDa92ADyyF!D&d6{3YqQ21FZ zb9~@7SuE`ejR(eXpZhK2irt;htt_hor&AIzpKmP)-=BvYtd2rqV;aoD8;~*i3h+;f zg5g#U*KDm5bm(fs!&_-k^_B-rSQKmgF^LSM$3yldUwA*dMk`1;ZGTcvb3@DE+^;}b zaH18w+P=e(&od%pUII3gt)TRh6gT1LYVe%?22#%ygV2?WusNm#5}sWFh3C_`^RB)G zdx?Nc%>dG#&|Uq?HW~vykAsSvI>1#bfk^9oQuX00 z6YKbi%;$zdjj$bgsI!6`j6BDjR+2`)Rz4a~u&>&Fu{OkIU1#px*-qvfydy$at>Ly; zCdA$5hj9U$fcNb*O;~h?WPEOeiJRguC~rRM=fvR8&?*wp&%*kVb>x@*PB<7OLqGRO zfI{aD_86ZIS!ApQJABJ%^V|Fv0}d=JbP;cDbH$Y#!Xqo>FW@-Q$zl3EW7 zK;fAvXxqCL3cRD?efJd5^LauR%zsBaYcwz*$b+|ITgFrpc40XS?Yj$U?$ zfKE&Yb?+Ex@lPNIhJD0t$q0DrM!@PGX)tn?2TrAeVYJ#sB5YYta!q!lK2aU-vXc}U z6hmzrt->Hx7$Kj?7N3>W$zvhrmJ~An?0Y)qNFkA^yhArkv}Ijak0I=NS$x>N7sl^X zAS)HU$OUU}z@A?s^p$NF^DVy>&vs-$!rd(L zrLu-veXfM$_yp)PjDq;F5Q)9`VbQbY=r?W$JmAeF^WPjH0h1l{JGb1#^kf42z6XNC zK@W1uvm9MZ$JY4ADADWL&&lkj*)+5A74(mr4sYb7!94W_nYW9D(kWerO8tM4=hACg zcCr^$Jex&}jY8qENdw51SK{RSg=l20jqiUXfqLelDTw*8kflNhZ-&B{Men(ChB9r?)BAC>A9opjx`v(uZdsA z%fO2U6FievK)R)$5}nGw;K`~j*volj7&|W+&zD`poc!xl^iwV2>k0uM^EmoJC5bf5 zaR+hkXYze|1Nt77!RKFsfg_$=rDGXPtPWjfHYw%ehAbCGZg>j*ED3|@P6iNqCZ1*u zvA8OqL3Lg#K$<^+3{T3*-FI2TZkSg6wU27Xuf^o@cskAdGwGTXM2%$p@X6QJ5b-J! zg*isd$yebpv|16js%vAr$3jE@5^c&+&8*(;sz7`fBm+Bg2$p&4li`)#ba6#AQB%tV zv3^fnI3p3~NVl`c6wZPF(-^QJ+GIou$m%19VeuE`O143 z-V=p|Bdt`XLj)v-O|VyDgl$g+TNc z_rlw~TS4WS3`tsNMQ-$^(3lnpSabL_c|KJdrk}4O?~l)+zTLZ-@~}Q)-m?z|Ug?2k z+#xU>Is@LPN7xt>0uP!)>5a@xI_an&gpCm={F#;XQnqpRb9)CG+kX+4To;DoF9|TI zj{&$AidH#OK*vf)fNNfkQ-3YL!BAhzS4*REQhCG~&d}UN$uwVPn8wv4lUo`Mgm-Wq9JuC4=6tfH z3e!5+49!nu0|!`EYBMR?FNh^}GO)V9mA#g4iO)|)(dUvE;nVXda(g6^aJ9bCL(XSt zT3|3FT|5pq*3Ce_Nn2>(_9R;P$%c+t)Y9tBN8tF~ePlW_2R7RE(ZHHw?D4b0gGX)= zj#55uYtX~>fajHopt0+ICe#r%P&IaNg zAx*>YGwhCjMaYX>L!%_e(%kRzc+2KBT@&0zU*0%D7kF9Gs;k#1uSy)Zo{NBnXkoN2 zE+qvKuc|AYmrz07dPe2?D>fr&7917srvAEqv~e##YD!n*gH$!L?qM`8YZgIYH$9wp zP8Fli2s790G?;>ClH^B37}?G~s?v|UPiz`fF_-g$=2i>g!=}YlqDup}$=QIs;&RB% ziKGJa3bE)w58er1jiycsXqb_S@hy8$#dQuEI2&N&$q4qU}v+|;fw_QOg#j#35Y{s9(c%O zBTk&FgZ#^GQbDdIb1JY1=UWJ2v}7q1nOKt;mAAxSb2V7$@v*NC86o%nR_tkcL%yo* z#KIXR*q5!rL|eWm4~iz^`HjjL)whxE^c92qx8zV$@dJrt=RwU@dq}ojNE1$EV}iqV z`f+;$bzgb_W8bKfpS*YUS!^Ln!aLeg9#6*j*P`&HL=5!Yji+?xLqxPKb-K6+{7oj2 zh%#>w5Z8c=7Y*dbul#C-o~N|&*lU_|Qkjgsl}4U=&%~`~BFVuMQyCrO6=*jQhcS=m zfL_;n;FpD$E*A4o<(wviCxd4bR3u}TW_RlX9BU(TdsdKJ6V6H(_!Ii3*ZLL3uF+O>F)F3Ev) z*QG)1eJ0(va~6=7lfZZOAPHY%!9>@lFdKMBsuxHeXG5M(fai`+iTECOv|AI0N-r1U zmgG6OFv^bpe6yL!(Bl=;mdzVUd?+%jGgBq zPf8iKZQlqoZ)SjuqB@9O4q@}dAJY4BwM1!>EIIF4$5?*j5M%eT?D&2$bhD`aulSCxchZa#|8e?|*MU( zpFg1c>liehw*g^V3VpjIhfTY&2*oZCSQsB==pxZXEjIZfo;XbR9rA^A}f=yg!B0+jn!P-MJkD$oCimgC!!XR;Ee`2(tYGni06MVtFM3aV zz_6#>0s~aaXhlN>?sGZK&UmyM_Tpmi9vIve7`ba#-Re*!_GFCF_ zGPLE#)5xZ|IK*|v1L3x$B6O5N3D?~%rUnfHg1WDDs0#fL+pY#ha1g=2|PU~iI{_Vp! zsXqcF23hc!B1cRsE;2dSreWAO4mPg2ft|7jxW%EAKHvC~ELm-bJKjVQW5w~@s(mJ) zS$dJgjf;e+xu58lbEEYR?<>^ltTLdR0NTxO!Z}AaVSk%2#`zYZcbq<$>xn|MTOQHIzMV>UNwPyU7L*QhV76%LvX6roWMlvF)If zy~owO>$^__r0WdY-CtH`ZOX>(h-S)K3&ZXQf@r)+3r8h*(q+FApRKi~Rmy8ovzbet zS*k-9qkw}ZYq7AIVxNj9uBkdol{bnIw|U!OW`QUa9}T5p1_fk%*LR|~BZ_J27NX^c zQ*oT*nNdw_F-~90qpyc%wD z(M*N&IVk(M4N`Isla(_gu=9i{do5}Uwl9CfTKFBKGabIrb)pSa=;Tsbcjpi-tt}>B zzH~wEp?fhw3SY6c+=mUPpia(ZFp7Ff}faNKYl*JR0es;}lm6;<6~{8?}4+n5PFKp5Iln_VUYp{ES~w0oJZAg<7x+yem0LBSBWKlFQ&rGwg=$k$3l~04XCd* z1+PANXf62)%+Wpwu=-jRAQn}9*en8K#p>Yd!W2lgE2ZtbU$V~B49!h%u(}rV+-oZw ziFR@Zgp97uA7MwJCngR3Di9W*R|I3Lr|d`HOyD?OV)h%EfX(=`)K5bUHn49%G4u#z z)LsFVr=2v;DwEA$KB{e=&ty=XfXb;#fXl<=u~z^L>3Sh=sTJ6s`9P$lJ~0Z1R*|L! z<7ijzWq3Of%1$W_B&k0}zjH){VH%Yf)c|Keo`f)L8Ttj%rN5xjUIYyEb70niZsJ#S zf^jerCA>8iIOWw#sQj7;yVE|yta&_0(BA}iOI|`iUO*Mb8^Cn~R|seh12ZEN?%j?X zK+dVdjC+|xxaTvN&90}DZWu!lQvyZ)*P-{?K^Uta0?STj0Sa)q4F-$J&krGFX|o*e zk<-DDT~DCe{X*%fpnR-tXB}1F5F;eL^ z?X`M<>6HRCHOVc=NaQk`JXEl+q#w6UoLb|R^$14_2sUKS!V<9tGw8v{FY_RKvKN_78 zHH481tdiSksUhVkig#VZ1wR~cWX@PR=3Wr`3?8Qs1kTevxs7;CK%mA@=K)$9@Yg7r zSz(xz8kP+lV;kQ(;qbR=GXBR0w#PyfQV*EpVYTPzer$4$3uM#tFH}*`Vj8w=(4yxu z_ENtzbKHJm664RCNR1*Iu>Nip;kQvjxdXbmt|%KzmDi9jkNvR4F#vr`uhCu=KI~2n zAqO`VW57=ywHexoI+fPg8gvlN<>Q#2)wh|_5D^?NI0iei+OfdpD6T$}Pn~&1Bs$I; zcg^8p^xn5j$P7so60yb=-b={GkVGcV&xLvOsgK<6EQh?liEwcHB|3JrZhib#67JWC zLO;7wT%%({&)htTL7WiW&7Xqp9}nTSg9~x3Y%@K$V=f-93&5Sy_Nent8qyVQSrU>Qzqf_ z%t&lARiVTDrdaz#kG&S)NQWQ0laSA&`UFo0w)sdyz=d@n@-Y;qi#L-;n|V;LmP_vP z8sXM^KG4=v!bmy;LWTpt;Lt~MDES};85SaE#yt>9dI;%(8dxT~o~H0p;Mr#R(RtHB z{qSZGNIg3;bKY%Z)e~}d${Sf5Cg-Mvsuxmg7Z)GNRw@E|B&$OWTR2?#uE4V1GSj9gNxCdCVYdngBc z9zTG=&`IzXRhZ}RS{U`vbFkD*nQP-al_t&&8Qq`dl7gOZgtb3S`!cFYfk4>k`%4(M z%k&b>&LfzV@_;T-en5<$pJaD!FQE;$=A*n?I0#q!gN<+&EbF0QqF4vkFYLgny9Vx` zP~|Qu`T;hI9B!2aA4F`pNrZ~Nl6tS@=(8^ll;Ss2hg2)3XWsywwONpCQ2)&MO%H?2 z<>K(AwVh5Ejf5hPRQCDxHfY>i0TS{%*uJe%;F|0XMQZ%qk5=(a)<-+Ae(#S}O77%K zngGb{yiYf@rj6E}0Vqm+fSiFL+GM52THKAL@$oir`-c>_aN7+c7}uPuz}1O^_xb2Q@+X)d~o!)q>u& z_o-2R20DmOgm%l%l&9@Qt=c9-PVNvGDMeOCEwRV;Y70maEv99kfUbxbhL0Wh=-t1z zfEjk|AgcRR;`1x-89CK&7@s7BeOKOr zh%7F?lqH2GSL2)l5PEX1X%k5dHYis{i>mCT{Z?}V>t_4w)6adcV z*<`#>3q;;}NS40i=Wf|`13Fgs(xfa;YQM~y$ebe7_vL9KYdIB8&$1$P_bei~{}(wF zt2ydj*-E8mOOWmP1+dBRDHCCD0+SAZp+@XcMkT$NG&H{^r4k<*y-a)Zja4CT6IyBg z_C++xZ!9WaETO#aX0~Ep2l1>{tG;i=A;m!(NaKSi#QOanNb;42fh$2ovO$q1drFh- z>!e^*dL)BFZ>Z1=A2unxn1+c2lEHD2jK}Bgu(om)iRY`s6c3gbR-Gd$^a@R!Hy&iK z$)MKv9at=X9M3*+1pX)~xO9C2m2>PR>-Oy-Mh9-OZzVa{=48nvO#Du63yGpf*<27Q zKSh65jmO?gTA*iVMaoYaQ_f8(CbztS0(3$xB! z6gFCNFeK(Q>5qve{0epCQs`UKt-?>nT+||kX>H_P@>mGm=QpYtC6J1_A!K}uBJ9#f zCU%=Bd^%i8)3+pIm}D&7Y5u^lc{mg{B@Q#OMsCFXYB|+#Re(Ek(@2+)I-J_e5B$Ol zX!N^U(zxU^6Db`{G(%sKRL_~vw9g#(EEB}iH-oH{z68vf97Mj&k_CBj6Jqs!0UHpQ zPl7CKq3`q>s7~Ji_3?r*M`P`1O~C<%rfS0RKp8mSa~lJP#*!~TzO&cDr$T^b&E-7| zfx5TNBu7XVFW=cjtq;ag-zkEy{IMo1GqFMoxK7?@{vb&&j}i+-RZ#U5f#1%@{DS;t z0ZJUs@BU}!qZ~*3PtM2xG@xq!Z>*1hvtTY1`OV;dhO_m5@BdWe%>EMt^}m@feH^`A zMjfd8?S9*DZCxBzERp~32x;l)Ezs9mv`9xwOJ7G@S9_u60$t68`kLB{^!0Q`4?4Pw z^fdMK|7MfDx%kVz(GZQ=V1LJn?>FK9bUy#1nOFYz5C7Eu8z1z)g8ic(SMi^KR*qV9 z{{Z$cZs32#{6~we@;_nT|9@cq7hmtc!v3RcR^gvuEk@(>2de++*8Nwsf6PSLe?n{h zGuq#MxBm+Dk0~YhPf$&&eCJiGVx2&qs>g-T?Mk|`QhLP#Nxe`vnGQdAWzWYX)ufx3)0ktp5Kh z5q!IXInHB8pB@+%8Wa{9JjOFLFvQbW(=9C2&wsP9TZp$un4iCwTc~%y=D-lQExN+N ze5$I><3@XI9&PEq-aDB8?_Gqg{R7=Ym;e2uaIk>$n9(-c!Gg~GqraX(VZmb;%L|7F zk6UKTQMDaoD{ed9c5-O2km~4F+vB#AZO4QLkKga<8R+lt?HM}ycAJHlhIo00czap- zd4>uH3#&N*(!Z(rT3jtzhCxu{m)KxIWzy-$v)Ho`CX~1K9sCVG+uv=Tq`hPw5f0E7LFErHO`?rUEB?E2L4TG*Bp(;B|#9REQXW2 zG>B*i8!)yhL70MZcujl)?z}b!yIbrT zkwGDBlXSp@zKNi-<`7M;{X&zU@M!G1GssjXgQ78ye3lBso)AUUUiX2NB#py_iUQn` zVTZzpHemJl6pYNMCngKxapkLMj6Qphtnge45o&u)gZQj~lYG_K+{Fn)rr2Uk^$)7t6o(6MK12CFdH8&F z9O2aXqHIeX2B}nG`cszuJS7@6gXYovNhcUidcTQ;<5Co#n?(!fhGKrE9TVBXrToqL zw7@iocFV`Gw|*R@N~>f~ z@qBCyMi{*!?UHwBXxb4}>K|hDLxYK(`vZ1kkT~{njR`DB!<>wHS>zwKBOWYv{tH63Uq}ZuDLCOxtH&r(%lv)F(6;dyXce z^NkV=c;X5{LG84TbB(Stw?)e>xj0UI2fDnBrE7XkkSQ}omlXwAZmt8Fd0lj+t}@!K zJ%~4UPNWsJADO&Zg0I#T(;hPuYG0}7t+|$3lrgX z(mYsyGXXkVnn=mfN=TR>4>rNa;HA9?oQW5OJ!LAOY0=B{zuijJ6h?@2x)P*a&VtbG z7m3JoNhF-LR%19n|crJtR3{{Y;mT}{sW_=l7kgLHxLsMSVXh{OJnJQv^^q_fRmaMkRGWlISla<@A7<1B2HXoDe6A#|Sid z)kH)y3!#SzhSq0#B>C!Ba{t;bu>WZZRi)P%hew-%qd1iqYmP83HRA9S-!UEUJm8Gn z1W2xICV`pvAnx`o@cNnrhx_!PYWWE=P%p%YRrP~TXEcbk?IzO`k3)Iu6pZ6MXV%H9 z!GYv5;Out?MXODa?sbFWbuuq}vRS`UXh#h|a}1SAi2*SNeq1~LKu@I9)Ns2cOr zZ(q$oNjid=bu0z=rN7d+cxzBu=>|7k9;T9Bz5rK?1th(g^uo&=xuCh$xU|Ubzd=()4 zz;&>z&S$#5ABC-zOR(QS0IYwCac@7C=5lQJLCeE=(D%ZR*&^f)>RN47KXWSGrg9IO z=k`Fg4i|Pw@}T*HDP!QOwmaW8}=eK~V^d@Xwbdc=Xe~37g zD01^sbLn)G>mVB?2Xs9$VFm(PYlBY z<5>?$ZFFr&h4bliKyuXsMqRCk#9!*5BRhT))%8JiYUyR7WH|{!Pd{c*&lANm4#W1X zI{2-cf|$A-Mt2LrS%GOpu2~qZ&oz;rz*7)3Ya0{4%Nbl7FM&~7I#i_Su~qvQFjf9T z%%O8a^k(v1Ec~LxY;*cSBc%lhMHG24%@oG*vq*<3Nm|E@@eW7|oJ@Hli@asXzl ziooYDn;@iMH_mWA2A95HfwVoxk#kqLrvLIEWVMwZ99NY_#rRgZ<(5ZPhhAe`S{SbN zH~}%Q__)sx>%-#Lv3PdxIa<~24}I|;aM$1k`gW}b9%~eV!TT#9^ss~~-*qQgTA@YMg+B8jtaTa?q`D6<1!*tZ^*TfYH zci4<*DJm0xj!B&Tj`|wiVV}Dm09E@}bdQG=NP8Y3V{gTQa(x$hdbtFSHF}^k`<|^g ze8CK^ae?RC-_U2JW-u6YoE|hyfWhoRG9bwXw>!bqUE&k?F3)E<-`9-JshUVdGKbr9 zqn7nhB|Ko}zMCHW5 zzCjHW_r%fgs9D&sTn76)mtsprZjHx?3A>tC%hZNgV07DV+FtgSILl1n6~yMiu*5`e zzI7)Fzh6P?C+Cuc@v11^RgP5~o5`nwGgu+}h=RvaQjqf#*5+zr{q|V6J0QxNtR9BO z(KAu?`78|Iu@$CP4AE0tN-)H{5Ee*mB5Jk{c)=a0Mek#BDfSu&Jtg20@QR#SK9kD{ zcEuIzPSdq>+;F+oGOS)Pj;H@Ci0M$A4my)9L2Paao#Js4INrlG0?U74kdY;pk37aY zmwYntW;U#I=^@Xb?7`0wS5Y^miJGpxPsp^XVCUJ31%ACa$43ZPF*!7M!!YfS%_Ci# z-Jwo@KbdShmKQWKK+ow4V$!3jsF@mq_UdlbXv{u%8@?BHWoE*RiWuC5B6xGRB698L zy7KiOZ4$M8EYE zjJsxqa>;zW-c2GH@;;yJH5SD4T!v|vjm7$V_2kaFTUbwiz`mho^hs<&f$t&A!8k)K zznOxsk1j) z+j21NP6oc`7v?n>Ors*6+n9`$JX&NSfO4)^u=qkeGz>fAt1lNYQS}(gbrmrmzvQt? z5(v^nm2ZnZL4SUeBK4)+3)=LBC?K_ zN7Rq5Jz~(g^^sY)fIs#5k`LYSt)^-YNm%@h3&-?#(q`{7FqNdUy-J0kH@g;vvXb$W zo+g%v>f*Pn`RGw0MVtH)FIn$}D`GRrT77~J7j9yUR|N!%>tMOrZJH`vK^r&x9#^x; zm++N1(mIjxRgj>jeXlWncOKqxR0P?a7qmws7i~=$@o^wwW_?O+Ha(pqEw_1kWcsn{q=_t__ z3rlb={)8UuEkR&nDE5v!fr@g7W5>>>=ZgFZlh;YgrUjtRfzxP|@B}mG9we@tVsY)| z1K46Fgu9gad6M0hNCYbBAI}BA@0I}c4&P#KEnE)<(rWZpP$zNEtAYqJ7b@pZg+n#@ zB*VLfh&w%CZ`YltSu>2muOI?4)<@&6&{N=l;vvnryB)5!BXPCg0DZrBWZ9H>lvFv! zG^$#|V#mqQ(tngOvXLWGeVpLf{!OG{&jBJ5ks!0^KZ zeGYtiuSVXU8(nt@E+ggQQ>f>xDRj)aJLF!a2JO4V`0Ii^DwEb4QQ+z@CVvJ?8F{2=&%}GzDSX%&@L+j8 z98Q!Z-}df?LWK;XQn(*BB&W0bA-cFDPJ($gdn`oXdqK8+(ggL03vi+69X+si8ZA%% zN)7duY1-)>=p-otm5=Vwn_(x(FI1%)>QAz`O9z|#{cr=HHuMZUqCd74GyZVROx&;^ zmhWCdbC*Z#`^?z3y>* zvOEjxat_h_#lE2Lc8)qeS7w81z7e(CxftFs3l+~FMT;E~)Z$|+CMl@lg|dlc7v~r{ z4Ao!)X(Q1|D%4bE8J^9ajhQ!Iq0Gkzq@h^}dN!-FHM^wIJh7Zc_=#iKWeJkFdJ0VN zWpP{fSz0gYz=#)AqA$&5L$Y$&m$E%%<}yp%uvLWjc1i;6?%s$Ohs^P?hbO(7F%=hi zJHp$uSfkx6PgXEX(D2P68s~FybZ_K3#!0>>ho#aWZ-P2r=qW*`rRHFeUyOd0-!QzV zjlLY31Z5_R;6V2b*v)-F7kGxCpu97NjZidY`{>1suUT`KBGyi6i0*z9ji=|EV2_y? zPdliE&3R*mBH{N4@9&c6vZENz80wNyAKhEcFfBcjeHX^3qg0Y7R(*3qq-xCGK247TqU?GeJ?$ zP-;^cMirXi*Gr3GQ2HbhPDx`&`jwz#fd*bWFTrc$--oF^zt|>Gz}mLn>M8ND>`AW| zbo`Y=c)W59@LDdTg2PUf2%Uq`U9nW{hZCLJ)4UEanp?5>rMH3-%;hZMCR?@N~Yk<5o#vHk9FI) z^tgU2RWPd}nmhEVa z)3-aC=*1&RTON&@d4f%TC`ZpOu3Rtl%?lY!Y8#A5tS>Z=gOxYxc2z^*I3rqXW;BlR!=I}jVYEjUU8kWB#W#hvLl1(=g>7< z7@TYJF;vDJs{)Hq+13*n<5`wW~hEroUtokH=5_2_T+or)~agW(D}G}(Iw zwKr|S&fIh~IxLI%H*%53nBjNXYasjnCeC@b5?7Q{D)%)Ov!*UZp$DIs>Vor>77Ai* zB};OKFOs9*IVy^Q%)Z530-kK#)`|@B-#_WS&JSGJ{i+Vw1ZXs>H zGoSSM>7jj^BSai?VO=L)#*apR^tAV58rpW697wdlQ&try@H`Jiy1&ySnF?sRe2BhW zmQ9u$AHk;*X*gBkB&r(EfQpnBdlZ;? zo`Lv+ED)dH4=3~Q0~+rKd-EDFD>({x!{oRd=c_{C=9j?f*pbVS2tbX z`~tMM4zX_*7Q^$FOC)0H!&rACiKhuV{6|3B;1}E1KLFX?6CfzNpA8=)2)EP6fi%w)w%)lwiWa0m)CnoB(9Lop zBs4_qm(6D`Mqh!Fh#N%Y^EB9@E(Ai_BcT1c4_+FzfMDY2y8mJ~L~NhP4d1bjl&{_l zo+ma!s%#a=e?197X?)yJBbIa~X>fxUwy;w)J4mhhC&uZ+63FCdUQU2v4Q-meh;Y`Z%A~NHpa#tgth%S@TyDz>kgj6CXPEDvsVZYUowEpf`$+x=!4tt%J72w&Ye0(C$ZECg{}` zc4av~Z(tmyVk$;hC0WceVO#0$qJvaq*9g|VGQ+{z2RQe68LHVV!|!Jm@PN`VwNakQ zbG5U^)dhj*<|+d(T&wBbv?lCu)Ixn}4cxVN0`IW19Ue_-K+iQ}c}ia+vFd&W?ohi- z>u1KJ>eLt_nel_l%soPq-$^qeTCx}^c@Pusox}WBqw~05uC)H+A`HZ1R9kC2@5O`p zDE8qj8of=$Kk8@lL~5duZ-yql7BdNjzVVS+5BjLTR|OU`nfT*H8AeP`ClWfw7?EcXI%ap= zG$ig4_|WtVDF~0G7hfBp)|vtOt?D9CJoAWDrB|}KXGUPFV;XEZw-yB6YM{D}3{GH| zlk3YGs6$E_Y*fynH>S!#WY!+mSE-)8J8256sN|y3vNYJE-p^XW4Z*4;}^c?)xUEr-ay=UQM9)xp;49mYG?7SrZkU93U=dfaI@ zs?$%2W?nMU6HO+obiC=z07aPIs0Ipi_pzaVjpU1BGZ|Yy5q5h&Wcj>9$j163*j&>L zmH|V=<-lTm_LL9z3aHRf_B}c6y^VfLDPV=oSJOSaDUtJzCAk-7lB^t8aQZTaPJo|G zuW|~Fwe_W6T_nkIha&1(%cbi~9?dn5JtPIFqju33v-gsLeyei@LjV8JWMR<{qg>2 zx@s@ochwpPK5M|F3EFt`>nbecMgVDFjrm(Wp)~n*^;L;#TKGPM+0!dUwKNQPfMy|u_kbc_@*SX8&5@HuDKCtO(?JImc5lspEp3Y^UmStrF*eOUxIchtfH#v^JvRb1}deFprQO5 zRF?ZjPx5t<{NXz_PN!du?iIM!c1m#ny^ZOwG)eqWm?>@1XnnBX9H_?1kHL~HY63rdrr)B%Kp{qX}&%64t(c0~_ zM@khx)}*4bTyo9Dkb6Ya=qOQIYXds#OTfm-4UdN(AnUv4;ncVRRy$dhDrFs^FE7a8 zoe@j4v+blc+m!I#WeGIyJWS$x*W=tjtVqx48Ms&40Gll}QTkgVjXvjt7Pk+OttJt4 zo#Rf@MBRw#?fpdR#R&10jDcYdAM)Wu1^Ve|K&_iGR?p5PLDO;=q1JNp#Pup8dg}-k zV6@2oFgu8RqXl}6C&=kbV)&+AoK$A*qqhrl=`%N$p5}hQ+z~-soh69df2||-lRa3q z32Agdq=%i<%ZFDh(((NyZ)kon35%O`NmHW%DkRuq!X;67#$AHv_kN;Rx7c8L*yJb4;`ok3ttbWI=ym^Tc zN%aEPgqtkPv4@8l6L5ntKb)%~bnW*qjB#ZGt+4t*%rl*;KT3wd6RsS5F)|?Si4mZ9 zteH1hZYXf9k1xdF0ZI3}7ZG`nE&+Sjc9 z=$UD*872Hfx-?&^(yV^yHC1?239O^)LI=Ks=wANNgYRpu;W)t|}k5mu!<9b-`V zwS?XiPJ}*o5kxjB!n|!O;6|G!cAg%?b~@C7c+Gw|F8!HqPaluUi!8DD=TkN=^|_h; z#&kMO=peZrw26Fte1)Fr96jgq4Tcq3r$_g!+o*1+5ShPkI$TrVhVvH+pv~qhWYeNd zAR#H_bo^~1p=Csy3(Se;6iMiL^o+>zxk9+}4WgA5j$d-K$+~lcgnNGx=*U@uzHB2o zYHkm^k4?w=J2RLg+j3yt+GaYWphR5bCGd@(H&Ng_$nZ%GkyXSI9wh+O&-P=K9aG86 zuN~BV;U+koq)YGCHL?|5a$s4-2c{J&AiB7KjPcw+j*Xc??;6C?kEa*F_jd!#g+UIq zAG|~=&bL9<%@WuUs|Lp-OM&$}3Hef=z*dx7En zVd!;?AzJU$L11()ewJE6>4*cIkx&LrnLKzeD8>~r?1b`zXNc;uGo)2F420{WAasiu z*XhFrh%wHCL<_Ca@1)4hnROc$x~+zvJ)&@rSq^^G5JXOwg5&d2XxcvnKBhu|^XI{w z<@X?6M~1{}sDiJrBrVgP2{E&*iGz0$oNRso)tl#&hn4xnD~kAmE@7kt5{I~zJBzeBzlvM0~3 zgcir6U@`d_*;6S4gIa5d?t~L$vT^~~k9`9D7lnz<*jLbW=O8_#Jq=3F`qP1rVIUoI z6@Klngt1o>D92IZvVK$*bSw0j6-~B*+p?Ch&SwMYOCt#!Gl_fS(E+eJEy`^$TT1#( zs-WYu1K5Av2WtM0$!@(|=&tNxRgC?hXYN5z&ypl@?~jszE9THPNsRFJ#gdP0kyNw$ zBYa$Uo~+PGfb47UNy4|MAZMEnug6V--{hlM*Z#Z+RSxHO{mJs4D*j z`uH~lQ&0G}gVx;jEB~7RG~`VEO9z^NgD*FGhxm;Ws5{($bGUAPUe*@U|G|)sfswAU zj){qZj*hW`zM;OJwyvSJp0T!pj<%7mwy}w}zLAl!w$9%u)k(+CM2&`s^Sj#Hj`?l) zpXBqOVcy^O|F!(L9Q41d{u#{G`WMLsqpa>j8HPu1Tz`|t8Uzgz#7oE*;ZKN^qr``fL+e`L|$ UNpHd5tn+A}ah%`n|K9fh0K& BenchmarkFn: - def _run_block(timer: Timer) -> TensorDict: - with timer.child("setup_inputs"): +def get_block_benchmark(filter_num_groups: int) -> type[BenchmarkABC]: + class BlockBenchmark(BenchmarkABC): + def __init__( + self, block: FourierNeuralOperatorBlock, x: torch.Tensor, context: Context + ): + self.block = block + self.x = x + self.context = context + + def run_instance(self, timer: Timer) -> TensorDict: + result = self.block(self.x, self.context, timer=timer) + return {"output": result.detach()} + + @classmethod + def new(cls) -> Self: B = 2 C = 512 H = 180 L = 360 G = filter_num_groups - device = get_device() - conditional_embed_dim_scalar = 0 conditional_embed_dim_noise = 64 conditional_embed_dim_labels = 3 conditional_embed_dim_pos = 32 + return cls._new_with_params( + B=B, + C=C, + H=H, + L=L, + G=G, + conditional_embed_dim_noise=conditional_embed_dim_noise, + conditional_embed_dim_labels=conditional_embed_dim_labels, + conditional_embed_dim_pos=conditional_embed_dim_pos, + ) + + @classmethod + def _new_with_params( + cls, + B: int, + C: int, + H: int, + L: int, + G: int, + conditional_embed_dim_noise: int, + conditional_embed_dim_labels: int, + conditional_embed_dim_pos: int, + ) -> Self: + G = filter_num_groups + device = get_device() + conditional_embed_dim_scalar = 0 embedding_scalar = None context_embedding_noise = torch.randn( B, conditional_embed_dim_noise, H, L @@ -47,7 +85,6 @@ def _run_block(timer: Timer) -> TensorDict: embed_dim_labels=conditional_embed_dim_labels, embed_dim_pos=conditional_embed_dim_pos, ) - with timer.child("setup_block"): block = FourierNeuralOperatorBlock( forward_transform=forward, inverse_transform=inverse, @@ -59,12 +96,31 @@ def _run_block(timer: Timer) -> TensorDict: context_config=context_config, filter_num_groups=G, ).to(device) - with timer.child("call_block") as child_timer: - result = block(x, context, timer=child_timer) - return {"output": result[0].detach(), "residual": result[1].detach()} + return cls(block=block, x=x, context=context) + + @classmethod + def new_for_regression(cls): + B = 1 + C = 16 + H = 9 + L = 18 + G = 2 + conditional_embed_dim_noise = 4 + conditional_embed_dim_labels = 3 + conditional_embed_dim_pos = 2 + return cls._new_with_params( + B=B, + C=C, + H=H, + L=L, + G=G, + conditional_embed_dim_noise=conditional_embed_dim_noise, + conditional_embed_dim_labels=conditional_embed_dim_labels, + conditional_embed_dim_pos=conditional_embed_dim_pos, + ) - return _run_block + return BlockBenchmark -register_benchmark("csfno_block")(run_block(filter_num_groups=1)) -register_benchmark("csfno_block_8_groups")(run_block(filter_num_groups=8)) +register_benchmark("csfno_block")(get_block_benchmark(filter_num_groups=1)) +register_benchmark("csfno_block_8_groups")(get_block_benchmark(filter_num_groups=8)) diff --git a/fme/core/models/conditional_sfno/test_sfnonet.py b/fme/core/models/conditional_sfno/test_sfnonet.py index f60bc21f1..eb01658f4 100644 --- a/fme/core/models/conditional_sfno/test_sfnonet.py +++ b/fme/core/models/conditional_sfno/test_sfnonet.py @@ -6,9 +6,8 @@ import torch from torch import nn -from fme.core.benchmark.benchmark import run_benchmark from fme.core.device import get_device -from fme.core.models.conditional_sfno.benchmark import run_block +from fme.core.models.conditional_sfno.benchmark import get_block_benchmark from fme.core.testing.regression import validate_tensor from .layers import Context, ContextConfig @@ -270,8 +269,10 @@ def benchmark(fn, iters=10, warmup=1) -> BenchmarkResult: ), ) # noqa: E501 def test_block_speed(): - ungrouped = run_benchmark(run_block(filter_num_groups=1), iters=5, warmup=1) - grouped = run_benchmark(run_block(filter_num_groups=8), iters=5, warmup=1) + ungrouped = get_block_benchmark(filter_num_groups=1).run_benchmark( + iters=5, warmup=1 + ) + grouped = get_block_benchmark(filter_num_groups=8).run_benchmark(iters=5, warmup=1) assert grouped.timer.avg_time < ungrouped.timer.avg_time, ( "Expected grouped DHConv to be faster than ungrouped, but got " f"{grouped.timer.avg_time:.6f} ms for grouped and " From 76fe45227fc0eeb856ba09ca385f5d641d2331c7 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 21:17:49 +0000 Subject: [PATCH 37/51] use ms for times --- fme/core/benchmark/timer.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fme/core/benchmark/timer.py b/fme/core/benchmark/timer.py index b73c73a1d..e172163ea 100644 --- a/fme/core/benchmark/timer.py +++ b/fme/core/benchmark/timer.py @@ -67,13 +67,13 @@ def record_end(self): self.end.record(self._stream) self._end_recorded = True - def elapsed_time_seconds(self) -> float: + def elapsed_time_ms(self) -> float: if not self._start_recorded or not self._end_recorded: raise RuntimeError( "Both record_start and record_end must be called " - "before elapsed_time_seconds can be called." + "before elapsed_time_ms can be called." ) - return self.start.elapsed_time(self.end) / 1000.0 + return self.start.elapsed_time(self.end) class CUDATimer: @@ -123,7 +123,7 @@ def _avg_time(self) -> float: "CUDATimer report cannot be generated before entering the timer." ) total_time = sum( - event_pair.elapsed_time_seconds() for event_pair in self._event_pairs + event_pair.elapsed_time_ms() for event_pair in self._event_pairs ) return total_time / len(self._event_pairs) From d61eefaec456e904a4963f1acf1ad076933c7b28 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 22:05:50 +0000 Subject: [PATCH 38/51] add code to plot benchmark results --- fme/core/benchmark/.gitignore | 1 + fme/core/benchmark/benchmark.py | 171 ++++++++++++++++++++++++++++++++ fme/core/benchmark/run.py | 50 +++++++++- 3 files changed, 220 insertions(+), 2 deletions(-) create mode 100644 fme/core/benchmark/.gitignore diff --git a/fme/core/benchmark/.gitignore b/fme/core/benchmark/.gitignore new file mode 100644 index 000000000..1a06816d8 --- /dev/null +++ b/fme/core/benchmark/.gitignore @@ -0,0 +1 @@ +results diff --git a/fme/core/benchmark/benchmark.py b/fme/core/benchmark/benchmark.py index ab38bad72..e410ae06c 100644 --- a/fme/core/benchmark/benchmark.py +++ b/fme/core/benchmark/benchmark.py @@ -1,8 +1,10 @@ import abc import dataclasses +import pathlib from collections.abc import Callable from typing import Self, TypeVar +import matplotlib.pyplot as plt import torch from fme.core.benchmark.memory import MemoryResult, benchmark_memory @@ -18,6 +20,175 @@ class BenchmarkResult: def __repr__(self) -> str: return f"BenchmarkResult(memory={self.memory}, timer={self.timer})" + def to_png( + self, path: str | pathlib.Path, label: str, child: str | None = None + ) -> None: + # note this function was generated with AI + def total_time(t: TimerResult) -> float: + return float(t.avg_time) * float(t.total_runs) + + def self_time(t: TimerResult) -> float: + t_total = total_time(t) + c_total = sum(total_time(c) for c in t.children.values()) + return max(t_total - c_total, 0.0) + + def fmt_time(ms: float) -> str: + if ms >= 1000.0: + return f"{ms/1000.0:.2f}s" + if ms >= 10.0: + return f"{ms:.1f}ms" + return f"{ms:.2f}ms" + + def label_ok(name: str, ms: float, frac_of_root: float) -> bool: + if not name: + return False + return frac_of_root >= 0.05 + + def sorted_children(t: TimerResult) -> list[tuple[str, TimerResult]]: + return sorted( + t.children.items(), key=lambda kv: total_time(kv[1]), reverse=True + ) + + def blend_with_white( + rgb: tuple[float, float, float], amount: float + ) -> tuple[float, float, float]: + # amount in [0,1]: 0 -> original, 1 -> white + return ( + rgb[0] + (1.0 - rgb[0]) * amount, + rgb[1] + (1.0 - rgb[1]) * amount, + rgb[2] + (1.0 - rgb[2]) * amount, + ) + + root = self.timer + if child is not None: + for part in child.split("."): + if part not in root.children: + raise ValueError(f"Child '{child}' not found in timer results.") + root = root.children[part] + root_total = total_time(root) + + max_alloc_mb = self.memory.max_alloc / (1024.0 * 1024.0) + + fig = plt.figure(figsize=(8, 6), constrained_layout=True) + if root_total <= 0.0: + fig.suptitle( + f"Benchmark for {label}\ntotal=0.00s, max_alloc={max_alloc_mb:.1f} MB", + fontsize=14, + ) + ax0 = fig.add_subplot(1, 1, 1) + ax0.text(0.5, 0.5, "No timing data", ha="center", va="center") + ax0.axis("off") + fig.savefig(path, dpi=200) + plt.close(fig) + return + + fig.suptitle( + f"Benchmark for {label}\ntotal={fmt_time(root_total)}, " + f"max_alloc={max_alloc_mb:.1f} MB", + fontsize=14, + ) + + ax = fig.add_subplot(1, 1, 1) + ax.set_xlim(0, 2) + ax.set_ylim(0, root_total) + ax.set_xticks([0.5, 1.5]) + ax.set_xticklabels(["Level 1", "Level 2"]) + ax.set_ylabel("Total time (ms)") + ax.set_yticks([]) + ax.spines["top"].set_visible(False) + ax.spines["right"].set_visible(False) + + gray = (0.85, 0.85, 0.85, 1.0) + cmap = plt.get_cmap("tab20") + + lvl1 = sorted_children(root) + lvl1_names = [n for n, _ in lvl1] + lvl1_index = {n: i for i, n in enumerate(lvl1_names)} + + # Level 1 stack (root children + root self in gray, unlabeled) + lvl1_segments: list[tuple[str, float, tuple[float, float, float, float]]] = [] + for n1, t1 in lvl1: + base = cmap(lvl1_index[n1] % cmap.N) + lvl1_segments.append((n1, total_time(t1), base)) + r_self = self_time(root) + if r_self > 0.0: + lvl1_segments.append(("", r_self, gray)) + + def draw_stack( + x_center: float, + segments: list[tuple[str, float, tuple[float, float, float, float]]], + ) -> None: + width = 0.86 + y = 0.0 + for name, sec, color in segments: + if sec <= 0.0: + continue + ax.bar( + x_center, + sec, + bottom=y, + width=width, + align="center", + color=color, + edgecolor="white", + linewidth=1.0, + ) + frac = sec / root_total + if label_ok(name, sec, frac): + ax.text( + x_center, + y + sec / 2.0, + f"{name}\n{fmt_time(sec)}", + ha="center", + va="center", + fontsize=9, + rotation=0, # keep horizontal to avoid cross-column overlap + clip_on=True, + ) + y += sec + if y < root_total: + ax.bar( + x_center, + root_total - y, + bottom=y, + width=width, + align="center", + color=gray, + edgecolor="white", + linewidth=1.0, + ) + + draw_stack(0.5, lvl1_segments) + + # Level 2 stack: + # For each level-1 slice, stack its children + # (colored as parent hue variants) + self in gray. + lvl2_segments: list[tuple[str, float, tuple[float, float, float, float]]] = [] + for n1, t1 in lvl1: + parent_rgba = cmap(lvl1_index[n1] % cmap.N) + parent_rgb = (parent_rgba[0], parent_rgba[1], parent_rgba[2]) + + children = sorted_children(t1) + k = len(children) + for i, (n2, t2) in enumerate(children): + # Same “type” of color as parent: lighten progressively per child. + # First child is closest to parent; later children are lighter. + lighten = 0.10 + (0.55 * (i / max(k - 1, 1))) + rgb = blend_with_white(parent_rgb, lighten) + lvl2_segments.append( + (n2, total_time(t2), (rgb[0], rgb[1], rgb[2], 1.0)) + ) + + s1 = self_time(t1) + if s1 > 0.0: + lvl2_segments.append(("", s1, gray)) + + draw_stack(1.5, lvl2_segments) + + fig.tight_layout(rect=(0.02, 0.02, 0.98, 0.98)) + fig.savefig(path, dpi=200, bbox_inches="tight") + plt.close(fig) + T = TypeVar("T") diff --git a/fme/core/benchmark/run.py b/fme/core/benchmark/run.py index d569d7181..e074fa5e2 100644 --- a/fme/core/benchmark/run.py +++ b/fme/core/benchmark/run.py @@ -1,11 +1,29 @@ import argparse +import os +import pathlib +import subprocess import torch from fme.core.benchmark.benchmark import get_benchmarks +RESULTS_PATH = pathlib.Path(os.path.abspath(os.path.dirname(__file__))) / "results" -def main(names: list[str] | None, iters: int): +_GIT_COMMIT: str | None = None + + +def get_git_commit() -> str: + global _GIT_COMMIT + if _GIT_COMMIT is None: + args = ["git", "rev-parse", "--short", "HEAD"] + _GIT_COMMIT = ( + subprocess.check_output(args, stderr=subprocess.DEVNULL).decode().strip() + ) + return _GIT_COMMIT + + +def main(names: list[str] | None, iters: int, child: str | None = None) -> None: + RESULTS_PATH.mkdir(exist_ok=True) if torch.cuda.is_available(): device_name = torch.cuda.get_device_properties(0).name else: @@ -23,9 +41,23 @@ def main(names: list[str] | None, iters: int): else: benchmarks_to_run = benchmarks + def get_label(name): + return f"{name} on {device_name} at commit {get_git_commit()}" + + def get_filename(name) -> pathlib.Path: + safe_name = name.replace("/", "_").replace(".", "_").lower() + safe_device_name = device_name.replace(" ", "_").replace("/", "_").lower() + return RESULTS_PATH / f"{safe_name}_{safe_device_name}_{get_git_commit()}.png" + for name, cls in benchmarks_to_run.items(): print(f"Running benchmark: {name}") result = cls.run_benchmark(iters=iters) + result.to_png(get_filename(name), label=get_label(name)) + if child is not None: + child_name = f"{name}.{child}" + child_label = get_label(child_name) + print(f" Generating report for child timer: {child_label}") + result.to_png(get_filename(child_name), label=child_label, child=child) print(f" Result: {result}") @@ -41,6 +73,16 @@ def main(names: list[str] | None, iters: int): "all benchmarks will be run." ), ) + parser.add_argument( + "--child", + type=str, + default=None, + help=( + "If provided, the child timer to generate a report for. " + "This should be a dot-separated path to a child timer, " + "e.g. 'forward' or 'forward.linear'." + ), + ) parser.add_argument( "--iters", type=int, @@ -49,4 +91,8 @@ def main(names: list[str] | None, iters: int): ) args = parser.parse_args() - main(names=[args.benchmark] if args.benchmark else None, iters=args.iters) + main( + names=[args.benchmark] if args.benchmark else None, + iters=args.iters, + child=args.child, + ) From 5d82867224be19d6fa6bbf80ba6d546616310ce4 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Mon, 9 Feb 2026 22:08:43 +0000 Subject: [PATCH 39/51] remove unit from unitless axis --- fme/core/benchmark/benchmark.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fme/core/benchmark/benchmark.py b/fme/core/benchmark/benchmark.py index e410ae06c..0ecc2a210 100644 --- a/fme/core/benchmark/benchmark.py +++ b/fme/core/benchmark/benchmark.py @@ -93,7 +93,7 @@ def blend_with_white( ax.set_ylim(0, root_total) ax.set_xticks([0.5, 1.5]) ax.set_xticklabels(["Level 1", "Level 2"]) - ax.set_ylabel("Total time (ms)") + ax.set_ylabel("Total time") ax.set_yticks([]) ax.spines["top"].set_visible(False) ax.spines["right"].set_visible(False) From 594f78d71d1a2653620b2a3f3be810a81dbaa552 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 10 Feb 2026 15:33:50 +0000 Subject: [PATCH 40/51] add benchmark regression test, remove low-time timers --- fme/core/benchmark/benchmark.py | 54 ++++++---- fme/core/benchmark/memory.py | 26 ++++- fme/core/benchmark/run.py | 8 ++ fme/core/benchmark/test_benchmark.py | 35 ++++++- .../testdata/csfno_block-benchmark.json | 95 ++++++++++++++++++ .../testdata/csfno_block-benchmark.png | Bin 0 -> 97584 bytes .../csfno_block_8_groups-benchmark.json | 95 ++++++++++++++++++ .../csfno_block_8_groups-benchmark.png | Bin 0 -> 108749 bytes fme/core/benchmark/timer.py | 25 +++++ .../models/conditional_sfno/s2convolutions.py | 3 +- fme/core/models/conditional_sfno/sfnonet.py | 3 +- 11 files changed, 319 insertions(+), 25 deletions(-) create mode 100644 fme/core/benchmark/testdata/csfno_block-benchmark.json create mode 100644 fme/core/benchmark/testdata/csfno_block-benchmark.png create mode 100644 fme/core/benchmark/testdata/csfno_block_8_groups-benchmark.json create mode 100644 fme/core/benchmark/testdata/csfno_block_8_groups-benchmark.png diff --git a/fme/core/benchmark/benchmark.py b/fme/core/benchmark/benchmark.py index 0ecc2a210..c227264bf 100644 --- a/fme/core/benchmark/benchmark.py +++ b/fme/core/benchmark/benchmark.py @@ -4,6 +4,7 @@ from collections.abc import Callable from typing import Self, TypeVar +import dacite import matplotlib.pyplot as plt import torch @@ -20,17 +21,36 @@ class BenchmarkResult: def __repr__(self) -> str: return f"BenchmarkResult(memory={self.memory}, timer={self.timer})" + def asdict(self) -> dict: + return dataclasses.asdict(self) + + @classmethod + def from_dict(cls, d: dict) -> "BenchmarkResult": + return dacite.from_dict(cls, d, config=dacite.Config(strict=True)) + + def assert_close( + self, other: "BenchmarkResult", rtol=0.02, children_rtol=0.02 + ) -> None: + try: + self.timer.assert_close(other.timer, rtol=rtol, children_rtol=children_rtol) + except AssertionError as e: + raise AssertionError(f"Timer results differ: {e}") from e + try: + self.memory.assert_close(other.memory, rtol=rtol) + except AssertionError as e: + raise AssertionError(f"Memory results differ: {e}") from e + def to_png( self, path: str | pathlib.Path, label: str, child: str | None = None ) -> None: # note this function was generated with AI - def total_time(t: TimerResult) -> float: - return float(t.avg_time) * float(t.total_runs) + def avg_time(t: TimerResult) -> float: + return float(t.avg_time) def self_time(t: TimerResult) -> float: - t_total = total_time(t) - c_total = sum(total_time(c) for c in t.children.values()) - return max(t_total - c_total, 0.0) + t_avg = avg_time(t) + c_avg = sum(avg_time(c) for c in t.children.values()) + return max(t_avg - c_avg, 0.0) def fmt_time(ms: float) -> str: if ms >= 1000.0: @@ -46,7 +66,7 @@ def label_ok(name: str, ms: float, frac_of_root: float) -> bool: def sorted_children(t: TimerResult) -> list[tuple[str, TimerResult]]: return sorted( - t.children.items(), key=lambda kv: total_time(kv[1]), reverse=True + t.children.items(), key=lambda kv: avg_time(kv[1]), reverse=True ) def blend_with_white( @@ -65,12 +85,12 @@ def blend_with_white( if part not in root.children: raise ValueError(f"Child '{child}' not found in timer results.") root = root.children[part] - root_total = total_time(root) + root_avg = avg_time(root) max_alloc_mb = self.memory.max_alloc / (1024.0 * 1024.0) fig = plt.figure(figsize=(8, 6), constrained_layout=True) - if root_total <= 0.0: + if root_avg <= 0.0: fig.suptitle( f"Benchmark for {label}\ntotal=0.00s, max_alloc={max_alloc_mb:.1f} MB", fontsize=14, @@ -83,17 +103,17 @@ def blend_with_white( return fig.suptitle( - f"Benchmark for {label}\ntotal={fmt_time(root_total)}, " + f"Benchmark for {label}\ntotal={fmt_time(root_avg)}, " f"max_alloc={max_alloc_mb:.1f} MB", fontsize=14, ) ax = fig.add_subplot(1, 1, 1) ax.set_xlim(0, 2) - ax.set_ylim(0, root_total) + ax.set_ylim(0, root_avg) ax.set_xticks([0.5, 1.5]) ax.set_xticklabels(["Level 1", "Level 2"]) - ax.set_ylabel("Total time") + ax.set_ylabel("Avg time") ax.set_yticks([]) ax.spines["top"].set_visible(False) ax.spines["right"].set_visible(False) @@ -109,7 +129,7 @@ def blend_with_white( lvl1_segments: list[tuple[str, float, tuple[float, float, float, float]]] = [] for n1, t1 in lvl1: base = cmap(lvl1_index[n1] % cmap.N) - lvl1_segments.append((n1, total_time(t1), base)) + lvl1_segments.append((n1, avg_time(t1), base)) r_self = self_time(root) if r_self > 0.0: lvl1_segments.append(("", r_self, gray)) @@ -133,7 +153,7 @@ def draw_stack( edgecolor="white", linewidth=1.0, ) - frac = sec / root_total + frac = sec / root_avg if label_ok(name, sec, frac): ax.text( x_center, @@ -146,10 +166,10 @@ def draw_stack( clip_on=True, ) y += sec - if y < root_total: + if y < root_avg: ax.bar( x_center, - root_total - y, + root_avg - y, bottom=y, width=width, align="center", @@ -175,9 +195,7 @@ def draw_stack( # First child is closest to parent; later children are lighter. lighten = 0.10 + (0.55 * (i / max(k - 1, 1))) rgb = blend_with_white(parent_rgb, lighten) - lvl2_segments.append( - (n2, total_time(t2), (rgb[0], rgb[1], rgb[2], 1.0)) - ) + lvl2_segments.append((n2, avg_time(t2), (rgb[0], rgb[1], rgb[2], 1.0))) s1 = self_time(t1) if s1 > 0.0: diff --git a/fme/core/benchmark/memory.py b/fme/core/benchmark/memory.py index 6deb6430b..d104b0035 100644 --- a/fme/core/benchmark/memory.py +++ b/fme/core/benchmark/memory.py @@ -1,14 +1,36 @@ -from typing import Literal, NamedTuple +import dataclasses +from typing import Literal import torch _benchmark_memory_started = False -class MemoryResult(NamedTuple): +@dataclasses.dataclass +class MemoryResult: max_alloc: int max_reserved: int + def assert_close(self, other: "MemoryResult", rtol=0.02) -> None: + if not torch.isclose( + torch.tensor(self.max_alloc, dtype=torch.float64), + torch.tensor(other.max_alloc, dtype=torch.float64), + rtol=rtol, + ): + raise AssertionError( + f"max_alloc differs: {self.max_alloc} vs " + f"{other.max_alloc} given rtol={rtol}" + ) + if not torch.isclose( + torch.tensor(self.max_reserved, dtype=torch.float64), + torch.tensor(other.max_reserved, dtype=torch.float64), + rtol=rtol, + ): + raise AssertionError( + f"max_reserved differs: {self.max_reserved} vs " + f"{other.max_reserved} given rtol={rtol}" + ) + class MemoryBenchmark: def __init__(self): diff --git a/fme/core/benchmark/run.py b/fme/core/benchmark/run.py index e074fa5e2..10427b9e0 100644 --- a/fme/core/benchmark/run.py +++ b/fme/core/benchmark/run.py @@ -61,6 +61,14 @@ def get_filename(name) -> pathlib.Path: print(f" Result: {result}") +def get_benchmark_label(name): + if torch.cuda.is_available(): + device_name = torch.cuda.get_device_properties(0).name + else: + device_name = "CPU" + return f"{name} on {device_name} at commit {get_git_commit()}" + + if __name__ == "__main__": parser = argparse.ArgumentParser(description="Run registered benchmarks.") parser.add_argument( diff --git a/fme/core/benchmark/test_benchmark.py b/fme/core/benchmark/test_benchmark.py index bec5fbd7e..94c8a9f2e 100644 --- a/fme/core/benchmark/test_benchmark.py +++ b/fme/core/benchmark/test_benchmark.py @@ -1,10 +1,12 @@ +import json import os import pytest import torch import fme # to trigger registration of benchmarks -from fme.core.benchmark.benchmark import BenchmarkABC, get_benchmarks +from fme.core.benchmark.benchmark import BenchmarkABC, BenchmarkResult, get_benchmarks +from fme.core.benchmark.run import get_benchmark_label from fme.core.testing.regression import validate_tensor_dict del fme @@ -36,6 +38,24 @@ def test_benchmarks_are_not_empty(): BENCHMARKS = get_benchmarks() +def validate_benchmark_result( + x: BenchmarkResult, filename_root: str, name: str, **assert_close_kwargs +): + json_filename = f"{filename_root}.json" + if not os.path.exists(json_filename): + with open(json_filename, "w") as f: + json.dump(x.asdict(), f, indent=4) + png_filename = f"{filename_root}.png" + label = get_benchmark_label(name) + x.to_png(png_filename, label=label) + pytest.fail(f"Regression file {json_filename} did not exist, so it was created") + else: + with open(json_filename) as f: + d = json.load(f) + y = BenchmarkResult.from_dict(d) + x.assert_close(y, **assert_close_kwargs) + + @pytest.mark.parametrize("benchmark_name", BENCHMARKS.keys()) def test_regression(benchmark_name: str): benchmark_cls = BENCHMARKS[benchmark_name] @@ -48,3 +68,16 @@ def test_regression(benchmark_name: str): regression_result, os.path.join(DIR, "testdata", f"{benchmark_name}-regression.pt"), ) + + +@pytest.mark.parametrize("benchmark_name", BENCHMARKS.keys()) +def test_benchmark(benchmark_name: str): + benchmark_cls = BENCHMARKS[benchmark_name] + result = benchmark_cls.run_benchmark(iters=20, warmup=5) + validate_benchmark_result( + result, + os.path.join(DIR, "testdata", f"{benchmark_name}-benchmark"), + name=benchmark_name, + rtol=0.02, + children_rtol=0.05, # looser tolerance on sub-timers + ) diff --git a/fme/core/benchmark/testdata/csfno_block-benchmark.json b/fme/core/benchmark/testdata/csfno_block-benchmark.json new file mode 100644 index 000000000..720ca6f45 --- /dev/null +++ b/fme/core/benchmark/testdata/csfno_block-benchmark.json @@ -0,0 +1,95 @@ +{ + "memory": { + "max_alloc": 4503010304, + "max_reserved": 5408555008 + }, + "timer": { + "total_runs": 20, + "avg_time": 348.38758850097656, + "children": { + "norm0": { + "total_runs": 20, + "avg_time": 40.18562126159668, + "children": { + "compute_scaling_and_bias": { + "total_runs": 20, + "avg_time": 22.71953125, + "children": {} + }, + "normalize": { + "total_runs": 20, + "avg_time": 6.488763213157654, + "children": {} + }, + "apply_scaling_and_bias": { + "total_runs": 20, + "avg_time": 6.465991997718811, + "children": {} + } + } + }, + "filter": { + "total_runs": 20, + "avg_time": 177.78052139282227, + "children": { + "forward_transform": { + "total_runs": 20, + "avg_time": 57.807065391540526, + "children": {} + }, + "dhconv": { + "total_runs": 20, + "avg_time": 63.70498561859131, + "children": {} + }, + "inverse_transform": { + "total_runs": 20, + "avg_time": 54.06139698028564, + "children": {} + }, + "add_bias": { + "total_runs": 20, + "avg_time": 2.1950639963150023, + "children": {} + } + } + }, + "inner_skip": { + "total_runs": 20, + "avg_time": 17.283601570129395, + "children": {} + }, + "activation": { + "total_runs": 20, + "avg_time": 2.2509984374046326, + "children": {} + }, + "norm1": { + "total_runs": 20, + "avg_time": 39.386068725585936, + "children": { + "compute_scaling_and_bias": { + "total_runs": 20, + "avg_time": 21.905953788757323, + "children": {} + }, + "normalize": { + "total_runs": 20, + "avg_time": 6.469172859191895, + "children": {} + }, + "apply_scaling_and_bias": { + "total_runs": 20, + "avg_time": 6.498768067359924, + "children": {} + } + } + }, + "mlp": { + "total_runs": 20, + "avg_time": 71.47947769165039, + "children": {} + } + } + } +} \ No newline at end of file diff --git a/fme/core/benchmark/testdata/csfno_block-benchmark.png b/fme/core/benchmark/testdata/csfno_block-benchmark.png new file mode 100644 index 0000000000000000000000000000000000000000..b3681f13e80a7274ececd97bf12dfae9690ee249 GIT binary patch literal 97584 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

HV{J(a%YM@ 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

p8+FtiNdhRaS3X$Ar)viK?PAw~`|{BS42+f$}! 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 literal 0 HcmV?d00001 diff --git a/fme/core/benchmark/timer.py b/fme/core/benchmark/timer.py index e172163ea..865a9ef5e 100644 --- a/fme/core/benchmark/timer.py +++ b/fme/core/benchmark/timer.py @@ -12,6 +12,31 @@ class TimerResult: avg_time: float children: dict[str, "TimerResult"] + def assert_close(self, other: "TimerResult", rtol=0.02, children_rtol=0.02) -> None: + if self.total_runs != other.total_runs: + raise AssertionError( + f"total_runs differ: {self.total_runs} vs {other.total_runs}" + ) + if not torch.isclose( + torch.tensor(self.avg_time), torch.tensor(other.avg_time), rtol=rtol + ): + raise AssertionError( + f"avg_time differ: {self.avg_time} vs " + f"{other.avg_time} given rtol={rtol}" + ) + if self.children.keys() != other.children.keys(): + raise AssertionError( + f"children keys differ: {self.children.keys()} vs " + f"{other.children.keys()}" + ) + for key in self.children.keys(): + try: + self.children[key].assert_close( + other.children[key], rtol=children_rtol, children_rtol=children_rtol + ) + except AssertionError as e: + raise AssertionError(f"child '{key}' differ: {e}") from e + class Timer(Protocol): def child(self, name: str) -> Self: ... diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index 61e2e2215..c58839d57 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -241,8 +241,7 @@ def forward(self, x, timer: Timer = NullTimer()): # pragma: no cover B, C, H, W = x.shape assert C % self.num_groups == 0 - with timer.child("group_reshape"): - x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) + x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) if self.lora_A is not None and self.lora_B is not None: with timer.child("lora_update"): diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index 19e0410fe..6bc40447b 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -336,8 +336,7 @@ def forward(self, x, context_embedding, timer: Timer = NullTimer()): with timer.child("mlp"): x = self.mlp(x) - with timer.child("drop_path"): - x = self.drop_path(x) + x = self.drop_path(x) if hasattr(self, "outer_skip"): with timer.child("outer_skip"): From 34d0353b7fbf221e041c16b1ec7784c2361b7d59 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 10 Feb 2026 15:37:22 +0000 Subject: [PATCH 41/51] make timing regression gpu specific --- fme/core/benchmark/run.py | 17 ++++----- fme/core/benchmark/test_benchmark.py | 8 +++-- ...on => csfno_block-benchmark-tesla_t4.json} | 34 +++++++++--------- .../csfno_block-benchmark-tesla_t4.png | Bin 0 -> 98205 bytes .../testdata/csfno_block-benchmark.png | Bin 97584 -> 0 bytes ...no_block_8_groups-benchmark-tesla_t4.json} | 34 +++++++++--------- ...sfno_block_8_groups-benchmark-tesla_t4.png | Bin 0 -> 107571 bytes .../csfno_block_8_groups-benchmark.png | Bin 108749 -> 0 bytes 8 files changed, 48 insertions(+), 45 deletions(-) rename fme/core/benchmark/testdata/{csfno_block-benchmark.json => csfno_block-benchmark-tesla_t4.json} (72%) create mode 100644 fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.png delete mode 100644 fme/core/benchmark/testdata/csfno_block-benchmark.png rename fme/core/benchmark/testdata/{csfno_block_8_groups-benchmark.json => csfno_block_8_groups-benchmark-tesla_t4.json} (72%) create mode 100644 fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.png delete mode 100644 fme/core/benchmark/testdata/csfno_block_8_groups-benchmark.png diff --git a/fme/core/benchmark/run.py b/fme/core/benchmark/run.py index 10427b9e0..b5a2988cb 100644 --- a/fme/core/benchmark/run.py +++ b/fme/core/benchmark/run.py @@ -22,12 +22,16 @@ def get_git_commit() -> str: return _GIT_COMMIT -def main(names: list[str] | None, iters: int, child: str | None = None) -> None: - RESULTS_PATH.mkdir(exist_ok=True) +def get_device_name() -> str: if torch.cuda.is_available(): - device_name = torch.cuda.get_device_properties(0).name + return torch.cuda.get_device_properties(0).name else: - device_name = "CPU" + return "CPU" + + +def main(names: list[str] | None, iters: int, child: str | None = None) -> None: + RESULTS_PATH.mkdir(exist_ok=True) + device_name = get_device_name() print(f"Running benchmarks on device: {device_name}") benchmarks = get_benchmarks() @@ -62,10 +66,7 @@ def get_filename(name) -> pathlib.Path: def get_benchmark_label(name): - if torch.cuda.is_available(): - device_name = torch.cuda.get_device_properties(0).name - else: - device_name = "CPU" + device_name = get_device_name() return f"{name} on {device_name} at commit {get_git_commit()}" diff --git a/fme/core/benchmark/test_benchmark.py b/fme/core/benchmark/test_benchmark.py index 94c8a9f2e..9e1f1dbbc 100644 --- a/fme/core/benchmark/test_benchmark.py +++ b/fme/core/benchmark/test_benchmark.py @@ -6,7 +6,7 @@ import fme # to trigger registration of benchmarks from fme.core.benchmark.benchmark import BenchmarkABC, BenchmarkResult, get_benchmarks -from fme.core.benchmark.run import get_benchmark_label +from fme.core.benchmark.run import get_benchmark_label, get_device_name from fme.core.testing.regression import validate_tensor_dict del fme @@ -41,11 +41,12 @@ def test_benchmarks_are_not_empty(): def validate_benchmark_result( x: BenchmarkResult, filename_root: str, name: str, **assert_close_kwargs ): - json_filename = f"{filename_root}.json" + device_name = get_device_name().replace(" ", "_").replace("/", "_").lower() + json_filename = f"{filename_root}-{device_name}.json" if not os.path.exists(json_filename): with open(json_filename, "w") as f: json.dump(x.asdict(), f, indent=4) - png_filename = f"{filename_root}.png" + png_filename = f"{filename_root}-{device_name}.png" label = get_benchmark_label(name) x.to_png(png_filename, label=label) pytest.fail(f"Regression file {json_filename} did not exist, so it was created") @@ -70,6 +71,7 @@ def test_regression(benchmark_name: str): ) +@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") @pytest.mark.parametrize("benchmark_name", BENCHMARKS.keys()) def test_benchmark(benchmark_name: str): benchmark_cls = BENCHMARKS[benchmark_name] diff --git a/fme/core/benchmark/testdata/csfno_block-benchmark.json b/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.json similarity index 72% rename from fme/core/benchmark/testdata/csfno_block-benchmark.json rename to fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.json index 720ca6f45..ee7120f1f 100644 --- a/fme/core/benchmark/testdata/csfno_block-benchmark.json +++ b/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.json @@ -5,89 +5,89 @@ }, "timer": { "total_runs": 20, - "avg_time": 348.38758850097656, + "avg_time": 345.6458038330078, "children": { "norm0": { "total_runs": 20, - "avg_time": 40.18562126159668, + "avg_time": 40.212057495117186, "children": { "compute_scaling_and_bias": { "total_runs": 20, - "avg_time": 22.71953125, + "avg_time": 22.75168333053589, "children": {} }, "normalize": { "total_runs": 20, - "avg_time": 6.488763213157654, + "avg_time": 6.482544016838074, "children": {} }, "apply_scaling_and_bias": { "total_runs": 20, - "avg_time": 6.465991997718811, + "avg_time": 6.464561629295349, "children": {} } } }, "filter": { "total_runs": 20, - "avg_time": 177.78052139282227, + "avg_time": 177.22591857910157, "children": { "forward_transform": { "total_runs": 20, - "avg_time": 57.807065391540526, + "avg_time": 57.90016918182373, "children": {} }, "dhconv": { "total_runs": 20, - "avg_time": 63.70498561859131, + "avg_time": 63.255994987487796, "children": {} }, "inverse_transform": { "total_runs": 20, - "avg_time": 54.06139698028564, + "avg_time": 53.860619354248044, "children": {} }, "add_bias": { "total_runs": 20, - "avg_time": 2.1950639963150023, + "avg_time": 2.197545611858368, "children": {} } } }, "inner_skip": { "total_runs": 20, - "avg_time": 17.283601570129395, + "avg_time": 16.972057628631593, "children": {} }, "activation": { "total_runs": 20, - "avg_time": 2.2509984374046326, + "avg_time": 2.2639008164405823, "children": {} }, "norm1": { "total_runs": 20, - "avg_time": 39.386068725585936, + "avg_time": 39.436012268066406, "children": { "compute_scaling_and_bias": { "total_runs": 20, - "avg_time": 21.905953788757323, + "avg_time": 21.949654388427735, "children": {} }, "normalize": { "total_runs": 20, - "avg_time": 6.469172859191895, + "avg_time": 6.471660852432251, "children": {} }, "apply_scaling_and_bias": { "total_runs": 20, - "avg_time": 6.498768067359924, + "avg_time": 6.506368017196655, "children": {} } } }, "mlp": { "total_runs": 20, - "avg_time": 71.47947769165039, + "avg_time": 69.51575317382813, "children": {} } } diff --git a/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.png b/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.png new file mode 100644 index 0000000000000000000000000000000000000000..a888da071e9425c4bd9aae1f2bfec74fb4cd7999 GIT binary patch literal 98205 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 AN&o-= literal 0 HcmV?d00001 diff --git a/fme/core/benchmark/testdata/csfno_block-benchmark.png b/fme/core/benchmark/testdata/csfno_block-benchmark.png deleted file mode 100644 index b3681f13e80a7274ececd97bf12dfae9690ee249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97584 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

HV{J(a%YM@ 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 literal 0 HcmV?d00001 diff --git a/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark.png b/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark.png deleted file mode 100644 index 003ee0c97f9e55cb7675be41009f82d383a64ce0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108749 zcmd43g;!Tyw+4#cih)6hNr#k3D^9ZDRD`oUNXvm65p_2MgO3mTOGs46Usn zS@E*6n*Q%ku$WsKuzpdqX~bXI_vp5Y6$#1Na^k;jX5VcDNw$%Yh>P4%un(X9Vds3J zYD?&k5`*~di_fnM?<=`EPFiUFDw%UzQVZEmksCrSJ9h;~M?X=x6-(C=q$zyh70HL) zd!L`Yeg3?_`K8gndj_UwmnStX=|4}c+V|~PX6N8@%FpNH<6A#_;QVuvqyP7hjG?YP z?f?CS%!+6Fy zf3&yf{$aSy?&|8=m7%?(F-pk4y88B|%a_F;zvH!Gxc5<6);^fAe184Y%AcP%6_ORi zRr^0#Tom=AH0rQ95ikAjs&-qVY|Fgco+EcNA5@j6yxOP0K=#bd&0?gMtg^E5+~v!= z{QUgrGzvM%xgI`$*q;2QygWK1MO;MpuB@rpvE~&2%{}q*=6sD2e5V#h8|1^eIXI4Y zrfYr6HSQ#(pzt}xs`=?{?x-?eJSi${+vH{?AU!BogLiV z+-=E<2Ye~GJyKImBWs(El99PTc|!8s-Tl0v;MuEJuhPjz?|j&q=Ie2YqP)MqpJ{5_ zljqNOh6_DDYd70}OIUdO$JA8WEM0MhB)MIO$T_cj9lKng$71E}>sz%n)oJnfw?^gH zuflP1Um6+?;r9)jqj#yRtM4!JPUpAndUrj$Rhas~fdeO4H7V25(h?O@PKI%t`~B^A zI)eLPd7^skD9OtDdW`u%=?gzUmg(eIM^#i*RtDXU{OL6>BePX}p}7zLR(==FX1H!T ziinC%N-JePxb>1+=q&Z)4Yuj&>HQfVBC$b^26C?U!Dhmx`$rqzd9E&ujj651+xl(0 ze*gYCXBU@%hzMpUt-ab`!;S{<(9fu~#F=zw+0Xy-dTSiS{qyHfAXp^}Q^KZCV&3l0u$wv?Bb&wRY)I^COp^f&@TwNYAr7rC--x4qO~j6_>>U;fT1>8iu)&gY(Ax3pw`9T+(GtL8W*kLAt-r&vVFTsQx;$_RbH{kd!0itbdk zw&q-0no4L_G1u1KCMhY|%}!Q&%je{T$^As`p&-uj7yUcO8Y3#6Y};{AGvgPrcl4Vg zeTfa+nWljUc5hqTs~0c!OEkXU;}Ri|eqo8?+aE}8V?>?^XH^+-ra=+8NS{=8vZ;!!y{xfAUd znVAojZ7x&%+gOmPf5&|!>hZsV7U}B}68rm|W(Ba|GR=;}b1@kxrK$^Iu80*6JdwV~ z-r@LAjK5$x_Uy}eGT}k&`L0rzqA!P?tSqdp+t%}Oqz3y-oV;s~3J;Dq$6Rw`Sf3n`C$H+!;+CrEsHKc8E5 z`7_CV~(8XlfAlA$cYA&g3CFR?ryY^FLMJ$gh}8FrLRKq+1G zR=(MfS8v|Xl^AGiKkZ0Wi?JB~`pClKhPpZ>i)QiO$B!S=H$?E+eb3YpQ~&g6+elp~ z>&xWh0cSfpI=sy!jBTqKN&*^e{T)oL8>wK6v`v0X}0>Q{Tf>yzezj z9O*QRuRVD1U~qQU9~XbyX#4i<#AOhNy|J;8x9*O#bo=DT{H!eD7*XH5Wv(tkEE?q9 z-QAy@{<8R;6=2Bq=iuO&t2(81?)>>}k|9iNg@^Fn@gGIpe$+xNPGt|OyvM(P*il?u z{OavnFQ>o1e^v)vY;kO9ZDn(q*X`=*8FD)!cz4m^^5x4Pj62g*FRmDOeB7s{rDgBv zh!S%C!iDXjEE?t5G-LwIdU|@nDcj7#OnvMIT$IdJH3AOciFn|6$4I?p&&bZcsjPe& zM})>{yKZluDf-ywFK&BQE7Oy9(k~Bw*|F`qBTCF2^Pb8|5sRPYyXLwLqV_pCIjNMM zWLDi9ETQ;_?6I%ClaplBFnYxPBHqQvXbTDBcCvTLubL>wPTpLb>CP6jb>_Di646$g z2o4K#90xxa!dMT$F+#95>!ptx{(dbby;7 zrCMdKyVQ*@u%BAe*_^W7r_|OHFnY!Acb~J6oyYU%d(q{$UB7ni+Fk>LvCaq7vI8Ck zR%0h^ZN?ADexLaf-B)^VjY0|!hL=0nwD%srv!Z zv@3Q8ym^zzVe0H${D$8l>!S(DgMm^P(fq%mTCM>jnYp=SSadQxF;%1E$BtF*p>{qe zIXga17b)oS&{}{YSi*X$LpmhiVPW*bl`D76BQr9t%+2Hvct72-hn#spA(T}sq&*JL zc=tNJhPryJHOkEiZEbDdRy-;%oCNW)gz(OnXE^Fh52f?9n*9uXfWv0k@$t+_R?UOh z_ua$PV@*-t0xpW}&$JauPyhIlNrgX`XmAfqt4}WloJ7;U`R=Oe{&aScTgoWhEb5=m zF&7mS5ZlO6$NH*C7b)s*p!7!+L9^$co?~{3UM~_!UQ%!$HZn3I(fnGuKR|4mWPNJ);JFelGp3ZtFlHbc}tdZ!}jupwD zK7G1BQXBk+%Q$3uvq^Bhe%y9ru~jB(B$!c&*u39YD+9B$IXcobe75b_eS7vYE$#5% zfydm1k*EScQQTWBxBhKfEKjR&8nuX+N1~W$kJi5>s#Ej4bljN~SHOkcQS*P6m%pNV zJ(}$oaK?e6Q%VbOw7z%m-kU4h+yAYOQFj}x4EqZ)?4J44&vILZH6I(!pFm(Md%c}c~0PxYkm zV5QgbRXL#x7Z|Qhb)>pQMNyLwCE<;ri{sCGFJAOt3o~t72j=4kh5=hD*BEImJ9Rma?0qM{G5+$5T|SszuhJxu8?Fg#lQakZhrqT%b;-Lu6D ze$ypDKP3}f`5$m}yho2EX%yu#Eth64F98ISo;pR#%&L}m5V%ORGf-=JcEJD5o6|-G z=!T+W-SrKB+3f$^@6P%#`z&X!Uh_H@U9XN+v$$H32j}_5-MggGF);z*;V)lbmMrh> zrNF9Pb>x<(Kfe>3+!GBDaC$pXU!p?NG1MA^M;(TjTUuHk{o8QhcU~c7V`BsMeD34( zU!lYHc<6E`zPh%y9M8pK>z@n1)AB(AMBPgz@5wQ8!$}-T>gN#_7A8G$;yJBMQcVO$A_v;ZrGVdWnyY-rRbj^6E%ct`swjj zDJMnIyLS`}3W+2r#yA7NlGQbylkVNS_cKl!>CvNTlI}#|)hM#nSM%iAw<|Db{a5ElnoC`r+{)xH?|=CCN&*1!;IEp%y$23dEQ~eDCM(dlrD;$wtLD&U zcg2D+LthvPr z`PlgQ^48Yl4Pjh2eaX2j6*ceOJBe0LK)`b}G`s2P>2cd`DJhHq`?7$jLCk6$^=co~ z0Pq^adED@sK(7_;?PLTe_)%yR*%J_U?D+AxVFR3EJf7wZ?VFqr+s1>#tGO;-+(Cdo zuoF@$szU(i_V)JgT{qXTCN)b}1za~yquPt2!M=X|`o58o7gi?*h%!+%mtnFkDbW1l zUJiElN5fwa^_99%$jZvz78idS7?W>Bf zva+*}Qc}JIR=mj1Pgzq_1K9Kg`);y5We+uVl+ye}4Q_%!BlwFie0|+hQ&ZbK9)5p+ zBduo~$ci8wb3kOe`ugP+6+0A@6`rQ2r>pdC5Z?pE`GZANR#lD0E(Z*8`%?O>zFsO^ z!09BnS>JW6fkY79Q^%#r4|rtyJb(2J42J99a_l{H=oX%V_bFCC;>yv+cGt<=zWuo- zkk$g#IW{4o0-wdKmM4OzJg=U>Eh{H?3~TubPt)sRS zmMx=F*NqJ+o|ATcvWUr1Pm;TAJ<)P&&T-yN|5`Zu-)Nnq)GEtuPvMtQTeWO@Eh^Ig z{{71;uJAYnp2x+d$fS}bq5z6%e9SjI6svIh+N1Zx?ulk!lK!3Jxb#pKe==fWI+BIXQWGn~)e|%PKV7%tt?kiQOGB z!pppT^%gA&xn9ua&Mmw+0^DYE4smOiQ zD7x1?778l0v9VE!esU|AL2=R5gXB5z>3C0W$~A}i*yt?x?PVcVRwOPP-%yJD9!{a2ma~U!HzDG%s!OtNLhj zvLa)|Sbg|_Hjvr#sHmvu`9&9xrYNCPfEp(cA3p5Z6wGHkT^(x5c_}}z5s3E1`I{au zP%x%8e@le2Fa!KC5nL~{$YtF&qKu;<)XmKeq|6hnEU`aJ%1BI9RMZ=b=#48P0J_^0 zU_p*DK*rEOD$ht~Y_`+#bbx7;qf_R48X7+zpW~>ACs4WBd(K*0SRCchufNjsPflo= z-sP>OiQ%CQGjwXAlTNo=_n%J=@h;Z{_Rt#i+X-FuMSwYbfX2cne|;O zabW{3If)_|+QRsw!|OP0ZOd6fXJuIz{f4m1b#`cL#b(j<`2((ujE}ps^c-77Z{4bC z$usGeYvu*l*E3B8vz?Mo={}|06__q6CU$^=f}-0&bwIb&fsB;&T(9lTsN+UDo+bO{ zTeO7?8Yxx!sa;oY$d*Dfnw&%%m z5Bfe?&_wNYd-lvaB*CHF*VmWKv?oVaLErzZz)RbnsmV{PkYg4#DU-{1?S3-_M+F3& z-+hQYHc?Z{bv3TJN!G=~I*t`RWv*;%Q>OWEY=KZ^Rh1X0@Dwv2E7dZHhVy(4ZPq+! z799#XS-avXE1NEC1BSvCg{=~LBlU@%^bjVM3q{%=R@s$2Hv!ESui7q^gs^I*Wix?E z$VQ9o3ly5dDN*5xALZ`QPM1rnM6-!a{K%k~{6ftCEdAQ_yz%2J+zrDIl$GB!`!s|r z&Gwhr^qVMzzB}OkqsWe8nzF^Y9R#hf?6KC|)%EptisBVT%f4Fehn^+a=F@if&CRvW zMGT_31h;47;d;;Knh$8!4i65V8yX&7D2TTNn^AJ^TN#h>e@^N!m9d3_v=ow_Qqey! zpk*%Ro~HDcU2m~}LsscD)iT8o&DrViw{{GCRTcPMD`3d;9k7 z1BgI0?b_wf_g!FQth--OC|Ch;fYHp3RsGZVkG)1xX1qFO|JIC4xXrCg9(H^*S{${~ z*N;Da)#OdhdezF@@KT781YZ`aElqlnYVN}e*RCly8|bsFHfu+{dUdWggqbn8K(Fp( z_rQVV3Rm=Tn#X(MBtuUcG=?{;>1*3{fi58h7#+YE-%ph8r#K{xFh_8P5PC&Z$8Q;qbC9+mVYgmUUl#uz(-!em@!*)oFVB7_T6rr5s(IEt61AS6x{ zG{C^G0JRn~JzONL)Q6~eEH6R21*nMoQE=y#**5gl> zXL=cv1AToD0f2d8zkGnM^2pj+#LE9YyD9gWySlr70;y$n4=)S>UVP&oaK7l&)Zc#=fZ-NU^x)*A zcWmsXz9PFL+qP}nO)cvK>XEKlqMP}bK!d=kAHXiq$IDS2|7@&U?cB5HBIFeFan_|- zi8#5M@}Y4@lb)`aHfZn_GD4d>2S+YdMDW@?%g^V|%F24Qxn@HsuXv0kPrxo-Qt}+b zMRKf+Ke+Mx$Y@Y-ushU~Av|xAC)j?`P#Wmu;}1p(J@z|Jd#9S_UQdx7E2K##s;!2f zvt?UfAtC6M-83*TfEIHI2=|7l=x%}pVB<*|p=Rs=K_d_{)UTzdtM?A%XJ>dA&|>j}AT9(!<2{X=i{r5-)HQfNEl4R>HdKut}}da`XFI++Ld zkMPZ#7Vu9{5QY+>Tx)HrPm-)G_nK!~j!2L^0WILQnS2fqQ(jxU{|L2UB`TioL{p@I z5BmH$pk2qN#>T@Mh1NIl!0tmdMQ%;|CCZ>ags8hbN_xzvLu_!{mc!SE)I1kaWIYo(;-*rRTv8lQFD6t^`v3?E> zJ$w1`AaMv$B=+v#|N86!ZrbxZp_M+tZmsLb=HMj`hg_V*d0t*}EJ)yH2YP_-r%%^R zdh?{`3UN06(?G#tLPA0a!y^ou)u~gb;7$zTy0dr^OE=~vb4)m-F-U-`CS~$7bfY|3jjbrv9bE^T>kUI>~#S+C;4~K`iiYTtrt_*Eu*lD6-{A z@(Hg%rb!6-w$N_Y@BRC8L3FYg1||as2&_@1_8V003#rzwDtI@7f`W;-b)1TAP$Y>* z`TIu^QPZr|UwC_$!;SI9??;?Jo%-=(>~f^zI{YeO^Xd~;?mheV?!6ALAnwXd9)ijd zdak|wIY!0-O7V|fWMsq)g$*x0yusY5MMDg7)Cg$K?J<+Vp7;^N{Y znjVZ3?J1`S32bq)UD9GR6fhvyO@N=DD5VOCcehPUOkA`3P1zVJz!>)<$LM%Zo~h5# zi=u-+>;{6<=8W4CpJK-llnqSbn)UcAYbi3}`}4nQz=(5)ta3=VgY$-TXk_b4=a>(i z1?&|zF=2u}{v2|(xDlx`3#_4xdBhhxPs=($>$*iQR1 z%X+Xe9qY=#MNA3+v`L<{wJ8ve6^I2R>WZ5|Q{wwbh1sQdMYHo3;>OiK|*d3xP6NYJoQQPdRv9==Atp|W{yseJdH0>KgphCxV5bUO z+}Gn0%2N=Gt`HLnaLj|FvIEqXqAsTx?@5_&a{aw|`C<%IJ$EP#CPh#(46JvCCt32T ze!wMUIimn}@H~WzB|XJf3Mw%1!@&J}f4ZgM@W0JZLGg*PbVr|ig;CMupOf3VU(z@4wO3V2J*`%n(!-vUTMRw`q{Ut>>d@b+pOc=_! zIGC82Ky-4?$jUl4;JTjLsPhXSpCc-DmdCPkkayk+aCd3=L1XKQyu7?2X#UM-=0^cG zTO6NjxabDb$h*n|!ME(M;IN%mj`-H}>J@2ov4d5r&W8^=<>=nIll|Cbgy>P?fE{s> zppg`c@pmTnuDc&NRokM7efYWJoV%x|v2OhF#{*~*y@hETY9>$c!b=o;atO*1xw zz(5Emh+rY(`*y~`oj;%A>Eq+mm1p{{F-I-Wowi(1~O!JAf16SR*{uA7C8 zrZ`IR;xpV{bNimy=!}VhC(v+5zJWe=^8a_A$4Th@{P1{BZ2Qsy}k5H0NM-!E3 z=$(0Ka}hJ>LNpX?)o=SXOoP#qQ)yoSp&j%{XzR?uERlIeT*;r;@vglRrN)n_Nz z(eZ8(piI>Pu%*%<%7sR)3C(J$LwxV*?6ooS9(;eguRz{n70mh=i3kKlo3m;|Lqj6C zHQm*h?r#(w1zD;|xe7ZBrWHRbvk|^-VEJ+5JPp8zw1qB0nVXonEZ?IoTgP6&Ghq}4M$gfN4}(xjrB9=GB5>-TJRbz`qtjlPVgeMC_FqsNcy`1yZ0u)+XV&Q$kF%!D{K~3oY81W>rC>`ckvvwTHEP_13^DkhOJdK)s5!FDjgjJL@Q6M0fb|e2;e2!Wx*+!BHNk<&R98 ze|}ah#W&1ue(B@%_aRxdH5~b~un_333zi(ze{DW~Bi`c(HH#!4>{+*^+fq^|00Xl4 z%eMX%^)DiE5EQowa(iOSZ!wOeLp$p2Tl%jr&s>yjMH|n)8Yzu1N!+#PRDam7{)Qf+ zxBM>VD*=)2`J;uBN2FZ0+S(>Hm9Z!2+phNMV$|CFFHLk%X9z7c#Nf-bU5>4%tUU$( z%nMg{sf&hjN1`Rhar{`HEn|&K(kve%oX#ltH&f@Et`T@v zM1pB;z`KH1L2~|j)8O*392!(h1xKed;HZWk`no!ql5QQ(n0VMpex@t)W(N(I?M(b4 z<^989V}I@X9mM7uOkHNY!@sEUqyt5riJ-nP7H`vNyg1(M*gDDk_slyngXQV&tVI<2 z@{W#sJ9q9pU7sM>RSVx^(AH2>hJjwo#qU$N@i>UbnT-fRr)8gL;%YIdZrp8FQ@{wS+>}9$Qwh*N zKt)e9w1zB9c4sFb#_^#!i>u-Q_;8uym`%%4vTAN}^b*~NGhxc&_M?5ofdtkFO|83I z^wye@*I-`hy4jKB&vgN&5@PE8@b#{ei`2Z>pq%tI1zan!$lyAX_?0)#-QIy#-Q__i zq=6~vUaYdpYP|J7^5||-MfMskb@lM+C)dzkN{qPp%n0tkcmXismhpou!bDE(gxsa; zP)}7iT{K%7SevGnpY|muY`wy1w#1;N@Suhv(Ym7dSZNoAbyYBvuIGq@@Jf0#6l$UFz(^dJ4s`X{IP7MH_B49GT2qfSGwh`Y@1p z0@qv$J=HRpnZn`^P%m*#^oes|NLK)WOuKD=! zVW{5jC^ga-`#AJ!PpFhexvq&D@M=VT$ZQ@GF5Z|)8f$)eF;XkY z_G_}x(#Yf_1E2|6`pwOxHw50;+$8MP_AlQ9ZR4w(4zGjgbf4R;5#zPs#=|$=Zhi&e zLw+__Ty`eol<*6{p4&@nxS>PwijIe?Q&4lexuWy)^Hpdx6{w|+_4MKr1>OV&UGm{D zGcZW_o1ao(&Sl(DZ@3B)*T&oLvNn+*x?q$S0RL(!zP&h-=%mf_T*FUxkV3cM4wKnb zpMXjH$HPf>HX~iDtn>|sfgge?8AR|30L}fjv@{tw5UE@}iJ7%DxY} z<*U%kjHO3SYt7*@`HGIU7>0QaL1+*tFoO|x{Q(bNOlCVQ=+m=kBK`IUE5@kVgufl9Yz*En zM`@`;BNJ)D=^GqO1{LKpbIP|H_d<{VWf2Rck(TnVNKk;>|DQKL0lX`lt|?%oqE%vZ zhU?)87_o=qEgn636?}x`IE~a5Ra>|ix)yWD36gb6?pxyB1v!F;N5w+Zs%qfhRC?L> zBzao;4&;C?KU(>tT@0T@pMHQ6O4Fmk&)bX&0CvYaQr|T@6Hx*|m%`~1bXz*rF z;cI1h_zXxwVk;lvHRxuMW9;o?r$K^itsF*Uf355y0ZR`4_ZScm9^1n>`j==Ni&e25 zoHmmR-IkieUDW*ccTXz04pn+(KmZ9N$Z3|n2jI)=2aCz_1L;pg*;rFk7t9$V;YYs* zj3FNPVn5`fO#Es7Dv5>^qy-LAUL(bYRU(UdF#Zq>IJp1KkbttIbPkH&x$_moHFgB_ zNqmm?kcEv+6>y4GNk5n}i4))(J6&eX9q(3r!lVs{BK5>*LBmF8Ra<0pYTR$dWDF{ z8_a|+vFsr%8s6wW!vl}ExZYfaoea-ij0oLglae#5WmD4_loIJUZIDSKa)6z$ZEo(5 znsfi(#wrdnKic2rk$ndbR4In8k5=;YfDB(Q%BV|k>;^@lk4#h$FR_uee6T}P zvvLen>luh&Ge2bEtXT=85@qdI7os9*_{F^B6k)!3GDA% zBfZ_-MqG`S!)S9vN;Gy~84%Y_I2S4jMzV-&T$<8t;}-X0aamgou-T6UEMskg^|POS zC{=+p|F%8B&UrU7dL4HXyG1SNd|JzS&fO&XYk9Q8#b(l_;U}cRV>`XvVN?b}UL#^_ zbf&l|Stz1LJn5&thaGneo9{N#q#R$HZljg4v9Jh;P-~b0y2fL5UsOZyDMzb#X_{}%)#cb(q}@AwLcDWPjNH#b*TS6@fOfRIRF?A^8zfcgT#i(yKnNd~fa zmhE*M{}W?ems4rtzIAN$D;=m%GcSqzB;8hIXWpHaHc-08wgqv72=%_yeEv=zqBSx_ zaU%#xGenxCBb=2b-h-&u`*9DqmSwNNK>4&D^Ibmy;j)$^lT6b$c5&&AIsng#rrd~8{~IXO^2{0C0Fa)Zzzyr1Aq0SVzgm^ z$1OL&ywW!}gxplwuI#HH?!SBu{|Qbf9f!J!L>wBgl(&e3|8l z_q1a?6c+EPxNgxaqlmM?yk+yFB>XOACu18g2fVwPRGH0{eJ5Oq#_`4ptTl#6Urr%Q0kMvO?Ruo>bN_gM92>Uf$6 zYmz8KA}f`OT&KD3=^~h!pYMr+zxH?5AAvd@2&pXtX9XOe-*DSKv6-oXtmE1iRID6w z{;!%md(Mz#ZA}r`v#MUjVtb2;tu;{--m{y@J(1j%6| z$f6cWMG1m)Okao494X-Bfj|!uO=`<6ePuzKhEP1u;IVqQOumkY@CA+}h;wk{38S7I zdYl$oik}J!eFauxd3}hvR5?V1hwGlohpc)ph*e0)6ELLP&OB{kz?0gQu9vkGE*f;! z2i336E9aY0Veu}z4D3o0@jB)$YO!N}fa3i+x6xi> z-h=!tNiiiC^jOV}xo_0tZAr(`VziOfx3jYYGuj2U;tOs+cEI%ELk5&sS_+jwEy5*H z>u}!RKq}wzP|ne$p>9^ard0K`v$OMwgrz@!UfH-#k+bnQE*f^b{|3(aIWpo7b6^Nf zUKFu3BySe(8SOyOlYvk4-8|K{`B}t?#K+|M!uCgNyd7vuKmR23;vVSZ0VLKtp68Xq$Hj^j7MPI#o^#syS z>ebA`XT@_tN@W}KK5a&7KpsRs!d*RPt7%|>8Wa;IAzA6xKPO57#}fdPB1m1ab8zIA z?pV6|Kz8+TTe=FQnuj6VSR8oDU`Wb$0HG46@S)i}Nv*$K0kcrq)DnYnYrOBYIPdwL zw$oi7I8ya#Khc}+yetzoLS%Z7gO9zTj<_6gZLSC)<`}h#7J8{7`$8NW!dL@Ah}}Si zgAZsIx%(-zas~++Tu{i&^mK+n)7ikDK$vI20s&W?S01UCI-eoz69~q4A%0xrf?cxmA9tCA(<-x~W>ru^)OB1bP%Rivl(UZSQkwhwYI^M(0Z3nD| zS1DPGcvy6VQ>LO-2~Uy@dC2UvG3j!|9@$+t><^w{7f}^Nn*d{5Pz#w528%NT9L{gbs9ysUrRZH9E=v$&NPfC81+aoU z5Kt}eOlwOE@!*_SetHs{7MKI$5_TJ~<&h4rb{Vm`GM1^Vz2r0;v(2e~Av zLXYnzI+KNd%DE585Pza~Vx^nZUC5->Q6&rP#xB6hegh{(+AS<@X$2ey;YxG&e$ZIDR#r%tX1!ZZ-q_G4mZ)}z|* zKF8O2nYGNtrEDDnGQkiD#j??-5V{g2zdhmQv%$B2azt?DdUIfe#G3`>k155SiZ|57 z5R)bHrYj?%T6aqvZ6X{9Cmt96rL*&tbQovznIl5nKs8UG($@4(wZt88T^%_^OnhM6 z2|e|-5r7ladN%+Gf_}pH z?uAVA-KEx6Q9!vIepb*!mhQ;++B*-|Ue}{QDEx2lEEJp7x+Zd(B9CEmI2;J){o}2F z-t&!NT#|Vo&(5kR3H@8SdD8nU=8C2|)46$K{q^6x0U@G$DC6klRJZ%r*UHN3(Hrs! zXUfHEicj)zMxD4jU-_P8^~~Whd=8P`GAUaprnI2KhnZ5DGuU>WI@j>cr%lId^m}m% zKkTCti}~QIR;BGln1y!j+<6}n`4&s;Lt=W&d3`2-ygQo~d6s<; zQBv>tm9O<7=Ie*};O#oB71)DDK*SrV?Bl{NK~IiNMrHHN%8lJ~-TFtQXc5LZj@TtJ zE)_2mbr{}bsz(Fi!VFktecw5%*=#MM#*cv7jXg+(1pQ?2_md(Ebw!QLDMHuh?%gNZk_k#RQnuFjf&uYrg#ZhY!;HH9h9oUKb%Or+s=!87A}W zEqiD9=xtYxO(&AOMYaectnDoSY8a1TnPNEiH5Ry9i5|CNxIU(2$PEm8Epz zzBBb3$g_jC;&nV-wzW(@x?8r=_!Fv^@!bi&y{GiT{IkcFSc0UpskeD!G6c7)C(LuQM?U-?~~>t+FRdQ&Nr~`T3WZlbQave zOvD|qDi@JiC(r>>qPpDvM4B51^PlPY4Kt|&g~yqkE6Z3zReq&3*=`nmGzzs)23MTC26e+$|;B| zeVnAg5HZ8%!ui+KrR;5=hg6Mef~=RF^yJ1#}6ozQ>RMH%FAwMBP&w%~)SMhkNFQW3n0vZc{0REha-8`{&V z>oO%5oEPIM^Q$>0-F7d+_bQlu(;|9zO^wT-S0PT0{`U((+v(H04^z@P)f%9mdq?rN z2Zheu?I}%@Pw+EQSrAva$=S*f!6+LsI=%+4<=vunk|0p^Ey7^>RscFN=r8oII=|p+ zKj+4Y1FuFC*<6J3ps0y&9ofI1f!+TQL)>atBfQA{Ni^wumTG)ZGrSNWV5qg58>(_n z4q%7iRt{Pjd-N(6YrG}Sr(fC0Jq|cMOHV#>C#vpOw9&Yc=qpKPu=jOotDmiHcK7zi z!29n)mH_i`x>VNyzyo~0GSq4=ZT`eIr-|UeCScesLk8H}Z1-f$zwWr$*mIXIiCAbh zcpU@&pY-?Ny?ghlv2rLl*D&JBh{-1}_G4_#6Y!a=mPaMK@=)zB=oPWn7`H}|2U)Vr&P5PJ)C z-_cNC-!{p4r3$8k9@QymPx3*m?CeBZx@O67VoOq5I@l!yE29*|%Ewo9ThJ)QwZRc0 zVD|IH+Pc*dl&`FXTe6?h-barhwUtF1x>OafG%K_H*Nlr!P(1U?ya_y%?-&8?E*Q*i z5)5qktDRhI;@M*Qozly^_KhNW7!pc%W3k_IKag z^q-FhIHxmMuZNwIkBp4uZMB*1l3ja@Xa?k&;HY-?qCC^yTHb?*wWz+xby!OJc2SYH zg;42F%BN)b#*8mb@aBNz#GR31`Huq`D3-aOD|9jYp zqx{VQQ5eD?N^5uG8$#tG#&;=_5`#u}ypR9MTAkL^&$LWldKr`V@=`$o>0 zc_%#RG2=LyL$R^3hCfK})&hXf=}cq)1v8H=!t7T3<$Wk6F16t+whGL4KHQ)~EsYV_LHiON;?c~5;>og4W}LEm2n zq@A%;*>qW=jogCSQ8o45Xr2+GrcC@gP~vjR=^qxlZt{Y|vN#>HK)6P^*gkV; zY4Y{|9Cx@nCZu;UzXwi7mU@#z`042T(>jDfKecF1#BlbRFNsS@iQr*AT3iUoIJVe^(Zi@ z8kWOEqQo#r;_ls7O!YTfns4c2>eH>r^;)%QZBSl1w%IZpCC9!j_Z0FHrJNwtTZ&q;8ULFG<=mqNlqS?AUoqQ zf=*WC5E{BE%n_OYI^i0)NKRuzkW<0xVaRA`MpNqPv@9%*vBmM@17&4Qef`KrMU8oB zBCE_gb(ar=$NvSsv@pbdFC7pCS}47%_w)LjR$GltF09-H)8|b9+D+!bXbZFB;`n*y zJ-c@O#I(FlTrS^BOe+Iv_Y++K1fJZS?7$ypKp++pmus1I?dTr#& zU)^l*>FY!ibjL-AD1?2IE!{8u-?U{lmNWNv4_xqd-c}%3g%0gsV`H9gISj%$*%8e? zfR{oPB&YBg`sI*w=)ask9L|=mdiwoFtYF~+=!mFTux5c}++7{!sTR;rK)dS?_v-2E z6Ka$G+b8vu@ltOus6}GTqWR6&0p|tZX%R4O+SCC3Z9AOnM|Q`YX9qrA-pr2rA-+5Lgf*!Bgptb+2hC#HH^He=q#eMiu&Kebk%8G z+ea&DE&e`0_825jTP!gR2$Y<*;vCSsAOTg}Vq?W32PM_f9MfRqD4|b198t7FO&nTc z#YOqbFp~%Q>Qc88#sIH6{jh$EvEpfAGx*#84R0(WycS?HKSqloNMzrdAGvOaDd#%Gr{J^GS`h%=cit`o60 zVqz$c9cP0SrBs~ zRw~7C5#Fu=?J!&}sW5|||8*_{&1D}@;99f&@F4pKpU|A&NpmOs1%$d^juDr}u-)Gc zi~xCDaXcFigR&#m?`z^LZTwjush<-Q^n8K@AA@A7z(233RU}+O^%e(-P3P zoZWO?2t*q-NZwkl!$`?;+iln1PCzwWM)P+8xd`DE<*mg@uQn(kw}>k#--_fu?6ckG zw=sZ5G#~GZ6&_yRS{fF_e_9JYT8I|=22Sd?tgx=4eX&rWhlcq z%?Uz@cX{k8UJWlMoWV>&nkP zft>~~MrW;IBzw;z`X>{Tjz0k9;Wnd&qhsO9kPoY_kq;STyj>L8g}>{Hnt0oUM&2FF zX%X4RfLE{HbCh7fA0v80DCno45w@-Iku(?D7(-j*JxWEDYFC0->H{QNvTWccN|>+p zZP;3_J8_ISRX4#xZS%i~79IFcBU|71ZjyrP1kMdT2Dfx=`ZKiM`sbxrr3En8pE8Zz z;sb#!H3yCRIOdvF*S$-vo|6jql{hKEV5pm4oat3Un7!$KBK`Ofk^m%=berdt*f?m~})#b}Dm707x56X7-;a{cS& z<(0LNfhxWN+s`^4tMeG~K+m8%HFMGnc5fGYS;2yc5b?b=gjm=f|8piDNgW15K4v?c zo14obc|HdgO5SGxiMk4&>hs*(Tm>@>L1DHbub)32Nf37vJ`D|xD&Pm}cwpBQr1f9N zY2`i)?uVGANqXV$Omp$~KCMHmkkfOQ{fT#*nC{p+XGzTi@A)*;Dq>6$FJ>vY7lsnC zUr9-64nKJSW?aPB8%n4P$Dw4uZXbp#!`sSWD)vxQ-WLmtaomS-2aX&$MU0IH-Pz24 z^Ul`H%7#>v>oTl8CDr6wRu*NqIzs&uC>E26f-;f^^K^D5y zL`F*LCBX1Rq_~5KLa(!dr#t`cK9|Fun{vP>B~Y zRHD-#ia)e}KM_O^F>wk$E8mt+o8U`EPM#dh!po~#xLji-L$`Vd*{T%9bbPiCMyetv zFmH4Y+=^aOtI*mA^XwlvHgSiy2+A~pQf-P{x3+b!baR1~K{t^YKMzpA8Zq_>q8X8l zukMj2sl-+=w-z8KA(>1`BMvBH7dgKrDd#8rj9+2WZ*$6UWI#_ zP}dKhO`)6p_xQ;*_HGPz=&>!gogt4S`XgrgI_`I4(z6_PPjj|`jM1e!TrpvBx239` zf?|W6w+C-4I!aCLPYmY*;$av(u$Gu>ku(8 z>*bGtKk)`A%!#yA7C*ZWu00n-CzT8uOsxbOp;f8&jiIr;?a@Wf#;yb}nq&o8)x@2Hq?M2@qtuz=2r0tFL=GBYzFH$1;rTm_?pcs+)`%44h)oJQV*XZe+RkEE$&?}o=o zgg0d4B*-vFJP5i>go2sU9N>)OkUhSATyaVcT=YMy3uuwE&>26DY%?n?WN#dj_qsK& zF>3q`oyKCKf*%CEikG z^ru;imX@|YQh;J>eP9cgo}LgUaX3wTPT+(;jfuGk4eHVSFY$?em8e|Ncnn>T(`$Mc z@cF}VA+KY&9?Rv44B-cqtVg!CA(4%(2iF%sUmr?KCH%%W30FJ*PJ}lh;6hlVQ_EvQ z*LW2fNerJ?02v$4=MZrW6Sm<5skhJ20B>8o2k2#cG?lcFL%SdNbX^im7t zupwf(%Ku2uHH%UIL}PDh-HpaYG{6kQ<_pBc3UXDV=&86>51a=~Lk&ZC@D^?Q_U)Sv zdKk*_F64~ywu6fb>6%o?&OSlv2_ZBKOs*j6SlzRLNW%>%I`cUiR-^S_a6;p(zCn}u z14)|*cjL_`qA)gzH=)7!n4n}c>AHecJK60|soY;s zcwM&x9pHbGLp~KjJ^DE{$zpH_$95PGjrefRELZ%!6*yaDrZ>S3=di2l$~8C9fr-H`;zf7Fn+{-9 z+yC1j-bj|fW%&b2611&mK9wn0!@4qLB*Y7o;_enn_?~7fzu)y4&%V5~Q)w+6sc&Me zjF^W6gZ4!9;e_25WGB_1uQ36ZoH(EdLkt6q#LgxuHZf>V*P_M`hK^F#$*mP>1 z*cSg*hL3a~za#O6gR+sxIQArV8B@Kl#6H;cj zWMn5Tvyd%BHpz~R>wNP0{_fv>9M^Rm*B|$B-+$cK`}hor_jtXY&&N0)=XpMlxMY_N z)$bQz?SAkIU4cfbZh{DRW7Fxzmw9bWL^pcWbBZUCb=d23 z@iJYS6 z&OAV+ld_E+Q*H@4eZ8bOAFsYH3q6)y1AYZmlg z`#ft6@gF?`VKZ`m$1_y)117sSy{ITJ20yIRvhLy&8if%+-ib<)WU_F zMyRTsLTyIQo)EkPE=yLHOoB@6IS?@kaEJ*voNCre{T)6)Rv)4b6;PEA2v@$yPrH5U z)FCz}G&#iY(=R@ze}O5(1He07z$=L9Mf>@*w-xs@fKA*)KTgLmHpOmZZ|_xHd=#NO zamF_TBYz?qL)-AV>+miaP)a^w)m(lZ>oHL!M#STrrUtxW*VOsWiwZ;Nppxb~Fc1Xc zG(^e~AVK_Z_dK-%%C-TGGbszNP1q&C1Bh@kBF1PidNzO^qJB;CIEi*hE%&gZns3Xc zJ=L`LK+$;^6@nmY{laV1h!hX7ATJO+w8p%*7LY9@zL?`l2_D*%3xJ#WAR-VZikQVR zBR3Mb{MCh$)zPdUPh-js3O#9Zyeq`sx3ug5J|PKYfuqn7G{j7JlkM~nEhf`jl+>jd zVflP~W#{1V5i`D*rCVUJ(r>_lER_! zkTGYx9OG0t29l20^4C^HpdB#h+6lqL*BJSKWG(}F=qBnrAa~J@l7tF?VQR^jF9Khb z%%E6X1rm`oKJ8St2r8ttM~@zjW?cim&O`LdFVFAySc{tN)p|IQR46 zp(8-Ch!;wZ6yPyZV4&o_i7WTyTf4iS;uFDDM7oJ=MXXe!2S6_M+i>Pa0d-Hk9!L;EAh-*LxZ?=P8`>h1c&u=t!pS#)v zoJiV3ySbj@Xfmv#;71WYWY~&Kv<((WKq__@a=LR^`k~FF= zXk&^>h{3WPs%gs6>&fRL3Ke$W#-Bfb-bRB$Mi-)fjI_QOE-qJ#Vpa^mly7X`udsW# z^fU2eA_)xHKx0z+DJ&bmtrwaqdll~HGTihE7DRQSaj3e;Zb;?079nQMgb+otc;V1z zjB9T~I*&%1UdG%5J{UXkccj5nP|_MSgpUvs2JxgLx-9vC6ttxmaa~CB_!agOg#)OA zN&dvT=h2L;!+qr+(xj7eeWP`0QMDw4#;aLUmi++;W9Z{(n3#N_5kI+M6;ekapUzH_ zC{eLjPVcsHCzBq)bu=)d!q1dq%uRf=U|xjbtLg7cq528{s;~){9e!eB-a;;l+ZDw0 ziemy#O^s^dHWuR#Fu1NdIuha=)W?S7(br{;!;^^&^@*1kJelB@f#UiEa{Z6)?r7Vt z<9ehNBDP4y9(z$hBXQit_9x2{=yMc8?Cj2uQG#d!PND`P)^jN2SVcv5Vp+e06Isbw z0o#htpKl;|KvNB5VGF!H&_KTZ^obG`tXPGF%{y_3sE9`Z-W)RXF3kF(UzU!k6L=T) zem{^=fOg9KYp;b87vG4+3#aME_W(sDQyQ~ou&{tGtjn+hLInwDvvepC!V()Ru%r%W zr2!5gBq6{zlw)IKoa%`?xWW7d_S~Du+6lM_24?=51*p`T6+>Z*OJ>QqnxON0#m931 zv-U+j{-hxF&!6kM#qNwVqaAXXzhYcYD8TSWBmPk6%7mP6TAjt_EXD6`gVY;8{w6Pv zcwnJ~K8_H*DVZrP3M~fVG7`@)$ZuizN;Lf_N~7^4-V#%`uo_|p{~8rLfveE1ZU&_v zBW;N2q~jsBVaCSnB3+C zx<$`+0h+yy9Yln2r~~$5=tw*bFiIdM2ndiDi8vegiBKGShFY?CoWTmYC$eHa&CQV3 zk$i*LPOBN=Kb^>KZ;7Q9F;`vXR>ujbk{)bJ=l$&aS(m-4g~f;yAWOL%h*<vB2byVY7MNmcxTDXB``Z9}}l9DoFr~%Hn5Y_{)*bCI_BrIDhiwemrN=v7$ z)}O-X>0xDF3wVkue~%gk{$Dkxm!!u1Iw&^H)wV%XQ;S?E)TW&n5nu$;jhdRQ2>4*Y zNRAN5uy~1a9=chRS^DnfyAo*vd}Qg=#0i>qvX3T~))IA>{X z$e#XhF5R0L4ga5W>0UO=#*5UG&Iu4t2ndE==jrRfRqIC60QltOzZ=)YT(JP?j#oQ#1F=(vPn3O}8Jt(87A92-{{G6J z)!2G$rcVv`2Uq&3t_Cb#$^*GP5pkRUwzszvxnR5NQ%~{9SJ~NjfP}zp0=9c=NCgEW zYgke~D6`+s64khiIL5bMAodgJL}SU=WH(Z)m&RUuT-FTgvu@GMWpCC|?S#L%jB*QF zA)+~M%C+T?n(Jrfg|#M1K<~yZ=xR~3ws+1!P(fD5@b~;(XqC5O3_u%V{TUcemc-CR zD=3L~Z~=)HAnjYgPHAbGX2_~DC5CLfk%g}JML2GLMvqlN3a3s~Qv_p!n~G&-8&+>O zE}Zw!HX526&@Eg*3EEWPbO5WAwvW#nJ?cGNLvVdcF61EtPL6i$MY$nGj9nq)r#-jj zCU8394~XI~OMVs;uV}=Hv*2)%>MDS?)dm9FYK8{UshkHz@mYoZsZ+<$gA*8Z;0U50JT|D{y!H`$fuJ#FI~-6q5K=P9 zHXuK*uRwL&;7l|czo(|WP;Q_?L#p10Lb_SJ3y?s6(<@fuZH}z|H1h~3SnT$_y_fBZ zn9-K(#kFCTY|KaALlVbSU6|Arpi2`r6Rsr14S=?+p!i>Nd8Z2stz&@Xu*csKvDeA1 za0}{le7>05Ln=9rNLOOHaS33{a3+HL@-YR4zldu+8ptSgYb2+(%l!=S_a`_OaZhv} z#gceW28y`(yLIJ^jM#|Hj@~_O(6b@#`h;D?oB#VEyq@5EPJlX!w`l4F;l6d);5}M@ z{k(19(j^=iK7O1F7Wq#Pn%%+>aECVIy?gpHhz!L4Z}Pp0zHc9@-2nTBVzAe6Jt%Q& zV`mW62y4?7{4*dtm>7ffeGEggs5cXEe))(cAZY%L69}5#(CCQ`klp`-Cpn2^Ptgff zoWQq>i+`;Hvf<1n?j?2o2j)V=NOh*g-<`(W~?;L(Z= zg1#Q^QSWtA0`Nii7TBMbmY#e{g?I^tw-+KK-9wWh^bx2&4avM~23?>_^bnc;4cGj^ z=+Y23T|4?csfO^JQRq%;U5F9}ZEuj3Z!o4DKX92Si2cb$v^lx_6>3;xq{YG(x zX1Tax#CE!U682W-!5_%vy-lupP*NTw;+tV|Nbx(v&JJ~vK(E57L&yjve+KYEvY4L4^Z=z`W@neRok5++~53?A89HYg6<8lH~qDf0%@q~20!R!}fQBe>>m#czQ@*4K)t z_8;O?oT?z19;&m;f_|{0lKRuR#!MV;oSmPC+uC+Fgjb60+xPaT@TNKaYGaE;%B+%^MeGk-$)2tZ~JrGkeIMKv>Wv}r@Y(YpN9^XXSh5bh0a>P(< zG1?CaZgr+o?WrmWlW_o9(kyeaG`$;y0K1y)_z40t(f5*R?=?ok!ooxv75gFLQl=3; zV~>>JgB7sv;K3cB853K7!YamIqnl6Jj~NIsmp5nv5N=6F4(>$xyB(n{K$;=ddxvd_ z^9eREuZ8C=HToa|^P=1F!~r2zVy};3j7U%cXtX!N{Fm^F3H46)$e;}<$;5gLwJRx9 zFbjejIbK((Jp!^H1Qk{`wzcSap%=UXlVY@8WL6dp%jaC~8TA0XV<3bi-Qg`EsuLv) zCJ6+EgWLGq^76#=qy$xT#l*{)bj4_|QOf=P{rec=e%18aYT!}Czm6Q9A|$j8Ff1t* zQC!~za`N;t<2o{v{yj58NrA>r)7gew43b5*{QH*W;$}$Swc}WCh`KLz8&3xG&g`Y7 zy_}svb>b}V90U4ZmB25xwcAltzQs>b6dbl%Pf1A{Oye{|!YK!^vW0{tbpPa}3UFiV zFECA&8KaHZARv(DniR=ibxu*-cAREg4gDGNAIckLX@ro#C&15twlZ8?H4p~6*6z@F z{fASK6HXW?iB>?8zH;+`=SL8+D1u2%{GFTgCc^E-`QGXXo{A+2Fx`VJ>7%2gr{ai~ zvo?rdPkT&)VAjnN2%B+-tW{L}$$U9*1{*(cF>ZFj61t0PxxF#^ckwZL5+CBfWf6w(}GA1EzCDB0o);th{Oc;k^;Krlh?kJGau04azGHed9etT0vVL; zWDsvNMfb$B_tk!rNO+5-5*k?gt5-FNInX-w12Dc0e_RbGbYMG>;2U!b3G$9W!ve22 zy7%y*nr@NvBJi6*MMwB^f9R942hU;~;zOXD!_zce z!~4Kc=oc34oEGPE$VeAfOcg#WB$=$$`t$e%5ma7mn@Z6eP9j{ntbpK^mn2b z-@jG-!d0O;aSw&@sZkN)tF?&ISQ*oGt_5roxLjfnoEin`g`SsH;EEq0q_S}kqSdbH zqdPlN_^fcVw6xKq7Z2Rr1l)F&0UCVw{kz^Zagd6(Ax?kO3eJ@n?(XWcQLjdTk^!lu z=F6!4XnHZc-61Fl&i;bAj&%z$>Ng=)A|Hm(QGT{>_mi4CRSpMIljaWnKI*^3M<|Rd zPakF6vU!#`5cw!ygYB@U%He=q7oV(O#;-EJGZ&=INVvG_<88Cd5wT%GJv+2 z44AZ9Wg0TxfU+?FlY;}=VpH_`3I^!BvP;4uF+aeuOhk?S*UJ8Tn_390q0kj`_n`3z zwtv>kQFT^he;SfJPimyIl&xda(s+eHhGE>R5a_Vw#g1bq8;-jRW3K+8XIC~>f&3I) z#*&Ava|hB#LHOqN;}Ubgkm~7B!AGbI)ifMX0X*zg&gQ&;cz(hU+l%tR-7FLPO8?6=>0Sm`d}Rl>f>#ib#)h!+4qyICix4BJY8jSPuzsq zsIkpCIRc@@-Z}XG+`UzRol<7Nq#(A2pD+1=_DIIZq}<2;Aw<{a?g7jiO+k4k{^8iS z<|(Z4)bNHsaZk6A?`~}Dep1q6!x5`>f-552kSQ`aI$Zi(6evzsp;UsnZSQ38Odb(G z!59HHN$Wa$Oe{=KG$9F91oNo9e12Vz_zQxTv*RC4$gPNFf}*S`T6jVe8Iv%$d}0Ge z_`3mduA?Ai0?h8@&`gtKr7-j+-IhuVfMPNMy=rey`1u4&@?wVxBNr-9LRFYY4NY2d z3Su^h(Mt*HyQ#Br=#*ti`8};qz(lxOkNe}ocZz^@fn2JO0t43q z;3P(T*qL`DA{bHU-39G(E9i?9HxNKBz_kwTb161S?0r`7{=QJeoWr=OkXv)>@bky~Q_t zv5byyxQS+%7*h~8T>2lzCay#ce@G!UDUUF?XUbK}i%?!sxq_66TJf5W^quyvX4Z znQeeWaa;p!(;QA?xyPNUvkq`wzo=CkC;b*9%gNY0Tv;6SkRp<}LL!3;BBIpYWfGYT z5?A~9gs}G!DJgwBkp8jsKlF3PBEH-wbxVUiY-l~5&Lo7v$OU!`7zd%$RGf1?7z;OV z@>5`apWSIi+$d4+f4k6*lv5$~0Fm}d<}cLLWwJqZ0q}<#Y)IkhA>K}zwFRk|g1*ZJ zMojP(^Vq8L^4dMKQmFsUCe1N7l>xO|qX_f|LOana!XRWYC1B1`11$w1%zCzBuE35r z$By}+(fD-OgWe5)!@p#ph-5i

p8+FtiNdhRaS3X$Ar)viK?PAw~`|{BS42+f$}! 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 From 0adb4efefe4f9a268332091f5b1d284dd2a91185 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 10 Feb 2026 15:47:01 +0000 Subject: [PATCH 42/51] avoid instantiating cudatimer when might not be on gpu --- fme/core/benchmark/timer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fme/core/benchmark/timer.py b/fme/core/benchmark/timer.py index 865a9ef5e..230fe4e72 100644 --- a/fme/core/benchmark/timer.py +++ b/fme/core/benchmark/timer.py @@ -167,5 +167,5 @@ def result(self) -> TimerResult: return self._result -__: Timer = CUDATimer() +__: type[Timer] = CUDATimer del __ From e36e53e3c5a7a01d3e50fc9e07e8599038b99c08 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 10 Feb 2026 15:58:03 +0000 Subject: [PATCH 43/51] skip more tests on cpu --- fme/core/benchmark/test_benchmark.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fme/core/benchmark/test_benchmark.py b/fme/core/benchmark/test_benchmark.py index 9e1f1dbbc..df8719fdd 100644 --- a/fme/core/benchmark/test_benchmark.py +++ b/fme/core/benchmark/test_benchmark.py @@ -14,6 +14,7 @@ DIR = os.path.abspath(os.path.dirname(__file__)) +@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") def test_run_benchmark(): def benchmark_fn(timer): torch.cuda._sleep(100_000_000) @@ -58,6 +59,7 @@ def validate_benchmark_result( @pytest.mark.parametrize("benchmark_name", BENCHMARKS.keys()) +@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") def test_regression(benchmark_name: str): benchmark_cls = BENCHMARKS[benchmark_name] regression_result = benchmark_cls.run_regression() @@ -71,8 +73,8 @@ def test_regression(benchmark_name: str): ) -@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") @pytest.mark.parametrize("benchmark_name", BENCHMARKS.keys()) +@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") def test_benchmark(benchmark_name: str): benchmark_cls = BENCHMARKS[benchmark_name] result = benchmark_cls.run_benchmark(iters=20, warmup=5) From 7dfd05b9d036d188df12a69dc8226c5e67f4ad40 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 10 Feb 2026 16:02:34 +0000 Subject: [PATCH 44/51] update regression target from main merge --- fme/core/benchmark/test_benchmark.py | 2 +- .../csfno_block-benchmark-tesla_t4.json | 72 +++++++++--------- .../csfno_block-benchmark-tesla_t4.png | Bin 98205 -> 98610 bytes ...fno_block_8_groups-benchmark-tesla_t4.json | 72 +++++++++--------- ...sfno_block_8_groups-benchmark-tesla_t4.png | Bin 107571 -> 106852 bytes .../models/conditional_sfno/s2convolutions.py | 4 - 6 files changed, 73 insertions(+), 77 deletions(-) diff --git a/fme/core/benchmark/test_benchmark.py b/fme/core/benchmark/test_benchmark.py index df8719fdd..785f8f397 100644 --- a/fme/core/benchmark/test_benchmark.py +++ b/fme/core/benchmark/test_benchmark.py @@ -77,7 +77,7 @@ def test_regression(benchmark_name: str): @pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") def test_benchmark(benchmark_name: str): benchmark_cls = BENCHMARKS[benchmark_name] - result = benchmark_cls.run_benchmark(iters=20, warmup=5) + result = benchmark_cls.run_benchmark(iters=10, warmup=5) validate_benchmark_result( result, os.path.join(DIR, "testdata", f"{benchmark_name}-benchmark"), diff --git a/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.json b/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.json index ee7120f1f..d70bce275 100644 --- a/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.json +++ b/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.json @@ -1,93 +1,93 @@ { "memory": { - "max_alloc": 4503010304, - "max_reserved": 5408555008 + "max_alloc": 4502092800, + "max_reserved": 5177868288 }, "timer": { - "total_runs": 20, - "avg_time": 345.6458038330078, + "total_runs": 10, + "avg_time": 345.5874877929688, "children": { "norm0": { - "total_runs": 20, - "avg_time": 40.212057495117186, + "total_runs": 10, + "avg_time": 40.31120338439941, "children": { "compute_scaling_and_bias": { - "total_runs": 20, - "avg_time": 22.75168333053589, + "total_runs": 10, + "avg_time": 22.836835289001463, "children": {} }, "normalize": { - "total_runs": 20, - "avg_time": 6.482544016838074, + "total_runs": 10, + "avg_time": 6.486121606826782, "children": {} }, "apply_scaling_and_bias": { - "total_runs": 20, - "avg_time": 6.464561629295349, + "total_runs": 10, + "avg_time": 6.473951959609986, "children": {} } } }, "filter": { - "total_runs": 20, - "avg_time": 177.22591857910157, + "total_runs": 10, + "avg_time": 176.9090148925781, "children": { "forward_transform": { - "total_runs": 20, - "avg_time": 57.90016918182373, + "total_runs": 10, + "avg_time": 57.66742134094238, "children": {} }, "dhconv": { - "total_runs": 20, - "avg_time": 63.255994987487796, + "total_runs": 10, + "avg_time": 63.30165138244629, "children": {} }, "inverse_transform": { - "total_runs": 20, - "avg_time": 53.860619354248044, + "total_runs": 10, + "avg_time": 53.730656433105466, "children": {} }, "add_bias": { - "total_runs": 20, - "avg_time": 2.197545611858368, + "total_runs": 10, + "avg_time": 2.198143982887268, "children": {} } } }, "inner_skip": { - "total_runs": 20, - "avg_time": 16.972057628631593, + "total_runs": 10, + "avg_time": 16.8360897064209, "children": {} }, "activation": { - "total_runs": 20, - "avg_time": 2.2639008164405823, + "total_runs": 10, + "avg_time": 2.2632800102233888, "children": {} }, "norm1": { - "total_runs": 20, - "avg_time": 39.436012268066406, + "total_runs": 10, + "avg_time": 39.3988697052002, "children": { "compute_scaling_and_bias": { - "total_runs": 20, - "avg_time": 21.949654388427735, + "total_runs": 10, + "avg_time": 21.925215911865234, "children": {} }, "normalize": { - "total_runs": 20, - "avg_time": 6.471660852432251, + "total_runs": 10, + "avg_time": 6.473680114746093, "children": {} }, "apply_scaling_and_bias": { - "total_runs": 20, - "avg_time": 6.506368017196655, + "total_runs": 10, + "avg_time": 6.501107168197632, "children": {} } } }, "mlp": { - "total_runs": 20, - "avg_time": 69.51575317382813, + "total_runs": 10, + "avg_time": 69.84680938720703, "children": {} } } diff --git a/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.png b/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.png index a888da071e9425c4bd9aae1f2bfec74fb4cd7999..2cd374f25afb8ac171b122d3bed47690eb7ea13c 100644 GIT binary patch literal 98610 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 literal 98205 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 AN&o-= diff --git a/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.json b/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.json index 8bcdd76d9..b589d4969 100644 --- a/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.json +++ b/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.json @@ -1,93 +1,93 @@ { "memory": { - "max_alloc": 4221467648, - "max_reserved": 5408555008 + "max_alloc": 4219632640, + "max_reserved": 5177868288 }, "timer": { - "total_runs": 20, - "avg_time": 303.2896362304688, + "total_runs": 10, + "avg_time": 300.87982177734375, "children": { "norm0": { - "total_runs": 20, - "avg_time": 40.277296447753905, + "total_runs": 10, + "avg_time": 40.18407669067383, "children": { "compute_scaling_and_bias": { - "total_runs": 20, - "avg_time": 22.8371280670166, + "total_runs": 10, + "avg_time": 22.733142471313478, "children": {} }, "normalize": { - "total_runs": 20, - "avg_time": 6.474422407150269, + "total_runs": 10, + "avg_time": 6.475462436676025, "children": {} }, "apply_scaling_and_bias": { - "total_runs": 20, - "avg_time": 6.457521557807922, + "total_runs": 10, + "avg_time": 6.463200044631958, "children": {} } } }, "filter": { - "total_runs": 20, - "avg_time": 131.42147903442384, + "total_runs": 10, + "avg_time": 130.6602584838867, "children": { "forward_transform": { - "total_runs": 20, - "avg_time": 57.8722318649292, + "total_runs": 10, + "avg_time": 57.58610916137695, "children": {} }, "dhconv": { - "total_runs": 20, - "avg_time": 17.979475116729738, + "total_runs": 10, + "avg_time": 17.81670398712158, "children": {} }, "inverse_transform": { - "total_runs": 20, - "avg_time": 53.35887336730957, + "total_runs": 10, + "avg_time": 53.043609619140625, "children": {} }, "add_bias": { - "total_runs": 20, - "avg_time": 2.1993008136749266, + "total_runs": 10, + "avg_time": 2.2015552043914797, "children": {} } } }, "inner_skip": { - "total_runs": 20, - "avg_time": 17.290244483947752, + "total_runs": 10, + "avg_time": 16.982787132263184, "children": {} }, "activation": { - "total_runs": 20, - "avg_time": 2.2486671924591066, + "total_runs": 10, + "avg_time": 2.250419187545776, "children": {} }, "norm1": { - "total_runs": 20, - "avg_time": 39.56943225860596, + "total_runs": 10, + "avg_time": 39.53410530090332, "children": { "compute_scaling_and_bias": { - "total_runs": 20, - "avg_time": 22.051700592041016, + "total_runs": 10, + "avg_time": 22.040048027038573, "children": {} }, "normalize": { - "total_runs": 20, - "avg_time": 6.472691226005554, + "total_runs": 10, + "avg_time": 6.467331266403198, "children": {} }, "apply_scaling_and_bias": { - "total_runs": 20, - "avg_time": 6.534172797203064, + "total_runs": 10, + "avg_time": 6.5125023365020756, "children": {} } } }, "mlp": { - "total_runs": 20, - "avg_time": 72.46284484863281, + "total_runs": 10, + "avg_time": 71.2459716796875, "children": {} } } diff --git a/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.png b/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.png index 24857ae9173f10c42c9c7fd42e9e74b9748aacee..99ff114e0058f5ef4b10feed2d34af24672bb3f2 100644 GIT binary patch literal 106852 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 L{kPPG73cl|Mw(Vr literal 107571 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 diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index c3926d2ab..c58839d57 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -243,10 +243,6 @@ def forward(self, x, timer: Timer = NullTimer()): # pragma: no cover assert C % self.num_groups == 0 x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) - B, C, H, W = x.shape - assert C % self.num_groups == 0 - x = x.reshape(B, self.num_groups, C // self.num_groups, H, W) - if self.lora_A is not None and self.lora_B is not None: with timer.child("lora_update"): lora_update = _contract_lora( From c73aac37301fb756423dbf5a07b23ea66bfcf127 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 10 Feb 2026 16:05:29 +0000 Subject: [PATCH 45/51] accept timer in the rest of the filters --- fme/core/models/conditional_sfno/s2convolutions.py | 6 +++--- fme/core/models/conditional_sfno/sfnonet.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fme/core/models/conditional_sfno/s2convolutions.py b/fme/core/models/conditional_sfno/s2convolutions.py index c58839d57..b138dd442 100644 --- a/fme/core/models/conditional_sfno/s2convolutions.py +++ b/fme/core/models/conditional_sfno/s2convolutions.py @@ -328,7 +328,7 @@ def __init__( scale * torch.randn(1, out_channels, *self.output_dims) ) - def forward(self, x): # pragma: no cover + def forward(self, x, timer: Timer = NullTimer()): # pragma: no cover dtype = x.dtype x = x.float() B, C, H, W = x.shape @@ -511,7 +511,7 @@ def forward_mlp(self, x): # pragma: no cover return x - def forward(self, x): # pragma: no cover + def forward(self, x, timer: Timer = NullTimer()): # pragma: no cover dtype = x.dtype residual = x x = x.to(torch.float32) @@ -634,7 +634,7 @@ def forward_mlp(self, x): # pragma: no cover return x - def forward(self, x): # pragma: no cover + def forward(self, x, timer: Timer = NullTimer()): # pragma: no cover dtype = x.dtype x = x.to(torch.float32) diff --git a/fme/core/models/conditional_sfno/sfnonet.py b/fme/core/models/conditional_sfno/sfnonet.py index 6bc40447b..29eb986f0 100644 --- a/fme/core/models/conditional_sfno/sfnonet.py +++ b/fme/core/models/conditional_sfno/sfnonet.py @@ -64,7 +64,7 @@ def __init__(self, *args, **kwargs): super().__init__() self.conv = th.DiscreteContinuousConvS2(*args, **kwargs) - def forward(self, x): + def forward(self, x, timer: Timer = NullTimer()): return self.conv(x), x From 8ba53413c01074b41368c7e37dc15e5a608ca803 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 10 Feb 2026 16:06:38 +0000 Subject: [PATCH 46/51] skip memory tests on cpu --- fme/core/benchmark/test_memory.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fme/core/benchmark/test_memory.py b/fme/core/benchmark/test_memory.py index 6b099d52c..fc986712b 100644 --- a/fme/core/benchmark/test_memory.py +++ b/fme/core/benchmark/test_memory.py @@ -4,6 +4,7 @@ from fme.core.benchmark.memory import benchmark_memory +@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") def test_cannot_nest_benchmark(): with benchmark_memory(): with pytest.raises(RuntimeError, match="benchmark_memory cannot be nested"): @@ -11,12 +12,14 @@ def test_cannot_nest_benchmark(): pass +@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") def test_cannot_get_result_before_end(): with benchmark_memory() as bm: with pytest.raises(RuntimeError, match="MemoryBenchmark is still running"): bm.result +@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") def test_larger_array_uses_larger_memory(): with benchmark_memory() as bm1: _ = torch.randn(100, 100, device="cuda") From ba14a9c877e6198b1d945ae956daa0163b1d1028 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 10 Feb 2026 16:26:36 +0000 Subject: [PATCH 47/51] seed benchmark before regression --- fme/core/benchmark/test_benchmark.py | 3 +++ .../csfno_block_8_groups-regression.pt | Bin 12241 -> 12241 bytes 2 files changed, 3 insertions(+) diff --git a/fme/core/benchmark/test_benchmark.py b/fme/core/benchmark/test_benchmark.py index 785f8f397..a8b17350f 100644 --- a/fme/core/benchmark/test_benchmark.py +++ b/fme/core/benchmark/test_benchmark.py @@ -7,6 +7,7 @@ import fme # to trigger registration of benchmarks from fme.core.benchmark.benchmark import BenchmarkABC, BenchmarkResult, get_benchmarks from fme.core.benchmark.run import get_benchmark_label, get_device_name +from fme.core.rand import set_seed from fme.core.testing.regression import validate_tensor_dict del fme @@ -61,6 +62,7 @@ def validate_benchmark_result( @pytest.mark.parametrize("benchmark_name", BENCHMARKS.keys()) @pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") def test_regression(benchmark_name: str): + set_seed(0) benchmark_cls = BENCHMARKS[benchmark_name] regression_result = benchmark_cls.run_regression() if regression_result is None: @@ -76,6 +78,7 @@ def test_regression(benchmark_name: str): @pytest.mark.parametrize("benchmark_name", BENCHMARKS.keys()) @pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") def test_benchmark(benchmark_name: str): + set_seed(0) benchmark_cls = BENCHMARKS[benchmark_name] result = benchmark_cls.run_benchmark(iters=10, warmup=5) validate_benchmark_result( diff --git a/fme/core/benchmark/testdata/csfno_block_8_groups-regression.pt b/fme/core/benchmark/testdata/csfno_block_8_groups-regression.pt index 3017f274e77039ff6d8568191fa4c496c187ec99..8d443050880d92cc4e76844b75e5d625eb5a528d 100644 GIT binary patch literal 12241 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 G_WuCs_UPvT literal 12241 zcmbW72{e}9`uCpCJiGVx2&qs>g-T?Mk|`QhLP#Nxe`vnGQdAWzWYX)ufx3)0ktp5Kh z5q!IXInHB8pB@+%8Wa{9JjOFLFvQbW(=9C2&wsP9TZp$un4iCwTc~%y=D-lQExN+N ze5$I><3@XI9&PEq-aDB8?_Gqg{R7=Ym;e2uaIk>$n9(-c!Gg~GqraX(VZmb;%L|7F zk6UKTQMDaoD{ed9c5-O2km~4F+vB#AZO4QLkKga<8R+lt?HM}ycAJHlhIo00czap- zd4>uH3#&N*(!Z(rT3jtzhCxu{m)KxIWzy-$v)Ho`CX~1K9sCVG+uv=Tq`hPw5f0E7LFErHO`?rUEB?E2L4TG*Bp(;B|#9REQXW2 zG>B*i8!)yhL70MZcujl)?z}b!yIbrT zkwGDBlXSp@zKNi-<`7M;{X&zU@M!G1GssjXgQ78ye3lBso)AUUUiX2NB#py_iUQn` zVTZzpHemJl6pYNMCngKxapkLMj6Qphtnge45o&u)gZQj~lYG_K+{Fn)rr2Uk^$)7t6o(6MK12CFdH8&F z9O2aXqHIeX2B}nG`cszuJS7@6gXYovNhcUidcTQ;<5Co#n?(!fhGKrE9TVBXrToqL zw7@iocFV`Gw|*R@N~>f~ z@qBCyMi{*!?UHwBXxb4}>K|hDLxYK(`vZ1kkT~{njR`DB!<>wHS>zwKBOWYv{tH63Uq}ZuDLCOxtH&r(%lv)F(6;dyXce z^NkV=c;X5{LG84TbB(Stw?)e>xj0UI2fDnBrE7XkkSQ}omlXwAZmt8Fd0lj+t}@!K zJ%~4UPNWsJADO&Zg0I#T(;hPuYG0}7t+|$3lrgX z(mYsyGXXkVnn=mfN=TR>4>rNa;HA9?oQW5OJ!LAOY0=B{zuijJ6h?@2x)P*a&VtbG z7m3JoNhF-LR%19n|crJtR3{{Y;mT}{sW_=l7kgLHxLsMSVXh{OJnJQv^^q_fRmaMkRGWlISla<@A7<1B2HXoDe6A#|Sid z)kH)y3!#SzhSq0#B>C!Ba{t;bu>WZZRi)P%hew-%qd1iqYmP83HRA9S-!UEUJm8Gn z1W2xICV`pvAnx`o@cNnrhx_!PYWWE=P%p%YRrP~TXEcbk?IzO`k3)Iu6pZ6MXV%H9 z!GYv5;Out?MXODa?sbFWbuuq}vRS`UXh#h|a}1SAi2*SNeq1~LKu@I9)Ns2cOr zZ(q$oNjid=bu0z=rN7d+cxzBu=>|7k9;T9Bz5rK?1th(g^uo&=xuCh$xU|Ubzd=()4 zz;&>z&S$#5ABC-zOR(QS0IYwCac@7C=5lQJLCeE=(D%ZR*&^f)>RN47KXWSGrg9IO z=k`Fg4i|Pw@}T*HDP!QOwmaW8}=eK~V^d@Xwbdc=Xe~37g zD01^sbLn)G>mVB?2Xs9$VFm(PYlBY z<5>?$ZFFr&h4bliKyuXsMqRCk#9!*5BRhT))%8JiYUyR7WH|{!Pd{c*&lANm4#W1X zI{2-cf|$A-Mt2LrS%GOpu2~qZ&oz;rz*7)3Ya0{4%Nbl7FM&~7I#i_Su~qvQFjf9T z%%O8a^k(v1Ec~LxY;*cSBc%lhMHG24%@oG*vq*<3Nm|E@@eW7|oJ@Hli@asXzl ziooYDn;@iMH_mWA2A95HfwVoxk#kqLrvLIEWVMwZ99NY_#rRgZ<(5ZPhhAe`S{SbN zH~}%Q__)sx>%-#Lv3PdxIa<~24}I|;aM$1k`gW}b9%~eV!TT#9^ss~~-*qQgTA@YMg+B8jtaTa?q`D6<1!*tZ^*TfYH zci4<*DJm0xj!B&Tj`|wiVV}Dm09E@}bdQG=NP8Y3V{gTQa(x$hdbtFSHF}^k`<|^g ze8CK^ae?RC-_U2JW-u6YoE|hyfWhoRG9bwXw>!bqUE&k?F3)E<-`9-JshUVdGKbr9 zqn7nhB|Ko}zMCHW5 zzCjHW_r%fgs9D&sTn76)mtsprZjHx?3A>tC%hZNgV07DV+FtgSILl1n6~yMiu*5`e zzI7)Fzh6P?C+Cuc@v11^RgP5~o5`nwGgu+}h=RvaQjqf#*5+zr{q|V6J0QxNtR9BO z(KAu?`78|Iu@$CP4AE0tN-)H{5Ee*mB5Jk{c)=a0Mek#BDfSu&Jtg20@QR#SK9kD{ zcEuIzPSdq>+;F+oGOS)Pj;H@Ci0M$A4my)9L2Paao#Js4INrlG0?U74kdY;pk37aY zmwYntW;U#I=^@Xb?7`0wS5Y^miJGpxPsp^XVCUJ31%ACa$43ZPF*!7M!!YfS%_Ci# z-Jwo@KbdShmKQWKK+ow4V$!3jsF@mq_UdlbXv{u%8@?BHWoE*RiWuC5B6xGRB698L zy7KiOZ4$M8EYE zjJsxqa>;zW-c2GH@;;yJH5SD4T!v|vjm7$V_2kaFTUbwiz`mho^hs<&f$t&A!8k)K zznOxsk1j) z+j21NP6oc`7v?n>Ors*6+n9`$JX&NSfO4)^u=qkeGz>fAt1lNYQS}(gbrmrmzvQt? z5(v^nm2ZnZL4SUeBK4)+3)=LBC?K_ zN7Rq5Jz~(g^^sY)fIs#5k`LYSt)^-YNm%@h3&-?#(q`{7FqNdUy-J0kH@g;vvXb$W zo+g%v>f*Pn`RGw0MVtH)FIn$}D`GRrT77~J7j9yUR|N!%>tMOrZJH`vK^r&x9#^x; zm++N1(mIjxRgj>jeXlWncOKqxR0P?a7qmws7i~=$@o^wwW_?O+Ha(pqEw_1kWcsn{q=_t__ z3rlb={)8UuEkR&nDE5v!fr@g7W5>>>=ZgFZlh;YgrUjtRfzxP|@B}mG9we@tVsY)| z1K46Fgu9gad6M0hNCYbBAI}BA@0I}c4&P#KEnE)<(rWZpP$zNEtAYqJ7b@pZg+n#@ zB*VLfh&w%CZ`YltSu>2muOI?4)<@&6&{N=l;vvnryB)5!BXPCg0DZrBWZ9H>lvFv! zG^$#|V#mqQ(tngOvXLWGeVpLf{!OG{&jBJ5ks!0^KZ zeGYtiuSVXU8(nt@E+ggQQ>f>xDRj)aJLF!a2JO4V`0Ii^DwEb4QQ+z@CVvJ?8F{2=&%}GzDSX%&@L+j8 z98Q!Z-}df?LWK;XQn(*BB&W0bA-cFDPJ($gdn`oXdqK8+(ggL03vi+69X+si8ZA%% zN)7duY1-)>=p-otm5=Vwn_(x(FI1%)>QAz`O9z|#{cr=HHuMZUqCd74GyZVROx&;^ zmhWCdbC*Z#`^?z3y>* zvOEjxat_h_#lE2Lc8)qeS7w81z7e(CxftFs3l+~FMT;E~)Z$|+CMl@lg|dlc7v~r{ z4Ao!)X(Q1|D%4bE8J^9ajhQ!Iq0Gkzq@h^}dN!-FHM^wIJh7Zc_=#iKWeJkFdJ0VN zWpP{fSz0gYz=#)AqA$&5L$Y$&m$E%%<}yp%uvLWjc1i;6?%s$Ohs^P?hbO(7F%=hi zJHp$uSfkx6PgXEX(D2P68s~FybZ_K3#!0>>ho#aWZ-P2r=qW*`rRHFeUyOd0-!QzV zjlLY31Z5_R;6V2b*v)-F7kGxCpu97NjZidY`{>1suUT`KBGyi6i0*z9ji=|EV2_y? zPdliE&3R*mBH{N4@9&c6vZENz80wNyAKhEcFfBcjeHX^3qg0Y7R(*3qq-xCGK247TqU?GeJ?$ zP-;^cMirXi*Gr3GQ2HbhPDx`&`jwz#fd*bWFTrc$--oF^zt|>Gz}mLn>M8ND>`AW| zbo`Y=c)W59@LDdTg2PUf2%Uq`U9nW{hZCLJ)4UEanp?5>rMH3-%;hZMCR?@N~Yk<5o#vHk9FI) z^tgU2RWPd}nmhEVa z)3-aC=*1&RTON&@d4f%TC`ZpOu3Rtl%?lY!Y8#A5tS>Z=gOxYxc2z^*I3rqXW;BlR!=I}jVYEjUU8kWB#W#hvLl1(=g>7< z7@TYJF;vDJs{)Hq+13*n<5`wW~hEroUtokH=5_2_T+or)~agW(D}G}(Iw zwKr|S&fIh~IxLI%H*%53nBjNXYasjnCeC@b5?7Q{D)%)Ov!*UZp$DIs>Vor>77Ai* zB};OKFOs9*IVy^Q%)Z530-kK#)`|@B-#_WS&JSGJ{i+Vw1ZXs>H zGoSSM>7jj^BSai?VO=L)#*apR^tAV58rpW697wdlQ&try@H`Jiy1&ySnF?sRe2BhW zmQ9u$AHk;*X*gBkB&r(EfQpnBdlZ;? zo`Lv+ED)dH4=3~Q0~+rKd-EDFD>({x!{oRd=c_{C=9j?f*pbVS2tbX z`~tMM4zX_*7Q^$FOC)0H!&rACiKhuV{6|3B;1}E1KLFX?6CfzNpA8=)2)EP6fi%w)w%)lwiWa0m)CnoB(9Lop zBs4_qm(6D`Mqh!Fh#N%Y^EB9@E(Ai_BcT1c4_+FzfMDY2y8mJ~L~NhP4d1bjl&{_l zo+ma!s%#a=e?197X?)yJBbIa~X>fxUwy;w)J4mhhC&uZ+63FCdUQU2v4Q-meh;Y`Z%A~NHpa#tgth%S@TyDz>kgj6CXPEDvsVZYUowEpf`$+x=!4tt%J72w&Ye0(C$ZECg{}` zc4av~Z(tmyVk$;hC0WceVO#0$qJvaq*9g|VGQ+{z2RQe68LHVV!|!Jm@PN`VwNakQ zbG5U^)dhj*<|+d(T&wBbv?lCu)Ixn}4cxVN0`IW19Ue_-K+iQ}c}ia+vFd&W?ohi- z>u1KJ>eLt_nel_l%soPq-$^qeTCx}^c@Pusox}WBqw~05uC)H+A`HZ1R9kC2@5O`p zDE8qj8of=$Kk8@lL~5duZ-yql7BdNjzVVS+5BjLTR|OU`nfT*H8AeP`ClWfw7?EcXI%ap= zG$ig4_|WtVDF~0G7hfBp)|vtOt?D9CJoAWDrB|}KXGUPFV;XEZw-yB6YM{D}3{GH| zlk3YGs6$E_Y*fynH>S!#WY!+mSE-)8J8256sN|y3vNYJE-p^XW4Z*4;}^c?)xUEr-ay=UQM9)xp;49mYG?7SrZkU93U=dfaI@ zs?$%2W?nMU6HO+obiC=z07aPIs0Ipi_pzaVjpU1BGZ|Yy5q5h&Wcj>9$j163*j&>L zmH|V=<-lTm_LL9z3aHRf_B}c6y^VfLDPV=oSJOSaDUtJzCAk-7lB^t8aQZTaPJo|G zuW|~Fwe_W6T_nkIha&1(%cbi~9?dn5JtPIFqju33v-gsLeyei@LjV8JWMR<{qg>2 zx@s@ochwpPK5M|F3EFt`>nbecMgVDFjrm(Wp)~n*^;L;#TKGPM+0!dUwKNQPfMy|u_kbc_@*SX8&5@HuDKCtO(?JImc5lspEp3Y^UmStrF*eOUxIchtfH#v^JvRb1}deFprQO5 zRF?ZjPx5t<{NXz_PN!du?iIM!c1m#ny^ZOwG)eqWm?>@1XnnBX9H_?1kHL~HY63rdrr)B%Kp{qX}&%64t(c0~_ zM@khx)}*4bTyo9Dkb6Ya=qOQIYXds#OTfm-4UdN(AnUv4;ncVRRy$dhDrFs^FE7a8 zoe@j4v+blc+m!I#WeGIyJWS$x*W=tjtVqx48Ms&40Gll}QTkgVjXvjt7Pk+OttJt4 zo#Rf@MBRw#?fpdR#R&10jDcYdAM)Wu1^Ve|K&_iGR?p5PLDO;=q1JNp#Pup8dg}-k zV6@2oFgu8RqXl}6C&=kbV)&+AoK$A*qqhrl=`%N$p5}hQ+z~-soh69df2||-lRa3q z32Agdq=%i<%ZFDh(((NyZ)kon35%O`NmHW%DkRuq!X;67#$AHv_kN;Rx7c8L*yJb4;`ok3ttbWI=ym^Tc zN%aEPgqtkPv4@8l6L5ntKb)%~bnW*qjB#ZGt+4t*%rl*;KT3wd6RsS5F)|?Si4mZ9 zteH1hZYXf9k1xdF0ZI3}7ZG`nE&+Sjc9 z=$UD*872Hfx-?&^(yV^yHC1?239O^)LI=Ks=wANNgYRpu;W)t|}k5mu!<9b-`V zwS?XiPJ}*o5kxjB!n|!O;6|G!cAg%?b~@C7c+Gw|F8!HqPaluUi!8DD=TkN=^|_h; z#&kMO=peZrw26Fte1)Fr96jgq4Tcq3r$_g!+o*1+5ShPkI$TrVhVvH+pv~qhWYeNd zAR#H_bo^~1p=Csy3(Se;6iMiL^o+>zxk9+}4WgA5j$d-K$+~lcgnNGx=*U@uzHB2o zYHkm^k4?w=J2RLg+j3yt+GaYWphR5bCGd@(H&Ng_$nZ%GkyXSI9wh+O&-P=K9aG86 zuN~BV;U+koq)YGCHL?|5a$s4-2c{J&AiB7KjPcw+j*Xc??;6C?kEa*F_jd!#g+UIq zAG|~=&bL9<%@WuUs|Lp-OM&$}3Hef=z*dx7En zVd!;?AzJU$L11()ewJE6>4*cIkx&LrnLKzeD8>~r?1b`zXNc;uGo)2F420{WAasiu z*XhFrh%wHCL<_Ca@1)4hnROc$x~+zvJ)&@rSq^^G5JXOwg5&d2XxcvnKBhu|^XI{w z<@X?6M~1{}sDiJrBrVgP2{E&*iGz0$oNRso)tl#&hn4xnD~kAmE@7kt5{I~zJBzeBzlvM0~3 zgcir6U@`d_*;6S4gIa5d?t~L$vT^~~k9`9D7lnz<*jLbW=O8_#Jq=3F`qP1rVIUoI z6@Klngt1o>D92IZvVK$*bSw0j6-~B*+p?Ch&SwMYOCt#!Gl_fS(E+eJEy`^$TT1#( zs-WYu1K5Av2WtM0$!@(|=&tNxRgC?hXYN5z&ypl@?~jszE9THPNsRFJ#gdP0kyNw$ zBYa$Uo~+PGfb47UNy4|MAZMEnug6V--{hlM*Z#Z+RSxHO{mJs4D*j z`uH~lQ&0G}gVx;jEB~7RG~`VEO9z^NgD*FGhxm;Ws5{($bGUAPUe*@U|G|)sfswAU zj){qZj*hW`zM;OJwyvSJp0T!pj<%7mwy}w}zLAl!w$9%u)k(+CM2&`s^Sj#Hj`?l) zpXBqOVcy^O|F!(L9Q41d{u#{G`WMLsqpa>j8HPu1Tz`|t8Uzgz#7oE*;ZKN^qr``fL+e`L|$ UNpHd5tn+A}ah%`n|K9fh0K& Date: Tue, 10 Feb 2026 17:10:13 +0000 Subject: [PATCH 48/51] add automatic gpu benchmarking --- .github/workflows/tests.yaml | 49 +++++++++ .../testdata/csfno_block-tesla_t4.json | 95 +++++++++++++++++ .../testdata/csfno_block-tesla_t4.png | Bin 0 -> 103399 bytes .../csfno_block_8_groups-tesla_t4.json | 95 +++++++++++++++++ .../csfno_block_8_groups-tesla_t4.png | Bin 0 -> 106817 bytes fme/core/benchmark/update_benchmarks.py | 96 ++++++++++++++++++ 6 files changed, 335 insertions(+) create mode 100644 fme/core/benchmark/testdata/csfno_block-tesla_t4.json create mode 100644 fme/core/benchmark/testdata/csfno_block-tesla_t4.png create mode 100644 fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.json create mode 100644 fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.png create mode 100644 fme/core/benchmark/update_benchmarks.py diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 1219a65da..ff9f35123 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -87,3 +87,52 @@ jobs: export LD_LIBRARY_PATH=/usr/local/nvidia/lib64:${LD_LIBRARY_PATH} python3 fme/require_gpu.py make test + gpu-benchmark: + if: github.ref_name != 'main' && !contains(github.event.head_commit.message || '', '[auto-bench]') + # These steps run on our self-hosted k8s GPU runners. See below for setup notes + # https://github.com/ai2cm/long-lived-infrastructure#installing-the-github-actions-runner-controller + runs-on: arc-runner-set + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + persist-credentials: true + - name: Set up git identity + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + - name: Set environment variables + run: | + echo "CURRENT_WEEK=$(date +'%Y-%U')" >> $GITHUB_ENV + - uses: actions/setup-python@v4 + with: + python-version: "3.11" + - uses: actions/cache@v4 + with: + path: ${{ env.pythonLocation }} + key: ${{ env.CURRENT_WEEK }}-${{ env.pythonLocation }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-dev.txt') }}-${{ hashFiles('requirements-healpix.txt') }}-${{ hashFiles('constraints.txt') }} + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y make git build-essential + python -m pip install uv + # can't use --system here because it doesn't work with --no-build-isolation and a healpix dependency + uv venv --python 3.11 + uv pip install -c constraints.txt -e .[dev] + uv pip install --no-build-isolation -c constraints.txt -e .[dev,healpix,graphcast] + - name: Run benchmarks + run: | + source .venv/bin/activate + export PATH=/usr/local/nvidia/bin:${PATH} + export LD_LIBRARY_PATH=/usr/local/nvidia/lib64:${LD_LIBRARY_PATH} + python3 fme/core/benchmark/update_benchmarks.py + - name: Commit and push if changed + run: | + if ! git diff --quiet; then + git add -A + git commit -m "chore: auto-update generated files [auto-bench]" + git push + exit 1 # fail the job + else + echo "No changes" + fi diff --git a/fme/core/benchmark/testdata/csfno_block-tesla_t4.json b/fme/core/benchmark/testdata/csfno_block-tesla_t4.json new file mode 100644 index 000000000..0bdeccbb1 --- /dev/null +++ b/fme/core/benchmark/testdata/csfno_block-tesla_t4.json @@ -0,0 +1,95 @@ +{ + "memory": { + "max_alloc": 4477058048, + "max_reserved": 5144313856 + }, + "timer": { + "total_runs": 10, + "avg_time": 329.6283843994141, + "children": { + "norm0": { + "total_runs": 10, + "avg_time": 38.795692443847656, + "children": { + "compute_scaling_and_bias": { + "total_runs": 10, + "avg_time": 22.47518081665039, + "children": {} + }, + "normalize": { + "total_runs": 10, + "avg_time": 6.473750400543213, + "children": {} + }, + "apply_scaling_and_bias": { + "total_runs": 10, + "avg_time": 6.480278491973877, + "children": {} + } + } + }, + "filter": { + "total_runs": 10, + "avg_time": 164.74835357666015, + "children": { + "forward_transform": { + "total_runs": 10, + "avg_time": 53.14153861999512, + "children": {} + }, + "dhconv": { + "total_runs": 10, + "avg_time": 60.37122497558594, + "children": {} + }, + "inverse_transform": { + "total_runs": 10, + "avg_time": 49.02562828063965, + "children": {} + }, + "add_bias": { + "total_runs": 10, + "avg_time": 2.197251224517822, + "children": {} + } + } + }, + "inner_skip": { + "total_runs": 10, + "avg_time": 17.21643199920654, + "children": {} + }, + "activation": { + "total_runs": 10, + "avg_time": 2.249343991279602, + "children": {} + }, + "norm1": { + "total_runs": 10, + "avg_time": 38.372351837158206, + "children": { + "compute_scaling_and_bias": { + "total_runs": 10, + "avg_time": 22.017212677001954, + "children": {} + }, + "normalize": { + "total_runs": 10, + "avg_time": 6.464515304565429, + "children": {} + }, + "apply_scaling_and_bias": { + "total_runs": 10, + "avg_time": 6.521219205856323, + "children": {} + } + } + }, + "mlp": { + "total_runs": 10, + "avg_time": 68.21884689331054, + "children": {} + } + } + } +} \ No newline at end of file diff --git a/fme/core/benchmark/testdata/csfno_block-tesla_t4.png b/fme/core/benchmark/testdata/csfno_block-tesla_t4.png new file mode 100644 index 0000000000000000000000000000000000000000..d58623a5f67f78c6b7d871496dfe27786f0a2595 GIT binary patch literal 103399 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 literal 0 HcmV?d00001 diff --git a/fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.json b/fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.json new file mode 100644 index 000000000..db841c4ab --- /dev/null +++ b/fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.json @@ -0,0 +1,95 @@ +{ + "memory": { + "max_alloc": 4194597888, + "max_reserved": 5144313856 + }, + "timer": { + "total_runs": 10, + "avg_time": 287.77666931152345, + "children": { + "norm0": { + "total_runs": 10, + "avg_time": 39.073923110961914, + "children": { + "compute_scaling_and_bias": { + "total_runs": 10, + "avg_time": 22.76942081451416, + "children": {} + }, + "normalize": { + "total_runs": 10, + "avg_time": 6.4725665092468265, + "children": {} + }, + "apply_scaling_and_bias": { + "total_runs": 10, + "avg_time": 6.459983968734742, + "children": {} + } + } + }, + "filter": { + "total_runs": 10, + "avg_time": 119.89053726196289, + "children": { + "forward_transform": { + "total_runs": 10, + "avg_time": 53.881520462036136, + "children": {} + }, + "dhconv": { + "total_runs": 10, + "avg_time": 15.41889934539795, + "children": {} + }, + "inverse_transform": { + "total_runs": 10, + "avg_time": 48.376044845581056, + "children": {} + }, + "add_bias": { + "total_runs": 10, + "avg_time": 2.202217626571655, + "children": {} + } + } + }, + "inner_skip": { + "total_runs": 10, + "avg_time": 17.04536361694336, + "children": {} + }, + "activation": { + "total_runs": 10, + "avg_time": 2.248646378517151, + "children": {} + }, + "norm1": { + "total_runs": 10, + "avg_time": 38.278435134887694, + "children": { + "compute_scaling_and_bias": { + "total_runs": 10, + "avg_time": 21.94731197357178, + "children": {} + }, + "normalize": { + "total_runs": 10, + "avg_time": 6.460576009750366, + "children": {} + }, + "apply_scaling_and_bias": { + "total_runs": 10, + "avg_time": 6.501280021667481, + "children": {} + } + } + }, + "mlp": { + "total_runs": 10, + "avg_time": 71.21715545654297, + "children": {} + } + } + } +} \ No newline at end of file diff --git a/fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.png b/fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.png new file mode 100644 index 0000000000000000000000000000000000000000..be2bcfb4a0047fd77b625fa8ec1eb8627764d087 GIT binary patch literal 106817 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#9>Uz$IzomUHS0~kO3cqZYix$@tQb#zO8 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%0AV6k?Dc3V;k$P#fZ+6pI-9ya^G znSFor?v?4BDmyt+j#i8G>ebioN2#@{7Zvik3+GNAPuwvUWD<-EFu0IynT%c8`_pyk z)T{0MRba;;-6x+2uXbYfR>qh9Z zzw&+xSc75b5l|Vt@y_0bO5Wq&+Opdg%{w;le9}W&6$mVT=oqj{blPcz19S^u-fS3w z+k~Ddr!=6=M{es0`6wp24A3X?7R$}OybouDP_&@LeDp>+V4urV!U+$P`h*B4d|kaG zIn9nHHd%d;Y#j2t4fdPJK!3tu3fi^GzP0l+XkLd536|^AxVv$zGHtm7g_1V+n1L0_ zwQfA0pxa|GgHzKk;FhvGlQ1R(*1JVzSuiyd(v2kkMaD$8ay7mnCt|VteSPQdWe;y| z2j)TZxeRKQX>iA%B{W7u@Q;^>f5S6dZWiOngXU@V-gR0~a;U`XSOuv&-a+zcCi_XO z?Cq3yWXX?e)7YtI`Po}U;P2fIec+0QH5#pv^;nUKkP_!woY;1mxSQuwO^x1L@mun&7I(~jd>@7*V-hoGhbucLFcQ_5 zX2RZ=qLOHoKd6(j8+!fGI3f9tbJV5xI@x3AJL?~(LXeT)xU8B4R~K%{=+3DumlZC@ zy0!LCw)@UnlWz{%bT&_M!d8pdMW;y5c?YV9AjQjDuew|ww8CkB&;J}poNJ;R3;n3< zBcwt89EI-H=hm!J(W%Ps$pXXuo!|8)ttL;j9M%>+W^1uF;iqmOXp;(mwnS^s6J@Am zpq)Y^^$Xr8b&0ceesrjzoW`Hfy7W7@i`@n<#ID`e!l&8wbJ@?rx4^%926JtL7O{ja zsjGW=TLk?xx!NZt(Y>G9uRu`QK|-`8`zHE62wRdY;%XyHt+;t_TNs!6k`dT*3n}Cu zU)~Eal3c$>t@*eNOD=9~u4BMhRvY>1`h$Kg{hU~tSuf5nDB0$t0lt04$R?p#{4K3g zZ}|X`IiRMVbwirDY>)?IqSWGGXoZPvn-dXL4apQNAqO7D9Un90uy1&<0)NK`@M>V? zJ&7fJ=^xMwSs<_8u4s8l=1Q~Ma%$EjpBn$1ZR!lWS0vk`UFz+ZmKu(R^r8{mvMAue z@DiPSb2Fg4;H^#6SN*jv7N%9%lPOfnB%yfXNxSfv#c&a)eD@TH4K+qq~UU+WF9 zhGn7`M&~&yy?pNCZyOa;01v)4lbamh)3}ROl!H``_VqZ)Ea~7klx*6^0vB1c-ue90 zHY}CnycZt-eghsM^X5sORY+syul7a zu8|L;V_Q^H&(63~QN_i>9^Kb;dUM|<2)X#?$IW1=ih{STWIMAPlI4BdDShjch=`fV z_odq={tpdenpLA((&UR(fTdX`m_J+phke;je}yb`qu)4U&KJPdWVFOZ7Nd{2Ir1Jm zY{ey!!vHUzTXdAXM;Hf1tg1>Mlq*OwkvjOk1gM8#E`K%~oyk8>=&E0prpfeX`CSAF z#6yEr4%7E4mjZLzdA+m5D=T$DDy_6ztnNI<3~k`yU=!-KTI^Fg7t(j(3hyrmE7LN$ zOD=cN4=*HUa=eaWjrD;Mr{lkbf&dOJ%gp<>Q7jcxvqHfv+vds0A8(gF^@ulv;uEKt zJyq6E6SqoBI#YN3DsPBB&Ge-{x?bT-FQX z)m96`4T`)YiouJI66wf zK7cRGQKxO{FY|L&*ii|+xl-NZ+m!AD#xCtO_}BRLp& zOA`xON$x>D1FG2r0zuCiUi&7=%xrvH5l?gs@#(v~dp5KdSm&Z%)I%?Y^>;4(A9=mM ztNw=2=NDKkgFSnOUxTpdm&2m+L%FsEM0^eRnn}E%(Mh!C62aiKfSHOfmiC8u)NGpK|1q5Uy=nf;Q6wPElATY$H8(NK}g)UkjcN6 z&VYsj(mw&4f5{}=zU)3XjPA0+>Uc_-57*% z{)^fkbla|@cJ6dV1z(3(Sa)~YOie*{6yY%E25DJ!N&Icuv3cWx9tI|njm>E#e9`;2 zM79^QCTI5JEGZNEw=NG~|5ICw+XqbqMEMrDh|~RrpgLgkgXX*pUui%uACr#MvZc;*5RTlb56oeT1|8l}H=rKU0ksZqV&q2Gy%6oqQ-) zpaNJ??qb)aYHQQiw>Y?fRt<0?;2Os18u$r~WWfCjn66m&A01f(TEvgXl_XF5;XCDZ zS7E>%&jmPCTX^_vcKnLR%&zH)N+gxE8>KA)RBn;q_$R}_;?X7OhgEDmbWn`S$Em`52|kmVfs|ZjPmDc znHi2(|<3`UNYY_ z122f5MCm5y#x8UgN%8@0PrD_tg&VjfQm>$d@)F6dFaN9ekZpT;NZ^h(P>x!sFQ#8= zQ&2CSozj_EwVY!O=g8*Pm^=2AlS)))H=Gi?13aK~e$1>Cu?6e=C|EAe_Q)!{wzsI> zol|xWImI~>tFb0zr1ga(lRLQ5qr0khLZbqormy_IE7**k8*6GA$B;9LkI49Du~B18 z((7Me{5&bXuyBj_XIcorb22>pj`5xRtJ8wz2H}_3`?5VWKBAyZkuOLkY*uX#c)6|d zV@u6Yo98rzAMjWBdvD1`_gsI#StPpY4^S5nefxWeX?1ginWi>J;N`vnJSRAQOBc-| zQli8=4)ab7FXmPs+fRwdQeuzy7zCAzRZKveHWpf9Kfv;H=&`uV*um_R`Op_^T{p_$ zItXLUsh>6WB2!{VgBp512*6#Z(`P{4d~@c*6tkTYWBC~1nc;(ZjPbX0Ct_X(F+iiN ziNFAy?No7@9RL*IT%ijc`kYzO(8sfsyRp4h|IFFi2E(bKfFWa8^tABJQlIw->%}6B zwDKQT5htg$+r(QEiGfl415@8$;GcF|V6q%ry+riMU&3i}FdDg&G7@K+F9&4X#f_`|a%VqLlT?+MZZ_O?b zIg#>8pOPhxP<4MlXah7{;yUE&?h!9;hg^($guh$SsMag|S!qkT6fMzSU~8G~S{b;r z9<9P}m#+J(Bf$NG>}%l5=uB%>L+xH-s?yg^q4-e)uNU)?y~15~(b1Wc+j3h+sVt4( zP$Ka`NMbgA=Uok{>f8y|61LVN!kxunTU-82bwVZal) zs2&8L>K;O{QK@QAldbkUP5gPC=%Za8+Vahp@UG1IA+S7}Y*tb?mUwT4^=r5aXb0g^ zT^Y9fCm}tcj{h$`v*;Tp$l&HaqQ!{uGdmFZd+{)g`Eg${D4adT$)d><@* z(FRN|+H3@T!aBs74zPx9I-~;jhn5LIi{FDFE3V>SH(uWdWNM zLnAVj5C*;K`9+%M0P=SUD+xs`erkED`Yr_?-NB{qdIqM77X8i8sAJo3c4N85(*Kjp zC5XO9y46AE%KuIU1q702KgP_JB11{y|G(Nm^I%uOL;fGj-8p1M|0O8(Ad9K^Le0$>H=A2 z{N3!}|Ay(#fL>k-(tk!tP(otaTBBdz_(~4WaPknccK11GLUz}a9W;eF?aX-c`+^IP zq@?8UjG;J?R21>MN7zY)!{qh-WmRUOv-O>L{VTKl_^|Xcb$)^~(e0imKT>fe;b5kd zyL%@;{D4T`ynECOimR&|k0MqqIdYsVCq~`l2juemy8mxF`_+G2yFU-lJE$9R^553( z*uQ0b9r@SV9s9S2xUc?g?f(1mV3q%Salj({`I~a?8<8^JmOYogVIUl*7N@XZQsm^x zf3e;FNIXwyek3$DHtJQl<#u*;X{oCxlrNSk5N0tnkM5vZt#|na24d?2u9y_}lXN+#;uus0oYRFNyx7p8uT`^h2^OoOuWUzClqtJC% zH{iTJGodUWx%oJUJZ6Zo4M}sYGK|MGPtKON4Z>F^g}8aR)M`0e1UI7;oL7Wgn?}xv z!Cdz(Ry&8SEcRC75HjcfYif&;?{5W^x`=2F90FM>ub@z9+;G;LOd{@apQEx1xo1xaq~zne8%q0py}3$o;mPNl-R1x(#J-lk%vODD zV`pQbYjb66!lASqr22vNQ{ldKE7RHQ*|Q|RvgzxvP8BF=Jm~x%RL;w5-E^UO)~{K2 zr^>gTT=Jy8gl0|+l3}!wg4(*U+(G2bsmiVS*W7%+x`O$U*(y`>?Wy^}1e|v2O>SYs zt? z^Li27#{ZI}z+ag(I{H+|cJT4qR2%N|9pj6vtUf(fzI1GSU4n%U6Y|KAlT>N1N56YX zZV#Mb5_QOYE?j=5R<&PQ(g~MH4ue?h7C(k5Oirh3SE&+xYE5!=KrU~0VcVYuu2W;6 z-beM`&EoO|<+-vZdCXqsU>SL7Db28!0|hbrE3N*q%WE6YxYeUCk{yxVMFB9*Wt)An z-mL|LYlD(+)!tsOIZAhvgJUu+d!{}9HH3?ueF6ffrV?dfDJN(&*pM<qmdh9NJIh7ms&?ylp5w@`YV%axHwF=QUxvEf4fhv9 zdQIU;wH1yJRNSoc4%&`LOS=hES5xbNr32k4QXBaGJ$lL0K=UIa z)j10uDej!JcmE|s_ZEZmjF>7aq{2cedUBrzPEz}vn#bFKHZOAoR)WyhR_Hb5M~{B& zKl4GYCAqxUvXIr~1IBc%a>H#Fd!AE(qm_6JsWdt(f`Uv;nc^%ChWBJRyrxPmv5Cs0 zAu!R_`|I;w0hoHeX^XPF((mz8&h7<3a1VXYe6om$5HM*{3*hJH$4M+z+^D@R=(V{V ztj|m}9HRC)Jkif@Rj+O887RDvU_3_BI{*6tHK)eHYxe4|*oHuqB88Rin*I`^_%8#$ow=vYTzSeOcKx(@o(iu0!71fC4K}!NFF{;h#UJ zLCITfWn+O7yIM?C!xzudU&vA57)T~^NM*mhTdnoz*@q^1{|OiEzfgJw3z_BQdv|KI z_WPkRU#UL6aRTqsZ%tXq0{b!9ES=m3pv@a#BYr_a+Ci+6-T7uJL%~E)`f1QTd?@pc zX%+!*W^1*RA|!B&LC9hd{!kW?;h$5g(fYAnI()xZwVmQFYY!WRyExBwbE!6i%;axF zL%Z958xL-I)SYWkG>9@>&sP_FSiYC6`;ii&$*Qn+A#A3kU*Dt@@dP__yxh}e!F*R}#b zCw_P31rTU(6FBw3DpKhK1CPO>lH44AUAERLfk}{|LEfU>e=AiD*Eew2uP=8^00C7J z4JC;Kj(a-$qzs;+;fL7nxOnm6Unn4~rh+C8zC|TE0fqxcn+|C-UF&B(s98fr6{Wt5 ziVI@AE8Aaei_0@Fr1M3DIKhy;^0B-U5Uzu>NW;%Z+0vqC+3ZRq{zGD27Bn2qM#S$v?? z{v=*#d;%xs1go2LFsBNZhQA_iWvqdRkFS-j`A7{T7f1Gl{`I7mW{4GH_UwWJK3)vEr!rt}3POn$j@B@mb<)k9_1x=M8R|qLJoQk5mh(bF zfX&&)!57NXw05#BF;(ao!GytUd90^|VV%8&_Y766(dl=NmDnfNe_%{Rq0R%Y`|;zSh1UJ>J9qBn>D=18`3F_pP)s(R z|KFW8YQ{$&E49okr!E!Z=F*)X!?#&0SJ%m05{@|!9@LHtRrbYJ$w9pdFR@vVeJj^Aw_=X0XZ0rbO7s<7gCUV?bCztXUMqXmge_10%_%-6?Epwesqa2I=bh&^AA!?wGoHk^>b)B7hqEmg%A~)(< zyvJ@`5T>-@g>*PO?DQ#G-11s>J6UoiV{r57r$Lf142LIO5@Wtr#d)xK%7T$l1`A9^ zC?q{8>5;CkE=5mqnu>PKFs$@AO+zCwU+8OeQ%tOv&E!apg~g<6=z`t(^ZFT%K`+5d z12V|nvnRjdR>8V1GBOupAXWEY@l|dFar5$ZhO<>=3N=qrm+hC)uwz4E;U%5eqTC@fs{z9ejDd#w}YQYoCSSzvxGU;e=h&|GKapxsuw{!G!z=6w( zG7<6D68Sa44PR^K0Ifgt{$8FtbS_e5Fa$zia&x)be6USiV4K*ymR~}{{-9$1K1Z+w zY(xR&ah5r`#Dg|yyYEWd+~ctopy?SVBX=nFF51?6I&I28aK|$XQJ9t|RV>FZ<zrXMvE$ku#ySj0vOPe=9-q&pY5EgKGstmiy|V*;(*< zDk`#mxmV0a>e44jw4}>}7wGh75r#u^tE&Q`Qz0xa75xT2c?ua%*XwXxRX(q)C z6&26e$u#72Pjs}wc8(fQgB#C^7RyP#70-IfcT^}XElm|j>bPd`dCecZ`b8ml8#*V( z`|l0bD9@x^Cy#Izu(wvYuX*LXJIkUswqk5Q{doURK%WX!Hh%*3+O%Wzy;ggB+@&1N z0%fQMt%UZk7hN5vhMbCu!ZyvM(O!pN3hX^aJ3sa7i$?0$;YV?u;G=i6SK$Bl5sJNi z-?{=fy$Eivt>QrL^bbK`u6XD0Sq$1$6E{9NIa`P`42DQCZ_p6si+eRWf z{&m-DZx`6$#ev2=la>urR)+T%Sp!A#9&4L@R%}>UN{UjXJPNd74*mSu?eW_2*XrSN zP|gLg0N^2_!vm~@i?apPWoNqM5)vMO;tF8Jz#mQ&JnvO^DVJ&J$CcCz4^I`%zQ z27KYb`Vg|{gfRNXOL=cceE@jD{&kX@ll^P;O8pg+%d(-yDHgN*$gO6zHlv7?TMYg{ z!-~0JuwP3S+RP5qzvI`!m|(x)le>JRdKGD-fNRBR`&)=?8o%l z4##K5A;I;MwB%lCh`e=ZFw}6(B@qs^H1J)ypo4mDU^D-}gipV28GnLj>0!2*YHwdW ze?DP)+MJ?M0aX#FrEQR0Qc@BOY~6$FOS* zm3u31SUu-+gS99=h2Pg7BS6CVUa|QI$ucO1!(cE0C5@GpmD$0{@>yICKMd52?gZ2t z8Xe7Bd%L^R)75#VQ|9>b<9gLTm0-KI;P8~{-3k7_V%u0lZ-N#w@Ow+9rOWl6-JP?@o_Id{}$3j1Tyb9ZHL+*_Qbskc|G7VsD z7dVwe`WLXqL6RvRgjp7QFVZ%F&|@5w4vrA`+d4~7P!KNKb&v}HPEWqQ3f2`kTuC3w z;ty81qml+IJ=q9C;7y;BEWhmze|rte1Mra&4e99RfKCmKvm zOti#UuUz4QIh5o7%Z;RO!lD$IW7aA~CDw4F@Ac~18oO3e%i*wxoxm3Q{P_DE*g5hZ zvD!QGCu{5KM6;0n=p%3v!Rl*@6}v3x!B(xM4jEg`Obw7_H-he6FUMyCRh^baTr)^& zI}MwI;O`RjHdgHF-X_cue%=T&@A+!P&BgTzZ-c9)gFZIN&Z*wh^EEP`Zjax)$#OWM zY6_XQMoY|*h(kCf5qwf!owZa9PjlL7JuTLy{?R`0I* z+mwt@3q9{q#XWWm@Yx(W;eL-58FIMA((OQxsWxe5;6+qDCgNRV&!0aJP6UvA>(ykE z3Wd3Hd|eV7PvSHv;FuTV{ZJlmAbaFAA;`L~yA>F6(9xG;@6oYwLc{Wuy? zb4&)PtpvEp)>Nz&Kto@G(mMxN^=b1b)f7m5wULu@OQG`|90pK6RMPUYoq>GZT}UwKga&HP$Bs>>zBLH>tSyIg_ME0f*w}IDh^s9U~*7J-&T3AB^+G zvceMtr4WTi>MVePI_7)xCsy1bB!+If%eSR3a45EiY8$2lCbE^duZ@DSz48O(0r*i` zW~O4N?KN+pkq8=nKW5oWNCcfQ9h$@`gf$YzB0+5#EKAL9j}CY#Lh} z-lKd9kfAMDB&E-{@86L9@X_e9oVS6xI*LOjCNtd7V+I00ToCDD@Hiy!F9dnaS9$NO zuQagDB?d`#`qEy3y#GhA+4TW%83{>FPL2?F&Y(P{H{Yyzjv${g?}`ZLTsG zUt{l@1yXJS)6Ymt`>WG7vXcV>`MuFVwjR;FemG2@5n_!G5V{ff-1DTi#xH=!Q`Qz( zZ=lN5m=o~ZSPj>_yk~H@u%gDmwrgu`#hS%>r!)q0T1_;CqI_s(jGsOY2@mH482hL{ z|7;Ua&bl1z@EylOgBg0XH8rQpm#VtP8-od8Bhd*7-!FAaFrSS^?roKA^jSH7JAUb= zpy2wm(8Gz;aE-hqAP0pU-%twR6&^Nr%#_ez-e)=r4@km>aEP)RU9F=$7 znYwqQ0VYOSP(MFE<@LP7M@MxkyFGzAO{*$J2*MZ{8MnuSRRm3cT?X(Z;3q9HlKLWe zr(h-_%On8d%>k_-q+v{~F~n?R0F$o5e!kUz&t)R#zP)xnO$HC z&Oq@veqd{Yu_%jE*isb5ztHihH??uv=UKn2( z{W=W{h9mnX)=B&2TZ&)vdY=QXWO86#317)|vUW35Rs+U)w*~EQBSX3!;Gw^53CcX> z9z8+&0hwTUx1CaIb@-~k8snK8o1ZzzwZI~|+Ou38Z6ynCk>|hJ^}@_-A4zBax|#b) z{_nHkfob=3-)i3#Ha+$mVrRBfPW3(Q+%B2KA=q~)QT}s?!hQgdogPiDz7zN&Sp6EV zS-RrE%phn)rd3Y4A=%v)wdD5BC9BXA$5*+wxKp;cedUPGHL56&2lMyj46p3_rc;G# zZ})VcskxJ{cV=km-JZcy=1sg&{<7;Cs^K^L0o`_bca=0u-jZ?KQqib)sFTN=iZxLW6 z>ER;>>$E0s=bZ0%!sciUVz%E_-xP7oVQ&3XXs+GhM#E6LDNC7Fsm&gaZT6jOti~h7 z3f7%zZQU%P1{g5-N+Vn0hLeWTjtgXqZXs8ex^m$0y7;@|F2(r*4mm$!&mZ3UnL9l% z*5NO=kj|nU?OAMLU#?4frb~m-)J=Y#4hcF$YB#TyNnx)^VgCd-S7%_MLTH}N7ryeT zrP;e4j|=B2Sc9sNL^0lojZaITZ$K0o&`P=%5+PqAGHLxyr*kyIv`YDmal%R-qjXI} zv7lhTSX7>#HD%p;JzcFPKIAxK9`a9TeoM5!(b_7yq26klgC9IN1(3+Lf?%mI$)Ahk;qdqYx?etv2(p{FgZ-#Iz{+?*e6Z?d0nrG_0?He`n>0PvOyqD)z>QGG-%kqs;>pjO-^d!oDRnE zbw!jyHB0NY)HBIa-r=jnR37fCc)p#kE=!!%-@xGBSnSEPH6){5Yz-61mCGMTuZU=j z!C5RbxB5lM**{A>$`*R*FsqqTfMZ+qW9R%Yv8loJ{8Fm6lUQQ}A2KMIa8CT}@v!W7 zj4R6goTHVWiec)>i4amkbtgFT*9kp$=poWlsowQCD9V0U86ax;Qr-_y-NxfGWt*+l zH}8qVQ5Vm%rss1GWEq7IW#lEis%;zN#$>fAs!#oq_^eRNCQb*;C>uGe)XS_K3Tjhz z;UQ)G0Zl&6W%j6`G?ngZVtba$@W5}y?dmIQ27my4OjcjHjpxXB`B zQ3;KH+_hG7VeLxzFSssDjX;baNG8xA(*+o)R9z3Ep@u)?TVo!CUYt}=&#J_}L%2si zKRabKH6!5mfl1I>Yr*Z2Q&fcWG#^Y}rB{7oAVYVkY2AaKfj%)mhg6-I?Y>YE%Z+0e z)C2xJHYm4fd>%@FscF(~HuIZt;C2iZmDYiO^u=A}z9IrDX?puq2Cl?C!1%%U z8<-@esoK`A0&kpNn@pX^N665LqbC;nLLe~9e&e`#xlQTetFAJoof<{JnYVsfb*@BM zl3E_6n4|4kWSdz!Ib_Z4nf9|J!m3E(p_liHc1sNKyuEG^C$Q;ek?27G%YVJw-Y^it zwJn`y7&+}hOXoSr$YeMt=8xfq0S2QLcxiGm98xD}?)5{Qj+^&aIB)`Ga#d|aB+Ln| zR`NA9XWRc$!_2#AOSpc;w6qdz=6izveoM9)iS^~K`5a=r>|n|dG_>^w^VkshY|i}QOlo2Vd_3ElSU2n%p<$G zfB&7uneO0-OQdIFQpogwa$W(or()*mZ*&j!6Sx;%U5X(ohg=3|lQ354qvm#R#7 z|0#nDRIP&lkV0@zkw1hBY89JDT*$Up)P;T8cs^wJ9cMF`TMn_%@4T)RQXV+V6p4?Q z<>e8Hz*l*|vc`%ydBY%#4E_-XGfrM_vBOWABQpywCfgXKQvPFYpgjR%A$tC`r2VW% z>6y;)!XgO0`a*$UBqk)aN}7~6`zl*YH5vT1*pItMY^_)UBcM1Q^tZtB@5;{1SMmdu#T?>+*2 z{TfV9XzhwOvGp!D-%n7`{23`zWvDv`u`74&oEoRsf=584)pSWDJIt}#3xTNGy|gft z-{o4Bne>;{N!!hVM|-tiN_!v)vgu;V420ilz#|Q^QP*LiS&rEr)9ykxn2|R)FIAk;)ZC71EPD4v z;#Fvj(gVkKYP1(s}w7M)aTktDTcBV8<)_mr@^q>YeG7tC8WNMmR%yE`O& z&&vT@r02Y10E*;%r70M1Xe)Fiou;2KX?|Lmem@^;*;f@=Mpqrz=M1<(7s(cxdVEL` z>syx}QfV80kAA{W#XJR^M02px^s(*pN!?zmZkm~WM8=E&e=`{HyU*pMZBlbOD^ZDR zTu!lwc*!^V?0*8J+ai3@sqaZhw3|@$vln$i0h$k-%;TD+X-_wEuTMseONRqP=f%-~ z(?|}(&jEb;|F*LF^?2Fuji!1b4aB`xQ`v-kf7N}@U=hoa3>)2@q{Qh> zjzy;5b|tGJhBA#^@p}W~!8%6C>mga&1b_0)Y&8uK!=P02JgMQ|E*g4-egvDynXhnr*rEU7o3eS55l+4mOymR38|cIuQT8`ZGlVW9AzNqL>>f@8rrdRCTH8XM1~R@@T4>OP`s^-YuC z>G3oEA8})9${rb$yGty|z?0Pi+^Oz|TycbT=1~)9gf%-{N#v;R7)pn|C>2Y5h?eS2mD2u~b;;dR z*4!qTO0bd6MfxFW-tu)gnWg~^n^SHODz=E&o(<)sNXG$5q_&&p^XRF~)lklmo|NGF z!IcswVXMT`+F!ze=M=g-h3G3aN(PEo3WGQCz4*qJ>@^z?>0H{#pIUmEh-x=&$30>o zwsi;QUH>>69PaJO0dPM>N3DI@Q7ST!Dm7)8{q^T%n7aM_Y{2c)Fx5W%`n(iBy`|YH zrvtsUy+xBTSC9m6jc);Ym$c zk#~KCcVMXQlpQMC@=-WKhaWbgmTQS~{Fq%q)&;^|G$rDXVa56jz=Gqkqi#`CU~I?_l@>OweEb`PC))c2R)R%P2fwD1J&XTIpr#rK*ds>tqRMNb6dExF9 zzYwvRSm0PI-?F>uY_R!Gj-&@3I&1!Z-?d`*YGJUVo+w^4l1q$(hW_9b>?#$(=h)Qp zhd`_q^eztjQ4M$3{zFJlB2v!OrV%Otd3TX_@*s`p&Zh|Dci0F6_Oy}H2&j$t{AVOy zRNnoICuVJ4!D)ij#!49A^aJ+`mnUM^KvWUx*=DW`9aR+HKU@$E%&ipM+|Kr}X*zwj zI{nntc3?mAS+R#aB4$du)sOR`o(h09CSdW~TxEtgU?{*)LkK+UYw!5EtmnjGooOqs z+=ACL`pTB>IaI1+d9@W^*L$qj>T)jZDf`+E?UpzB`FA@{yIb}qhhKj>$_~r!e9GRk zr;IlB=7G(&o9O_L`wNZphc>El$i{H_CIf?y5OpJUj~bf)nMgNQw-eU{s&3D+FH z(gjSWfQs!6X-bgStpl;~LfpJNA*;2TV6-q;pa*ogjHIjD$#rk@Bp!Ch=~_{Ufz(>5 z9-vo52WFZ9i)^LX$^sg$X}4Xgn-ml-p1Y9qCTsy?-E$o9{-?T`Sn2T7RH@9h z_crqlQ*#Rn1cj{oKn=x+h>RaUG?4k>-do8`%k%RG8UO=SSp8H-Jb+PzZr(z-@1q!i zu+NrQJ+hMV?Kx^7tNN69h}ly8kJ0>~t_!%7twxk1fhHk-pl#T3{sxdJe~QB1^1UCV zN%`&k{*Fgs6}v(#sDF1bVt#fRWpw!^-;JC5s;_9)M40Au6+ip{FtZD%ICc>)9 zTgAfaQU*js!_XBVcC$FMrgIF8!?RSwQj%?0i=Hao5msv()-~1k;kW~j!~=ZBQbW=>DFDnGi~_v54`AZLV`YKVN}1+da$@p z$~Iz^nEX>P`STC>?Cn*DLMA)I(5*aI>kc{<1V4;vXT8DCx~~XZc&TDXdqHP6n8|rQ ztAnmmZNaNA;&@-xu!IS_?ML)Y6=Au*pPtu8n^bpL-W|UVlub(NsSdMAQOrsI`1A7HI;?hLU?s+5c*{@O zT+N!cYfh`F6A_X(Zf3I7m$^Fnp!ea8i@1vDzB6U2yxRd`_E97Z=g>eKu}stx5t_rE zJ||P0vBO>r%h;A=c3Zp9CxwhC;@>pf+HuLKD3LyD>+`^x8gUcWByX6CM^AEF?dZ`@ zJxddW%E8MYcARR#WKP)?vbmSe7rq%gVRab{*3WkE{v2}quX6Y=xV=kR=GoNQVkrfK zhQZA3tnzNRN_2^Iq|cV3g%v}_?Ymkrehy;a6EB{pPo=hQRbLxS3~5hS3H21eY22K_ zz4R@f$PbG-9bWY7ONK$S8D$Adn+;9}1Zvc}NOoKN67sXcX4gklc}$93<=iDSgkS#}PzgIcL&^-i(DU&lLf9izLWdT=R0=K;fk5hjXy#`+ zS$Sd)#`$=#d*cMXj}?Z;8PjKd8ri(Y#v+Tg6@%eT{rL|Y{gLWRdPjDEe(#dAt%d3a z+ojc7+T2{QT$x&ERrh@8j;DD^lY)OpsdJ$~aW;H4flX+3Fns(>P=>vaicDz=6q%Y= zloM)H*u;9?&?LCC@=BQH1`l1+9A7v@H&eJbDxSNsMH7(4#!}B!e~cmf#W0ArT9uDC z>72=PCGn)9lcj#E1-7*U3;kaextdMQdkosJn=ik2oPO^YoccZ4uk$IRuT1OD&)icB z*WxkRca$_7hrATawOc7aZITCHI)PwXK#^o7nHIiA#ti~`JBp=HzD?A^U8WAA?FiDsz9&Z{Nx?jd>x zoa&h2=H%bFdBZLAJ)3Y3gDuWN7MEP+_;VRIdDLWd-`graC0?_{kRJ;@AF3_x_*!0} z=!xU)$jBMg+#9^e8@(IlOI|6}!|84}`u}h2y?0d8S=T>`%Hs# z^JdMgH99Hhd(JMOz0cnJ12mX48#wZ~c1xPG_VHG$s@}@7G5md%axi6I&~R(0n`d-e zc(f|x`=XP4w{pAR6%Iu0S!vLOHnr&iLxp3c7npF*DKeuwRV1lT)PH+MD{zHfBU*oWn(ilPrkM4bbb=D zT`)bkZOTB~vmz@)_=In8X0ag!%TaZByNVLOL^(!Bi%_Grfb zHC1hx@^eUAuTzs=Ryfht7xqatMu+n;7f!#zN%Z#eg zMmPkc+hzjS%Q3Z9?F_Ax1sbCLjNM&1doSz*5Eqnbp=3`%!{ZS5Nq%4rlvHDIal`t^ zxX~q^j`xF zJ4IQVP7h9pxbN_Dx^VEt<~!Je*em-~JV9f-3e+qXecM$^J0Y&PeIxO2Tf|!+a0H1& z$uHXp{c<%InY7wO%_kF$V8K-u`!ybzHR!&1WdL$Rj?nzn@wscK0VA8+`KlX0r}7FP zH;jNjC{TLk!7phEEYc&a^>{eC0#6jy9V98CJPcei&P!~rN}Jf`>M&{u-d|EQNH;=s zd#_Iz@|q(lq4cO!6W1fH?2~Z|`%M9jCspqrgtcLeaIGjytEmVQGQL4;ytC2MSTjEX zgb{F=HWqeL`}X1HaCr;fk=<*UwAJu59|K(Q{M~65XlJCZ7F7x|!3V%eqIf7O&X=A2 z^|r2nITN}PDXrVIW8Z#Z3mUKa;yJ7Wn%^3V{f94JD`JLMl*4xSa{5jN zAqTYYs2YDZ3NNY^z~q{#SwFoZ-;LzM>?P7F>ZC$2cV+jZ7jR8@Ga*jsrhXzkn?4NI z&z>#nw@e&RPZsH~9y`ZK^37wR zJxB4ekS5Z8)r}B|EtE+vxPpp^&!ZwnY=~uh(Uz=WAa)5{6z|fc7&WT}vQ6+{jz&+@ zbpO6y+37oLiCFine_3?HD6D*-)VxyR`JAF)BT&F)v?JD<&vON{uYK46Td*^ZLF|6@ zl()h%$YGQ}FM@=IVX!;-8dC$EV! zxTDG{GCvpJw^8MI-2HV4TUr#(d3Szgd(j1Lxy8GUa9vW8=0cwB(tqIm1^6CpA!0kXGO^RO}8#~m7rM?dyH)Y4YFomPb*e5jPmj} zq9FiX5}e-wH!gHd&+LRa5AU~ZdzD9~ORnJawsXnWv8A86ad*Jm`IHhaORap@r+j{SZ4_pQZ+hE@|;;4rxMm6SQvkXyO~E+a!F!~$(cpEs{Z!PvW5e4oiH+^#C!EQ#dcHaNO3* z00q;2KQZ`sH?W6B&BUWA4DQlSTEeR<6G}IyEw@o|XP}w}{INKurBPhXw}K0Ky&X9^ zHcGSIir2~UT){0@Kc;Wl7#L-U&lk>eL90~XAyHNCXac>e7yseZvA=bG-^^X8$f-rkQME=1 z;Z;}!$)nZEvC-iZr>dcTSHY|&xNPNhj|bpNbE$$f(K}#CRz^LIDbTilx**ZQK=V@J zSJ9DLbnmIX?wK?jL?^-y-2J&O`1ST3J5n}5r7Uy zy+s*QevasN48b%8lu#=cY?VU+nqP}2yg*YSD*xfEyQ=qO-#(e+Vpl4Bsv@m!pwxQW zzKt}QMeLPbsESQB;gu&D<>nyeivW+#Pmc1<}`T#T!$Rx^Rwg`zwRR~s%k ziPDV8{vI22Qw8|OAmoUVczF?*=gbYLCQff)oVA;>r)Z{=H6TOQw~1LT6=~Tq5V45n z6N%+f3c^~`c+Li3oIgYr8S={b>S~%HnSRDQUfEh8wqkMEA2k&>y^aX3!H=Fd(jQ9Cd>Q^zeWQkRY5!rLs>fcaLl;qjSxA>`6zSz^>_0 zCQP#__IYP&uX*acmYNa(9t3^-j9evtFPtnFlmc+4@WHaL<@8t2h+>OCrh^$Mf6Rt! zKj_p-RJnB~*u&VH5aYz=mTY$#RJQ%T(0WkF?pEdCV)FsU{91JB_D0S`wn+KOksXUd zHYsiW8J}$66Je+*PFLMhpwNuyb_4psO=|ec$Taw=b@OZSVrr7BOv*+JFS_#CE2Xuq zW_ZL+Tnnc0##^hQ(nN^_Z*8&@ZiLfB zBsF)Sw;^8M>fB?xGu&p?Qm|cU(eeO9EIT3<{DR!rb%S%8=bgTUb6B+$lP%lI>VTR5 z(6juw*5y@?NjD=1*Z?VuvB!h?qsn{^H~3sEf(MvYMhlA_pF7v`?kBSpEa1;x7epMq z^x1F*Yrl6%YBz}*umdsV@g;+Rz4;=D9zq7TVHvkc-Imw&Y5uwqU>S4M{AT#yk^g&d z&gHS7(9x;`O?o#MmtVzn!5mjGuV+Db{7aU}i%|>z_qokq$Qqcwe?M5}cm7lDeT11% z!9mws=dyJ9(fpq6m{V$+@}R?<_E!S?GwpY7S0FeUY9v?$Q(~$W4NV5i?|k!x)RwW+ zJ?1O^)S|@~LCJwX2e5%({x8k-$@w+v^YbwPW(cS%kFM>_&G5)x2^Vre+JMNm{*rqC zr_KXbfQj2@-KfxH;B5Iruy<#4Y`_vP{92-4>VbE8fy=eQy0J?#6lkkRQ7B3 zrYjY(4JDF{Jvkp!iBG(Hq6oagmI)$Nv z-8B5AVJ!ZcUFWo}7BvUKXr4-({!8Of!~!!|SImvqm4u=O;prjOUO*JhGr5oiK9@ic zPr%#kU3v2EKMg@nk_Ry%U9#}KNH{RK5p%+f=b2M-`u424bBpyDq>MXg`9l{*z*XSy zI@H$Z!LnWoAThCLxSs>GHcU(=&*vFqDp?aiHh1Y|tE5WOl6LE|4Jvhqi4Ba4Oi~Hc z7rHru+fZ$$W+SLq8PT}zR4QKfSCBnOzcw%0`|T1%9pp6|tz4A?U`7U?K%$H1S+i0+ zB#dBYfhd7Wjm8c4P4vQly(>ZM&61bAIjG>x))94sV>jfU(MmX@4mW><<_&emz zu!Ja*Asz@t_deG1Vr-utY7+AT^Pd@so_Wxf$^84$=sE!GR#TSP*lbcCkSf>LM~^pM~w(5K7VbDl!UoMlj^1RLRpFymL;_b zW;f|eR@-7$Ylf+^sU4{GEb-{;_RCig0H9LXqej!H@q0O<`YcFWd2%*=p670+MCdoXdAa)UWZ) ztz2ol{Zz1XhfkZnWW23MBt#m8Hm;ziWqGg~j`90_l2o_!;M%i`K#A((_btDr*zsab zgs6$fjfqPKKpCvBniM7o@uAlTkj##=Wgtu(9?etey?akab)(Ffez`WMa z0-#KdH?Z7UfYw>_k( zmH~>oE~TVF+j6KGE9*AI80c*^GA))W|Ne_(G8hPY&_eq&hM;CP3)viUA>0-urWT*6 z`%~#QQFEIhFh<9gspcD%ssBjRNF+F-`IwMsaq7K6xZQF_ljybjLZayCk$}t=suelpOmG?zw5hnwo4{zfYlR6a_@7x z?@#d%!+WM-rr{3(URGyot5Pz_-8^o{LlcKO(*^n-F4^aSHXV#*7jd{>>qmd_|Cbo% zKN^t!+d6Cg_^G|u|A1r7d{K9o(I)!3>oWUCMldz&P?-bqCCF|{$&fI6e}YlS?E!kB zQ`Wnn*YSsR&}33=_b2Vr{1Ny#mdsn7Ghj*^_5s2y(r~*?H|Id#-B6wmDS0n6AY1Jo z`sYV7P5}pXFQfv0o)Lefi@GRua6^8xQYFA-r}dKE0X(7Pq3(l}`MY-1pXF|h;4i!S z8)_^)e-)`U-LQK$#<$1)S%1ZeL@wWPiz-6CuUF}SL<`4m)qpc+ zQ!~86CBVQ_v{_5<@8A}0&qF3U@?Dj4hHW2A3K8Yg?E}fD4AN@QU9bwv1RjU&CMQPR z_>RTJ&a8!V$e&GtD>tc6%NWq2QCgbSz;CDf0kSI+i-ssapUiDRGN3u76h=^gG;I)H zyl%=NRk>#u*Q70S+`yVP*Njeszgyt>z-#l$!14;Lz$cQ$V6`CY>N(+7lQQ0j)&6G= zOZ`Ch^TZyQ5i{-ier)f(PgIe|{zVppjk5(}t+(~eytXW$nq9I!UPJ2&+vO@9hXPsy z`rwh?V@mQVpWfuR;+?%(H%Rb2vn1==As2-v_56#Ld4q*i(#s9fxS_=OLp*WYR%0tn z5ckE*7h@k%{t0J?m}fsvi1T zR&&oV7XanIXD?>QUxk8w&r;Iy<}S`?<9VUjzG`KE zs4TmSjGg;O74^Eeyg%my{eADpyQeZqAh7|?M#@ZHIF#1XC9mM`+Jjwf|JR@QVymV~D*1T|DK*OU* zqHpMVa@^#VOS03p;Mz|f>8mjwWCt(#uFo9$n3)L&6trpMNCY!J6Z`YK#Atskh_SOE zn8n~If-cfGW$hc=+Qk_-{V2n&ESI{(?VIvW(u)4LjAnGv{e)yz_hH7o0QqL7#LV|! z1?U!TJt}JSII2GP^b;AMoNzYRb=ZDhtk;$>nCM1>5Oi2R=^WL}!j5Za8fNSV6O`tKCGopIOCtX{2c$Lb zAL6zRd^*ZkIvuH8#7|X5j`e|&HBB?s!wjNJHeTw9j;Vb>lU5uKrMeEwbAS0XVEEIl z&qS!DkGcl_PW1tfD1_o=(6I*AVv@TN)-hlVD=-P2kM|9$k))TM{@FW4^Opj(SUV{1 z^}|M>sbs|R;jnfl=fCY_T=+Eg;s@Z^ya3JVx{d?8v!1$86baK4i7hNJI#B1 zKkphN-^b*C(u}#uBnHzkWth&Ok8{~g;OjSAgm~H>MVdJBY%R)iC9nU*ED|^*FHVfz zPYNQn^&W8;Me+-1v?|!l1NH~%>)tKUe&DC|UMM#|W@OzR{jAiH;t3-KxU$>BZ0xKw z6AHCBW2d30Yn~zS4L@G*8DJNK*nGl=c0cm;OBt6sj%YoPmAUgSWmEuAu9pJ!fTErT z7!n$7pLxw#pR>ohemTT8_NS~>>PKuZK!hvyW@VrM6tcfusCz(nhp*SqKtHCUW?KSF zHUo3h=0(*wV`rM<%hmA(A#|1lX=m3330WQN$&Kunz!gpzSr}JQMk{%BUFGwMwFpRz$UFkO5|4ik}xHjD2~nEL0no80<}!(;ZM?e(iII9%K5x8{Lq}3Uv~Gw(x+2EUgiA3} zmmw}R5?TJF`f1>(j+q*`|D-j&Pl#GnYt1!+b?BIX}6Eyj*b*8Yi@ooT+2yXt0=;ii48LDKtY z{asnF1z(4O)>M6zASodP7{KkmW$LgOP)D~KT9tc?X6&6sFy31BS!5J3K2difIw;Gq zij+VRwy%D(1=(@E; zwWrv{S`Ob43cT0E176|ogBEAlA~BGqG(QY0G=KjK4Q@=YBHiBA4A8?4mDzD!(m#D1 zD>bPgW|frfv2QdZxK~ksdpDReRL({>20`FF}KO(I~P^mLdJR@W%^85 zE#BuC$eXcycDDcSHYk*ZKU%j%r3QVAhqvm+jiVsy_RA*AKatN^AN2+!G$zI8w0|K7 zACyOLKiI*%lGoKI03;KL~PgVNLa3oinH>^V(g3P_ZFQv2SvA6{X0f@iQ$+n=`z4xA1yj=^To7zHb{ zc?;CoIcD(InV#y6HsZk=0sN%KNJSGdR?&?@h~DLI&50r9=p1Arpo>AyPVXB4l$c&p89+{_!G7ZVfct1VN*kP9XAjVaCE#&9s zbW>-1KfcLi5zS(-$v`#4-&@wqlU7=UMXVd*Eg*= zkB`kv-V}o8Ip+?Q?n9tk9;%ETHsD}4sHh6g9*p$*Zo9}OzkMZRMXeSNEHP1&)KqAZ zFXg`vukc9+<_@N_e;+Hlb(LBB=qhA1IF_U)#h+jblviIWzk-W16W*2NFFr_ z9AMvcaX(}Kp_IIfEMY)g-9AC;gl>Z{WfdqmFSe~NXx=dwf{{XI&>>W`sCFHI1-c88 zyx48|W0;>qDdWnheJNr|;9$^mJXABBRXcV;#&@;em=oIj#%**u=jC+f=!4anLnuH> z5Gc^1KMa04YB5GCqEx%A4y|&SQ9;4_kyUu<#jw@WNY9F^74%R#jX zqSm3u1$Sl`e>_z;8^1l6raA>|T1CR>*=X}AJ4OL_r8VzB`dGQhQJWl(*0dprE;$Avb>d81zMzHRnH`U2n(~iL0b@yMJK0+*4IQ0WNurWp}jQ?;nm*S9y zj{-&%Kp5DPSI3_2onb~gn;!k%Mlk?pfRzjq6@&r7S&L-kPBjyh-zXVdv1^CE7vJQ_ zQ~1hLari_$)@jAYV}Y9=X41(3gi!%?aiA=06!}vzGh~3}5|dxrA5&kuXsRt~lw*yh zi&Wk8W*ae!m^XZ3jJ|D2=wVHtY4uVp6&hXjW}_kkpGy_xj$1sgTjj*~O}yz3mkbcR z3IWp8Ul2TRyjQ~KGIM(v;qH+~hfu>E)I1HZTh59zMsqxRUC5E@aY^Ry+FPNPM-wJx zhCD{1T6GKNN~kl6I#a7_=SQP+wq9NAuqmJ}v0LCqH$Do#$UaLQsPp2UN~Ux>=b!vk z$Qu8;U>4tK^bB+Zak<`)teD~i=BcqGGaLAMgihd>2FCP2U>UoXP{=lb74xRDUo^4k zsspff(Z07I?BT+nBdWt+;~fK)T(jOIw>{vK%jgU-M0)vy-Zx_6EQRogQ5tke*;`M* z5Kt@g+{;0yU4OQqkG(n5CDkrBe)qqe(7(>`dKAo#C0kM`9^g6D*qG#w?KbUd9s5~= zDVA-;I>U9PGotpRxdEMf}{SgIZ8Xk~@nuBP1l{9ePe?bAd{rk1GXFCF$v2 zID=lu{3BdtzO1HcGk*TX!q>-DBGT{8#$Cau2CA*fAeg4iD`1xB7{vF8VaiVT z8Z@sjK97B8-Ad>;H>phgKTkI`9%Z9$~%|IcKkoV%eyClf!;L`>wP+ z%Jg*bwX9Pw6n@prj-46Hez9w$AD?tA>rb(~SH4F4XOFV}5X=8nR^->!cLeW3ul1aU zhw}R#SdT7@+M#0dO{%sC2fB5ZKhUu-ReX}jMqs$ewBQ~b)4tZO06`T}z; z#u=NtJZg6_Hs2>9FOu>J<=x~EHHlk&gTxi2HVx*fFrTi5ttRl_sbm+QVBxJA!}2jh)qlqB*5N+(#THFAC?w zVyfiW5g2O|4X_Kk^m~S>ncBn1EX#GzZQL!hY?iPJHQL&nT#lkAi8$5jJ*>xm+jyK+jk- zv7E<8Zyln=_RRYkHpWi*)&7=`yXJkYdGcS08zmsA6ag7E&qtZkhoB%Jk)X7@CO(z5 zzxmmpNms6BN`U+EQDho%G!JHPsF*o571pS^ke-;1lHHGW5dF4oD44PqxPM*WCH#!s zGRg~Wp30S_!3(CdhUv?fi|kYhs2CaY=Lo78@k4{GdQyn1@8q?7PrLCm>Bf(vQr9X} zrY6mJEQSeIE=Pt|Vk@1sRqExwUi#orBhFACZqAj1>pC9gpB9zNT&>CbZ$%%j|W`E z2^l2hT`N^ygGUzX`*S0`Usl$g)7zaXtl1;04O<$5SZl{JM|gvVX$wuH@uie(2Ick(gDr4bNMpzD~mmnv}vIGxy$BU!L_ zjXC0AqCXE^J`lQeI#hV~>J|b_Ftv%_$N@$suTKtyhUHv{eZ)~}O+2z^7cYuDJUaII z{x82ASO2{{^syJ|98X`ap8kmMV^sG8%mZEFwn4X_C(BvIHu7eOydkPG7E-iPcmxNa9aGok)EK}#j@7@bX@CMc`} zlcl6Y4Via*mf>+jKHj;uIBka+`%{L+=ZvjHRS~;VC&MhdDFdRb*;~SG$QZ>Il$h>r6$KO zcuiagFu=UNirDkH^Yxse@i6;dYQ2Yx+F>!BR&Qg@K+i^nY^D)m-PHMYX7VjXOQ9Ro z#iOg91jX5h^n4oaW0`3*xTA{V@%0$X8VBA2ST>k9=-;mte}pGG3YpT=A{qvb;SclG);xxYgC+O4jVrkjTkK1*6j{y$$90qHD4Kf= zKXXm3FQ#_)(WTF^5N?y%9xI2fkUW3w0DMvVBhJt&UHVgo0#KsP4w`s64;j~>Z-h;s z8BGGmup$k$b`Bt(V-$o|Z9)7cwGpNGvCky>J!8IFD=ibE9@q-9m)R#W%ES?dwCnmr z_P4q-f6`yn@@8<002B;qX)XCvxO_}Nc-Hg7u&u3*sJhwYw!~ zgKz=l9KtLP{@*1SKGaRWr%t$F)!2j)8pN&a=MJ5#W|F&A(XvffG5!9oxN$#aGw0Wj zP>Ubzt=#)x0U!7fRbVk42qGntm-dMS9HR>-y#?O$XYI+*XxMlHJ|l6@DQ-dO?|L+?)&*aGfSa*1hzbiZuS6=> zJ6pQQCg}s6U8frGBbjb(y(|r^dl8MXBZt4IUqc|#A@0?^PqV|uR`v>zfj3$TCl{aP>M`ElQ9;`smDD=MJ!-&Go}(qJAJ3&vVcSMI zU2W35mg`--4d7{P>}1xvS+zx<-b`n3NzwP%jBwmqv_{+MVo-u3A2RStx3ByDZL#;} ztZ2y+w%7O7hgWT9b~u9|{x?#2x$dYf&ujKDE}p&o&DELwve!3w)MaCaJpm9x+R4RR zhqepEU${s4Rd{nxb_S1&fQUFt+JXsr7y> zY`?{YnZ5X$kYe-GeBrhl<6Q>$j8EDmZT_UAC`QCCFm-Ezq};MFP1fI01aG8B>%WKw zWkII7JEDV|r2~OoM`e1EA85aJt@ZcSCWnfbkDlvs6PLkCY)I#_ zn$@Wbsni+g{@9Qu`yOmbymbHA8>_R6!_JJy1||0w^_-oSm||Nf11zj!Z|n}OAx$gp zWll0QhnIfcgwC=>wjxGCzFp3yK6LAF>f~tx!g(2i3gwHMP?0obDwiufRopbQnK?Zs z!faHWb^j_I$K8q+orFD}CExXGGcdEP@pAUdaDdL7qkZ`upxBXOjdG(S=bL7UL%b(l zwSDIT7-C*I;NZsvz7$y z49x_66Vs|g9$^Mv4Nk3>94>Szn!k(euF%B_@hc0L8e;_P0)53Ucco*pK`>V-Dy8> z56_TYyVGw~J3gQGg&6ipO;ii`W(3I`X7IRX^(3`X(%!t&2x9lKjcUl3JoPBe-2vfR z@jA@O^ljp&mDZ>;f6xexA%7NDgJ&o#UZ8Vn?$WuE6PA(GTW#y6h;(-K7xGT!6Djvv zR)CWSGxrV*^ZXUK_}t%AtD81k@6QjZDxTO&83^gwJ0bVT!0L03kyV1p=!I-#)D;RA=UR@C$dms{FiJ&iYO;Y)I<8VyF4`t24pRM?hlX4`_6o zhZdh@gHiqmO4vL}k`c;rOfa$Q< z_Whtvj9}tm55BVM1%W8y>o8QPq^YAB@Zft_%z~k?>=QAAvT?amNq31P$xtJ~;lVGL zxQ1B>Q;t}{flE1+FQ#NCky!Go`yZ?B1C+`F(6F1=_m7_MY;Vc!>o=89Lp^B{6-S4D z-gMd(*D&ssmyK7Sl?ltxY%uX)_fU7o3i8W@@s91cD3=sREB31;BG!v4 z_^+HUM-mGu*%`3hB`v5XaZ)_*q;rMIEt+Urunl!aiI39Z*Zf%%dgC<~J^ep80 zzitNRh`A-7_^dTLGoq<@W5?hFa|*n`>gYpa;5*wc+uZ((A7mcDJ*y%h@~L6(>&%g& zYL5)CD1j1%y2K+b#z9%Fx~(?T)3i}-!;snqjTcTR&Gez&tyjdzCoIwSaIdEBLqS*dJLIaC)KlhsMj!9}U9#;i<`Oc}x= zOf@#%&??2cC>GZ%OHf$g*2XFIwWG6Rl9ZHJ%14RTUrg3SdY}PGJN8|`7{IoA@{BN) z=Oguc=*fy~R9rD^TiqLNwPn{KN|qs1Y#T=i zi)HO%UPlUwqgtyKXeTT-dZ%bU(<=Td>^ChuWjX6iNn1O23F}lFh~@3$x04G2XGN#p z1oPVB3~H6AMzl_;G^6U+A+;0Q?}ZeSXy=yp9-d)#hU75hu&UwiYx!oizt)1S)k#{3 z6&MGQaAVOgfkE-&R4vio^!M~ko9^Z=CW_BGF%rDBHcynBx((62Ro7a~$@=tba^ z>%z)mxfUw04I13^Xuq8fd^@wYq0nEUW-L^l5u?NEF(nA#Ln(tdjiLImKM6x`@yWl0f%@(_G^- zzBYc2_1|{Q`c*Ut1`N>tCsFE?|7Gk%G!3;lf%@9Wi+MFz=z1hKEK&b4GEK|Em3*1z z^Y-aq{_dWjP=zgU_hruSij(&Kgde97)BXLG8+ncIG+4G97`?$P)-gye%ddGoG&Irw z3*YLE-;S0O4Nt)>2Rok;PA~4u=6`+`~rb}e5 z^=U=M$#=^x(B&A1C7(^7o=ZzM0v+a2J?D53Q&-WpJNL|D5zklP)v(2nvWr`NG&JkK z=PVq?T<0;eIGW$IWxF8#{SQtBBW{bmzfLILY+|{{2X%l)&9Ce+z;>FDSizx`p*r7A zOGkEcZy%UcPd*5Q8y6sYKRp2+UI^$fAM(8%e*Vss;C?x=N)LZ%CzJHPU1W_Z=RCF1(m6AU<>~l@k+l^{A78iHuGoiH zy1oL~^-&1`9Kw;knYnk38TAnt`i_6L|IJc-7y}UaAZ0tlimxSne7))1xs;UxzB&ta zEz|l;fv^c1tH)Yqxzuz0UI-W;b5m~ca(R7TWi)q_w7uhXMA{78a_tjz9Zvzk2(Kx4 zl>5&q2yqZbNbWfeEAV(pEY5-f1VAU_0|%$k^_k-vu#+i`YVBZVdeBp0_(h!8dPC3^A$W$t>S;>n?NM!jI|o*yJO@N|vZ;SRC$zlm zA{`nzWy8`;H|1D9iI;kKnrGzby)q z^IH*4y}QFzwlu#@&1}X$*PaT$=nM&JExUKs9+Nk~cE`)8XL<=X-ax>5j4Dt!MO*Pv z;Ft0`CNRtj)Wh3kqQ{+;QRnMb5uLAfZA4O+u*Wh&NZ{|x+zfb*tUsJoiyKZKUU7#P z?9o%&M(WGXHYg?B;vHkz(2&bNY~F$xyLs;~c~7}&okeK54#<2>Nz&%lyiRuRv0V47f>%Vqlw1`J!b zj>F^KW@Bx+RT*7t7iOa{P!&ww_p_&Wd>%JPohfSn%m3>cDRU6u*$nR8Y18b;u*-C? z2z9A;NPMcOuJLtDX!6awgQJ9C+pyB;z7mu1vrx38-)W4bZLxF@^3*n#yl?3Ncd zlrAU;(f$5*5Sw(GK9T}zDrR?hb$;l*pAR2IM1Cs=jBe9%*C-BEz3lsuZ|m<}1A3m( zyu85~mxuLp8;LR*8_i_+B&MG(lsOaN1eRNitnnVTWVBEJ@LD%qgv9)0n({W%>kD7} zYBTBXEGp6J^UAs@1IOR4JtkDCp<1*p0k?-TgpBoVoCsmQQZ=YMcXx=C2%*Z|)333WSN2M-(TMH-?w|E(xb;qLa9!pAxz50ZOIDNI ze-uj^oZA8Rfw&^P9emkqdi4^^y=S^fbciZ20=R0$gW|C<%9z;T{LKX?t)scFcR=H} zYy$nse$`Gc;bE{G{b!U{z%%ArU?@PSdDOYYiR#X~lJJ!#DL7eI5cYN z1`DHn3RMCcvNONsU%YsZ7fj?;f0oTtl&t|Q2GCuNZp=i)t)sjPtE;SCBfbY}_s`u9 zVz*CB%p z?T_-BDLnSM=|9Y^B-ocU)oSHJcVk@D^F%3UIEap@)>=$Px3!>)QFQAmh!&o^T6bGc zI1?GGA8#JDSaA*9bhYu93K7m5c*V#Xp0yI8QWtky1%bS zhV2%cV2$6NIu$)1+`i}IQ+1Nw%EyUcP*5H4op~E*v@ybkXX6@V<`$@h5bf7ys-Q}t zbW00&{`EO&UZKU!$Hw@_j8-OPvV{8E4_Cbn1GuSW#lK$v78m|!Nx^>!M*h#+{~f^o zpPl*tXJ@vm1jfq8R^1K=!9hWLIj9lG%(D9l^PN>cSnc@fPOnX6)Bezt@fd|t?AdK+ zYGvee4W0LbuFj8)qdJg)3Cgs1Tdmvn_LiQ16l zalg{dX_VOEwbHY+v>kxtW)Bcr+&cy6(mar z@Ehy`Qo}!ggK-*~TgU#hR_EWooiD)TvbW)H5(%0^Hlbf&{=fM7|Cc{Uef#JYz~}}3 zVUXTytfUhG}$pCHZkA7e?LfEiW7I- zE0Y4B*r3^Nsk8uGYaWvy6rDQcFL4VC!@qp_0!XHa-@bM87Y`-3$?Rtll>hV#M^zF) zi2GUP{DlkqWz;AA+)ZWR0rX%6o}*I^mTd{r1NjzVRATjEr!LjK!O^1|fwdi{;D3B> zqLLl?olQ+kvjn_mdPUZ{zZR@uVv+>01Uy7#(=kXVDp3$%p)n#L#Kpxu<}n$t$B#d` zuTM8Exgd`YcD)U51HxJAql*z=G00@vPt;Qhu>e_R_sip_?z*jvRS8go@LM5(ly0s= zk)sDtX7R_i^rkN@=C}2Rh>m0eqHy(cS90$^Cr(qDPpxWR(|W`BY2pliek-6_8zOOn zub@faS}rHE=SvF+sHsbDMwow#1_RkE+-?Jh>vZl%D}*-Q;0L7_;QImOsak+IOCgjM zV|+M|IBGBo(>69Hym|8%U;qO2KjmGkjt&k7v0hYewqyGjFI`%Ad5Zn9i%Zedr%x}k zvSxuS$=m>v&;zLQJiJ1{&)-wG9~~+MtUP6T;5EdV{!5vewift)V^5T_hS%N-7l zQjT0Jw?{nb=;%7BT!@^?k+Xnpu^n(;;_};M^Z^}wn260lYE~9sse!<-C%MulG!gJR z0XjDbbbY3cyduS`o%I+f52VoZOi4ijOm??P9n>z^R&Hu94HPQNQg+*fo#$bI+DHLm z=!_omBuftirY}?~pwH3eOgnOav^kb!L4IP=9SxSZBG9(cF6i6tq1IH08@4 z&Z(nPJ(o)rFByB;fA#_Fa8xch2oy=e_asPr9@v1h0+dTA2%uP1F*7qe*6`dri!|pn z59rzKy0!oz7Z!_E0&JXA!avjEQzI7+#{)UEm6U?KWD=)aVo4#q)VknMj_sD=^>0FL z&xgyLQK>k5nbNa{(8E?Fph#i_Qnm5S*!Qr|_ju+#t#dMm#4YUSHIUCLxSI;QM(BC z*nEF$scenN3%KB@e4RkHcB77gkd^+&^JOESxgfl~z00@te3Nz#*4vzc%@MK5u6_rB zK%TEnHrWgio14LBJ<_P{c4H66s!AQHG<|^0GBqfOuHRau67Zdy`R-2i z#iKsu)2;D?X)LT~6{Gg3QX*aFy`Ia+#AF3l!o$Z0*n&EMj~uc+^rpE-0-?`6S*9yj z7JQ|je5MJxeEWMz1JH69Fdu+7lCZlzv+ujAQ{k3tAP|+h6}G9QsiN|ZQfP8n8v8>6 z&z0CM>sVT1(p5et4-FYWJ007kGh%JaFk!eq{K79Of2X-8E8?;7oU%}eByG7>^cwRO z*$k!wk$WVurbB*zRqn3O!H!FV80%Ref}48O^Sx&`Q6-*(#qy}eO8_GK!$JsEz)5XB zTlq40IvO?GA0kdw4uGz~p&e}!tgNjUJKRWyuJP6)v0z)o0H0=|c?%2lr3Gza*f2d%B+Cz!*rzO)Oq`8(?$rfIMbp{2&}DfD1Bf0i zn^2r|0Gb%O4)=_gXr)Fl5K#_qv$_1?Ng-&yt@%Hu1!$)2c>%i<KM=h~Pejyg>Zb;*Iolju_Q39+& zFQE3lYybVLE!#SHs<|Lu{Cf!a<(7C!gzwS%|FQX3Z`N}+v-5w;*AVsa_3Z_=2(DhZ z@Sy(v%=CE|fyM6aOwj$YSAngJkhr+IGj(CBLxH7fM)_G_Yh}`x-S_|cf!Zv~pL3_2 zn_~&Os&Dt5`TyO3iPcZ;j=A~km$k*OKgLd-H*Xy?J739f8-@$=phlsCqoX6JoZC|Q zIqh!k_q$S-MN1YfT9mT+rU>vZxxmG4FG2o!bhLXbuy9N66BQI(C~2Jbqkh}XoL%pB zz1|gayhqY_Oa1>kP&GNrBy$qb*`gvMOD str: + global _GIT_COMMIT + if _GIT_COMMIT is None: + args = ["git", "rev-parse", "--short", "HEAD"] + _GIT_COMMIT = ( + subprocess.check_output(args, stderr=subprocess.DEVNULL).decode().strip() + ) + return _GIT_COMMIT + + +def get_device_name() -> str: + if torch.cuda.is_available(): + return torch.cuda.get_device_properties(0).name + else: + return "CPU" + + +def validate_and_update_benchmark_result( + x: BenchmarkResult, + filename_root: str, + name: str, + rtol: float, + children_rtol: float, +) -> bool: + updated: bool = False + device_name = get_device_name().replace(" ", "_").replace("/", "_").lower() + json_path = RESULTS_PATH / f"{filename_root}-{device_name}.json" + png_path = RESULTS_PATH / f"{filename_root}-{device_name}.png" + label = get_benchmark_label(name) + if not os.path.exists(json_path): + with open(json_path, "w") as f: + json.dump(x.asdict(), f, indent=4) + x.to_png(png_path, label=label) + updated = True + else: + with open(json_path) as f: + d = json.load(f) + y = BenchmarkResult.from_dict(d) + try: + x.assert_close(y, rtol=rtol, children_rtol=children_rtol) + except AssertionError as e: + logging.warning( + f"Benchmark result for {name} on {device_name} at commit " + f"{get_git_commit()} differ from regression result: {e}, " + f"updating regression result." + ) + with open(json_path, "w") as f: + json.dump(x.asdict(), f, indent=4) + x.to_png(png_path, label=label) + updated = True + return updated + + +def main() -> None: + RESULTS_PATH.mkdir(exist_ok=True) + device_name = get_device_name() + + logging.info(f"Running benchmarks on device: {device_name}") + benchmarks = get_benchmarks() + + updated = False + for name, cls in benchmarks.items(): + logging.info(f"Running benchmark: {name}") + result = cls.run_benchmark(iters=10, warmup=2) + updated = updated or validate_and_update_benchmark_result( + result, + os.path.join(RESULTS_PATH, name), + name=name, + rtol=0.02, + children_rtol=0.05, + ) + + +def get_benchmark_label(name): + device_name = get_device_name() + return f"{name} on {device_name} at commit {get_git_commit()}" + + +if __name__ == "__main__": + logging.basicConfig(level=logging.INFO) + main() From c347c7cfb559ed9e5e7cd7657fc926428b3c0cf4 Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 10 Feb 2026 17:33:49 +0000 Subject: [PATCH 49/51] push to branch --- .github/workflows/tests.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index ff9f35123..2aa687c78 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -127,11 +127,13 @@ jobs: export LD_LIBRARY_PATH=/usr/local/nvidia/lib64:${LD_LIBRARY_PATH} python3 fme/core/benchmark/update_benchmarks.py - name: Commit and push if changed + env: + BRANCH: ${{ github.ref_name }} run: | if ! git diff --quiet; then git add -A git commit -m "chore: auto-update generated files [auto-bench]" - git push + git push origin "HEAD:${BRANCH}" exit 1 # fail the job else echo "No changes" From bc68f45bd704cdf289a3885bb24d452183557c3e Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 10 Feb 2026 17:57:28 +0000 Subject: [PATCH 50/51] use PAT to push --- .github/workflows/tests.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 2aa687c78..bdee466a5 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -133,6 +133,7 @@ jobs: if ! git diff --quiet; then git add -A git commit -m "chore: auto-update generated files [auto-bench]" + git remote set-url origin https://x-access-token:${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/${{ github.repository }} git push origin "HEAD:${BRANCH}" exit 1 # fail the job else From 7f4305c47280a5ad3d616f4113cfa2db9c643f0a Mon Sep 17 00:00:00 2001 From: Jeremy McGibbon Date: Tue, 10 Feb 2026 18:35:29 +0000 Subject: [PATCH 51/51] remove benchmarking performance regression --- .github/workflows/tests.yaml | 52 ---------- fme/core/benchmark/test_benchmark.py | 38 +------ .../csfno_block-benchmark-tesla_t4.json | 95 ----------------- .../csfno_block-benchmark-tesla_t4.png | Bin 98610 -> 0 bytes .../testdata/csfno_block-tesla_t4.json | 95 ----------------- .../testdata/csfno_block-tesla_t4.png | Bin 103399 -> 0 bytes ...fno_block_8_groups-benchmark-tesla_t4.json | 95 ----------------- ...sfno_block_8_groups-benchmark-tesla_t4.png | Bin 106852 -> 0 bytes .../csfno_block_8_groups-tesla_t4.json | 95 ----------------- .../csfno_block_8_groups-tesla_t4.png | Bin 106817 -> 0 bytes fme/core/benchmark/update_benchmarks.py | 96 ------------------ 11 files changed, 1 insertion(+), 565 deletions(-) delete mode 100644 fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.json delete mode 100644 fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.png delete mode 100644 fme/core/benchmark/testdata/csfno_block-tesla_t4.json delete mode 100644 fme/core/benchmark/testdata/csfno_block-tesla_t4.png delete mode 100644 fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.json delete mode 100644 fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.png delete mode 100644 fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.json delete mode 100644 fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.png delete mode 100644 fme/core/benchmark/update_benchmarks.py diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index bdee466a5..1219a65da 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -87,55 +87,3 @@ jobs: export LD_LIBRARY_PATH=/usr/local/nvidia/lib64:${LD_LIBRARY_PATH} python3 fme/require_gpu.py make test - gpu-benchmark: - if: github.ref_name != 'main' && !contains(github.event.head_commit.message || '', '[auto-bench]') - # These steps run on our self-hosted k8s GPU runners. See below for setup notes - # https://github.com/ai2cm/long-lived-infrastructure#installing-the-github-actions-runner-controller - runs-on: arc-runner-set - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - persist-credentials: true - - name: Set up git identity - run: | - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - - name: Set environment variables - run: | - echo "CURRENT_WEEK=$(date +'%Y-%U')" >> $GITHUB_ENV - - uses: actions/setup-python@v4 - with: - python-version: "3.11" - - uses: actions/cache@v4 - with: - path: ${{ env.pythonLocation }} - key: ${{ env.CURRENT_WEEK }}-${{ env.pythonLocation }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-dev.txt') }}-${{ hashFiles('requirements-healpix.txt') }}-${{ hashFiles('constraints.txt') }} - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y make git build-essential - python -m pip install uv - # can't use --system here because it doesn't work with --no-build-isolation and a healpix dependency - uv venv --python 3.11 - uv pip install -c constraints.txt -e .[dev] - uv pip install --no-build-isolation -c constraints.txt -e .[dev,healpix,graphcast] - - name: Run benchmarks - run: | - source .venv/bin/activate - export PATH=/usr/local/nvidia/bin:${PATH} - export LD_LIBRARY_PATH=/usr/local/nvidia/lib64:${LD_LIBRARY_PATH} - python3 fme/core/benchmark/update_benchmarks.py - - name: Commit and push if changed - env: - BRANCH: ${{ github.ref_name }} - run: | - if ! git diff --quiet; then - git add -A - git commit -m "chore: auto-update generated files [auto-bench]" - git remote set-url origin https://x-access-token:${{ secrets.PERSONAL_ACCESS_TOKEN }}@github.com/${{ github.repository }} - git push origin "HEAD:${BRANCH}" - exit 1 # fail the job - else - echo "No changes" - fi diff --git a/fme/core/benchmark/test_benchmark.py b/fme/core/benchmark/test_benchmark.py index a8b17350f..c7c95629e 100644 --- a/fme/core/benchmark/test_benchmark.py +++ b/fme/core/benchmark/test_benchmark.py @@ -1,12 +1,10 @@ -import json import os import pytest import torch import fme # to trigger registration of benchmarks -from fme.core.benchmark.benchmark import BenchmarkABC, BenchmarkResult, get_benchmarks -from fme.core.benchmark.run import get_benchmark_label, get_device_name +from fme.core.benchmark.benchmark import BenchmarkABC, get_benchmarks from fme.core.rand import set_seed from fme.core.testing.regression import validate_tensor_dict @@ -40,25 +38,6 @@ def test_benchmarks_are_not_empty(): BENCHMARKS = get_benchmarks() -def validate_benchmark_result( - x: BenchmarkResult, filename_root: str, name: str, **assert_close_kwargs -): - device_name = get_device_name().replace(" ", "_").replace("/", "_").lower() - json_filename = f"{filename_root}-{device_name}.json" - if not os.path.exists(json_filename): - with open(json_filename, "w") as f: - json.dump(x.asdict(), f, indent=4) - png_filename = f"{filename_root}-{device_name}.png" - label = get_benchmark_label(name) - x.to_png(png_filename, label=label) - pytest.fail(f"Regression file {json_filename} did not exist, so it was created") - else: - with open(json_filename) as f: - d = json.load(f) - y = BenchmarkResult.from_dict(d) - x.assert_close(y, **assert_close_kwargs) - - @pytest.mark.parametrize("benchmark_name", BENCHMARKS.keys()) @pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") def test_regression(benchmark_name: str): @@ -73,18 +52,3 @@ def test_regression(benchmark_name: str): regression_result, os.path.join(DIR, "testdata", f"{benchmark_name}-regression.pt"), ) - - -@pytest.mark.parametrize("benchmark_name", BENCHMARKS.keys()) -@pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA is not available") -def test_benchmark(benchmark_name: str): - set_seed(0) - benchmark_cls = BENCHMARKS[benchmark_name] - result = benchmark_cls.run_benchmark(iters=10, warmup=5) - validate_benchmark_result( - result, - os.path.join(DIR, "testdata", f"{benchmark_name}-benchmark"), - name=benchmark_name, - rtol=0.02, - children_rtol=0.05, # looser tolerance on sub-timers - ) diff --git a/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.json b/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.json deleted file mode 100644 index d70bce275..000000000 --- a/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "memory": { - "max_alloc": 4502092800, - "max_reserved": 5177868288 - }, - "timer": { - "total_runs": 10, - "avg_time": 345.5874877929688, - "children": { - "norm0": { - "total_runs": 10, - "avg_time": 40.31120338439941, - "children": { - "compute_scaling_and_bias": { - "total_runs": 10, - "avg_time": 22.836835289001463, - "children": {} - }, - "normalize": { - "total_runs": 10, - "avg_time": 6.486121606826782, - "children": {} - }, - "apply_scaling_and_bias": { - "total_runs": 10, - "avg_time": 6.473951959609986, - "children": {} - } - } - }, - "filter": { - "total_runs": 10, - "avg_time": 176.9090148925781, - "children": { - "forward_transform": { - "total_runs": 10, - "avg_time": 57.66742134094238, - "children": {} - }, - "dhconv": { - "total_runs": 10, - "avg_time": 63.30165138244629, - "children": {} - }, - "inverse_transform": { - "total_runs": 10, - "avg_time": 53.730656433105466, - "children": {} - }, - "add_bias": { - "total_runs": 10, - "avg_time": 2.198143982887268, - "children": {} - } - } - }, - "inner_skip": { - "total_runs": 10, - "avg_time": 16.8360897064209, - "children": {} - }, - "activation": { - "total_runs": 10, - "avg_time": 2.2632800102233888, - "children": {} - }, - "norm1": { - "total_runs": 10, - "avg_time": 39.3988697052002, - "children": { - "compute_scaling_and_bias": { - "total_runs": 10, - "avg_time": 21.925215911865234, - "children": {} - }, - "normalize": { - "total_runs": 10, - "avg_time": 6.473680114746093, - "children": {} - }, - "apply_scaling_and_bias": { - "total_runs": 10, - "avg_time": 6.501107168197632, - "children": {} - } - } - }, - "mlp": { - "total_runs": 10, - "avg_time": 69.84680938720703, - "children": {} - } - } - } -} \ No newline at end of file diff --git a/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.png b/fme/core/benchmark/testdata/csfno_block-benchmark-tesla_t4.png deleted file mode 100644 index 2cd374f25afb8ac171b122d3bed47690eb7ea13c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98610 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 diff --git a/fme/core/benchmark/testdata/csfno_block-tesla_t4.json b/fme/core/benchmark/testdata/csfno_block-tesla_t4.json deleted file mode 100644 index 0bdeccbb1..000000000 --- a/fme/core/benchmark/testdata/csfno_block-tesla_t4.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "memory": { - "max_alloc": 4477058048, - "max_reserved": 5144313856 - }, - "timer": { - "total_runs": 10, - "avg_time": 329.6283843994141, - "children": { - "norm0": { - "total_runs": 10, - "avg_time": 38.795692443847656, - "children": { - "compute_scaling_and_bias": { - "total_runs": 10, - "avg_time": 22.47518081665039, - "children": {} - }, - "normalize": { - "total_runs": 10, - "avg_time": 6.473750400543213, - "children": {} - }, - "apply_scaling_and_bias": { - "total_runs": 10, - "avg_time": 6.480278491973877, - "children": {} - } - } - }, - "filter": { - "total_runs": 10, - "avg_time": 164.74835357666015, - "children": { - "forward_transform": { - "total_runs": 10, - "avg_time": 53.14153861999512, - "children": {} - }, - "dhconv": { - "total_runs": 10, - "avg_time": 60.37122497558594, - "children": {} - }, - "inverse_transform": { - "total_runs": 10, - "avg_time": 49.02562828063965, - "children": {} - }, - "add_bias": { - "total_runs": 10, - "avg_time": 2.197251224517822, - "children": {} - } - } - }, - "inner_skip": { - "total_runs": 10, - "avg_time": 17.21643199920654, - "children": {} - }, - "activation": { - "total_runs": 10, - "avg_time": 2.249343991279602, - "children": {} - }, - "norm1": { - "total_runs": 10, - "avg_time": 38.372351837158206, - "children": { - "compute_scaling_and_bias": { - "total_runs": 10, - "avg_time": 22.017212677001954, - "children": {} - }, - "normalize": { - "total_runs": 10, - "avg_time": 6.464515304565429, - "children": {} - }, - "apply_scaling_and_bias": { - "total_runs": 10, - "avg_time": 6.521219205856323, - "children": {} - } - } - }, - "mlp": { - "total_runs": 10, - "avg_time": 68.21884689331054, - "children": {} - } - } - } -} \ No newline at end of file diff --git a/fme/core/benchmark/testdata/csfno_block-tesla_t4.png b/fme/core/benchmark/testdata/csfno_block-tesla_t4.png deleted file mode 100644 index d58623a5f67f78c6b7d871496dfe27786f0a2595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103399 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 diff --git a/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.json b/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.json deleted file mode 100644 index b589d4969..000000000 --- a/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "memory": { - "max_alloc": 4219632640, - "max_reserved": 5177868288 - }, - "timer": { - "total_runs": 10, - "avg_time": 300.87982177734375, - "children": { - "norm0": { - "total_runs": 10, - "avg_time": 40.18407669067383, - "children": { - "compute_scaling_and_bias": { - "total_runs": 10, - "avg_time": 22.733142471313478, - "children": {} - }, - "normalize": { - "total_runs": 10, - "avg_time": 6.475462436676025, - "children": {} - }, - "apply_scaling_and_bias": { - "total_runs": 10, - "avg_time": 6.463200044631958, - "children": {} - } - } - }, - "filter": { - "total_runs": 10, - "avg_time": 130.6602584838867, - "children": { - "forward_transform": { - "total_runs": 10, - "avg_time": 57.58610916137695, - "children": {} - }, - "dhconv": { - "total_runs": 10, - "avg_time": 17.81670398712158, - "children": {} - }, - "inverse_transform": { - "total_runs": 10, - "avg_time": 53.043609619140625, - "children": {} - }, - "add_bias": { - "total_runs": 10, - "avg_time": 2.2015552043914797, - "children": {} - } - } - }, - "inner_skip": { - "total_runs": 10, - "avg_time": 16.982787132263184, - "children": {} - }, - "activation": { - "total_runs": 10, - "avg_time": 2.250419187545776, - "children": {} - }, - "norm1": { - "total_runs": 10, - "avg_time": 39.53410530090332, - "children": { - "compute_scaling_and_bias": { - "total_runs": 10, - "avg_time": 22.040048027038573, - "children": {} - }, - "normalize": { - "total_runs": 10, - "avg_time": 6.467331266403198, - "children": {} - }, - "apply_scaling_and_bias": { - "total_runs": 10, - "avg_time": 6.5125023365020756, - "children": {} - } - } - }, - "mlp": { - "total_runs": 10, - "avg_time": 71.2459716796875, - "children": {} - } - } - } -} \ No newline at end of file diff --git a/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.png b/fme/core/benchmark/testdata/csfno_block_8_groups-benchmark-tesla_t4.png deleted file mode 100644 index 99ff114e0058f5ef4b10feed2d34af24672bb3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106852 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 L{kPPG73cl|Mw(Vr diff --git a/fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.json b/fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.json deleted file mode 100644 index db841c4ab..000000000 --- a/fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "memory": { - "max_alloc": 4194597888, - "max_reserved": 5144313856 - }, - "timer": { - "total_runs": 10, - "avg_time": 287.77666931152345, - "children": { - "norm0": { - "total_runs": 10, - "avg_time": 39.073923110961914, - "children": { - "compute_scaling_and_bias": { - "total_runs": 10, - "avg_time": 22.76942081451416, - "children": {} - }, - "normalize": { - "total_runs": 10, - "avg_time": 6.4725665092468265, - "children": {} - }, - "apply_scaling_and_bias": { - "total_runs": 10, - "avg_time": 6.459983968734742, - "children": {} - } - } - }, - "filter": { - "total_runs": 10, - "avg_time": 119.89053726196289, - "children": { - "forward_transform": { - "total_runs": 10, - "avg_time": 53.881520462036136, - "children": {} - }, - "dhconv": { - "total_runs": 10, - "avg_time": 15.41889934539795, - "children": {} - }, - "inverse_transform": { - "total_runs": 10, - "avg_time": 48.376044845581056, - "children": {} - }, - "add_bias": { - "total_runs": 10, - "avg_time": 2.202217626571655, - "children": {} - } - } - }, - "inner_skip": { - "total_runs": 10, - "avg_time": 17.04536361694336, - "children": {} - }, - "activation": { - "total_runs": 10, - "avg_time": 2.248646378517151, - "children": {} - }, - "norm1": { - "total_runs": 10, - "avg_time": 38.278435134887694, - "children": { - "compute_scaling_and_bias": { - "total_runs": 10, - "avg_time": 21.94731197357178, - "children": {} - }, - "normalize": { - "total_runs": 10, - "avg_time": 6.460576009750366, - "children": {} - }, - "apply_scaling_and_bias": { - "total_runs": 10, - "avg_time": 6.501280021667481, - "children": {} - } - } - }, - "mlp": { - "total_runs": 10, - "avg_time": 71.21715545654297, - "children": {} - } - } - } -} \ No newline at end of file diff --git a/fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.png b/fme/core/benchmark/testdata/csfno_block_8_groups-tesla_t4.png deleted file mode 100644 index be2bcfb4a0047fd77b625fa8ec1eb8627764d087..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106817 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#9>Uz$IzomUHS0~kO3cqZYix$@tQb#zO8 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%0AV6k?Dc3V;k$P#fZ+6pI-9ya^G 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 str: - global _GIT_COMMIT - if _GIT_COMMIT is None: - args = ["git", "rev-parse", "--short", "HEAD"] - _GIT_COMMIT = ( - subprocess.check_output(args, stderr=subprocess.DEVNULL).decode().strip() - ) - return _GIT_COMMIT - - -def get_device_name() -> str: - if torch.cuda.is_available(): - return torch.cuda.get_device_properties(0).name - else: - return "CPU" - - -def validate_and_update_benchmark_result( - x: BenchmarkResult, - filename_root: str, - name: str, - rtol: float, - children_rtol: float, -) -> bool: - updated: bool = False - device_name = get_device_name().replace(" ", "_").replace("/", "_").lower() - json_path = RESULTS_PATH / f"{filename_root}-{device_name}.json" - png_path = RESULTS_PATH / f"{filename_root}-{device_name}.png" - label = get_benchmark_label(name) - if not os.path.exists(json_path): - with open(json_path, "w") as f: - json.dump(x.asdict(), f, indent=4) - x.to_png(png_path, label=label) - updated = True - else: - with open(json_path) as f: - d = json.load(f) - y = BenchmarkResult.from_dict(d) - try: - x.assert_close(y, rtol=rtol, children_rtol=children_rtol) - except AssertionError as e: - logging.warning( - f"Benchmark result for {name} on {device_name} at commit " - f"{get_git_commit()} differ from regression result: {e}, " - f"updating regression result." - ) - with open(json_path, "w") as f: - json.dump(x.asdict(), f, indent=4) - x.to_png(png_path, label=label) - updated = True - return updated - - -def main() -> None: - RESULTS_PATH.mkdir(exist_ok=True) - device_name = get_device_name() - - logging.info(f"Running benchmarks on device: {device_name}") - benchmarks = get_benchmarks() - - updated = False - for name, cls in benchmarks.items(): - logging.info(f"Running benchmark: {name}") - result = cls.run_benchmark(iters=10, warmup=2) - updated = updated or validate_and_update_benchmark_result( - result, - os.path.join(RESULTS_PATH, name), - name=name, - rtol=0.02, - children_rtol=0.05, - ) - - -def get_benchmark_label(name): - device_name = get_device_name() - return f"{name} on {device_name} at commit {get_git_commit()}" - - -if __name__ == "__main__": - logging.basicConfig(level=logging.INFO) - main()