From af048aa1299e2e1c80b07b8b4f2cc4e5946b2368 Mon Sep 17 00:00:00 2001 From: Jesse Cai Date: Wed, 24 Apr 2024 16:51:05 -0700 Subject: [PATCH] port over torch.ao.pruning to protype folder (#148) --- test/sparsity/test_parametrization.py | 175 +++ test/sparsity/test_scheduler.py | 194 +++ test/sparsity/test_sparsifier.py | 490 ++++++++ test/sparsity/test_sparsity_utils.py | 151 +++ test/sparsity/test_structured_sparsifier.py | 1097 +++++++++++++++++ torchao/sparsity/prototype/__init__.py | 15 + .../sparsity/prototype/pruner/FPGM_pruner.py | 93 ++ torchao/sparsity/prototype/pruner/README.md | 251 ++++ torchao/sparsity/prototype/pruner/__init__.py | 8 + .../pruner/base_structured_sparsifier.py | 310 +++++ .../prototype/pruner/images/prune_1.png | Bin 0 -> 170728 bytes .../prototype/pruner/images/prune_2.png | Bin 0 -> 100490 bytes .../prototype/pruner/images/prune_3.png | Bin 0 -> 87843 bytes .../prototype/pruner/images/prune_4.png | Bin 0 -> 132748 bytes .../prototype/pruner/images/prune_5.png | Bin 0 -> 175692 bytes .../prototype/pruner/images/prune_6.png | Bin 0 -> 92265 bytes .../prototype/pruner/lstm_saliency_pruner.py | 48 + .../sparsity/prototype/pruner/match_utils.py | 59 + .../prototype/pruner/parametrization.py | 59 + .../prototype/pruner/prune_functions.py | 475 +++++++ .../prototype/pruner/saliency_pruner.py | 29 + .../sparsity/prototype/scheduler/__init__.py | 0 .../prototype/scheduler/base_scheduler.py | 159 +++ .../prototype/scheduler/cubic_scheduler.py | 107 ++ .../prototype/scheduler/lambda_scheduler.py | 47 + .../sparsity/prototype/sparsifier/__init__.py | 0 .../prototype/sparsifier/base_sparsifier.py | 353 ++++++ .../sparsifier/nearly_diagonal_sparsifier.py | 55 + .../sparsity/prototype/sparsifier/utils.py | 136 ++ .../sparsifier/weight_norm_sparsifier.py | 200 +++ 30 files changed, 4511 insertions(+) create mode 100644 test/sparsity/test_parametrization.py create mode 100644 test/sparsity/test_scheduler.py create mode 100644 test/sparsity/test_sparsifier.py create mode 100644 test/sparsity/test_sparsity_utils.py create mode 100644 test/sparsity/test_structured_sparsifier.py create mode 100644 torchao/sparsity/prototype/__init__.py create mode 100644 torchao/sparsity/prototype/pruner/FPGM_pruner.py create mode 100644 torchao/sparsity/prototype/pruner/README.md create mode 100644 torchao/sparsity/prototype/pruner/__init__.py create mode 100644 torchao/sparsity/prototype/pruner/base_structured_sparsifier.py create mode 100644 torchao/sparsity/prototype/pruner/images/prune_1.png create mode 100644 torchao/sparsity/prototype/pruner/images/prune_2.png create mode 100644 torchao/sparsity/prototype/pruner/images/prune_3.png create mode 100644 torchao/sparsity/prototype/pruner/images/prune_4.png create mode 100644 torchao/sparsity/prototype/pruner/images/prune_5.png create mode 100644 torchao/sparsity/prototype/pruner/images/prune_6.png create mode 100644 torchao/sparsity/prototype/pruner/lstm_saliency_pruner.py create mode 100644 torchao/sparsity/prototype/pruner/match_utils.py create mode 100644 torchao/sparsity/prototype/pruner/parametrization.py create mode 100644 torchao/sparsity/prototype/pruner/prune_functions.py create mode 100644 torchao/sparsity/prototype/pruner/saliency_pruner.py create mode 100644 torchao/sparsity/prototype/scheduler/__init__.py create mode 100644 torchao/sparsity/prototype/scheduler/base_scheduler.py create mode 100644 torchao/sparsity/prototype/scheduler/cubic_scheduler.py create mode 100644 torchao/sparsity/prototype/scheduler/lambda_scheduler.py create mode 100644 torchao/sparsity/prototype/sparsifier/__init__.py create mode 100644 torchao/sparsity/prototype/sparsifier/base_sparsifier.py create mode 100644 torchao/sparsity/prototype/sparsifier/nearly_diagonal_sparsifier.py create mode 100644 torchao/sparsity/prototype/sparsifier/utils.py create mode 100644 torchao/sparsity/prototype/sparsifier/weight_norm_sparsifier.py diff --git a/test/sparsity/test_parametrization.py b/test/sparsity/test_parametrization.py new file mode 100644 index 0000000000..ebcae785d5 --- /dev/null +++ b/test/sparsity/test_parametrization.py @@ -0,0 +1,175 @@ +import logging +import torch +import unittest +from torch import nn +from torch.nn.utils import parametrize +from torch.testing._internal.common_utils import TestCase + +from torchao.sparsity.prototype.sparsifier import utils + +logging.basicConfig( + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO +) + + +class ModelUnderTest(nn.Module): + def __init__(self, bias=True): + super().__init__() + self.linear = nn.Linear(16, 16, bias=bias) + self.seq = nn.Sequential( + nn.Linear(16, 16, bias=bias), nn.Linear(16, 16, bias=bias) + ) + + # Make sure the weights are not random + self.linear.weight = nn.Parameter(torch.zeros_like(self.linear.weight) + 1.0) + self.seq[0].weight = nn.Parameter(torch.zeros_like(self.seq[0].weight) + 2.0) + self.seq[1].weight = nn.Parameter(torch.zeros_like(self.seq[1].weight) + 3.0) + if bias: + self.linear = nn.Parameter(torch.zeros_like(self.linear.bias) + 10.0) + self.seq[0] = nn.Parameter(torch.zeros_like(self.seq[0].bias) + 20.0) + self.seq[0] = nn.Parameter(torch.zeros_like(self.seq[0].bias) + 30.0) + + def forward(self, x): + x = self.linear(x) + x = self.seq(x) + return x + + +class TestFakeSparsity(TestCase): + def test_masking_logic(self): + model = nn.Linear(16, 16, bias=False) + model.weight = nn.Parameter(torch.eye(16)) + x = torch.randn(3, 16) + self.assertEqual(torch.mm(x, torch.eye(16)), model(x)) + + mask = torch.zeros(16, 16) + sparsity = utils.FakeSparsity(mask) + parametrize.register_parametrization(model, "weight", sparsity) + + x = torch.randn(3, 16) + self.assertEqual(torch.zeros(3, 16), model(x)) + + def test_weights_parametrized(self): + model = ModelUnderTest(bias=False) + + assert not hasattr(model.linear, "parametrizations") + assert not hasattr(model.seq[0], "parametrizations") + assert not hasattr(model.seq[1], "parametrizations") + mask = torch.eye(16) + parametrize.register_parametrization( + model.linear, "weight", utils.FakeSparsity(mask) + ) + mask = torch.eye(16) + parametrize.register_parametrization( + model.seq[0], "weight", utils.FakeSparsity(mask) + ) + mask = torch.eye(16) + parametrize.register_parametrization( + model.seq[1], "weight", utils.FakeSparsity(mask) + ) + + assert hasattr(model.linear, "parametrizations") + assert parametrize.is_parametrized(model.linear, "weight") + assert hasattr(model.seq[0], "parametrizations") + assert parametrize.is_parametrized(model.linear, "weight") + assert hasattr(model.seq[1], "parametrizations") + assert parametrize.is_parametrized(model.linear, "weight") + + def test_state_dict_preserved(self): + model_save = ModelUnderTest(bias=False) + + mask = torch.eye(16) + parametrize.register_parametrization( + model_save.linear, "weight", utils.FakeSparsity(mask) + ) + mask = torch.eye(16) + parametrize.register_parametrization( + model_save.seq[0], "weight", utils.FakeSparsity(mask) + ) + mask = torch.eye(16) + parametrize.register_parametrization( + model_save.seq[1], "weight", utils.FakeSparsity(mask) + ) + state_dict = model_save.state_dict() + + model_load = ModelUnderTest(bias=False) + mask = torch.zeros(model_load.linear.weight.shape) + parametrize.register_parametrization( + model_load.linear, "weight", utils.FakeSparsity(mask) + ) + mask = torch.zeros(model_load.seq[0].weight.shape) + parametrize.register_parametrization( + model_load.seq[0], "weight", utils.FakeSparsity(mask) + ) + mask = torch.zeros(model_load.seq[1].weight.shape) + parametrize.register_parametrization( + model_load.seq[1], "weight", utils.FakeSparsity(mask) + ) + # Keep this strict, as we are not loading the 'mask' + model_load.load_state_dict(state_dict, strict=False) + + # Check the parametrizations are preserved + assert hasattr(model_load.linear, "parametrizations") + assert parametrize.is_parametrized(model_load.linear, "weight") + assert hasattr(model_load.seq[0], "parametrizations") + assert parametrize.is_parametrized(model_load.linear, "weight") + assert hasattr(model_load.seq[1], "parametrizations") + assert parametrize.is_parametrized(model_load.linear, "weight") + + # Check the weights are preserved + self.assertEqual( + model_save.linear.parametrizations["weight"].original, + model_load.linear.parametrizations["weight"].original, + ) + self.assertEqual( + model_save.seq[0].parametrizations["weight"].original, + model_load.seq[0].parametrizations["weight"].original, + ) + self.assertEqual( + model_save.seq[1].parametrizations["weight"].original, + model_load.seq[1].parametrizations["weight"].original, + ) + + # Check the masks are not preserved in the state_dict + # We store the state_dicts in the sparsifier, not in the model itself. + # TODO: Need to find a clean way of exporting the parametrized model + self.assertNotEqual( + model_save.linear.parametrizations["weight"][0].mask, + model_load.linear.parametrizations["weight"][0].mask, + ) + self.assertNotEqual( + model_save.seq[0].parametrizations["weight"][0].mask, + model_load.seq[0].parametrizations["weight"][0].mask, + ) + self.assertNotEqual( + model_save.seq[1].parametrizations["weight"][0].mask, + model_load.seq[1].parametrizations["weight"][0].mask, + ) + + def test_jit_trace(self): + model = ModelUnderTest(bias=False) + + mask = torch.eye(16) + parametrize.register_parametrization( + model.linear, "weight", utils.FakeSparsity(mask) + ) + mask = torch.eye(16) + parametrize.register_parametrization( + model.seq[0], "weight", utils.FakeSparsity(mask) + ) + mask = torch.eye(16) + parametrize.register_parametrization( + model.seq[1], "weight", utils.FakeSparsity(mask) + ) + + # Tracing + example_x = torch.ones(3, 16) + model_trace = torch.jit.trace_module(model, {"forward": example_x}) + + x = torch.randn(3, 16) + y = model(x) + y_hat = model_trace(x) + self.assertEqual(y_hat, y) + +if __name__ == "__main__": + unittest.main() diff --git a/test/sparsity/test_scheduler.py b/test/sparsity/test_scheduler.py new file mode 100644 index 0000000000..0cfc898dcd --- /dev/null +++ b/test/sparsity/test_scheduler.py @@ -0,0 +1,194 @@ +import warnings +import unittest + +from torch import nn +from torch.testing._internal.common_utils import TestCase + +from torchao.sparsity.prototype import BaseScheduler, CubicSL, LambdaSL, WeightNormSparsifier + +class ImplementedScheduler(BaseScheduler): + def get_sl(self): + if self.last_epoch > 0: + return [group["sparsity_level"] * 0.5 for group in self.sparsifier.groups] + else: + return list(self.base_sl) + + +class TestScheduler(TestCase): + def test_constructor(self): + model = nn.Sequential(nn.Linear(16, 16)) + sparsifier = WeightNormSparsifier() + sparsifier.prepare(model, config=None) + scheduler = ImplementedScheduler(sparsifier) + + assert scheduler.sparsifier is sparsifier + assert scheduler._step_count == 1 + assert scheduler.base_sl == [sparsifier.groups[0]["sparsity_level"]] + + def test_order_of_steps(self): + """Checks if the warning is thrown if the scheduler step is called + before the sparsifier step""" + + model = nn.Sequential(nn.Linear(16, 16)) + sparsifier = WeightNormSparsifier() + sparsifier.prepare(model, config=None) + scheduler = ImplementedScheduler(sparsifier) + + # Sparsifier step is not called + with self.assertWarns(UserWarning): + scheduler.step() + + # Correct order has no warnings + # Note: This will trigger if other warnings are present. + with warnings.catch_warnings(record=True) as w: + sparsifier.step() + scheduler.step() + # Make sure there is no warning related to the base_scheduler + for warning in w: + fname = warning.filename + fname = "/".join(fname.split("/")[-5:]) + assert fname != "torch/ao/sparsity/scheduler/base_scheduler.py" + + def test_step(self): + model = nn.Sequential(nn.Linear(16, 16)) + sparsifier = WeightNormSparsifier() + sparsifier.prepare(model, config=None) + assert sparsifier.groups[0]["sparsity_level"] == 0.5 + scheduler = ImplementedScheduler(sparsifier) + assert sparsifier.groups[0]["sparsity_level"] == 0.5 + + sparsifier.step() + scheduler.step() + assert sparsifier.groups[0]["sparsity_level"] == 0.25 + + def test_lambda_scheduler(self): + model = nn.Sequential(nn.Linear(16, 16)) + sparsifier = WeightNormSparsifier() + sparsifier.prepare(model, config=None) + assert sparsifier.groups[0]["sparsity_level"] == 0.5 + scheduler = LambdaSL(sparsifier, lambda epoch: epoch * 10) + assert sparsifier.groups[0]["sparsity_level"] == 0.0 # Epoch 0 + scheduler.step() + assert sparsifier.groups[0]["sparsity_level"] == 5.0 # Epoch 1 + + +class TestCubicScheduler(TestCase): + def setUp(self): + self.model_sparse_config = [ + {"tensor_fqn": "0.weight", "sparsity_level": 0.8}, + {"tensor_fqn": "2.weight", "sparsity_level": 0.4}, + ] + self.sorted_sparse_levels = [ + conf["sparsity_level"] for conf in self.model_sparse_config + ] + self.initial_sparsity = 0.1 + self.initial_step = 3 + + def _make_model(self, **kwargs): + model = nn.Sequential( + nn.Linear(13, 17), + nn.Dropout(0.5), + nn.Linear(17, 3), + ) + return model + + def _make_scheduler(self, model, **kwargs): + sparsifier = WeightNormSparsifier() + sparsifier.prepare(model, config=self.model_sparse_config) + + scheduler_args = { + "init_sl": self.initial_sparsity, + "init_t": self.initial_step, + } + scheduler_args.update(kwargs) + + scheduler = CubicSL(sparsifier, **scheduler_args) + return sparsifier, scheduler + + @staticmethod + def _get_sparsity_levels(sparsifier, precision=32): + r"""Gets the current levels of sparsity in a sparsifier.""" + return [ + round(group["sparsity_level"], precision) for group in sparsifier.groups + ] + + def test_constructor(self): + model = self._make_model() + sparsifier, scheduler = self._make_scheduler(model=model, initially_zero=True) + self.assertIs( + scheduler.sparsifier, sparsifier, msg="Sparsifier is not properly attached" + ) + self.assertEqual( + scheduler._step_count, + 1, + msg="Scheduler is initialized with incorrect step count", + ) + self.assertEqual( + scheduler.base_sl, + self.sorted_sparse_levels, + msg="Scheduler did not store the target sparsity levels correctly", + ) + + # Value before t_0 is 0 + self.assertEqual( + self._get_sparsity_levels(sparsifier), + scheduler._make_sure_a_list(0.0), + msg="Sparsifier is not reset correctly after attaching to the Scheduler", + ) + + # Value before t_0 is s_0 + model = self._make_model() + sparsifier, scheduler = self._make_scheduler(model=model, initially_zero=False) + self.assertEqual( + self._get_sparsity_levels(sparsifier), + scheduler._make_sure_a_list(self.initial_sparsity), + msg="Sparsifier is not reset correctly after attaching to the Scheduler", + ) + + def test_step(self): + # For n=5, dt=2, there will be totally 10 steps between s_0 and s_f, starting from t_0 + model = self._make_model() + sparsifier, scheduler = self._make_scheduler( + model=model, initially_zero=True, init_t=3, delta_t=2, total_t=5 + ) + + scheduler.step() + scheduler.step() + self.assertEqual( + scheduler._step_count, + 3, + msg="Scheduler step_count is expected to increment", + ) + # Value before t_0 is supposed to be 0 + self.assertEqual( + self._get_sparsity_levels(sparsifier), + scheduler._make_sure_a_list(0.0), + msg="Scheduler step updating the sparsity level before t_0", + ) + + scheduler.step() # Step = 3 => sparsity = initial_sparsity + self.assertEqual( + self._get_sparsity_levels(sparsifier), + scheduler._make_sure_a_list(self.initial_sparsity), + msg="Sparsifier is not reset to initial sparsity at the first step", + ) + + scheduler.step() # Step = 4 => sparsity ~ [0.3, 0.2] + self.assertEqual( + self._get_sparsity_levels(sparsifier, 1), + [0.3, 0.2], + msg="Sparsity level is not set correctly after the first step", + ) + + current_step = scheduler._step_count - scheduler.init_t[0] - 1 + more_steps_needed = scheduler.delta_t[0] * scheduler.total_t[0] - current_step + for _ in range(more_steps_needed): # More steps needed to final sparsity level + scheduler.step() + self.assertEqual( + self._get_sparsity_levels(sparsifier), + self.sorted_sparse_levels, + msg="Sparsity level is not reaching the target level afer delta_t * n steps ", + ) + +if __name__ == "__main__": + unittest.main() diff --git a/test/sparsity/test_sparsifier.py b/test/sparsity/test_sparsifier.py new file mode 100644 index 0000000000..0deeea9ca7 --- /dev/null +++ b/test/sparsity/test_sparsifier.py @@ -0,0 +1,490 @@ +# Owner(s): ["module: unknown"] + +import itertools +import logging +import re +import unittest + +import torch +from torch import nn +from torchao.sparsity.prototype import ( + BaseSparsifier, + FakeSparsity, + NearlyDiagonalSparsifier, + WeightNormSparsifier, +) +from torch.nn.utils.parametrize import is_parametrized +from torch.testing._internal.common_pruning import ( + ImplementedSparsifier, + MockSparseLinear, + SimpleLinear, +) + +from torch.testing._internal.common_utils import TestCase + +logging.basicConfig( + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO +) + + +class TestBaseSparsifier(TestCase): + def test_constructor(self): + # Cannot instantiate the abstract base + self.assertRaises(TypeError, BaseSparsifier) + # Can instantiate the model with no configs + model = SimpleLinear() + sparsifier = ImplementedSparsifier(test=3) + sparsifier.prepare(model, config=None) + assert len(sparsifier.groups) == 5 + sparsifier.step() + # Can instantiate the model with configs + sparsifier = ImplementedSparsifier(test=3) + sparsifier.prepare(model, [{"tensor_fqn": "linear1.weight"}]) + assert len(sparsifier.groups) == 1 + assert sparsifier.groups[0]["tensor_fqn"] == "linear1.weight" + assert "test" in sparsifier.groups[0] + assert sparsifier.groups[0]["test"] == 3 + + def test_prepare_config(self): + model = SimpleLinear() + sparsifier = ImplementedSparsifier(test=3) + # Make sure there are no parametrizations before `prepare` + assert not hasattr(model.seq[0], "parametrizations") + assert not hasattr(model.linear1, "parametrizations") + assert not hasattr(model.linear2, "parametrizations") + sparsifier.prepare( + model, + config=[ + {"tensor_fqn": "seq.0.weight", "test": 42}, + # No 'linear1' to make sure it will be skipped in the sparsification + {"tensor_fqn": "linear2.weight"}, + ], + ) + assert len(sparsifier.groups) == 2 + # Check if default argument is not assigned if explicit + assert sparsifier.groups[0]["tensor_fqn"] == "seq.0.weight" + assert sparsifier.groups[0]["test"] == 42 + # Check if FQN and module are pointing to the same location + assert sparsifier.groups[1]["tensor_fqn"] == "linear2.weight" + assert sparsifier.groups[1]["module"] == model.linear2 + # Check if parameterizations are attached + assert hasattr(model.seq[0], "parametrizations") + assert not hasattr(model.linear1, "parametrizations") + assert hasattr(model.linear2, "parametrizations") + + def test_step(self): + model = SimpleLinear() + sparsifier = ImplementedSparsifier(test=3) + sparsifier.enable_mask_update = True + sparsifier.prepare(model, [{"tensor_fqn": "linear1.weight"}]) + sparsifier.step() + assert torch.all(model.linear1.parametrizations.weight[0].mask[0] == 0) + + def test_state_dict(self): + step_count = 3 + model0 = SimpleLinear() + sparsifier0 = ImplementedSparsifier(test=3) + sparsifier0.prepare(model0, [{"tensor_fqn": "linear1.weight"}]) + mask = model0.linear1.parametrizations["weight"][0].mask + mask.data = torch.arange(mask.shape[0] * mask.shape[1]).reshape(mask.shape) + for step in range(step_count): + sparsifier0.step() + state_dict = sparsifier0.state_dict() + + # Check the expected keys in the state_dict + assert "state" in state_dict + assert "step_count" in state_dict["state"]["linear1.weight"] + assert state_dict["state"]["linear1.weight"]["step_count"] == 3 + assert "groups" in state_dict + assert "test" in state_dict["groups"][0] + assert "tensor_fqn" in state_dict["groups"][0] + assert state_dict["groups"][0]["tensor_fqn"] == "linear1.weight" + + # Check loading static_dict creates an equivalent model + model1 = SimpleLinear() + sparsifier1 = ImplementedSparsifier() + sparsifier1.prepare(model1, None) + + assert sparsifier0.state != sparsifier1.state + + # Make sure the masks are different in the beginning + for mg in sparsifier0.groups: + if mg["tensor_fqn"] == "linear1.weight": + mask0 = mg["module"].parametrizations.weight[0].mask + for mg in sparsifier1.groups: + if mg["tensor_fqn"] == "linear1.weight": + mask1 = mg["module"].parametrizations.weight[0].mask + self.assertNotEqual(mask0, mask1) + + sparsifier1.load_state_dict(state_dict) + + # Make sure the states are loaded, and are correct + assert sparsifier0.state == sparsifier1.state + + # Make sure the masks (and all dicts) are the same after loading + assert len(sparsifier0.groups) == len(sparsifier1.groups) + for idx in range(len(sparsifier0.groups)): + mg0 = sparsifier0.groups[idx] + mg1 = sparsifier1.groups[idx] + for key in mg0.keys(): + assert key in mg1 + if key == "module": + # We cannot compare modules as they are different + param0 = mg0[key].parametrizations.weight[0] + param1 = mg1[key].parametrizations.weight[0] + assert hasattr(param0, "mask") + assert hasattr(param1, "mask") + self.assertEqual(param0.__dict__, param1.__dict__) + else: + assert mg0[key] == mg1[key] + + def test_convert(self): + model = SimpleLinear() + sparsifier = ImplementedSparsifier(test=3) + sparsifier.prepare(model, [{"tensor_fqn": "linear1.weight"}]) + new_model = sparsifier.convert( + model, mapping={nn.Linear: MockSparseLinear}, inplace=False + ) + + assert isinstance(new_model.linear1, MockSparseLinear) + assert isinstance(new_model.seq[0], nn.Linear) + assert isinstance(new_model.linear2, nn.Linear) + + def test_mask_squash(self): + model = SimpleLinear() + sparsifier = ImplementedSparsifier(test=3) + sparsifier.prepare(model, [{"tensor_fqn": "linear1.weight"}]) + assert hasattr(model.linear1.parametrizations.weight[0], "mask") + assert is_parametrized(model.linear1, "weight") + assert not is_parametrized(model.seq[0], "weight") + + sparsifier.squash_mask() + assert not is_parametrized(model.seq[0], "weight") + assert not is_parametrized(model.linear1, "weight") + + def test_mask_squash_with_params1(self): + model = SimpleLinear() + sparsifier = ImplementedSparsifier(foo=3, bar=2, baz=1) + sparsifier.prepare( + model, [{"tensor_fqn": "linear1.weight"}, {"tensor_fqn": "seq.0.weight"}] + ) + sparsifier.squash_mask( + params_to_keep_per_layer={"linear1": ("foo", "bar"), "seq.0": ("baz",)} + ) + assert not is_parametrized(model.seq[0], "weight") + assert not is_parametrized(model.linear1, "weight") + assert hasattr(model.seq[0], "sparse_params") + assert hasattr(model.linear1, "sparse_params") + assert model.seq[0].sparse_params.get("foo", None) is None + assert model.seq[0].sparse_params.get("bar", None) is None + assert model.seq[0].sparse_params.get("baz", None) == 1 + assert model.linear1.sparse_params.get("foo", None) == 3 + assert model.linear1.sparse_params.get("bar", None) == 2 + assert model.linear1.sparse_params.get("baz", None) is None + + def test_mask_squash_with_params2(self): + model = SimpleLinear() + sparsifier = ImplementedSparsifier(foo=3, bar=2, baz=1) + sparsifier.prepare( + model, [{"tensor_fqn": "linear1.weight"}, {"tensor_fqn": "seq.0.weight"}] + ) + sparsifier.squash_mask(params_to_keep=("foo", "bar")) + assert not is_parametrized(model.seq[0], "weight") + assert not is_parametrized(model.linear1, "weight") + assert hasattr(model.seq[0], "sparse_params") + assert hasattr(model.linear1, "sparse_params") + assert model.seq[0].sparse_params.get("foo", None) == 3 + assert model.seq[0].sparse_params.get("bar", None) == 2 + assert model.seq[0].sparse_params.get("baz", None) is None + assert model.linear1.sparse_params.get("foo", None) == 3 + assert model.linear1.sparse_params.get("bar", None) == 2 + assert model.linear1.sparse_params.get("baz", None) is None + + def test_mask_squash_with_params3(self): + model = SimpleLinear() + sparsifier = ImplementedSparsifier(foo=3, bar=2, baz=1) + sparsifier.prepare( + model, [{"tensor_fqn": "linear1.weight"}, {"tensor_fqn": "seq.0.weight"}] + ) + sparsifier.squash_mask( + params_to_keep=("foo", "bar"), params_to_keep_per_layer={"seq.0": ("baz",)} + ) + assert not is_parametrized(model.seq[0], "weight") + assert not is_parametrized(model.linear1, "weight") + assert hasattr(model.seq[0], "sparse_params") + assert hasattr(model.linear1, "sparse_params") + assert model.seq[0].sparse_params.get("foo", None) == 3 + assert model.seq[0].sparse_params.get("bar", None) == 2 + assert model.seq[0].sparse_params.get("baz", None) == 1 + assert model.linear1.sparse_params.get("foo", None) == 3 + assert model.linear1.sparse_params.get("bar", None) == 2 + assert model.linear1.sparse_params.get("baz", None) is None + + +class TestWeightNormSparsifier(TestCase): + def test_constructor(self): + model = SimpleLinear() + sparsifier = WeightNormSparsifier() + sparsifier.prepare(model, config=None) + for g in sparsifier.groups: + assert isinstance(g["module"], nn.Linear) + # The groups are unordered + assert g["module_fqn"] in ("seq.0", "seq.1", "seq.2", "linear1", "linear2") + + def test_step(self): + model = SimpleLinear() + sparsifier = WeightNormSparsifier(sparsity_level=0.5) + sparsifier.prepare(model, config=[{"tensor_fqn": "linear1.weight"}]) + for g in sparsifier.groups: + # Before step + module = g["module"] + assert ( + 1.0 - module.parametrizations["weight"][0].mask.mean() + ) == 0 # checking sparsity level is 0 + sparsifier.enable_mask_update = True + sparsifier.step() + self.assertAlmostEqual( + model.linear1.parametrizations["weight"][0].mask.mean().item(), + 0.5, + places=2, + ) + for g in sparsifier.groups: + # After step + module = g["module"] + assert ( + 1.0 - module.parametrizations["weight"][0].mask.mean() + ) > 0 # checking sparsity level has increased + # Test if the mask collapses to all zeros if the weights are randomized + iters_before_collapse = 1000 + for _ in range(iters_before_collapse): + model.linear1.weight.data = torch.randn(model.linear1.weight.shape) + sparsifier.step() + for g in sparsifier.groups: + # After step + module = g["module"] + assert ( + 1.0 - module.parametrizations["weight"][0].mask.mean() + ) > 0 # checking sparsity level did not collapse + + def test_step_2_of_4(self): + model = SimpleLinear() + sparsifier = WeightNormSparsifier( + sparsity_level=1.0, sparse_block_shape=(1, 4), zeros_per_block=2 + ) + sparsifier.prepare(model, config=[{"tensor_fqn": "linear1.weight"}]) + sparsifier.step() + # make sure the sparsity level is approximately 50% + mask = model.linear1.parametrizations["weight"][0].mask.to( + torch.float + ) # mean works on float only + self.assertAlmostEqual(mask.mean().item(), 0.5, places=2) + # Make sure each block has exactly 50% zeros + module = sparsifier.groups[0]["module"] + mask = module.parametrizations["weight"][0].mask + for row in mask: + for idx in range(0, len(row), 4): + block = row[idx : idx + 4] + block, _ = block.sort() + assert (block[:2] == 0).all() + assert (block[2:] != 0).all() + + def test_prepare(self): + model = SimpleLinear() + sparsifier = WeightNormSparsifier() + sparsifier.prepare(model, config=None) + for g in sparsifier.groups: + module = g["module"] + # Check mask exists + assert hasattr(module.parametrizations["weight"][0], "mask") + # Check parametrization exists and is correct + assert is_parametrized(module, "weight") + assert type(module.parametrizations.weight[0]) == FakeSparsity + + def test_mask_squash(self): + model = SimpleLinear() + sparsifier = WeightNormSparsifier() + sparsifier.prepare(model, config=None) + sparsifier.squash_mask() + for g in sparsifier.groups: + module = g["module"] + assert not is_parametrized(module, "weight") + assert not hasattr(module, "mask") + + def test_sparsity_levels(self): + sparsity_levels = [-1.0, 0.0, 0.5, 1.0, 2.0] + sparse_block_shapes = [(1, 1), (1, 4), (2, 2), (4, 1)] + zeros_per_blocks = [0, 1, 2, 3, 4] + + testcases = itertools.tee( + itertools.product(sparsity_levels, sparse_block_shapes, zeros_per_blocks) + ) + # Create a config and model with all the testcases + model = nn.Sequential() + sparsifier = WeightNormSparsifier() + + sparsity_per_layer_config = [] + p = re.compile(r"[-\.\s]") + for sl, sbs, zpb in testcases[0]: + # Make sure the number of zeros is not > values in a block + if zpb > sbs[0] * sbs[1]: + continue + layer_name = f"{sl}_{sbs}_{zpb}" + layer_name = p.sub("_", layer_name) + + layer = nn.Linear(12, 12, bias=False) + layer.weight = nn.Parameter(torch.ones(12, 12)) + model.add_module(layer_name, layer) + config = { + "tensor_fqn": layer_name + ".weight", + "sparsity_level": sl, + "sparse_block_shape": sbs, + "zeros_per_block": zpb, + } + sparsity_per_layer_config.append(config) + + sparsifier.prepare(model, sparsity_per_layer_config) + sparsifier.step() + sparsifier.squash_mask() + model.eval() + + for sl, sbs, zpb in testcases[1]: + if zpb > sbs[0] * sbs[1]: + continue + layer_name = f"{sl}_{sbs}_{zpb}" + layer_name = p.sub("_", layer_name) + layer = getattr(model, layer_name) + + # Level of sparsity is achieved + sparse_mask = (layer.weight == 0).float() + if zpb == 0: + assert sparse_mask.mean() == 0 + else: + # Ratio of individual zeros in the tensor + true_sl = min(max(sl, 0.0), 1.0) + true_sl = true_sl * zpb / sbs[0] / sbs[1] + assert sparse_mask.mean() == true_sl + + +class TestNearlyDiagonalSparsifier(TestCase): + def test_constructor(self): + model = SimpleLinear() + sparsifier = NearlyDiagonalSparsifier(nearliness=1) + sparsifier.prepare(model, config=None) + for g in sparsifier.groups: + assert isinstance(g["module"], nn.Linear) + # The groups are unordered + assert g["module_fqn"] in ("seq.0", "seq.1", "seq.2", "linear1", "linear2") + + def test_step(self): + model = SimpleLinear() + sparsifier = NearlyDiagonalSparsifier(nearliness=1) + sparsifier.prepare(model, config=[{"tensor_fqn": "linear1.weight"}]) + + for g in sparsifier.groups: + # Before step + module = g["module"] + assert ( + 1.0 - module.parametrizations["weight"][0].mask.mean() + ) == 0 # checking sparsity level is 0 + + sparsifier.enable_mask_update = True + sparsifier.step() + mask = module.parametrizations["weight"][0].mask + height, width = mask.shape + assert torch.all(mask == torch.eye(height, width)) + + for g in sparsifier.groups: + # After step + module = g["module"] + assert ( + 1.0 - module.parametrizations["weight"][0].mask.mean() + ) > 0 # checking sparsity level has increased + + # Test if the mask collapses to all zeros if the weights are randomized + iters_before_collapse = 1000 + for _ in range(iters_before_collapse): + model.linear1.weight.data = torch.randn(model.linear1.weight.shape) + sparsifier.step() + for g in sparsifier.groups: + # After step + module = g["module"] + assert ( + 1.0 - module.parametrizations["weight"][0].mask.mean() + ) > 0 # checking sparsity level did not collapse + + def test_prepare(self): + model = SimpleLinear() + sparsifier = NearlyDiagonalSparsifier(nearliness=1) + sparsifier.prepare(model, config=None) + for g in sparsifier.groups: + module = g["module"] + # Check mask exists + assert hasattr(module.parametrizations["weight"][0], "mask") + # Check parametrization exists and is correct + assert is_parametrized(module, "weight") + assert type(module.parametrizations.weight[0]) == FakeSparsity + + def test_mask_squash(self): + model = SimpleLinear() + sparsifier = NearlyDiagonalSparsifier(nearliness=1) + sparsifier.prepare(model, config=None) + sparsifier.step() + sparsifier.squash_mask() + for g in sparsifier.groups: + module = g["module"] + assert not is_parametrized(module, "weight") + assert not hasattr(module, "mask") + weights = module.weight + height, width = weights.shape + assert torch.all( + weights == torch.eye(height, width) * weights + ) # only diagonal to be present + + def test_sparsity_levels(self): + nearliness_levels = list(range(-1, 100)) + model = nn.Sequential() + + p = re.compile(r"[-\.\s]") + for nearliness in nearliness_levels: + sparsifier = NearlyDiagonalSparsifier(nearliness=1) + layer_name = f"{nearliness}" + layer_name = p.sub("_", layer_name) + + layer = nn.Linear(32, 32, bias=False) + layer.weight = nn.Parameter(torch.ones(32, 32)) + width, height = layer.weight.shape + model.add_module(layer_name, layer) + config = {"tensor_fqn": layer_name + ".weight", "nearliness": nearliness} + + sparsifier.prepare(model, [config]) + # should raise a ValueError when nearliness arg is illegal + if (nearliness > 0 and nearliness % 2 == 0) or ( + nearliness // 2 >= min(width, height) + ): + with self.assertRaises(ValueError): + sparsifier.step() + else: + sparsifier.step() + sparsifier.squash_mask() + model.eval() + + layer = getattr(model, layer_name) + # verify that mask created corresponds to the nearliness + self._verify_nearliness(layer.weight, nearliness) + + # helper function to verify nearliness of a mask + def _verify_nearliness(self, mask: torch.Tensor, nearliness: int): + if nearliness <= 0: + assert torch.all(mask == torch.zeros(mask.shape[0], mask.shape[1])) + else: + height, width = mask.shape + dist_to_diagonal = nearliness // 2 + for row in range(0, height): + for col in range(0, width): + if abs(row - col) <= dist_to_diagonal: + assert mask[row, col] == 1 + else: + assert mask[row, col] == 0 + +if __name__ == "__main__": + unittest.main() diff --git a/test/sparsity/test_sparsity_utils.py b/test/sparsity/test_sparsity_utils.py new file mode 100644 index 0000000000..91d0d2d562 --- /dev/null +++ b/test/sparsity/test_sparsity_utils.py @@ -0,0 +1,151 @@ +import logging +import unittest + +import torch +from torchao.sparsity.prototype.sparsifier.utils import ( + fqn_to_module, + get_arg_info_from_tensor_fqn, + module_to_fqn, +) + +from torch.testing._internal.common_quantization import ( + ConvBnReLUModel, + ConvModel, + FunctionalLinear, + LinearAddModel, + ManualEmbeddingBagLinear, + SingleLayerLinearModel, + TwoLayerLinearModel, +) +from torch.testing._internal.common_utils import TestCase + +logging.basicConfig( + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO +) + +model_list = [ + ConvModel, + SingleLayerLinearModel, + TwoLayerLinearModel, + LinearAddModel, + ConvBnReLUModel, + ManualEmbeddingBagLinear, + FunctionalLinear, +] + + +class TestSparsityUtilFunctions(TestCase): + def test_module_to_fqn(self): + """ + Tests that module_to_fqn works as expected when compared to known good + module.get_submodule(fqn) function + """ + for model_class in model_list: + model = model_class() + list_of_modules = [m for _, m in model.named_modules()] + [model] + for module in list_of_modules: + fqn = module_to_fqn(model, module) + check_module = model.get_submodule(fqn) + self.assertEqual(module, check_module) + + def test_module_to_fqn_fail(self): + """ + Tests that module_to_fqn returns None when an fqn that doesn't + correspond to a path to a node/tensor is given + """ + for model_class in model_list: + model = model_class() + fqn = module_to_fqn(model, torch.nn.Linear(3, 3)) + self.assertEqual(fqn, None) + + def test_module_to_fqn_root(self): + """ + Tests that module_to_fqn returns '' when model and target module are the same + """ + for model_class in model_list: + model = model_class() + fqn = module_to_fqn(model, model) + self.assertEqual(fqn, "") + + def test_fqn_to_module(self): + """ + Tests that fqn_to_module operates as inverse + of module_to_fqn + """ + for model_class in model_list: + model = model_class() + list_of_modules = [m for _, m in model.named_modules()] + [model] + for module in list_of_modules: + fqn = module_to_fqn(model, module) + check_module = fqn_to_module(model, fqn) + self.assertEqual(module, check_module) + + def test_fqn_to_module_fail(self): + """ + Tests that fqn_to_module returns None when it tries to + find an fqn of a module outside the model + """ + for model_class in model_list: + model = model_class() + fqn = "foo.bar.baz" + check_module = fqn_to_module(model, fqn) + self.assertEqual(check_module, None) + + def test_fqn_to_module_for_tensors(self): + """ + Tests that fqn_to_module works for tensors, actually all parameters + of the model. This is tested by identifying a module with a tensor, + and generating the tensor_fqn using module_to_fqn on the module + + the name of the tensor. + """ + for model_class in model_list: + model = model_class() + list_of_modules = [m for _, m in model.named_modules()] + [model] + for module in list_of_modules: + module_fqn = module_to_fqn(model, module) + for tensor_name, tensor in module.named_parameters(recurse=False): + tensor_fqn = ( # string manip to handle tensors on root + module_fqn + ("." if module_fqn != "" else "") + tensor_name + ) + check_tensor = fqn_to_module(model, tensor_fqn) + self.assertEqual(tensor, check_tensor) + + def test_get_arg_info_from_tensor_fqn(self): + """ + Tests that get_arg_info_from_tensor_fqn works for all parameters of the model. + Generates a tensor_fqn in the same way as test_fqn_to_module_for_tensors and + then compares with known (parent) module and tensor_name as well as module_fqn + from module_to_fqn. + """ + for model_class in model_list: + model = model_class() + list_of_modules = [m for _, m in model.named_modules()] + [model] + for module in list_of_modules: + module_fqn = module_to_fqn(model, module) + for tensor_name, tensor in module.named_parameters(recurse=False): + tensor_fqn = ( + module_fqn + ("." if module_fqn != "" else "") + tensor_name + ) + arg_info = get_arg_info_from_tensor_fqn(model, tensor_fqn) + self.assertEqual(arg_info["module"], module) + self.assertEqual(arg_info["module_fqn"], module_fqn) + self.assertEqual(arg_info["tensor_name"], tensor_name) + self.assertEqual(arg_info["tensor_fqn"], tensor_fqn) + + def test_get_arg_info_from_tensor_fqn_fail(self): + """ + Tests that get_arg_info_from_tensor_fqn works as expected for invalid tensor_fqn + inputs. The string outputs still work but the output module is expected to be None. + """ + for model_class in model_list: + model = model_class() + tensor_fqn = "foo.bar.baz" + arg_info = get_arg_info_from_tensor_fqn(model, tensor_fqn) + self.assertEqual(arg_info["module"], None) + self.assertEqual(arg_info["module_fqn"], "foo.bar") + self.assertEqual(arg_info["tensor_name"], "baz") + self.assertEqual(arg_info["tensor_fqn"], "foo.bar.baz") + + +if __name__ == "__main__": + unittest.main() diff --git a/test/sparsity/test_structured_sparsifier.py b/test/sparsity/test_structured_sparsifier.py new file mode 100644 index 0000000000..471e891ee7 --- /dev/null +++ b/test/sparsity/test_structured_sparsifier.py @@ -0,0 +1,1097 @@ +# Owner(s): ["module: unknown"] +import copy +import logging +import random +import unittest + +import torch +from torch import nn +from torchao.sparsity.prototype.pruner import ( + BaseStructuredSparsifier, + FakeStructuredSparsity, + FPGMPruner, + LSTMSaliencyPruner, + SaliencyPruner, +) +from torch.nn.utils import parametrize +from torch.testing._internal.common_pruning import ( + Conv2dActivation, + Conv2dBias, + Conv2dPadBias, + Conv2dPool, + Conv2dPoolFlatten, + Conv2dPoolFlattenFunctional, + LinearActivation, + LinearActivationFunctional, + LinearBias, + LSTMLayerNormLinearModel, + LSTMLinearModel, + rows_are_subset, + SimpleConv2d, + SimpleLinear, +) + +from torch.testing._internal.common_utils import skipIfTorchDynamo, TestCase + + +logging.basicConfig( + format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO +) + +DEVICES = { + torch.device("cpu"), + torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu"), +} + + +class SimplePruner(BaseStructuredSparsifier): + def update_mask(self, module, tensor_name, **kwargs): + getattr(module.parametrizations, tensor_name)[0].mask[1] = False + + +class ImplementedPruner(BaseStructuredSparsifier): + def update_mask(self, module, tensor_name, **kwargs): + """Prunes 1/3 of the weight output channels, so resulting module has 33.3% pruning""" + num_rows = len(module.parametrizations[tensor_name][0].mask) + prune = random.sample(list(range(num_rows)), num_rows // 3) + module.parametrizations[tensor_name][0].mask[prune] = False + + +class BottomHalfLSTMPruner(BaseStructuredSparsifier): + """ + Pruner that will remove the bottom half of the rows. + This is primarily meant for testing purposes + """ + + def update_mask(self, module, tensor_name, **kwargs): + for p in getattr(module.parametrizations, tensor_name): + if isinstance(p, FakeStructuredSparsity): + mask = p.mask + masks = torch.split(mask, len(mask) // 4) + for small in masks: + num = len(small) + small[num // 2 :] = False + new_mask = torch.cat(masks) + mask.data = new_mask.data + + +class TestSaliencyPruner(TestCase): + def test_saliency_pruner_update_mask(self): + """Test that we prune out the row with the lowest saliency (first row)""" + model = SimpleLinear() + with torch.no_grad(): + model.linear1.weight = nn.Parameter( + torch.Tensor([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]]) + ) + pruning_config = [{"tensor_fqn": "linear1.weight", "sparsity_level": 0.5}] + pruner = SaliencyPruner({}) + + pruner.prepare(model, pruning_config) + pruner.enable_mask_update = True + pruner.step() + pruned_model = pruner.prune() + + expected = torch.Tensor([[3, 3, 3, 3], [4, 4, 4, 4]]) + pruned = pruned_model.linear1.weight + + assert expected.shape == pruned.shape + assert torch.isclose(expected, pruned, rtol=1e-05, atol=1e-07).all() + + def test_lstm_saliency_pruner_update_mask(self): + model = LSTMLinearModel( + input_dim=2, + hidden_dim=2, + output_dim=2, + num_layers=1, + ) + + manual_weights = torch.Tensor( + [[1, 1], [2, 2], [2, 2], [1, 1], [-1, -1], [-2, -2], [-2, -2], [-1, -1]] + ) + + with torch.no_grad(): + model.lstm.weight_ih_l0 = nn.Parameter(manual_weights) + model.lstm.weight_hh_l0 = nn.Parameter(torch.Tensor(manual_weights)) + model.lstm.bias_ih_l0 = nn.Parameter(manual_weights[:, 0]) + model.lstm.bias_hh_l0 = nn.Parameter(manual_weights[:, 0]) + + config = [ + {"tensor_fqn": "lstm.weight_ih_l0"}, + {"tensor_fqn": "lstm.weight_hh_l0"}, + ] + lstm_input = torch.ones((1, 2)) + fx_pruner = LSTMSaliencyPruner({"sparsity_level": 0.5}) + fx_pruner.prepare(model, config) + fx_pruner.enable_mask_update = True + fx_pruner.step() + + model.eval() + pruned_model = fx_pruner.prune() + pruned_model.eval() + + # make sure both models run + model(lstm_input) + pruned_model(lstm_input) + + # make sure lowest saliency rows are pruned + expected = torch.Tensor([[2, 2], [2, 2], [-2, -2], [-2, -2]]) + pruned = model.lstm.weight_ih_l0 + assert expected.shape == pruned.shape + assert torch.isclose(expected, pruned, rtol=1e-05, atol=1e-07).all() + + expected = torch.Tensor([[2], [2], [-2], [-2]]) + pruned = model.lstm.weight_hh_l0 + assert expected.shape == pruned.shape + assert torch.isclose(expected, pruned, rtol=1e-05, atol=1e-07).all() + + expected = torch.Tensor([2, 2, -2, -2]) + for pruned in [model.lstm.bias_ih_l0, model.lstm.bias_hh_l0]: + assert expected.shape == pruned.shape + assert torch.isclose(expected, pruned, rtol=1e-05, atol=1e-07).all() + + +class TestBaseStructuredSparsifier(TestCase): + def _check_pruner_prepared(self, model, pruner, device): + for config in pruner.groups: + module = config["module"] + assert module.weight.device.type == device.type + # Check mask exists + assert config["tensor_fqn"] in pruner.state + # Check parametrization exists and is correct + assert parametrize.is_parametrized(module) + assert hasattr(module, "parametrizations") + # Assume that this is the 1st/only parametrization + assert type(module.parametrizations.weight[0]) == FakeStructuredSparsity + + def _check_pruner_valid_before_step(self, model, pruner, device): + for config in pruner.groups: + modules = [] + if type(config["module"]) is tuple: + modules.extend(config["module"]) + else: + module = config["module"] + modules.append(module) + for module in modules: + assert module.weight.device.type == device.type + assert module.parametrizations.weight[0].mask.dtype == torch.bool + + def _check_pruner_valid_after_step(self, model, pruner, mask, device): + for config in pruner.groups: + modules = [] + if type(config["module"]) is tuple: + modules.extend(config["module"]) + else: + module = config["module"] + modules.append(module) + for module in modules: + assert module.weight.device.type == device.type + total = module.parametrizations.weight[0].mask.numel() + assert ( + module.parametrizations.weight[0].mask.count_nonzero() + == total - mask + ) + + def _test_constructor_on_device(self, model, device): + self.assertRaisesRegex( + TypeError, + "BaseStructuredSparsifier.*update_mask", + BaseStructuredSparsifier, + ) + model1 = copy.deepcopy(model).to(device) + pruner = SimplePruner(None) + pruner.prepare(model1, None) + pruner.enable_mask_update = True + for g in pruner.groups: + module = g["module"] + assert module.weight.device.type == device.type + assert len(pruner.groups) == 5 + pruner.step() + # Can instantiate the model with configs + model2 = copy.deepcopy(model).to(device) + pruner = SimplePruner({"test": 3}) + pruner.prepare(model2, [{"tensor_fqn": "seq.0.weight"}]) + assert len(pruner.groups) == 1 + assert pruner.groups[0]["module_fqn"] == "seq.0" + assert "test" in pruner.groups[0] + assert pruner.groups[0]["test"] == 3 + + def test_constructor(self): + model = SimpleLinear() + for device in DEVICES: + self._test_constructor_on_device(model, torch.device(device)) + + def _test_prepare_linear_on_device(self, model, device): + model = copy.deepcopy(model).to(device) + x = torch.ones(128, 7, device=device) + pruner = SimplePruner(None) + pruner.prepare(model, None) + self._check_pruner_prepared(model, pruner, device) + assert model(x).shape == (128, 10) + + def test_prepare_linear(self): + models = [ + SimpleLinear(), + LinearBias(), + LinearActivation(), + LinearActivationFunctional(), + ] # without and with bias + for device in DEVICES: + for model in models: + self._test_prepare_linear_on_device(model, torch.device(device)) + + def _test_prepare_conv2d_on_device(self, model, expected_shape, config, device): + x = torch.ones((1, 1, 28, 28), device=device) + pruner = SimplePruner(None) + pruner.prepare(model, config) + self._check_pruner_prepared(model, pruner, device) + assert model(x).shape == expected_shape + + def test_prepare_conv2d(self): + models = [ + SimpleConv2d(), + Conv2dBias(), + Conv2dActivation(), + Conv2dPadBias(), + Conv2dPool(), + ] + shapes = [ + (1, 52, 20, 20), + (1, 52, 18, 18), + (1, 52, 18, 18), + (1, 52, 24, 24), + (1, 52, 3, 3), + ] + configs = [None, None, None, None, None] + for device in DEVICES: + for model, shape, config in zip(models, shapes, configs): + model = model.to(device) + self._test_prepare_conv2d_on_device( + model, shape, config, torch.device(device) + ) + + def _test_step_linear_on_device(self, model, device): + model = model.to(device) + x = torch.ones(7, 7, device=device) + pruner = SimplePruner(None) + pruner.prepare(model, None) + pruner.enable_mask_update = True + self._check_pruner_valid_before_step(model, pruner, device) + pruner.step() + self._check_pruner_valid_after_step(model, pruner, 1, device) + + def test_step_linear(self): + models = [ + SimpleLinear(), + LinearBias(), + LinearActivation(), + LinearActivationFunctional(), + ] + for device in DEVICES: + for model in models: + self._test_step_linear_on_device(model, torch.device(device)) + + def _test_step_conv2d_on_device(self, model, expected_shape, config, device): + model = model.to(device) + x = torch.ones((1, 1, 28, 28), device=device) + pruner = SimplePruner(None) + pruner.prepare(model, config) + pruner.enable_mask_update = True + self._check_pruner_valid_before_step(model, pruner, device) + pruner.step() + self._check_pruner_valid_after_step(model, pruner, 1, device) + assert model(x).shape == expected_shape + + @skipIfTorchDynamo("TorchDynamo fails with unknown reason") + def test_step_conv2d(self): + models = [ + SimpleConv2d(), + Conv2dBias(), + Conv2dActivation(), + Conv2dPadBias(), + Conv2dPool(), + ] + shapes = [ + (1, 52, 20, 20), + (1, 52, 18, 18), + (1, 52, 18, 18), + (1, 52, 24, 24), + (1, 52, 3, 3), + ] + configs = [None, None, None, None, None] + for device in DEVICES: + for model, shape, config in zip(models, shapes, configs): + self._test_step_conv2d_on_device( + model, shape, config, torch.device(device) + ) + + def _check_pruner_pruned(self, model, pruner, device): + for config in pruner.groups: + module = config["module"] + assert not hasattr(module, "parametrizations") + assert not hasattr(module, "mask") + + def _test_linear_on_device( + self, model, config, expected_shape, device, also_prune_bias + ): + model = model.to(device) + model.eval() + num_original_params = sum(p.numel() for p in model.parameters()) + x = torch.ones(128, 7, device=device) + + pruner = ImplementedPruner({"prune_bias": also_prune_bias}) + pruner.prepare(model, config) + pruner.enable_mask_update = True + pruner.step() + + y_expected = model(x) + + assert y_expected.shape == (128, 10) + self._check_pruner_prepared(model, pruner, device) + + # Pruning step + pruned = pruner.prune() + y_pruned = pruned(x) + num_pruned_params = sum(p.numel() for p in pruned.parameters()) + + assert y_pruned.shape == expected_shape + self._check_pruner_pruned(model, pruner, device) + if y_pruned.shape == y_expected.shape: + assert torch.isclose(y_expected, y_pruned, rtol=1e-05, atol=1e-07).all() + assert num_pruned_params < num_original_params + + def test_prune_linear_linear(self): + r"""test pruning linear-> linear modules""" + configs, shapes = [], [] + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.1.weight"}, + {"tensor_fqn": "seq.2.weight"}, + ] + ) + shapes.append((128, 10)) + + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.1.weight"}, + {"tensor_fqn": "seq.2.weight"}, + {"tensor_fqn": "linear1.weight"}, + ] + ) + shapes.append((128, 10)) + + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.2.weight"}, + ] + ) + shapes.append((128, 10)) + for device in DEVICES: + for also_prune_bias in [True, False]: + for config, shape in zip(configs, shapes): + self._test_linear_on_device( + SimpleLinear(), + config, + shape, + torch.device(device), + also_prune_bias, + ) + + def test_prune_linear_bias_linear(self): + # linear(bias) -> linear(no bias) + configs, shapes = [], [] + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.1.weight"}, + ] + ) + shapes.append((128, 10)) + + # linear(bias) -> linear(bias) + configs.append( + [ + {"tensor_fqn": "seq.2.weight"}, + {"tensor_fqn": "seq.3.weight"}, + ] + ) + shapes.append((128, 10)) + + # linear(no bias) -> linear(bias) + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.1.weight"}, + {"tensor_fqn": "seq.2.weight"}, + ] + ) + shapes.append((128, 10)) + + for device in DEVICES: + for also_prune_bias in [True, False]: + for config, shape in zip(configs, shapes): + self._test_linear_on_device( + LinearBias(), + config, + shape, + torch.device(device), + also_prune_bias, + ) + + def test_prune_linear_activation_linear(self): + config = [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.2.weight"}, + {"tensor_fqn": "seq.4.weight"}, + {"tensor_fqn": "linear1.weight"}, + ] + shape = (128, 10) + + for device in DEVICES: + for also_prune_bias in [True, False]: + # test version with nn.Modules + self._test_linear_on_device( + LinearActivation(), + config, + shape, + torch.device(device), + also_prune_bias, + ) + # test functional version + self._test_linear_on_device( + LinearActivationFunctional(), + config, + shape, + torch.device(device), + also_prune_bias, + ) + + def _test_conv2d_on_device( + self, model, config, x, expected_shape, device, also_prune_bias + ): + model = model.to(device) + num_original_params = sum(p.numel() for p in model.parameters()) + model.eval() + + pruner = ImplementedPruner({"prune_bias": also_prune_bias}) + pruner.prepare(model, config) + pruner.enable_mask_update = True + pruner.step() + + y_expected = model(x) + assert y_expected.shape == expected_shape + + self._check_pruner_prepared(model, pruner, device) + + # Fusion step + pruned = pruner.prune() + y_pruned = pruned(x) + num_pruned_params = sum(p.numel() for p in pruned.parameters()) + + assert y_pruned.shape == expected_shape + self._check_pruner_pruned(model, pruner, device) + if y_pruned.shape == y_expected.shape: + # TODO This rtol is a little high, need to double check if something specific is causing this to fail + assert torch.isclose( + y_expected, + y_pruned, + rtol=1e-3, + atol=1e-3, + ).all(), f"fail for {type(model)}" + # only time this should be equal is when all layers have padding and we can't prune + assert num_pruned_params <= num_original_params + + def test_prune_conv2d_conv2d(self): + configs, shapes = [], [] + # all within sequential blocks + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + ] + ) + shapes.append((1, 52, 20, 20)) + # prune across sequential blocks + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.1.weight"}, + {"tensor_fqn": "conv2d1.weight"}, + ] + ) + shapes.append((1, 52, 20, 20)) + + for device in DEVICES: + x = torch.ones((1, 1, 28, 28), device=device) + for also_prune_bias in [True, False]: + for config, shape in zip(configs, shapes): + self._test_conv2d_on_device( + SimpleConv2d(), + config, + x, + shape, + torch.device(device), + also_prune_bias, + ) + + def test_prune_conv2d_bias_conv2d(self): + # Conv2d with Bias and no Activation + configs, shapes = [], [] + # conv2d(bias) -> conv2d(bias) + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.1.weight"}, + ] + ) + shapes.append((1, 52, 18, 18)) + + # conv2d(no bias) -> conv2d(bias) + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.1.weight"}, + {"tensor_fqn": "conv2d1.weight"}, + ] + ) + shapes.append((1, 52, 18, 18)) + + # conv2d(bias) -> conv2d(no bias) + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.1.weight"}, + {"tensor_fqn": "seq.2.weight"}, + ] + ) + shapes.append((1, 52, 18, 18)) + + for device in DEVICES: + x = torch.ones((1, 1, 28, 28), device=device) + for also_prune_bias in [True, False]: + for config, shape in zip(configs, shapes): + self._test_conv2d_on_device( + Conv2dBias(), + config, + x, + shape, + torch.device(device), + also_prune_bias, + ) + + def test_prune_conv2d_activation_conv2d(self): + # Conv2d with Activation and no Bias + configs, shapes = [], [] + + # conv2d(no bias) -> activation -> conv2d(no bias) + configs.append( + [ + {"tensor_fqn": "seq.4.weight"}, + ] + ) + shapes.append((1, 52, 18, 18)) + + # conv2d(bias) -> activation -> conv2d(bias) + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.2.weight"}, + ] + ) + shapes.append((1, 52, 18, 18)) + + # conv2d(bias) -> activation -> conv2d(no bias) + configs.append( + [ + {"tensor_fqn": "seq.2.weight"}, + {"tensor_fqn": "seq.4.weight"}, + ] + ) + shapes.append((1, 52, 18, 18)) + + # conv2d(no bias) -> activation -> conv2d(bias) + configs.append( + [ + {"tensor_fqn": "conv2d1.weight"}, + ] + ) + shapes.append((1, 52, 18, 18)) + + for device in DEVICES: + x = torch.ones((1, 1, 28, 28), device=device) + for also_prune_bias in [True, False]: + for config, shape in zip(configs, shapes): + self._test_conv2d_on_device( + Conv2dActivation(), + config, + x, + shape, + torch.device(device), + also_prune_bias, + ) + + def test_prune_conv2d_padding_conv2d(self): + # Conv2d with Padded layers after Bias layers + configs, shapes = [], [] + + # conv(padded, bias) -> conv(padded, bias) + configs.append( + [ + {"tensor_fqn": "seq.4.weight"}, + ] + ) + shapes.append((1, 52, 24, 24)) + + # conv(no bias, no pad) -> conv(padded, bias) + configs.append( + [ + {"tensor_fqn": "seq.2.weight"}, + ] + ) + shapes.append((1, 52, 24, 24)) + + # conv(padded, bias) -> conv ( no bias ,no pad) + configs.append( + [ + {"tensor_fqn": "seq.0.weight"}, + ] + ) + shapes.append((1, 52, 24, 24)) + # conv(pad, bias) -> conv(no pad, bias) + configs.append( + [ + {"tensor_fqn": "seq.6.weight"}, + ] + ) + shapes.append((1, 52, 24, 24)) + # conv(no pad, bias) -> conv(pad, bias) + configs.append( + [ + {"tensor_fqn": "seq.8.weight"}, + ] + ) + shapes.append((1, 52, 24, 24)) + + for device in DEVICES: + x = torch.ones((1, 1, 28, 28), device=device) + for also_prune_bias in [True, False]: + for config, shape in zip(configs, shapes): + self._test_conv2d_on_device( + Conv2dPadBias(), + config, + x, + shape, + torch.device(device), + also_prune_bias, + ) + + def test_prune_conv2d_pool_conv2d(self): + # Conv2d with Pooling layers + config = [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.3.weight"}, + {"tensor_fqn": "conv2d1.weight"}, + {"tensor_fqn": "conv2d2.weight"}, + ] + shape = (1, 52, 3, 3) + + for device in DEVICES: + x = torch.ones((1, 1, 28, 28), device=device) + for also_prune_bias in [True, False]: + self._test_conv2d_on_device( + Conv2dPool(), + config, + x, + shape, + torch.device(device), + also_prune_bias, + ) + + @skipIfTorchDynamo("TorchDynamo fails with unknown reason") + def test_complex_conv2d(self): + """Test fusion for models that contain Conv2d & Linear modules. + Currently supports: Conv2d-Pool2d-Flatten-Linear, Skip-add""" + config = [ + {"tensor_fqn": "seq.0.weight"}, + {"tensor_fqn": "seq.3.weight"}, + {"tensor_fqn": "conv2d1.weight"}, + {"tensor_fqn": "conv2d2.weight"}, + ] + shape = (1, 13) + + for device in DEVICES: + x = torch.ones((1, 1, 28, 28), device=device) + for also_prune_bias in [True, False]: + self._test_conv2d_on_device( + Conv2dPoolFlattenFunctional(), + config, + x, + shape, + torch.device(device), + also_prune_bias, + ) + self._test_conv2d_on_device( + Conv2dPoolFlatten(), + config, + x, + shape, + torch.device(device), + also_prune_bias, + ) + + def test_prune_lstm_linear_multiple_layer(self): + """ + Test fusion support for LSTM(multi-layer) -> Linear + """ + model = LSTMLinearModel( + input_dim=8, + hidden_dim=8, + output_dim=8, + num_layers=2, + ) + + config = [ + {"tensor_fqn": "lstm.weight_ih_l0"}, + {"tensor_fqn": "lstm.weight_hh_l0"}, + {"tensor_fqn": "lstm.weight_ih_l1"}, + {"tensor_fqn": "lstm.weight_hh_l1"}, + ] + + lstm_input = torch.ones((1, 8)) + fx_pruner = BottomHalfLSTMPruner({"sparsity_level": 0.5}) + fx_pruner.prepare(model, config) + + fx_pruner.enable_mask_update = True + fx_pruner.step() + + model.eval() + _, _ = model(lstm_input) + pruned_model = fx_pruner.prune() + pruned_model.eval() + _, _ = pruned_model(lstm_input) + + expected_params = dict(model.named_parameters()) + for name, param in model.named_parameters(): + assert name in expected_params + # We cannot compare y_expected == y_pruned, as the 0 elements mess up the numerics + # Instead we check that the weights of the new LSTM are a subset of the weights of + # the old LSTM + assert rows_are_subset(param, expected_params[name]) + del expected_params[name] + + # assert we haven't deleted any keys + assert len(expected_params) == 0 + + def test_prune_lstm_linear_single_layer(self): + """ + Test fusion support for LSTM (single-layer) -> Linear + """ + model = LSTMLinearModel( + input_dim=8, + hidden_dim=8, + output_dim=8, + num_layers=1, + ) + + config = [ + {"tensor_fqn": "lstm.weight_ih_l0"}, + {"tensor_fqn": "lstm.weight_hh_l0"}, + ] + + lstm_input = torch.ones((1, 8)) + fx_pruner = BottomHalfLSTMPruner({"sparsity_level": 0.5}) + fx_pruner.prepare(model, config) + fx_pruner.enable_mask_update = True + fx_pruner.step() + model.eval() + + out_expected, lstm_out_expected = model(lstm_input) + pruned_model = fx_pruner.prune() + pruned_model.eval() + out_pruned, lstm_out_pruned = pruned_model(lstm_input) + r, c = lstm_out_expected.size() + + # We cannot check that y_expected == y_pruned as usual because + # zeros vs. missing elements yield different numerical results. + # Instead that we check that the pruned elements are the first half of the results + # since we are using a BottomHalfLSTMPruner + assert torch.isclose( + lstm_out_expected[:, : c // 2], lstm_out_pruned, rtol=1e-05, atol=1e-07 + ).all() + # also check that output of linear is the same shape, this means we've resized + # linear columns correctly. + assert out_expected.shape == out_pruned.shape + + def test_prune_lstm_layernorm_linear_multiple_layer(self): + """ + Test fusion support for LSTM(multi-layer) -> Linear + """ + model = LSTMLayerNormLinearModel( + input_dim=8, + output_dim=8, + hidden_dim=8, + num_layers=2, + ) + + config = [ + {"tensor_fqn": "lstm.weight_ih_l0"}, + {"tensor_fqn": "lstm.weight_hh_l0"}, + {"tensor_fqn": "lstm.weight_ih_l1"}, + {"tensor_fqn": "lstm.weight_hh_l1"}, + ] + + lstm_input = torch.ones((1, 8)) + fx_pruner = BottomHalfLSTMPruner({"sparsity_level": 0.5}) + fx_pruner.prepare(model, config) + + fx_pruner.enable_mask_update = True + fx_pruner.step() + + model.eval() + _, _ = model(lstm_input) + pruned_model = fx_pruner.prune() + pruned_model.eval() + _, _ = pruned_model(lstm_input) + + expected_params = dict(model.named_parameters()) + for name, param in model.named_parameters(): + assert name in expected_params + # We cannot compare y_expected == y_pruned, as the 0 elements mess up the numerics + # Instead we check that the weights of the new LSTM are a subset of the weights of + # the old LSTM + assert rows_are_subset(param, expected_params[name]) + del expected_params[name] + + # assert we haven't deleted any keys + assert len(expected_params) == 0 + + def test_prune_lstm_layernorm_linear_single_layer(self): + """ + Test fusion support for LSTM (single-layer) -> Linear + """ + model = LSTMLinearModel( + input_dim=8, + hidden_dim=8, + output_dim=8, + num_layers=1, + ) + + config = [ + {"tensor_fqn": "lstm.weight_ih_l0"}, + {"tensor_fqn": "lstm.weight_hh_l0"}, + ] + + lstm_input = torch.ones((1, 8)) + fx_pruner = BottomHalfLSTMPruner({"sparsity_level": 0.5}) + fx_pruner.prepare(model, config) + fx_pruner.enable_mask_update = True + fx_pruner.step() + model.eval() + + out_expected, lstm_out_expected = model(lstm_input) + pruned_model = fx_pruner.prune() + pruned_model.eval() + out_pruned, lstm_out_pruned = pruned_model(lstm_input) + r, c = lstm_out_expected.size() + + # We cannot check that y_expected == y_pruned as usual because + # zeros vs. missing elements yield different numerical results. + # Instead that we check that the pruned elements are the first half of the results + # since we are using a BottomHalfLSTMPruner + assert torch.isclose( + lstm_out_expected[:, : c // 2], lstm_out_pruned, rtol=1e-05, atol=1e-07 + ).all() + # also check that output of linear is the same shape, this means we've resized + # linear columns correctly. + assert out_expected.shape == out_pruned.shape + + +class TestFPGMPruner(TestCase): + """ + Test case for the implementation of paper: + `Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration `_. + """ + + class SimpleConvFPGM(nn.Module): + def __init__(self): + super().__init__() + self.conv2d1 = nn.Conv2d( + in_channels=1, out_channels=3, kernel_size=3, padding=1, bias=False + ) + # Manually set the filter weights for demonstration purposes + """ + Three filters' weight are manually set to values 3.0, 2.0, and 0.1. + Different from the norm-based decision that prunes filter with value 0.1, + FPGM will prune the one with value 2.0. + """ + weights = torch.tensor([3.0, 2.0, 0.1]) # Weight weights for each filter + weights = weights[:, None, None, None] # broadcasting + self.conv2d1.weight.data.copy_( + torch.ones(self.conv2d1.weight.shape) * weights + ) + + # Second Convolutional Layer + self.conv2d2 = nn.Conv2d( + in_channels=3, out_channels=4, kernel_size=3, padding=1, bias=False + ) + weights = torch.tensor([6.0, 7.0, 0.4, 0.5]) + weights = weights[:, None, None, None] + self.conv2d2.weight.data.copy_( + torch.ones(self.conv2d2.weight.shape) * weights + ) + + def forward(self, x): + x = self.conv2d1(x) + x = self.conv2d2(x) + return x + + def test_compute_distance(self, device="cpu"): + """Test the distance computation function""" + model = TestFPGMPruner.SimpleConvFPGM().to(device) + pruner = FPGMPruner(0.3) + dist_conv1 = pruner._compute_distance(model.conv2d1.weight) + + # compute the distance matrix using torch.cdist + flattened_filters = torch.Tensor( + [ + [ + 3.0000, + 3.0000, + 3.0000, + 3.0000, + 3.0000, + 3.0000, + 3.0000, + 3.0000, + 3.0000, + ], + [ + 2.0000, + 2.0000, + 2.0000, + 2.0000, + 2.0000, + 2.0000, + 2.0000, + 2.0000, + 2.0000, + ], + [ + 0.1000, + 0.1000, + 0.1000, + 0.1000, + 0.1000, + 0.1000, + 0.1000, + 0.1000, + 0.1000, + ], + ] + ) + + """ + Expected distance matrix should have the following values: + [0.0000, 3.0000, 8.7000], + [3.0000, 0.0000, 5.7000], + [8.7000, 5.7000, 0.0000], + the distance should therefore be: + [11.7000, 8.7000, 14.4000] + """ + expected_dist_matrix_conv1 = torch.cdist( + flattened_filters, flattened_filters, p=2 + ) + expected_dist_conv1 = torch.sum(torch.abs(expected_dist_matrix_conv1), 1) + assert torch.isclose( + dist_conv1, expected_dist_conv1, rtol=1e-05, atol=1e-07 + ).all() + + def _test_update_mask_on_single_layer(self, expected_conv1, device): + """Test that pruning is conducted based on the pair-wise distance measurement instead of absolute norm value""" + # test pruning with one layer of conv2d + model = TestFPGMPruner.SimpleConvFPGM().to(device) + x = torch.ones((1, 1, 32, 32), device=device) + pruner = FPGMPruner(0.3) + config = [{"tensor_fqn": "conv2d1.weight"}] + pruner.prepare(model, config) + pruner.enable_mask_update = True + pruner.step() + assert ( + pruner.groups[0]["module"].parametrizations.weight[0].mask[-1].item() + is not False + ), "do not prune the least-norm filter" + + # fusion step + pruned_model = pruner.prune() + + pruned_y = pruned_model(x) + # assert shapes + expected_conv1 = expected_conv1.to(device) + assert pruned_y.shape == (1, 4, 32, 32) + assert pruned_model.conv2d1.weight.shape == expected_conv1.shape + assert pruned_model.conv2d2.weight.shape == ( + 4, + 2, + 3, + 3, + ), "conv2d2 should have input channel pruned" + # assert value + assert torch.isclose( + pruned_model.conv2d1.weight, expected_conv1, rtol=1e-05, atol=1e-07 + ).all() + + def _test_update_mask_on_multiple_layer( + self, expected_conv1, expected_conv2, device + ): + # the second setting + model = TestFPGMPruner.SimpleConvFPGM().to(device) + x = torch.ones((1, 1, 32, 32), device=device) + pruner = FPGMPruner(0.3) + config = [ + {"tensor_fqn": "conv2d1.weight"}, + {"tensor_fqn": "conv2d2.weight", "sparsity_level": 0.5}, + ] + pruner.prepare(model, config) + pruner.enable_mask_update = True + pruner.step() + # Get the masks for the two least-norm filters + mask1 = pruner.groups[0]["module"].parametrizations.weight[0].mask[-1] + mask2 = pruner.groups[0]["module"].parametrizations.weight[0].mask[-2] + # Check if either of the least-norm filters is not pruned + assert ( + mask1.item() is not False or mask2.item() is not False + ), "Do not prune all least-norm filters" + + # fusion step + pruned_model = pruner.prune() + pruned_y = pruned_model(x) + # assert shapes + expected_conv1 = expected_conv1.to(device) + expected_conv2 = expected_conv2.to(device) + assert pruned_y.shape == (1, 2, 32, 32) + assert pruned_model.conv2d1.weight.shape == expected_conv1.shape + assert pruned_model.conv2d2.weight.shape == expected_conv2.shape + # assert values + assert torch.isclose( + pruned_model.conv2d1.weight, expected_conv1, rtol=1e-05, atol=1e-07 + ).all() + assert torch.isclose( + pruned_model.conv2d2.weight, expected_conv2, rtol=1e-05, atol=1e-07 + ).all() + + def test_update_mask(self): + weights = torch.tensor([3.0, 0.1]) + expected_conv1 = torch.ones((2, 1, 3, 3)) * weights[:, None, None, None] + + weights = torch.tensor([7.0, 0.4]) + expected_conv2 = torch.ones((2, 2, 3, 3)) * weights[:, None, None, None] + + for device in DEVICES: + self._test_update_mask_on_single_layer(expected_conv1, device) + self._test_update_mask_on_multiple_layer( + expected_conv1, expected_conv2, device + ) + +if __name__ == "__main__": + unittest.main() diff --git a/torchao/sparsity/prototype/__init__.py b/torchao/sparsity/prototype/__init__.py new file mode 100644 index 0000000000..350a310501 --- /dev/null +++ b/torchao/sparsity/prototype/__init__.py @@ -0,0 +1,15 @@ +# Sparsifier +from torchao.sparsity.prototype.sparsifier.base_sparsifier import BaseSparsifier +from torchao.sparsity.prototype.sparsifier.weight_norm_sparsifier import WeightNormSparsifier +from torchao.sparsity.prototype.sparsifier.nearly_diagonal_sparsifier import NearlyDiagonalSparsifier + +# Scheduler +from torchao.sparsity.prototype.scheduler.base_scheduler import BaseScheduler +from torchao.sparsity.prototype.scheduler.lambda_scheduler import LambdaSL +from torchao.sparsity.prototype.scheduler.cubic_scheduler import CubicSL + +# Parametrizations +from torchao.sparsity.prototype.sparsifier.utils import FakeSparsity +from torchao.sparsity.prototype.sparsifier.utils import module_to_fqn +from torchao.sparsity.prototype.sparsifier.utils import fqn_to_module +from torchao.sparsity.prototype.sparsifier.utils import get_arg_info_from_tensor_fqn diff --git a/torchao/sparsity/prototype/pruner/FPGM_pruner.py b/torchao/sparsity/prototype/pruner/FPGM_pruner.py new file mode 100644 index 0000000000..d8c3d20052 --- /dev/null +++ b/torchao/sparsity/prototype/pruner/FPGM_pruner.py @@ -0,0 +1,93 @@ +from typing import Callable, Optional, Union + +import torch + +from .base_structured_sparsifier import BaseStructuredSparsifier + +__all__ = ["FPGMPruner"] + + +class FPGMPruner(BaseStructuredSparsifier): + r"""Filter Pruning via Geometric Median (FPGM) Structured Pruner + This sparsifier prune fliter (row) in a tensor according to distances among filters according to + `Filter Pruning via Geometric Median for Deep Convolutional Neural Networks Acceleration `_. + + This sparsifier is controlled by three variables: + 1. `sparsity_level` defines the number of filters (rows) that are zeroed-out. + 2. `dist` defines the distance measurement type. Default: 3 (L2 distance). + Available options are: [1, 2, (custom callable distance function)]. + + Note:: + Inputs should be a 4D convolutional tensor of shape (N, C, H, W). + - N: output channels size + - C: input channels size + - H: height of kernel + - W: width of kernel + """ + + def __init__( + self, sparsity_level: float = 0.5, dist: Optional[Union[Callable, int]] = None + ): + defaults = { + "sparsity_level": sparsity_level, + } + + if dist is None: + dist = 2 + + if callable(dist): + self.dist_fn = dist + elif dist == 1: + self.dist_fn = lambda x: torch.cdist(x, x, p=1) + elif dist == 2: + self.dist_fn = lambda x: torch.cdist(x, x, p=2) + else: + raise NotImplementedError("Distance function is not yet implemented.") + super().__init__(defaults=defaults) + + def _compute_distance(self, t): + r"""Compute distance across all entries in tensor `t` along all dimension + except for the one identified by dim. + Args: + t (torch.Tensor): tensor representing the parameter to prune + Returns: + distance (torch.Tensor): distance computed across filtters + """ + dim = 0 # prune filter (row) + + size = t.size(dim) + slc = [slice(None)] * t.dim() + + # flatten the tensor along the dimension + t_flatten = [ + t[tuple(slc[:dim] + [slice(i, i + 1)] + slc[dim + 1 :])].reshape(-1) + for i in range(size) + ] + t_flatten = torch.stack(t_flatten) + + # distance measurement + dist_matrix = self.dist_fn(t_flatten) + + # more similar with other filter indicates large in the sum of row + distance = torch.sum(torch.abs(dist_matrix), 1) + + return distance + + def update_mask(self, module, tensor_name, sparsity_level, **kwargs): + tensor_weight = getattr(module, tensor_name) + mask = getattr(module.parametrizations, tensor_name)[0].mask + + if sparsity_level <= 0: + mask.data = torch.ones_like(mask).bool() + elif sparsity_level >= 1.0: + mask.data = torch.zeros_like(mask).bool() + else: + distance = self._compute_distance(tensor_weight) + + tensor_size = tensor_weight.shape[0] # prune filter (row) + nparams_toprune = round(sparsity_level * tensor_size) + nparams_toprune = min( + max(nparams_toprune, 0), tensor_size + ) # clamp to [0, tensor_size] + topk = torch.topk(distance, k=nparams_toprune, largest=False) + mask[topk.indices] = False diff --git a/torchao/sparsity/prototype/pruner/README.md b/torchao/sparsity/prototype/pruner/README.md new file mode 100644 index 0000000000..026fd33b28 --- /dev/null +++ b/torchao/sparsity/prototype/pruner/README.md @@ -0,0 +1,251 @@ +# Structured Pruning + +## Intro / Motivation + +**Pruning** is the technique of removing parameters from a model to reduce the computational cost. The goal of pruning is to improve the performance of the model while maintaining it's accuracy. + +### Unstructured vs. Structured Pruning +One way to do this is to consider each parameter individually. This gives us the greatest granularity when pruning and is called **unstructured pruning**. + +For example, consider a simple linear regression model that is parametrized by a weight tensor W. + +``` +W = [[1 2 3] + [4 5 6] + [7 1 9]] +``` + +We can prune the lowest absolute value elements in W in order to preserve as much information as possible. +Below we've removed three parameters from W. + +``` +W_pruned = [[0 0 3] + [4 5 6] + [7 0 9]] +``` + +Unfortunately, zeroing out parameters does not offer a speed-up to the model out of the box. We need custom sparse kernels that are designed to take advantage of sparsity to speed up computation. For more information about unstructured pruning check out our tutorials [here](). + +However, if we zero out a row of parameters at a time instead of a single parameter, we can speed up computation by resizing the weight matrix. This is called **structured pruning** and is what this folder implements. + +``` +W_pruned = [[0 0 0] = [[4, 5, 6], + [4 5 6] [7, 1, 9]] + [7 1 9]] + +``` +### Weight Resizing + +However, since the pruned weight tensor has a different shape than the original weight tensor, subsequent operations will cause an error due to this shape mismatch. We need to remove both the weights of the original weight tensor and the columns of subsequent tensors that correspond to the pruned rows. + +You can see an example of this below for a model containing two linear layers, one parametrized by W and another by U + +![](./images/prune_5.png) + +By removing a row from U and a column from W, we can avoid a shape mismatch. + +![](./images/prune_6.png) + + +One benefit of **structured pruning** is that it uses the same dense kernels that the original model uses, and does not rely on custom sparse kernel like **unstructured pruning**. +However, structured pruning degrades accuracy more than unstructured pruning because of the lack of granularity, so it is not always the right choice. + +Generally the structured pruning process looks something like this: +1. Define what layers in the model you want to structured prune. +2. Evaluate the importance of each row in each layer in the model. +3. Remove rows by resizing the weight matrices of each layer +4. Stop if target sparsity level is met. + +The accuracy degradation of pruning can be quite large initially. Once we are satisfied with our pruned tensor, we usually retrain the model after pruning in order to restore some of this accuracy loss. + +## Quickstart Guide + +**Your model must be FX symbolically traceable**. + +You can test this with the following bit of code: + +```python +from torch.fx import symbolic_trace +model = MyModel() +symbolic_trace(model) +``` + +Using `torch.fx` we can get a compute graph of our model. Each operation (add, multiply, ReLU) is a node in the graph, and the order of operations is defined by the edges of the graph. + +Structured pruning works by traversing this graph and looking for specific **patterns**, which are just a specific sequence of operations. + +Each pattern is tied to a pruning function, which is responsible for structured pruning the graph nodes that match the pattern. + +The above [example](#weight-resizing) of two linear layers would match against a `(nn.Linear, nn.Linear)` pattern. This is how we identify the rows to remove and the columns of the subsequent layer. + +Structured pruning also works on other patterns other than two adjacent Linear layers, + +- linear -> linear +- linear -> activation -> linear +- conv2d -> conv2d +- conv2d -> activation -> conv2d +- conv2d -> activation -> pool -> conv2d +- conv2d -> pool -> activation -> conv2d +- conv2d -> adaptive pool -> flatten -> linear + +A complete set of the patterns we support can be found [here](https://github.com/pytorch/pytorch/blob/master/torch/ao/pruning/_experimental/pruner/base_structured_sparsifier.py#L85). + +If you are looking to prune a currently unsupported pattern, you can do this by modifying the pattern dict that we provide to the pruner, see [here](#writing-custom-patterns-and-pruning-functions-for-structured-pruning). Feel free to open a PR to add in new patterns. + + +Here is an example script that will prune away 50% of the rows for all the linear layers in the model, based on the saliency of each row. +```python +from torch.ao.pruning._experimental.pruner import SaliencyPruner + +# Define model +class Model(nn.Module): + def __init__(self): + super().__init__() + self.seq = nn.Sequential( + nn.Linear(700, 500, bias=True), + nn.ReLU(), + nn.Linear(500, 800, bias=False), + nn.ReLU(), + nn.Linear(800, 600, bias=True), + nn.ReLU(), + ) + self.linear = nn.Linear(600, 4, bias=False) + + def forward(self, x): + x = self.seq(x) + x = self.linear(x) + return x + +# Define pruning_config, which specifies which tensors you wish to prune. +# The SaliencyPruner also needs a sparsity_level parameter to specify what % of rows to prune. +pruning_config = [ + {"tensor_fqn": "seq.0.weight", "sparsity_level": 0.5}, + {"tensor_fqn": "seq.2.weight", "sparsity_level": 0.5}, + {"tensor_fqn": "seq.4.weight", "sparsity_level": 0.5}, + {"tensor_fqn": "linear.weight", "sparsity_level": 0.5}, +] + +original = Model() +# define defaults +# for structured pruning, we also prune biases by default. +defaults = {"prune_bias": True} +# any configs passed in here are defaults that are propagated +# Your selection criteria is decided by which pruner you use +pruner = SaliencyPruner(defaults, patterns=patterns) + +# Next we call `prepare`, which will attach `FakeStructuredSparsity` parameterizations +# to the tensors specified in the config. These parameterizations will zero out +# the appropriate weights in order to make the model behave as if it has been pruned. +pruner.prepare(original, sparse_config) + +# take one pruning step. This will update the masks +pruner.enable_mask_update = True +pruner.step() + +# pruner.prune() will find patterns and apply that patterns pruning function to it's matching nodes. +# The output of pruner.prune() is a model with resized weights and the masks / parametrizations removed. +pruned_model = pruner.prune() +``` +Afterwards, by printing the name and size of each parameter in our model, we can see that it has been pruned. + +``` +# original model +Parameter name | Shape | # of elements +--------------------|-----------------|--------------- +seq.0.weight | 500, 700 | 350000 +seq.0.bias | 500 | 500 +seq.2.weight | 800, 500 | 400000 +seq.4.weight | 600, 800 | 480000 +seq.4.bias | 600 | 600 +linear.weight | 4, 600 | 2400 +=== Total Number of Parameters: 1233500 === +``` +``` +# pruned model +Parameter name | Shape | # of elements +--------------------|-----------------|--------------- +seq.0.weight | 250, 700 | 175000 +seq.0.bias | 250 | 250 +seq.2.weight | 400, 250 | 100000 +seq.4.weight | 300, 400 | 120000 +seq.4.bias | 300 | 300 +linear.weight | 2, 300 | 600 +=== Total Number of Parameters: 396150 === +``` + +Although we pruned 50% of the rows, the total number of parameters is 25% of the original model. + +Since we remove both the rows of a weight tensor and the columns of the subsequent tensor. The total number of parameters is roughly (1-0.5)* (1-0.5) = 0.25 of the original number of parameters. + +## Advanced Tutorial + +### Pruning Config + +To specify the layers to prune we just need the fully qualified name (FQN) of the tensor you are looking to prune in the module. +You can get the FQN of a tensor by printing out `model.named_parameters()`. + +To prune multiple layers, we just append entries to the pruning config. +**tensor_fqn** is the only required key in the pruning config. You can pass additional information in the config, for example the sparsity level you want to prune to by adding a key to the config. You can then access this additional information when you update the masks. + +### Implementing a Pruner + +If you want to prune weights using a different pruning criteria than saliency, you'll need to implement your own pruner. + +To do this, we need to extend a `BaseStructuredSparsifier` with a custom `update_mask` function. + +This `update_mask` function contains the user logic for picking what weights to prune. + +One common pruning criteria is to use the **saliency** of a row, which is defined as the sum of all the L1 norms of the weights in the row. +The idea is to remove the weights that are small, since they wouldn't contribute much to the final prediction. + +Below we can see an implemented Saliency Pruner + +```python +class SaliencyPruner(BaseStructuredSparsifier): + """ + Prune filters based on the saliency + The saliency for a filter is given by the sum of the L1 norms of all of its weights + """ + + def update_mask(self, module, tensor_name, **kwargs): + # tensor_name will give you the FQN, all other keys in pruning config are present in kwargs + weights = getattr(module, tensor_name) + mask = getattr(module.parametrizations, tensor_name)[0].mask + + # use negative weights so we can use topk (we prune out the smallest) + saliency = -weights.norm(dim=tuple(range(1, weights.dim())), p=1) + num_to_pick = int(len(mask) * kwargs["sparsity_level"]) + prune = saliency.topk(num_to_pick).indices + + # Set the mask to be false for the rows we want to prune + mask.data[prune] = False + +``` + +### Writing Custom Patterns and Pruning Functions for Structured Pruning +If you're working with linear/conv2d layers, it's very probable that you just need to add an entry to the pattern dict mapping your pattern to an existing prune_function. + +This is because there are many modules, for example **pooling** that behave the same way and do not need to be modified by the pruning code. + +```python +from torch.ao.pruning._experimental.pruner.prune_functions import prune_conv2d_activation_conv2d + +def prune_conv2d_pool_activation_conv2d( + c1: nn.Conv2d, + pool: nn.Module, + activation: Optional[Callable[[Tensor], Tensor]], + c2: nn.Conv2d, +) -> None: + prune_conv2d_activation_conv2d(c1, activation, c2) + +# note how the pattern defined in the key will be passed to the pruning function as args +my_patterns = {(nn.Conv2d, nn.MaxPool2d, nn.ReLU, nn.Conv2d): prune_conv2d_activation_conv2d} + +pruning_patterns = _get_default_structured_pruning_patterns() +pruning_patterns.update(my_patterns) + +pruner = SaliencyPruner({}, patterns=pruning_patterns) +``` +However, there are also modules like batch norm, which will not work properly without being pruned as well. In this instance, you would need to write a custom pruning function in order to handle that logic properly. + +You can see the implemented pruning functions [here](https://github.com/pytorch/pytorch/blob/master/torch/ao/pruning/_experimental/pruner/prune_functions.py) for examples. Please feel free to open a PR so we get a complete set of the patterns and pruning functions. diff --git a/torchao/sparsity/prototype/pruner/__init__.py b/torchao/sparsity/prototype/pruner/__init__.py new file mode 100644 index 0000000000..6f017aa9e2 --- /dev/null +++ b/torchao/sparsity/prototype/pruner/__init__.py @@ -0,0 +1,8 @@ +from .base_structured_sparsifier import BaseStructuredSparsifier +from .parametrization import ( + FakeStructuredSparsity, + BiasHook, +) +from .saliency_pruner import SaliencyPruner +from .lstm_saliency_pruner import LSTMSaliencyPruner +from .FPGM_pruner import FPGMPruner diff --git a/torchao/sparsity/prototype/pruner/base_structured_sparsifier.py b/torchao/sparsity/prototype/pruner/base_structured_sparsifier.py new file mode 100644 index 0000000000..a1a34b77f8 --- /dev/null +++ b/torchao/sparsity/prototype/pruner/base_structured_sparsifier.py @@ -0,0 +1,310 @@ +from itertools import chain +from operator import getitem +import torch +import torch.nn.functional as F +from torch import nn +from torch.fx import symbolic_trace +from torch.nn.utils import parametrize +from typing import Type, Set, Dict, Callable, Tuple, Optional, Union + +from torchao.sparsity.prototype import BaseSparsifier +from .parametrization import FakeStructuredSparsity, BiasHook, module_contains_param +from .match_utils import apply_match, MatchAllNode +from .prune_functions import ( + prune_linear, + prune_linear_linear, + prune_linear_activation_linear, + prune_conv2d, + prune_conv2d_conv2d, + prune_conv2d_activation_conv2d, + prune_conv2d_activation_pool_conv2d, + prune_conv2d_pool_activation_conv2d, + prune_conv2d_pool_flatten_linear, + prune_lstm_output_linear, + prune_lstm_output_layernorm_linear, +) + + +def _get_supported_structured_pruning_modules(): + SUPPORTED_STRUCTURED_PRUNING_MODULES = { # added to config if None given + nn.Linear, + nn.Conv2d, + nn.LSTM, + } + return SUPPORTED_STRUCTURED_PRUNING_MODULES + + +def _get_supported_activation_functions(): + SUPPORTED_ACTIVATION_FUNCTIONS = { + F.relu, + F.rrelu, + F.hardtanh, + F.relu6, + F.sigmoid, + F.hardsigmoid, + F.tanh, + F.silu, + F.mish, + F.hardswish, + F.elu, + F.celu, + F.selu, + F.hardshrink, + F.leaky_relu, + F.logsigmoid, + F.softplus, + F.prelu, + F.softsign, + F.tanhshrink, + F.gelu, + } + return SUPPORTED_ACTIVATION_FUNCTIONS + + +def _get_supported_activation_modules(): + SUPPORTED_ACTIVATION_MODULES = { + nn.ReLU, + nn.RReLU, + nn.Hardtanh, + nn.ReLU6, + nn.Sigmoid, + nn.Hardsigmoid, + nn.Tanh, + nn.SiLU, + nn.Mish, + nn.Hardswish, + nn.ELU, + nn.CELU, + nn.SELU, + nn.Hardshrink, + nn.LeakyReLU, + nn.LogSigmoid, + nn.Softplus, + nn.PReLU, + nn.Softsign, + nn.Tanhshrink, + nn.GELU, + } + return SUPPORTED_ACTIVATION_MODULES + + +def _get_default_structured_pruning_patterns() -> Dict[ + Tuple[Union[Type[nn.Module], Callable, MatchAllNode, str], ...], + Callable[..., None], +]: + """ + Returns the patterns for conv2d / linear conversion for each element in the activation functions/modules defined above. + """ + patterns: Dict[ + Tuple[Union[Type[nn.Module], Callable, MatchAllNode, str], ...], + Callable[..., None], + ] = { + # linear -> linear + (nn.Linear, "output"): prune_linear, + (nn.Linear, nn.Linear): prune_linear_linear, + # conv2d -> conv2d + (nn.Conv2d, "output"): prune_conv2d, + (nn.Conv2d, nn.Conv2d): prune_conv2d_conv2d, + # TODO LSTM Structured pruning does not support returned state currently. + # Should find a way to explicitly match getitem(0) instead of getitem. + # This will also require changing the pruning function. + # lstm -> getitem(0) -> linear + (nn.LSTM, getitem, nn.Linear): prune_lstm_output_linear, + # lstm -> getitem(0) -> layernorm -> linear + (nn.LSTM, getitem, nn.LayerNorm, nn.Linear): prune_lstm_output_layernorm_linear, + } + + for activation in chain( + _get_supported_activation_functions(), _get_supported_activation_modules() + ): + patterns.update( + { + # linear -> activation -> linear + (nn.Linear, activation, nn.Linear): prune_linear_activation_linear, + # conv2d -> activation -> conv2d + (nn.Conv2d, activation, nn.Conv2d): prune_conv2d_activation_conv2d, + # conv2d -> activation -> pool -> conv2d + ( + nn.Conv2d, + activation, + nn.AvgPool2d, + nn.Conv2d, + ): prune_conv2d_activation_pool_conv2d, + ( + nn.Conv2d, + activation, + F.avg_pool2d, + nn.Conv2d, + ): prune_conv2d_activation_pool_conv2d, + ( + nn.Conv2d, + activation, + nn.MaxPool2d, + nn.Conv2d, + ): prune_conv2d_activation_pool_conv2d, + ( + nn.Conv2d, + activation, + F.max_pool2d, + nn.Conv2d, + ): prune_conv2d_activation_pool_conv2d, + # conv2d -> pool -> activation -> conv2d + ( + nn.Conv2d, + nn.AvgPool2d, + activation, + nn.Conv2d, + ): prune_conv2d_pool_activation_conv2d, + ( + nn.Conv2d, + F.avg_pool2d, + activation, + nn.Conv2d, + ): prune_conv2d_pool_activation_conv2d, + ( + nn.Conv2d, + nn.MaxPool2d, + activation, + nn.Conv2d, + ): prune_conv2d_pool_activation_conv2d, + ( + nn.Conv2d, + F.max_pool2d, + activation, + nn.Conv2d, + ): prune_conv2d_pool_activation_conv2d, + # conv2d -> adaptive pool -> flatten -> linear + ( + nn.Conv2d, + nn.AdaptiveAvgPool2d, + nn.Flatten, + nn.Linear, + ): prune_conv2d_pool_flatten_linear, + ( + nn.Conv2d, + nn.AdaptiveAvgPool2d, + torch.flatten, + nn.Linear, + ): prune_conv2d_pool_flatten_linear, + ( + nn.Conv2d, + nn.AdaptiveMaxPool2d, + nn.Flatten, + nn.Linear, + ): prune_conv2d_pool_flatten_linear, + ( + nn.Conv2d, + nn.AdaptiveMaxPool2d, + torch.flatten, + nn.Linear, + ): prune_conv2d_pool_flatten_linear, + } + ) + return patterns + + +class BaseStructuredSparsifier(BaseSparsifier): + r"""Base class for structured pruning. + + Abstract methods that need to be implemented: + - update_mask: Function to compute a new mask for all keys in the + `groups` attribute. + + Args: + - defaults [dict]: default configurations will be attached to the + configuration. Only the keys that don't exist in the `config` will + be updated. + """ + + def __init__(self, defaults, patterns=None): + super().__init__(defaults) + if patterns is None: + patterns = _get_default_structured_pruning_patterns() + self.patterns = patterns + + def make_config_from_model( + self, + model: nn.Module, + SUPPORTED_MODULES: Optional[Set[Type]] = None, + ) -> None: + if SUPPORTED_MODULES is None: + SUPPORTED_MODULES = _get_supported_structured_pruning_modules() + super().make_config_from_model(model, SUPPORTED_MODULES=SUPPORTED_MODULES) + + def _prepare(self, *args, **kwargs) -> None: + r"""This function will attach the FakeStructuredSparsity parameterizations + and BiasHooks at the appropriate points in the model. + """ + for config in self.groups: + module = config["module"] + tensor_name = config["tensor_name"] + parametrization = config.get("parametrization", FakeStructuredSparsity) + tensor = getattr(module, tensor_name) + + mask = config.get( + "mask", + torch.ones(tensor.shape[0], dtype=torch.bool, device=tensor.device), + ) + self.state[config["tensor_fqn"]]["mask"] = mask + parametrize.register_parametrization( + module, tensor_name, parametrization(mask) + ) + + # if linear / conv, we add in bias hooks + if isinstance(module, (nn.Linear, nn.Conv2d)): + prune_bias = config.get("prune_bias", True) + if module.bias is not None: + module.register_parameter( + "_bias", nn.Parameter(module.bias.detach()) + ) + module.bias = None + module.prune_bias = prune_bias + + module.register_forward_hook( + BiasHook(module.parametrizations.weight[0], prune_bias) + ) + + def prune(self) -> None: + r""" + This function will FX symbolically trace the model and then find instances of the patterns + defined in self.patterns (by default SUPPORTED_STRUCTURED_PRUNING_PATTERNS ). + + For each pattern, it will apply to corresponding conversion function, which will modify the output + and input size expected by the modules within the pattern + """ + + self.traced = symbolic_trace(self.model) + modules = dict(self.traced.named_modules()) + + # Right now we check for matches simply by iterating across all the patterns + # if this is slow we can store patterns in a trie-structure and modify this code for faster lookup + for node in self.traced.graph.nodes: + for pattern, convert_fn in self.patterns.items(): + matched = apply_match(modules, pattern, node, []) + if matched is None: + continue + + first_module = modules.get(node.target) + # check if first module exists and has appropriate parameterization, otherwise skip + if ( + first_module is not None + and parametrize.is_parametrized(first_module) + and module_contains_param(first_module, FakeStructuredSparsity) + ): + convert_block = [] + for node in matched: + if node.op == "call_module": + convert_block.append(modules.get(node.target)) + elif node.op == "call_function": + convert_block.append(node.target) + convert_fn(*convert_block) + + for module in self.traced.modules(): + if module_contains_param(module, FakeStructuredSparsity): + raise Exception( + f"Error: {module} still contains FakeStructuredSparsity parametrizations!" + ) + + self.traced.graph.lint() + self.traced.recompile() + return self.traced diff --git a/torchao/sparsity/prototype/pruner/images/prune_1.png b/torchao/sparsity/prototype/pruner/images/prune_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f7f48759225729e932c79b7825d4c91cff6fd725 GIT binary patch literal 170728 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

Gl3!ppg;1 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

gK`ysGgjP3X8X^`hnqCpr5*AZ4e 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 HvWxmJV_bSH literal 0 HcmV?d00001 diff --git a/torchao/sparsity/prototype/pruner/images/prune_3.png b/torchao/sparsity/prototype/pruner/images/prune_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1af2c3cb4ed0825c6f2258b575e21fc81eaaf83b GIT binary patch literal 87843 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

  • =Te9fEE&6_f3@u= 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⪚Nmbjh4%571OzI<(48v_3 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 z z2r~C-UOiUJY<;B^JFn22gC%4VH{#j*YEI+c$9tUY!?;u!`7iT>U4F>w3gULXY(nq# zS(4#@y(8%gM~*PpYH}u5K>_i;69KF&!iTP7AT-bRLg=JP%*18b^Kdx4Pn^Wht3}A# zP+K&;g;2At^wz=0z1{47RiP8jdre8m#h)T36Dv|J3LYCDpUhx`iPUd-Td3KG? z`_1@mNX+e)+xZ4OFD9|rfwXAnh>uHsjYS%pVv}h3Q7_~a3E%r8+Qfl0(HikQ9q}X> z2{*xX519VC>$w<>A?vdkIGNPOMlbUJZgFbILyyT>GFp6*;@NNu)%n$vegtPx zMKVWCWRahjacbh4mFG;SQKIXaPGx4lsIbW|9P0Ls7Hhs%E2nC$`RYt~ z03Ar|JKME8CjN7<;=6Cz7AlK=<(g06E}3k#n_}hMVp*M(dC^^(@B8tqZ5(c&G`fqj zo2I`(~~pgs*V24 z3!V^gSfqklBd649Zp*Vp|C2_brQlj;A%Wg$9%np{II<($z&JB1CRjS7&0K#D&qGE{ z#}oeQd7Afr&Zm(aj@RMICT~9=I&senco&D|zhoULab^jGtB+HAUp+YcHMl6;f#k@U zk8S^%_4Mk+gv3-AkY~uO8*zRwMFsLqKSL(aggX1%?;cv|K>KLWRcO8vYRn!8WhHf} zZhe_mdLWkgoD$<6Fz-q~7L+QyPQ}08Q!Y_BQ?Fy}(61LTR=)@rBVTt)bl)wO3DYf^R~}~9=<~~#MErR>Gklv9^ZxmzQogZd zsexq7B9dgB$>fRqgZa=_;aAT+C`cUUuHz(|^pKnj!|Gej0>U}{n@C-xlXLBN&M9pN zM@jPmyrTcja~P!kwD&e8$6EXQ9zx(w8Jw|m_MnXlCvb8vWS^&=X|avW$0|b^Su8Ip zSdQ(&@@M(G_%g+Dd-N<$qV|q(o3N;jSSqmHYbDbK=@VO_v!te6L#C(kxk@GjE55@q zXSa_`JRrQ3TWg*n*!6~aRv(P+zo%@+LGxj1nwjMU4-lOsBIeXqzLvuY_orAahHC}d zPVPrsSW>6wqD+KELf8#F+g+qh89P&Q1*{@0oRk*Q3D6&M`Hd!|*>h_Dc9}5csHbb( z3J(+MFRG1e#0}<@xHUxPq85(sgcAx>s(IPYy9Ko0{1pW%l{wUbl5itfR|xQyZye_IXEPp+HUIT4`(IKcTIs7>mJVTUf==od056qG2|`y zNg+H#$RkHB_KcL5EKfJj+bX#Dl!@N(`LYBD6`3)2+`GGbZZfNJuD#7`y_u{vb>v*L zH!_=PUYVmfUB23y7nbw)X-%FRMjVR^eM*UFwjRJ4F6>c5|F)9hlgVzpGgLe5T`7$^ zt}*_}A2E?*QgwTD4{R^{kkuc#okZQ(YbT>Z`{?He#H%BU+pjwq$d>ujjGn*1VSIAafdA%3w{$4Ake%_EXWe7o+K%1 ze%eOLiW~gV>)ImBDke*efD37t@-C1)r`e1X?3W&QODwFh!#U| zgnQKRcudKBGPW3&{$DQw7-OpYP*(IsqS2mto0l}(6%XP>^DLXR@I8fB1ea4@zKe`c zS-Y*aV2XDlnr1dnNXtr}FLJKCgI+yIiF;l z$^Hm@j8&sV;$AC=k`^F2a7fYmJkuSYGm@&}^86)IjN-QuQF@`=lWEYQmxCF}2Px-e zVq3o(5DWkvPh&2N2Rd{O?}iXYgO2k((d4ZE1U00Pgb3L~TzT^1=%qBS0%&XRBb=X6 zi!=C&SgiZ(*m$ua^dWbsU_CYR_-NHSuHp4})6w~)?fWBmXow(7GuZAIUZ&d9cEzEn zcCJhe#3V>AYo_F8mCD}8e)t%K?~0n|=cI6*h)@g(a^it~fVCBAsm}JF2j?Cdo#vi} zpn)xQXTbQ=s2~CTpHk{ESQxgFeEXG=ZfQH_9qPT1r^02Smz6X`pd5glEb+1WxXQRJ z{l>gF7;i6%ctp$h)Rwbd)+RCEBJ7XfZ-#!$3w>dB^(0J#F+Mm@AXSg{nF9@zlyA>9 zvlt0>dToK)n2k^WA+CcQ*!m9?^v#9S2f5R28vs16&n@*&>sV81l@Ay6CPeykRQ*Kr zoOVA>Yd#E)W*5o&~I=S@9Bx8)IsRua`3V7->Se2YHWh9g(*6AO&+q4fk`rG`B{COj&FywO-3T10`fTn|?B-f5t@bA-N+fD0+hZ6p zEY*qW>r#1vTPw30;$pW@C#jl*KUcUs+8?Z*X%}B?|o4 zNRz8TED^@HxKMOaKf#ZGDp6I*(+!W9oM4{8OG&0dXY{FO~XoS zuW;PWBgd9m@SB_WyAN4Dcdq^2vXQr5awRQ4-8o%lH0=3qn3D78Zd0FY&R%N(sahK1 zy?}+XG_-pd&zd35*S_(7*9`i{OgOa}jl4Jhu%?BDt|46)Z`~r+9lLdjXNkkFyabgtSCe%r|2l4{aJPP-9xZVc{J4ozIG z=Dww;jflx^+)`cKbBL9&=NeAb`o){mhw^r@QA9g|P2w~zdUL^zOV^_w>_2j(YHQK` zDqm0`#^jUY=Hh+PDPA)8`y(^Uv!&t>sW%t`FAolO$Xuq>J76d+7t<#3sDh=umR|9Q zgZa%d(Xlt=uSw|_t9n_I_{Xdc+H?043pR(nou!}dCQM_9w#fwZ9LxqF&;`yKL3xnP zg0G;Jdu$@z<$B~lXgfEfA#c~B+msR$w9p<*F=8{KoX2*Cee~c_Q|!s>>+KtB$3N7j z8YruV$r-};7pf3OQmDtUe|$SiJ*wlXXV0J7iGpxXg5W4EHRnV6HF8=LJqx{ge`*Pq z6Y{P+B3QeFl=3ibVgH-OCYAt5Q9&R}y`ZhmVp> z7&X~lKp$QhEf8-bEOIa`l0lmohv{P-!}9tdsRs{@+qBn^`lB!SFmfQt@ON`zkEIZZ z@8;5pvx(xYv7j&6U|^^3o?F0UxzM=E!n0j;O&CU54`TTW+l@bm^T7GJ+^tWTKfz+0 zSWjd0xSKW}1N;0{k@>>!yM4r~i3Uy#mQrSGVT@xEgZ%6xUDm3hdNwkMRmu(#rh4b( zE&-d~!d?46s^JX#k+$Pie#88KtaA4pMniL~M$yt6Sy01KW?ynB!I;ny#2P2_15kmr zFMFMbRl4sQONC#4p-!t(DU%bby-FELyeJZiOvdJQa(r<CS{|CR@bk1ZfhiAgEm>=-agi3hH3CkZM&DW4RCu7aH=<~iOHC8`@E<=>U z;7a4{#iG}t?yNvn%KGe&zhebRG7PNDMMZw|5o=-1(;g6?;-4z;vy4-KSZRMoSrREK zp>29Ie_{@DF3)n0Y3UbTgqemGd^V)ip!?bw#*LQj^p+ueKh@lFfxLy|OSju>6|JU! z{7eKhhWV?k3n7KVt}8uipGTXEYVy1?loa#$oFgWE^Y2&R1La1a)xv8aFMvZ76R-#` zJ-$2HGX4??3!pj!rW}wlq`G5tuRgd+qwFp@&J)f5x{oxV7s*Zi%^2(^KC*tBa)yC7 zT8KM&HU_0->7*Jg)ki%2^`i+}@^|7R<7e++>Bhfs8|82QXObe8LT@M{LY?F49fgN} zG;v7ua}gjgefqk}0Urprv~Mol)TCUN7F%lXKp$+(YE+Z*VW)10Wr{Y#odOVN@}wjm zexeeOXPscM1r5=JfT<_IMfpVqW?`iRzpr~XjTY9D(+gqpIqxm`5e-W(>8^^sxw7(q zSFZnmUilfx!3oSPu8{!O|d83+` zP0poRMCT0Q^28s?L5ER6URC$;x|(+PePUTbQ_apvqO zK-=Q_cKs3f>1rpELqp|2f|>Q)cfX^N-_@H@Mz>7+V&I>N6LKa=_7GjxH0{4v}ih~2K^$pYM+pR zvS{FGd$s?op9Ap)Z1U`yrXM-*`vR(vRW*ma?m6SCj~k4f(3K464^ zCDP(&oYr5UJ_#d=d@u-9!44OD9Ub$8L)#wYg$68{Z#DkAXSX1yKgiV_bKR$E)l)hC zzLK`^(c?IP?a8P)`3bAVsBhp3I z*e_$r>p1fK;B7IQx^L3)@8*kK%JLoCJ%c}E2jM%vK;&Z$u%CQ!`L`Sh8P5ZfPRrtu z#uyEWn@0;z^&1NmOj1zfr22RxqP9$S>!mbNLLhl;Pf{3kLug_exQLw}u-*J4ID{bx z-2B_Wdc-=yjaiIp(pU>SFOSBa=LcSSJNjr#{%-IX5uKg^+hzyztHYPy>3>hzwZqb< zHVGS*ZhkQw%-WjMT$gTq%j9m`K?Op7Yid)MVE(!Rmcb(Os9%XU)8IzIcdaNF7NgRw z$NGgQjKGa;$`#-dI;z^ww`xJI3ZOC%Tim25jY#gbrLbz!^RXCdKn)*&^#TDMlnV-n z-^<>9*YN|y*YaNU%U+RwBWvCVwiKd3)Nj7D;D)XL`$KeYo~Y7e>x&<%yreuuP8|T# zbOY<&Wj3NR^RjF`->P7Z4&uulqO%1y!A}OF|9yal;u7#MdqPD_pJv(Y)Q`!;`W%(K zI`ro!w*UXSOUy(pa2uHsFRJ+30|b$zO)|FHmE zgz_KUQAAk2a{1}l&I%W44zX)pozn;#1fEp;H!AUU+0GxhEAzTMfPt|WpicSDtOyE{bi1@<)p9>z$ ziZa4rVOY9SK}~C-JJ%FQqFxGLxgL2QAR=}bfn~I%ie=hG)^f{)LS}Vt_`;;){97j_ zb(+VR+cz+@&2`*OD>1xt;L)5>ECcCN0&3~+{C_(*>6(3$J->CWM#>YKSX+&_nSH;g zAutT^K56%WjL@zT+wH2R_vi!(4iD<{2jx0s|4kh5#t4R`$(OO2L_56uC>G**^;0mg z7TE8my;RkE!>vC4nKCT-c&ndeMmtYRVx?31`tm4v156|GO+RWNeNS=#PWSfrO|QVC z^YcxjOpNs{roc;A&=c|F(8{!+bF7hvoBVbro?L>{PkvG^BjRa$YkD&#Ujm^s%#uIT z40nKOEa3@*$MdN2!)^2HIY6SDx{h%#`QOaGtylokB{c~uxlp$GK3m+rfKT}waMy&> z3?QG#*DwHzA=aD!%yAz?`Z!&DU%Z<70n7tYq$j{wqUxBaEjG(0d}s9jb|vtzg*I-D zFM&W?-R~N_Rn|#TX*Wa;;N&y7*whVt^hfI7m;bFw>^C=%<^{AygZbmaSl|`r0(`eS z)7h?lw2A}SKnQ4EE%ATYd&{UQ*Dh+9lud7tl-hKIfOLb1APUmmA<~jcBP9)zBBdbR zNJ^)qNS8E-lyt*)-JJ70-}}7(zklBtXN)r(=YV_P_jRo`*IaYW^;`}TANN;M$B zWLR6HOo4HJK1fnjycx-Dy%FSuMfcU zj0HwyuF$ph!KQ?qWayxuPx-C*m-Y)85DJW78}3kYZGqFa;I#vtvK=@Jb>gQBZ>96f z-a5CUlLq2*V4E|;5VB~cT8ZiOyOR_y}ys~%bt4gZT`#T$ZC5E-Fi zze+H^IH0lgEIBlf6kN(KZ*q*TWxMxK9~dd>|p8| zRa3TuESYMbu=pt6gph;3=+f(?VIEg2o`C)lS@sy1C7ioa)cf5JkRVw@jArdI)GVYG zUHTHt2!Dr%&{FS}1J9$*qd)+99#Ymohq4EL2=~1i8i89^qMp5Q`_?JN{OO~aTrv(^ zj{n3xgGebb0ZVbu_i~x0oo*Ex3mpKy?Z8qmy0gA8{`(b;W$h=i{T_N~fT8STOW0EO z`)3v4^nJNWsQ!^s3^oj-#XaA!lDtR(;K9a!5IjK|@`5t7wx2pV`cOs>&wY72xg8&d zl-)ZZIByGOOf-jfx*#RgXo>T@f&1+^b~FUd>SgLF|2`c~=;?H%Aq=76z3q3*>97es z4%W%JB#Rd}A(LQ9uqCuZrdHYH=q>urxSoSuN62R2Ppm*Jo|ikd%TbPd{zTbD-}Zam z{^aLQpER9_Tjbpf^kfJqaOYZ=TqVq2fN8f&oEcpenG`1Y1 zd!fskDgKK;TFozWKfVeB0%?$|gPS}@QJ}X81j)!~y$tH1Mvua#?miQ0byRx|xE;Hu zv$glGy+{`+whC}H?W=we6y3l*45rY?jZueQjczR08CY5tsm-R168q^K*mhAE?`|Bv z1ZOrsIHHLZx}H@q6qp;F<&?bgpyk;hp6Hfw^W`dcLQ}ci`Qw3q({7d=@NHTJ1C#ih zL`%8G3jWyWQ_m4vp;p0PSs0M^)I$|oJ#%AF-cE&^A5VeULoYGFR#;@3WaRT&KdP3- z_=BU|AhOndJ7#@Q`@TLJ(`uhv2WE}YLi`;!!r-jgfl*7!{*vuK^>TSGt|yyo0K2`w zKnopz2G>;;Xac*1%Vm$-X|8_&SDN&{qKT63qKBWRS^l}sZ{I;j*k8@*>lOH4jBh#E z?5Znp5Tm~)MdA@@s16gdq))Q-UaK{@(>|GmiGVR#dZt-`S6@JbiD1NA%?$!jwn8f@ za-;^MZoghz={dHdo1x~X1t8U+WXa5mo8Ei_p;Y=1!ac`@MpwNg+Q$CVRM|!skpN!# z$mZU?g_{G?epEbYQ2-5g15T-FvY1@L%i|Qm4K6FKKiEb5NURZJmkXGP4{GO9! zcyDC{pbpAJHfW)*Ub+F70Vsv2NOxZ+MRiPqh;6}eTXZc^$8&`paj3x2);1ofIQiw-eJ{;t zbIm8uWw-Y5ha^yCULk5Sf1B}3w~PY7&RFC?Ymg2emr&H3vKME2(Y}<;Ur}}V;{!n| z3b*9&g(*Hsv9I5tBl!XL)s?z@_wPYmIWax?_v7eNA{((((npK&9(3|Jzn|O!De}#l zv^C%Sl=WU>;cMuUA%h!qhXz@hAawvZ!KHNn>Y24;@B|a-_nPw952rwuOuD*UmmJdf zAM()^hS6uPI!;7TWBK=m`8=DU_?2bewcF%U_YPQu9>I4TFO@I z;iaCScb>@a|DM=FM0t7%UZ3R-Ry;^+M!jM&FV|9DE?u~_d>3rytldOOsG<#-f=%gc48%%a>C!0m_EF}^!@EZxa z{mfQ4uFSaVxBOuJ#j$eI_$_YR03FqOuSG4cFy{NFKbTdz%C_*qZngw>!=kGW^2ISc z5{iv4k{4Ti4ZlBy_X`HoCG3LuNRZJQ>8XJJ5ejgQdgOeT5yeoP1-nJ2^qmLB?tZ>Q z$%2{WVo#lVXkfIf&%M}thT7@E!l{0JHspKH|HTPN(T;bmzAY)D?{t>WkaC?j{;#T@ z9L4v1B%{ArbqiFlyg!)%2k=qAepX1%o~D9&IOz70$z*E4S>CEhvwE+kSlNP58BRt7 zN3u0v_@t^{?PNxKwHwA>LMCnPbV2(zQZMEX1Ir(lEy`|o0%SN0t&H*g)AB*FL`r;X zBqv$%Z$hMW!Ooks=KDvut5!>|7n)?dWOgK_Opo;W=nM4l0=doNk?Ye-fh&v6@A+fIVvElT^P4kck| zdVUALHV=myFhF}3X(q@uu0F(T-F5ef#SqtrJz${%8cqFp@Of8Q+% z1dhuFAva97-&rB|ur?sSo>USAlc9O0l|HD$1Ug48+&+8Z+8MO!Du>UqBF2monX9k!etgTC;P&^X`Ehu?6bP7u{8 z?4tyw0VfbeV_FXFww#iu@h0lNdlFI0elRHNux8(o@}6_Ak^NkJ!pTA?N^&vqF0V4x z$GXiY5XQCG!Mf{Y0_cTQ2oCp%iQ7M-OuDQSPpF#27*a`ot=VP^uGaUD9=)Obs`-w) zU?A3QVXeSk09+KS9nA!Sw?U^5Ix6;_=JXe9@z&sBDgDOyyXRMvf`PyD?sfa#p&Hxh zfYY-zbI2%ajYMwBz3Ct=R6#z&G4gV60|0~1Q0Ak-mZWD6v_9w_QsRHSP<+aKOU$ zJ(r1Tm0rxtopHP=P=INcmlt)%(1U{0x~SV;Ar_1Z3lM1&xuYz}e8{Zw9RDzRXsm|D zm?2d}`Q*nKu~_o(jjV2SOQNe-#^6jA59m^)&;Q_p`r%iQWsn~G3}6#!R~=q~TK;SD$z)Duk3 zNts&!AN_76)(6%kb&z#T@9Y~vfmDPbVTzRKZ_>vFAbl{4{>l4X0qIN3SpvH2HB@`F zCMmvlLQ>R-T|1kYdfPBqIc9|T#H@YXRAg9SAT0U*$zvmM? z!eu8GB*km}G;OaeKU-xl^H2H+l%jzim5H}ExPWb@$emzf@TByE0zPAc?E`HCsR(0o z{{+-jYL;?9jYzL?v83ec3_`PX>50zN%{S*0%~47m^XKC=6#!;_C1pkNN8%~#p$j*s zM%0i_$;icEfSOB3yKo0&`&jhcbrjBHWEoT&s!&=1e@j3$Z2_&pwrlellNnY zJef{4CMy6cWQ?Vb8Fwa7r!1+9s!69hU0bLLaW-+vy59&Au<4_khEzLJYH~saS2b`+ z4-R@RdY5gMbcLEkb>|Jq$!@t7-EwqK{N?X^--iCr&_sny^2{w)n?pxP0ly9$d5ibV z%3N2v1uFk}91V#3a2fQ@5x!w_;DGTmyW!~cu5?(Ymlhk#A2=$@b*(lBaK=sPE`(JC zx}Jlih{ukNZ=X5`AcMGuBNdDw+L-_ib)_ZE{nwQ2{lB8UjonC?6Q9k4hSmIi{bKxa z{2sK#p(Z73avJXqitYw>!bq5bamsJn$829yBw9o;NZF$10VCK(i2kj7t5wEguak60 zOvMqdn~&!cqK>e*9~g$QJtP4v(hb2PlmPBhh9@Q)vSG_^OzH@f)>910Q)$~O69Z5d zUll&UKqg=tXw?B;RUo3o2O!CyqJ&_$WAma*Dp)gJK|FM}DeDJarK>X=EeHXkIyA>LH``Cnn;aqHQzP}G2>XvSVJvO~jw zxxP3aV1Z*JI!+b?`}m$4&embRr`}e6odF8_vkbjIe0C6wg(o853?05EYIz>Y5ANx= zVyU7DQgZl0wlhJlSk2Ou#;!6P!sjCMf?i!;d*5CK_YED-IM7@@f69cixgs(KxhsIJxSqY8z;V|)pYfmUt1(EOEkKqL!Q=>5({39|yG+HLC9Y6+j zaDDF<_+G<3Hxa=%NR~Yw_k@dlNAk>UKjWZQbsZAWCbHHVEwX96t5R4WAx)FY^F!Ww zB6+o;Y{tQB|5#JXcwYA;!|{jb|4^eZ?xApGo)S8MH8ACOWs!K5Ka+_Hz|7hHg9qzz z{rw5qwB?PZ{X0<-@wDSIJxH<9dZ1kT8LL~y7OouhwNBNf5;X~jgWnN*KfZf0-Kn3a z`|#Bhf3KEa6v3<}7%_(y!n@48wct+Q*vpC1(Jz+XAxbjFMkwEb=teaGmhDAB$b-}x z=!!MvU53;anX9_!@t83b6~;a$woAj66 zI|SgSy@iz&-10&=Bq$1}lcwREbTD#>Sv|Y28htyexFmQ5TK|R_Bp6Ph%A!~N3BV}A z6_+uCwaJWk(9^z>Vuvy&YSYon;#+pxL&A?Csstck?ZqWZ}$ z+XZ$7pcuExWa_|(RWFwYpED@FfFvf{r9^&TC!?}XGpa|%f%!FB)_$MS^(!o4#yQcF zzFKJlinXP1?vlsfvOP1o5gBDf0osfD9KHg8*xOopuZ$=5QfKScfSdanGV0QIcm&BN zQH8{kYG?9uYc2rtK7`kl{KE&KBa^5Ga`&6<30m?nQZ1Sf9jn>N=f-0f5`wpS%QA3= zLRT%`R^ORK-?0_J|2XSok@{)mQ0+FHgJjh;gvt%(o~Ropdf$m_lb72x51ty-Qdu+y zjqlfI^^ zShO;3pPR7ORRt#jWC9g9eoe+=dY1LcoIAcdZCUB9A~_+DYU*8CoXnj-ZIesCcZ$vg z@T{Nu-(2~jk1UlB6Wi;!I|aCTO6kM&=s#;X1BkGW_#*qoWuDE-!pf%VW{9lbV+OTJ$z}*9_)lW}@ z-zE}#(H7ITKujJtAh*9x`MsmuS+3e4e}j()l^7UWV{FjjdVz%kdkHf>^}H)@0Y3Bq zp2+V^xIk5zKn}JG!9Q;c;*}8UwYcNY;*S9@$20SKJ*`qhQ-`r99yHi^id0qB3W?*r z0t(}N$R}t6%1k4lbJXHVe}q3K+6;h9w@R@614QAimQI`j@vMXxMHg^vP^efv>b0C6 z`-2{UroTb|lj3eR$);`vu_2&RrCBuSC54hanecGSZ4io~;%XbGki7&)DB{E8r;+R` zIWl_FW2+cqFFbn>d&s5%nZbuLO7bpG@uXz87wQ+EB^NxpJ&7am#{qYkdQV;GAHp}% z=V;sl|7qQVfarpX0^I0|3S-EMvSOIeNEN+`2e5oX5D4#W&^aN^#!Pt=7NlMSiT-0) zJ6axFC)Ej*55orQL5DLq_4#mHkj*#HN-{~Qhfo?sTbG|FUP^vvm(xGX@LV}j4BFj5 z)8qN**X(J*H~GZ^Dlmv$)td@gsYIlG+Dlan`xB&D0mA| z%pC}T1vk-a7{OAo7eLwgg+D=Kw_@UrIB;mT4Qyy#XnTUCABsAd<0wJGt=%Lw?Z{Qa zm!@Cq{x}JM><~G;hj+^1n>!2lUfDQ5~*lUhFuDAT_Nqo_jJ^JIwHL#3{1L zjDYXuXdZRnXAombhS^?HD>pbv)7S2*t36G4$~W*JHmV__dg5D|Ptm_^UHRMB;fe5r z%h$`HVLna(-s=J=&A949FQOZ?*#E8BX9!-P%LMV0)==pOsazWQULC27(#o7hem#ep zHhwi=$DV7)U4K9S`;XDx>3<^Ky>u&WJjT+BdWhpV3vhG7Z5w+b!I}1jNTVN(CK;Lu z@RBp5$A)V&=+kPY1A9coV+1)=qP4u64-fJI%bF^C;?c5XM65zf)s6N(zPX{Xl|kpV z`_!!nfW>P%T>iZmEjbijQjOmCiMqZ0!$15-bj^>VwA%FJ14bVIJOLjmSwGO71z|bg z)wx(AZJr!I$?dwG69rc+FUYSup)3QqEUqyGbC$KB0Pb)-rF%HfwKwx}O|ee6&dgrU z)c&dQ&Ktt*zqt6$HmVJPM;zcJ-2#20YGD)8oi8@j@}09wi0S2(cXdJ5RX2dVCuv(j~0B>AJo_qPC5Q9XaTCb-7+e64)B ze|a?dF5NNcCrkk<)0|qbQ%vB=0#*}s*;v!xAnp#TAKb>9feFH|P3;-YnbTZUBS@K< z`oW|Kpl^uRg{Fv)zDVSgqC}gS0z<&mx*09~q$WdPWA{hAam}e}{=3LQ{Esy*N!p3m ze&z?p->+WU41{lV2LoNfPq@B__U*y0hn)^4fo9zlWYGt&_QL3UCVAzO3fjN23oqvq z3oZTw!|nu20X@zvdg?uUeuCa}aBN6yD)b&EW2AlsZ*kyJ6s7fT`wo@msCPW>YER~# zd!hG~@7kp^7Q{0BnUt223hYJr6|mi&WLbYC6v}`*Z4<~ClyHWvTo{c3mp0fVpNr}Lf`$z$Eukmy(WJvp6jlusXs(bm6ci6kB9^a&@46r}YzrD?a& zMq}ROlAd65VNQJNe}9fj$9ROfOBD6A^vyZbvx2`?WiaBMv#XPNL1j@Y28u*sZ3eTP zw?R?8Kj;uL7BBWD#%@1Z4xOLz;s)6^P;!LMQ78q9|M5=lbQ^i5nV(tkZ+3q18ci4Y zy}d3QZIPBXz7HdQOv4c)KIfvH?eS4;1`yA7U``{Ua47T8bU7hR#hQ{YjrKN`Sfky? z?i3_rPXG#?!EqyB?*l&@0o%#4l9_>*8&Rsuw^#OAzu@-Aiv5rp$ZN05Ql)W--2^}f;{ME=&Ef_o z4+HkYx6_D!aMFM*LOBoG<>3a1<{5n7({>38ze0=>zVEA_hwi#aY0;{<;1{?apf${y zMT@ubChtA?0oJim-CanY@z5@ViIJI2Nx8IKh1(pOf zIMwr4JMIKkTc8Yi?l*1eU%Ck*HTVQlY6L(mWM2xDE=IO&&@u?`YX4-4+734}r8tS! zjeS(agHR)xS>ht!3pQKJZJ;rLWECAA_rSdCS6b&m@WCCIpQTV@ehZ($4~$f_fz(O- z=hDTuxFbFaDO_@RSE2B9Se|AIT1>BhIS#@9E;VNanpDR$4%XR<`XeAAC!p*D^pnoX= zHkf^*dhJvQ*KqkbE34-k_=eR-_Sj0Ok@%HN~$|JdF02J2kHfa(vxq&F@1wG^u zjeL?P7#jb67O6hkzo0TlV?_Z=8}%JPo1>P>xu2(cT-T;^(6@1YqjpdpiTow->#qjv zS_sEj50#nREAa5AK|gA)$6CC*g5b722l!pHaE^-5H1PKc0EojvVu&wOd>|dDxOo_) z`;X9t3b|iyYSs8Tpp}+!57r^RU*ET?{kh2Oe<+Dym_Jk#R`+o=1j-@r5FRC_Sbkuw z_!2?JLnlD-M_jqvRRRU>40m1bimYVL@T$lHOYtHmnfth#y=2!JwK9O1r_+**MBS__ zq8wT$!BMjEX9WK7sjzmSqMGrz-0eY?4FN4oP%u$SG@>c#nMLx`eF1}}S(|qaZZkSi zvdArfBEJT7D91e<0##b$jDdT26=?ArmJqGFDa=d+Uv_xB0nK-rsF#PquqZLW%06(> zrBjD&azgz9(C8yKr&*3)_|8@gS)`9|-u?O*im56hC@}P`sue!+7fGL8k~Oma>6GFS zpePWm?t_x8C`jS?SiR80w28JP3y#%pP4TBsms!5+AAM94W8$vC%}zIMJa6`bu4i=q z%l}Y-|K6?t1T7Ita4o5RwbqM6XC7*m|L4E_d%gevpa1{n`DL~foPy+K2T_H#1^Hhp zxP8z1sC;T}Uj!R12o;2E=gk<~y`(JJoI4S}yMpLn)0OZ5ldlcE9{zHvQiRt&yPRUeE;8=LfA#1vu+_ zrl%E!rA^bIb*41~2!k!jn*+%Uxd7wUeNbY~Kr6yP^vH#}=En)8UODclhZ*2^8u)`N zRPx($F8hD~g5T6=*XzF5%sqEG9wVeqZ=ytZ%1Dj8hNC3TU(A4J1YL~nXM0KQT&dB8 zHD};IIR%WgUqYVb&BX@wx$-W#GMRi(O`LL7(C{A()4%t{ARGy;7vR}@By8HBF1vj% zYpC54Yp(xqG3K%C`R#tA~58VcKkl$k|AJmT*R;$QVvUiuWy~v zr26Fl`jsOD2-qet>of+If|9nN*@#P;*qhl>p!k3NZYzY;Y|Oj6%+nwh*aFFFEOdJ962`uO z?!4*-SjJWb$s&(I3=dA|wXGb`)WUGy0r12M!rXS3r+ZkYdZaH!9>c0IK=LtzW=_z9LA92q*k zqB6ARv?yNTbJ7CH?CLaj+Y4az=xzkhn|7e@o%3(4Z*zF={Yy zSK!64Rg}g_MjKQ$VLim%V3sR542t);J$>;&IV(_lbG>_0{bqgZVHuypNiJN)6|fF& zK>s!ayv$4_Ph0U{T2^Nn6v+~W##dP$u1{NhRJ)V4U(i) z_W>5q8kCP}rB5S)PuGm5o*i)_C%)umnfEHY5vErQW+Ca{t6wKgq(``nd+K+_!4e7= z3h+$pi@RN$K_UXHA7B%(S2ssSH^lzChF*J}@Hdcb>Ev}YtP#RB20*iM40d5;4K1%H zo8dw2F}qkfk`$Tbtpjtae{U$N4AQFwpj!9}>P`N&ohG)_e|`0JqHGOXVJ)c&NI%ce6}$^8#qSil81y>{W;v=0of=bP~`Tj=BP| z6L%sX0u6?5Hga0rK#Qvas5E?f{(hf-D***^GVmDgwLg)+EjxAb{HxT?0NXzU^m1Fk z=eGthx?Nz!pr~xjPN7tX(uW7%kHKm($c+5Wc7cY7yFWTf8IWCeX=+Z2V^NJ(c!z^pWrqfsr4?w%(m8TCN#IFd z{_RnGTc}Xnwg=xVV(z$DIL*&ZpDr5|g49kRh{9wn$~#H0;})P^EF7h_ile-PkU%f! zoYun7`)KU3GESZ2fhugHIY+SVoD3UO~K)Hnz#Np~r61~7q{CU}*c_2joFodE;>9wlO?agiktk5s; zf8O=qhnLW*!mGf0m`BCY$M z@z8(>PoAO!CxsG7tQQea*!b~U@#S!Ng9N-lJ33ZoA3)ySsjT&y>`{$^&%?X5c#Jpc z5~Q0;(*TVZK`Yp%x7h7@o;)JaN>>k3dpnaUz&}XXP%E(CUT9cBEF%b;S?X zXix~h$_90lJ{`&3`>x;ComQQjvakDn1&K1$C@#XXP^P5y@p$*8?u^RjsR$l50eunA z7xD@4uhPXwy_Cwx7%)!`RY!W$rq1FZq~apnv$jg){D2@V684y@+6dFM=WF+3n=NyO zP-)c>@@11I-WGhwbZa(77rHrphv#?!#2gMl-B;^7>)(PWvkLkNRp4AJ1RuJQdDRLnjM?9iZ4Br?K^x0pzRrgdvqF^Szq?rShfUIYu-L$Q{rAj4Zs%u8-7LqwQ zT9UQc4s*(sUMQVC^LhuJedaVac`2~~o$1%<`$b(%S-wBnZ*a1A_rLP2z0;EJzZ3ua zP=6(Qc)b_KU^~Kx)Rezs7MQ&oyx*ugzdmyS^eAXq0-)d+eVXU!Q;>A#SB^XUtY99n zd|W5)W>s}}AX=a*m33r9a7({?BE4sg)Pl078&agSg1p|qU}POLfy+A6`QBH zC+dm}a*iz+`?z$Kl*nlcG|q3%+IeoahBn>3@O;*{$0{05cAR&28ZX4Ug)2{X8Yf)S zxaSXqN*kkgUw=zhMjN@-&O^v`kS*_b{9O6lj-Rn1I9}UXPoTC+PjmM81c)a^iq$U- z0cQL@2e_ofj{buC+GtT4^0X>2F+zV(WxZ4IR)Z0t1hq`lFGvrx^D+*;rA7(dcj=)G zS$X^Gx9oNmawH*}(PBE=ie)Z|69n6*jcT!kbzG_s<`%%sUp+Ft`6$Dqw#rB}CGob}Q zRhDc>2R&oQoYX>AlR?nRlm=|BTEyI158YI*6a?UB#|KPF7Oc)5g=6%TIT>To?iAD;P@vR7jYdXu^!Bnke@{L8_&H0+d;Bj!{%A{nl7Iq zG&G%z%9$)i%9&~}Ls12=^Or@)K6)&@QvgdlR}=Kme%6-bHDAo%T+LJRZ4QA{)#M2j zM9IxVlmm|1aAO(?7_5fF-vHkLN7} zf3Orwq&FJhPJ3H^v~kzF+%uesScwYP!z}H7&0%Q|lC!Go9{m_nZ}5*c-ysOu<|VmT zI!VjM4=~14U5)KxcMZ8y=^)lV=Y&&?^c6S+trAOq{bPKuHa{S+4yY-3R8+^? z7^^~*YyW1?4yoqX2f(-J-#`6jL|6Ef23hZ*sUi<-L#6psZC~V%=srgTzl!_@BvC`x z+BH$ie`GJbaVGN9ZH0UjKQ$pfox==g4;)YpnDSltP1P3OQ1l(S*>bRv=GBB+E=pFBle;RMp zXr|J6#K){t&QC9LS>ve{k7nANs@oYFCBZs|i@(dt=yaDeYRLNwy5K3W{P`PUFng_* zajvdxEtB^!I7T9XnEAMJ%;j&IoIqpK#oX>O_v`OZ&O;evv$2H5z0pZ)>q<6?SHru9D18QQ_jRde!3_#oMIt! zQ_QRF4klLbRjbWATr~aA%x~Vii!al1<*tcBU2S48DbEqdFgI6O9I2xa_PTX~n?bQd z;7_{<6XsB^#8G}7SCr6F=rxcdZJg}P&B)`FGYE7=qGA#yDqKC6r%EuRaUZPp(fKSO z0DC#U4k1nJkt0Bvq{;*alzc*~+l+*>5-mZ)W_+LX7qt`<9AY=T*stv_U%9_r5<9uv?U$0&>Yh93O3O2N;wK?056?q= zc@MbOt|LBw9eNW&e%@zzT+#7+Zr8`%^iBg?C2h;6-)1xy+BbpBVzkBHGK&fmacMo1 zwww;vIx7)4ZPBUd6EvCzdw@I+P^aQPRZ6b*r2VN9)Kh{lsh z!WKJSZFOa4FPOhIDzgerSkRao)2tZlYQ%7t9_tYy>s~aUhBx<^RW2=^!|-P0Gsj)D zBFVTn>NlE}C+Wh^dqBt$c3)E#^^tD`IVEFxkfM6G(g}jh8z^_eUyrLa{Nn#Z&e>F{ z*-b?uUUSV29?sFDOnskmPoDyJ5M)(gwzLbh_uZ5(WZMShx8i#$V(_o@n77tL7(!eCOrRi~GXc zrxaUetTd6)LozB4U-(K#T10y)C$+;cZi^LRdVeT+a~4D^Ax8ohnbnrGnR`0mn^GFX zLd_Oi`6@!PCEb%vhQ68!U`ELivQY~WFuT#9_dLvlxj;4YG1NJgxX*o&rG6FP4Shgw zbCuupU@QAlty0@xsdK}A|NC~zynaRR@+-E4MPvT*k@PYJ5#-BXw-+NOWNU?s0<}jm zoF8FEC~;g>rXLkCz}BWrw7Oe$7XsrgOuE}(JPlZMw!;6d`&ih{0==4{82WfU~`zI1yb#VeE&>^<%S|x?Wot zq6v^zzg=cNDXD+So^qr}m;0U_<9&UQvFp1>>g&{Zgz?=2^ejqo)NJ&Cz4?ba4Bb=+ znV8bBZoEf(zsI%|X#0f2)@bw3&?IYCML)G3y$^FbNSUjRYve;7k9%8Qg~ z{0@cj(W5k~w{ZM0Q9MP_>34_+yfKTI%pZRQ^*znSz4G4moSy+Dnsr)BR3Fyh)H$JK z4Y|6;f~3E&8EF+&!3ituVQ>alg|c}|k6`1*(>Vyepz{ckC>n}xgIi+7tsJ#K)fEYv^d{P>FPcj3j;?3YGvBQxVPP9eN-r)*#aF&EIywRGY( z6TBG+&g7&JTA0dIEo&hjDTx2A!BWZF?vQfV{cJU9U3T3FkQDBVGVgVWNwOk1->PKw zbnbYZObz)6R0=)JoZNCi>*?Qums6yq5R(kwSnvByW=;0as^GVe#Qfn^Bm4%a(&?QO zpWTzVhwml@4Yc!D^q)4@M@7*Y<9Y;XXj(SQe0qpA-mxFV?PWr0?_`iolEEt4`(p0k zvJ`(!qZ}`>acym5MkIaHhxQ3Mp=Kg`iX9lD_|iXG5p|U|p6kl2ZcOD=v+r})|D&_` z7J}Nq|qlajU#n8Kb^K$#N95l4O35QN$%K6EoRzEZ8JFLKidVNiE2sIU#fyrA#zj&b_D5C< zir={n+Bec?WaCPL3D0_1&$OJ>G=o2Vx(cCradSIQ(WZ#DyG$pg9?haTs}1F zSnoL2?<)PstuWcMxe;0lBf9zZAME-b&LU$$$a~~{i)0%jkmM*aTX`9IgI7?Q=;(Oq zIY!aVbU>>}3@+_q68{O70wu6v&OX+dy_zn)nl91p;wSuZRlMUA9@kTl3m3Y7 z8>l}{+|z&pH4;pvdOIGp6u#G~-6NM(MgAPYH)o`-Lz4CLTweMt#P>8rT_yR4+Wqa* z#%()?O~a!Ctzw3B#m&Bo`AA$Ie-Gm}>XhKPnEN41D1ZAxT6L__66V$NSj{pXI{1XZ@Rr&hab-yU1=RhJGalPX^4UmI-HVJM%||rvMLKL5{tY0_=2d7d;w49Z zC2hS@Z#8JLExMx)dJ@*8)?M#alJ(mysj?#OeXix{0`^I3d>K=6)miaLjh-iKA_Sk; zv5ih;n3;(B(8g^VwiC^_(|xbc=778>X8+lB9g#yCfHo+F>-z3)W>U7xi-spj1h$2X8wxeCMW$$ta`$mhNYDQ@+^E-I1NpcLH zm+gFaCBY9*`5;oH$%{SqY2xVHmEP!?T_adzd6i=D8;lrkwl5(@{^^QMDZ zM(KvNA^v-r$nTu@xY!BQt*REDXbV=wvF;4_B65hLw`dj2W5ef|?pD)u9$S&gKOv#@X>2DfP7ue-!0w%#HcZwbfiHSntp|tvZ#(cZAAoeTrsc6sr0);PS0ik{$ zz0st%>A@y>_V@7*$C=}i6jwkYH!88jnZ3kcfM{DZ*nOj=%c_z$P<%!$?m+G=UOX6j z@>4$S#}=uaV8zb}jTeWK`YGr4yLSPv|5u{o+0(-6C|o##8CDQFJS=~{!Y~^1GIRuL ziYU}>S5xBDi%!U22{e^@t+IP}kSKJXGIGCGAjEB=;haAkbUzRM9Cw1UvIO@2Rc@Xj znHfJd!<9TAj^1e>C&;_^S6&2HZazEdH;#?!gGs5|yPc8=+T zyC+`Z70B1xz93)g+z1y?Lyt!~*e~SGIEvfN_UKjr(52E%lJ8kkekdnu*y39bM$=(X zoeg#66hp(IzCYimSACULX3fp4^digk__{f9G*^3g1?cuo`lhEhlid>4&0s?A4O)=d zXLQ;Y$-n;i5sZ~2u;&^Yw;W9r2;vsqa82~v$izW{ zjFmK}+mOvc=5wUw%RjK3l=GrEOvOL0+zHe8*UeqYy}Np%hf6F~X$y1e1;WfIaOcno>t>X6S~o0-Y{wvva}3~GHEafV8z@`vNpwtF z9X$fepSL>e>VUb#&m~I_?+c}k2&6cLCd4J3ke%pZ=!t@zNO>eCHH_8lCAZmVu8Abg z^Rqj?CjIylr^fXW2%fqdZTudX;$Nnynb~*wZxI$IEk}_Q-9p%?%NJdOO|d+h+PUBM z6G~^tQHJ;p|Jd-#KI@q*$}uR7(llxqcQ3n1n?FnY7~NxGX4fDhNr{c1#o2PN2PL`S$PxbIKS#Qwf5T7oBtrfa1?{tYi7Rv zI0;RYvj};Obxo%kPAtnfYQ-?2_iH~fUeH@M`Gtc%k0FT~k;y~9*B{lZSSO25Oi~9= zngyD!k4keB!Vx(fBrH|F2ZFwpIT6wAPO6@%``)Q)$iDQlN`$$OVfIq78cge+BVA9a z2TZbMo(U5kE}XRf(&yQXf|jkIl+*I-JHsR~IUwVfQGV z5U6&$nQ6Y7@iv#d=eeWV$>%l6Ad`a|a+FFYaNi>BUET+)C_V8b!`l;E0AVwY$6BJd zC$`_uFXWO21WEC5+;LX7KP(i>)NNLI_FvRApXU803JPxfyV-obS(iH3r5GFB`X&Ag z2kj$mo1SMTO-!uq@dC?PgvMwLWYqrv@p=K7Y!SrP9m zmA#hkUeSh7#+_tWKVuqrEBsQ^x+uKq_-m>7CyMD&$^C8p@fYLD?9-%0o<_AZ-|uBR zn1&z-C7{r%eMcZx#ff`qM=`1h+y5o=_ebsJzd#lNHP2J1=6QNpxDEcmg7ygh_wRPA zZUjN^oz4r$47V^jLcf0gX6H_p%y6cXzWbbOKG|1o9?z4VD@nycAN-ecr1#!ZS(J#b zJ>ftPY{{14$$b2(&}5Nz9LvHU+zm)&~g z1j~ZV%%whzl9;6~hZBPR+iWe{-;jwacLhCuGu3C9*dh0X!v0q`vCS5AQg4c^#MwEMe;rrXSR^u3%&LBmZm>TT zy?Q94=(=?s_HAre6Heg^#3fB~Smp8eC6~kMvxBOmBB8-{uX@MG^i45;jXH<0(!gwT z!oW3Z;WuD`f(6!w`?qB(h2OtF8xM&l_&;S(pB4NC(jQZbOk%bwN$Hn=N|4PkkkmIt z_{K`X^A}%JN;i=ZvfnbeV(4&VcuvqT*L<(1Q_@S_ENK`&l4W~JPv;Co!>|qb% zng|>=*oUSk%|5|+J;98fa=f5(@B*CqE#1ZyXlU0mQ9rM;mcQ=j8&a}CvO6CXZG#rD zKa&aasxga7^;IN(Lc?lp;s3M53_~~TK1E?I0SXHJkoL1vAGNN+QuFu=>>5V25B!S_ zPM!LyhZ%nZnX_$hO)UURIaC8PgN8ccCnZX zM1nXwxJKiTJ>R}4y+w~L^>iwMz4e1iM}^=}<0+!miiOhBYE;Y#H=GcaSR~FN)LF>g z?9m^5b+)k@$J)ey{q+*O{w>hOA(VS3`NO2EAeG*dlws})k^wrGTM#opBJ z;z3Wwu^T212-*Jd4Y_rjh^Z3|bkbb5(qwnygy%sMw)zKWR6+4$O7t<>xQ=}(>Z4CF zsR`+>t#aNzT>fRM-~P$ryeA0liz&?MWb(ljS(Nops{?7BhiumXE_mIz`<}SJo5((x z*zXe7_gqm>?{RNa|gUv%BB9Npwdf`>z&XPn!{ zq>Ad5*Q`@FV-{T^K6{o^r|Y=5mf*5n%jHJK^~S>q@pU~x!_Rh6qV*B7qsfy$Ogb*K+VFGsQbM6wws^oVc(qk_ zKJ5Rl|KfsMYMtS(nD@f!ql|p392z-lXFAR^wywVIP{IvH_JId&4*IDa9@-ma_f<$O z-c;2_$@IOHjUXluHFnO755{)q87G0UnUix23^M`1d&H5+72uyh(q{hCyYFNi^DK*_ z($YV~bj#fKMJG>K=QCJBu&0fKwqPG=HVHPxl&AR~xz@A?B=A2`HEejKva7JH5#lt! zTPl|)X8Y8tm_G6fuj0~kB=uMPX;f;Ble79f@ooB7ga9Yw^qA%?VE~*@%X&(Uq-4Gv z5aIQ%SGccfDdefJ!BJ-))`pj~#oDzkA~kyhb>wh6LQ+~Y>|ek9_vie8tJA@KX9{qsoYRP z9@72d3Ov7vP~rFAarPprM9x;;ANc&ZPu*F3OK!^;3ql}NaJaPkHuId`z&v2N$!|il z;}PnodumEa2AT?a9xB%mZl|QMfi>+D;V#cdE+MC(yaw_xi+Xhuh6AFBSHq@hZ69PV zvCSwsyK;-6ChNN9G1fTd;F0*g6io*SxqIXJ8lyUk3&+PO;k9HX*K^t_ZUpA%ddE1RDzmhh=FnJ~avacZxX=terK zJbKmA<7%%LX|5O585@pF)P4=T{W@6i_W$APt%IWc-uH2VrE6)BZct+BZcrKogr#9= z2|)zuUb>_NB}GC(N~A<-B&C!FDd|SKzGr=X-ZQ`X%{b#fy0FhV&pG#f-B%zfjaue7 z^ap+e6>VnC;qHqTDO|MQu0{hN59mlMWOvOgeY)-o=Ju3kzyD7Ck^m9mz9tEBQZ7K} zU`Mv8z!m*ItTfxep55TDxqtNinpmEfq{g#vJp@ZE4u{g$0soQOfA4XLSG2GqPPO(q z;B{VpyfktqBjGzq8ZhSZMuk{q?ei%9Sv2OvclXj^*B4~#O%!E&%Gvuc(DJ_;3iZH$ zMH~75tD)i*LJk+1&4z~`%4|NOSx+{F6!}cqJ&uU=hPb`6#Zm1w34bOMH(JL-u)x=m zU{I9CN~w56e$>&YIDk=s-V@tKyYUAInu zW<}=LbHA@a^vlggo?isSnb?h8iBwr?x=_9bCN7EIm55&v^L#NwWvU40lOBnfO{wr! zo=4T>IjE1*j02Lx(vAwc(BdNOabXF%)eKPnw0p|r&7xn06+@BX1P^N%MegST=XZBI zwZ+_USgJ49223Nb=MG{74s9#X;pl1}=>~vN>bS0|sx9f^yWVmUrm-Kjm-FQjcv*I? z>^20Azo|MC$me(E%9kGCqYqtAnAnrpX%=E~%=-7Ryju}*rNDE9wq)&JjfZtaju^^~f^q3DZ@x_I>G z#XynN&6BAJJiGThVhMb5d1c@ujgbxP90ogmu! zSEBHI_pN+oedxByCrCjEGi@@_C=RP4hqd7Sf+fF|1oP)RPohL1MUdUXz7IFJcjDa7 z|5)Dq(Zrs)m|xYV?;*aX5N`0aiV!cp1C-CS6zIrx{QQ z(hQTIKg>luzHCB6t~ZVwq(*6+91^$7@YCzHIEG zh>-F!8xwBu_@6JVFtDtDzAXCP@vrZG(kM(gA!+z;qYI)IAZy)l?!RUs`p%y}M|rma z#nH;8K2~{@lOEkq93)-A3jB%oLQ@RY8&Zj+h=^J(t{V6`!k+yu@H!lg#r8FeScPva z6Fc6cw)W-Y%HY5zIblrAud0Mos(e5ja`U*-@3BdZd&eTjVnZfNh0SQiH?_gCNTdYx55=ynA$zGOzJxw7n}<8RXRTI5+(FO)RVnFgQYS@#b1LCD!K1AYYH z`gC#Ujlsa{sjzK~je;byw+ONdwLDCd^9xlN;hr);$FDQNv=Z};mNqK`Qx$3-_)zk* zxIo9ZrYQHhv5aF+Kz!sxJjDMW`Zm7a{13j<#n~1G z{qgn*fx+d!g@B+lbT(@EEKo%xP01izm2PVA*<)!gh4Rh^o{PLS(8Z#B#6_F7fpUm6 zfAWqX2#}MWnJKB*lDH<6b%@75&1M734a(iHn-57>0RZ>iK$+!mG7IuOi1W=C*Q0Ly zo5^}8KPASO!JRgsuPwp8tfL$9y*H|Q2Opo&M<3BkHo?FrJNN`U$e&dUR*x@W0EZAH z5gs53|78Ce0t~-wz6Tx4Zw_g`?JKgd{0zD%36|t#>cN?PWnQa8R4dZ7dZiOIW3uo2 zH{1B~A=-mFHJPhEqi=$rRG1&b%c?9Ca;vlvpWC#4$m{|p{m>;{Sa=z9)LKdtTm{gK zY0q2cRNzRb-IpzDTpmwpGhw+A+gow-T4<})PyRJa{QPmni$5lYYg~rkz5pufm?UPg z*-reC?~uPmO5b#*VXUq%HGM-9f5U0d-(^gt)5?4Q)}oviJ!!O{;(w%_3KnReDis>@ z7uAU=>3ZF|CU>QE#A!nu_BbC8d(&js4$JuW#OdQBQat5x zz|3}dVO=+e+)|^;vTgE_-)$##czFEuMfFJnCwUdhV|AyUg@xZq&cB;pU55%{h#*+I z-q5FYfO1JVR7<&jdW+wl9|sqh@@{Cby)3BmQh<9+0QnhJtVs~nI|Zr=L38+?X3m!T zuZ{M{1^5~%d}gdoy5mhu_TBAJb*DrXf0PN`5(AzcRR)7OlsqZZ^x8`c{^_|w{Bwnq z=hj&%Ye+i{s^U}b)ao%=k6o+xrJQM_+WsVQh4}sNet2o+#^;r*xGx2~u-KNDL(nOd zJ}=0AVf}ve>oWb`IwDHaZk>d);+(30j)TMhWP1a+RyFbUyyr_h%Y z>LAmJ-gp>P)%WRyl-qoB`QxpckKw+TcGG84X>rqX4Gk7%JP^Sv)&eT`N zP0Hpt&p8Z+2E|jZVOeL|;Jhg3Q?2}QHLmOItBA*yL3F6~$b<@X!%WU~j$r7`v1hW8dBet^J)A6jv7%~c*YOKO zF9y0n^W?UeH$%H#3Il6_j*qWPz5iAInYf`1PLEOS4OAOo2WjY3ZIRF<+xVjUJY!zy z%ZIo+-Rh1~3qB%Xsa^0#6oKtSVKW+O?)as5DT?65yPfe*H`d2Y_Te|x75jnG4SQ7c z-CKTNrVt8Ops4XTDV=0r;~VbYp8HW|?zdJ;@BZa*=Ce#0Ql0kBm2n#mQ~%r=3b4*7 zYHz3uSi38A(aj_qakFuM3nNhYhf|k?nHRj#J#=Zb@W=JOpA)E3L0#-&$K67lNS{(lP@ za}3|`{DOaRFS0g|Rlh$3^4{C4eX2kX%@;+rvsZzYD} z-xcuo-r`cIW3wxkqbV>n)-ur=KIW2r5p{V-7bdf>kh3V`nPj$S^XTUXo+PR&G`I_l4vh#J z6x&`1yxN?9hbYG(RL&q@Tye?n|0Vc6qDP)9HaHww#YYkNiKAVe&AhSmY9WX{dLJba z_twss8uH!DeWhDHkD0>$H0&qK%jWWMyIyiV^#Nknrqh=mHTi>1wkE6w<%|^%UB9ii zIr#9^%SA-^SDmTt$cjrlTfd#kl|7UJ}A~@>m<&HPsSAM@_Z3y&#;S^FBgo})vNtzNj^XvxULkK zIp&~=as6(+&)pL>0(+Nq8HeTz?MX{Hc}w+`Yx#|4S==GVoew$ZK(%$PW~*BY8BCk^ zrBRQ$=rXY;A=`D15qpLo%90T$k*}+_vdAZ124_*~demaZN)~7E6ET)qvM4du{gv-~ zJXrzT5y^ebP6ifd3g^3qtBO4I;(IZFzja*V#uquuf>G>PEaV$HCnL~e(lGg&^(}a{ zd08kTNr{3zBH%g6yjdCZm-DB^n0q)Cp{nX#NINd2-^o9+HSII5Z zrHWGh2bzpaTQyt0CM%dZHuNbs#~4JHG?FmgV-Zy;cFa(SO^H{Hfs?A~^4Q2)U1WZj z=7=H9pt;~#Sl=MQNuyPz#qT-+jzB%nYs^^9Cb|(sJNp`98d(>eoU+x=r;Jxfqspo$ z&0iIp6TBx>TH=?bU{fFVR@;(G=|YJ8gu(*lp)r z+p;{y@b3$8(Np!#B(E)oCvMZPX~gObhu)oPaT?4DT}3K4zqxX?HJ;pEOYJuM4LBiS zBR)YP03u7jEdC(?Hc+caiv@D%lpF`YyjmN63Q_ zqifbuq)2(jJGb#A6FuBsSDlMzhmLstYMPFteN|Db~*T}FG8WGz+XQ;Wuz}w|))TF0*5$-T0Y<5uRBO{6PdKNSHCpN^ z_0%_8Nj#&5?J|+!>F0Z+^;K#8dtn9}W*Uhs-m3PvpA5sL`&^7y?Q%)k{yeZhcd~h2 zIYTy8J*yLDu*E{DZLb-IVfG&fqKXK0Y!iLb4g7a(Q-(euQ2l&AofG+6DY)}!JrP(? zr!Od0PdiQ9UMJ4&vgx-!V@dC+lJ$uo{n~=@MEvs$yeLtd?@eR56yN`f0y6jl#R#e?52MB5fU5lYaA9&gAxu;QFmQziOjX z?CT@0w`s{$8LI4gquh3aU7kLY(jBBhc2YWJE)r=IA?PCs(V*(yq^*2vqtDG`1n z$Cf_dCCMN@=kIp?-x0m!B#kYpX1DR7Rq_W3%GE?r2l8il0dPhy5-HB= z=R~A~7w-Ht6WDk%m^WUP{^nGaN^0oFVoF894AxAP?^EmLGx8ky7L5udEbRgrv^gj} zkK3&Kr+em4QA{6$HpgX;udh6(o%Lkm&c1yXb0N!E-ly9sJjt23kl1~#^4DX;i#n z?a}!#qpcwXe;4@Y4)E1*voqgyL#VY&FrHV&#GyCn0t&I8rMtkuHPNtI{?? zj2E&xQ_mHVcJqMjGmMDgd$J2^?{S3dgK{ZBKp91V5q+Zw_Pju{-B0i;h)HW7V zpU*}|o&=YD86+#a6Nq>sH%;uL&$2k^7yc$D*G9^VP zMrXYo*Sq1Ai>t$8xzt+yN<7g9_1X$SPyDIime^$a+0(dQxpkpdR|%pLpR?@=ao0M< zi_rZT9yz}H^{He*dtcNs^DB`RJgSFmXMkQOS^xRR>Y&AO1NbJQm?*NJUGaxJaFy)` zL-XOfE5@`uUv#y(CZTz&TFwJde6_c+Uy)ZU!>g*+ zW3Aeq%xwbAJh~{%ZAZBk?Qpgu1LvPBc6~K*;o*CZLvi5PP?9p`JC`Twviac)>Uvf{ z9XJZ9kIhk>{V0-rdEF4qmU!V*Q>nWC))H=IGgTD!^&H#SRw^Mmx}41Eb>&x(m2i(D zDC1rkmlV6ffXX{ZEkqG_K-v0fgXqG;tgFVn%f{Nj2fnrYT}hgZ=C;?WMo|;Zt0LSQ zVMeGBm-8xFKdoy^98IM=)p5F4K(q<%d`)5D5}^f1Cr4n+R}XE5je66<&8xY1$ug@G5A&(YC0%L_A3dz z-QZGmQl(+Cdh4%@xj1K^+J=$9lSjXmhUp#*1EL5ON6cF{slIYflw^tTL)QD_ z?FijR)dHDhdt16z>mr+*V;2w36AX&E<%p&C<(p2WH`H|cc;uoYxh1yJ?jc*HaguNA zu$n8CsI?raBgv2xO_LX>s5?I0(0YxFREP{j(IL@h@k(Bp*(p{Sw? zmNZ`uU`AA!84lrxVi1CDMpR4l@qip18y7w81u93(rEfqmaz4$|*x>9bzsZzaMC{Mv zQ3t&s(F9#%tlj?d)aGaz1#id~k?-C|S*fhn>M>><7mrURnXTxn^qh>dI!&sHAojV+ zsulXTW&C3#;=?!;ryCDSGa%|nog#qV z8}j|(IZAJ*&tqVJ*D=Qc^&h~F(Sr~PD}GP6le+$BiHEvq zoGs{!1u@PEG30+?WMJJ5hJU=h(#1HaJEFu%X+RlvC3&-BUYoyRPw&tlQ_LPvR9 zDAv2pwS#C3hD2cHQUyHdqkw|AY4h0DtIaa#oLw4N|5~Gr5iA3bA7@%e(zN%yWL4Um z|Eg4?om2C{aDoDj1R82clBpb~Ugoo5MFK@5DZLj8K8y7VWUW}E{KA0r^uf4qqxHBf&!a*6s)h8rM~VflwZJ{T2reSri%&EuHqDC@g&pa>>4xckE7 z!ylI6MI2S#4R@svL^1N7(AGvG=8!y-G~l*B+tR89CNqye5-DI3rvpbOInwdQHYL+$7o4L_uyw*kKFU07Sr9;h8-Ay?snrA5iF%03U?iZXH17?f~rB zU(hf-n*&g8f-jsxYL%`^IRMQ^^lML&rzB9iW$Vc*YrZ?>O`9KXE`iUc#qQq^0rL#R z6!8zg)mDOUw(CUp)c`6C6}2+@2(rf+H)C2#Dj5lTQBKcvpb_3J(i;?gw>7%Q0>xdh z^Bz&5LKY}RVJ*q(X5RX!bxF`9xehru4|Sb0PM8MBS-g>)5{$+fnErV;+V=I#77|PjuEw}TQ%adIb;ua3s9uFo# z^v0Y<(cLZgc8eDSEi6iY-}g4!?>e$2Ch(O4QfA{C1MzfXz95Lu`I0XP6kZy-YC4+N zeBk{wLMJuYjI~UU3&E+4x-(C5fa~gCq2JpW@bbq}zwnMj|0r<4V9*v{gxsRH`~(gi zz%3!dF2lGurTFt@=7~>f=ZTFb0}$Szb)=jEYX^~FlNOL)VQANn#-Ija?}VfBI66QU z4mGe)B|J^^1r)CiU_7!yx9lBPVgAL>>Nlb2q`d#m{cL9HEtKuc88~?6RHGz3Q_n-? zk*yP|-L}ZNiau+cpn(olhSV$&g8Ybgxp#eeN(@x%mYF~&KVwep#l#i_BuU?}U>Sgt z9C&Me143SA7J>PM#|S$fT4$~}IFj2z5vYH>6T7pktIgjUxC+YGeSc%}r^XmQoGjj{ z0ws^sA3_aKiq0zF+0fv_rBL+9K6jcMeNaU{Ox-h~-tRs-OR^9;wQPWK3&?Vnf$<_B zI=_K4@?GL)qqx<&hq?uUwdbJB!+%KcWzYcL=vkcanX~q9T+O&xlCAtPI=f4{e|GKR za8hSdr=ZNDeJ(aiFe(D z@58=_$Nnrj)Z>=z8&DIU0}G!UL{|_l2&#jNCMFGBQ*vNvGEQb`jP3J&f&Bz1+0P_f zh44p^$0LJ!tIwXEkLBI4Sy!J8YyI5?L@7qTZ)XUq4^X3TSBDxcB`DGUBFL{P&stkh zCUowg1^dVSmf3I`kjj=$St1m6b#PXv562>L3-p!cA;4Ttft{?psT2pC3kDDFbl`NX z0e=c&kfQYQR(8V76A8#Jy$Sh!6{Ft@r|*~QO0jeU8;rH?Wnk5|noA%(@+U^dln9(K zuTMk{gB?2J+MTc3lDp{Xk|@3fB+*HXCYTa1Axz3^N7ZkoO!;|9T9y8Q1e9lcd0-YW z_enbtu7j|AI5obLIs!sDddpX!3)1 z-&{o_m=wEPR3L4RTH2@TyOt@CM9X9tzv46huyj7jwOr~Q8-lZv9dhkZ{(pDhLv(u_ zb{*MsTST`Z!t`E>c8(-_lJueKpo#5_WD2TR5eVlOz~B+EW)pZ>^7z=ZSw>59AXBsH z#a=G_3TJN!xY1>yq~tL)Te#N)Z!_~#_H7s_V_Y%SD?s{&EpV_<8<1+9QTiHCF)D~A zEc{xgoRS_Ls%hpQUuOC?vxj35 zs%x^9?cX~WkN4`A$?;!AsqW#LDFMRe?S_+-qbM@i$>+}71e9Abf~9ik2#>#@18f*& zCQo$fIbGlah`ParLhI-K`jO;g3uOKua^mlbe6Z*J5SdR(8z&&^z928Qa)$1r<9)5M z-{7(Qf@KLtfU{RLS^-F9Vk1;M9 zeGGk|!p|yKmYA-bgY%@)Fx4j(tg>Rx0#qa@Kc<{_I(f2u>zNa=^%^$tDVK1vr4H_r z>?IqA85r47fU~&5Td>?S-kIBg@Xd#Ja2w;g{JgE^b6BulVMQV8o8-HKE2B2y%@0yk zZSsM%^{o0M#cn}ZJ|gr?Fz|JbTYv~AMTOk~T?&dv+5#D)y0ANVOp4F(rm;jdKt1VI z2t@!WJxg6OZkx_bxF;leb8yq?PGTZ)r58Lfjps3glt0;##XD| zR}LK7IvGCCj9Rouf54nk)9-jQ9d2cIYW5zPsZUcBz=+8iF**O$|MJW@*_BZ$Q&i9C zxdQT5NOanfl@TLCZB>9J4wC-hHS$Rr&hr3p_)FeUmqme#oKW5ht z#1^uYI*M4DcI(}YU6LWoz@;V+j^{z8KIIo0nz#^6rNOKIcf4l6ItH`vm$)GgeR$yZ zWOYnY^U37|i1XWBo^lK`D8#=_rN)CPdrwbvW}T*5~^b;)Rf80IK0WdiKF>-{5Ooz-YR&*EN4Xk_N0 zatMI?xq7R#h)QA(CMz_jRFKlwiJ7iKX{2w@_wV|IDy---1h*BL zhE`7FD?DBmYOBi;V7rw)3)Ici7lw=bZG-6Hm)CJ;+#tdwrDy9QOdf8$L9pb(IG0V2-xrS@7nW zWqxq*zx&y3mGLc}G%i6LJhoI2Y$XnqjTdd?XQ-xe94ZMSj4GR8q|cs=K^b@)ysJd3 zb45Wl={cF73hx^0T33+vWL-iLc+P78TS?~1{3KDl3Ql#lm{E>3Y5dgJoS=lJgQ!-k zf6$*{fexGzQ=Ybt-KNxxe^a%`Ym5K34+?Q?d=6UB35e*_KS2|b`Qz+=PqdJ&8TecT zna`lFaKG5;uP!mHE9Y$MWYwvh&6VuSalRcnT4>!8cvLdGsC6q*?&53+^B6LQ^HAte zX8G@nfL@nCqXc!588- z_8{qWl0KAtpYoC;9(X_|pEQlAvzBOyRtv!EK3L@@gx+eP(rk6C2Y>(Tcak~5mO2!^ z`y>wRs4>#2{Jcf5D1@NRNu{-_`^5rpTC~#n6yC+uo2FqHhWCKZGJ===6YV;xQdyAE zV5LP#Hmkr#Ho%CLFEt);bYKa@#U_`t9c?HYZdN`I z)sEHKB0;^xG@0=c)hR%Z;&Ft2h!_5DS;t47eD_*-y0V}5fWn}`=s6l-E&|TNG3VFlht$i|uTbHRnc$hu$@kVIeQp-*zN5+8;Ecjo!t7|Dp<%MV_Ap1p zu!q_CdlYPg3i{*}nh7=DbjlpDuL}SM^=@sWJ6Lgfq<|*DNQFM{x5X!U&NGo>sr&@tdHf|grauhTsQ+j z4`^0y9LmaY`pgu+T0u+a5SDIeZxP%E z&lgELfDt)aMTAJ51#kh4|7mTu}A;`G^voIG;2akP;O4lvg);S znC`P-1#I6uQ&Xc)3`5c|RxyFK$2F}#=~=>Y1K9|hT`e_HX<<53n#H_i zZh<%Zjkp@U;C6hKIh^u*cXnz_-Bg+;IL}{2CJs~an0(LH4&kB+)dCHc=#Vz$W$S(C zx`#;&y@&n$d703xet&qO{ke7GWX43N^1a*Oc4Y@0o5AKssB$s1nPh>x;Qt;R5ssDW zsHo>QQI0@w4(=r0^Ui*Dw7SHk#Ak<(-HR z4b0gLRPkyviK|ECHYv5OpkNDOy@FAaj1DMut%dmVvu7;!uj%@IGw}X(MW=ELTjI6J z#AnCh$k=dZsSa&)n+Y&WwyI!e`VEZe$Ob?A{Us>)E_iu1$#la~%;Y^%|5vi=qk1ox z&b}T1p35;^rUyY2gId`HD`}NuGzLYkD4L!(X5mo2`)X(L9BrWW3S(R(;Z*;CN z`G__rvN(Z9Tg9RQft03f)gJ?UQ5t6kr}A*n&vO8T<+W;nW7-cv9cXywj8D#jxjdtW zZyxjb4gj$E78ZLE2az1FosZYQxH=q(PK~E@)~z%~886<=H>b=Or4e>au6z-p0(sk< z4lc4Yx!$@*jo6IN7>lvDjIjwy^OEB8Q>yfmN&cvhSy2SFet(h)e3X7=gTo zJh{nFKPnj1F3ju}8E%V@OR5Ar}HY-A zAT}7t^mG+^E#0~X0=&r#O`M9XuwEz)Mj`0bzhcvl)3=2fN7=TZ!cfC;dD|jB9+a!+ z<8n1U_^NC@p@~8 z?UH6sK_2DRmpkmfK_V|P0@(wl+kB1j5B%I0JTH_CX~`(VV+I)-CY2#WH$QXzty!^( z?C2WSTx&-jFid9p(;B~OsQmEn8sfv995nk^87ebzLVWQ2K~68H{of1yc~mHFUbp?Z zZDPq=W9%Z{&VDk45Cd3n4}<7}kniDkH(ck+U-s|%p1tu{?DY)BzZd)PC5>e-m?@h4 zWDP$VeVY5>jn4`LZs!OpVViRkZ{iPJXq!~SCL5K+*b7qbH+43$SbfU&*#dKYR}ZLp zGDN!a+;yHa`-eLpKyE=Mj&{@YjTHC^!>!a0?%eog>rVh|Jrjp>q^Gp3?xb)3L`Y23{3`Q)Mv6prZC6YTYmA+?dbG3N2X|g+GZY?5%;szy zz_Bm8_&OeG_vw(@FvH_xmus|7WtB*xxVX<0^j%$*E~kZL?aS5=0}h)p$lnLLHg8A- zp7ZoS8vQkn&%h6GG_5ad@~nQPunLZ0KbO0cOP`N{tD~~5-@m!YEXi<2-Yj9vT{h67 z4M1RTJ)Af%3A-t(an2BfR7d6NGTr+o5S9vvBF;?s0Bsv#cl)w{axa#WD18lD4nW}fiuYx=ODA%pFYCA?Nb-dGB*g_G^R1NhTpp!y$@_5uj8gXAs#j75LTqQdXq3W&xk zrhwBVQKv(K?ouYRuGJl~aL$T9h@GUs2TrV`eBdT+bK9 zS0x1ud){`}bx#IWsO15tvP=2b!0qXOS}rvr-&GoYbmswe zRP>_&FeoXb3T$Vr>_71NoJ>lK!S7lsKt%0Vi_40oLn+HIO7v65g+iGj-WozOGf!TY zwN7CjAz3KjAz~egrWFrq*6oQPzwE+X67X4Tbp+J?Jo!7XOH;6dFn$c+cCyAhHp8NE z_2L69zVuEq<1J=&Wm^$V8Or84bWLmKWhs@F*TjCmr@+OW?qf0=y>`G5Cg_>k7&)0{ z!GEP4Vk=wkD!jY%GI!=c@*sWdE4WR+)xB+{l2dB6bwzZNxnyN3c6EoIt{-vXGY!bR z_DV9MYJXC#=)d3nHfcj-pxP`>v>NMNL0U1JUHthcyn7H%RDP6sb~uJ{Mr@307ko?R zA9{$5hI{Wgzd}+41;$~b2NR`yb1awmF zw+Ct5j}bWob8t>{^iY?q-!rcDIZ6JD=d~ngIN|B8kEmb&oO_8U4XZlPZo>$7Wk#hY zLKp}VhAq1(lkO_ZC=*5$ykvcNk&%tqaiE*x>p1()Ycp^xUO%?x?wW`s40Xm|Lkq*3 zfshzL^QP`ntr=fP9=zDJB82hdC($~aLJ!InbPK-eq2o@-$1BVhT$js*;gh|qgBLJd z3=pqTj=zz`Cc&;w327MQDs7Ey?8q?ME%70vD9+V60s}TMGEK%tVIwfSC*i1mPK@Xk97kTAU!pq%M;aH+O>gMq~}l^=`iR;_a&lA9Ow zXBq>Gz)LXvf&i8C#6>UK{I%l6YbeOLUU&mPG$*F8MbJ@Z|tw zlA*%FI#56fv!i{3Bb05jkGfLw6CkQCy+;Ky`Dg7WWxR6KtUgY3L1&A*e?m&a?84r^ zIYsNHjl3H<3FggvGrT4pDc3is(Ms_7cPNTdWh#6nz;@8H=p?B~@W4U183&>E2%3{TGwg*bc8nr_bmMB7XMy+*Wl(8kAE9{*^En|4~!z^JX$q zVRK0j$tx}0^?kCfBV>oVHcBz4mO?4*yfcHo&WK#rI#R@fb6^W(%{yP6BfV;lFB#I`)4RL+Fzd3QFZIe>nXZ~Nx%2H+ zCqx8QQ)U`^r zFfQ9prDxx_aCh;yo&68G`2P-hi`iRWX~dJB9NIJ^-jVmSJR+3;Olkm&gst<^mwtKv zX%3?!;#5F!^AYR^tZLFwMUxo)QC+cBdDop-pZ82=t)Hrf@`_=oWH9Lpb3J;1S$m%et8Y6n1ft_zq>=6)?1 zmM@SETOJKUC@{Sy&zKBqMoijAIG|1Wj+%-z@S*=ejh@43j$MI}(@pom2y!b?kU5ko z2j`x^q?>i%RRXLdvlXv0QxD6n+VkjwfsRIlz+IUqBE-5QvT#DyP8gn9B3+Uk)Vy8~ zt0N>geuMag?W`E_L>>`{Aw5U|pSm;?!oTOv$_1MtIvCh~8YWL(%U>4(*cE}taCbXtZ=^8lyHYg6-Cx@}&J{?K zsKvwrWPK}$-I#to78nnE4Qq#8#o+5}LfeKrqLl&`--|BCgmzV5Suv49J>y-Y)M$~y zkq7qiutR8}s>nd(YN5t8lz`=@(gi}=2F5eCgf+2dCM_Sm5w?cI zpo~O1BdV4XlbBHksZ#f+wJ*<5*vgeB`VK<(Qx1~z24Z5Tp~@ru`Fno%(K~hpBze6{ zTgd%fO-P;V-}Zn)MuNUnFl!ZhV+O)*c2^i@Y!Gs$S$_pS{0i48jotEtYb+f7j-<`{nbx*eMxU&)l70 zGo=l@&q*ZwDIfiQgfs)wLRO5}qvjU!#Pl05oq&c)lO*S-l#J+_{zLs#?qHx{dz<2F)8A42uRG%am`}dA}?i*GlXE%v+wbA-UY>rg_$q8Sx^(do3*26 zmDXx9$tETU9+f|`;Gs788M>~JtfovDuPrSMrCA6YRxYNiYuUG$=30?73t#Sj4GU9< z89~0nW019d*zVK8wbl%06nF@mJ_u+FaRAdXqDV&p1!Q#_ZS3}4pF8jHCswk-9A)AY zHFIe;2%#ji(makNS%ntr|Pre4DAlEFS1keI)3v~*W7o_To?z%oKFVLe{!oNuwh z@DX@hm^x+afXg)p_!%4~O4Ty1qvF zh;%_H#u?`Cmxs6WsFYj~io1QuCQ2G35gLgQ#%iDg@xY&@K2sDRS9!17`ePQVbU+p@8q?jdy$(9o z%*aA93R0X&^0RhiJO~9GVt$2L|B#dqu>QD^@L;yMy4X(u zr^{Zu=`g;}k)2$a4m`4f%)j>f)>c>exc z&Wl{yAQ!t(d>$W@MCvyE7Znc|(?v%fOdB~yA4p)`(>cT4jd}Sn1ip%&x5ym!vi&!8 zD0McNDI6?hnhBYUGuV(0LFz~sAGMDKUWC-+MshEIKcOeEihtDLVbSEyv!=_b;B*kp z`~!bpj*bz3<}IQeFTPYS3=fMpj6{(l7wd0534XSfwx3gXjO?NoT57w;;M?GzZ2?vR zc;Dk&vK$5kx)Z!98T8fOh(~#O1HSHsWUEH_$LBZ%KjZTI>OQrFV_)u}5_kMv>D*h< zWGA5gPzs62x=zvIlgV!gXY$B$+NDyf_*4l39rBAdhre&mk^72IJd~xUd!%`JvOAjB z7~(kbJu@Y~OSVhJo~cJC;s{2EnSFAgBkQ??J$rHk>Zf&D z%*6tcIC}Bid;gKxSfQB_53v5-LD0}yQdqd?Wa^w1mTwhjVOyOh#D9~85`a5=YyQmdX}6tqokp80lB@5@21<$S zVVBKIbd%3=FK00@yi4Th*X;bdD3VTu&^0}=U9%h$5Zg&t^*#^4`{Vk_CI&g#Ujt`=k;XwTrc74;~!07Xp(T4jpYR0_v^vVb}L0|SZL>7 zVY$ktwq=}+b^G;rgpOqylP2&KWkrl~RxoA)iUc12}JBr1lbQd4aLpXmN-Fkc} z?&HZ{Tv<2RH{%TgB_L$^*SFDn0cCSU<~pdM?6eX<5B%3R%>MPZXlMimp7g}4^b3($ zm{^1-5BbC#auLYfwv4Yq*l|nT(0WOMy6ar6?l8RgwkE;lkmN zM|P%`vsEQ~(R|S|tL&r$sfAit1d;R)$h%Wr_i#@P=8=SP6HpibC|bS0Z@ihIOeWS1 z%=uQ1#+nqjGIvv`Gf^I?)B=czIKF1YdNF=CN2JN^&GlT>r#pFVx%=4uczaRSrA%of z`~S##gsmG#D*(Y`$Me$lSL%XEu> zcZL{bTaNtyjvzWR*m6gGVlrCj4)Jy`CkOVPQDNrDpWPk%Nq=ul1kEJXoT%k=Jl1bn zd0HbAC-&d-3jdG2?~cdvfBTN?dD)k}vdJh?_RK0XJJ}GkLeqPT%&!5lh<@?RmmCJd4&d=vq@AvUOYJ;rr?7J4{gi-Z& z{&dB&|BT^gn%wEF_V)I@km5&7W)`nC;FElx4x}Yn%wUf?o#6QbRpqgW(gNUD`K>nIMI8>Rtb@Z zTA#NMg%`i*JkhuMwX=Kaw>=|?hgXkg<9pD~%9HUd9Qf1p_?XaIi)u~P(N3dABA~}sFQOR+2XzDNT3v#ZA@S=E=dw1m|N`Qh?z{Y4rj#^b8?_Ci2Nkly?Ax}ace5iGcpAU(N*-> zSjP#|@8S2$9ymFFa4jRxeI)dQ5ie0D!5b?GBZ^*Z%@WxRZmmi>LN}($*Vs}A%Xo6R z^6K-9l<|B$-@_JQ?BgKz zhzOi^Q_+w&b?et(_U{!ia?P<1!mLeRD^7svE+Y`Y1dXQPJT!gr zRCq^P<-IFaUxFaFh;88taR~ug8iFqT*^iK4AGUErZQXd7UxJW8?&$GyVkwq zDQS}!F%btCE9~c>1_cr!m-#F52H#nfK5pN)?xTq|?D5vyPAq0nNN|xVZBhzzw$nAP zz=VI6Xb*l+kkt5P#aCiJFctl)1ylNZTar=2CAB|o^j3RSC07Xxe~-#>C5(A~V9)zU zj?-9t)1gMy^pkc6P-G(IxgfkXP*m?YMU2P@w(ODwsjC}p*d7znjqL5y*7q2FQo=o( zt|d~PIw(u>>K*&YR28k%OW_%`E}9(E!uHs*r!+2t96r;| z7gEx0RW@c5n#7_g92reQI`2P`NLgm}3<;P~P@<*I=(G9p^B(IaO*v(PXjGYNj-nie zh#*U7$yw=hsb(gk@h+CpGl7zdx2Y70pV zqplqcb=Y&!&hDX#DbgayLw`rlyEv84^r_%dDwEWPZZ#_CRL)FvZOyh^V5S;ov}Q1g zO&uW+n50YlwBmEd7l#fb znNidGS1gcy&Cdl`YfY4WcKGQ!f5Q3EzCkZQkgsu{nhH<4g_z!!pgNswc=Ts7_sLNG z_xDnt;^`e(0uxCXab|uDF$wB zI8TwWoFtx!u#GQ0q_Ln_8oVCN{L`jA8h`Db@IeNB=uD}row1KLzg*&edeed&4lS1& zcMv1JH&t9S0C<~Yp_bR$6PnrbVg*dX(NsGOL{&vyXGat5!UF6mcE7aZkl(v)rX{UO zly;LqXW}dNYI|T#g8UE0Ah}+({h254(gcNV)5?cF%!jroB$0G~sARoVW?F=UY zmSw1&KRY8f-db6TOrAr3Mg|{OfUX;9&OQ;ppL#onll1(p@!ku~`n!ol)wx5jikvt{ z-t)Z6@My`f{qQBaO#X@~NiH%QlJq>u6Gz8{Z;OwW$kKRaTwO|Vr%4vmH%%NnQNdq= zXDvuu-i!MScnhw#p;}AlA`}_3x6u>k80Nm1C3o459sSkA=ADV3m%LP!>JqOIPpG}v zjT7WYx5shhe7brQ$;Ohw&7XxsKo|HyE?nKB=3Hdu6+H+vAPj&{w!?{Gxs(3EcPf} z`}4a~7PYclk3>dxESorPX0rDdw25@S5H)dh|I&Y`A1%7n`Vv3@lN4jtlH{Q@S=p+$ zi92&;KA5<0(TvMEnD)n9HzmTYD{F&N=Lz_G9^%kQ3mc!U^6LG2y(FX)$Bl}3b&Z86 zEQ67$#Y@Cx`+Kvq4G`oqUZ>xi#Kt7nZYt1{|%>CjMX8B3YwV6-S z`@>v!LNrg5K5Fijwerc5e_ZHP3iCa@>HTe?S?a)wg=ln``=B*yUhj?YzZ~L!0Ur^E z$R<+y;;e315iZCQy>+|b_-Xhh?7Qdjmm+a7dwE3{8Rv^qu|^c1Y6MWnCB54Y+U}hG zVyXVJhtBg85v8C&q?-@#$*V`Y45YWJdW})n-2^5G1v3;z0Sf(HJIo-wBC&k1$PsvO zHbXCx&PC4Vj@ZMk@cdzEjsCxfQadkM|6HeAwIy!*oTcPHLBT@VHXihzF2j~U0HIBm zx@euhUM>^nImT^R9Wb!BeBejb852RYLxt6*r;1N(ym4R>vqL5LTE8?^RAtG&zUz$_ zQsmnDOQ@!E^jC2A8G=S#B*CiBv~Fd`W`d^4Kj#ujJ<-WEyrXC=xy_ zVvgmO%MfohZ54>l+p6Sm8$RR389c)m9ubXu{`}>a+xMHOa7zS-LvS&qw5?y?Q&9ZE z)m07FC{nFB-uteiGy4~}>J9sliO8&F(A#fPVWWzXkN&X`ors0_xm>XRkA<)y@|YQS zF7bNmKX(a5K&uw5xgv3_@>fT0`h<`;*6(Zvfe?}E-Q&^z8v zeA`tINA??V=#VbS7P$Y}DZb}`G!?N2b{LqS6*au-+*h(+R)`gf3Qngas5DR@vHQar zZpzI-rx$tEmfooypRj0GR__g2-7Pt6AC!SHolCE+=JHu`=^3+G=T3?JnpvP|_>aodX$=T;)E99xjOlhZ zGLy_N{29s}Tra%%;A`nu{1WWgS%kK1yn5rI=^LJ(>o|pjjNxYv9*NqtV;--0%(vre zc5O`A0|_%;8lSjn!))cOzCcCoCHjSsF zVa#@e&x20ngGSVOJAtBkERp$$0M6HJWMAUZ4zDOF-aP6x`pTgrj;;GRF8s1{MrEUR z!QQRPZm%o}D$ClfW425QkCz%WRb!=GPqg$auRn{;qqRtaK|r}Ne74W842uo0Z@HIz zJ>eI>jhxTSFF@3DdPkw}dkR()VAWevx$HsRa!0rXnT(7E(p!f%@7+TjH+Dg35Je5T z*bER)n**Pf74$gn2`@Pp*SyXUyDqQy@H8;k$Elu<2TEB;kmu(48>rZt25(?nUXY~t z80u7wQhC zcJiLa2vwzieDL&bI!}}>x7FLvFh@iGz7+Y!IL^m&;^o*xDcNuPPp|(24$5Fl>oUyO zIhp!4@bz+vkQ@NETY(c{PT$S0yq9@d_TmSCGCx^s>5mc|G<+jhp{fy7O9_C&NP_N1 z1W?FK#+fsut(V`ir7X)%6uQjRKiCRQ3hfv6pS(@sd2Z{#HfqN;BJ3^W4^4_lh5Itr z#vZ}!Ex&CQ6_Z?)?v|;olw;Ax*!Exc2Vw6y&HUc==KT~MPJn+KhiupR*ksdF_F5X{ zjOK&f+@brK8vP?4$VahZuXASl-v4#D;&NJR!2ThNZ9gtP~x34$Ia}eiUJ>>YAq|K6 zr0=gl!{NWZ$)Q6E$ov}x-4UoY|NECCKfIfMyZWoi|L`U%=r+<+Od9lbA=^YlRFZrbTh%dZifKr?_9^d?yWP)iJWgYsBX%}9qB z(k=+&jRjpwoA9=UP6HKiMrYtxl8UI^eg$ERC&i5B{=xJ^Ryf}uw>~S8&%X7@AF1&vdG? zr8cbnr5=vf&eX4tJ&^jm++IHf=K8m54`CcOIke%}K#}=bUgn~k z&&iOzmVu@}K`EKq*FVq$7XhQcJ438@rtS@1TXMFnKU&K ztLkv*WmewaL7oh+BD|pBy%9j%j()5yv-c$LHOr+t=9bPhCW%m81oop(;B@7%sle`! zu?syH2es~~b*C2olwZE<#f4I7gW+JeW?{4!G2oiP9Zu<9!zOh%fqh}8-1s5&_$UHQcH2hh;v(Kp-O8^nq z)lty=ZKl)|oXz0#+lPG@4)OxiHjFN?yQ~@mv4UnAF>muD<*%{_VkGbX7@;gyeaiy9dkFOe5zT z8lmW+2U|ksMah)TvWC~W#uS!eY)?i}JLn)MM+QcvLO-3NR{x{J$S)5O-J2uh@ zy({!E{M?G}#_H$^nQkRcGMQ-XYUt@!0yFuYO8y%iSR7WkqOnJW?VJS~K0hDjmqQZ? zzTUOG_o5?t^d&9f$AUD$V(iKgva5gvv-}F7rnsLVjjnzpqlTHy7DpjV`yF)WJ@5 zWP^QPPG4C4HNsUEpViOZ*gnm!89GFNXiwxlzuO(fZzqLg!7rW0D&b;03Ua#5Fy&Uf ziRvWk`T!%x=QB9Q#5V1*gz(1wLr^Vg2Dq33#5ynsT6`ppJ--Qb7lzH;yo8132+LF) z;gmg>4|NH=vs4`QpJx>W1k%C$8*&a3o*q0QWKp)-co89y7GMN3oFdR<@gR^O0#khB zr{^9Qr+LU5)Bux7CcGPZoma}v(VDr4x_YaH3~Z8K4XkwEs96f1et{Js2*` zB|NQARv6md5xj`)EqMkHkOsU{p_f?mwTivq9Uyy7@3$oVg6{Caejdih(F7Mcuof?t z=^Nw2prK5+9jmqeyPt$cUS%q_vsV48g@WCsGv6Q0`k{Zn{5R@x%1}Ad zup$WzlNLD7`tQi<_^^F=0=>K8O6iXG)|Q$a2}R)hgK#8O&&h0-S%G8ctzBexr-tjX z>JhMZNWo|BU;N~=>1i>+qrg?dnSKA1w!eV*-ad`1r&o3j)}{;Zf*B1IY4eXj1^_>! zd*@00WJ(yQ9ti#bNASlMp|O)d^Lmb3Qs?XB4{r!;HP2`Z;ZV;J08jC1kdO(SXp%Z6CgQ;3%#E# zcd-L2XCS$p8PW`ww5dHWcl4dA-(9c!P|#O_8H8!h1*WQ*v*`s>-Sf#!HY9?}^fghy zRiG@P7PGk~+D4thjEte%5%Tou! zUIFE75Yd31sg&n~lSwFRl)<6ZZxXbKrQh&d7qdx^lJg3=^N)%iK)>>5X(Z?CH-4K3 zCxR5Q=MrbbGRqMejd-~~k|=}yXo2FbRNjT#0@MabHyruQt-EmQ28pK~6Iti?<{2NlD>xxhzB7Z{v8BmozbRfR{5DQ6Y$wcLHmm zQSpTbIf;<6foW)Zw5>?;1dRBV9+4Ij7EL?oeC9J7L*y8?xkryfB7?V&U|MwB%Yjdt zxq`CHpmISFgNRrF45-YOLFAc+Q6%8c)!5Zx|3qU=vJ)_P?b4pB5WoblO4n(}!SEOi*21px>kIHF}9yvsA<{uBl0 zvt7-oH{(ojcVp05|4$Pjal$eT&BVx<>SP*&&O~v)!!7sk30EI*UIHc#oe{0EWzY}C zZwk&}h!yY+zag~i{}T8Hse*OndZycqVHXz+w{pfwrn}__J^kgswE%jDMtuqmCPJTl z+Y5#tZr_K5rgJMKQjy3Go_X1MZ}?+@V8s*hJ)Lr3$BtMzD|H}i={nuHjiMHq^uCmr z!vy?cEc`A<37Lt#=#@8PRPs7apK!>9s!m{kXZRE_oXda0k$rG#jyw=^^t?<@6ER1j zh&jSzm=8nqBfYeTXnvq)@R`vA0sNJA3afQKqB@afRARA_rMGVjTmLer4q7R!#;;d= z#NgcmkNr{81!oAF$vc?6&2>nUtH?`nlB+5P(@qU9^0YLV?Kx=$n>A#ly_Y&{u5Ra%*{ai zQ-q>&g|iEOLpeA=*~Zlj*kSq*91Kvm6kdn@c99aX^|7?!-=SA#K7(7@iuLkc+flfQ zPlo#-ClU&!1rd}cF1tNQ3|PU$4V{xG<=^kgvk)TAVHWzrh!OPq@1KJP8QeqA#hPc~ z&$Y(((4MQMx-QB7+@qa-;{{N-e8UiJP9)ax`C+g0PCZydi6n{PwEIm60+#^}7JptO zx2S~k&c(QhgqWkyhvfIE4+&lhtbgsVn;D{gKtsM6n!MK)yMekz3(dDhh<9}uRJ(Zt zM~quuXAzW)*qOl0Z4`x#(0VdiA#}dI3J^Fr-p_P;oyN@sv}P;d&65Mu!L?mzqx$L7 z%mI%MLm9|G99dxb(;W)G>Vt>ILj+Qu1|Brd;CI`J$r%}?~Nk42*I zez7OyuR-I9gN7BjK_spHxV2(?8rI3ew)yJNO`}fn3#?l>gp?96oStzu@GRNZZW%aY z&#p5S=tQKhLd@?H)wp$z?3021wd8A@UN@7$< zi2wk*vpiPe01`hKB%a5ACR9ix8pd-3%}O8KXy#TtWk|jzGy!fY<=u^^$l0_-Dispu za4&ErjtCLfRdr-8%6*~h?Q1wp5@fGn3DMcqe7EU6>H_iI2;5d`4=Ho7rExmjg@MYc2;~P>6lX*vLVw>O& zZY&hWdFWbeNOjx@){w$ly?1Ko{0$S|D4t_OeCs@vl%n>+TPf}jrt5?v4P)2`aH=EV7RJJ!fR&kgUqKTc!*l>- zIA7ERG|hK}T%n3k8}lERyF+O(-mhbH`XK&0qfs7~2J12ZU-j5rZF+sGlP6Xsv%gmdA4a<2+`7T<%wPD;lHkDnG>_~4Z2iHIH2C?&o` zl4F|!WUQUlLb4GVBAR1-?~6(cC=jg&IU+qmm&70z`g|&V_dFT0V8IaDl|&95R_sF{20sGWEIu7NNf2ZyWIY$%|`AX#2VpHc9Vkanx{u{K9;4`q)dNY&i?O0LFrU879rK0 zSJ+;6BPL%pj)6uN`u-0rOdt(3H#qlJ8%S6FLOC)ux2I;v470$*OJuG-LQFhjQ=haH zUx)nodm60IcpO=wk48Vaf};&o!CQ3OZO*+Kd2~InvXQ~^BO?bft}wNjX`2^Y$&=MS zY&hBr1#kboPgw|Y9N5oEWP`mY@u-F4XVsXZ(3%|eB}Np>oj7w>EU)Pp<9i6HX%+nG z)YK`E)xW8WSdQCB09_RIRui|*Q}~L!bFAg1a%y_S;b$tji;odwkVyhB?9Qy%Anz7S>$f9 z@N{n?NBjZe8Ulz2kO*xG2_+^X^O0_54jq4Z=S{zX(P_=W6yf$d&%HS%hIJ!JINoE~ zQ&Kh=axC!C%3cu5X0AYf;dIQ$b_PDd2lg_T8|SNixU@+5JtXt^{|op3cHuHjgS$Z( zgc8y0*#d7I0lqI=t7z<@bl170&@_jP%YvXOW(DGjo%M=eKkwqC9w7P}81RlQNSVWY zD-}kfD}i1ZqC%Gxv!73~hghJ1A2%vacT^1QsM`rcUZ-191LqA_{s~MdB9Z!0s)PYS ziw?%5NQUh^jb7%5^yAl}O2QhnCB|&6Aao!{WD8OQj#qvg{~o-8?Nqg`)vli_83ffH zA;2{{grLL{a;9h^>zB~H>FUb3cE41BFT-N6#b-VU$0eOe!iCbSgXQuzpx!z^^5?&gi5Z<)DPCNtV3TP#B({r&9q zZh;aKWMzn%Awa!l3}#aaqQ|q^-4kYrKHnCoLgKDM17k^Z1I(cnx&OoXAo^(Y;a|o8 z2&lHPiSfwWzr*UX8X8-L1vU;us_OWrRWA5R3msbBX*C+%ZjtO35x$;$bO80)2&}Vs zq2QOtkD6Q%+l*8%QXxBKcgi!pcVN61o zLLo5!VYosRMJU!sP)7@g2vSH(W^ZWyO#^pGLWsu92~=Og!I-x%sZf`sazeAE#wcKY zZ#W(;WWK%OhP|@^PMr)ASI@(V=|8mfhjYXwHlRLA*b+fb{ztmQqdxW^W4BR_9 zyI=N~;Auz&lbHztV0q1|2Ao3RT}u%`o!*-`%fTv~xOOI9(~BZWyx2y|PJ@|Gu+ zl^c{{$e~L*jyUFPYD8J_VKgTAb7Tk6#0JVe1Bz~RhNv@J>6d?Ya@PGJ3ztdSXiPGe zE;Y68; zr9>KBf=@(nMPdU$N3K^x%L~ID;$$3}Yp(zDazEs}{)2i-A=1K*Of-2>*zo5#N=989 zQ6NMFZlh%4T)hN9V&+~K)D$15&b}Cxc-C60OzEqbk;re04GqlV(+lX-KGrhTtgr)ICQ%rLXiyH=(sR z$}UYqt8=Haa@0D8Yf)ywrNRO~_NA-7`UZsdwn4bGYKtIYVf(!^A&M}bw5@z9&hB~j z%SqT4U7(t~JU`m-@ZnPG0^0tI+eSkb*M+iCy#TkWz;7l7+0IBY1Oja}c@}2|9u?ZwD(4?!oe2E&2c&do6{Lir z{#yDyQIkLHZrIHBJv3C|B@bspLg*J*%rT%ZRUfA5l>bS|mW&rvGmY;3t=ue$X#g=qR9wk!ptf=B%XHgh1dlZ>CjnL(wF$K4TeSW9 z^np3u{l$bi1;?>trN@v0`)X`9%gc-pIeJ+~UN|6^oH;|6I~pC5S_a0dM&Y{OOTm#d zwZ`}ej?>ZV14)3NjJ?p}#c|1GXW@C(;R|Bnh|1Ue;N!}IFVR&e|3Qo55D|qqi|WD` zsnd|h2-}2!AL)W>r3^W16(+m`eU&b#>Ch+LCLI^qi;05HsV``inwS5+w>Dfq7+23KIY-F$WFLa#QEN^6~ewqlzn&ImeewqN*nhPfk7)Z$1j?KuGy$Yqd2xo zp~|pAc`zuCeA^4bOQ!ioRSu=7{vz=}>&B9(+iEMuet>-1+}P<|Jp@z#fzVr8!}@aD zzw$nH#l<+~C6aOLFvr}*u2Czueef0($W!;#uZHE=jY+S2|}1WqVKhXQx74I>CucSnp2zym97^x zYATGV`>0NWQVprskb{TYnSKgyiEC`eq5cD1=+YtdW^{yNla4CE8rgBFV%CY@Gg@KY=4VDTNzn!Gbm_;-&tDgpsOe6Wxs+d;ZKUeJrd$DOg z;^R&zgZk;L=(*AI+<^z!1Poi}n8nlXql^Vb9F1Xas2`)cP_2P+Od-}d(7-ZcG<>jQ zX;wiF(@uIYqdg zRL53#Ao=(Zs7Qhx>a8A1eVu zgWA30pTF>PaFdofj;`8_-SCsWzdFSC1JWid0E#wnpX8PjXtyU!=On;#EP}&& zeE6Djs}mZddWn^yCbY`o_>I-ZT{bVB1SWE}_&KIXr>GFkfQ~clc-O7EY*>jVQX?8> zyRWd7@-_K)$*ZJ+LH_m&s{~&<|B6_@swuulAIdj8R<_mBI)-E3(1qFEZ>r;Zum;nO ze+X{#NPbmqla~Vd)jb_-^ku&<_L_YNc-utl6Mfx~xQfdlTL)iz`IgTD&86#@?oTOa z=TOhxn+eYs>KILtCRUY37B~|+MnyD3OuzyFR~3?khM&r|-18)feWh>{rVWO?8^KWh z24(33wtB?tHD)iv5)wm6>_f*a8y^0)9Kk@>=Fby8IVsCu0Dt;Qrz03hUEpXy1;his zjo%RkL4@zIAUtGw^|MV4{CwGbccIXQG2d@PyP z85@7};7I}yJ^8C?AAg{o1DmbTQs)lf z`BuPyA;2)H8}P|FqkYTUkrLo6R4vGH?x-41LfuP7T)gSF37roGb@xI30_VUQi!iw| z6}Hm+0>tOH4pYiu19WVXBHbwY7R>v_S7!7AD!*9&XLf zLaa#$qM&hd39v7cTkKL&pr*3aE1i5-2=8hAT*3};4t!90(%K>ne_>`x&9+wNCj{4- zgv134YXO9Y+|TED!Q4Q%o1|hSmeRU^PL||8Ud5WCf_g>o-s@*~7!W->H`WXZOsS>T zpLMr~JMu3uMne+>#chXGd1Q;Kwpvv$K!0wmF3BF`#}7gQ{g98K$Xi}R6n$Rd(1&lS zjsY5fR-qt@wWTglzOE1-hdQ{S7;p@%c;4FgDC4yoj#AhnX~n5aJ?kxGQi8RIb1_y> zvmt_L=2eN^@a2`#F6__|`Z>-uu6QtdELT-rPraQXW$E8c1LO?L<3M|g@}t&_a&AaH z0<2Y)thFPP;O99+IeC%{)89U{_8?3Ieb;lM+7Yd>uUj+rxk0E^-a3PVaNX&<;x8+Q zF%Qa}MK!I*Y7mo}I=D;`M$r#O(OX5)U+RMR?O6|$v!h(SHF`3yYgumhuZ}$&$3VWt zvnZaBih44-pVL|u$YqcAZRlxXn~jh~{*KD$uc$}Qbcw?RWA2^BNZi}kdu%w%CMMedwiVd=#6s_Mtb?OVzU`VySn-Oo_l$HyMJZ#;gr%cjx+f7y ztpXa#M%AKluikmWm3;~dAz;86ZL9xWyFlSTmDC3LaJ+7wD0pHs8glIiYsJI?PS&o zica-Il+s$OOBwnK$$V6*?=_@qN5(H!&iP-}fk9+SCw0v=!&4vy={NiXR38(KZ#&Z& zpspT0+kgG5aWhi6%Js{p9l;=s5O@>AUsQBqZJsON_L}hs0{#X4fNDrrM%is}O2`n2 zM)!i;OvU+pDss|TRICRMZmkU{W~PlAqA!`6evNw0)RVLVCC76B0$7O+YF*%><>V?8 zV!jhda{+~DDA{&#J-uf$P&Ha@W%#4IdBcMwoN14SNIa~gYSFDY#>3I9lyV|5!T7;w zYt^onEkOs2O8=IFfH`(S>`@LXX2idW3=+bzIe!H~l* zU=e)fw3%jA8{GEq4tb%|1tKKaQmGpbCL(P#E-hs30`9?F`#J4pkGGrC4G*oGuJim1 zPtE*t`FDtrCOX2!qfw+?vXwZ?08!1OicwDl-STO}!9=zuNvn&h?6|WCk4s&!+O^;l zoxfa0zjIbXyDucq#lF-tFUr5DGS;x0?<(#uLgt=Q2xOK!B%Jk6#<^8xbWivSFYL!$ zj!X@w@P#Cli&me9-pe`9+Z#+7o zHp6G?uj>l_{J}VK`4`9;|Jn}Q5qZSEle}G#Iap6qJZh@;{>1}g&6DT-j?Zv6t_$jv zlyq5l&}H1(aQi<3hFe_qEMUEVo?{fok3Am?^0_<8qrt<+4orh;VXmZ@^sRR<(C2Ji z*YNN>t+H;_$~k^!lS?_IK!4rhH54gEIU|@|sH=ohIElKTKrG`d?P1j@pUQOh6yV z-7*HpEE{CruhQuQ>!IDYHIgC<_vhZ|l@zQl+%(l^jQhO}I&_ z6Z_e*ah^%#y%)89?HG>pY(!LmBD7EElpDb4$pu9);KDAs;{ zPcqjvn0=LeTC8B}Wz=5BYaSjtL$Q5u~(bUo=_P%FC4S=y4izLaDYEC6sx^Jy=UhLW} zf6lt2W{oNVj{MYnMCDBxkAz#Aa!ap?tu-dw*vhOE23yQ>5S6s1u`Nd1DXJp_TCDS^ z{mDb9v#^_R=4rGu-(|&I>IKAFMok1yRMkP#;)083Bieovbv9ZiIj_XUbrm>CjISfF zm%S`ymoLkGc1`g2-JgIDVVLNZnXvt3LA$OCB%gm|h^5@d1Xt0nTZYtkRezSVj$*TI zO4n;0VZ-FP0zdJ5>62A~DTYWUq!w2( zm+TdY>R>3y`AoJ*yVEV^Qe$Z(*>M?9H)K>e7GE@Mi$sr z?3`gaS$F^wGu%%6UdtLAR|y^rv%3p62!nuEA8x$RxN)qN6|>N9fUmf&9BU!ommvg7 zW9?|3NM-gms)ma1+rHWQlP$4YqOBO&Fs{0Okrn^mc9iDPgc!I1Ys=}Wz2xlJU zk^5OEX1yt}eJ~U)z!dL6_r9vtW}t+C1|8d)HG{9j*b?U|fpbvwu5kyXu+<`W0v%Oe zypy3Vj$0z0NUoN}vov*&>S!~ny}s3|aHdf|H#Jl71rXg7t@-R^BnZO!M!x&EUer`y z8)+24<)m&&?9a}M<{`C?%gq&9X`-4K%r7a;Y;f^0yiBTfMfX zqMezv%aQ2-VSK}9M&_&csR{Ylv+_KVvMU=aM1bFIn1+au@EENfD7>;qX^_uo6OJav zn4LDjTtO>+tZQ#MBpaTgBYB5}wewMrt&=Z)##m4@+%DroUxgY_l3aoPvomE3%bpiY z=RCG)Y#2SlS(WigHmivEhm<7PW2MGlEcQquBYDo}Z)x0I>9_H9P5` zAXM9>Q=$lYbmcPZS<2a1W5!q+Ji*PpwRvL_2Weap17exm*1inCleg_iSv*=PSX#Y+ zn6f8%PDEp;(^rn(VGgfs9amT=v^k|}PJ|U9pT2a%h|Crk-X{Cvy?EBkon!|Fvs`D` z%+f2!Z1zfZ*lO1gTWgY|#Z=s(cz`1M=(T33$2Q9}t}Mu2>tg(?mHGix?P7}k$9q30 zbSg_~#0$C3m@>6|uqm#PKzWUlsY(rYbnI6x0=DVwxMF;oi}FC~cf>?jse$ZN!hd$E zDvqkSw)NPR<|N}-LXr$sezby19s3P2?6caLKGBa9%nL0?AM2&$O`|iUi;9OZ;q*>v z+t~7vj&TthWmP%TEt)tbbXAv`9xP{Z#ZB;rmtMo?q$EE(S73=UG!;QPNlhq5>ITti zT3Ov`Mg-mXtKzr3uL=}4fUM`}Qtz!lKk4E*^;Y~ksbZFcf+A==pB0(+?CFIycEj{; zEbM_Qdo#LMI4nX0F)l|=ahZB=WNQ2C@XO9>Q?_2mp{y!Mro8II>UMFM#5qXFr||bX zwLv}qHqZ~j+?_4rQOHHJ*MVd|DCKH`UEFz8_W+3WkM*%(6N#X=WoMlHjC`;7_lR~> zD};%Dnc^vPRk>CdiG5;;x-m}H8idSpy5I*>lC-fnYo6$al_{I!#fnr_Y=ufitGUlU z*xqcee+S(z&kuK>8G+8M8-ZzSa$`#%h9);wO_?;O(89>MeSA?&rXU9If~+45tWcE0lCeS?>Trcyw@;kEc(;>n#5&AY zR~pF8bwNh5%A!dSfJo{4S|neIXe^A3$4Kt240g1YOA5~_{)WqOerKpNd&N9HK=h&J z&1dz4PvW-$2Zn zG8=+0riTZd28~RpnNR*jG6wlnPyMSTXR<^r8v|_%?OK~=@*SE`AHWkxf9!=U*GLb= z=fbHkSqblLj-}u|P#_U2HGfg2K_%n4-Y;1Qkd3BvcvFZUzD`_U(oX!nr zoRSz%bpFv2p<)-X{#fPGXOb^B4O6u8NT;Pv7CC@W?@l4NuH-8VY@a)2ZM5eV+4I?|sRiC; zxlPww&}E#lxrSLI2=fW#AeykhqA~)3XE0WOmL(tWN4+1m>mR)sWhk`iu?MWn?B8!`l&xn25 zGr0xD-WUCsacGn~^{@%nl6@YDXpC>2l2PLdCF76!_b&%4RERqP^HBqtDH*jIx3tAT z@AyeOJ^FOZVo?MJ;?VS-vigAwLh{Izkbfv_33pp{>oc202PFSXa|$wXYT=>B6spLK z0PHiW-KAbD}t_aqW*Nf0Vx3ddzm5 z2#VP3EAM zL=Ha07+jey{~_nv;(OMLLi;W6PXj$3n}>~9_=m<6RD`po?qnX!Q!P|6m8vr%#Z?RB zLGd-DXBYnh4`)%4bCX6O8R>b{>8=u6Bx{%#S9t-0$99!_(&h_0pd53=z!fLyeA)lu zoOi(Jn+W;l`xl3)n;m}$?+x&*E=X2UFoW(z{o;0F*2@*=*T2*lzh@iy zkCG7jkBkQo&Y|8d0R>#8AQwr%^onEn0G_L0OvxpQG39I~Xy*OSBP&#rL&_B6j?6y% z7}U8RX3fG6o$+rm=eBmAq0dD!GktQvX_y2HXKv2BXPY5mxSG{G=#i0Wqio&S@=S;p ziR>KM`F}8GaAVN!B-pwa$>u%Y5o%K^)5WS~OjY3Wd@~H?opKN${@t9v_yEVuj`4;d z1S$FsKr&-)Smz61x#gsEmC^uY9F_qpJP_1&HuXc#b%+%EnBe!Q;1IVq48MyBn2l;m z5p9*wMWld>hY|F6*eDfR6o~QDmHTI9d#){V)~0FZaC29nymnYz zuhWfpco2kP`b&l4*eX`;yOX#|LD^3R57m@!@^PrmVcT<jl->vvQo>k^Y!<{jm#bR4 zFb}v;QQ-$+ZIa>8EK-W9b(V(U-_YDM;?F;6*zY@Q`e;?H1((~w_}TL$tR&Gc<)rM+ z%aOLq5Y25QTc6>myS1GcPxPul;)0ID3oql}j?4 zzy13h^$tj<>%4bYH$U8X(lpFbm9>2guyY@r-!_zZ)P&MAe)93|Np5bUCMW$A)?)?w z$RGl)Cm|6;Yv}q?0PA64-L%Z=(@ed~{15&?s1Qm{IzCd$ z)Dgoz*}nBIQ;``xf?&>(e3N_rfEzkTaBHQ^Vlp>@k8QWo>Z-~p=+-pelztKXSg zFJNYvm3#++6to11=Nvw}joy&r1q3C4J%46lpj*Ky%?K!9elA{$TAYtXJu5!$6fu1Tlr|<6owl#DOiwnX`!mFPWQ^sj%xO2_|K@*y;B%vZmC!e!UGCW4E6{ zr`T$7wjtKgdV5?Ag%g52)`;4$Fuq#9SAQV&Y0*To=lz@14slVsD?KV_cZvvZ-g(CO zcTx4NkA{`!{1VA+g~5;6L_}t4TF;T&brQ` zlkLQ~@lkV}(2msNqJ_w!lj%B?8bqdF>-(72=50z(R$qvpu+DJpm=tK8bQF)j376>j zYEAO#&)6Vi?KP#lz1jnioHGwQhIf!f0wo zEMdF(8Sm-4a54PH>)};Cub)MA&yl(w7z;=M7uj;Y`N@$)mU^GSFZ@_x&z6w>bhlq( zbW=U=#Z+#kdaJO+zKttwQD3#K#T-_ZqCMm1ZDP)U$ggowJ)yl<={nSA zZdE&})C~(T{gY;|jMn&|2Y(TJ+NbtO{zzShb#YB2?atWymNDS2-k^$!VP7nZw*KR5 z>AXX7MFJ}MH)LK))S#{FE4wFmy8YJDe3;lggNhfgIMn91g!LWXw7vGzOl3NC=R9S4 zN1*6|WYl!mZRe<~M`Vd&6Gee`w}Z(ormWFceiYNB<#K^zFex;`EUc zxy;Z8FsvQv8sttMEh9BPpfoT8++ylbIHU(9QCY<^Hg9+p!pcRpMAA?C+|g>96}=Zs8CfESEwX zciME+qW}&K%OC8DmYH{1fcLQs5jgBKcDGdC4V{4XTeRQ;Uia6Mbay(6E)3(Dn=jhrC^MWL%iD;y) z5|(Z$KSXQeNG~?PL!Q1pX#e@bOJl~2xhtVEt#531FWATW7?B@;I^-A->7Zaooim1+ zxQpa#f%nU%P+KTrln#onAZc^L?BPuc14p?%O!&*xn4SyMW)5K4tq>Hf4_Ka9aO@HlE&F2g=dgs)q`eIS3La;YU0UU^$DS~lG~=jZ$$8+!I3Yag z7`u+=BDxHfS+iq(y5NC=n-5-F6z87oy0?hRYW`jvBOM!6lxMsg?|CTrLjSE^_r{MD z*6vJmy2#)L-$vzO+Eun?o{6}_`kynux@GU>#+h%j@Rfaw5R!Abm01hX(nZe}nJS7e zn=swBJ%y-`e!(o7|5u;5OBtK}CuE*8)}5N-WU}K{LmuNnd_DO=9y)sN6*r3CuL2H} z{2hS$@@Vv2tlbs!)JPZE)(NXmq!WXkjg`e6^-tiY31{v}t9y*#WNYDE(NaqiS z_uV;CA4yao-p9%28m5@=aHKMOJQ{7Vmj5-r?_H8-{?m6e=TU9xmcFQM!$@}ATYUx6 z`TAx7`~}N($XZ68!O{8Ug?tl8@Fem~JFzN_sLTnOM{8f>;iry|%eOs~vXm#WV$lr( z%pUk6=ibn7-4trb-YJ;g6pX;y@DAZrJ==7Cr(LonYGuy5Xx?*N!;d1?qBZ<>`1PxM z`>h9CJ3<->0m&{3^>w@?pG{SHmtgkvc!E!x47GJ3VX7txq1bsEQI>aM@)bGC+|@$u z!XCzcA2n^kxdaLaIT4z7`?Tg-25em(*^&3-q#_O`#&V(8kL@+QynJ?t1S{4uhae{B z^|3NyYv!%R0j4~->>6K~51_Cm5i$i*3M7}tP zZ6sP=+~xm;?Flfu;S=*w5{ci?e>@H>#pv}b)yQ2n5(p+9yro1gKr9fk{T#*4eSw#z zkw5lVkHSYD8s@2+OlmaOR5i%WmoVT#echjim5wAl`Oom2uWbvtHGh6(Mf}aCC?N{= zK!H{#O`V_a$HzlkjpyD=Iu)0zElk8$=&zD1KVT;LcEFOkZv4Vqr}?)HjX{x(#JD&s z%(Two`<^HtA>~dNxM{+{_kj0cx-B_Yn?@r+G8r?PT8wM?U5MUz{)wRn;iCP)tR}-1VlG=;Gf!g$qH~9cszaUJVS^ALT@sNn)N1cGm{H zKt_|#3rzpLe(qeP=IMmo1hTko=Mxz5JD|Q>78h0aS<-vX5re61qZQoh<;Qp?=N5IG zuvL214gy|c)9ZS3|E+~uua*{*c-`Mi(6ZSjPw?tojU z6B&@iH?(oL*-;&X$*8xvm!qvz(B{8#2)VV}VWZ3em$Q!jx)Z~j+fjPU(~R-Cn!=D6 z-IM~O(k-gH%W9q-Nl)naHyn(bhu?*5c$YGH@SO~OBS9CS#>pOvVPulysU-d5TA+T& zz-q~_C%h3b=~37|{UXlM-~PRo%LQn9e6*PTr;dnq;|8j1InV5Hq;3?A^9y)CsM^W! zK4MR>Go@^T-7T|h(3?4}fyzwUlj~a=F#V|@P|I{sup};!cX%iU@TU^MO}NN1dSV`k<0oYF8~UZ z!uI`M4TJ$oMy#WR-}?MuNAkDQuwpAOuTYy`g4~b7@9NdEquD{<7B7^t*^@j!*yZ06 z5#htPGLmxtLB)WsP}59rAt2j)?JL)UyFC9-hHGhWQL5teRdkz+(my3hnDatnU;$*0|c-zmOgeotJXdK3zW`HGZi%mfA+C8O8si**v9B z<&3h%OfHZ4d!H(?I8y#tH?x>K4X1lA=}}c3s3Yi`DWV;Iz^xz&K4`hp4Abg6)FMB^+d6T;IGmWqn}&JSG-2zEl&{g+HvBo|XOE!f71xfeCnE3aLP^*B78JKH{hrNGc>XJ( z-w$h#_s#Bmeq(=2rZ$OkWyLvrUurONSbALD|Guk}z&|?IdWFK77QO(z*_jYiAka;C zc43DzR-RkSHd(n!iLmKnw83jeZ*iiSo{X$3c#G9j_qf3m5dZ96F}&kJ_ZfQRHTvAw zGN5dHUE>~nuX*Lw^Zupr!z}CgfmP3f`ZxaLnZMNL&h~vMi;BVXM zxY1bq_%7Thu+9+U+tav{$lW6v4?0o?_(-z(f)hi!3HI^P*b_~Q-{Yl~)OVix_4_$+ z74#3DwLV62%)+#zvd#a+qe6}IwIG%w47D3KBZ|VJU#V}(MG3O}N>B4KLVtgOl=Xs| z;}ay_c_PD7)x)y{>CS`^I}QJ z#PhE(PPIec%~$!;9ViO&aXUcPELJ&WSYMNfObEU7tW^-#i* zDtZ6TcEcoGRH}c#upCl&d`F}<*-r{QV9RT&6VWr%xK(JcH@qcnkJuycSo==3Mu2^v znsSfnUEx`~lcZ$=Ht6zL=Tpc4V}c#^nX=##n11AfyJ{et{lajOKs2jrN@A37BsnY$ApGV}~WL{#UGy^Z+ftKSeHl z+W@}m?ow-!8GL#mVzi_1uPu?HF!G>}%)Em}&VUp3mDG4H5?K#Wh7=5(rAHwIaCJ!OTYdV68t%IPQ z#!37xn0|Uu5{0n?TZS4)gBsLl3*qw}k6(F(yeTyb-n1DTVS41u@&%c7-T2Kj8!lrA z#VeC&`U`6OGN8h-jRnQv(MB+>^im_3J2=C{V6lp#Q)Z!>GlVNgy@GSu@JY|;L)ee< zPcK9cC9TX1F9wFl(3~1C&j%g)W{O)WH;GozqE3U+Oqd8v_?3e8KFhT$snDXn-BARX z2B1G4ut2< zO{F?H?fOCn^Id`%{|D#+0{;MYa=G;0@0XZm|7RIDD*&zh%wl?rFZ1Rjhr7q$Uwg>$ z^$jbqmuK1xhmh9s^j~=DAB~QFax$XUI7=FuxCwJHM?pO405FvU>J%B*iMJat@Ok#~ zZ&RldJ8iD=(VJ80fMG@gC=JJxH&hW4^jC+b}@@DCji72yZeie zC%_NX4dg>E#YsZX(v{z6hDB5?otys8THOIQeqv(DN7 zoOKEjo-*?(+Cx;^HvkB$!M~#)dW>?7pgl&wvW&MHwvFvbgZ4b6p(`Pj++}c8Lv&!; z@y|QmpuyG$g{MI0O&nwo{yOKOaq(ptbU!sfs-1vyorn8$htAA&7Gh@x{1M!F(3ZEK zjo98m#yJ*0T&QmG89t-*)F(FoE~J|SwXi6cCgw`N!iG&vgmphlL0$u@(#ULh08+rw zMqjA`As5;>8FOhRtNQ_OjpB6nn~^9Or#%SzuN1q@IYe6=R_;J*@dksA ziPJBOt&xHE&MO(vEjsB)WHv4H3sw@HyE~ZLR)Z!<*5IA4XWmy&MA<1SFhmY}onKE5 zjsea8%$IH;ipg{~qR)tY%^Sp96W|%cY{m*kE)8`P3Sfn$V<2R48X+uZ`>)npIdg*^ z*SkmPc?Zjrrag&w5eIO{Uk-M01ILmam%5qA-P+f`KkQE3yLTS!Gm4%?+J7mN{0{f9 zl9W!S75r*g8rR=Yy8sJU?@XFp_q9;XY$C5Cj3gCWTWJh5p^uIZ1V6Y&7}@@dJwI_e zvzyaHyF<5a>l=^=D!{v=`NuAK?B&(IDMTOpv;t^p6N!8({3FLQf;|a}FBvRFrjzaf zzctcl1US3Sz)|t~5NlkF7;=mPk@?fQ@t945JpXEp^^0L?(*K9Els^&CTTxu0#J^_;fX_9bJMbHpg7|*flQxff%yAKr8Bg@Kbt`D=DM2Z>Y#}V(<8ac`%Uuqs1 zhPfhnl#Azzg@!g$MH>1niONkt%Db|?D>8;9jteCQXHjzd=IW%2w;_a!Mv&Xhy$Whf zThhXu5+ZIg1iElGN=@tLW0-i?3%(;CYmDA~di24~V4VFN7+9NuyjkE6+AOlj<>5=? zNQKN)xciqfzB3-}Y)QELrY;@B7I30kAk;ye${{TO$aG~z9Se`E+-@nm9ZaU1K-``{ zTz@k3Ky{As2hIj_Vr4p?!3%js#78C-X?q%+5UU1edT#ZCrCk@RYmaMTdUz>uHksI`W-n2!D|K9`?{3vMj+-XaCS+{KsE( zQPQ&8cA(`B*V|VhTRU6RyY!tKj;=3r&tAeAqMECXq%!}`K1Uqa7>r^vDDM6JXUYZK z4+vPa^On^=y7uJEs|&AT*EC7`0mfhN&Yj^hzs#K@j||v zP03pE3~0Zlf)4jkr?qx-;2^4L?^)MV((?m8dV693*swW+omT9qFqcI!qiU`#8Jb1+ z!f#IjI~o3WVnG|!jfk4&cpKpTlPm`{xbCCsWIep9$~anDEFuB_q{?< zsj)a z96PhVm+56g2E!kmdk5ywbUmo$3EJc9XnUd()%B?GQ^D~@8-OUJNY;bo{uyd2E{OCM@eq2N?hw2o0ZPNp?A=$W)5zErr3mK>5LW%16EwI_ zBM(J5&6JZEtbkvk^);UKnm@=j;9T3)1fn80SKtvLrvxD?I{imfj6!zx%`%)tUFM&~ z3xBV1pYG%}ej%br1f>KczG`$+0IWO0PQai4RKn+w%ug-JNESJ*2N2UQcCv~*Z0ti2 zeVnr{M6{PTMcNJQkRa>aa9r-k14L!Mv*J+|VCLr;y%CsUJ%aN%&^RRMaEJGNS&12PIYT$jP8 zsv2>yiv8joEpe9oLsd;s#9^@7&XTau>H~2CX|T#BIHD#m{FD|?np{(_{+3N1ddwA zy5S=dTOnfceC5mm_z*!pgUmn2Ed#tTLHK+7&;DZf7w^?Ugq}X*W$-?+KoGGkgA}T@ z<#1EW3_ONbKrUU&b~F7+x>}JD=2SXS$gRiztFq^(gGmuVRVBni{49w`)qwKKvD3c3 ze2V-nWgnte6yV{d=)fQH+PYsXV2t?dKW8f+xED+3ZAx;W=%_*=JCcTJgFnZ2mTCeV zcW6{7!q(wtFAq$7193qWe8c&{YjZPqpmONqI z@EJK%544?e#Bfbp;7SpSNjuo@H{w(2GXlQ;E)ckCK~wSu-dyQTo`x8#Aj81lCRYP{ zeGK9@j}tg+K08&{*<9;Ob-MXK)1CjVl(=}b%X7u~UmyGsKEIgdu?&(w$-zz#k5{`# zwLH>KU+qab!BU!vkU?M7FR+^dsoU#n%Tc&gB@#;m5!EO>K%Ta=1PE&90Sud9Hd2e{ zWXlLNQSZ1cyV1cocW7!MB0rq=;1#%0YtcVuKWfCoSrc>OsPIjVg@ePIf-L0QjlTyE z!LLMRCOec*#&_M)hNB%er2M6)Sz57Fv3=mS(|H*@(NK;^mS((jE2DrYke5VIu+=nO z+$t18vxOS_Iuu-QUO_27`bSOk+hG#k6kMIKjr$9kEQvgXMBM_}tzK7`D32b;VVJjc2=B0=Eky#kIxriE2t5 zkFMPW1tz;0A5xx;enr%@7rh^QUJlEAI*ULnys5nG6+4TNuK?A{*GdG`!Y^voyQ&PEerlSjeq4H~@X`K{Sg@l7$TXTD6HV`8oZIF^UOjUhZQ{ ziSKrSra?lTQH&G^8c~RVPCe@hl$yN=D|-Tzj&Zzw#iUgCcj%J38QS7lIK2L#Otq#>!M!(^i=-89?_GBN7t@}6mCyRU%Dd5D`FUQFns%ECHz+j z5;lcnlgE#|$aau?iRZ#~5u}x7hd6f9log2%P9 zG4u(!+j@@SY{Zf4#7) zNZ_MO#5EoBks@RmdC&jTl8a+7I<+|U_fPFcZ~j=fZHmrK{0ShZ__})g8{JzwnYa-2 zr#_?k<{ytT3g7SFCy?u3*|@p}i|;Nn)V$e-^Ak0)BvgrDBUSl~*|GYA2^WG)APW2s z-Z0J?!G7ev3?YU2E(F+7__kkYW4S;prIXf*eIS3TdCPx)G$Cj^Kh#mb9A+nwnP?%J z(Pqd=b|JVO{$Cy2*;+Ri5I;;jq)!PuZ2(vXQ~kAv>|z3?Os z%5k#(Fu%XCtn41RV5FLg1mqeRraB4<4~NIOX!bHKZh;+=OEv~8vNxo5bR<6+)qt>Q z0wy1imwBa^=1af6958e@w>02ESL&i#oP+M|)Z9VF)GJ5!hD->%y*%Jb!x3tkK}4Y} zfHyj!oo-1=NmqrqqOJ}OCBoU$FExHkAQMbq*em9V#ISfGMDscU5>^Mqm<6oCV9s6g zhDvi&S1^e09bCX{qNeBc%X0-mJ*z8}%hNI9L_c5uUUA!nfKNI1^nqy);@AN`&*@~S zXhdYZ^7`+eU4X=*rlZ7;k;Nm-QM*X9~Wo`I}7DNMI^f? zcjPClsSQ6ono?Z{pvLc+Wa6Cce1!pk*6jkIH3ojnu80=$cmLnRgx}rw4x_k0rBDMI zYu9e(U8*_aMAbCgWgEQ~$WwQx{{EgiGHE1AtT98ZXlfu>j3TBa6Aw+7T<JZGH)hNrE6wl4e~nl7?2AnEn%h(~gikLo;Jc|4PdWikRfxI{1; z7n;T9;lnv%1G^%-VbOe+!o*6p9?bo7yzC5Mw%*|0b`7yCx3L?1@H0h|q|6^QdMjWC zTn-}$g}RvCF|RKCGuFQh^v}2r=Wq?MjpvW{Yd>;SdK6y)YZ_?Q#K1ab zra^baLyJaYwzO~|M(sses%ArB2fmga2CQm=K0lyG=gpxI zQ0FeqCYA;e=h==2YJTsG9E?j3P_T#(Ud*_M|LTV)WuG9wYvP>QFdHN63~YgA1LtfD z^5+WjI0Y(rK6Ic&26A= zjFXf_yj?!`Qk~4QMEu(*n+HClHD<9+A>DwCSOebfe*3Fs7_BmICaAkPX1#_DI|K{2 znH)YHwf#DgsKRNMb_R(mU-*NqMo{$3r@POFpI^X!wFgah(<0p}g6y_O(pEyNtHjkN z`R*-`yO-6R8Lrla9U^Ej2!^?Reoz&^|Kisq%#9(RIGtHyZdOZ)Y^B!_}0;Y=-QY@?G+T-)l26SKyf~2AHSzfIuc7x=jj z`7JHR60x)_JyyfB^gUhCy2n(pm|fD*h-|fslu92X_KJz8Xl}5_J(4W#PHdRzQS03c zv;H^N6A6w8ez4 zbCc_9HN64TRO7(E*Ol`8J`h{uz~$+3r-DTkW=K1O)p@TuQy;hkWj(O{UY;m16_io` zHmm-#(Sq4f1BJ3ZQcOZ8Dmxf&^dmXnv;62)PVnFU0de}YVY$^=DB9k8gEnUr1SYIL zcgDPL1B^8R=e)D4RA}DRbRI~Zlj?D7*Y16LIw<>XGVLS_2>q8a4#7ud z0_ZZ>7wm@XjjMLAk!^KqeS`BUVN{`4p7q(RJaN$docr%=mZ7YmPY|h~$3^4F^o8iPax$UB2O3C($zoXZ&>e~eHZ>& zpinFlTW;hH&@|z`fK8K!z=uP?Py3Zkn$}wWvF2bldyceBp_OcF`}(wmo`h3o_1h7V zS!_9T{E8dd6%o_nWzHv?kLSPQF%Kh`jcr>@!FOjFeBYyKF3h|A?hr`@s}%a?qsELe zLTF-E*KvVd;QJ@!@`=>y@4+*79>`Ui;ZknZo+7b@;9-aLB6}%vKqsGfto%4(N_m%& zBqI5Tk$N{7R!kxT!SOI#Vd)q|D2}q?x>0hLx0SthXp#Qjo(fsSe1t&|8U#i0o7Qi1^2F8~?0hA6k|+b)dHH`H`zm3( zXaY)+nBt1hsX8OaYyL^Bc7Ui|1FY4z4*;*X7Ic#l>^`}kW)CldV!Q)1YVW_?qyM4u<@3$Tk^&;z> zAgeNRBAi)b1db&9%8f#|lYB&4Bg7tmi(bAuCWcvJo;0I8LBkLqLOKv6WLvb?ns zwF`oF1|bXFqp^6#d^z*y{3^-;}ACI>;O2b3t;LL$68vxz+VD+R`&oo4Og_v~?c0*V81;Kwc_ z2m6diO7+_(UIY8M?N~d^+5-4W+~4o_Z!$E+#V3-b^(8d+9p$GLkYgK+Bpr>%IXDxN zN6y^StwpX&8T#hWg7oX?bh@0-b9f%K+bG3w427os3EElJ@q=wR!@FuiGHyP4hoJ0Q z?zS>fq+$^_sTE>bankF&{J}ylc&Os}U%o>?C#cD+P`7;#d}CHd88d1FocM#Eh?kC;D|U!qM!$==ONhqMS3@(+J> z>$BqCI7Jwz@{D-ySM*-RE{8Xl#hl}F}`sk$HgkX&M}Z3zy6@+YJ3V=nkN6h z@_-T~d;S@hVG7}E;5`+SNa67S>{4mdrsm{|;9CJT#y4-Elj8zeliQ5hJ%jUiH`x+` zAt@BIzM9BKHiO#Wb73_>Qmp#<2lr(JL8`0dOa2?$s;))2OPQG0V3p6>CUX^RY0iTa zu7DY>^|86G8jSVaZBZq;Xq}-LoZ#I%q6H13nh~`lfIeHJj0m?b{N3*tP@^q(jQM(y zGXBx9|FDHuk@t8UxBPfl0uK*Amsx!JghFSWOp_7W>(Ld-CKoZQhWfc3Fgpr>v!tF8pVcM&n@~Vk>P49BjFbW*SI}4m|9U; zQrRbGrDz>%Wr=L18Ys5aSold6lMU_y2jg@AwUPf&w!89V+wJ4QLTY~i@xPDO9({Jv zf2=69?hX=DVEP2RLkPx_kYGq508d}?pY!3Q_%!i8@XYF4r%*Pro!l_L=3L%+msSNf zCE<*j?=ukya+m=xXfY(nl2H!2GiI?ToV4!cot~+Vq`Z2zQ*b=qehmCD9azn8D;0yM z$Y5D10B(plV@x+_Gew5-2|=o|h5r1q_&-a!_r{kUjH`pFPG2eiu5tuLh>-l@N&P?h z(2X4#_N8wj-5%ZZt1I7;P zlw|&w7ni$Q&+^-~#PNBA2qShy64Kjer#2Joc^}m4G0lDJy6Fw9=9{8KwytFMuEjes z8(N$(cW(x@4$yA(h7H~nRqkw;mz2=OdMmhM>3oNEqjaiHtekhU8bml)2c{cU=Ro8~X5yDLFJ;axA0p}|*MUf&8GhoJ$ zGH@&BkB9hU^cB3g8+H%Hs?O=I8qme=un?lBoO$({T^h8;@bcm=#daearj*+uEe)(% zDCT0;kqeI>!g+5{gVFat3XVVFy!Xt`c!m7#5M?S$>~?CdvbuQc`T!{TC?#|+u=_lf zf2FY?`X{4X7}cMClf&=}c|4}`%TF$!N!%7u+L)$rNvb@|-*8b@wX5e|moS4M-+mU= zPCF;TmYKG=nX^_1C9k|Med+G2m&V4`{ijH0Y!Um(xkTKIs1(16BD7^kA*z9%BiN1fR{!D;q~ph^CA;IUH4m>VV{?` z$gevuI7FSD8f2L>dzV@t!AfnxNQgmsaDA|EDXpPnm%VC2*`gzq|C`X_>j1$1)f7VH z@Vh1+InP^%4>mH9O75I0lh*Hoc(rYvP|f+}A^)RYB@bcR)U9{e8bKB=2VWTWH_#(K z>1C~L0Y7mj`%SjP>VQ8>98GD|U7D?%bgVwp@}svFLL}Q|c9&(!Bl3+iM&O4#rPV7~$hk44k^FTa{TwrMT@K)l9IW1f(~U~#rOR+het z&8DkHr2o#K)jv+3-Y*g^rAj*v7cN7d5mUl^Z?Bz4jwxeYxN>=FhI|9c$WAGmg$qA} zOR&fYiiM2Z?AEHk&XF#lw>&{R){oZQu(Z~8a^X|evofP~3ik7Xbi8K5b|H_lCT@x< zoO*<~znA$(q2$#Gk*c1D+cSChMWH)6)Aq=w>GbHMKVSKD(He)|y0E?iGz1B0HU9Te99L>!Pph$C8{DZe4IX03{Z#9ss;KkpaQ3P(Q2=c@6n z!Y+}(t~y)|*+~U3E1%2gpPV~6G7W{o)Saqw@o!eHpP?JiQJ+2VJ`DC5@f1Yh^&3o@whYor_NbNgH z`WYD4|Kk6bG$i;h-xLg)c=6BVSf_AXM0kx1LkAZhL3rw8jj`-4VPc`^lghVmNDn*S zy?UGV-kWf$F@&k~d*PLo&zB{Sd8K;i68AZ|Mra&apGWyTihloQm%oM`eK;~y({+8* z(XK#ZET(OrjQcC1bK;07VO(m}>M%Us?JZcdfd>4@p7=8|yDG!}cQjU<>~o2?Xdu@- z_py!`aCP#s7Dla1=eqfJlx16kPi`NcL%Zquy^a)Unfh16NsXWK$j8^1=^4A>*HzbP zq;aCIW!;BX!q|yU(~^GQEVM1VE{C;%A4TaSGv9Q7aBwkLATjG$-q1F|^`+VL;;k&& zzr!%$=+P6tc9=#oU1@6xE-;ua-$gl6*8-gqbLOFopKo$~;uWv24Cm5U&Wq~ZL~QSU z8LkMYY&_v2^S5(C2iC*t=C{zE-zO`5nm{()Ni9?&Ki=`kvT;a>l8Xr!8xP#I^@F^i z{&1#=RhiP9Ft4Y%RXgb6>Z1}efMk4g=n$tzjU3#T{3M4-@&5iFuLYeb+W!0XxJ`$= zjrC7zCA~36Wo>er%Dc1#M=zEQw%>}AGB8|0#oUrQ_PJS!W1;?quAy|C4gVjM8a9tu z&5MEEfMe-GhvtJv~tVyUe6KF(}x;8BMyC9n|qtLet0HD(;H3k)Uu$5*j= znYaG~pr2694NGi8_q*dRJr8wwFUQ{Oii?%}M8-}wSK9;O@^Hj}0 zyc%`(1|Ph7O>Tg-E+#B0T_xwPO!%7~1qru|`>V|?d5lif7=aIr3m-?zZSpM^M3h{e zetWOW?j)yC;>t{KiU7baVofm@G7y3?T*>VZh{}Cu>aAO}40zwG2A1U9wu3p&A2Yc+ zv1gYd{mhbVXVC~38o3Zy{OP&lO407Mq8rzOiavg{KY9YlG{&kfnHOpBDv&^QuRvN$ z?};l7gHI{F4Flhs+E?M~6kP`3+@nh?(1jMVik1zHBF3?k~RRm z`SKV>yfp=x;~rNX;X}0%GdLN}^Ofh)+cvF;{cAsS@%WBg93E$1=bTEJ;+{Rv$HbqA z&U$cA#FeFmwhHGQX>pr>!A2P)Rla&l_;vk$y>{lbx_ogXGJzr7xFdn7`20?->3O-W z3@GLF29H=7dag)CEU(~*P+xhDxAH7~U@{WFS;rBpzk(wNX1j<=OL2P`Uq`m@L9qTs zZ%!Ji*b+y|Jc@}hw8bd5Dtg3`#6V(Iyy{Z-58TxgREqcY2~o#FkL8it)%qN7k6Y9v zrCm#dvPFW%e9+`7qsFOBCyX5amCE+R#yx=cZ|e|KwPVy`y^2yQs7}RTw2k>_7PhZD zUifTfIe3D`xXI+y^IER$6n6n}+%-Ei+d50nmScp1z~wSY+K}*WL^Azaq)VEFMPZedcbi2tU_1O^z$^f``wQ=@vyam0-8lDoFaC4KRV!NFo3r}KJ(rdZ*s|WsY1lnq8#?>A zvJXqSAoW$;*Wl^Fpda4wgp1l<>&yFI?NTy*IzMGUY2DjvGH%|#Q_u2*=>%{gZJ{-a zoTG@@%D>oYEYZDnX%)RE7ONUIWxS`$I*Fe=VWuZb0IWpy3@TPUwAgy@WPVYFE`okf z?k~6=Knb4%eUMixOf4MXQHc$7;W73jzCd%K$ru%`^~khCh^F?i&CmBeTJeG9Yu|Q+ z2b_YQy&|C>Y4HHsDlT2K{X59W8^!Udpv|DDsS5X z)y#&>PtbyDR&Bn`ep`UN=VrXb!YY`e@;evb?X3cJrk( z{;(MN|67cS(EPh}eETR16yyuu7^G2(kRh=hZG9QWn@pDN+`spO${bq@m93NST|DUT zuB>TZb)pPCmLXrK65krUNFMm&rcB$!(6_F7-$LHwGl6dw%{?G{?e^yFDaMQM)|ss? z8L9AYRCQTtFuV`nJ4ul76G-~pVclv1rfXU%dy1*N3S?^5^GZ`=QsHoFCechD`c*N~ zA0t_+_yi-&eQ^-jhNE#P(ojEZRR(hpa78X>=1=Qnq3bv|>*9I5@HThx$i^9^j(bZY zlv}hI8aDzsD2P^^!-)obEe^wlZvf1~MZ)>BY8?M+q-FbjXl_MtH>Gus@v#7Nb*|KR zhZl{G=QB)c=0HS$}ae7#MU^fVZHPg5XvF3 z7{<~vyXjitV;M|!sHJr-rY@z1%kNv#Q5BeE@$eV6EkKuRsWlAd$(K`xkdZ!QdhcA$ zcin3~B&6pTO!_-fs3+AWw9 zf@=m~UNvy3@$l>p`joSzwM+hg2IYe1v-vbHt``CP=61w7>Lefx|ip>QBz zh@%(V*~1-LnlI(@T^BDWps|=cn1Ht|M)h5?k9Rb9Z;eQV9$Peur&?Pgjr}f`$LA!T zrY_s-uF5pR706e8)>=?m;CJzvvpXqHf`!M~?;`DT;HChFC;9o4&qshS3CW@UR7&VE zif$mzp&it4$8opCL&fUEWHZPoQzAzlj0r)E6$1)BEIMn zr4IjK@%n~ObX}re zNkJJ{v0;6`GA|N(7LrZ{nEjBl{rCXK@Qy5;l_ck)^Mt0_@%fp+u+OxCZQ}E6V#jIv zAO&kF(d-$69vc5DSqOeftD004NS?kT6hSX}dL{9R=uUL0_%2(&Bfq)sue2IIJntF) zt{IVJ)>Gq7^d2cCcD`JECPtYm=DIgFg4)Fa47~mlc&5 zrPua=T~)b;jvE^D8`l~lJzh`~vn~)G^q#D%^xpJ%=yd9Fe_7HO!S+*@`ZhF7U%ozVUgaOmS)_u)EjpS!?udJz};W}-!zSv1gHvmen-4_L4j7D z9eKV&J^C(MWpW%2)%q^`HqCF%nJ3o>;$LwCzLsdOk;H=ESi=s6wx70$oANVr-Pij$ zo9Hv^Z~4OLLS(4kzWd@!Bj0lJl$cMKgSzC2)QcGbx`F0VCdz&U7H5u2J_lBBy*Zi; z(U#L$eeITlmsRK6WS!|B-TSlOZWt-`G5(x4_OtU)Yksf-zpGJAnzK5#2>ZcY*AJWh z`ruRP2?>06 z&)jekHFi1~s3_AaK(!{QN)t}s^Q~?2skSO>1u=A9#k(I_wyeu5PeBizqg>4q_e9=- zOT0UMif|fr-+|gHW=VyOAmXd({-IDmpZ_J32Pb`zBdl=TiH_=-+L(%r#qE#=q0BvT zgzG)L4+03a*9<57@~``T;KjD5crF4^YI>-^%l&M#$i0Bmuh2*!zyBzfLVA3Q?x=I{ z4z=EWPZxC>E984NF`g-(veqY@nkJ`$^WFFSlBU(3wteUPwh2oBMEliZv6wvaHE=QC7Xhq1zV>m?qC{C?wKPi2Y6CfMV6_9s1_D++##z}c- zKi<-nV*DOc67Ypofc|yG20J@iCtr+o!%nWJFRv3xV3i* zLo6dik%3poJL_Xv&D_ve(3ikK}r=z(?1Vw&vHZkoZItL6cMXgsZ-O6(BLV(#_0v}QYH<=%k?7w~+{}Mk2rP6J)XP|LdvxL-gzfJZMEB$=NQ-}{70hs} zC;Y@qR@7TLiXOYjV~#3A_>+^TB&S|s<{pZLOBAMbBLoXqd?v@!g|89|6n5tA``h=W z>aQmFsWERkUtGx3Ybo^A`O?cO-TEQUWXrR!%`=%%>yOf-8=~UrZp=9PUB?{S9{hX5 z;>w=#Tb@3JQ}P16@*2HE=CyGuMN#fr^b0|bx>r9F&#fxw?AP#ZnVgq`b5uRBSeSL8 z*N{4sTBJ*EI~|8p#|KvI8#ksKRwZnByS=P?u#2Od^blOAb^D3a&3EBm6Oxo)kag-0 zJKZg3`P-L<#l!t0K1^@>zU1^*owlr+dTEnk71>Wg_X>yPD|+SM_S*bSchilnIqQnQ z_1eEQojOvVvT3t;y0y(7OkQ>xP;6V-IG>s4CBM_eu#~KHA1*%L%eKs})8oKzdKp=K z{^%dHXmtlT)@qG=BHkNS`R@@iF4ED9h79e0HKmD&X-fE!rdfJha9ggA^uG8h+#!eH zXq9v__9Tid$bJ&f9l9@-Su^Co(e=1-uA4N3$c8?Il(g(6<-C=K)u{&7n0>DGQ{D1+ z@+?&8eoW(O6sICBTdH~Ycy0Z8)jf8_pc1fGqn0$Ym-q{X>P0}C<>0qWVh!M z30hW&9H5O%CFxHBuy?|lV3p)7b>MGaVhV9LcF6rG6?>`gsd=oXLcV#dIvH2&K>S{7 z?!CW%K0eEjm+Qf!Z<(k3DEPbj&JyvcFWXRTwo+aEr^{)4w#`Rnz@45fEX1C*2w$?j zHYCGq%%5nr-dL-QUAokCs)#X`hd<|p#g+vT5xV4(s*=(34|Lw#WHJlaiW1gv(}5iK z>z`|&{8za!BqoxOzg+#9(PF@}#Swzxi@=!;kQ@Etj^1yVvvkJjrPmJkuMz(ol7BRt zWhA}zaKFuTeZ^+M%sJGo=<%+=8GhS}u9>BBqh9%<@jjata0z(eA4yLAV@AV6BCY$Z z-DYkecYxFaPw7%O3H2GY9q;Ldi0s3i7c?W{E1SVpe4Ka9)9L{2H+pqJA?z_3v&Mgh zMCswde-{gmm}jcFs$_==zuwdw>eX;Cl?!&tbMXt)nsJU&v@c%d5q0hGJ{GDzJF7bx z@43$P>X&oi|KOd4SLupyv8alR z)#;$%GmfLCFJF0fe&va7>iZ^Lk5eCb7JMIN;uja$7RAN(@cj`hb{zs%v}j+J2m4_j z8Tq!q-4oIYV=A0H3R;wA-g~r`+~x73kt${;935Uo-g=^o1wjQZ-#&X({~WXz=k;LR z2s2lF_X_NO_dZyCV4NZZe~7-=5NWSqNRx)gH2<6KY5Z?4I%=d8b&X?DN|$qc)t>5f znY=OK+dCc^>n0SFnwr7ZtP(YE8ZY0nViyw#-?zL za^)Tx_H}gORV&CIXHH3n_(k7k$|Dj-|gk1f|Bb|Hs{FmBS^>e(6!inHJ)Le z044)r#vyXjbh&=$b>8Bk5L($RVH^XAXZn6ktho3-o-I8!WM*wbChu>Dt`d=Od!1** z)gP2jG1EYM)Wdf2=$}4L1Rn)#)aQAzX(_nvX!U(1ld@7dCEz`hH6H~BPG30N9-p4 z0aFBX8}WUCV4#7)fVr_kHYe)Sg5yL*#^i?Blc=fba$<{p6?qeR3oR|@X)jqYaxx}R zsgjS!P*T33SF(6-SvN$nTEM8mI769_CdEdscfMtxzosP~6!=~b+lAHHuNjhVQbZfc zJoN1JP2hF4RAdD|qB!@HiDzCs!g2EWFPHb)d=F1o%#?|0co(D`tXuJA&-f{teJ|bv zorpdVUxzd93-&^b)6=jZJZM*O3f%t)#QH5*NUAh^{GCU)Kp&dvb_I|$#ex0(wybp* zOWa>fvqp8?`keb6{!X9#iQ()`llQ3m1Y+M*J}L2EOFSNg{fN(0FA_1L=%~|d0?w_i zwdW%~Gja(uJ2{j1s>t1=((Oc$kO%d3p)oa?GR zto9pT51g0esulUj4cNI=I{$u`mY!UxcrSW? zj~E(OHe~lb6Cwz1dLpih0;dL8rKR{+L)_?bthD?xNYccy^0xcWZI#}`zJLx>-YzO) z>u9$&*_;FES#?jQlLZ(T*HW4TvyGFt3}tg{EA zI!5DaP|8}ZmvygjO#LIpzLnaEc^P`gpg3lCd@yYd8wK*8K6BNx{pL)>^78HX>u)jO zJPR3XvKG0e7IGwT3frILDPsL*`5)J#7|U-G_LUP2LgS28wwH4-X zL~u*TjK31Yg0Nu2GZwWx6|O?@bQG6O{y9F6OX)vHfdL z8d1r{UbO#lW|Q-PL~EAe3p`^CYlPSItbGT|tOv;i!;OgPlGPW3EawGxQgVB?qa>?A zTcjRrVZrE6*m;xXysebUMmiP4VrP;+lP{^LWx{kU>38!O$M|7_2|)xML7k{jLz zhx{WXfonfZE$L35a>-Y}Hh;ts>qiLWl}%SNk-+V#K{R*&LKR2Gd=!nSZ8RV1#2D`F zv@-A8Cce*B?G5fE6f|Rs;vH_A&f?gUST1aG3;9zK52}kct$SSisPO0zl@UG~EJ+>v3Q%Jrcynwy`0mq<`5I)VU@{J(>*jIR%V5uhB4x7* z(-yO}6#9`Hi2WH$nPH4jHE!A4c{6qq6UU!Xw{5*dAxQDc?ZW+7(QQnA?Mn(<{lK5j z^|oFcp7lvy(Y!D4mVI)kept#2s3q-3JByO3+WkS(9Dua}VKLxKZ(z&w>jb)9+Fv(g zytf+eG;My~-F6xwqEDb?46)9zS#2I#o=>nJ8!D;v27?mO|f)Ug3E&;R#A}>7Xw@3_$1P zLBFG_+yVie&r3OGAfU70fCl*aiTAy=ev|DA=djf0TIX>6Z0YUB`IN(@K#V#kgvP=9e{czZd(~ zyjXQHC||y`He1-^btZ6&zM|g*uGysxJ8p1H?E5tHaYgzE2N%zmogWPzKK$tDl;Wc# zm85k0=7*jG(JMYJI0GEiH?Wbn3E03ZV_|U3fX(K9sIZ3C=?lLaPk<-eU;lHda-TO%KqIu zJJfAH+uhyyOonfpA?S*zXDcT>F5L>e`svn(We;asXvtZaxJdIP@lVT=yRhwE+Us9- zP7Oa#%Bajc-oVIw$eT;Ca9U(q=8I{n&&oe#JeX;Epn2EjTMuMz9X>c`A8>y3kT-YW z@=p(9lI|(&df<9^n&qR36%G$O{yNIYxCF|s1)aH`-9JAHyzdBksN;f$BWvJe;A;8) z8N4h~z=rclw>-%OXZ|od8%Xxm%(EBp2Obhy*zFj7+L`TOD)1D(O{KQ~n$j;Dp7%)U z(4MEMV#B>7tevBzjiFd@z2Nx*k?0E*=MPF{Oj#a0>pAd9Akzug98;|Y0|dM~l|xp` zb{JKx7dUa#_=1a#;;HoC{EHSXm*R6=u_5 zhQpoqTV8(+NVMi_%(z*1`0l5Ykk4G6_e;N9N=|+G>(uv}z6K|=9`G80>}y%dLtw?XvG3TO?e}fR}~~0uKZL?Jfds`8s8;mNgMn zc&axT9{tu5TYmQ{=&p1}UBMs$;akEYKlqZfL90xFCx>sX&YLNiobn*FVd6o@`yag= z1G3itPklG}mKsy6DsT<3!}ISAmGk4-V|Bfsf9GL5_8NGhasL$Hx##`wHUu3rtK|Q5 z+cxEdz-{0W71n$F)IptD^y70J6*#qk$8`69SuGJZ*V16uhm=U*G3#rA#}W(4TQU1S z2kCKW=1^EM!R$BiCgv@m?Ze(nm1Za|((aC&zTssGc+rm)FhTgrGns-X)gYr<2y($y zVE-Au%osxn%Go*KQD9ID3x+aGLAe5Q3EUjY%7B z1uud`SF+$GFy)%ma$I3RSchbE7-*N-RX3lvpp!5#P{yd2Aya`cauCPzKk@4?9!ve) RTxQPz1fH&bF6*2Ung9js;Jp9< literal 0 HcmV?d00001 diff --git a/torchao/sparsity/prototype/pruner/images/prune_5.png b/torchao/sparsity/prototype/pruner/images/prune_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd92544d56947787fa3777691124c88639c7de5 GIT binary patch literal 175692 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 J%2X_a{}0ZBvh4r> literal 0 HcmV?d00001 diff --git a/torchao/sparsity/prototype/pruner/images/prune_6.png b/torchao/sparsity/prototype/pruner/images/prune_6.png new file mode 100644 index 0000000000000000000000000000000000000000..aeb1a718b02bcbd580321efd14afeaefa7eddb22 GIT binary patch literal 92265 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

    o^@fJ0 z%vG!WL>={eA+E6Og35l|xfj+qHe0d7j^2RvAHa6|&Yjx3%Hbl9<2A76`I-JlqCS@q z>%%b4i$Eboxbp5Iul#$qA8IM|rLYuy+mzfYQ6cqTiG3o}HN*S-$w@jF!0*jhgWV`N zlRv%oDyE5PP_S!C-g)%%@aaP!sH=(Qz7y8B$#fzM56Hzw_(Q0asCT}9m$2hF8+ekb zjQnZ!-16n197ws{J_P|iuMA#AtY!r?`K&^PCg~A3MMq z0sugtJ%BELXTez%F?awpVCq9ogI<#E^u!D?F>C9Z3Tx-rUgEwzV?0g;G7hCVJi}w~ zyu~D+-l&7)`Qvdpj64>ayQi+ycE;Q5Ds)X{O$)5wxQ=WlDLnAQ7reM^7HBdOE;7?6 zi+ubnhLDk(Qae79%??73SHTwfk+Lacz_z6yFRd|8qoBIE51PzRZ+Uqbr4wt_Z$e?~ zn=bn^F*7=4gJW1}Sc^6unhlLQd&<5eV2G|^8NzA`$L=4l4qWrw0liT3q#hvIYXhp6 zXYYid zJMzT9S{XT>EAq4k39leHtFEc3(YTRMI{uTBCw3Jm$;%030?P_F77!X*xhABg8n#X` z0n^ono;%Yuo&ZiYK3ep)#PeGgHLheJ{pUnj)a{3W<7FA+AadonmwqnqsL+)9F-!!7+hL4#Gtsz zsNOvHZ$Vldu}&yszkZ~{gK$6W*YDKqq=6`e?$TBkSM~~=&I-+;p}M|8XM-a- ztu8ym#3(MNyCAYN*tpB7O0?4DFhDAG_kC6+FLrtd7{Ovm5~;&+e=3RQA``9*n{rH4 zEt5EkqNjZGf-lZMwRu2H9tZ(AEwG`w6gay{o6~3&It6oQ&V=_5oPi~nHeQ@^+ zNK}Pr4BAVE81#tAtMLE)8(HX5=<+B*gzO<+2i^SEyPPei4$3Vi{{5Zi(p$UKcuDZm@o2(l+LgCl)cQ}PmLboOx=SFz# zAX!XN;C#_94zY9(T(CT8isX5S$%!C=2ulL>(DF!sKbmTAB)Tqkan}g!9N34Bgh3rf z(cLOSr1C;ciZ;Vd(M@zllOX;6Zli zs;MVHd0$8;@szH@aXd7x{BU(@QcS8u{ydXEG|bWQsn@-G2g=dGB8?~1Tsp%KEvNRI zs!x=Ow&lq37W_LFZF5f>Xh~){f&O#mS0w+^h_!$9Wt`$cS;y2xl0@`!d%%6uuG2V; zQ)TZ!!@giPC6zCCyfdLJHd$6SI^~@iEWKYpL=14){w_o|bW{hc*t&2t;%z9e0GsR2 zRs1>heNrKLc`@3zew0#(oP3+mwO~W{5E$thm=zVo2K#foJ=IAd{c+8Sm5J46SoV*# zhF@5>)2Q?Y>wXLn<@HSgD8X84mTmH1QWr#QRhnkm)~rbP+2Z?%3ecb%YAxeD@U8S4 z-m8|6b*TJ0K!>KA%1EANH?~(pIx7#PH4_k|80eVsF_q@loiu%7#EVxPQ7$o2HiU=U zTv`YDn3i&ot=pE882N&2`3gjTCuL_-9jZxNV1VQH2dDJvl}_aS4kV!pEV*p(5R4Sb zpnI(rzB!s_GkSOl2BfH%TkBk10$k}XCu^#Uo=r`^a#3?4LDOV2$$hv;)C9Ypv_w5U<35ezI$`6i;rA|GlIX9`Wq zhy$mg(O1*cy)T^v3^JQC7fG$I28Ot?>;)?4RAKmK#a(Q)W#@X7zuv%-OYNE-y^q7u zVmxG988~d}dKDD(GK6sk-$tu5)qtN+?v3O-2t9ZNvtr63mOt(`OMoSp6Q@`cTXq&> ztW1Xb3If`WTtPbWlC#er$AYJmR!=`@$GQkPk6-P+oH%hvzRugNOoCFy=YKGe@bsG; zr+g2U5>g9pVvR0AqAKRw{9J^%KGAANZ8|X4_iM1VW@#bI65(P2 zoZZSjhhQ1I*$SU_@1H|1oS;=)T1fFM;)8r%i>T{(-7O2soZ60`3ER_D1R ztgH-_2Dk~PNMHFK+u^I~i+EV_kU08J)klaT5^>ihvtPU5vDBji;Y#?%i(0TI)aHNI zn}N4pH=Fa$N(h`eYYyuFoY2)opf(C`D~hXDH8eXiJA7_>;9(!0EaMCU)@Nz3Vyi3c z?AO)NWpspk`c1zs6J#m@SN4agbA*KMbbpmVEL zV{~p!%!H-LE}3j6%LY58VaCs{@rvhAyV1Mk{bR9b@G*-FRd2IXx0FM7J3B4`Sn15M zZCS-%bxsQNC`|=kx4}~og1L-J{jyVRQBf4MY8C!fRo2Z^Y9a3bz#b0yU^&k-kb{q<9@BJ`&jij(u3A(oSmhy>9^ghx?y?#1mLj7_JEhl7skY}M zKuvTzyl8mfHj2+JvaFHK_xxEcovi*z@`;aduWFY8h^BhFXH0zHA zU1JgSO0S3j0f^mj!4%E%s~iar+GK@`)Tf{gVpDqSmNVI)Qg~EZ+Beg&gE`l(A#D2; zRsm*g=HVV-aTZVBxbFB9i#EsFsRD$0=QD%|V-aEa%Poc+?C__GlRuG+xDb?#*$OKo z_wbp;LaUGCWRO}wDJ+WldL zmUXNQ&XOX1q_3MhqI3*J;$)8iXqQpM)x<-c`kQp$ej}ORRyvTNl910UgDeE?iH7ms zP;G>E}^42Cj_3DUgtm=xS+^qOQ;EOFS{j=B zX+K`E4F<~Dl$R7ziz`B)R8Yq?Q4_$bK^s*=A7SvIs+Q4E%t1{zycPYlTVz)Bg;mcd08|bJ0&%xXP zOMd4jRQnvnI&W-U)Ma(QzR!gqIPHSz&J>13DU?8W0(;;_7X|D#hT8ISxlP>0~gNLsO{)w}eWGi^HAzZu6H8M>7!Wg@tw2*VZ0QRq4;Q?=E%T za4&aAGpUe!zBxZn$)(gQ{d z3OCI#5?@OX*NGyz+xnM=dm!bjC2_6{J{nb2qk<;1AjL~P2gHlF7H1kN`CnZ<2tQK6 z8DK3ClbupkR0ux4H(t>H_pI8*WZTrRh`&1i+KDRcRfzlMVs?_(zM z8&qe$g@BSumEIFZ%jGk`L-kK_)sV>j)kV%_so!`~a%; zTDRPW=N9~>8g0mX!ea$s$Sd!d1-XiErb`>uW;C>_PBZ!!39ipI63pW%~VE?Nv2K5WO?Nu+ z7&{L%Gbz`I`W|7lka3xpa1ONv+74y-i(<46_-mDKJOa=JnZKZ}I&@wHk#%b?-qv-H#>aI6PHgx5FBqQWaq2zC6pVb7k7F82_ku;6f;Q% zOhUnEAV2G#6F~O$`t*wDS5@IMniFoxj-^+%<0yEqMCRZ9#*ZvxVXNoTFWR+yL=cNO zy#y0|O;F|E%FhhSZyp><+V$X2q~I|W@?mGHG4kUTqtE8J+a))PGLivU?G&WKZB(7x zy>TCp$g}K_Zw!JgMG2k};%Yo7a}>FG*%!@(fa%Fhwhx7{43dsJ9f6IH-WA?y^)6)s^RXX69LCObsKdNg ztCz7hPQ3>wPxyZp=4wcb%xE3US#JC%Sr>$8s5*sJCD$~J^Qos@-;UkYSo|Sk{uot# z2UK0a#+=6lU{ci~cH3NN(A=5foon&9L(FWSnfpv;bID=wTaTU&;TJ3!aPwp4I4rJ^ zy7;ahM38%xcuX6Ddi~(X?Kw~hn4iNfTlWJ-r}CDVGySR4uIk)pKRboo^tqjj^x#=~ zqpzM2ym|LYQdvvd(C6mix9$E{R`p-^frDY6Ls4()Tb8ljqzl^}H4u!}Plu$j;Wz7>IEC6e?;n4H8rwNz@F*VLItl-dWh zb0CVBlls*$y}z-;G;JK3BXdZ-t!lW3omt2+?CCZ+^GlAGYvyMX3oc^D-V9sjuDqdW zj2v7RG{aZvfhWHUCer!;gwSmuH&-86w1hk{7{5F$NFY^9R5ktJzqe@lJkwywo1D{5 zP|P9}e^s3_!WL=An+?`uEw0@GF;}hKp9Ztu8`REdpDGR>I0?DZ9a~Vc-1*zIh-nwm z9MWN?q33#PnCCzEWz#JDND*g_py}o+O1gqJ4+|i*{PX`%^%hW3eQ((43@s@kT@C^R zN`rJscY}0FigZa0A)V6QC0)`b(jC&>-JSRF`+wiP>#nn0ESE87_I~%f-+G>>BR^Yw znNnzMG)siv*cP~G@IwA|CHyX&djLv<@_KXf?;88f9nK4%|4J2-08_fS%ORC(hNxYi zSL^;5ivr(;#aCZ+EMM^h9DCE>|B^4%x1&0EA%zNm{Z$zV6iJP0W8McZGu1h4%hTq& z$q(w1?UA0!?7Wic z$*O;*{hEwYDJSH8Nl@6&T*cTG?jvBA@U0i=`{w1>Agg#9^jBYmH|Ak)6axaJQj;dRz5= zSK#49gm!E`^+tRwx&K?HI{*lB{5f8%QU2MAf+MR}CJqbd3sS7mAEqbaswG-w@8G@M zaqryW)D+7jVS$I?z+>4-`^|*fO#B;oYjCTF@0Adv7r;eoBIfrS?IfR{i?fBl7s~-- z_zO3hsK9Y(!NgP-)P+bCK<^tt0hpRy|g+#niJ zU~k&~--h3<622}XH_F;qNkt<(BMiZ2X=a>Gd?Wrii4*E!`-XSo`FvV?m9ir|T&&+V zq*uZlOqk82*LZ95a6%g9I0kL(a6;BX2ZPI7@kOAl_~X-w>py)fS$13=s9C&NdoaAP zx@GUa+!2d0MR_wDFEzVWcRn;IWC$DqpzneCV?QgjTbac~tkow(+)JQg#4{BakM3ji zTGDgMZ#&H+@qMnqen)bogYQ%Ov4^i$jGn*|DdF-8F_7WqnD);O%eDPZe0E@}kDO`q zZu8R*p8Ju49nw`3qKo?qjv*LOzj;i*@fMDzQ%XxsbZ>eQFwq4hV7OiOW~jeF=p%|2 z0XkOIS~{i0EBQnVjGq+!Q{B%`iZm|ufJ%HS<(TZ`bNC&tq7l5Iv^}n)^{Vw#s z7#JAe*1N-hm2?rv0({6R!)9Y5t>vwEzo8N z;=eNJJxo^Xen@e7eYF8FL8-a*iHh}rD8#NW_?a%%hK>(zzRt$wW*_buP?2dW(`{;; zo71}VOL|Yhg6Jp{|G^F@INRYovTwV;(-2@dq$?{($*5jTR@rlShfZuxiL%bU<8e{rpV`F3L@lGmH z*G&$vY(5kOS-mqbtX6=BzbKN`a(UrR$e{jijzPq-P!3q*RlF*YVws!ieE z`&=0GGpYejz*tj%f?`JTT{sD+eB8gABw9PncON~WLDjIIn!eZ#FZDa_-RG5iTR=i! zFX7D($iBjs_ok%qa(f_y!@d1QcrJFxGdu|N{A~DEkKq53V;w9ar`Bkw37&+0hDw_Y zhrEr>c8ns2d&mCvwPFYu8ztBgA>n|nM}W~KkE@7qd3-Lo z?C0XhRFLj|OxHFsJl+MhK6r)dv9G;MPw}vVJOEFA0z2zs z@?u%uP2J`*b6bI@_#7c{w_~3)pktbKd|Uo}SH9^s;;!d*(@Bv&a_URaOqsDyy3N%i zJ90T><5lf(U`+A;`6lxDbMx}Z!{Erqak*>P`+lc#_eJ{w?WHQ6O?nNY=Bt}jeV=5!7Ms0iOpm-2=o0~{i$K+apolO=9)Vhv@>TE!YPj>Flh@Kxt zo|{+RWZW-o_iHbm#c$x6@y^fY=XVtdTo!F~EI%H(3?MSOcC2mRFI~49@h@MNxiCyO z3_JBBGTQoJOm`*-oF|RME^V99RiHbxP9=163rTB+Dn)h{&rPH5pdISY7 z^UeW_;}!SfnI>5}3HW5=-Y27{JnYhXemK)|M?fR9Yp>weuX483dLO5M8+TUVeOIvg zOQU7)&vwLu>mS_os79Jw;iDIt=P&pT`pYl&;XUESTz-@NC`JA_^8BE%2hzX!L!g}T zrFeG0 z$mgnYYJn3UtXM4Xo6ZKCGUwXjp+&tK&XdrWo#k!hJlF-;`IIyB}QTP2=a4MQSEDDN4I1wDwY7pxx5+`ZJn$-^<7CeljTM*9L{? z!bI8lr?I?F{20UHJPH)kn+(X)Mg&fS6&&A6Hi=;I*8qHNog9AHP939-07Lcf`ycu@ zKaP|W8dV8atO$@E8jZ*3@D3R98X4Ow8Dle!2K1lK8ja^D1hd*--kuS?pAm1BQE29Y zKhgU7vfR4`O?>8uUAn_l44c$ zvTBYJ)owbIt7u#H0TI@5#G6Lc$QGLnY@54U{rg(Ruwcg66vo)6BJ~0&_*2PW0pE0JU zal2eelf=*owWb5i&xaz(jtNjQ-uYl+3=jIl|58;$;dEW!!{2CYyXBR3sin=o#KXVp zkNdMn{eA-{pSDFV$iv1f zhhG`&C%%*RC~Vo4JBPO@_@Kb;y*MGK5w~H7MqB^VQrgDK5hnN9f&A8XueSNcqp6n5 zQkz2qq^nJUtnOiQ^&pUU`F1!3ClvEYz_A0g&B^aI1%KyG1skY!NxI}oAv=CFd~@>! z6w;^ik=HDGIYDfxdC|QU55-2AxC&NFUjYvBpV9;45rvd{Y`#~a)KCnl5;dprIO$kq zdOl;Ko#B$!37zRfCJ(pDDEN}h^-sK1a&A88PmVy#c*sRI{*z?W1 zR|+b`8>>SH5LBkP>F5cb{y4X$`^Dq*b8PHDW1mmm0-eb94uHOhVBGQ8KEwSohN8|D zk=C<^HX6!m;?EB9&0wAvJ&E`ID7A1%y)0_EfsNIsN_W~1#g!B)weoYFT`{8V{FG z1QxBSD88dc<9J**oO&4QgCJzQDTqfhP*wC~a-b%|7288t0B_r4k$>LKY_phttjj@psIHg|#zQ zdGTBsW*pyOdWZD>MX%2cw3Do2z~Es?cU?u(uMZ8Y+X$Z!2)!iHd_6%faB0_6%SoKc zbs1X&zb)tURwx>L-veCnyj4Y}o?a=&KszILwMXEpvJYnINRuxXPis*85dgBzJ$q0*GH9@y?fYw~QV!C@ZO08AuLN(h@p( zUTGEE6Iamp5TcHkR%w|74k_j^26p+BtD6#8LQokN{hBTln!cQDffR zH^mOw_}wcSk-hwMxIFv;zFPutEbWG1Qsk{EbTlRMD!NgJY80`a=sYEQnjEej-eRsR zoXp<#?z%y$_E*nY)x&581iIoM?f%RcL%uq@m(LypVKYI~Ojo01lU|P?el7lP>3NVM zUNe{(FVVo}vIF;c3K`Gm?!wGL1(}FOI`rEIdzsul_D&Bik#jA!vcR55foJxS@dyjN zLcDe>lY^PzTk?s{iL?f4;gsQ`)9>?Fpqiu)GO{K4LK;oX=hTgO8oTW!$5o8$KnD!RGA|Nj;|+a%;Z(hIaWn##)6oqtxs$p zI*%=VS2=I|%xDQFM?2h4Ffac>h#B|CE;6R?v)?Y^A{hijuS*_({hrR{7i1!TiYxb^ z-XusbdQ!`sy{51!@~#^$QR0Y%oYA@EBS)w%;1mr?X;?kt*VT&!5BfMAXMan)Ri>J3 z>?zijDXp}lLXV71n&NRQ`i8`qyYT@jXS9GP6J{AMLucSq~u!2DLOCG*1xj7haJ9zm~O zb>$d7&~%9%_xEtI@uI~hB?ElaQI^AEXiv2BZDE+keS&N!@`3Q>CYABKYd@Zl4UD9Y zBU*rGV0ttTK6RAN=LCiI60c9VYHOpA7* zQcrZL7PQ^<{aI{JD7XgjRw39VvF4f7TjIfHVU|lcmp1*_U_LRjqNO(6hyF9%`Y6oEnSxkSIz z$2UQDQ7Gl1DvAIU` z8!W=lLao~a3hnAHP)Uh1DSC*O4#>E8d*Qs{(S53O!fgk!wlTlp>m%7lDdjx;8t!1{ zBgL99FbN7&dChU~R^~)T2*Nx$5|k;+t$SR1AlTw(7MVQMP}V21FF(N%ZVN)Visn$j z+Qn)VGC?=7bHaf38uQsNv`3DGe+B>K4)j2fZ78@TiFPaU(B9u_7K9m^%c?UgpSZdI zTTbt4Af`_8j;Q=Xp1d+sXTsPBM+wnlNh7>K!F<);$Z?>1@7G*2d_wd<2g$5rk$FzM zYr5^C>Q!m({@z995#fCG8S%|a2u!q zuLi%h+B9k8w0~2C$*zHTAzw}GjU1yGDnR!>NAIGLdzZwedj8OZL(qdhUZEgPzEjSj zL{F+E4pB}|$ivL!(NH$bBfT%kbcJ@#XL}L;OnSl<7tgbdZK z1y7Um0jgD&ZsZN!E5}TLv?lAB=Nel7@SPI;+IjqECGT01GkU44(1~nZ91p>{jaiEg zL)=T(M2HrO2En7eymTwK3?Uj>dZVGvh{NLu)rjS@eT6{cimhra56mV=$i% ze}@#GPV%n+LTs^&O9P;HwIeI|4?$KlP>p=b30AKQgP)z0UDW1tHjkQ@hF>Y)qosev z{4J_S8YMGnt~(@in%`tdJL6?kI3J~T9S|QVP)TI7N@jq-CH8uZr?C{ejw>JgWN zSUiwN1P0XYMt=xvgolh7KOS=b`)Z)WO1W=fQm^j1bWQ<_8Y>f@HibcQ#NRq)!ij_^ zO>%0%Oa&bHyRAk0Cg;m06^>meQkK}!TH$%c!9q;%6)H765RLH_vx>w>0scFtAt09k z8B26vtVpF{u}AdwepqNC%0y|eeM&zKGuz;JPq^Odl>TNiA}H*kK)j%V;yUbco9s?k z*m0lS_5?6}o02Sk$8Yyvuj!bXgjkx(`$zyfzRZ$iR1igv`=kzB8EE|!C39f3{k@I` zi_6d($eeka!yjVAdeKQ;Jq5pjr@Jje@F!7G^{Fy=xXWn{W?=>s3v-aisayCU`#=XSh*kvNTZ!Ve!VEnYC)QCBZdHa5(IN&ni8`60XkDPdMb@j8 zy#?9hlXQ{JWGdPcCpk#>P^7~y$4$X)*0N~qcH?D8e!HE!aKgF(m*FtXJk`lW2@#?@ zom@vSj80S@z~m=x{pH*!vb3MFpjUB)6qbC%`fY~>Z4iX;)6+36OSo)YqD1Z-m(F6} zJVIiWj@xWZUbp*+QeRgvn-~}2Bl4r6p5qb1&BWqKm!|_EQ6#Mc=pJ@#nE`6w zZNw(4p9u_YI>ygL$t9S9ArT*k#c-n0O1i_ueRMNH+D678&vY(GVNs;1W2X;%J437o##+cG} zt=$;?@O9b_r9lT^ARsw^guINNbR~8k=xR0^^qwza%i&*u3w$yw-lzu@XN1Q<(rON( z{HgP&l%HA3xYX?)NvOy+NElj_0uF)v5Dg8Em|XqGc8Tm43^%xQDS$3#aLL77=zTPL zTuL|aS}p#%+6^3X#h<8MyI z+F!1l3p=W&N)UoTiP#MVRy?-$j-W>$E505f)Mkqv@|Y@M7#`YX@3RLfEcB8REY@eciJg!OkKg zKF(E%*l+hJ76Xt*v2J?DXn2$m9!5FDXvlGuLL4)oR=_LxqlY{04Wfc7wD%t$x9>nw z!;&LZ^aQR*Ct7jB8e&RqtP=H8{sI-Srbk&hZZ z2(%fOA4J4+y<1T8x|D7~pZ zrWJ}_+w;sjJh=+)51XU*8w^7B|1*Hg2!{fn!Y-P{j7mhY9wxIr0taPvg-)fvVV;U4 z{59g+04GLt$M=k$qDGvqKUX>I#3#SQb&(GGRMg!rszjSDLxZsk2x$GKVzu^U`(dFa zq$C>FtKJ=Fo--E9Fk+_t7ASQ*3hI)Y)NDQ80z+A+oZ^wySNS2Ugya8q zj@mewyLk|3LSk{`5GP59Bi^tSFTlM=G2eq}?cY$R4(xZB1dj*QT<$T1GO2h~!2> z4mGMdv+Z8Wt<(UCUBn3-wB)gb%F|K=hJC??Z4|G=svAWkwY8^egUH7YVEWfY$rRT} z5h=$7{D&5cNzVzILIDzoi;j2T?wtJP%!u}}S2MK*vAgZ}8it@tK3?YN!Mu6&v7e;B znRWzS!_4KkBiNR*#f`<8n(}vs-||cTZ8h&Thl`2eY`00XnMQ06{oLga>UacKAiQ(` zMhyoVtd2l}4og>dkuQU~7-cwvXpquZ%#K`ZF-DC=f@57x{}KK^FM;D-tD=N8)|*nS@C>&@BuGP<~e#3_lKf&+8`{}-ub%){OP#D4z%;QQJZ^2dSwd)BirI#GKr zPw-C5Y$Cqm1$ukDdHn<#AdBhe^!0#tjA8EqBtWDt0%u)qcIF9>SCBP+M#_dIq{I$q zD-s*g!i4C!P(cpX3iHfF&*^C2Cd3bWCQkaIE4}?CR#JkLbJDbm0u(qFl?(rl_-Z$g z(W%Iz%x-KBoj8K9TOm9#-Sj!!J$~^awOWWB+Nh%3LuB19I83ILwYLKIb|0hz_CDP} zow{(P3w|2~wJ0n~Z$3=z2CFtcbWEfzp)YsDsp?D^88i1u<#sUZCCF6JA4Cqvm3iS;C}Q(qbAB2MZi2 zvOSlxNA6Gq%7|l6a$*;Lc>3)2Rm-O z{yQ&P|DIpSwDv!9Ft`U#A!d={4%@L>I*zvWzPZ~`%$F+dkp-mNBUK zYPdxjJ`LO)OJcC7IGJ&cZHLkuL)=qHSQKGvxkI3zRa+yL zNdS}9N(`dtY{YZwB{WkFBblm|6zA)C+!x>lAl$61C^wLy@8%$v1O5@n&%`l(D$>9R z{rr(w6;QqS^ymf?`fL{1pv%}tEtwnaz2Dv>3JW4E7y6bFm=cr4@*ZpXJq#jr?2jwo zdpS^%riwelD-pP+ld$o_oD1IDOfjgcxJdejwY{HQ+1Y3z(-r;zY!Fd?4$pT%mgD!8 zBIL$SP6=l`&&MA9Dr=l>{ivmPgvg|y+;$kO_kK}4Be+BbshtKe$FL0{e>>BCs2oF%ed*6lc?g5Y2iUwN#{cy79z)TDD@1lfO2c7vi-dUG!u3P$G&2v) zKPy8NFrI{pV?Y@%LuSxeFhX{w0vsM4ju1R7TM{e!O)%R8(_GPFBj9ET*2qZQQg2G{n z&A@#tal#(AOt40Ro*{*rtWheKWeH4-@_v{wQ#Q|Q4ni$;IuA%!s3A5$GxxOtL-$tx zDz0N-37spE>w$~EdprgQrd0QL61m581Lg2OnUxPhI`7`zg_FQEF{$l+{mO~4VfN=@ z5jSaBAd?r?d|YTM0u*k^XWfz|IKEgDbQOP#yK9Uo5$GhE@x_v%Zx7FkZHoN*|_Zhtu;3w%UlA+wH}74I#DQ=j)~E{F(}DEU}(h1jU8xy zpulN%Z~!GLrP*G+DL``nu_Qx2 z&nt5Oqf=K1o-7ycA;wgNoeSCc) zFUoXZ_{pBYNASrD-9dZ)Df%<;PkNn{n;yx2*NZTaTLp|RSeo}-cmJ%J%~7{k?HV_; zSMs$*&S&0ErFWx>{tyun`Upoez1Q7$iZkp;5x3mxEfp4ocQr7Gv3OdJCP=Kv0Pk3h zm}67(Z{(!?SbUD3M7+_Mn$U`Q= zx4dqZ=VT1U0~O<2?}EWlt!nu^Y)rbRlorHoSO5~lPV5c?98xAz3HMcM3{(@u^D9Jc zQ3d407knm7mx8G1=zYAVb<`7-fv6aZS;8G1)T2fS2?l3w_+F@am^exv1RlQ;s&u}*99{>Bb*HR5F49nqlHX`={+8t4l^!=F zGB;^y1ZK;1*9&GJm|zt`*Cg7($4W z%v;=R_x`s)&Dk4m0a~%U##s>h7W}TjyU;M4qWmoL{FmT}W>3+u=I20rw*Ht=_?fMP z=CL4M0L;BRC=F6=sn;{!F@whoEUefPMyiK$rZ}^gR{D z42dg$&|#$4fXhfW`OO7#mb|MB??wZKhC{J;#Bu@9*pa9fhsqm=MF@;!KhqTEwJ7DI zVAs;$qed@}>EVUUnZ7Z{ZWyJAsE&Vybl$PgdzgrvDH(+A%-PTL{BmWLJVU1!$B4d z#RZ~9#*JS}a80dxf3hQu|RP8x=7|V&N&WvEv*I zL*~wRVD@4>JyP)^-IH41UqKKMZ!)Nd_A>SN>!AM&sfiE^4$(W1P_BP6H6{lxTI3)q zhLlPUys^evhcGW7&{YcgaJ>v{cFS8Y2v5|6-=9f}SOpG~Tu(`OL<9ZHUm9{bpMKG< z{~^z&yxb2Asds3xP)WasW#7N&u1KK5YoYp{jr|1qSArRkLi{^cGXf);vYoIQDGCvW zEe5oy02SepPLj--g26~{?e5?t05I!1_$J?|+wWUo(LSh@Q$?op7*Zg}W>Rd)88MdwzB0jb2N(pz$O z{De@%g>LdpA?O-)Hi9(BoZ8=|RcSJ?zpe9JDckn=(=sc1AP$mauz8e6gaQ2~z~#Yc zNN980@TXJnPpHzL_V;BJ-NJfIVLNM!RF9dWe?J97Q*fjmUTvwtIev)l*Mc+n5D`l3 zM%|vn_mNM8nvY(EU%{0?CigH_aabnTElzTT%w3PLo*F_e<7z3*Jd5*Vkdu_e!ikzM znR@((jHtppYdHTI+XYr{7|mNk8UNn|`z+a%KhvEA{!o2}ll)*P8!u@+aEl^T2T)QD z2Xdb?Ay^GdO#U3aO}a{>f~)mcq*sb86TNG%DcH0#G>8LX$$*BbV>|2tP4xsxF^0DX z(ypVXjZ-@vh6V}D2WR}9QS@N)xS&sD{3VYq@9{eK7}tAW{dYxWn&7@O#b1zSpa+=ai&}9GLOxT3DHOx^Q#lDwh_0H(5UA zwYCaYjg#D$BPX{IppIRuJ(lneR-MGbHf{LW8!5R@#&7cF36oZ@%;|v>g7MSYq@>nA zLW!bA^qs*I`R-;{6EaM@SBGyZxsI`K50re?(uZXg85WMjNXHw9Vx%Ct_w7{_*L6$= z_8UG&b1(deGMr4!epClJ!K&%sIiX=KvzXpK<)XP?UMZG|?tShjyolI|*IB>FVBV7^ zY^KiUmxd9$rCvr(t^SovlEwN(Wl4}w*pTS(hR%~ZTV_wgO7N7K4z;19=QCUE76?$r>K@qP<~2Krp6>;=lrtV{L`6vnJ(o5$Xji<*8qVi4?%R{irT zo`+C($cwW20K1bXLUL)62(oW&i4)~_p?=T3XHbB_dD$o9oarR?oTaiBz3NZ+7c+jd z5-9h6U}Fi~o{5A(s#v5UPR!3r_C!nm?0LzG$O|`Nl>|yqizpRyum&EoAW=U$IqGeV zF+Na0W%;pk?XfB>waWIL;uw33oqErW8bu-)S+sNx6fkuQiV)2e8K3oFo`XjFn{c$! zB@eS;ZDHIg0(LN$+PdPsY+!5gy}v7Bwh*Cb z)0)~!;%|lD?=J{|S`||d5cd}{J-|kg@3fJIl#01f-ABVTI1SQJi4_JBc-wX$iw0Ft z{d{|Cn0p^@{wcaS=$y{7+?s3g+|3k5mHz7UHVRxo*&mRR9jWIUZU%G}Tj2>SHzcTT zVFHBD*X?c(QzidfDU5&9O8@)P^PVqtoCo3a>MDA?*dXaMR?s>(BGdWS6! zwQa-E@bnOaL|Jb7($q+o=pcy>i!4GXr1p5r;3@leY+GTCQ>7{naHH+|C&^ElIkxJf z8W5v8bfN`UB695T3~ABNappBY`Fy{c5jF<41omKzeau##m?hIh;nolmn@)5FF4q5& z9KiK&2;mJ1U(F#Oyn29Q&d2OK&9w3L~mr@W-F;c-iue}Gmv`ikrXadO@F zh1?8=O*b5;_+wr=BIUSF=8?&D#jE(Ox21A&I)6aBe^5q}*+sAl1av@PT^O~dh#YEs z)@|=UV7RZuiYo10dmTo>Jg#zCUWIha*lB%+bIYo~=ZSDeAaWv0e4xyE5g%Xdd~obr zv{*0ZgkdXVe#Ad0eLRVVunjGAkZT3E2B>E?Q4W`Z1F>^d+dJ!KpuzE-y_)pzaoT>( z`atXeuY7W(lghK&;g~a(L?;1GjOnw|iFNpYoH*RoTSBw6k$BceCW$lH;X}k3#_jIE!hinxHO}d-;IZ zOGyV`xm8I-bh9K^`{tB^GyIvPTFF3ND4K<6X{`hx!mQWQTV>F8Q8CET(#Nj-sCIqq zMEkrMw?Af_0mQCh>L4>IKR`Q6sN)wEb z;E%GRq7>8_*@HVLC9Mnegc>AzCJ_`DZd|r@L4ojvrmL$Mim80UH`PalLe?wTh)urg zk8DF2C#h?tDqFAXH`q9m9SPM(EG`H+yqxk>*DLk!>%21_&v*;q%@ASg{Nw$+cgK-l zmhEul9R5l%RcCK6v8mQ6$qKiQ2MbmBc|hT)mlE%6hs!RSOm>JueO*)+g@=~gf-)>w# zzR#hEWxk2})bkz{_Gu`G>d)eYu|8FZsB8@j2_jIUA}SUFk7*FILk%K*G;#`;lA?x8u15Z5fFl~6#TO?qGIK7`%)?Z77%fu)qGY^8gvJ=eEfc)22g_E14`osaJiV=> zB@sE+jvxc4-Hn;imfs_OqTV5AA*v(t?8mPurP9T<^u>kOL>m1^Sb-%#tHt*|sDckU zD1bgkQ+|&HNqXA8Ni_!+>0$1hLIoe*j0`NhL~K@+)SZ;fOf>N93wde48fM;4rnRd3 z+JH5P`C+=DV=S{{)s5poqUuOfu69Vm>I{#4%Rlf!O=$rJ<+gJh}E$;-$No+^rO)jhDt*5 zM;aBFVfIcr+-X=QEilHc2}+DU%cbR~+s?*+EFWUh!ESjO!{0uQj)*gmX(RkNng#cr*#4$a{~tni8Q0^p!iRoh;8$yX>&LdSuZjjy8e2$6Nsiv^;^-;@R4i05CIaCM%!uIec^fdb14fKSDodJiIqTrqC~ z=D||Jo#dat=LibPNN?PC znic#T=-q3=hS^b{vsVhPe@p|zA6vm8#!}U>`Xz9gLAKe|gqK2$Iat0RA~A|7^HM&8 z4Z%#I+&fyqKcSX*>)gY35%vYVi*!`Azb1?~COsdw)!pjLqIl5PRkE9VzcvqyZpIuG zdZ3MfQR+^OQ9(r~->t|-knI0~4;qJ^%Br)_xVgzL#c^fvEb3;1aKJ>Gb+dN&yY8$w zQD{+JRF>09pfdDu$z!IQuANMRthQd|OdG^+KFu(LyNE$d>@Mx{B69*m8*XtV6hQ}k2xNlf)0Ealx?lz)@?13T5VQ#ZxoI$Lo+|=5t z2!0C+sApUvsoNRC8$4>uWAq1@ZkC?QT*qfaw{>sH;N;~Ddq%-9KxaFQ2&yvXsi z^ry?|aZAD2X3hK!6vgY+`Wd#G)xdbAE>=WA-!5*E^dR(wzWySyf7?zV;$9g9w~v6L zxn%m}v&Rnc{b_aSne9WqI4zvo16!bY99f*%D)&(3Ma;h+>Q1F=vyZim_LzknjZ=LV z*auq!w<#F*ki92s=b6^K^mN}N^ODRaJ0FKFw-_}W=0+_u2GK)Mmw++m&hcxDD2S254anG@Y z!wm?5FFoQWqxe7XD_ceV%0+M5586?qJa130zsO_auS6JSZB}?Dign|DIO!bN7JR-f zDSuo+7UZ(RypGh&U%q~m3H|qHt@^~-ShBBUGOtY{P1wfTJip-ZmRaGS4sf2LP?XFB4aoGnlXTN$8x)$@Njy zTchWGv4Vg5-1Lw>9IjeLNOy0#?dej?LGE72q4@)HZ8VmB|Kd zJmnt+2W@h)G<{%je_O%f=67Vr${U2~u5X-sXMnSrSD9iQg;r4E0ijPslv5Am9H@(o z%DTz+e+&BiuaJ zYfa_Ll}U3N=q^=l`O*6O|Mow2EcXa_LZT!U$gLT zwm91~v(cQ~293#MMotgR1e+Gl;_E)Vz|HXQbPl(|;dteIUdDJd`R;+!4;|ZW)&byJ zOazUiKb-G=AKq!_3c=&mN!B}S{cnvK6@f3(B(%Z3WQ3w<5@Y`E6Gh_+A`@3n(~uXP z)AWw%3ocH^(T&l@Z9u!s9cDnGY-6XOkXl7fF&h`4D_x<2iG@&m5@c<3@+W zyhCnvS3vnr!@BD*Ya0>z(p%pI;Cd#`{AZTiJkt&RD(Ppj_Ax07xulMx!f2k_V_C

    @!&F*x35^Jfm!14Gmuo^Fux#1=5*YKA|E#Q3{1^<^*Yhh^M5QfeI^1%PfOCz=7d<~RtkiY~x(e>!q{@cT!b2539@Z)JMWIh;05s&2 z{uY1;Q+K-^&`;MB!aBPs5aiDYMJ@>!_i2&!c|p}}0yugpn7;oJz}nGj8~LD@f9<>s zl&k0S40zlAxBuHOc9xcND6gYQFvZ!jEBAv@6)c7wa)65+(l5ebU&5MM$khIV6LeJ7 z-<8&&Z=C<;@*lJ@<95)j{{@nUF4=JRuRMJ$WWMDa@ZTB~(1A|=!^|;ytfD2n*I7kH zgbIup+IZYeWH8#e&(AwM+5l%Ey?UyQ0~b*XqbsTRALci_84lDM;*cisy@rKC;G%kK z+$8xwn}~R^3EodrWKBDY{neDnm{TvfJTxY7^)J{Ot>A6n*$dzZ#Qh&e@I}C+X*ME7 zvd0Tpmto^?-zQQccuRI@82-pO54}L)><_KR?H?YRK0FnEb!I&hiS4@q7!rMcB`xR<9%5;%-Ukjib_ zV&G8v1hvRim;o??<9LGBlOJM@=NR8?{p^9l7`FlQ$EMT0i1^v;tz9PTKbbu|E-e87L5+0aVb6t+zuq@c>})Wv{}0YWlm-yj(#8k!ZM;oFbct|CHJ%^= z=>dqQCX?7TwKDs-BCr@Jzs79Vv#x3Juz%>AbG2;J(nY}Ge-n!^5Q`Ho_fZeXF$hjT~@F=b1)L-SIE}gCV*!Z4z3s{^9^5VqD8O zfuA~kvy8wk4?N5oFAH6^v2Yp+T=rh?o?b4%9Vnd1k>{~{!prWf=z0{xvO_~HJx)XQ zbpUK>c^oqTj_@YnorhJgzaj(fmmSg3DSi#zT=1Zx6Ni0y*Zr#e89)a^o22JSUec0k zDVgW{(x+BSn9(bwiI?DxJ!RK-)dkyrz6);HTWLQ#G<-_T_2JL*nf}wJej_d4>MN^} zD*!g0c^?VD#Q)zAul@M>>3F+Qa0Le6s3Omu7bp9^3XsrnPAKLTis~NBMb(u>` zF7+%Q(zX9}btFtX;;XXq{f} zoT;z>4^wX)6;&IyeGlC+2+}PuA_CH#L+5}X4H5#<-6h@KJ+!2RNTVRq-AD=2-68Pp zxu5TO-*@o`EY{3gd(Z6aI^#Ny-x;`b_FKj*fnA7g?AE@)n7tc#LyPZM`P74z+ffhp zlHX4V`*kt7FvrIWj~$^y$0LBbGADzo1TG@O*bRBe4~HY%#mDR%x|IRVmJ*X%>pGspe8+>M$X&}+&=+PsKfWjCI8ib5gOs8H>?P5qnNfxrgX zzeDHjrQgi)l-ChgeTYg1l^7}Ie324}D!|Ma`Ya#w#*}SQuEay$D=IX-!SjzQ)=FMR z|LC%x3wQClR_eM?T2?YTOZxsw_j)oLun)6Xeyk_LLCjR~D0yXA5xvuM6hz=_l15No zQeG^h#DCRMPoX$q#|K|>@#qE14ZAs1=?%I7jXHg%R~LZV@SRotV$snn#AeY{3haKB zyvB#tlxP%aSEPsyQ186sAdn$}o=ZXK^4UzD_+jHz{peynEYsc@u*SL}^8aTS8GmoT z;y{oM>=9{3;^aaHP^{$sojshF4Wb6N1f0DiAhmN(Z~OhX@6&J44~KyJB}3Pj$14E7 zz#WKH{B7x7|NeT7(!W&A%o%w;U`k0v6rjeM52koaT*`s&~9!ZZzIBc%jIXh+ygqARmA~u*|4EUyc-2p9;x*-Ft+4i@mjho zM4AC%ygrR}ZpdD)`VC|kWJ0#3V}QT&@wM=0AO0qdW5;me7iw9%3~gQ~p8|*7m#7OQ zqSb#R!M`f;VGjo(14So3^!HCCV6_{*aBtK4pP&^(Yz2t1Do{A( zb@vXi6SWce?MP=bx0ux1ed|zN;BTFXZFyU`zmWEL@>XJgk}KyJVx zx->(9wk3n8prVu7TylZr4L^6ukOFu%ffXzT{NFzGW3;g40@BY2qdi1e^8k-0zYIeZ z_H8@ZZ33TSTU?-KOa+ibPgvj|w;Gq+qey@?lEGq2%a46PgI0<}e6Pm%kl7$HBC|U@ z@w(&5?eQ^`!g4ILb&eQJfEzI;HOy#e!OpB(P^UZvN)*9%9wZX@uAwXgDf6P?8Zzk)18?g&IbBllde_r^*BrI+(^^7A{NEA;Xiy1D&bW{KPfB@zlLmuHQ)i;Blt1wEn

    Dm8&<%dGR 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 z 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 bool: + r""" + checks to see if a single node of a pattern matches + """ + if isinstance(current, type) and issubclass(current, MatchAllNode): + return True + if not isinstance(node, Node): + return False + if isinstance(current, type) and issubclass(current, torch.nn.Module): + return ( + node.op == "call_module" + and parametrize.type_before_parametrizations(modules[node.target]) + == current + ) + elif callable(current): + return node.op == "call_function" and node.target is current + elif isinstance(current, str): + return node.target == current + return False + +def apply_match( + modules: Dict[str, nn.ModuleDict], + pattern: Union[Tuple[Any], Any], + node: Node, + matched_node_pattern: List[Node], +) -> Optional[List[Node]]: + r""" + This function will return the matched nodes if the pattern matches the node given + If there is no match, it will return None + """ + if isinstance(pattern, tuple): + if len(pattern) == 1: + if _match(modules, node, pattern[0]): + return matched_node_pattern + [node] + + first, *rest = pattern + if _match(modules, node, first): + if rest is None: + return matched_node_pattern + [node] + + for user in node.users: + return apply_match( + modules, tuple(rest), user, matched_node_pattern + [node] + ) + elif _match(modules, node, pattern): + return [node] + return None diff --git a/torchao/sparsity/prototype/pruner/parametrization.py b/torchao/sparsity/prototype/pruner/parametrization.py new file mode 100644 index 0000000000..df94f7093b --- /dev/null +++ b/torchao/sparsity/prototype/pruner/parametrization.py @@ -0,0 +1,59 @@ +import torch +from torch import nn +from torch.nn.utils.parametrize import is_parametrized + + +def module_contains_param(module, parametrization): + if is_parametrized(module): + # see if any of the module tensors have a parametriztion attached that matches the one passed in + return any( + any(isinstance(param, parametrization) for param in param_list) + for key, param_list in module.parametrizations.items() + ) + return False + + +# Structured Pruning Parameterizations +class FakeStructuredSparsity(nn.Module): + r""" + Parametrization for Structured Pruning. Like FakeSparsity, this should be attached to + the 'weight' or any other parameter that requires a mask. + + Instead of an element-wise bool mask, this parameterization uses a row-wise bool mask. + """ + + def __init__(self, mask): + super().__init__() + self.register_buffer("mask", mask) + + def forward(self, x): + assert isinstance(self.mask, torch.Tensor) + assert self.mask.shape[0] == x.shape[0] + shape = [1] * len(x.shape) + shape[0] = -1 + return self.mask.reshape(shape) * x + + def state_dict(self, *args, **kwargs): + # avoid double saving masks + return {} + + +class BiasHook: + def __init__(self, parametrization, prune_bias): + self.param = parametrization + self.prune_bias = prune_bias + + def __call__(self, module, input, output): + + if getattr(module, "_bias", None) is not None: + bias = module._bias.data + if self.prune_bias: + bias[~self.param.mask] = 0 + + # reshape bias to broadcast over output dimensions + idx = [1] * len(output.shape) + idx[1] = -1 + bias = bias.reshape(idx) + + output += bias + return output diff --git a/torchao/sparsity/prototype/pruner/prune_functions.py b/torchao/sparsity/prototype/pruner/prune_functions.py new file mode 100644 index 0000000000..a75c09cc30 --- /dev/null +++ b/torchao/sparsity/prototype/pruner/prune_functions.py @@ -0,0 +1,475 @@ +""" +Collection of conversion functions for linear / conv2d structured pruning +Also contains utilities for bias propagation +""" +from typing import cast, List, Optional, Callable, Tuple + +import torch +from torch import nn, Tensor +from torch.nn.utils import parametrize +from torch.nn.utils.parametrize import ParametrizationList +from .parametrization import FakeStructuredSparsity, BiasHook + +# BIAS PROPAGATION +def _remove_bias_handles(module: nn.Module) -> None: + if hasattr(module, "_forward_hooks"): + bias_hooks: List[int] = [] + for key, hook in module._forward_hooks.items(): + if isinstance(hook, BiasHook): + bias_hooks.append(key) + + for key in bias_hooks: + del module._forward_hooks[key] + + +def _get_adjusted_next_layer_bias( + next_layer: nn.Module, pruned_biases: Tensor, mask: Tensor +) -> nn.Parameter: + r"""Returns new adjusted bias for the second supported module""" + if parametrize.is_parametrized(next_layer): + # need to access original weight + parametrization_dict = cast(nn.ModuleDict, next_layer.parametrizations) + weight_parameterizations = cast( + ParametrizationList, parametrization_dict.weight + ) + next_weight = weight_parameterizations.original + else: + next_weight = cast(Tensor, next_layer.weight) + + scaling_weight = next_weight[:, ~mask] + if isinstance(next_layer, nn.Conv2d): # checking for Conv2d + # Propagating first layer pruned biases and calculating the new second layer bias + # involves more steps since the Conv2d scaling weight has extra dimensions, + # so adding bias involves broadcasting, logically: + # for each channel k in range(oC): + # scaled_biases = sum(first_bias[pruned_idx] @ next_weight[k, pruned_idx, :, :].T) + # new_next_bias[k] = old_next_bias[k] + scaled_biases + scaling_product = torch.matmul( + pruned_biases.reshape(1, -1), torch.transpose(scaling_weight, 1, 2) + ) + sum_range = list(range(len(scaling_product.shape)))[ + 1: + ] # all but the first dimension + scaled_biases = torch.sum(scaling_product, sum_range) + elif isinstance(next_layer, nn.Linear): # Linear + scaled_biases = torch.matmul( + pruned_biases, torch.transpose(scaling_weight, 0, 1) + ) # recall b2_new = b1 @ w2.T + b2 + else: + raise NotImplementedError(f"Type {type(next_layer)} not supported yet.") + + if ( + parametrize.is_parametrized(next_layer) + and getattr(next_layer, "_bias", None) is not None + ): # next_layer is parametrized & has original bias ._bias + adjusted_bias = nn.Parameter(scaled_biases + next_layer._bias) + elif ( + not parametrize.is_parametrized(next_layer) and next_layer.bias is not None + ): # next_layer not parametrized & has .bias + adjusted_bias = nn.Parameter(scaled_biases + next_layer.bias) + else: # next_layer has no bias + adjusted_bias = nn.Parameter(scaled_biases) + return adjusted_bias + + +def _prune_module_bias(module: nn.Module, mask: Tensor) -> None: + r"""Applies mask to given modules bias""" + # prune bias along with weights, discard pruned indices of bias + original_bias = cast(Tensor, getattr(module, "_bias", module.bias)) + if original_bias is not None: + module.bias = nn.Parameter(original_bias[mask]) + + # remove _bias parameter + if hasattr(module, "_bias"): + delattr(module, "_bias") + + +def _propogate_module_bias(module: nn.Module, mask: Tensor) -> Optional[Tensor]: + r""" + In the case that we need to propagate biases, this function will return the biases we need + """ + # set current module bias + if module.bias is not None: + module.bias = nn.Parameter(cast(Tensor, module.bias)[mask]) + elif getattr(module, "_bias", None) is not None: + module.bias = nn.Parameter(cast(Tensor, module._bias)[mask]) + + # get pruned biases to propagate to subsequent layer + if getattr(module, "_bias", None) is not None: + pruned_biases = cast(Tensor, module._bias)[~mask] + else: + pruned_biases = None + + if hasattr(module, "_bias"): + delattr(module, "_bias") + + return pruned_biases + + +# LINEAR +def _prune_linear_helper(linear: nn.Linear) -> Tensor: + # expects linear to be a parameterized linear module + parametrization_dict = cast(nn.ModuleDict, linear.parametrizations) + weight_parameterizations = cast(ParametrizationList, parametrization_dict.weight) + for p in weight_parameterizations: + if isinstance(p, FakeStructuredSparsity): + mask = cast(Tensor, p.mask) + + with torch.no_grad(): + parametrize.remove_parametrizations(linear, "weight", leave_parametrized=True) + linear.weight = nn.Parameter(linear.weight[mask]) # type: ignore[possibly-undefined] + linear.out_features = linear.weight.shape[0] + _remove_bias_handles(linear) + + return mask + + +def prune_linear(linear: nn.Linear) -> None: + mask = _prune_linear_helper(linear) + if getattr(linear, "prune_bias", False): + _prune_module_bias(linear, mask) + + +def prune_linear_linear(linear1: nn.Linear, linear2: nn.Linear) -> None: + prune_linear_activation_linear(linear1, None, linear2) + + +def prune_linear_activation_linear( + linear1: nn.Linear, + activation: Optional[Callable[[Tensor], Tensor]], + linear2: nn.Linear, +): + mask = _prune_linear_helper(linear1) + if getattr(linear1, "prune_bias", False): + _prune_module_bias(linear1, mask) + else: + pruned_biases = _propogate_module_bias(linear1, mask) + if pruned_biases is not None: + if activation: + pruned_biases = activation(pruned_biases) + linear2.bias = _get_adjusted_next_layer_bias(linear2, pruned_biases, mask) + + with torch.no_grad(): + if parametrize.is_parametrized(linear2): + parametrization_dict = cast(nn.ModuleDict, linear2.parametrizations) + weight_parameterizations = cast( + ParametrizationList, parametrization_dict.weight + ) + + weight_parameterizations.original = nn.Parameter( + weight_parameterizations.original[:, mask] + ) + linear2.in_features = weight_parameterizations.original.shape[1] + else: + linear2.weight = nn.Parameter(linear2.weight[:, mask]) + linear2.in_features = linear2.weight.shape[1] + + +# CONV2D +def _prune_conv2d_helper(conv2d: nn.Conv2d) -> Tensor: + parametrization_dict = cast(nn.ModuleDict, conv2d.parametrizations) + weight_parameterizations = cast(ParametrizationList, parametrization_dict.weight) + for p in weight_parameterizations: + if isinstance(p, FakeStructuredSparsity): + mask = cast(Tensor, p.mask) + + with torch.no_grad(): + parametrize.remove_parametrizations(conv2d, "weight", leave_parametrized=True) + conv2d.weight = nn.Parameter(conv2d.weight[mask]) # type: ignore[possibly-undefined] + conv2d.out_channels = conv2d.weight.shape[0] + + _remove_bias_handles(conv2d) + return mask + + +def prune_conv2d_padded(conv2d_1: nn.Conv2d) -> None: + parametrization_dict = cast(nn.ModuleDict, conv2d_1.parametrizations) + weight_parameterizations = cast(ParametrizationList, parametrization_dict.weight) + for p in weight_parameterizations: + if isinstance(p, FakeStructuredSparsity): + mask = cast(Tensor, p.mask) + + with torch.no_grad(): + parametrize.remove_parametrizations(conv2d_1, "weight", leave_parametrized=True) + + if getattr(conv2d_1, "_bias", None) is not None: + if ( + conv2d_1.bias is not None + ): # conv2d_1 has original bias and bias propagated from previous layer + new_bias = torch.zeros(conv2d_1.bias.shape) + new_bias[mask] = conv2d_1.bias[mask] # type: ignore[possibly-undefined] + # adjusted bias that to keep in conv2d_1 + new_bias[~mask] = cast(Tensor, conv2d_1._bias)[~mask] + # pruned biases that are kept instead of propagated + conv2d_1.bias = nn.Parameter(new_bias) + else: # conv2d_1 has only original bias + conv2d_1.bias = nn.Parameter(cast(Tensor, conv2d_1._bias)) + else: + # no original bias, only propagated bias + if ( + conv2d_1.bias is not None + ): # conv2d_1 has bias propagated from previous layer + conv2d_1.bias.data[~mask] = 0 # type: ignore[possibly-undefined] + + if hasattr(conv2d_1, "_bias"): + delattr(conv2d_1, "_bias") + + +def prune_conv2d(conv2d: nn.Conv2d) -> None: + mask = _prune_conv2d_helper(conv2d) + if getattr(conv2d, "prune_bias", False): + _prune_module_bias(conv2d, mask) + + +def prune_conv2d_conv2d(conv2d_1: nn.Conv2d, conv2d_2: nn.Conv2d) -> None: + prune_conv2d_activation_conv2d(conv2d_1, None, conv2d_2) + + +def prune_conv2d_activation_conv2d( + conv2d_1: nn.Conv2d, + activation: Optional[Callable[[Tensor], Tensor]], + conv2d_2: nn.Conv2d, +): + r""" + Fusion Pattern for conv2d -> some activation module / function -> conv2d layers + """ + parametrization_dict = cast(nn.ModuleDict, conv2d_1.parametrizations) + weight_parameterizations = cast(ParametrizationList, parametrization_dict.weight) + for p in weight_parameterizations: + if isinstance(p, FakeStructuredSparsity): + mask = cast(Tensor, p.mask) + + prune_bias = getattr(conv2d_1, "prune_bias", False) + if ( + hasattr(conv2d_2, "padding") + and cast(Tuple[int], conv2d_2.padding) > (0, 0) + and (conv2d_1.bias is not None or getattr(conv2d_1, "_bias", None) is not None) + ): + prune_conv2d_padded(conv2d_1) + else: + mask = _prune_conv2d_helper(conv2d_1) + if prune_bias: + _prune_module_bias(conv2d_1, mask) + else: + pruned_biases = _propogate_module_bias(conv2d_1, mask) + if pruned_biases is not None: + if activation: + pruned_biases = activation(pruned_biases) + conv2d_2.bias = _get_adjusted_next_layer_bias( + conv2d_2, pruned_biases, mask + ) + + if ( + not ( + hasattr(conv2d_2, "padding") + and cast(Tuple[int], conv2d_2.padding) > (0, 0) + ) + or conv2d_1.bias is None + ): + with torch.no_grad(): + if parametrize.is_parametrized(conv2d_2): + parametrization_dict = cast( + nn.ModuleDict, conv2d_2.parametrizations + ) + weight_parameterizations = cast( + ParametrizationList, parametrization_dict.weight + ) + weight_parameterizations.original = nn.Parameter( + weight_parameterizations.original[:, mask] + ) + conv2d_2.in_channels = weight_parameterizations.original.shape[1] + else: + conv2d_2.weight = nn.Parameter(conv2d_2.weight[:, mask]) + conv2d_2.in_channels = conv2d_2.weight.shape[1] + + +def prune_conv2d_pool_activation_conv2d( + c1: nn.Conv2d, + pool: nn.Module, + activation: Optional[Callable[[Tensor], Tensor]], + c2: nn.Conv2d, +) -> None: + prune_conv2d_activation_conv2d(c1, activation, c2) + + +def prune_conv2d_activation_pool_conv2d( + c1: nn.Conv2d, + activation: Optional[Callable[[Tensor], Tensor]], + pool: nn.Module, + c2: nn.Conv2d, +) -> None: + prune_conv2d_activation_conv2d(c1, activation, c2) + + +def prune_conv2d_pool_flatten_linear( + conv2d: nn.Conv2d, + pool: nn.Module, + flatten: Optional[Callable[[Tensor], Tensor]], + linear: nn.Linear, +) -> None: + mask = _prune_conv2d_helper(conv2d) + + # We map the pruned indices of the Conv2d output to the flattened indices of the Linear following the Flatten layer. + # we determine the flattening scale (h * w), and readjust `first_pruned_indices` + # (each idx maps to range idx * h * w to (idx+1) * h * w), `first_valid_indices`, + # and `pruned_biases` (repeat each bias by h * w). + if parametrize.is_parametrized(linear): + parametrization_dict = cast(nn.ModuleDict, linear.parametrizations) + weight_parameterizations = cast( + ParametrizationList, parametrization_dict.weight + ) + linear_ic = weight_parameterizations.original.shape[1] + else: + linear_ic = linear.weight.shape[1] + + conv2d_oc = len(mask) + assert ( + linear_ic % conv2d_oc == 0 + ), f"Flattening from dimensions {conv2d_oc} to {linear_ic} not supported" + + flatten_scale = linear_ic // conv2d_oc + flattened_mask = torch.tensor( + [[val] * flatten_scale for val in mask], dtype=torch.bool, device=mask.device + ).flatten() + + if getattr(conv2d, "prune_bias", False): + _prune_module_bias(conv2d, mask) + else: + pruned_biases = cast(Tensor, _propogate_module_bias(conv2d, mask)) + flattened_pruned_biases = torch.tensor( + [[bias] * flatten_scale for bias in pruned_biases], device=mask.device + ).flatten() + linear.bias = _get_adjusted_next_layer_bias( + linear, flattened_pruned_biases, flattened_mask + ) + + with torch.no_grad(): + if parametrize.is_parametrized(linear): + parametrization_dict = cast(nn.ModuleDict, linear.parametrizations) + weight_parameterizations = cast( + ParametrizationList, parametrization_dict.weight + ) + weight_parameterizations.original = nn.Parameter( + weight_parameterizations.original[:, flattened_mask] + ) + linear.in_features = weight_parameterizations.original.shape[1] + else: + linear.weight = nn.Parameter(linear.weight[:, flattened_mask]) + linear.in_features = linear.weight.shape[1] + + +def prune_lstm_output_linear( + lstm: nn.LSTM, getitem: Callable, linear: nn.Linear +) -> None: + prune_lstm_output_layernorm_linear(lstm, getitem, None, linear) + + +def prune_lstm_output_layernorm_linear( + lstm: nn.LSTM, + getitem: Callable, + layernorm: Optional[nn.LayerNorm], + linear: nn.Linear, +) -> None: + for i in range(lstm.num_layers): + if parametrize.is_parametrized(lstm, f"weight_ih_l{i}"): + parametrization_dict = cast(nn.ModuleDict, lstm.parametrizations) + weight_parameterizations = cast( + ParametrizationList, parametrization_dict[f"weight_ih_l{i}"] + ) + mask = weight_parameterizations[0].mask + + with torch.no_grad(): + parametrize.remove_parametrizations( + lstm, f"weight_ih_l{i}", leave_parametrized=True + ) + setattr( + lstm, + f"weight_ih_l{i}", + nn.Parameter(getattr(lstm, f"weight_ih_l{i}")[mask]), + ) + setattr( + lstm, + f"bias_ih_l{i}", + nn.Parameter(getattr(lstm, f"bias_ih_l{i}")[mask]), + ) + + if parametrize.is_parametrized(lstm, f"weight_hh_l{i}"): + parametrization_dict = cast(nn.ModuleDict, lstm.parametrizations) + weight_parameterizations = cast( + ParametrizationList, parametrization_dict[f"weight_hh_l{i}"] + ) + mask = weight_parameterizations[0].mask + + with torch.no_grad(): + parametrize.remove_parametrizations( + lstm, f"weight_hh_l{i}", leave_parametrized=True + ) + # splitting out hidden-hidden masks + W_hi, W_hf, W_hg, W_ho = torch.split( + getattr(lstm, f"weight_hh_l{i}"), lstm.hidden_size + ) + M_hi, M_hf, M_hg, M_ho = torch.split(mask, lstm.hidden_size) + + # resize each individual weight separately + W_hi = W_hi[M_hi][:, M_hi] + W_hf = W_hf[M_hf][:, M_hf] + W_hg = W_hg[M_hg][:, M_hg] + W_ho = W_ho[M_ho][:, M_ho] + + # concat, use this as new weight + new_weight = torch.cat((W_hi, W_hf, W_hg, W_ho)) + setattr(lstm, f"weight_hh_l{i}", nn.Parameter(new_weight)) + setattr( + lstm, + f"bias_hh_l{i}", + nn.Parameter(getattr(lstm, f"bias_hh_l{i}")[mask]), + ) + + # If this is the final layer, then we need to prune linear layer columns + if i + 1 == lstm.num_layers: + lstm.hidden_size = int(M_hi.sum()) + with torch.no_grad(): + if parametrize.is_parametrized(linear): + parametrization_dict = cast( + nn.ModuleDict, linear.parametrizations + ) + weight_parameterizations = cast( + ParametrizationList, parametrization_dict.weight + ) + + weight_parameterizations.original = nn.Parameter( + weight_parameterizations.original[:, M_ho] + ) + linear.in_features = weight_parameterizations.original.shape[1] + else: + linear.weight = nn.Parameter(linear.weight[:, M_ho]) + linear.in_features = linear.weight.shape[1] + + # if layernorm module, prune weight and bias + if layernorm is not None: + layernorm.normalized_shape = (linear.in_features,) + layernorm.weight = nn.Parameter(layernorm.weight[M_ho]) + layernorm.bias = nn.Parameter(layernorm.bias[M_ho]) + + # otherwise need to prune the columns of the input of the next LSTM layer + else: + with torch.no_grad(): + if parametrize.is_parametrized(lstm, f"weight_ih_l{i+1}"): + parametrization_dict = cast( + nn.ModuleDict, lstm.parametrizations + ) + weight_parameterizations = cast( + ParametrizationList, + getattr(parametrization_dict, f"weight_ih_l{i+1}"), + ) + + weight_parameterizations.original = nn.Parameter( + weight_parameterizations.original[:, M_ho] + ) + else: + next_layer_weight = getattr(lstm, f"weight_ih_l{i+1}") + setattr( + lstm, + f"weight_ih_l{i+1}", + nn.Parameter(next_layer_weight[:, M_ho]), + ) diff --git a/torchao/sparsity/prototype/pruner/saliency_pruner.py b/torchao/sparsity/prototype/pruner/saliency_pruner.py new file mode 100644 index 0000000000..f965fa647d --- /dev/null +++ b/torchao/sparsity/prototype/pruner/saliency_pruner.py @@ -0,0 +1,29 @@ +from .base_structured_sparsifier import BaseStructuredSparsifier + + +class SaliencyPruner(BaseStructuredSparsifier): + """ + Prune rows based on the saliency (L1 norm) of each row. + + This pruner works on N-Dimensional weight tensors. + For each row, we will calculate the saliency, whic is the sum the L1 norm of all weights in that row. + We expect that the resulting saliency vector has the same shape as our mask. + We then pick elements to remove until we reach the target sparsity_level. + """ + + def update_mask(self, module, tensor_name, **kwargs): + # tensor_name will give you the FQN, all other entries in sparse config is present in kwargs + weights = getattr(module, tensor_name) + mask = getattr(module.parametrizations, tensor_name)[0].mask + + # use negative weights so we can use topk (we prune out the smallest) + if weights.dim() <= 1: + raise Exception("Structured pruning can only be applied to a 2+dim weight tensor!") + saliency = -weights.norm(dim=tuple(range(1, weights.dim())), p=1) + assert saliency.shape == mask.shape + + num_to_pick = int(len(mask) * kwargs["sparsity_level"]) + prune = saliency.topk(num_to_pick).indices + + # Set the mask to be false for the rows we want to prune + mask.data[prune] = False diff --git a/torchao/sparsity/prototype/scheduler/__init__.py b/torchao/sparsity/prototype/scheduler/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/torchao/sparsity/prototype/scheduler/base_scheduler.py b/torchao/sparsity/prototype/scheduler/base_scheduler.py new file mode 100644 index 0000000000..f102f351ea --- /dev/null +++ b/torchao/sparsity/prototype/scheduler/base_scheduler.py @@ -0,0 +1,159 @@ + +from functools import wraps +import warnings +import weakref + +from torchao.sparsity.prototype.sparsifier.base_sparsifier import BaseSparsifier + +__all__ = ["BaseScheduler"] + +class BaseScheduler: + + def __init__(self, sparsifier, last_epoch=-1, verbose=False): + + # Attach sparsifier + if not isinstance(sparsifier, BaseSparsifier): + raise TypeError(f'{type(sparsifier).__name__} is not an instance of torch.ao.pruning.BaseSparsifier') + self.sparsifier = sparsifier + + # Initialize epoch and base sparsity levels + + self.base_sl = [group['sparsity_level'] for group in sparsifier.groups] + self.last_epoch = last_epoch + + # Following https://github.com/pytorch/pytorch/issues/20124 + # We would like to ensure that `scheduler.step()` is called after + # `sparsifier.step()` + def with_counter(method): + if getattr(method, '_with_counter', False): + # `sparsifier.step()` has already been replaced, return. + return method + + # Keep a weak reference to the sparsifier instance to prevent + # cyclic references. + instance_ref = weakref.ref(method.__self__) + # Get the unbound method for the same purpose. + func = method.__func__ + cls = instance_ref().__class__ + del method + + @wraps(func) + def wrapper(*args, **kwargs): + instance = instance_ref() + instance._step_count += 1 # type: ignore[union-attr] + wrapped = func.__get__(instance, cls) + return wrapped(*args, **kwargs) + + # Note that the returned function here is no longer a bound method, + # so attributes like `__func__` and `__self__` no longer exist. + wrapper._with_counter = True # type: ignore[attr-defined] + return wrapper + + self.sparsifier.step = with_counter(self.sparsifier.step) # type: ignore[assignment] + self.sparsifier._step_count = 0 # type: ignore[attr-defined] + self._step_count: int = 0 + self.verbose = verbose + + # Housekeeping + self._get_sl_called_within_step: bool = False + + self.step() + + def state_dict(self): + """Returns the state of the scheduler as a :class:`dict`. + + It contains an entry for every variable in self.__dict__ which + is not the sparsifier. + """ + return {key: value for key, value in self.__dict__.items() if key != 'sparsifier'} + + def load_state_dict(self, state_dict): + """Loads the schedulers state. + + Args: + state_dict (dict): scheduler state. Should be an object returned + from a call to :meth:`state_dict`. + """ + self.__dict__.update(state_dict) + + def get_last_sl(self): + """ Return last computed sparsity level by current scheduler. + """ + return self._last_sl + + def get_sl(self): + # Compute sparsity level using chainable form of the scheduler + # Note: This method is not intended to be called directly, and is only + # used by the ".step" method. Use .get_last_sl() instead. + if not self._get_sl_called_within_step: + warnings.warn( + "To get the last sparsity level computed by the scheduler, " + "please use `get_last_sl()`.") + raise NotImplementedError + + def print_sl(self, is_verbose, group, sl, epoch=None): + """Display the current sparsity level. + """ + if is_verbose: + if epoch is None: + print(f'Adjusting sparsity level of group {group} to {sl:.4e}.') + else: + print(f'Epoch {epoch:5d}: adjusting sparsity level of group {group} to {sl:.4e}.') + + def __repr__(self): + format_string = self.__class__.__name__ + ' (' + format_string += '\n' + format_string += f'Sparsifier {self.sparsifier}\n' + format_string += f' base_sl: {self.base_sl}\n' + format_string += ')' + return format_string + + def step(self, epoch=None): + # Raise warning if trying to call scheduler step before the sparsifier. + # https://github.com/pytorch/pytorch/issues/20124 + if self._step_count == 1: + if not hasattr(self.sparsifier.step, "_with_counter"): + warnings.warn("Seems like `sparsifier.step()` has been overridden after sparsity scheduler " + "initialization. Please, make sure to call `sparsifier.step()` before " + "`scheduler.step()`.", UserWarning) + + # Just check if there were two first scheduler.step() calls before sparsifier.step() + elif self.sparsifier._step_count < 1: # type: ignore[attr-defined] + warnings.warn("Detected call of `scheduler.step()` before `sparsifier.step()`. " + "You have to make sure you run the sparsifier.step() BEFORE any " + "calls to the scheduler.step().", UserWarning) + self._step_count += 1 + + class _enable_get_sl_call: + + def __init__(self, o): + self.o = o + + def __enter__(self): + self.o._get_sl_called_within_step = True + return self + + def __exit__(self, type, value, traceback): + self.o._get_sl_called_within_step = False + + with _enable_get_sl_call(self): + self.last_epoch += 1 + values = self.get_sl() + + for i, data in enumerate(zip(self.sparsifier.groups, values)): + param_group, sl = data + param_group['sparsity_level'] = sl + self.print_sl(self.verbose, i, sl, epoch) + + self._last_sl = [group['sparsity_level'] for group in self.sparsifier.groups] + self.sparsifier.enable_mask_update = True + + def _make_sure_a_list(self, var): + r"""Utility that extends it to the same length as the .groups, ensuring it is a list""" + n = len(self.sparsifier.groups) + if not isinstance(var, (list, tuple)): + return [var] * n + else: + if len(var) != n: + raise ValueError(f"Expected variable of length {n}, but got {len(var)}") + return list(var) # We want the result to be in a list, not tuple diff --git a/torchao/sparsity/prototype/scheduler/cubic_scheduler.py b/torchao/sparsity/prototype/scheduler/cubic_scheduler.py new file mode 100644 index 0000000000..76fc61daa2 --- /dev/null +++ b/torchao/sparsity/prototype/scheduler/cubic_scheduler.py @@ -0,0 +1,107 @@ +import warnings + +from .base_scheduler import BaseScheduler + +__all__ = ["CubicSL"] + +def _clamp(x, lo, hi): + return max(lo, min(hi, x)) + + +class CubicSL(BaseScheduler): + r"""Sets the sparsity level of each parameter group to the final sl + plus a given exponential function. + + .. math:: + + s_i = s_f + (s_0 - s_f) \cdot \left( 1 - \frac{t - t_0}{n\Delta t} \right)^3 + + where :math:`s_i` is the sparsity at epoch :math:`t`, :math;`s_f` is the final + sparsity level, :math:`f(i)` is the function to be applied to the current epoch + :math:`t`, initial epoch :math:`t_0`, and final epoch :math:`t_f`. + :math:`\Delta t` is used to control how often the update of the sparsity level + happens. By default, + + Args: + sparsifier (BaseSparsifier): Wrapped sparsifier. + init_sl (int, list): Initial level of sparsity + init_t (int, list): Initial step, when pruning starts + delta_t (int, list): Pruning frequency + total_t (int, list): Total number of pruning steps + initially_zero (bool, list): If True, sets the level of sparsity to 0 + before init_t (:math:`t_0`). Otherwise, the sparsity level before + init_t (:math:`t_0`) is set to init_sl(:math:`s_0`) + last_epoch (int): The index of last epoch. Default: -1. + verbose (bool): If ``True``, prints a message to stdout for + each update. Default: ``False``. + """ + def __init__(self, + sparsifier, + init_sl=0.0, + init_t=0, + delta_t=10, + total_t=100, + initially_zero=False, + last_epoch=-1, + verbose=False + ): + self.sparsifier = sparsifier + + self.init_sl = self._make_sure_a_list(init_sl) + self.init_t = self._make_sure_a_list(init_t) + self.delta_t = self._make_sure_a_list(delta_t) + self.total_t = self._make_sure_a_list(total_t) + + self.initially_zero = self._make_sure_a_list(initially_zero) + + super().__init__(sparsifier, last_epoch, verbose) + + @staticmethod + def sparsity_compute_fn(s_0, s_f, t, t_0, dt, n, initially_zero=False): + r""""Computes the current level of sparsity. + + Based on https://arxiv.org/pdf/1710.01878.pdf + + Args: + s_0: Initial level of sparsity, :math:`s_i` + s_f: Target level of sparsity, :math:`s_f` + t: Current step, :math:`t` + t_0: Initial step, :math:`t_0` + dt: Pruning frequency, :math:`\Delta T` + n: Pruning steps, :math:`n` + initially_zero: Sets the level of sparsity to 0 before t_0. + If False, sets to s_0 + + Returns: + The sparsity level :math:`s_t` at the current step :math:`t` + """ + if initially_zero and t < t_0: + return 0 + s_t = s_f + (s_0 - s_f) * (1.0 - (t - t_0) / (dt * n)) ** 3 + s_t = _clamp(s_t, s_0, s_f) + return s_t + + def get_sl(self): + if not self._get_sl_called_within_step: + warnings.warn( + "To get the last sparsity level computed by the scheduler, " + "please use `get_last_sl()`.") + return [ + self.sparsity_compute_fn( + s_0=initial_sparsity, + s_f=final_sparsity, + t=self.last_epoch, + t_0=initial_epoch, + dt=delta_epoch, + n=interval_epochs, + initially_zero=initially_zero + ) for initial_sparsity, final_sparsity, initial_epoch, delta_epoch, interval_epochs, initially_zero in + zip( + self.init_sl, + self.base_sl, + self.init_t, + self.delta_t, + self.total_t, + self.initially_zero + ) + ] diff --git a/torchao/sparsity/prototype/scheduler/lambda_scheduler.py b/torchao/sparsity/prototype/scheduler/lambda_scheduler.py new file mode 100644 index 0000000000..a88d99a1f8 --- /dev/null +++ b/torchao/sparsity/prototype/scheduler/lambda_scheduler.py @@ -0,0 +1,47 @@ +import warnings + +from .base_scheduler import BaseScheduler + +__all__ = ["LambdaSL"] + +class LambdaSL(BaseScheduler): + """Sets the sparsity level of each parameter group to the final sl + times a given function. When last_epoch=-1, sets initial sl as zero. + Args: + sparsifier (BaseSparsifier): Wrapped sparsifier. + sl_lambda (function or list): A function which computes a multiplicative + factor given an integer parameter epoch, or a list of such + functions, one for each group in sparsifier.param_groups. + last_epoch (int): The index of last epoch. Default: -1. + verbose (bool): If ``True``, prints a message to stdout for + each update. Default: ``False``. + Example: + >>> # Assuming sparsifier has two groups. + >>> lambda1 = lambda epoch: epoch // 30 + >>> lambda2 = lambda epoch: 0.95 ** epoch + >>> # xdoctest: +SKIP + >>> scheduler = LambdaSL(sparsifier, sl_lambda=[lambda1, lambda2]) + >>> for epoch in range(100): + >>> train(...) + >>> validate(...) + >>> scheduler.step() + """ + + def __init__(self, sparsifier, sl_lambda, last_epoch=-1, verbose=False): + self.sparsifier = sparsifier + + if not isinstance(sl_lambda, list) and not isinstance(sl_lambda, tuple): + self.sl_lambdas = [sl_lambda] * len(sparsifier.groups) + else: + if len(sl_lambda) != len(sparsifier.groups): + raise ValueError(f"Expected {len(sparsifier.groups)} lr_lambdas, but got {len(sl_lambda)}") + self.sl_lambdas = list(sl_lambda) + super().__init__(sparsifier, last_epoch, verbose) + + def get_sl(self): + if not self._get_sl_called_within_step: + warnings.warn( + "To get the last sparsity level computed by the scheduler, " + "please use `get_last_sl()`.") + return [base_sl * lmbda(self.last_epoch) + for lmbda, base_sl in zip(self.sl_lambdas, self.base_sl)] diff --git a/torchao/sparsity/prototype/sparsifier/__init__.py b/torchao/sparsity/prototype/sparsifier/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/torchao/sparsity/prototype/sparsifier/base_sparsifier.py b/torchao/sparsity/prototype/sparsifier/base_sparsifier.py new file mode 100644 index 0000000000..1c210ace34 --- /dev/null +++ b/torchao/sparsity/prototype/sparsifier/base_sparsifier.py @@ -0,0 +1,353 @@ +import abc +import copy +from collections import defaultdict +from typing import Any, Dict, Optional, Set, Tuple, List, Type + +import torch +from torch import nn +from torch.nn.utils import parametrize +from torch.nn.utils.parametrize import type_before_parametrizations + +from .utils import ( + module_contains_param, + swap_module, + FakeSparsity, + get_arg_info_from_tensor_fqn, + module_to_fqn, +) + +__all__ = ["BaseSparsifier"] + +SUPPORTED_MODULES = {nn.Linear} + +KEYS_NOT_IN_STATE_DICT = ["module", "module_fqn", "tensor_name"] + +__all__ = ["BaseSparsifier"] + + +# TODO update desc with new config args +class BaseSparsifier(abc.ABC): + r"""Base class for all sparsifiers. + + Abstract methods that need to be implemented: + + - update_mask: Function to compute a new mask for all keys in the + `groups`. + + Args: + - model [nn.Module]: model to configure. The model itself is not saved + but used for the state_dict saving / loading. + - config [list]: configuration elements should be a dict map that includes + `tensor_fqn` of tensors to sparsify + - defaults [dict]: default configurations will be attached to the + configuration. Only the keys that don't exist in the `config` will + be updated. + + Example:: + + >>> # xdoctest: +SKIP("Can't instantiate abstract class BaseSparsifier with abstract method update_mask") + >>> config = [{'tensor_fqn': 'layer1.weight', 'tensor_fqn': 'linear2.weight2', 'sparsity_level': 0.5}] + >>> defaults = {'sparsity_level': 0.7} + >>> # model.layer1.weight will have `sparsity_level` = 0.7 (getting default) + >>> sparsifier = BaseSparsifier(config, defaults) + """ + + def __init__(self, defaults: Optional[Dict[str, Any]] = None): + super().__init__() + self.defaults: Dict[str, Any] = defaults or {} + + self.state: Dict[str, Dict] = defaultdict(dict) + self.groups: List[Dict[str, Any]] = [] + self.enable_mask_update = True + + def __getstate__(self) -> Dict[str, Any]: + return { + "defaults": self.defaults, + "state": self.state, + "groups": self.groups, + } + + def __setstate__(self, state: Dict[str, Dict[str, Any]]) -> None: + self.__dict__.update(state) + + def __repr__(self): + format_string = self.__class__.__name__ + " (" + for i, sparse_args in enumerate(self.groups): + module = sparse_args["module"] + format_string += "\n" + format_string += f"\tGroup {i}\n" + format_string += f"\t module: {module}\n" + for key in sorted(sparse_args.keys()): + if key == "module": + continue + format_string += f"\t {key}: {sparse_args[key]}\n" + format_string += ")" + return format_string + + def state_dict(self) -> Dict[str, Any]: + r"""Returns the state of the optimizer as a :class:`dict`. + + It contains: + * state - current state of the sparsification. + * groups - a list containing all sparsity configuration groups + with the key 'tensor_fqn' specifying the path to the sparsified tensor within a model + + TODO: Need a clean way of loading the state of the "prepared" module + """ + + groups: List[Dict[str, Any]] = [ + dict( + filter( + lambda key_value: key_value[0] not in KEYS_NOT_IN_STATE_DICT, + mg.items(), + ) + ) + for mg in self.groups + ] + + return { + "state": self.state, + "groups": groups, + } + + def load_state_dict(self, state_dict: Dict[str, Any], strict: bool = True): + groups = copy.deepcopy(state_dict["groups"]) + states = state_dict["state"] + for tensor_fqn, s in states.items(): + arg_info = get_arg_info_from_tensor_fqn(self.model, tensor_fqn) + module = arg_info["module"] + tensor_name = arg_info["tensor_name"] + if strict and module is None: + raise RuntimeError(f"Error loading {tensor_fqn} into the model") + + found = False + for p in module.parametrizations[tensor_name]: + if isinstance(p, FakeSparsity): + found = True + break + if not found: + p = FakeSparsity(torch.ones(getattr(module, tensor_name).shape)) + parametrize.register_parametrization(module, tensor_name, p) + if s.get("mask", None) is not None: + mask = s.pop("mask") + p.mask = mask + + for mg in groups: + if mg["tensor_fqn"] == tensor_fqn: + mg.update(arg_info) + self.__setstate__({"state": states, "groups": groups}) + + def make_config_from_model( + self, + model: nn.Module, + SUPPORTED_MODULES: Set[Type] = SUPPORTED_MODULES, + ) -> None: + self.config = [] + stack = [model] + while stack: + module = stack.pop() + for name, child in module.named_children(): + if type(child) in SUPPORTED_MODULES: + module_fqn = module_to_fqn(model, child) + assert isinstance(module_fqn, str) # for mypy + self.config.append({"tensor_fqn": module_fqn + ".weight"}) + else: + stack.append(child) + + def prepare(self, model, config): + r"""Prepares a model, by adding the parametrizations. + + Note:: + + The model is modified inplace. If you need to preserve the original + model, use copy.deepcopy. + """ + self.model = model # TODO: Need to figure out how to load without this. + self.config = config + + # If no config -- try getting all the supported layers + if self.config is None: + self.make_config_from_model(model) + + # TODO: Remove the configuration by reference ('module') + for module_config in self.config: + assert isinstance(module_config, dict), ( + "config elements should be dicts not modules i.e.:" + "[{`tensor_fqn`: `foo.bar.weight`}, {`tensor_fqn`: ... }, ...]" + ) + + assert isinstance(self.defaults, Dict) # for mypy + local_args = copy.deepcopy(self.defaults) + local_args.update(module_config) + + tensor_fqn = local_args.get("tensor_fqn", None) + assert tensor_fqn is not None, ( + "tensor_fqn is a required argument in the sparsity config which" + "replaces previous `module` and [module]`fqn` arguments" + ) + + # populate all information from tensor_fqn + info_from_tensor_fqn = get_arg_info_from_tensor_fqn(model, tensor_fqn) + + # check that whatever was put into local_args agrees with what was obtained + # from tensor_fqn + for key in info_from_tensor_fqn.keys(): + if key in local_args: + assert ( + info_from_tensor_fqn[key] == local_args[key] + or ( + key == "tensor_fqn" + and "." + info_from_tensor_fqn[key] == local_args[key] + ) + # info_from_tensor_fqn will chop leading '.' from tensor_fqn so ignore that + ), ( + f"Given both `{key}` and `tensor_fqn` in the config, it is expected them to agree!" + ) + local_args.update(info_from_tensor_fqn) + self.groups.append(local_args) + self._prepare() + + def _prepare(self, *args, **kwargs): + r"""Adds mask parametrization to the layer weight""" + for config in self.groups: + module = config["module"] + tensor_name = config["tensor_name"] + parametrization = config.get("parametrization", FakeSparsity) + mask = config.get("mask", torch.ones_like(getattr(module, tensor_name))) + self.state[config["tensor_fqn"]]["mask"] = mask + parametrize.register_parametrization( + module, tensor_name, parametrization(mask) + ) + + def squash_mask( + self, + params_to_keep: Optional[Tuple[str, ...]] = None, + params_to_keep_per_layer: Optional[Dict[str, Tuple[str, ...]]] = None, + *args, + **kwargs, + ): + r"""Squashes the sparse masks into the appropriate tensors. + + If either the `params_to_keep` or `params_to_keep_per_layer` is set, + the module will have a `sparse_params` dict attached to it. + + Args: + params_to_keep: List of keys to save in the module or a dict + representing the modules and keys that will have + sparsity parameters saved + params_to_keep_per_layer: Dict to specify the params that should be + saved for specific layers. The keys in the dict + should be the module fqn, while the values should + be a list of strings with the names of the variables + to save in the `sparse_params` + + Examples: + >>> # xdoctest: +SKIP("locals are undefined") + >>> # Don't save any sparse params + >>> sparsifier.squash_mask() + >>> hasattr(model.submodule1, 'sparse_params') + False + + >>> # Keep sparse params per layer + >>> sparsifier.squash_mask( + ... params_to_keep_per_layer={ + ... 'submodule1.linear1': ('foo', 'bar'), + ... 'submodule2.linear42': ('baz',) + ... }) + >>> print(model.submodule1.linear1.sparse_params) + {'foo': 42, 'bar': 24} + >>> print(model.submodule2.linear42.sparse_params) + {'baz': 0.1} + + >>> # Keep sparse params for all layers + >>> sparsifier.squash_mask(params_to_keep=('foo', 'bar')) + >>> print(model.submodule1.linear1.sparse_params) + {'foo': 42, 'bar': 24} + >>> print(model.submodule2.linear42.sparse_params) + {'foo': 42, 'bar': 24} + + >>> # Keep some sparse params for all layers, and specific ones for + >>> # some other layers + >>> sparsifier.squash_mask( + ... params_to_keep=('foo', 'bar'), + ... params_to_keep_per_layer={ + ... 'submodule2.linear42': ('baz',) + ... }) + >>> print(model.submodule1.linear1.sparse_params) + {'foo': 42, 'bar': 24} + >>> print(model.submodule2.linear42.sparse_params) + {'foo': 42, 'bar': 24, 'baz': 0.1} + """ + for config in self.groups: + module = config["module"] + tensor_name = config["tensor_name"] + parametrize.remove_parametrizations( + module, tensor_name, leave_parametrized=True + ) + sparse_params = {} + if params_to_keep is not None: + global_params = {k: config[k] for k in params_to_keep} + sparse_params.update(global_params) + if params_to_keep_per_layer is not None: + params = params_to_keep_per_layer.get(config["module_fqn"], None) + if params is not None: + per_layer_params = {k: config[k] for k in params} + sparse_params.update(per_layer_params) + if sparse_params: + # TODO handle multiple tensor being quantized on a single module, where to store sparse_params? + module.sparse_params = sparse_params + + def convert( + self, + module: nn.Module, + mapping: Optional[Dict[Type[nn.Module], Type[nn.Module]]] = None, + inplace: bool = False, + parameterization: Type[nn.Module] = FakeSparsity, + ): + r"""Converts submodules in input module to a different module according to `mapping` + by calling `from_dense` method on the target module class + Args: + module: input module + mapping: a dictionary that maps from source module type to target + module type, can be overwritten to allow swapping user defined + Modules + inplace: carry out model transformations in-place, the original module + is mutated + """ + if mapping is None: + raise NotImplementedError("Need to auto generate mapping ") + if not inplace: + module = copy.deepcopy(module) + + reassign = {} + for name, mod in module.named_children(): + # leaf node + if ( + module_contains_param(mod, parameterization) + and type_before_parametrizations(mod) in mapping + ): + reassign[name] = swap_module(mod, mapping) + else: + # recurse + reassign[name] = self.convert( + mod, + mapping=mapping, + inplace=True, + parameterization=parameterization, + ) + + for key, value in reassign.items(): + module._modules[key] = value + + return module + + def step(self, use_path: bool = True) -> None: + if not self.enable_mask_update: + return + with torch.no_grad(): + for config in self.groups: + self.update_mask(**config) + + @abc.abstractmethod + def update_mask(self, module: nn.Module, tensor_name: str, **kwargs): + pass diff --git a/torchao/sparsity/prototype/sparsifier/nearly_diagonal_sparsifier.py b/torchao/sparsity/prototype/sparsifier/nearly_diagonal_sparsifier.py new file mode 100644 index 0000000000..4f44e81485 --- /dev/null +++ b/torchao/sparsity/prototype/sparsifier/nearly_diagonal_sparsifier.py @@ -0,0 +1,55 @@ +import torch + +from . import base_sparsifier + + +class NearlyDiagonalSparsifier(base_sparsifier.BaseSparsifier): + r"""Nearly Diagonal Sparsifier + + This sparsifier creates a nearly diagonal mask to be applied to the weight matrix. + Nearly Diagonal Matrix is a matrix that contains non-zero elements near the diagonal and the rest are zero. + An example of a nearly diagonal matrix with degree (or nearliness) 3 and 5 are follows respectively. + 1 1 0 0 1 1 1 0 + 1 1 1 0 1 1 1 1 + 0 1 1 1 1 1 1 1 + 0 0 1 1 0 1 1 1 + Note that a nearly diagonal matrix with degree 1 is just a matrix with main diagonal populated + + This sparsifier is controlled by one variable: + 1. `nearliness` defines the number of non-zero diagonal lines that are closest to the main diagonal. + Currently - supports only odd number + + Note: + This can be accelerated (vectorized) once the Spdiagonal feature (PR: #78439) is landed or the banded matrix + feature is landed: https://stackoverflow.com/questions/52463972/generating-banded-matrices-using-numpy + + Args: + nearliness: The degree of nearliness (default = 1) + + """ + def __init__(self, nearliness: int = 1): + defaults = {'nearliness': nearliness} + super().__init__(defaults=defaults) + + def update_mask(self, module, tensor_name, nearliness, + **kwargs): + mask = getattr(module.parametrizations, tensor_name)[0].mask + mask.data = torch.zeros_like(mask) + if nearliness <= 0: + return + + tensor = getattr(module, tensor_name) + height, width = tensor.shape + + if nearliness % 2 == 0: + raise ValueError("nearliness can only be an odd number") + dist_to_diagonal = nearliness // 2 + # check + if dist_to_diagonal >= min(height, width): + raise ValueError("nearliness cannot be larger than the dimensions of tensor.") + + for row in range(0, height): + # Bounds of entries that needs to be set to 1 + low = max(0, row - dist_to_diagonal) + high = min(width, row + dist_to_diagonal + 1) + mask[row, low:high].fill_(1) diff --git a/torchao/sparsity/prototype/sparsifier/utils.py b/torchao/sparsity/prototype/sparsifier/utils.py new file mode 100644 index 0000000000..98f489904c --- /dev/null +++ b/torchao/sparsity/prototype/sparsifier/utils.py @@ -0,0 +1,136 @@ +from typing import Any, Dict, Optional, Type +from torch.nn.utils.parametrize import type_before_parametrizations, is_parametrized +from itertools import chain + +from torch import nn + +__all__ = [ + "module_contains_param", + "swap_module", + "module_to_fqn", + "fqn_to_module", + "get_arg_info_from_tensor_fqn", + "FakeSparsity", +] + + +def module_contains_param(module: nn.Module, parametrization: Type[nn.Module]) -> bool: + if is_parametrized(module): + # see if any of the module tensors have a parametriztion attached that matches the one passed in + return any( + any(isinstance(param, parametrization) for param in param_list) + for key, param_list in module.parametrizations.items() # type: ignore[union-attr,operator] + ) + return False + + +def swap_module( + mod: nn.Module, mapping: Dict[Type[nn.Module], Type[nn.Module]] +) -> nn.Module: + r"""Swaps the module using from_dense according to the mapping passed in. + Args: + mod: input module + mapping: a dictionary that maps from nn module to sparse nn module + Return: + The corresponding sparse module of `mod` according to mapping, created using from_dense + """ + if type_before_parametrizations(mod) in mapping: + sparse_mod = mapping[type_before_parametrizations(mod)] + + # TODO Fix this typing, as Type[Module] has no attribute "from_dense" + new_mod = sparse_mod.from_dense(mod) # type: ignore[attr-defined] + + # Preserve module's pre forward hooks. They'll be called on quantized input + for pre_hook_fn in mod._forward_pre_hooks.values(): + new_mod.register_forward_pre_hook(pre_hook_fn) + # Preserve module's post forward hooks except _observer_forward_hook + # After convert they'll work with quantized output + for hook_fn in mod._forward_hooks.values(): + new_mod.register_forward_hook(hook_fn) + + # respect device affinity when swapping modules + devices = {p.device for p in chain(mod.parameters(), mod.buffers())} + assert len(devices) <= 1, ( + f"swap_module only works with cpu or single-device CUDA modules, but got devices {devices}" + ) + device = next(iter(devices)) if len(devices) > 0 else None + if device: + new_mod.to(device) + + return new_mod + + else: + return mod + + +def module_to_fqn( + model: nn.Module, module: nn.Module, prefix: str = "" +) -> Optional[str]: + """ + Returns the fqn for a module or None if module not a descendent of model. + """ + if module is model: + return "" + for name, child in model.named_children(): + fqn = module_to_fqn(child, module, ".") + if isinstance(fqn, str): + return prefix + name + fqn + return None + + +def fqn_to_module(model: Optional[nn.Module], path: str) -> Optional[nn.Module]: + """ + Given an fqn, returns the corresponding module or tensor or None if the fqn given by `path` + doesn't correspond to anything. Similar to model.get_submodule(path) but works for tensors. + """ + if path != "": + for name in path.split("."): + model = getattr(model, name, None) + return model + + +def get_arg_info_from_tensor_fqn(model: nn.Module, tensor_fqn: str) -> Dict[str, Any]: + """ + Uses tensor_fqn to obtain a dict containing module_fqn, module and tensor_name + """ + # string manip to split tensor_fqn into module_fqn and tensor_name + # if tensor_fqn is 'weight' then module_fqn and tensor_name are '' and 'weight' + # if tensor_fqn is 'linear.weight' then module_fqn and tensor_name are 'linear' and 'weight' + tensor_name = tensor_fqn.split(".")[-1] + module_fqn = tensor_fqn[: -len(tensor_name) - ("." in tensor_fqn)] + + module = fqn_to_module(model, module_fqn) + + return { + "module_fqn": module_fqn, + "module": module, + "tensor_name": tensor_name, + "tensor_fqn": tensor_fqn, + } + + +# Parametrizations +class FakeSparsity(nn.Module): + r"""Parametrization for the weights. Should be attached to the 'weight' or + any other parameter that requires a mask applied to it. + + Note:: + + Once the mask is passed, the variable should not change the id. The + contents of the mask can change, but the mask reference itself should + not. + """ + + def __init__(self, mask): + super().__init__() + self.register_buffer("mask", mask) + + def forward(self, x): + assert self.mask.shape == x.shape + return self.mask * x + + def state_dict(self, *args, **kwargs): + # We don't want to let the parametrizations to save the mask. + # That way we make sure that the linear module doesn't store the masks + # alongside their parametrizations. + return {} diff --git a/torchao/sparsity/prototype/sparsifier/weight_norm_sparsifier.py b/torchao/sparsity/prototype/sparsifier/weight_norm_sparsifier.py new file mode 100644 index 0000000000..2b24ca3d82 --- /dev/null +++ b/torchao/sparsity/prototype/sparsifier/weight_norm_sparsifier.py @@ -0,0 +1,200 @@ +from functools import reduce +from typing import Callable, Optional, Tuple, Union + +import torch +import torch.nn.functional as F + +from .base_sparsifier import BaseSparsifier +import operator + +__all__ = ["WeightNormSparsifier"] + +def _flat_idx_to_2d(idx, shape): + rows = idx // shape[1] + cols = idx % shape[1] + return rows, cols + +class WeightNormSparsifier(BaseSparsifier): + r"""Weight-Norm Sparsifier + + This sparsifier computes the norm of every sparse block and "zeroes-out" the + ones with the lowest norm. The level of sparsity defines how many of the + blocks is removed. + + This sparsifier is controlled by three variables: + 1. `sparsity_level` defines the number of *sparse blocks* that are zeroed-out + 2. `sparse_block_shape` defines the shape of the sparse blocks. Note that + the sparse blocks originate at the zero-index of the tensor. + 3. `zeros_per_block` is the number of zeros that we are expecting in each + sparse block. By default we assume that all elements within a block are + zeroed-out. However, setting this variable sets the target number of + zeros per block. The zeros within each block are chosen as the *smallest + absolute values*. + + Args: + + sparsity_level: The target level of sparsity + sparse_block_shape: The shape of a sparse block (see note below) + zeros_per_block: Number of zeros in a sparse block + norm: Norm to use. Could be either `int` or a callable. + If `int`, only L1 and L2 are implemented. + + Note:: + The `sparse_block_shape` is tuple representing (block_ROWS, block_COLS), + irrespective of what the rows / cols mean in the data tensor. That means, + if you were to sparsify a weight tensor in the nn.Linear, which has a + weight shape `(Cout, Cin)`, the `block_ROWS` would refer to the output + channels, while the `block_COLS` would refer to the input channels. + + Note:: + All arguments to the WeightNormSparsifier constructor are "default" + arguments and could be overriden by the configuration provided in the + `prepare` step. + """ + def __init__(self, + sparsity_level: float = 0.5, + sparse_block_shape: Tuple[int, int] = (1, 4), + zeros_per_block: Optional[int] = None, + norm: Optional[Union[Callable, int]] = None): + if zeros_per_block is None: + zeros_per_block = reduce(operator.mul, sparse_block_shape) + defaults = { + "sparsity_level": sparsity_level, + "sparse_block_shape": sparse_block_shape, + "zeros_per_block": zeros_per_block, + } + if norm is None: + norm = 2 + if callable(norm): + self.norm_fn = norm + elif norm == 1: + self.norm_fn = lambda T: T.abs() + elif norm == 2: + self.norm_fn = lambda T: T * T + else: + raise NotImplementedError(f"L-{norm} is not yet implemented.") + super().__init__(defaults=defaults) + + def _scatter_fold_block_mask(self, output_shape, dim, indices, block_shape, + mask=None, input_shape=None, device=None): + r"""Creates patches of size `block_shape` after scattering the indices.""" + if mask is None: + assert input_shape is not None + mask = torch.ones(input_shape, device=device) + mask.scatter_(dim=dim, index=indices, value=0) + mask.data = F.fold(mask, output_size=output_shape, kernel_size=block_shape, stride=block_shape) + return mask + + def _make_tensor_mask(self, data, input_shape, sparsity_level, sparse_block_shape, mask=None): + r"""Creates a tensor-level mask. + + Tensor-level mask is described as a mask, where the granularity of sparsification of the + smallest patch is the sparse_block_shape. That means, that for a given mask and a + sparse_block_shape, the smallest "patch" of zeros/ones could be the sparse_block_shape. + + In this context, `sparsity_level` describes the fraction of sparse patches. + """ + h, w = data.shape[-2:] + block_h, block_w = sparse_block_shape + dh = (block_h - h % block_h) % block_h + dw = (block_w - w % block_w) % block_w + + if mask is None: + mask = torch.ones(h + dh, w + dw, device=data.device) + + if sparsity_level >= 1.0: + mask.data = torch.zeros_like(mask) + return mask + elif sparsity_level <= 0.0: + mask.data = torch.ones_like(mask) + return mask + + values_per_block = reduce(operator.mul, sparse_block_shape) + if values_per_block > 1: + # Reduce the data + data = F.avg_pool2d( + data[None, None, :], kernel_size=sparse_block_shape, stride=sparse_block_shape, ceil_mode=True + ) + data = data.flatten() + num_blocks = len(data) + + data = data.repeat(1, values_per_block, 1) + + threshold_idx = int(round(sparsity_level * num_blocks)) + threshold_idx = max(0, min(num_blocks - 1, threshold_idx)) # Sanity check + _, sorted_idx = torch.topk(data, k=threshold_idx, dim=2, largest=False) + + # Temp reshape for mask + mask_reshape = mask.reshape(data.shape) # data might be reshaped + self._scatter_fold_block_mask( + dim=2, output_shape=(h + dh, w + dw), + indices=sorted_idx, block_shape=sparse_block_shape, mask=mask_reshape + ) + mask.data = mask_reshape.squeeze().reshape(mask.shape)[:h, :w].contiguous() + return mask + + def _make_block_mask(self, data, sparse_block_shape, zeros_per_block, mask=None): + r"""Creates a block-level mask. + + Block-level mask is described as a mask, where the granularity of sparsification of the + largest patch is the sparse_block_shape. That means that for a given mask and a + sparse_block_shape, the sparsity is computed only within a patch of a size sparse_block_shape. + + In this context the `zeros_per_block` describes the number of zeroed-out elements within a patch. + """ + h, w = data.shape[-2:] + block_h, block_w = sparse_block_shape + dh = (block_h - h % block_h) % block_h + dw = (block_w - w % block_w) % block_w + values_per_block = reduce(operator.mul, sparse_block_shape) + + if mask is None: + mask = torch.ones((h + dh, w + dw), device=data.device) + + if values_per_block == zeros_per_block: + # Everything should be sparsified + mask.data = torch.zeros_like(mask) + return mask + + # create a new padded tensor like data (to match the block_shape) + padded_data = torch.ones(h + dh, w + dw, dtype=data.dtype, device=data.device) + padded_data.fill_(torch.nan) + padded_data[:h, :w] = data + unfolded_data = F.unfold(padded_data[None, None, :], kernel_size=sparse_block_shape, stride=sparse_block_shape) + + # Temp reshape for mask + mask_reshape = mask.reshape(unfolded_data.shape) + _, sorted_idx = torch.topk(unfolded_data, k=zeros_per_block, dim=1, largest=False) + + self._scatter_fold_block_mask( + dim=1, indices=sorted_idx, output_shape=padded_data.shape, block_shape=sparse_block_shape, mask=mask_reshape + ) + + mask.data = mask_reshape.squeeze().reshape(mask.shape).contiguous() + return mask + + def update_mask(self, module, tensor_name, sparsity_level, sparse_block_shape, + zeros_per_block, **kwargs): + values_per_block = reduce(operator.mul, sparse_block_shape) + if zeros_per_block > values_per_block: + raise ValueError( + "Number of zeros per block cannot be more than the total number of elements in that block." + ) + if zeros_per_block < 0: + raise ValueError("Number of zeros per block should be positive.") + + mask = getattr(module.parametrizations, tensor_name)[0].mask + if sparsity_level <= 0 or zeros_per_block == 0: + mask.data = torch.ones_like(mask) + elif sparsity_level >= 1.0 and (zeros_per_block == values_per_block): + mask.data = torch.zeros_like(mask) + else: + ww = self.norm_fn(getattr(module, tensor_name)) + tensor_mask = self._make_tensor_mask( + data=ww, input_shape=ww.shape, sparsity_level=sparsity_level, sparse_block_shape=sparse_block_shape + ) + if values_per_block != zeros_per_block: + block_mask = self._make_block_mask(data=ww, sparse_block_shape=sparse_block_shape, + zeros_per_block=zeros_per_block) + tensor_mask = torch.logical_or(tensor_mask, block_mask) + mask.data = tensor_mask

  • ^hE(+gdGSds{#+UwU-#ds$rg1`A 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 literal 0 HcmV?d00001 diff --git a/torchao/sparsity/prototype/pruner/images/prune_2.png b/torchao/sparsity/prototype/pruner/images/prune_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5aad9d0451bac3f45eb16dcc8d85fed98eac867b GIT binary patch literal 100490 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