diff --git a/.github/workflows/python-linters.yml b/.github/workflows/python-linters.yml new file mode 100644 index 0000000..644d238 --- /dev/null +++ b/.github/workflows/python-linters.yml @@ -0,0 +1,28 @@ +name: lip-dp linters + +on: + push: + branches: + - main + - develop + pull_request: + branches: + - main + - develop + +jobs: + checks: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: 3.11 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install tox + - name: Check lint + run: tox -e py311-lint \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..d1dcb53 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,45 @@ +name: tests + +on: + push: + branches: ["main", "develop"] + pull_request: + branches: ["main", "develop"] + +jobs: + build-and-test: + name: "Python ${{ matrix.python-version }} on ${{ matrix.os }}" + runs-on: "${{ matrix.os }}" + + strategy: + matrix: + python-version: ["3.9", "3.10", "3.11"] + os: [ubuntu-latest] + + steps: + - uses: "actions/checkout@v3" + - uses: "actions/setup-python@v4" + with: + python-version: "${{ matrix.python-version }}" + cache: 'pip' + - name: Install dependencies + run: | + set -xe + pip install --upgrade pip setuptools wheel + pip install -r requirements.txt + pip install -r requirements_dev.txt + shell: bash + - name: Build + run: | + set -xe + python -VV + python -m pip install . + shell: bash + - name: Run tests + timeout-minutes: 60 + run: | + set -xe + python -VV + python -c "import tensorflow as tf; print('tf', tf.__version__)" + pytest tests + shell: bash diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b279b16..27251e3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -45,7 +45,7 @@ repos: rev: v3.0.0a5 hooks: - id: pylint - args: [--enable=unused-import --max-line-length=100, --disable=all] + args: [--disable=all] # - repo: https://github.com/commitizen-tools/commitizen diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 456c9d3..ebca628 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,14 +4,14 @@ Thanks for taking the time to contribute! From opening a bug report to creating a pull request: every contribution is appreciated and welcome. If you're planning to implement a new feature or change -the api please create an [issue first](https://https://github.com/deel-ai/dp-lipschitz/issues/new). This way we can ensure that your precious +the api please create an [issue first](https://github.com/Algue-Rythme/lip-dp/issues). This way we can ensure that your precious work is not in vain. ## Setup with make -- Clone the repo `git clone https://github.com/deel-ai/dp-lipschitz.git`. -- Go to your freshly downloaded repo `cd lipdp` +- Clone the repo `git clone git@github.com:Algue-Rythme/lip-dp.git`. +- Go to your freshly downloaded repo `cd lip-dp` - Create a virtual environment and install the necessary dependencies for development: `make prepare-dev && source lipdp_dev_env/bin/activate`. @@ -26,9 +26,8 @@ This command activate your virtual environment and launch the `tox` command. `tox` on the otherhand will do the following: -- run pytest on the tests folder with python 3.6, python 3.7 and python 3.8 -> Note: If you do not have those 3 interpreters the tests would be only performs with your current interpreter -- run pylint on the deel-datasets main files, also with python 3.6, python 3.7 and python 3.8 +- run pytest on the tests folder +- run pylint on the deel-datasets main files > Note: It is possible that pylint throw false-positive errors. If the linting test failed please check first pylint output to point out the reasons. Please, make sure you run all the tests at least once before opening a pull request. @@ -42,7 +41,7 @@ Basically, it will check that your code follow a certain number of convention. A After getting some feedback, push to your fork and submit a pull request. We may suggest some changes or improvements or alternatives, but for small changes -your pull request should be accepted quickly (see [Governance policy](https://github.com/deel-ai/lipdp/blob/master/GOVERNANCE.md)). +your pull request should be accepted quickly (see [Governance policy](https://github.com/Algue-Rythme/lip-dp/blob/release-no-advertising/GOVERNANCE.md)). Something that will increase the chance that your pull request is accepted: diff --git a/README.md b/README.md index 49148f1..6e16c54 100644 --- a/README.md +++ b/README.md @@ -1,86 +1,38 @@ -# Purpose of this library : +

+lipdp_logo

+ +
+ + + + + Tests + + + Linter + + + + +
+

-Conventionally, Differentially Private ML training relies on Gradient Clipping to guarantee verifiable privacy guarantees. -By using 1-Lipschitz networks developped by the deel-lip project. We can propose a new alternative to gradient clipping based -DP ML. Indeed, by theoretically bounding the value of the sensitivity of our 1-Lipschitz layers, we can directly calibrate a -batchwise noising of the gradients to guarantee (epsilon,delta)-DP. + +

+ LipDP is a Python toolkit dedicated to robust and certifiable learning under privacy guarantees. +

-Therefore, the computation time is heavily reduced and the results on the MNIST and CIFAR10 datasets are the following : +This package is the code for the paper "*DP-SGD Without Clipping: The Lipschitz Neural Network Way*" by Louis Béthune, Thomas Massena, Thibaut Boissin, Aurélien Bellet, Franck Mamalet, Yannick Prudent, Corentin Friedrich, Mathieu Serrurier, David Vigouroux, published at the **International Conference on Learning Representations (ICLR 2024)**. The paper is available on [arxiv](https://arxiv.org/abs/2305.16202). -# Status of the repository : -- ci tests to develop. -- sensitivity.py to debug. -- requirements.txt tested on my machine, still to check by someone else. +State-of-the-art approaches for training Differentially Private (DP) Deep Neural Networks (DNN) face difficulties to estimate tight bounds on the sensitivity of the network's layers, and instead rely on a process of per-sample gradient clipping. This clipping process not only biases the direction of gradients but also proves costly both in memory consumption and in computation. To provide sensitivity bounds and bypass the drawbacks of the clipping process, we propose to rely on Lipschitz constrained networks. Our theoretical analysis reveals an unexplored link between the Lipschitz constant with respect to their input and the one with respect to their parameters. By bounding the Lipschitz constant of each layer with respect to its parameters, we prove that we can train these networks with privacy guarantees. Our analysis not only allows the computation of the aforementioned sensitivities at scale, but also provides guidance on how to maximize the gradient-to-noise ratio for fixed privacy guarantees. To facilitate the application of Lipschitz networks and foster robust and certifiable learning under privacy guarantees, we provide this Python package that implements building blocks allowing the construction and private training of such networks. -# Deel library repository template +![backpropforbounds](./docs/assets/backprop_v2.png) -Ce dépôt git sert de template pour les librairies DEEL ayant vocation à être rendues publiques sur github. -Il donne la structure des répertoires d'un projet telle que celle adoptée par les librairies DEEL déjà publiques. - -A la racine du projet on trouve: - -- deel : répertoire destiné à recevoir le code de la librairie. C'est le premier mot de l'espaces de nommage de - la librairie. Ce n'est pas un module python, il ne contient donc pas de fichier __init__.py. - Il contient le module principal de la librairie du nom de cette librairie. - - Example: - - librairie **deel-lip**: - deel/deel-lip - -- docs: répertoire destiné à la documentation de la librairie - -- tests: répertoire des tests unitaires - -- .pre-commit-config.yaml : configuration de outil de contrôle avant commit (pre-commit) - -- LICENCE/headers/MIT-Clause.txt : entête licence MIT injectée dans les fichiers du projet - -- CONTRIBUTING.md: description de la procédure pour apporter une contribution à la librairie. - -- GOUVERNANCE.md: description de la manière dont la librairie est gérée. - -- LICENCE : texte de la licence sous laquelle est publiée la librairie (MIT). - -- README.md - - -# pre-commit : Conventional Commits 1.0.0 - -The commit message should be structured as follows: - -``` -[optional scope]: - -[optional body] - -[optional footer(s)] - -``` - -The commit contains the following structural elements, to communicate intent to the consumers of your library: - -- fix: a commit of the type fix patches a bug in your codebase (this correlates with PATCH in Semantic Versioning). - -- feat: a commit of the type feat introduces a new feature to the codebase (this correlates with MINOR in Semantic Versioning). - -- BREAKING CHANGE: a commit that has a footer BREAKING CHANGE:, or appends a ! after the type/scope, introduces a breaking API change (correlating with MAJOR in Semantic Versioning). A BREAKING CHANGE can be part of commits of any type. - -- types other than fix: and feat: are allowed, for example @commitlint/config-conventional (based on the the Angular convention) recommends *build:, chore:, ci:, docs:, style:, refactor:, perf:, test:*, and [others](https://delicious-insights.com/fr/articles/git-hooks-et-commitlint/). - -- footers other than BREAKING CHANGE: may be provided and follow a convention similar to git trailer format. - -- Additional types are not mandated by the Conventional Commits specification, and have no implicit effect in Semantic Versioning (unless they include a BREAKING CHANGE). A scope may be provided to a commit’s type, to provide additional contextual information and is contained within parenthesis, e.g., feat(parser): add ability to parse arrays. - -# README sections - -Conventionally, Differentially Private ML training relies on Gradient Clipping to guarantee verifiable privacy guarantees. -By using 1-Lipschitz networks developped by the deel-lip project. We can propose a new alternative to gradient clipping based -DP ML. Indeed, by theoretically bounding the value of the sensitivity of our 1-Lipschitz layers, we can directly calibrate a -batchwise noising of the gradients to guarantee (epsilon,delta)-DP. +The sensitivity is computed automatically by the package, and no element-wise clipping is required. This is translated into a new DP-SGD algorithm, called Clipless DP-SGD, that is faster and more memory efficient than DP-SGD with clipping. +![speed](./docs/assets/all_speed_curves.png) ## 📚 Table of contents @@ -88,7 +40,6 @@ batchwise noising of the gradients to guarantee (epsilon,delta)-DP. - [🔥 Tutorials](#-tutorials) - [🚀 Quick Start](#-quick-start) - [📦 What's Included](#-whats-included) -- [👍 Contributing](#-contributing) - [👀 See Also](#-see-also) - [🙏 Acknowledgments](#-acknowledgments) - [👨‍🎓 Creator](#-creator) @@ -97,68 +48,135 @@ batchwise noising of the gradients to guarantee (epsilon,delta)-DP. ## 🔥 Tutorials +We propose some tutorials to get familiar with the library and its API: +- **Demo on MNIST** [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1s3LBIxf0x1sOMQUw6BHpxbeUzmwtaP0d) +- **Demo on CIFAR10** [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1RbALHN-Eib6CCUznLrbiETX7JJrFaUB0) ## 🚀 Quick Start -Libname requires some stuff and several libraries including Numpy. Installation can be done using Pypi: - +lipDP requires some stuff and several libraries including Numpy. Installation can be done locally by cloning the repository and running: ```python -pip install dist/lipdp-0.0.1a0-py2.py3-none-any.whl[dev] +pip install -e .[dev] ``` -Now that lipdp is installed, here are some basic examples of what you can do with the - available modules. +### Setup privacy parameters -## 📦 What's Included +Parameters are stored in a dataclass: -Code can be found in the `lipdp` folder, the documentation ca be found by running - `mkdocs build` and `mkdocs serve` (or loading `site/index.html`). Experiments were - done using the code in the `experiments` folder. - -## 👍 Contributing - -Feel free to propose your ideas or come and contribute with us on the Libname toolbox! We have a specific document where we describe in a simple way how to make your first pull request: [just here](CONTRIBUTING.md). - -### pre-commit : Conventional Commits 1.0.0 +```python +from deel.lipdp.model import DPParameters +dp_parameters = DPParameters( + noisify_strategy="local", + noise_multiplier=4.0, + delta=1e-5, +) + +epsilon_max = 10.0 +``` -The commit message should be structured as follows: +### Setup DP model +```python +# construct DP_Sequential +model = DP_Sequential( + # works like usual sequential but requires DP layers + layers=[ + # BoundedInput works like Input, but performs input clipping to guarantee input bound + layers.DP_BoundedInput( + input_shape=dataset_metadata.input_shape, upper_bound=input_upper_bound + ), + layers.DP_QuickSpectralConv2D( # Reshaped Kernel Orthogonalization (RKO) convolution. + filters=32, + kernel_size=3, + kernel_initializer="orthogonal", + strides=1, + use_bias=False, # No biases since the framework handles a single tf.Variable per layer. + ), + layers.DP_GroupSort(2), # GNP activation function. + layers.DP_ScaledL2NormPooling2D(pool_size=2, strides=2), # GNP pooling. + layers.DP_QuickSpectralConv2D( # Reshaped Kernel Orthogonalization (RKO) convolution. + filters=64, + kernel_size=3, + kernel_initializer="orthogonal", + strides=1, + use_bias=False, # No biases since the framework handles a single tf.Variable per layer. + ), + layers.DP_GroupSort(2), # GNP activation function. + layers.DP_ScaledL2NormPooling2D(pool_size=2, strides=2), # GNP pooling. + + layers.DP_Flatten(), # Convert features maps to flat vector. + + layers.DP_QuickSpectralDense(512), # GNP layer with orthogonal weight matrix. + layers.DP_GroupSort(2), + layers.DP_QuickSpectralDense(dataset_metadata.nb_classes), + ], + dp_parameters=dp_parameters, + dataset_metadata=dataset_metadata, +) ``` -[optional scope]: -[optional body] +### Setup accountant -[optional footer(s)] +The privacy accountant is composed of different mechanisms from `autodp` package that are combined to provide a privacy accountant for Clipless DP-SGD algorithm: -``` +![rdpaccountant](./docs/assets/fig_accountant.png) -The commit contains the following structural elements, to communicate intent to the consumers of your library: -- fix: a commit of the type fix patches a bug in your codebase (this correlates with PATCH in Semantic Versioning). +Adding a privacy accountant to your model is straighforward: -- feat: a commit of the type feat introduces a new feature to the codebase (this correlates with MINOR in Semantic Versioning). +```python +from deel.lipdp.model import DP_Accountant + +callbacks = [ + DP_Accountant() +] + +model.fit( + ds_train, + epochs=num_epochs, + validation_data=ds_test, + callbacks=[ + # accounting is done thanks to a callback + DP_Accountant(log_fn="logging"), # wandb.log also available. + ], +) +``` -- BREAKING CHANGE: a commit that has a footer BREAKING CHANGE:, or appends a ! after the type/scope, introduces a breaking API change (correlating with MAJOR in Semantic Versioning). A BREAKING CHANGE can be part of commits of any type. +## 📦 What's Included -- types other than fix: and feat: are allowed, for example @commitlint/config-conventional (based on the the Angular convention) recommends *build:, chore:, ci:, docs:, style:, refactor:, perf:, test:*, and [others](https://delicious-insights.com/fr/articles/git-hooks-et-commitlint/). - -- footers other than BREAKING CHANGE: may be provided and follow a convention similar to git trailer format. +Code can be found in the `deel/lipdp` folder, the documentation ca be found by running + `mkdocs build` and `mkdocs serve` (or loading `site/index.html`). Experiments were + done using the code in the `experiments` folder. -- Additional types are not mandated by the Conventional Commits specification, and have no implicit effect in Semantic Versioning (unless they include a BREAKING CHANGE). A scope may be provided to a commit’s type, to provide additional contextual information and is contained within parenthesis, e.g., feat(parser): add ability to parse arrays. +Other tools to perform DP-training include: +- [tensorflow-privacy](https://github.com/tensorflow/privacy) in Tensorflow +- [Opacus](https://opacus.ai/) in Pytorch +- [jax-privacy](https://github.com/google-deepmind/jax_privacy) in Jax ## 🙏 Acknowledgments +The creators thank the whole [DEEL](https://deel-ai.com/) team for its support, and [Aurélien Bellet](http://researchers.lille.inria.fr/abellet/) for his guidance. ## 👨‍🎓 Creators -If you want to highlights the main contributors - +The library has been created by [Louis Béthune](https://github.com/Algue-Rythme), [Thomas Masséna](https://github.com/massena-t) during an internsip at [DEEL](https://deel-ai.com/), and [Thibaut Boissin](https://github.com/thib-s). ## 🗞️ Citation +If you find this work useful for your research, please consider citing it: +``` +@inproceedings{ +bethune2024dpsgd, +title={{DP}-{SGD} Without Clipping: The Lipschitz Neural Network Way}, +author={Louis B{\'e}thune and Thomas Massena and Thibaut Boissin and Aur{\'e}lien Bellet and Franck Mamalet and Yannick Prudent and Corentin Friedrich and Mathieu Serrurier and David Vigouroux}, +booktitle={The Twelfth International Conference on Learning Representations}, +year={2024}, +url={https://openreview.net/forum?id=BEyEziZ4R6} +} +``` ## 📝 License diff --git a/deel/lipdp/__init__.py b/deel/lipdp/__init__.py index 0fabed3..294b319 100644 --- a/deel/lipdp/__init__.py +++ b/deel/lipdp/__init__.py @@ -30,6 +30,7 @@ DP_Flatten, DP_SpectralConv2D, DP_SpectralDense, + DP_QuickFrobeniusDense, DP_Reshape, DP_Lambda, DP_Permute, @@ -52,15 +53,27 @@ DP_MulticlassKR, DP_TauCategoricalCrossentropy, ) +from deel.lipdp.accounting import DPGD_Mechanism +from deel.lipdp.dynamic import LaplaceAdaptiveLossGradientClipping from deel.lipdp.model import ( DP_Model, DP_Sequential, DP_Accountant, - AdaptiveLossGradientClipping, ) -from deel.lipdp.pipeline import load_and_prepare_data, bound_clip_value, bound_normalize +from deel.lipdp.pipeline import ( + load_adbench_data, + prepare_tabular_data, + load_and_prepare_images_data, + bound_clip_value, + bound_normalize, +) from deel.lipdp.sensitivity import ( get_max_epochs, - gradient_norm_check, - check_layer_gradient_norm, +) +from deel.lipdp.utils import ( + CertifiableAUROC, + PrivacyMetrics, + ScaledAUC, + SignaltoNoiseAverage, + SignaltoNoiseHistogram, ) diff --git a/deel/lipdp/accounting.py b/deel/lipdp/accounting.py new file mode 100644 index 0000000..bebace4 --- /dev/null +++ b/deel/lipdp/accounting.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- +# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All +# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, +# CRIAQ and ANITI - https://www.deel.ai/ +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +from autodp import mechanism_zoo +from autodp import transformer_zoo +from autodp.autodp_core import Mechanism + + +class DPGD_Mechanism(Mechanism): + """DPGD Mechanism. + + Args: + mode (str): kind of mechanism to use. Either 'global' or "per-layer". + prob (float): probability of subsampling, equal to batch_size / dataset_size. + noise_multipliers (float, or list of floats): single scalar when mode == 'global', list of scalars when mode == "per-layer". + num_grad_steps (int): number of gradient steps. + delta (float): delta parameter for DP. + dynamic_clipping (optional, dict): dictionary of parameters for dynamic clipping. + Keys depend on the mode of dynamic clipping, but it always contains a "mode" key. + """ + + def __init__( + self, + mode, + prob, + noise_multipliers, + num_grad_steps, + delta, + dynamic_clipping=None, + name="DPGD_Mechanism", + ): + # Init + Mechanism.__init__(self) + self.name = name + self.params = { + "prob": prob, + "noise_multipliers": noise_multipliers, + "num_grad_steps": num_grad_steps, + "delta": delta, + "dynamic_clipping": dynamic_clipping, + } + + assert mode in ["global", "per-layer"], "Unknown mode for DPGD_Mechanism." + + if mode == "global": + model_mech = mechanism_zoo.GaussianMechanism(sigma=noise_multipliers) + # assert model_mech.neighboring == "add_remove" + elif mode == "per-layer": + layer_mechanisms = [] + + for sigma in noise_multipliers: + mech = mechanism_zoo.GaussianMechanism(sigma=sigma) + # assert mech.neighboring == "add_remove" + layer_mechanisms.append(mech) + + # Accountant composition on layers + compose_gaussians = transformer_zoo.ComposeGaussian() + model_mech = compose_gaussians( + layer_mechanisms, [1] * len(noise_multipliers) + ) + + subsample_grad_computation = transformer_zoo.AmplificationBySampling() + sub_sampled_model_gaussian_mech = subsample_grad_computation( + # improved_bound_flag can be set to True for Gaussian mechanisms (see autodp documentation). + model_mech, + prob, + improved_bound_flag=True, + ) + + compose = transformer_zoo.Composition() + mechs_to_compose = [sub_sampled_model_gaussian_mech] + niter_to_compose = [num_grad_steps] + + if dynamic_clipping["mode"] == "laplace": + # TODO: the pure DP mechanism should be sub-sampled to improve the bound. + dynamic_clipping_mech = mechanism_zoo.PureDP_Mechanism( + eps=dynamic_clipping["epsilon"], name="SVT" + ) + mechs_to_compose.append(dynamic_clipping_mech) + niter_to_compose.append(dynamic_clipping["num_updates"]) + elif dynamic_clipping["mode"] == "quantiles": + private_quantiles_mech = mechanism_zoo.GaussianMechanism( + sigma=dynamic_clipping["noise_multiplier"] + ) + subsample_quantiles = transformer_zoo.AmplificationBySampling() + subsampled_private_quantiles_mech = subsample_quantiles( + private_quantiles_mech, prob, improved_bound_flag=True + ) + mechs_to_compose.append(subsampled_private_quantiles_mech) + niter_to_compose.append(dynamic_clipping["num_updates"]) + + global_mech = compose(mechs_to_compose, niter_to_compose) + + # assert global_mech.neighboring in ["add_remove", "add_only", "remove_only"] + + # Get relevant information + self.epsilon = global_mech.get_approxDP(delta=delta) + self.delta = delta + + # Propagate updates + rdp_global = global_mech.RenyiDP + self.propagate_updates(rdp_global, type_of_update="RDP") diff --git a/deel/lipdp/dynamic.py b/deel/lipdp/dynamic.py new file mode 100644 index 0000000..8091b09 --- /dev/null +++ b/deel/lipdp/dynamic.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All +# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, +# CRIAQ and ANITI - https://www.deel.ai/ +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +"""Dynamic gradient clipping for differential privacy.""" +import random +from abc import abstractmethod + +import numpy as np +import tensorflow as tf +from tensorflow import keras + +from deel.lipdp.layers import DP_ClipGradient + + +class LossGradientClipping(keras.callbacks.Callback): + """Updates the clipping value of the last layer of the model.""" + + def __init__(self, ds_train, patience, mode, verbose=False): + super().__init__() + self.ds_train = ds_train + self.patience = patience + self.mode = mode + self.verbose = verbose + + @abstractmethod + def _assign_dp_dict(self, last_layer): + last_layer._dynamic_dp_dict["patience"] = self.patience + last_layer._dynamic_dp_dict["mode"] = self.mode + + def on_train_begin(self, logs=None): + last_layer = self.model.layers_backward_order()[0] + assert isinstance( + last_layer, DP_ClipGradient + ), "The last layer of the model must be a DP_ClipGradient layer." + + assert ( + last_layer.mode == "dynamic" + ), "The mode of the last layer must be dynamic." + + print("On train begin : ") + initial_value = tf.convert_to_tensor(self.model.loss.get_L(), dtype=tf.float32) + print( + "Initial value is now equal to lipschitz constant of loss: ", + float(initial_value.numpy()), + ) + last_layer.clip_value.assign(initial_value) + self._assign_dp_dict(last_layer) + + def get_gradloss(self): + """Computes the norm of gradient of the loss with respect to the model's output. + + Warning: this method is unsafe from a privacy perspective, + as the true gradient bound is computed. + It is meant to be used with privacy-preserving methods only, + such as the ones implemented in this module. + """ + batch = next(iter(self.ds_train.take(1))) + imgs, labels = batch + self.model.loss.reduction = tf.keras.losses.Reduction.NONE + predictions = self.model(imgs) + with tf.GradientTape() as tape: + tape.watch(predictions) + loss_value = self.model.compiled_loss(labels, predictions) + self.model.loss.reduction = tf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE + grad_loss = tape.gradient(loss_value, predictions) + norms = tf.norm(grad_loss, axis=-1) + norms = norms.numpy() + if self.verbose: + print("Norms : ", norms) + print("Max norm: ", np.max(norms)) + print("Quantiles : ", np.quantile(norms, [0.1 * i for i in range(1, 10)])) + return norms + + +def clipsum(norms, C): + """ + Computes the sum of individually clipped elements from the given list or tensor. + + Args: + norms (list or tensor): A list or tensor containing the elements to be clipped and summed. + C (float): A clipping constant used to clip the elements. + + Returns: + float: The sum of the clipped elements. + + Example: + >>> norms = [1.3, 2.7, 7.5] + >>> C = 3.0 + >>> clipsum(norms, C) + 7.0 + """ + norms = tf.cast(norms, dtype=tf.float32) + C = tf.constant([C], dtype=tf.float32) + return tf.math.reduce_sum(tf.math.minimum(norms, C)) + + +def diff_query(norms, lower, upper, n_points=1000): + """ + Computes the difference between two sums of clipped elements with two different clipping constants + on a range of n_points between the lower and upper values. + + Args: + norms (list or tensor): A list or tensor of values to be clipped and summed. + lower (float or int): The lower bound of the search range. + upper (float or int): The upper bound of the search range. + n_points (int): The number of points between the lower and upper bound. + + Returns: + alpha (float): The sensitivity of the differentiation query, calculated as (upper - lower) / (n_points - 1). + points (list): The list of points iterated on between the lower and upper bound. + queries (float): The values of the difference query over the points range. + + """ + points = np.linspace(lower, upper, num=n_points) + alpha = (upper - lower) / (n_points - 1) + queries = [] + for p in points: + query = clipsum(norms, p) - clipsum(norms, p + alpha) + queries.append(query) + return alpha, points, queries + + +def laplace_above_treshold(queries, sensitivity, T, epsilon): + """ + SVT inspired algorithm inspired from https://programming-dp.com/ch10.html. Computes + the index for which the differentiation query of the queries list converges above a + treshold T. This computation is epsilon-DP. + + Args : + queries (list or tensor) : list of the values of the difference query. + sensitivity (float) : sensitivity of the difference computation query. + T (float) : value of the treshold. + epsilon (float) : chosen epsilon guarantee on the query. + + Returns : + ids (int) : the index corresponding the epsilon-DP estimated optimal clipping constant. + + """ + T_hat = T + np.random.laplace(loc=0, scale=2 * sensitivity / epsilon) + for idx, q in enumerate(queries): + nu_i = np.random.laplace(loc=0, scale=4 * sensitivity / epsilon) + if q + nu_i >= T_hat: + return idx + return random.randint(0, len(queries) - 1) + + +class LaplaceAdaptiveLossGradientClipping(LossGradientClipping): + """Updates the clipping value of the last layer of the model. + + This callback privately updates the clipping value if the last layer + of the model is a DP_ClipGradient layer with mode = "dynamic". + + Attributes : + ds_train : a tensorflow dataset object. + """ + + def __init__(self, ds_train, *, patience, epsilon): + super().__init__(ds_train, patience, "laplace") + self.epsilon = epsilon + + assert ( + epsilon is not None + ), "epsilon has to be in constructor for dynamic gradient clipping." + assert epsilon > 0, "epsilon <= 0 impossible." + + def _assign_dp_dict(self, last_layer): + super()._assign_dp_dict(last_layer) + last_layer._dynamic_dp_dict["epsilon"] = self.epsilon + + def on_epoch_end(self, epoch, logs={}): + # print("Patience : ", epoch % last_layer.patience) + if epoch % self.patience != 0: + return + last_layer = self.model.layers_backward_order()[0] + norms = self.get_gradloss() + alpha, points, queries = diff_query( + norms, lower=0, upper=self.model.loss.get_L() + ) + T = 0.0 # queries[0] * 0.1 (why?) + updated_clip_value = points[ + laplace_above_treshold( + queries, sensitivity=alpha, T=T, epsilon=self.epsilon + ) + ] + last_layer.update_clipping_value(updated_clip_value) + + +class AdaptiveQuantileClipping(LossGradientClipping): + """Updates the clipping value of the last layer of the model. + + This callback privately updates the clipping value if the last layer + of the model is a DP_ClipGradient layer with mode = "dynamic". + + This is the canonical implementation proposed in: + + Andrew, G., Thakkar, O., McMahan, B. and Ramaswamy, S., 2021. + Differentially private learning with adaptive clipping. + Advances in Neural Information Processing Systems, 34, pp.17455-17466. + + Attributes : + ds_train : a tensorflow dataset object. + noise_multiplier : the noise multiplier of private quantile estimation (float). + quantile : the quantile to estimate (float). + learning_rate : the learning rate of the exponential gradient step (float). + """ + + def __init__( + self, ds_train, *, patience, noise_multiplier, quantile, learning_rate + ): + super().__init__(ds_train, patience, "quantiles") + self.noise_multiplier = noise_multiplier + self.quantile = quantile + self.learning_rate = learning_rate + + def _assign_dp_dict(self, last_layer): + super()._assign_dp_dict(last_layer) + last_layer._dynamic_dp_dict["noise_multiplier"] = self.noise_multiplier + + def on_epoch_end(self, epoch, logs={}): + # print("Patience : ", epoch % last_layer.patience) + if epoch % self.patience != 0: + return + last_layer = self.model.layers_backward_order()[0] + norms = self.get_gradloss() + clip_value = last_layer.clip_value.value() + + # Gaussian mechanism + avg_above_c_insecure = (norms <= clip_value.numpy()).astype(float) + sensitivity = 1.0 / len(norms) + scale_noise = self.noise_multiplier * sensitivity + noise = np.random.normal(loc=0, scale=scale_noise) + avg_above_c_private = avg_above_c_insecure.mean() + noise + + # Exponential gradient step + step = avg_above_c_private - self.quantile + updated_clip_value = clip_value * np.exp(-self.learning_rate * step) + last_layer.update_clipping_value(updated_clip_value) diff --git a/deel/lipdp/layers.py b/deel/lipdp/layers.py index b757fb8..00f6b49 100644 --- a/deel/lipdp/layers.py +++ b/deel/lipdp/layers.py @@ -26,6 +26,8 @@ import tensorflow as tf import deel.lip +from deel.lip.constraints import SpectralConstraint +from deel.lip.normalizers import DEFAULT_EPS_BJORCK class DPLayer: @@ -344,6 +346,114 @@ def has_parameters(self): return True +class DP_QuickFrobeniusDense(tf.keras.layers.Dense, DPLayer): + def __init__(self, *args, nm_coef=1, **kwargs): + if "use_bias" in kwargs and kwargs["use_bias"]: + raise ValueError("No bias allowed.") + kwargs["use_bias"] = False + kwargs.update( + dict( + kernel_initializer="orthogonal", + kernel_constraint="deel-lip>FrobeniusConstraint", + ) + ) + # Remark: the Frobenius constraint is applied on the whole matrix, + # not on each row. Therefore the Lipschitz constant is 1 since: + # ||A||_2 <= ||A||_F = 1 + super().__init__(*args, **kwargs) + self.nm_coef = nm_coef + + def backpropagate_params(self, input_bound, gradient_bound): + return input_bound * gradient_bound + + def backpropagate_inputs(self, input_bound, gradient_bound): + return 1 * gradient_bound + + def propagate_inputs(self, input_bound): + return input_bound + + def has_parameters(self): + return True + + +def _compute_conv_lip_factor(kernel_size, strides, input_shape, data_format): + """Compute the Lipschitz factor to apply on estimated Lipschitz constant in + convolutional layer. This factor depends on the kernel size, the strides and the + input shape. + + Copied from deel-lip. + """ + stride = np.prod(strides) + kh, kw = kernel_size[0], kernel_size[1] + kh_div2 = (kh - 1) / 2 + kw_div2 = (kw - 1) / 2 + + if data_format == "channels_last": + h, w = input_shape[-3], input_shape[-2] + elif data_format == "channels_first": + h, w = input_shape[-2], input_shape[-1] + else: + raise RuntimeError("data_format not understood: " % data_format) + + if stride == 1: + return np.sqrt( + (w * h) + / ((kh * h - kh_div2 * (kh_div2 + 1)) * (kw * w - kw_div2 * (kw_div2 + 1))) + ) + else: + return np.sqrt(1.0 / (np.ceil(kh / strides[0]) * np.ceil(kw / strides[1]))) + + +class DP_QuickSpectralConv2D(tf.keras.layers.Conv2D, DPLayer): + def __init__(self, *args, nm_coef=1, orthogonal=True, **kwargs): + if "use_bias" in kwargs and kwargs["use_bias"]: + raise ValueError("No bias allowed.") + kwargs["use_bias"] = False + eps_bjorck = DEFAULT_EPS_BJORCK if orthogonal else None + constraint = SpectralConstraint(eps_bjorck=eps_bjorck) + kwargs.update( + dict( + kernel_initializer="orthogonal", + kernel_constraint=constraint, + ) + ) + super().__init__(*args, **kwargs) + self.nm_coef = nm_coef + + def _get_coef(self): + return _compute_conv_lip_factor( + self.kernel_size, self.strides, self.input_shape, self.data_format + ) + + def build(self, input_shape): + super().build(input_shape) + self.built = True + self.kernel.constraint.k_coef_lip = _compute_conv_lip_factor( + self.kernel_size, self.strides, input_shape, self.data_format + ) + self.kernel.assign(self.kernel.constraint(self.kernel)) + + def call(self, inputs): + return super().call(inputs) + + def backpropagate_params(self, input_bound, gradient_bound): + return ( + self._get_coef() + * np.sqrt(np.prod(self.kernel_size)) + * input_bound + * gradient_bound + ) + + def backpropagate_inputs(self, input_bound, gradient_bound): + return 1 * gradient_bound + + def propagate_inputs(self, input_bound): + return input_bound + + def has_parameters(self): + return True + + class DP_SpectralConv2D(deel.lip.layers.SpectralConv2D, DPLayer): def __init__(self, *args, nm_coef=1, **kwargs): if "use_bias" in kwargs and kwargs["use_bias"]: @@ -401,32 +511,36 @@ class DP_ClipGradient(tf.keras.layers.Layer, DPLayer): The maximum norm of the gradient allowed. Only declare this variable if you plan on using the "fixed" clipping mode. Otherwise it will be updated automatically. - patience (int): Determines how often dynamic clipping updates occur, measured in epochs. - epsilon (float): Represents the privacy guarantees provided by the clipping constant update using the Sparse Vector Technique (SVT). + mode (str): The mode of clipping. Either "fixed" or "dynamic". Default is "fixed". - Warning : The mode "dynamic_svt" needs to be used along with the AdaptiveLossGradientClipping callback - from the deel.lipdp.model module. + Warning : The mode "dynamic" needs to be used along a callback that updates the clipping value. """ - def __init__(self, clip_value, epsilon=None, patience=1, *args, **kwargs): + def __init__(self, clip_value, mode="fixed", *args, **kwargs): super().__init__(*args, **kwargs) - if clip_value is None: - self.mode = "dynamic_svt" - # Change type back to float in case clip_value needs to be updated - clip_value = 0.0 + self._dynamic_dp_dict = {} # to be filled by the callback + + assert mode in ["fixed", "dynamic"] + self.mode = mode + + assert clip_value is None or clip_value >= 0, "clip_value must be positive" + if mode == "fixed": assert ( - epsilon is not None - ), "epsilon has to be defined in arguments for dynamic gradient clipping." - assert epsilon > 0, "epsilon <= 0 impossible." - else: - self.mode = "fixed" + clip_value is not None + ), "clip_value must be declared when using the fixed mode" + + if clip_value is None: + clip_value = ( + 0.0 # Change type back to float in case clip_value needs to be updated + ) - self.patience = patience - self.initial_value = clip_value - self.epsilon = epsilon self.clip_value = tf.Variable(clip_value, trainable=False, dtype=tf.float32) + def update_clipping_value(self, new_clip_value): + print("Update clipping value to : ", float(new_clip_value.numpy())) + self.clip_value.assign(new_clip_value) + def call(self, inputs, *args, **kwargs): batch_size = tf.convert_to_tensor(tf.cast(tf.shape(inputs)[0], tf.float32)) # the clipping is done elementwise diff --git a/deel/lipdp/losses.py b/deel/lipdp/losses.py index d06e6cc..87fd60e 100644 --- a/deel/lipdp/losses.py +++ b/deel/lipdp/losses.py @@ -31,13 +31,13 @@ from deel.lip.losses import TauCategoricalCrossentropy -class DP_Loss(Loss): +class DP_Loss: def get_L(self): - """returns the lipschitz constant of the loss""" + """Lipschitz constant of the loss wrt the logits.""" raise NotImplementedError() -class DP_KCosineSimilarity(DP_Loss): +class DP_KCosineSimilarity(Loss, DP_Loss): def __init__( self, K=1.0, @@ -58,7 +58,7 @@ def call(self, y_true, y_pred): return -tf.reduce_sum(y_true * y_pred, axis=self.axis) def get_L(self): - """returns the lipschitz constant of the loss""" + """Lipschitz constant of the loss wrt the logits.""" return 1 / float(self.K) @@ -83,11 +83,40 @@ def __init__( ) def get_L(self): - """returns the lipschitz constant of the loss""" + """Lipschitz constant of the loss wrt the logits.""" # as the implementation divide the loss by self.tau (and as it is used with "from_logit=True") return math.sqrt(2) +class DP_TauBCE(tf.keras.losses.BinaryCrossentropy, DP_Loss): + def __init__( + self, + tau, + reduction=tf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE, + name="TauBCE", + ): + """ + Similar to original binary crossentropy, but with a settable temperature + parameter. + + Args: + tau (float): temperature parameter. + reduction: reduction of the loss, must be SUM_OVER_BATCH_SIZE in order have a correct accounting. + name (str): name of the loss + """ + super().__init__(from_logits=True, reduction=reduction, name=name) + self.tau = tau + + def call(self, y_true, y_pred): + y_pred = y_pred * self.tau + return super().call(y_true, y_pred) / self.tau + + def get_L(self): + """Lipschitz constant of the loss wrt the logits.""" + # as the implementation divide the loss by self.tau (and as it is used with "from_logit=True") + return 1.0 + + class DP_MulticlassHKR(MulticlassHKR, DP_Loss): def __init__( self, @@ -124,7 +153,7 @@ class and averaging the results. ) def get_L(self): - """returns the lipschitz constant of the loss""" + """Lipschitz constant of the loss wrt the logits.""" return self.alpha + 1.0 @@ -156,7 +185,7 @@ def __init__( ) def get_L(self): - """returns the lipschitz constant of the loss""" + """Lipschitz constant of the loss wrt the logits.""" return 1.0 @@ -187,7 +216,7 @@ class and then averaged. super(DP_MulticlassKR, self).__init__(reduction=reduction, name=name) def get_L(self): - """returns the lipschitz constant of the loss""" + """Lipschitz constant of the loss wrt the logits.""" return 1.0 @@ -203,5 +232,5 @@ def __init__( super(DP_MeanAbsoluteError, self).__init__(reduction=reduction, name=name) def get_L(self): - """returns the lipschitz constant of the loss""" + """Lipschitz constant of the loss wrt the logits.""" return 1.0 diff --git a/deel/lipdp/model.py b/deel/lipdp/model.py index 8d4eca4..6e4745c 100644 --- a/deel/lipdp/model.py +++ b/deel/lipdp/model.py @@ -20,168 +20,25 @@ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -import math -import random +"""Model class for differentially private training with Lipschitz constraints.""" from dataclasses import dataclass import numpy as np import tensorflow as tf -import tensorflow_datasets as tfds -from autodp import mechanism_zoo -from autodp import transformer_zoo -from autodp.autodp_core import Mechanism from tensorflow import keras import deel -from deel.lipdp.layers import DP_ClipGradient +from deel.lipdp.accounting import DPGD_Mechanism from deel.lipdp.layers import DPLayer from deel.lipdp.pipeline import DatasetMetadata -def clipsum(norms, C): - """ - Computes the sum of individually clipped elements from the given list or tensor. - - Args: - norms (list or tensor): A list or tensor containing the elements to be clipped and summed. - C (float): A clipping constant used to clip the elements. - - Returns: - float: The sum of the clipped elements. - - Example: - >>> norms = [1.3, 2.7, 7.5] - >>> C = 3.0 - >>> clipsum(norms, C) - 7.0 - """ - norms = tf.cast(norms, dtype=tf.float32) - C = tf.constant([C]) - C = tf.cast(C, dtype=tf.float32) - return tf.math.reduce_sum(tf.math.minimum(norms, C)) - - -def diff_query(norms, lower, upper, n_points=1000): - """ - Computes the difference between two sums of clipped elements with two different clipping constants - on a range of n_points between the lower and upper values. - - Args: - norms (list or tensor): A list or tensor of values to be clipped and summed. - lower (float or int): The lower bound of the search range. - upper (float or int): The upper bound of the search range. - n_points (int): The number of points between the lower and upper bound. - - Returns: - alpha (float): The sensitivity of the differentiation query, calculated as (upper - lower) / (n_points - 1). - points (list): The list of points iterated on between the lower and upper bound. - queries (float): The values of the difference query over the points range. - - """ - points = np.linspace(lower, upper, num=n_points) - alpha = (upper - lower) / (n_points - 1) - queries = [] - for p in points: - query = clipsum(norms, p) - clipsum(norms, p + alpha) - queries.append(query) - return alpha, points, queries - - -def above_treshold(queries, sensitivity, T, epsilon): - """ - SVT inspired algorithm inspired from https://programming-dp.com/ch10.html. Computes - the index for which the differentiation query of the queries list converges above a - treshold T. This computation is epsilon-DP. - - Args : - queries (list or tensor) : list of the values of the difference query. - sensitivity (float) : sensitivity of the difference computation query. - T (float) : value of the treshold. - epsilon (float) : chosen epsilon guarantee on the query. - - Returns : - ids (int) : the index corresponding the epsilon-DP estimated optimal clipping constant. - - """ - T_hat = T + np.random.laplace(loc=0, scale=2 * sensitivity / epsilon) - for idx, q in enumerate(queries): - nu_i = np.random.laplace(loc=0, scale=4 * sensitivity / epsilon) - if q + nu_i >= T_hat: - return idx - return random.randint(0, len(queries) - 1) - - -class AdaptiveLossGradientClipping(keras.callbacks.Callback): - """Updates the clipping value of the last layer of the model. - - This callback privately updates the clipping value if the last layer - of the model is a DP_ClipGradient layer with mode = "dynamic_svt". - - Attributes : - ds_train : a tensorflow dataset object. - """ - - def __init__(self, ds_train=None): - self.ds_train = ds_train - - def on_train_begin(self, logs=None): - # Check that callback is called on a model with a clipping layer at the end - assert isinstance(self.model.layers_backward_order()[0], DP_ClipGradient) - print("On train begin : ") - self.model.layers_backward_order()[0].initial_value = tf.convert_to_tensor( - self.model.loss.get_L(), dtype=tf.float32 - ) - print( - "Initial value is now equal to lipschitz constant of loss: ", - self.model.layers_backward_order()[0].initial_value, - ) - self.model.layers_backward_order()[0].clip_value.assign( - tf.convert_to_tensor(self.model.loss.get_L(), dtype=tf.float32) - ) - return - - def on_epoch_end(self, epoch, logs={}): - last_layer = self.model.layers_backward_order()[0] - assert isinstance(last_layer, DP_ClipGradient) - # print("Patience : ", epoch % last_layer.patience) - if last_layer.mode == "fixed": - raise TypeError( - "Fixed mode for last layer is incompatible with this callback" - ) - if epoch % last_layer.patience == 0: - epsilon = last_layer.epsilon - list_norms = self.get_gradloss() - alpha, points, queries = diff_query( - list_norms, lower=0, upper=self.model.loss.get_L() - ) - T = queries[0] * 0.1 - updated_clip_value = points[ - above_treshold(queries, sensitivity=alpha, T=T, epsilon=epsilon) - ] - print("updated_clip_value : ", updated_clip_value) - self.model.layers_backward_order()[0].clip_value.assign(updated_clip_value) - return - - def get_gradloss(self): - batch = next(iter(self.ds_train.take(1))) - imgs, labels = batch - self.model.loss.reduction = tf.keras.losses.Reduction.NONE - predictions = self.model(imgs) - with tf.GradientTape() as tape: - tape.watch(predictions) - loss_value = self.model.compiled_loss(labels, predictions) - self.model.loss.reduction = tf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE - grad_loss = tape.gradient(loss_value, predictions) - norms = tf.norm(grad_loss, axis=-1) - return norms - - @dataclass class DPParameters: """Parameters used to set the dp training. Attributes: - noisify_strategy (str): either 'local' or 'global'. + noisify_strategy (str): either "per-layer" or "global". noise_multiplier (float): noise multiplier. delta (float): delta parameter for DP. """ @@ -191,87 +48,6 @@ class DPParameters: delta: float -class DPGD_Mechanism(Mechanism): - """DPGD Mechanism. - - Args: - mode (str): kind of mechanism to use. Either 'global' or 'local'. - prob (float): probability of subsampling. - noise_multipliers (float, or list of floats): single scalar when mode == 'global', list of scalars when mode == 'local'. - num_grad_steps (int): number of gradient steps. - delta (float): delta parameter for DP. - dynamic_clipping (optional, dict): dictionary of parameters for dynamic clipping with keys: - epsilon (float): epsilon parameter for SVT algorithm. - num_updates (int): patience parameter for SVT algorithm. - """ - - def __init__( - self, - mode, - prob, - noise_multipliers, - num_grad_steps, - delta, - dynamic_clipping=None, - name="DPGD_Mechanism", - ): - # Init - Mechanism.__init__(self) - self.name = name - self.params = { - "prob": prob, - "noise_multipliers": noise_multipliers, - "num_grad_steps": num_grad_steps, - "delta": delta, - "dynamic_clipping": dynamic_clipping, - } - - if mode == "global": - model_mech = mechanism_zoo.GaussianMechanism(sigma=noise_multipliers) - elif mode == "local": - layer_mechanisms = [] - - for sigma in noise_multipliers: - mech = mechanism_zoo.GaussianMechanism(sigma=sigma) - layer_mechanisms.append(mech) - - # Accountant composition on layers - compose_gaussians = transformer_zoo.ComposeGaussian() - model_mech = compose_gaussians( - layer_mechanisms, [1] * len(noise_multipliers) - ) - else: - raise ValueError("Unknown kind of mechanism") - - subsample = transformer_zoo.AmplificationBySampling() - SubsampledModelGaussian_mech = subsample( - # improved_bound_flag can be set to True for Gaussian mechanisms (see autodp documentation). - model_mech, - prob, - improved_bound_flag=True, - ) - compose = transformer_zoo.Composition() - - if dynamic_clipping is None or dynamic_clipping["mode"] == "fixed": - global_mech = compose([SubsampledModelGaussian_mech], [num_grad_steps]) - elif dynamic_clipping["mode"] == "dynamic_svt": - DynamicClippingMech = mechanism_zoo.PureDP_Mechanism( - eps=dynamic_clipping["epsilon"], name="SVT" - ) - global_mech = compose( - [SubsampledModelGaussian_mech, DynamicClippingMech], - [num_grad_steps, dynamic_clipping["num_updates"]], - ) - - # Get relevant information - self.epsilon = global_mech.get_approxDP(delta=delta) - self.delta = delta - - # Propagate updates - rdp_global = global_mech.RenyiDP - self.propagate_updates(rdp_global, type_of_update="RDP") - - class DP_Accountant(keras.callbacks.Callback): """Callback to compute the DP guarantees at the end of each epoch. @@ -304,8 +80,20 @@ def __init__(self, log_fn="all"): def on_epoch_end(self, epoch, logs=None): epsilon, delta = get_eps_delta(model=self.model, epochs=epoch + 1) print(f"\n {(epsilon,delta)}-DP guarantees for epoch {epoch+1} \n") + # plot epoch at the same time as epsilon and delta to ease comparison of plots in wandb API. - self.log_fn({"epsilon": epsilon, "delta": delta, "epoch": epoch + 1}) + to_log = { + "epsilon": epsilon, + "delta": delta, + "epoch": epoch + 1, + } + + last_layer = self.model.layers_backward_order()[0] + if isinstance(last_layer, deel.lipdp.layers.DP_ClipGradient): + clipping_value = float(last_layer.clip_value.numpy()) + to_log["clipping_value"] = clipping_value + + self.log_fn(to_log) def get_eps_delta(model, epochs): @@ -323,20 +111,20 @@ def get_eps_delta(model, epochs): prob = model.dataset_metadata.batch_size / model.dataset_metadata.nb_samples_train + # Dynamic clipping might be used. last_layer = model.layers_backward_order()[0] - dynamic_clipping = None + dynamic_clipping = {"mode": "fixed"} if isinstance(last_layer, deel.lipdp.layers.DP_ClipGradient): - dynamic_clipping = {} - dynamic_clipping["mode"] = last_layer.mode - dynamic_clipping["epsilon"] = last_layer.epsilon - dynamic_clipping["num_updates"] = epochs // last_layer.patience + dynamic_clipping.update(last_layer._dynamic_dp_dict) # copy dict + if "patience" in dynamic_clipping: + dynamic_clipping["num_updates"] = epochs // dynamic_clipping["patience"] - if model.dp_parameters.noisify_strategy == "local": + if model.dp_parameters.noisify_strategy == "per-layer": nm_coefs = get_noise_multiplier_coefs(model) noise_multipliers = [ model.dp_parameters.noise_multiplier * coef for coef in nm_coefs.values() ] - mode = "local" + mode = "per-layer" elif model.dp_parameters.noisify_strategy == "global": noise_multipliers = model.dp_parameters.noise_multiplier mode = "global" @@ -443,11 +231,11 @@ def local_noisify(model, gradient_bounds, trainable_vars, gradients): noises = [] for grad, var in zip(gradients, trainable_vars): if var.name in gradient_bounds.keys(): + # no factor-2 : use add_remove definition of DP stddev = ( model.dp_parameters.noise_multiplier * gradient_bounds[var.name] * nm_coefs[var.name] - * 2 ) noises.append(tf.random.normal(shape=tf.shape(grad), stddev=stddev)) if model.debug: @@ -487,6 +275,7 @@ def global_noisify(model, gradient_bounds, trainable_vars, gradients): global_sensitivity = tf.math.sqrt( tf.math.reduce_sum([bound**2 for bound in gradient_bounds.values()]) ) + # no factor-2 : use add_remove definition of DP. stddev = model.dp_parameters.noise_multiplier * global_sensitivity noises = [tf.random.normal(shape=tf.shape(g), stddev=stddev) for g in gradients] if model.debug: @@ -528,7 +317,7 @@ def __init__( DP accounting is done with the associated Callback. Raises: - TypeError: when the dp_parameters.noisify_strategy is not one of "local" or "global" + TypeError: when the dp_parameters.noisify_strategy is not one of "per-layer" or "global" """ super().__init__(*args, **kwargs) self.dp_parameters = dp_parameters @@ -536,7 +325,7 @@ def __init__( self.debug = debug if self.dp_parameters.noisify_strategy == "global": self.noisify_fun = global_noisify - elif self.dp_parameters.noisify_strategy == "local": + elif self.dp_parameters.noisify_strategy == "per-layer": self.noisify_fun = local_noisify else: raise TypeError( @@ -605,7 +394,7 @@ def __init__( DP accounting is done with the associated Callback. Raises: - TypeError: when the dp_parameters.noisify_strategy is not one of "local" or "global" + TypeError: when the dp_parameters.noisify_strategy is not one of "per-layer" or "global" """ super().__init__(*args, **kwargs) self.dp_layers = dp_layers @@ -614,7 +403,7 @@ def __init__( self.debug = debug if self.dp_parameters.noisify_strategy == "global": self.noisify_fun = global_noisify - elif self.dp_parameters.noisify_strategy == "local": + elif self.dp_parameters.noisify_strategy == "per-layer": self.noisify_fun = local_noisify else: raise TypeError( @@ -627,14 +416,114 @@ def layers_forward_order(self): def layers_backward_order(self): return self.dp_layers[::-1] - def call(self, inputs, *args, **kwarsg): + def call(self, inputs, *args, **kwargs): x = inputs for layer in self.layers_forward_order(): - x = layer(x, *args, **kwarsg) + x = layer(x, *args, **kwargs) return x + def signal_to_noise_elementwise(self, data): + """Compute the signal to noise ratio of the model. + + Args: + data: a tuple (x,y) of a batch of data. + + Returns: + ratios: dictionary of signal to noise ratios. Keys are trainable variables names. + norms: dictionary of gradient norms. Keys are trainable variables names. + bounds: dictionary of gradient norm bounds. Keys are trainable variables names. + """ + import tqdm + + examples, labels = data + + trainable_vars = self.trainable_variables + names = [v.name for v in trainable_vars] + + bounds = compute_gradient_bounds(model=self) + batch_size = self.dataset_metadata.batch_size + bounds = {name: bound * batch_size for name, bound in bounds.items()} + + norms = {name: [] for name in names} + ratios = {name: [] for name in names} + total = len(examples) + for x, y in tqdm.tqdm(zip(examples, labels), total=total): + with tf.GradientTape() as tape: + x = tf.expand_dims(x, axis=0) + y = tf.expand_dims(y, axis=0) + y_pred = self(x, training=True) + loss = self.compiled_loss(y, y_pred, regularization_losses=self.losses) + + gradient_element = tape.gradient(loss, self.trainable_variables) + norms_element = [tf.linalg.norm(g, axis=None) for g in gradient_element] + norms_element = {name: norm for name, norm in zip(names, norms_element)} + for name in names: + norms[name].append(norms_element[name].numpy()) + + ratios_element = {} + for name in names: + ratios_element[name] = norms_element[name] / bounds[name] + for name in names: + ratios[name].append(ratios_element[name]) + + ratios = {name: np.stack(ratios[name]) for name in names} + norms = {name: np.stack(norms[name]) for name in names} + + return ratios, norms, bounds + + def signal_to_noise_average(self, data): + """Compute the signal to noise ratio of the model. + + Args: + data: a tuple (x,y) of a batch of data. The batch size must be equal to the one of the dataset. + + Returns: + ratios: dictionary of signal to noise ratios. Keys are trainable variables names. + norms: dictionary of gradient norms. Keys are trainable variables names. + bounds: dictionary of gradient norm bounds. Keys are trainable variables names. + """ + x, y = data + + assert ( + x.shape[0] == self.dataset_metadata.batch_size + ), "Batch size must be equal to the one of the dataset" + + with tf.GradientTape() as tape: + y_pred = self(x, training=True) # Forward pass + # tf.cast(y_pred,dtype=y.dtype) + # Compute the loss value + # (the loss function is configured in `compile()`) + loss = self.compiled_loss(y, y_pred, regularization_losses=self.losses) + + # Compute gradients + trainable_vars = self.trainable_variables + gradients = tape.gradient(loss, trainable_vars) + + # gradient norms + norms = [tf.linalg.norm(g, axis=None) for g in gradients] + names = [v.name for v in trainable_vars] + norms = {name: norm for name, norm in zip(names, norms)} + + # Get gradient bounds + bounds = compute_gradient_bounds(model=self) + batch_size = self.dataset_metadata.batch_size + bounds = {name: (bound * batch_size) for name, bound in bounds.items()} + + ratios = {} + for name in names: + ratios[name] = norms[name] / bounds[name] + return ratios, norms, bounds + # Define the differentially private training step def train_step(self, data): + """Train step of the model with DP guarantees. + + Args: + data: a tuple (x,y) of a batch of data. + + Returns: + metrics: dictionary of metrics. + """ # Unpack data x, y = data @@ -653,11 +542,12 @@ def train_step(self, data): noisy_gradients = self.noisify_fun( self, gradient_bounds, trainable_vars, gradients ) - # Each optimizer is a postprocessing of the already (epsilon,delta)-DP gradients + # Each optimizer is a postprocessing of private gradients self.optimizer.apply_gradients(zip(noisy_gradients, trainable_vars)) - # self.optimizer.apply_gradients(zip(gradients, trainable_vars)) + # Update Metrics self.compiled_metrics.update_state(y, y_pred) - # Condense to verify |W|_2 = 1 + + # Condense to ensure Lipschitz constraints |W|_2 = 1 self.condense() return {m.name: m.result() for m in self.metrics} diff --git a/deel/lipdp/pipeline.py b/deel/lipdp/pipeline.py index e175792..0cf60e4 100644 --- a/deel/lipdp/pipeline.py +++ b/deel/lipdp/pipeline.py @@ -21,8 +21,11 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. from dataclasses import dataclass +from typing import Callable from typing import List +from typing import Sequence from typing import Tuple +from typing import Union import numpy as np import tensorflow as tf @@ -46,20 +49,37 @@ class that handle dataset metadata that will be used max_norm: float +def standardize_CIFAR(image: tf.Tensor): + """Standardize the image with the CIFAR10 mean and std dev. + + Args: + image (tf.Tensor): image to standardize of shape (H,W,C) of type tf.float32. + """ + CIFAR10_MEAN = tf.constant([[[0.4914, 0.4822, 0.4465]]], dtype=tf.float32) + CIFAR10_STD_DEV = tf.constant([[[0.2023, 0.1994, 0.2010]]], dtype=tf.float32) + return (image - CIFAR10_MEAN) / CIFAR10_STD_DEV + + def get_colorspace_function(colorspace: str): - if colorspace.upper() == "RGB": + if colorspace is None: # no colorspace transformation + return lambda x, y: (x, y) + elif colorspace.upper() == "RGB": return lambda x, y: (x, y) + elif colorspace.upper() == "RGB_STANDARDIZED": + return lambda x, y: (standardize_CIFAR(x), y) elif colorspace.upper() == "HSV": return lambda x, y: (tf.image.rgb_to_hsv(x), y) elif colorspace.upper() == "YIQ": return lambda x, y: (tf.image.rgb_to_yiq(x), y) elif colorspace.upper() == "YUV": return lambda x, y: (tf.image.rgb_to_yuv(x), y) + elif colorspace.upper() == "GRAYSCALE": + return lambda x, y: (tf.image.rgb_to_grayscale(x), y) else: raise ValueError("Incorrect representation argument in config") -def bound_clip_value(value): +def bound_clip_value(value: float): def bound(x, y): """clip samplewise""" return tf.clip_by_norm(x, value), y @@ -67,24 +87,156 @@ def bound(x, y): return bound, value -def bound_normalize(): - def bound(x, y): +def bound_normalize() -> Tuple[Callable, float]: + def bound(x: tf.Tensor, y: tf.Tensor): """normalize samplewise""" return tf.linalg.l2_normalize(x), y return bound, 1.0 -def load_and_prepare_data( +@dataclass +class AugmultConfig: + """Preprocessing options for images at training time. + + Copied from https://github.com/google-deepmind/jax_privacy that was released + under license Apache-2.0. + + Attributes: + augmult: Number of augmentation multiplicities to use. `augmult=0` + corresponds to no augmentation at all, `augmult=1` to standard data + augmentation (one augmented view per mini-batch) and `augmult>1` to + having several augmented view of each sample within the mini-batch. + random_crop: Whether to use random crops for data augmentation. + random_flip: Whether to use random horizontal flips for data augmentation. + random_color: Whether to use random color jittering for data augmentation. + pad: Optional padding before the image is cropped for data augmentation. + """ + + augmult: int + random_crop: bool + random_flip: bool + random_color: bool + pad: Union[int, None] = 4 + + def apply( + self, + image: tf.Tensor, + label: tf.Tensor, + *, + crop_size: Sequence[int], + ) -> tuple[tf.Tensor, tf.Tensor]: + return apply_augmult( + image, + label, + augmult=self.augmult, + random_flip=self.random_flip, + random_crop=self.random_crop, + random_color=self.random_color, + pad=self.pad, + crop_size=crop_size, + ) + + +def padding_input(x: tf.Tensor, pad: int): + """Pad input image through 'mirroring' on the four edges. + + Args: + x: image to pad. + pad: number of padding pixels. + Returns: + Padded image. + """ + x = tf.concat([x[:pad, :, :][::-1], x, x[-pad:, :, :][::-1]], axis=0) + x = tf.concat([x[:, :pad, :][:, ::-1], x, x[:, -pad:, :][:, ::-1]], axis=1) + return x + + +def apply_augmult( + image: tf.Tensor, + label: tf.Tensor, + *, + augmult: int, + random_flip: bool, + random_crop: bool, + random_color: bool, + crop_size: Sequence[int], + pad: Union[int, None], +) -> tuple[tf.Tensor, tf.Tensor]: + """Augmult data augmentation (Hoffer et al., 2019; Fort et al., 2021). + + Copied from https://github.com/google-deepmind/jax_privacy that was released + under license Apache-2.0. + + Args: + image: (single) image to augment. + label: label corresponding to the image (not modified by this function). + augmult: number of augmentation multiplicities to use. This number + should be non-negative (this function will fail if it is not). + random_flip: whether to use random horizontal flips for data augmentation. + random_crop: whether to use random crops for data augmentation. + random_color: whether to use random color jittering for data augmentation. + crop_size: size of the crop for random crops. + pad: optional padding before the image is cropped. + Returns: + images: augmented images with a new prepended dimension of size `augmult`. + labels: repeated labels with a new prepended dimension of size `augmult`. + """ + if augmult == 0: + # No augmentations; return original images and labels with a new dimension. + images = tf.expand_dims(image, axis=0) + labels = tf.expand_dims(label, axis=0) + elif augmult > 0: + # Perform one or more augmentations. + raw_image = tf.identity(image) + augmented_images = [] + + for _ in range(augmult): + image_now = raw_image + + if random_crop: + if pad: + image_now = padding_input(image_now, pad=pad) + image_now = tf.image.random_crop(image_now, size=crop_size) + if random_flip: + image_now = tf.image.random_flip_left_right(image_now) + if random_color: + # values copied/adjusted from a color jittering tutorial + # https://www.wouterbulten.nl/blog/tech/data-augmentation-using-tensorflow-data-dataset/ + image_now = tf.image.random_hue(image_now, 0.1) + image_now = tf.image.random_saturation(image_now, 0.6, 1.6) + image_now = tf.image.random_brightness(image_now, 0.15) + image_now = tf.image.random_contrast(image_now, 0.7, 1.3) + + augmented_images.append(image_now) + + images = tf.stack(augmented_images, axis=0) + labels = tf.stack([label] * augmult, axis=0) + else: + raise ValueError("Augmult should be non-negative.") + + return images, labels + + +def default_augmult_config(multiplicity: int): + return AugmultConfig( + augmult=multiplicity, + random_flip=True, + random_crop=True, + random_color=False, + ) + + +def load_and_prepare_images_data( dataset_name: str = "mnist", batch_size: int = 256, colorspace: str = "RGB", - drop_remainder=True, - augmentation_fct=None, - bound_fct=None, + bound_fct: bool = None, + drop_remainder: bool = True, + multiplicity: int = 0, ): """ - load dataset_name data using tensorflow datasets. + Load dataset_name image dataset using tensorflow datasets. Args: dataset_name (str): name of the dataset to load. @@ -92,9 +244,8 @@ def load_and_prepare_data( colorspace (str): one of RGB, HSV, YIQ, YUV drop_remainder (bool, optional): when true drop the last batch if it has less than batch_size elements. Defaults to True. - augmentation_fct (callable, optional): data augmentation to be applied - to train. the function must take a tuple (img, label) and return a - tuple of (img, label). Defaults to None. + multiplicity (int): multiplicity of data-augmentation. 0 means no + augmentation, 1 means standard augmentation, >1 means multiple. bound_fct (callable, optional): function that is responsible of bounding the inputs. Can be None, bound_normalize or bound_clip_value. None means that no clipping is performed, and max theoretical value is @@ -103,7 +254,7 @@ def load_and_prepare_data( defined value. Returns: - ds_train, ds_test, metadat: two dataset, with data preparation, + ds_train, ds_test, metadata: two dataset, with data preparation, augmentation, shuffling and batching. Also return an DatasetMetadata object with infos about the dataset. """ @@ -115,51 +266,77 @@ def load_and_prepare_data( as_supervised=True, with_info=True, ) - # handle case where functions are None - if augmentation_fct is None: - augmentation_fct = lambda x, y: (x, y) + # None bound yield default trivial bound nb_classes = ds_info.features["label"].num_classes input_shape = ds_info.features["image"].shape if bound_fct is None: + # TODO: consider throwing an error here to avoid unexpected behavior. + print( + "No bound function provided, using default bound sqrt(w*h*c) for the input." + ) bound_fct = ( lambda x, y: (x, y), - input_shape[-3] * input_shape[-2] * input_shape[-1], + float(input_shape[-3] * input_shape[-2] * input_shape[-1]), ) bound_callable, bound_val = bound_fct + + to_float = lambda x, y: (tf.cast(x, tf.float32) / 255.0, tf.one_hot(y, nb_classes)) + + if input_shape[-1] == 1: + assert ( + colorspace == "grayscale" + ), "grayscale is the only valid colorspace for grayscale images" + colorspace = None + color_space_fun = get_colorspace_function(colorspace) + + ############################ + ####### Train pipeline ##### + ############################ + # train pipeline - ds_train = ( - ds_train.map( # map to 0,1 and one hot encode - lambda x, y: ( - tf.cast(x, tf.float32) / 255.0, - tf.one_hot(y, nb_classes), - ), - num_parallel_calls=tf.data.AUTOTUNE, - ) - .shuffle( # shuffle - min(batch_size * 10, max(batch_size, ds_train.cardinality())), - reshuffle_each_iteration=True, - ) - .map(augmentation_fct, num_parallel_calls=tf.data.AUTOTUNE) # augment - .map( # map colorspace - get_colorspace_function(colorspace), - num_parallel_calls=tf.data.AUTOTUNE, + ds_train = ds_train.map( # map to 0,1 and one hot encode + to_float, + num_parallel_calls=tf.data.AUTOTUNE, + ) + ds_train = ds_train.shuffle( # shuffle + min(batch_size * 10, max(batch_size, ds_train.cardinality())), + reshuffle_each_iteration=True, + ) + + if multiplicity >= 1: + augmult_config = default_augmult_config(multiplicity) + crop_size = ds_info.features["image"].shape + ds_train = ds_train.map( + lambda x, y: augmult_config.apply(x, y, crop_size=crop_size) ) - .map(bound_callable, num_parallel_calls=tf.data.AUTOTUNE) # apply bound - .batch(batch_size, drop_remainder=drop_remainder) # batch - .prefetch(tf.data.AUTOTUNE) + ds_train = ds_train.unbatch() + else: + multiplicity = 1 + + ds_train = ds_train.map( # map colorspace + color_space_fun, + num_parallel_calls=tf.data.AUTOTUNE, ) + ds_train = ds_train.map( + bound_callable, num_parallel_calls=tf.data.AUTOTUNE + ) # apply bound + ds_train = ds_train.batch( + batch_size * multiplicity, drop_remainder=drop_remainder + ) # batch + ds_train = ds_train.prefetch(tf.data.AUTOTUNE) + + ############################ + ####### Test pipeline ###### + ############################ ds_test = ( ds_test.map( - lambda x, y: ( - tf.cast(x, tf.float32) / 255.0, - tf.one_hot(y, nb_classes), - ), + to_float, num_parallel_calls=tf.data.AUTOTUNE, ) .map( - get_colorspace_function(colorspace), + color_space_fun, num_parallel_calls=tf.data.AUTOTUNE, ) .map(bound_callable, num_parallel_calls=tf.data.AUTOTUNE) # apply bound @@ -167,7 +344,7 @@ def load_and_prepare_data( min(batch_size * 10, max(batch_size, ds_test.cardinality())), reshuffle_each_iteration=True, ) - .batch(batch_size, drop_remainder=drop_remainder) + .batch(batch_size, drop_remainder=False) .prefetch(tf.data.AUTOTUNE) ) # get dataset metadata @@ -177,9 +354,152 @@ def load_and_prepare_data( nb_samples_train=ds_info.splits["train"].num_examples, nb_samples_test=ds_info.splits["test"].num_examples, class_names=ds_info.features["label"].names, - nb_steps_per_epochs=ds_train.cardinality().numpy() - if ds_train.cardinality() > 0 # handle case cardinality return -1 (unknown) - else ds_info.splits["train"].num_examples / batch_size, + nb_steps_per_epochs=( + ds_train.cardinality().numpy() + if ds_train.cardinality() > 0 # handle case cardinality return -1 (unknown) + else ds_info.splits["train"].num_examples / batch_size + ), + batch_size=batch_size, + max_norm=bound_val, + ) + + return ds_train, ds_test, metadata + + +def default_delta_value(dataset_metadata) -> float: + """Default policy to set delta value. + + Args: + dataset_metadata (DatasetMetadata): metadata of the dataset. + + Returns: + float: default delta value. + """ + n = dataset_metadata.nb_samples_train + smallest_power10_bigger = 10 ** np.ceil(np.log10(n)) + delta = float(1 / smallest_power10_bigger) + print(f"Default delta value: {delta}") + return delta + + +def download_adbench_datasets(dataset_dir: str): + import os + import fsspec + + fs = fsspec.filesystem("github", org="Minqi824", repo="ADBench") + print(f"Downloading datasets from the remote github repo...") + + save_path = os.path.join(dataset_dir, "datasets", "Classical") + print(f"Current saving path: {save_path}") + + os.makedirs(save_path, exist_ok=True) + fs.get(fs.ls("adbench/datasets/" + "Classical"), save_path, recursive=True) + + +def load_adbench_data( + dataset_name: str, + dataset_dir: str, + standardize: bool = True, + redownload: bool = False, +): + """Load a dataset from the adbench package.""" + if redownload: + download_adbench_datasets(dataset_dir) + + data = np.load( + f"{dataset_dir}/datasets/Classical/{dataset_name}.npz", allow_pickle=True + ) + x_data, y_data = data["X"], data["y"] + + if standardize: + x_data = (x_data - x_data.mean()) / x_data.std() + + return x_data, y_data + + +def prepare_tabular_data( + x_train: np.array, + x_test: np.array, + y_train: np.array, + y_test: np.array, + batch_size: int, + bound_fct: Callable = None, + drop_remainder: bool = True, +): + """Convert Numpy dataset into tensorflow datasets. + + Args: + x_train (np.array): input data, of shape (N, F) with floats. + x_test (np.array): input data, of shape (N, F) with floats. + y_train (np.array): labels in one hot encoding, of shape (N, C) with floats. + y_test (np.array): labels in one hot encoding, of shape (N, C) with floats. + batch_size (int): logical batch size + bound_fct (callable, optional): function that is responsible of + bounding the inputs. Can be None, bound_normalize or bound_clip_value. + None means that no clipping is performed, and max theoretical value is + reported ( sqrt(w*h*c) ). bound_normalize means that each input is + normalized setting the bound to 1. bound_clip_value will clip norm to + defined value. + drop_remainder (bool, optional): when true drop the last batch if it + has less than batch_size elements. Defaults to True. + + + Returns: + ds_train, ds_test, metadata: two dataset, with data preparation, + augmentation, shuffling and batching. Also return an + DatasetMetadata object with infos about the dataset. + """ + # None bound yield default trivial bound + nb_classes = np.unique(y_train).shape[0] + input_shape = x_train.shape[1:] + bound_callable, bound_val = bound_fct + + ############################ + ####### Train pipeline ##### + ############################ + + to_float = lambda x, y: (tf.cast(x, tf.float32), tf.cast(y, tf.float32)) + + ds_train = tf.data.Dataset.from_tensor_slices((x_train, y_train)) + ds_train = ds_train.map(to_float, num_parallel_calls=tf.data.AUTOTUNE) + ds_train = ds_train.shuffle( # shuffle + min(batch_size * 10, max(batch_size, ds_train.cardinality())), + reshuffle_each_iteration=True, + ) + + ds_train = ds_train.map( + bound_callable, num_parallel_calls=tf.data.AUTOTUNE + ) # apply bound + ds_train = ds_train.batch(batch_size, drop_remainder=drop_remainder) # batch + ds_train = ds_train.prefetch(tf.data.AUTOTUNE) + + ############################ + ####### Test pipeline ###### + ############################ + + ds_test = tf.data.Dataset.from_tensor_slices((x_test, y_test)) + ds_test = ds_test.map(to_float, num_parallel_calls=tf.data.AUTOTUNE) + ds_test = ( + ds_test.map(bound_callable, num_parallel_calls=tf.data.AUTOTUNE) # apply bound + .shuffle( + min(batch_size * 10, max(batch_size, ds_test.cardinality())), + reshuffle_each_iteration=True, + ) + .batch(batch_size, drop_remainder=False) + .prefetch(tf.data.AUTOTUNE) + ) + # get dataset metadata + metadata = DatasetMetadata( + input_shape=input_shape, + nb_classes=nb_classes, + nb_samples_train=x_train.shape[0], + nb_samples_test=x_test.shape[0], + class_names=[str(i) for i in range(nb_classes)], + nb_steps_per_epochs=( + ds_train.cardinality().numpy() + if ds_train.cardinality() > 0 # handle case cardinality return -1 (unknown) + else x_train.shape[0] / batch_size + ), batch_size=batch_size, max_norm=bound_val, ) diff --git a/deel/lipdp/sensitivity.py b/deel/lipdp/sensitivity.py index b80ae3b..cb1561c 100644 --- a/deel/lipdp/sensitivity.py +++ b/deel/lipdp/sensitivity.py @@ -25,10 +25,11 @@ import numpy as np import tensorflow as tf +from deel.lipdp.model import compute_gradient_bounds from deel.lipdp.model import get_eps_delta -def get_max_epochs(epsilon_max, model, epochs_max=1024): +def get_max_epochs(epsilon_max, model, epochs_max=1024, safe=True, atol=1e-2): """Return the maximum number of epochs to reach a given epsilon_max value. The computation of (epsilon, delta) is slow since it involves solving a minimization problem @@ -45,17 +46,19 @@ def get_max_epochs(epsilon_max, model, epochs_max=1024): model: The model used to compute the values of epsilon. epochs_max: The maximum number of epochs to reach epsilon_max. Defaults to 1024. If None, the dichotomy search is used to find the upper bound. + safe: If True, the dichotomy search returns the largest number of epochs such that epsilon <= epsilon_max. + Otherwise, it returns the smallest number of epochs such that epsilon >= epsilon_max. + atol: The absolute tolerance to panic on numerical inaccuracy. Defaults to 1e-2. Returns: - The maximum number of epochs to reach epsilon_max.""" + The maximum number of epochs to reach epsilon_max. It may be zero if epsilon_max is too small. + """ steps_per_epoch = model.dataset_metadata.nb_steps_per_epochs def fun(epoch): if epoch == 0: epsilon = 0 else: - epoch = round(epoch) - niter = (epoch + 1) * steps_per_epoch epsilon, _ = get_eps_delta(model, epoch) return epsilon @@ -71,7 +74,7 @@ def fun(epoch): epochs_min = 0 while epochs_max - epochs_min > 1: - epoch = (epochs_max + epochs_min) / 2 + epoch = (epochs_max + epochs_min) // 2 epsilon = fun(epoch) if epsilon < epsilon_max: epochs_min = epoch @@ -81,46 +84,21 @@ def fun(epoch): f"epoch bounds = {epochs_min, epochs_max} and epsilon = {epsilon} at epoch {epoch}" ) - return int(round(epoch)) - - -def gradient_norm_check(K_list, model, examples): - """ - Verifies that the values of per-sample gradients on a layer never exceede a theoretical value - determined by our theoretical work. - Args : - Klist: The list of theoretical upper bounds we have identified for each layer and want to - put to the test. - model: The model containing the layers we are interested in. Layers must only have one trainable variable. - Model must have a given input_shape or has to be built. - examples: Relevant examples. Inputting the whole training set might prove very costly to check element wise Jacobians. - Returns : - Boolean value. True corresponds to upper bound has been validated. - """ - image_axes = tuple(range(1, examples.ndim)) - example_norms = tf.math.reduce_euclidean_norm(examples, axis=image_axes) - X_max = tf.reduce_max(example_norms).numpy() - upper_bounds = np.array(K_list) * X_max - assert len(model.layers) == len(upper_bounds) - for layer, bound in zip(model.layers, upper_bounds): - assert check_layer_gradient_norm(bound, layer, examples) - + if safe: + last_epsilon = fun(epochs_min) + error = last_epsilon - epsilon_max + if error <= 0: + return epochs_min + elif error < atol: + # This branch should never be taken if fun is a non-decreasing function of the number of epochs. + # fun is mathematcally non-decreasing, but numerical inaccuracy can lead to this case. + print( + f"Numerical inaccuracy with error {error:.7f} in the dichotomy search: using a conservative value." + ) + return epochs_min - 1 + else: + assert ( + False, + ), f"Numerical inaccuracy with error {error:.7f}>{atol:.3f} in the dichotomy search." -def check_layer_gradient_norm(S, layer, examples): - l_model = tf.keras.Sequential([layer]) - if not l_model.trainable_variables: - print("Not a trainable layer assuming gradient norm < |x|") - assert len(l_model.trainable_variables) == 1 - with tf.GradientTape() as tape: - y_pred = l_model(examples, training=True) - trainable_vars = l_model.trainable_variables[0] - jacobian = tape.jacobian(y_pred, trainable_vars) - jacobian = tf.reshape( - jacobian, - (y_pred.shape[0], -1, np.prod(trainable_vars.shape)), - name="Reshaped_Gradient", - ) - J_sigma = tf.linalg.svd(jacobian, full_matrices=False, compute_uv=False, name=None) - J_2norm = tf.reduce_max(J_sigma, axis=-1) - J_2norm = tf.reduce_max(J_2norm).numpy() - return J_2norm < S + return epochs_max diff --git a/deel/lipdp/utils.py b/deel/lipdp/utils.py new file mode 100644 index 0000000..1bccecc --- /dev/null +++ b/deel/lipdp/utils.py @@ -0,0 +1,233 @@ +# -*- coding: utf-8 -*- +# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All +# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, +# CRIAQ and ANITI - https://www.deel.ai/ +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +import numpy as np +import tensorflow as tf + + +class ScaledAUC(tf.keras.metrics.AUC): + def __init__(self, scale, name="auc", **kwargs): + if "from_logits" in kwargs and kwargs["from_logits"] is False: + raise ValueError("ScaledAUC must be used with from_logits=True") + kwargs["from_logits"] = True + super().__init__(name=name, **kwargs) + self.scale = scale + + def update_state(self, y_true, y_pred, sample_weight=None): + y_pred = y_pred * self.scale + return super().update_state(y_true, y_pred, sample_weight=sample_weight) + + +class CertifiableAUROC(tf.keras.metrics.AUC): + def __init__(self, radius, **kwargs): + super().__init__(**kwargs) + self.radius = radius + + def update_state(self, y_true, y_pred, sample_weight=None): + # y_pred is 1-Lipschitz wrt the input and labels are in {-1, 1} + labels = 2 * tf.cast(y_true, tf.float32) - 1 + y_pred = y_pred - labels * self.radius + return super().update_state(y_true, y_pred, sample_weight=sample_weight) + + +class PrivacyMetrics(tf.keras.callbacks.Callback): + """Callback to compute privacy metrics at the end training. + + Modified from official tutorial https://www.tensorflow.org/responsible_ai/privacy/tutorials/privacy_report + + Args: + np_dataset: The dataset used to train the model. It must be a tuple (x_train, y_train, x_test, y_test). + """ + + def __init__(self, np_dataset, log_fn="all"): + super().__init__() + if log_fn == "wandb": + import wandb + + log_fn = wandb.log + elif log_fn == "logging": + import logging + + log_fn = logging.info + elif log_fn == "all": + import wandb + import logging + + log_fn = lambda x: [wandb.log(x), logging.info(x)] + else: + raise ValueError(f"Unknown log_fn {log_fn}") + self.log_fn = log_fn + + x_train, y_train, x_test, y_test = np_dataset + self.x_train = x_train + self.x_test = x_test + self.labels_train = y_train + self.labels_test = y_test + try: + import tensorflow_privacy + from tensorflow_privacy.privacy.privacy_tests.membership_inference_attack import ( + membership_inference_attack as mia, + ) + import tensorflow_privacy.privacy.privacy_tests.membership_inference_attack.data_structures as mia_ds + + self.mia = mia + self.mia_ds = mia_ds + except ImportError: + self.mia = None + raise ImportError( + "tensorflow_privacy is not installed. Please install it to use PrivacyMetrics." + ) + self.attack_results = None + + def on_train_end(self, logs=None): + print(f"\nRunning privacy report...") + + logits_train = self.model.predict(self.x_train, batch_size=2000) + logits_test = self.model.predict(self.x_test, batch_size=2000) + + print(f"prob_train.shape = {logits_train.shape}") + print(f"prob_test.shape = {logits_test.shape}") + print(f"label_train.shape = {self.labels_train.shape}") + print(f"label_test.shape = {self.labels_test.shape}") + + attack_results = self.mia.run_attacks( + self.mia_ds.AttackInputData( + labels_train=self.labels_train, + labels_test=self.labels_test, + logits_train=logits_train, + logits_test=logits_test, + ), + self.mia_ds.SlicingSpec(entire_dataset=True, by_class=True), + attack_types=( + self.mia_ds.AttackType.THRESHOLD_ATTACK, + self.mia_ds.AttackType.LOGISTIC_REGRESSION, + ), + ) + + self.attack_results = attack_results + + def log_report(self): + """Prints the privacy report.""" + attack_results = self.attack_results + summary = attack_results.calculate_pd_dataframe() + print(summary) + entire_dataset = summary[summary["slice feature"] == "Entire dataset"] + per_class = summary[summary["slice feature"] == "class"] + max_auc_entire_dataset = entire_dataset["AUC"].max() + max_adv_entire_dataset = entire_dataset["Attacker advantage"].max() + max_auc_per_class = per_class["AUC"].max() + max_adv_per_class = per_class["Attacker advantage"].max() + to_log = { + "mia_auc_per_class": max_auc_per_class, + "mia_adv_per_class": max_adv_per_class, + "mia_auc_entire_dataset": max_auc_entire_dataset, + "mia_adv_entire_dataset": max_adv_entire_dataset, + } + self.log_fn(to_log) + + +class SignaltoNoiseAverage(tf.keras.callbacks.Callback): + def __init__(self, batch, log_fn="all"): + super().__init__() + if log_fn == "wandb": + import wandb + + log_fn = wandb.log + elif log_fn == "logging": + import logging + + log_fn = logging.info + elif log_fn == "all": + import wandb + import logging + + log_fn = lambda x: [wandb.log(x), logging.info(x)] + else: + raise ValueError(f"Unknown log_fn {log_fn}") + self.log_fn = log_fn + + self.batch = batch + + def on_epoch_end(self, epoch, logs=None): + ratios, norms, gradient_bounds = self.model.signal_to_noise_average(self.batch) + + norms = {("norms_" + k): v.numpy() for k, v in norms.items()} + gradient_bounds = { + ("gradient_bounds_" + k): v.numpy() for k, v in gradient_bounds.items() + } + ratios = {("ratios_" + k): v.numpy() for k, v in ratios.items()} + + norms_avg = np.mean(list(norms.values())) + gradient_bounds_avg = np.mean(list(gradient_bounds.values())) + ratio_avg = np.mean(list(ratios.values())) + + to_log = { + "epoch": epoch, + "norms_avg": norms_avg, + "gradient_bounds_avg": gradient_bounds_avg, + "ratio_avg": ratio_avg, + **norms, + **gradient_bounds, + **ratios, + } + + self.log_fn(to_log) + + +class SignaltoNoiseHistogram(tf.keras.callbacks.Callback): + def __init__(self, batch): + super().__init__() + + try: + import wandb + + self.wandb = wandb + except ImportError: + raise ImportError( + "wandb is not installed. Please install it to use SignaltoNoiseHistogram." + ) + + self.batch = batch + + def on_epoch_end(self, epoch, logs=None): + ratios, norms, gradient_bounds = self.model.signal_to_noise_elementwise( + self.batch + ) + + norms = {("norms_" + k): v for k, v in norms.items()} + gradient_bounds = { + ("gradient_bounds_" + k): v for k, v in gradient_bounds.items() + } + ratios = {("ratios_" + k): v for k, v in ratios.items()} + + norms_histograms = {k: self.wandb.Histogram(v) for k, v in norms.items()} + gradient_bounds_histograms = {k: v for k, v in gradient_bounds.items()} + ratios_histograms = {k: self.wandb.Histogram(v) for k, v in ratios.items()} + + self.wandb.log( + { + "epoch": epoch, + **norms_histograms, + **gradient_bounds_histograms, + **ratios_histograms, + } + ) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 456c9d3..ebca628 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -4,14 +4,14 @@ Thanks for taking the time to contribute! From opening a bug report to creating a pull request: every contribution is appreciated and welcome. If you're planning to implement a new feature or change -the api please create an [issue first](https://https://github.com/deel-ai/dp-lipschitz/issues/new). This way we can ensure that your precious +the api please create an [issue first](https://github.com/Algue-Rythme/lip-dp/issues). This way we can ensure that your precious work is not in vain. ## Setup with make -- Clone the repo `git clone https://github.com/deel-ai/dp-lipschitz.git`. -- Go to your freshly downloaded repo `cd lipdp` +- Clone the repo `git clone git@github.com:Algue-Rythme/lip-dp.git`. +- Go to your freshly downloaded repo `cd lip-dp` - Create a virtual environment and install the necessary dependencies for development: `make prepare-dev && source lipdp_dev_env/bin/activate`. @@ -26,9 +26,8 @@ This command activate your virtual environment and launch the `tox` command. `tox` on the otherhand will do the following: -- run pytest on the tests folder with python 3.6, python 3.7 and python 3.8 -> Note: If you do not have those 3 interpreters the tests would be only performs with your current interpreter -- run pylint on the deel-datasets main files, also with python 3.6, python 3.7 and python 3.8 +- run pytest on the tests folder +- run pylint on the deel-datasets main files > Note: It is possible that pylint throw false-positive errors. If the linting test failed please check first pylint output to point out the reasons. Please, make sure you run all the tests at least once before opening a pull request. @@ -42,7 +41,7 @@ Basically, it will check that your code follow a certain number of convention. A After getting some feedback, push to your fork and submit a pull request. We may suggest some changes or improvements or alternatives, but for small changes -your pull request should be accepted quickly (see [Governance policy](https://github.com/deel-ai/lipdp/blob/master/GOVERNANCE.md)). +your pull request should be accepted quickly (see [Governance policy](https://github.com/Algue-Rythme/lip-dp/blob/release-no-advertising/GOVERNANCE.md)). Something that will increase the chance that your pull request is accepted: diff --git a/docs/assets/all_speed_curves.png b/docs/assets/all_speed_curves.png new file mode 100644 index 0000000..0652bd8 Binary files /dev/null and b/docs/assets/all_speed_curves.png differ diff --git a/docs/assets/backprop_v2.png b/docs/assets/backprop_v2.png new file mode 100644 index 0000000..f281267 Binary files /dev/null and b/docs/assets/backprop_v2.png differ diff --git a/docs/assets/banner_dark.png b/docs/assets/banner_dark.png deleted file mode 100644 index 1af2ebc..0000000 Binary files a/docs/assets/banner_dark.png and /dev/null differ diff --git a/docs/assets/banner_light.png b/docs/assets/banner_light.png deleted file mode 100644 index 15cb1fe..0000000 Binary files a/docs/assets/banner_light.png and /dev/null differ diff --git a/docs/assets/fig_accountant.png b/docs/assets/fig_accountant.png new file mode 100644 index 0000000..68a0410 Binary files /dev/null and b/docs/assets/fig_accountant.png differ diff --git a/docs/assets/lipdp_logo.png b/docs/assets/lipdp_logo.png new file mode 100644 index 0000000..07bc221 Binary files /dev/null and b/docs/assets/lipdp_logo.png differ diff --git a/docs/assets/residuals.png b/docs/assets/residuals.png new file mode 100644 index 0000000..4840e69 Binary files /dev/null and b/docs/assets/residuals.png differ diff --git a/docs/index.md b/docs/index.md index 784ab33..b57ce7f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,39 +1,40 @@ -# Index - -Mainly you could copy the README.md here. However, you should be careful with: - -- The banner section is different -- Link to assets (handling dark mode is different between GitHub and the documentation) -- Relative links - - -
- lib banner - lib banner -
-
- +

-
+

-

- Libname is a Python toolkit dedicated to making people happy and fun. +LipDP is a Python toolkit dedicated to robust and certifiable learning under privacy guarantees. + + - -
- Explore Libname docs » -
+This package is the code for the paper "*DP-SGD Without Clipping: The Lipschitz Neural Network Way*" by Louis Béthune, Thomas Massena, Thibaut Boissin, Aurélien Bellet, Franck Mamalet, Yannick Prudent, Corentin Friedrich, Mathieu Serrurier, David Vigouroux, published at the **International Conference on Learning Representations (ICLR 2024)**. The paper is available on [arxiv](https://arxiv.org/abs/2305.16202). + + +State-of-the-art approaches for training Differentially Private (DP) Deep Neural Networks (DNN) face difficulties to estimate tight bounds on the sensitivity of the network's layers, and instead rely on a process of per-sample gradient clipping. This clipping process not only biases the direction of gradients but also proves costly both in memory consumption and in computation. To provide sensitivity bounds and bypass the drawbacks of the clipping process, we propose to rely on Lipschitz constrained networks. Our theoretical analysis reveals an unexplored link between the Lipschitz constant with respect to their input and the one with respect to their parameters. By bounding the Lipschitz constant of each layer with respect to its parameters, we prove that we can train these networks with privacy guarantees. Our analysis not only allows the computation of the aforementioned sensitivities at scale, but also provides guidance on how to maximize the gradient-to-noise ratio for fixed privacy guarantees. To facilitate the application of Lipschitz networks and foster robust and certifiable learning under privacy guarantees, we provide this Python package that implements building blocks allowing the construction and private training of such networks. -

+
+ backpropforbounds +
+ +The sensitivity is computed automatically by the package, and no element-wise clipping is required. This is translated into a new DP-SGD algorithm, called Clipless DP-SGD, that is faster and more memory efficient than DP-SGD with clipping. + +
+ speedcurves +
## 📚 Table of contents @@ -41,7 +42,6 @@ Mainly you could copy the README.md here. However, you should be careful with: - [🔥 Tutorials](#-tutorials) - [🚀 Quick Start](#-quick-start) - [📦 What's Included](#-whats-included) -- [👍 Contributing](#-contributing) - [👀 See Also](#-see-also) - [🙏 Acknowledgments](#-acknowledgments) - [👨‍🎓 Creator](#-creator) @@ -52,90 +52,135 @@ Mainly you could copy the README.md here. However, you should be careful with: We propose some tutorials to get familiar with the library and its API: -- [Getting started](https://colab.research.google.com/drive/1XproaVxXjO9nrBSyyy7BuKJ1vy21iHs2) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/deel-ai//blob/master/docs/notebooks/demo_fake.ipynb) - -You do not necessarily need to register the notebooks on GitHub. Notebooks can be hosted on a specific [drive](https://drive.google.com/drive/folders/1DOI1CsL-m9jGjkWM1hyDZ1vKmSU1t-be). +- **Demo on MNIST** [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1s3LBIxf0x1sOMQUw6BHpxbeUzmwtaP0d) +- **Demo on CIFAR10** [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1RbALHN-Eib6CCUznLrbiETX7JJrFaUB0) ## 🚀 Quick Start -Libname requires some stuff and several libraries including Numpy. Installation can be done using Pypi: - +lipDP requires some stuff and several libraries including Numpy. Installation can be done locally by cloning the repository and running: ```python -pip install libname +pip install -e .[dev] ``` -Now that Libname is installed, here are some basic examples of what you can do with the available modules. +### Setup privacy parameters -### Print Hello World - -Let's start with a simple example: +Parameters are stored in a dataclass: ```python -from libname.fake import hello_world - -hello_world() +from deel.lipdp.model import DPParameters +dp_parameters = DPParameters( + noisify_strategy="local", + noise_multiplier=4.0, + delta=1e-5, +) + +epsilon_max = 10.0 ``` -### Make addition - -In order to add `a` to `b` you can use: +### Setup DP model ```python -from libname.fake import addition - -a = 1 -b = 2 -c = addition(a, b) +# construct DP_Sequential +model = DP_Sequential( + # works like usual sequential but requires DP layers + layers=[ + # BoundedInput works like Input, but performs input clipping to guarantee input bound + layers.DP_BoundedInput( + input_shape=dataset_metadata.input_shape, upper_bound=input_upper_bound + ), + layers.DP_QuickSpectralConv2D( # Reshaped Kernel Orthogonalization (RKO) convolution. + filters=32, + kernel_size=3, + kernel_initializer="orthogonal", + strides=1, + use_bias=False, # No biases since the framework handles a single tf.Variable per layer. + ), + layers.DP_GroupSort(2), # GNP activation function. + layers.DP_ScaledL2NormPooling2D(pool_size=2, strides=2), # GNP pooling. + layers.DP_QuickSpectralConv2D( # Reshaped Kernel Orthogonalization (RKO) convolution. + filters=64, + kernel_size=3, + kernel_initializer="orthogonal", + strides=1, + use_bias=False, # No biases since the framework handles a single tf.Variable per layer. + ), + layers.DP_GroupSort(2), # GNP activation function. + layers.DP_ScaledL2NormPooling2D(pool_size=2, strides=2), # GNP pooling. + + layers.DP_Flatten(), # Convert features maps to flat vector. + + layers.DP_QuickSpectralDense(512), # GNP layer with orthogonal weight matrix. + layers.DP_GroupSort(2), + layers.DP_QuickSpectralDense(dataset_metadata.nb_classes), + ], + dp_parameters=dp_parameters, + dataset_metadata=dataset_metadata, +) ``` -## 📦 What's Included - -A list or table of methods available +### Setup accountant -## 👍 Contributing +The privacy accountant is composed of different mechanisms from `autodp` package that are combined to provide a privacy accountant for Clipless DP-SGD algorithm: -Feel free to propose your ideas or come and contribute with us on the Libname toolbox! We have a specific document where we describe in a simple way how to make your first pull request: [just here](CONTRIBUTING.md). +
+ rdpaccountant +
-## 👀 See Also +Adding a privacy accountant to your model is straighforward: -This library is one approach of many... +```python +from deel.lipdp.model import DP_Accountant + +callbacks = [ + DP_Accountant() +] + +model.fit( + ds_train, + epochs=num_epochs, + validation_data=ds_test, + callbacks=[ + # accounting is done thanks to a callback + DP_Accountant(log_fn="logging"), # wandb.log also available. + ], +) +``` -Other tools to explain your model include: +## 📦 What's Included -- [Random](https://www.youtube.com/watch?v=dQw4w9WgXcQ) +Code can be found in the `deel/lipdp` folder, the documentation ca be found by running + `mkdocs build` and `mkdocs serve` (or loading `site/index.html`). Experiments were + done using the code in the `experiments` folder. -More from the DEEL project: +Other tools to perform DP-training include: -- [Xplique](https://github.com/deel-ai/xplique) a Python library exclusively dedicated to explaining neural networks. -- [deel-lip](https://github.com/deel-ai/deel-lip) a Python library for training k-Lipschitz neural networks on TF. -- [Influenciae](https://github.com/deel-ai/influenciae) Python toolkit dedicated to computing influence values for the discovery of potentially problematic samples in a dataset. -- [deel-torchlip](https://github.com/deel-ai/deel-torchlip) a Python library for training k-Lipschitz neural networks on PyTorch. -- [DEEL White paper](https://arxiv.org/abs/2103.10529) a summary of the DEEL team on the challenges of certifiable AI and the role of data quality, representativity and explainability for this purpose. +- [tensorflow-privacy](https://github.com/tensorflow/privacy) in Tensorflow +- [Opacus](https://opacus.ai/) in Pytorch +- [jax-privacy](https://github.com/google-deepmind/jax_privacy) in Jax ## 🙏 Acknowledgments -DEEL Logo -DEEL Logo -This project received funding from the French ”Investing for the Future – PIA3” program within the Artificial and Natural Intelligence Toulouse Institute (ANITI). The authors gratefully acknowledge the support of the DEEL project. +The creators thank the whole [DEEL](https://deel-ai.com/) team for its support, and [Aurélien Bellet](http://researchers.lille.inria.fr/abellet/) for his guidance. ## 👨‍🎓 Creators -If you want to highlight the main contributors - +The library has been created by [Louis Béthune](https://github.com/Algue-Rythme), [Thomas Masséna](https://github.com/massena-t) during an internsip at [DEEL](https://deel-ai.com/), and [Thibaut Boissin](https://github.com/thib-s). ## 🗞️ Citation -If you use Libname as part of your workflow in a scientific publication, please consider citing 🗞️ [our paper](https://www.youtube.com/watch?v=dQw4w9WgXcQ): +If you find this work useful for your research, please consider citing it: ``` -@article{rickroll, - title={Rickrolling}, - author={Some Internet Trolls}, - journal={Best Memes}, - year={ND} +@inproceedings{ +bethune2024dpsgd, +title={{DP}-{SGD} Without Clipping: The Lipschitz Neural Network Way}, +author={Louis B{\'e}thune and Thomas Massena and Thibaut Boissin and Aur{\'e}lien Bellet and Franck Mamalet and Yannick Prudent and Corentin Friedrich and Mathieu Serrurier and David Vigouroux}, +booktitle={The Twelfth International Conference on Learning Representations}, +year={2024}, +url={https://openreview.net/forum?id=BEyEziZ4R6} } ``` ## 📝 License -The package is released under MIT license. \ No newline at end of file +The package is released under [MIT license](../LICENSE). diff --git a/docs/notebooks/advanced_cifar10.ipynb b/docs/notebooks/advanced_cifar10.ipynb new file mode 100644 index 0000000..dca2a33 --- /dev/null +++ b/docs/notebooks/advanced_cifar10.ipynb @@ -0,0 +1,1895 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "f7bf07b9-d489-4484-acb9-175cb740dc60", + "metadata": {}, + "source": [ + "# Cifar-10 tutorial\n", + "\n", + "This notebook introduces advanced tools like MLP mixer, which involves residual connections with Lipschitz guarantees, other input space (HSB) and loss gradient clipping.\n", + "\n", + "## Imports" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "8a0eebdf-6082-4d00-aa14-b42953217a93", + "metadata": {}, + "source": [ + "The library is based on tensorflow." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "91c2965e-0375-4966-bc55-776204af9d69", + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "9356cd9b-6f79-45f1-8f2e-c46a526c4ae7", + "metadata": {}, + "source": [ + "### lip-dp dependencies\n", + "\n", + "The need a model `DP_Model` that handles the noisification of gradients. It is trained with a `loss`. The model is initialized with the convenience function `DPParameters`. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1e5d58f8-386c-44c7-8c5d-e5b69b5be231", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp import losses\n", + "from deel.lipdp.model import DP_Model\n", + "from deel.lipdp.model import DPParameters" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "3a247cd3-48d6-4854-92df-01420d3bea80", + "metadata": {}, + "source": [ + "The `DP_Accountant` callback keeps track of $(\\epsilon,\\delta)$-DP values epoch after epoch. In practice we may be interested in reaching the maximum val_accuracy under privacy constraint $\\epsilon$: the convenience function `get_max_epochs` exactly does that by performing a dichotomy search over the number of epochs." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "950c5c56-4b34-4653-aaf3-7d97acc1f5f2", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.model import DP_Accountant\n", + "from deel.lipdp.sensitivity import get_max_epochs" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "893d3078-5166-428c-9cb1-d29ec1f05d71", + "metadata": {}, + "source": [ + "The framework requires a control of the maximum norm of inputs. This can be ensured with input clipping for example: `bound_clip_value`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f395c9fc-b67d-4fd2-be4b-b1c43221ebcb", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.pipeline import bound_clip_value\n", + "from deel.lipdp.pipeline import load_and_prepare_data" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "e54a79db-24b4-4dae-b684-170fa743bc5d", + "metadata": {}, + "source": [ + "## Setup DP Lipschitz model\n", + "\n", + "Here we apply the \"global\" strategy, with a noise multiplier $2.5$. Note that for Cifar-10 the dataset size is $N=50,000$, and it is recommended that $\\delta<\\frac{1}{N}$. So we propose a value of $\\delta=10^{-5}$. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f79ea3b0-33a6-401c-a3a3-e314939fd269", + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "dp_parameters = DPParameters(\n", + " noisify_strategy=\"global\",\n", + " noise_multiplier=4.0,\n", + " delta=1e-5,\n", + ")\n", + "\n", + "epsilon_max = 10.0" + ] + }, + { + "cell_type": "markdown", + "id": "ba392eec-4451-49e5-bd45-883af7aa2d40", + "metadata": {}, + "source": [ + "With many parameters, it can be interesting to use `local` strategy over `global`, since the effective noise growths as $\\mathcal{O}(\\sqrt{(D)})$ in `global` strategy. Since the privacy leakge is more important is `local` strategy, we compensate with high `noise_multiplier`.\n", + "\n", + "![DP-SGD accountant](../assets/fig_accountant.png \"DP-SGD accountant\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "6482128c-ac2e-4cdd-9bbd-6d3172c292b1", + "metadata": {}, + "source": [ + "### Loading the data\n", + "\n", + "We clip the elementwise input upper-bound to $40.0$. The operates in `HSV` space. The train set is augmented with random left/right flips." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a8ed0fc4-4655-4bad-a6ac-8697cd5bc7a6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-05-24 17:27:24.335576: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2023-05-24 17:27:24.905888: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 47066 MB memory: -> device: 0, name: Quadro RTX 8000, pci bus id: 0000:03:00.0, compute capability: 7.5\n" + ] + } + ], + "source": [ + "def augmentation_fct(image, label):\n", + " image = tf.image.random_flip_left_right(image)\n", + " return image, label\n", + "\n", + "input_upper_bound = 30.0\n", + "ds_train, ds_test, dataset_metadata = load_and_prepare_data(\n", + " \"cifar10\",\n", + " colorspace=\"HSV\",\n", + " batch_size=10_000,\n", + " drop_remainder=True, # accounting assumes fixed batch size\n", + " augmentation_fct=augmentation_fct,\n", + " bound_fct=bound_clip_value( # other strategies are possible, like normalization.\n", + " input_upper_bound\n", + " ), # clipping preprocessing allows to control input bound\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "eb356c04-a836-4f49-93d7-7e0cc4c12b1d", + "metadata": {}, + "source": [ + "### Build the MLP Mixer model\n", + "\n", + "We imitate the interface of Keras. We use common layers found in deel-lip, which a wrapper that handles the bound propagation. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "be32d5d7-efc7-4cc6-91bc-1a2b9bedddca", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.layers import DP_AddBias\n", + "from deel.lipdp.layers import DP_BoundedInput\n", + "from deel.lipdp.layers import DP_ClipGradient\n", + "from deel.lipdp.layers import DP_Flatten\n", + "from deel.lipdp.layers import DP_GroupSort\n", + "from deel.lipdp.layers import DP_Lambda\n", + "from deel.lipdp.layers import DP_LayerCentering\n", + "from deel.lipdp.layers import DP_Permute\n", + "from deel.lipdp.layers import DP_QuickSpectralDense\n", + "from deel.lipdp.layers import DP_Reshape\n", + "from deel.lipdp.layers import DP_ScaledGlobalL2NormPooling2D\n", + "from deel.lipdp.layers import DP_ScaledL2NormPooling2D\n", + "from deel.lipdp.layers import DP_QuickSpectralConv2D" + ] + }, + { + "cell_type": "markdown", + "id": "15b21796-b8e7-41d3-8718-0efdb5d92179", + "metadata": {}, + "source": [ + "The MLP Mixer uses residual connections. Residuals connections are handled with the utility function `make_residuals` that wraps the layers inside a block that handles bounds propagation.\n", + "\n", + "![Residuals Connections](../assets/residuals.png \"Residual Connections\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0590e72d-ce2e-48c1-a8ae-e86ecd32b524", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.layers import make_residuals" + ] + }, + { + "cell_type": "markdown", + "id": "9d75f692-c66d-4318-a915-f16707ed87fa", + "metadata": {}, + "source": [ + "Now, we proceed with the creation of the environnement." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "30cf44ed-653b-4eaa-8ed9-26e4815db511", + "metadata": {}, + "outputs": [], + "source": [ + "skip_connections = False # use skip connections, like in original MLP Mixer architecture.\n", + "clip_loss_gradient = 2**0.5 # elementwise gradient is clipped to value sqrt(2) - which is the maximum for CCE loss.\n", + "add_biases = False # Add biases after linear transformations.\n", + "biases_norm_max = 0.05\n", + "hidden_size = 64\n", + "mlp_seq_dim = 64\n", + "mlp_channel_dim = 128\n", + "num_mixer_layers = 2 # Two MLP Mixer blocks.\n", + "layer_centering = False # Centering operation (like LayerNormalization without the reducing operation). Linear 1-Lipschitz.\n", + "patch_size = 4 # Number of pixels in each patch.\n", + "\n", + "def create_MLP_Mixer(dp_parameters, dataset_metadata, upper_bound):\n", + " input_shape = (32, 32, 3)\n", + " layers = [DP_BoundedInput(input_shape=input_shape, upper_bound=upper_bound)]\n", + "\n", + " layers.append(\n", + " DP_Lambda(\n", + " tf.image.extract_patches,\n", + " arguments=dict(\n", + " sizes=[1, patch_size, patch_size, 1],\n", + " strides=[1, patch_size, patch_size, 1],\n", + " rates=[1, 1, 1, 1],\n", + " padding=\"VALID\",\n", + " ),\n", + " )\n", + " )\n", + "\n", + " seq_len = (input_shape[0] // patch_size) * (input_shape[1] // patch_size)\n", + "\n", + " layers.append(DP_Reshape((seq_len, (patch_size ** 2) * input_shape[-1])))\n", + " layers.append(\n", + " DP_QuickSpectralDense(\n", + " units=hidden_size, use_bias=False, kernel_initializer=\"identity\"\n", + " )\n", + " )\n", + "\n", + " for _ in range(num_mixer_layers):\n", + " to_add = [\n", + " DP_Permute((2, 1)),\n", + " DP_QuickSpectralDense(\n", + " units=mlp_seq_dim, use_bias=False, kernel_initializer=\"identity\"\n", + " ),\n", + " ]\n", + " if add_biases:\n", + " to_add.append(DP_AddBias(biases_norm_max))\n", + " to_add.append(DP_GroupSort(2))\n", + " if layer_centering:\n", + " to_add.append(DP_LayerCentering())\n", + " to_add += [\n", + " DP_QuickSpectralDense(\n", + " units=seq_len, use_bias=False, kernel_initializer=\"identity\"\n", + " ),\n", + " DP_Permute((2, 1)),\n", + " ]\n", + "\n", + " if skip_connections:\n", + " layers += make_residuals(\"1-lip-add\", to_add)\n", + " else:\n", + " layers += to_add\n", + "\n", + " to_add = [\n", + " DP_QuickSpectralDense(\n", + " units=mlp_channel_dim, use_bias=False, kernel_initializer=\"identity\"\n", + " ),\n", + " ]\n", + " if add_biases:\n", + " to_add.append(DP_AddBias(biases_norm_max))\n", + " to_add.append(DP_GroupSort(2))\n", + " if layer_centering:\n", + " to_add.append(DP_LayerCentering())\n", + " to_add.append(\n", + " DP_QuickSpectralDense(\n", + " units=hidden_size, use_bias=False, kernel_initializer=\"identity\"\n", + " )\n", + " )\n", + "\n", + " if skip_connections:\n", + " layers += make_residuals(\"1-lip-add\", to_add)\n", + " else:\n", + " layers += to_add\n", + "\n", + " layers.append(DP_Flatten())\n", + " layers.append(\n", + " DP_QuickSpectralDense(units=10, use_bias=False, kernel_initializer=\"identity\")\n", + " )\n", + "\n", + " layers.append(DP_ClipGradient(clip_loss_gradient))\n", + "\n", + " model = DP_Model(\n", + " layers,\n", + " dp_parameters=dp_parameters,\n", + " dataset_metadata=dataset_metadata,\n", + " name=\"mlp_mixer\",\n", + " )\n", + "\n", + " model.build(input_shape=(None, *input_shape))\n", + "\n", + " return model" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "09777811", + "metadata": {}, + "source": [ + "We compile the model with:\n", + "* any first order optimizer (e.g Adam). No adaptation is needed.\n", + "* a loss with known Lipschitz constant, e.g Categorical Cross-entropy with temperature." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "efd97e75-34f0-49fa-ad2c-1816247f1611", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"mlp_mixer\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " dp__bounded_input (DP_Bound multiple 0 \n", + " edInput) \n", + " \n", + " dp__lambda (DP_Lambda) multiple 0 \n", + " \n", + " dp__reshape (DP_Reshape) multiple 0 \n", + " \n", + " dp__quick_spectral_dense (D multiple 3072 \n", + " P_QuickSpectralDense) \n", + " \n", + " dp__permute (DP_Permute) multiple 0 \n", + " \n", + " dp__quick_spectral_dense_1 multiple 4096 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__group_sort (DP_GroupSor multiple 0 \n", + " t) \n", + " \n", + " dp__quick_spectral_dense_2 multiple 4096 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__permute_1 (DP_Permute) multiple 0 \n", + " \n", + " dp__quick_spectral_dense_3 multiple 8192 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__group_sort_1 (DP_GroupS multiple 0 \n", + " ort) \n", + " \n", + " dp__quick_spectral_dense_4 multiple 8192 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__permute_2 (DP_Permute) multiple 0 \n", + " \n", + " dp__quick_spectral_dense_5 multiple 4096 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__group_sort_2 (DP_GroupS multiple 0 \n", + " ort) \n", + " \n", + " dp__quick_spectral_dense_6 multiple 4096 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__permute_3 (DP_Permute) multiple 0 \n", + " \n", + " dp__quick_spectral_dense_7 multiple 8192 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__group_sort_3 (DP_GroupS multiple 0 \n", + " ort) \n", + " \n", + " dp__quick_spectral_dense_8 multiple 8192 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__flatten (DP_Flatten) multiple 0 \n", + " \n", + " dp__quick_spectral_dense_9 multiple 40960 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__clip_gradient (DP_ClipG multiple 0 \n", + " radient) \n", + " \n", + "=================================================================\n", + "Total params: 93,184\n", + "Trainable params: 93,184\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "model = create_MLP_Mixer(dp_parameters, dataset_metadata, input_upper_bound)\n", + "model.compile(\n", + " # Compile model using DP loss\n", + " loss=losses.DP_TauCategoricalCrossentropy(256.0),\n", + " # this method is compatible with any first order optimizer\n", + " optimizer=tf.keras.optimizers.Adam(learning_rate=2e-4),\n", + " metrics=[\"accuracy\"],\n", + ")\n", + "model.summary()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "28ae2da5-ed40-4131-8721-73bbc73fa68d", + "metadata": {}, + "source": [ + "Observe that the model contains only 246K parmaeters. This is an advantage of MLP Mixer architectures: the number of parameters is small. However the number of FLOPS can be quite high. Without gradient clipping, huge batch sizes can be used, which benefits to privacy/utility ratio. \n", + "\n", + "In order to control epsilon, we compute the adequate number of epochs." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "dd611afd-be30-4bd3-b658-48d1961247aa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch bounds = (0, 512.0) and epsilon = 14.81894855578722 at epoch 512.0\n", + "epoch bounds = (256.0, 512.0) and epsilon = 9.820083418023108 at epoch 256.0\n", + "epoch bounds = (256.0, 384.0) and epsilon = 12.31951600358698 at epoch 384.0\n", + "epoch bounds = (256.0, 320.0) and epsilon = 11.069799714608529 at epoch 320.0\n", + "epoch bounds = (256.0, 288.0) and epsilon = 10.44494156631582 at epoch 288.0\n", + "epoch bounds = (256.0, 272.0) and epsilon = 10.132512492169463 at epoch 272.0\n", + "epoch bounds = (264.0, 272.0) and epsilon = 9.976297955096285 at epoch 264.0\n", + "epoch bounds = (264.0, 268.0) and epsilon = 10.054405223632873 at epoch 268.0\n", + "epoch bounds = (264.0, 266.0) and epsilon = 10.015351589364581 at epoch 266.0\n", + "epoch bounds = (265.0, 266.0) and epsilon = 9.995824772230431 at epoch 265.0\n" + ] + } + ], + "source": [ + "num_epochs = get_max_epochs(epsilon_max, model)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "53e94244", + "metadata": {}, + "source": [ + "## Train the model\n", + "\n", + "The model can be trained, and the DP Accountant will automatically track the privacy loss." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "0ddcb192-547e-400e-87bb-2d4246185c64", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.1751 - accuracy: 0.1077\n", + " (0.5205893807331654, 1e-05)-DP guarantees for epoch 1 \n", + "\n", + "5/5 [==============================] - 8s 547ms/step - loss: 0.1751 - accuracy: 0.1077 - val_loss: 0.1409 - val_accuracy: 0.1045\n", + "Epoch 2/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.1243 - accuracy: 0.1061\n", + " (0.7169615437758403, 1e-05)-DP guarantees for epoch 2 \n", + "\n", + "5/5 [==============================] - 3s 451ms/step - loss: 0.1243 - accuracy: 0.1061 - val_loss: 0.1145 - val_accuracy: 0.1055\n", + "Epoch 3/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.1124 - accuracy: 0.1170\n", + " (0.8714581783028138, 1e-05)-DP guarantees for epoch 3 \n", + "\n", + "5/5 [==============================] - 3s 386ms/step - loss: 0.1124 - accuracy: 0.1170 - val_loss: 0.1095 - val_accuracy: 0.1124\n", + "Epoch 4/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.1051 - accuracy: 0.1178\n", + " (1.0041033056975341, 1e-05)-DP guarantees for epoch 4 \n", + "\n", + "5/5 [==============================] - 3s 416ms/step - loss: 0.1051 - accuracy: 0.1178 - val_loss: 0.1019 - val_accuracy: 0.1173\n", + "Epoch 5/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0994 - accuracy: 0.1219\n", + " (1.121902451763874, 1e-05)-DP guarantees for epoch 5 \n", + "\n", + "5/5 [==============================] - 3s 404ms/step - loss: 0.0994 - accuracy: 0.1219 - val_loss: 0.0973 - val_accuracy: 0.1199\n", + "Epoch 6/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0950 - accuracy: 0.1287\n", + " (1.2297900098052366, 1e-05)-DP guarantees for epoch 6 \n", + "\n", + "5/5 [==============================] - 3s 372ms/step - loss: 0.0950 - accuracy: 0.1287 - val_loss: 0.0952 - val_accuracy: 0.1274\n", + "Epoch 7/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0927 - accuracy: 0.1332\n", + " (1.3301791512711914, 1e-05)-DP guarantees for epoch 7 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0927 - accuracy: 0.1332 - val_loss: 0.0917 - val_accuracy: 0.1319\n", + "Epoch 8/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0896 - accuracy: 0.1396\n", + " (1.425115891691246, 1e-05)-DP guarantees for epoch 8 \n", + "\n", + "5/5 [==============================] - 3s 360ms/step - loss: 0.0896 - accuracy: 0.1396 - val_loss: 0.0898 - val_accuracy: 0.1348\n", + "Epoch 9/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0878 - accuracy: 0.1423\n", + " (1.512644960027369, 1e-05)-DP guarantees for epoch 9 \n", + "\n", + "5/5 [==============================] - 2s 367ms/step - loss: 0.0878 - accuracy: 0.1423 - val_loss: 0.0876 - val_accuracy: 0.1386\n", + "Epoch 10/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0857 - accuracy: 0.1461\n", + " (1.599192443478913, 1e-05)-DP guarantees for epoch 10 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0857 - accuracy: 0.1461 - val_loss: 0.0859 - val_accuracy: 0.1469\n", + "Epoch 11/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0840 - accuracy: 0.1543\n", + " (1.6782666312983627, 1e-05)-DP guarantees for epoch 11 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0840 - accuracy: 0.1543 - val_loss: 0.0844 - val_accuracy: 0.1497\n", + "Epoch 12/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0829 - accuracy: 0.1556\n", + " (1.7566369758486253, 1e-05)-DP guarantees for epoch 12 \n", + "\n", + "5/5 [==============================] - 3s 358ms/step - loss: 0.0829 - accuracy: 0.1556 - val_loss: 0.0829 - val_accuracy: 0.1516\n", + "Epoch 13/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0816 - accuracy: 0.1578\n", + " (1.833150779023074, 1e-05)-DP guarantees for epoch 13 \n", + "\n", + "5/5 [==============================] - 3s 367ms/step - loss: 0.0816 - accuracy: 0.1578 - val_loss: 0.0819 - val_accuracy: 0.1565\n", + "Epoch 14/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0806 - accuracy: 0.1618\n", + " (1.903546174784228, 1e-05)-DP guarantees for epoch 14 \n", + "\n", + "5/5 [==============================] - 3s 370ms/step - loss: 0.0806 - accuracy: 0.1618 - val_loss: 0.0809 - val_accuracy: 0.1592\n", + "Epoch 15/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0794 - accuracy: 0.1657\n", + " (1.9739415712927695, 1e-05)-DP guarantees for epoch 15 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0794 - accuracy: 0.1657 - val_loss: 0.0799 - val_accuracy: 0.1614\n", + "Epoch 16/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0788 - accuracy: 0.1654\n", + " (2.044336966003477, 1e-05)-DP guarantees for epoch 16 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0788 - accuracy: 0.1654 - val_loss: 0.0791 - val_accuracy: 0.1642\n", + "Epoch 17/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0778 - accuracy: 0.1696\n", + " (2.111107170532668, 1e-05)-DP guarantees for epoch 17 \n", + "\n", + "5/5 [==============================] - 3s 373ms/step - loss: 0.0778 - accuracy: 0.1696 - val_loss: 0.0783 - val_accuracy: 0.1667\n", + "Epoch 18/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0773 - accuracy: 0.1720\n", + " (2.173720558035018, 1e-05)-DP guarantees for epoch 18 \n", + "\n", + "5/5 [==============================] - 3s 355ms/step - loss: 0.0773 - accuracy: 0.1720 - val_loss: 0.0775 - val_accuracy: 0.1713\n", + "Epoch 19/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0765 - accuracy: 0.1745\n", + " (2.236333946199693, 1e-05)-DP guarantees for epoch 19 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0765 - accuracy: 0.1745 - val_loss: 0.0768 - val_accuracy: 0.1718\n", + "Epoch 20/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0755 - accuracy: 0.1785\n", + " (2.298947335447459, 1e-05)-DP guarantees for epoch 20 \n", + "\n", + "5/5 [==============================] - 3s 351ms/step - loss: 0.0755 - accuracy: 0.1785 - val_loss: 0.0761 - val_accuracy: 0.1749\n", + "Epoch 21/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0751 - accuracy: 0.1809\n", + " (2.3615607218535017, 1e-05)-DP guarantees for epoch 21 \n", + "\n", + "5/5 [==============================] - 2s 370ms/step - loss: 0.0751 - accuracy: 0.1809 - val_loss: 0.0755 - val_accuracy: 0.1779\n", + "Epoch 22/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0744 - accuracy: 0.1807\n", + " (2.424031214499055, 1e-05)-DP guarantees for epoch 22 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0744 - accuracy: 0.1807 - val_loss: 0.0749 - val_accuracy: 0.1782\n", + "Epoch 23/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0737 - accuracy: 0.1829\n", + " (2.4794700865598074, 1e-05)-DP guarantees for epoch 23 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0737 - accuracy: 0.1829 - val_loss: 0.0744 - val_accuracy: 0.1796\n", + "Epoch 24/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0735 - accuracy: 0.1836\n", + " (2.5344857802909178, 1e-05)-DP guarantees for epoch 24 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0735 - accuracy: 0.1836 - val_loss: 0.0738 - val_accuracy: 0.1815\n", + "Epoch 25/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0730 - accuracy: 0.1853\n", + " (2.589501472054093, 1e-05)-DP guarantees for epoch 25 \n", + "\n", + "5/5 [==============================] - 3s 371ms/step - loss: 0.0730 - accuracy: 0.1853 - val_loss: 0.0733 - val_accuracy: 0.1836\n", + "Epoch 26/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0726 - accuracy: 0.1884\n", + " (2.6445171621630954, 1e-05)-DP guarantees for epoch 26 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0726 - accuracy: 0.1884 - val_loss: 0.0729 - val_accuracy: 0.1857\n", + "Epoch 27/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0722 - accuracy: 0.1881\n", + " (2.699532854747239, 1e-05)-DP guarantees for epoch 27 \n", + "\n", + "5/5 [==============================] - 2s 349ms/step - loss: 0.0722 - accuracy: 0.1881 - val_loss: 0.0723 - val_accuracy: 0.1882\n", + "Epoch 28/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0715 - accuracy: 0.1901\n", + " (2.754548546420506, 1e-05)-DP guarantees for epoch 28 \n", + "\n", + "5/5 [==============================] - 3s 371ms/step - loss: 0.0715 - accuracy: 0.1901 - val_loss: 0.0718 - val_accuracy: 0.1879\n", + "Epoch 29/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0711 - accuracy: 0.1928\n", + " (2.809564239271509, 1e-05)-DP guarantees for epoch 29 \n", + "\n", + "5/5 [==============================] - 3s 360ms/step - loss: 0.0711 - accuracy: 0.1928 - val_loss: 0.0715 - val_accuracy: 0.1915\n", + "Epoch 30/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0710 - accuracy: 0.1933\n", + " (2.8645799306976425, 1e-05)-DP guarantees for epoch 30 \n", + "\n", + "5/5 [==============================] - 2s 362ms/step - loss: 0.0710 - accuracy: 0.1933 - val_loss: 0.0710 - val_accuracy: 0.1922\n", + "Epoch 31/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0701 - accuracy: 0.1993\n", + " (2.915773408283026, 1e-05)-DP guarantees for epoch 31 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0701 - accuracy: 0.1993 - val_loss: 0.0706 - val_accuracy: 0.1940\n", + "Epoch 32/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0698 - accuracy: 0.1996\n", + " (2.9633676512735834, 1e-05)-DP guarantees for epoch 32 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0698 - accuracy: 0.1996 - val_loss: 0.0702 - val_accuracy: 0.1964\n", + "Epoch 33/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0695 - accuracy: 0.2004\n", + " (3.010961895901816, 1e-05)-DP guarantees for epoch 33 \n", + "\n", + "5/5 [==============================] - 3s 375ms/step - loss: 0.0695 - accuracy: 0.2004 - val_loss: 0.0699 - val_accuracy: 0.1984\n", + "Epoch 34/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0692 - accuracy: 0.1995\n", + " (3.0585561401091397, 1e-05)-DP guarantees for epoch 34 \n", + "\n", + "5/5 [==============================] - 3s 352ms/step - loss: 0.0692 - accuracy: 0.1995 - val_loss: 0.0696 - val_accuracy: 0.1975\n", + "Epoch 35/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0685 - accuracy: 0.2045\n", + " (3.1061503817189315, 1e-05)-DP guarantees for epoch 35 \n", + "\n", + "5/5 [==============================] - 3s 349ms/step - loss: 0.0685 - accuracy: 0.2045 - val_loss: 0.0692 - val_accuracy: 0.2009\n", + "Epoch 36/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0686 - accuracy: 0.2045\n", + " (3.1537446235861095, 1e-05)-DP guarantees for epoch 36 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0686 - accuracy: 0.2045 - val_loss: 0.0689 - val_accuracy: 0.2032\n", + "Epoch 37/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0684 - accuracy: 0.2033\n", + " (3.2013388677062005, 1e-05)-DP guarantees for epoch 37 \n", + "\n", + "5/5 [==============================] - 2s 349ms/step - loss: 0.0684 - accuracy: 0.2033 - val_loss: 0.0686 - val_accuracy: 0.2033\n", + "Epoch 38/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0684 - accuracy: 0.2024\n", + " (3.2489331117939875, 1e-05)-DP guarantees for epoch 38 \n", + "\n", + "5/5 [==============================] - 3s 352ms/step - loss: 0.0684 - accuracy: 0.2024 - val_loss: 0.0683 - val_accuracy: 0.2046\n", + "Epoch 39/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0675 - accuracy: 0.2064\n", + " (3.296527354122463, 1e-05)-DP guarantees for epoch 39 \n", + "\n", + "5/5 [==============================] - 3s 390ms/step - loss: 0.0675 - accuracy: 0.2064 - val_loss: 0.0681 - val_accuracy: 0.2055\n", + "Epoch 40/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0678 - accuracy: 0.2071\n", + " (3.3441215974412257, 1e-05)-DP guarantees for epoch 40 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0678 - accuracy: 0.2071 - val_loss: 0.0679 - val_accuracy: 0.2061\n", + "Epoch 41/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0670 - accuracy: 0.2076\n", + " (3.391715841019588, 1e-05)-DP guarantees for epoch 41 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0670 - accuracy: 0.2076 - val_loss: 0.0676 - val_accuracy: 0.2047\n", + "Epoch 42/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0670 - accuracy: 0.2074\n", + " (3.4393100820764655, 1e-05)-DP guarantees for epoch 42 \n", + "\n", + "5/5 [==============================] - 3s 362ms/step - loss: 0.0670 - accuracy: 0.2074 - val_loss: 0.0673 - val_accuracy: 0.2077\n", + "Epoch 43/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0668 - accuracy: 0.2091\n", + " (3.4869043257012042, 1e-05)-DP guarantees for epoch 43 \n", + "\n", + "5/5 [==============================] - 3s 365ms/step - loss: 0.0668 - accuracy: 0.2091 - val_loss: 0.0671 - val_accuracy: 0.2098\n", + "Epoch 44/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0664 - accuracy: 0.2133\n", + " (3.5344943006583662, 1e-05)-DP guarantees for epoch 44 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0664 - accuracy: 0.2133 - val_loss: 0.0668 - val_accuracy: 0.2111\n", + "Epoch 45/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0662 - accuracy: 0.2116\n", + " (3.577278802435221, 1e-05)-DP guarantees for epoch 45 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0662 - accuracy: 0.2116 - val_loss: 0.0666 - val_accuracy: 0.2110\n", + "Epoch 46/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0658 - accuracy: 0.2144\n", + " (3.6176202954309518, 1e-05)-DP guarantees for epoch 46 \n", + "\n", + "5/5 [==============================] - 3s 363ms/step - loss: 0.0658 - accuracy: 0.2144 - val_loss: 0.0663 - val_accuracy: 0.2136\n", + "Epoch 47/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0660 - accuracy: 0.2136\n", + " (3.6579617884266824, 1e-05)-DP guarantees for epoch 47 \n", + "\n", + "5/5 [==============================] - 3s 361ms/step - loss: 0.0660 - accuracy: 0.2136 - val_loss: 0.0662 - val_accuracy: 0.2103\n", + "Epoch 48/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0658 - accuracy: 0.2124\n", + " (3.698303280878773, 1e-05)-DP guarantees for epoch 48 \n", + "\n", + "5/5 [==============================] - 3s 378ms/step - loss: 0.0658 - accuracy: 0.2124 - val_loss: 0.0660 - val_accuracy: 0.2126\n", + "Epoch 49/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0651 - accuracy: 0.2170\n", + " (3.7386447748463074, 1e-05)-DP guarantees for epoch 49 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0651 - accuracy: 0.2170 - val_loss: 0.0658 - val_accuracy: 0.2141\n", + "Epoch 50/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0650 - accuracy: 0.2147\n", + " (3.778986264959221, 1e-05)-DP guarantees for epoch 50 \n", + "\n", + "5/5 [==============================] - 2s 359ms/step - loss: 0.0650 - accuracy: 0.2147 - val_loss: 0.0657 - val_accuracy: 0.2139\n", + "Epoch 51/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0649 - accuracy: 0.2157\n", + " (3.819327759198358, 1e-05)-DP guarantees for epoch 51 \n", + "\n", + "5/5 [==============================] - 3s 362ms/step - loss: 0.0649 - accuracy: 0.2157 - val_loss: 0.0654 - val_accuracy: 0.2154\n", + "Epoch 52/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0646 - accuracy: 0.2177\n", + " (3.859669252353283, 1e-05)-DP guarantees for epoch 52 \n", + "\n", + "5/5 [==============================] - 3s 374ms/step - loss: 0.0646 - accuracy: 0.2177 - val_loss: 0.0652 - val_accuracy: 0.2159\n", + "Epoch 53/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0647 - accuracy: 0.2164\n", + " (3.900010744909916, 1e-05)-DP guarantees for epoch 53 \n", + "\n", + "5/5 [==============================] - 3s 398ms/step - loss: 0.0647 - accuracy: 0.2164 - val_loss: 0.0651 - val_accuracy: 0.2139\n", + "Epoch 54/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0642 - accuracy: 0.2180\n", + " (3.9403522382284417, 1e-05)-DP guarantees for epoch 54 \n", + "\n", + "5/5 [==============================] - 2s 356ms/step - loss: 0.0642 - accuracy: 0.2180 - val_loss: 0.0649 - val_accuracy: 0.2165\n", + "Epoch 55/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0643 - accuracy: 0.2178\n", + " (3.9806937272852823, 1e-05)-DP guarantees for epoch 55 \n", + "\n", + "5/5 [==============================] - 3s 385ms/step - loss: 0.0643 - accuracy: 0.2178 - val_loss: 0.0648 - val_accuracy: 0.2190\n", + "Epoch 56/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0642 - accuracy: 0.2194\n", + " (4.021035219696142, 1e-05)-DP guarantees for epoch 56 \n", + "\n", + "5/5 [==============================] - 3s 358ms/step - loss: 0.0642 - accuracy: 0.2194 - val_loss: 0.0646 - val_accuracy: 0.2190\n", + "Epoch 57/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0641 - accuracy: 0.2193\n", + " (4.061376713362479, 1e-05)-DP guarantees for epoch 57 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0641 - accuracy: 0.2193 - val_loss: 0.0644 - val_accuracy: 0.2188\n", + "Epoch 58/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0637 - accuracy: 0.2209\n", + " (4.101718205195644, 1e-05)-DP guarantees for epoch 58 \n", + "\n", + "5/5 [==============================] - 3s 389ms/step - loss: 0.0637 - accuracy: 0.2209 - val_loss: 0.0643 - val_accuracy: 0.2203\n", + "Epoch 59/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0636 - accuracy: 0.2207\n", + " (4.142059698567775, 1e-05)-DP guarantees for epoch 59 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0636 - accuracy: 0.2207 - val_loss: 0.0641 - val_accuracy: 0.2217\n", + "Epoch 60/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0631 - accuracy: 0.2238\n", + " (4.182401188996273, 1e-05)-DP guarantees for epoch 60 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0631 - accuracy: 0.2238 - val_loss: 0.0639 - val_accuracy: 0.2218\n", + "Epoch 61/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0635 - accuracy: 0.2223\n", + " (4.222742681534986, 1e-05)-DP guarantees for epoch 61 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0635 - accuracy: 0.2223 - val_loss: 0.0638 - val_accuracy: 0.2214\n", + "Epoch 62/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0628 - accuracy: 0.2212\n", + " (4.263084178169554, 1e-05)-DP guarantees for epoch 62 \n", + "\n", + "5/5 [==============================] - 3s 358ms/step - loss: 0.0628 - accuracy: 0.2212 - val_loss: 0.0637 - val_accuracy: 0.2214\n", + "Epoch 63/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0629 - accuracy: 0.2236\n", + " (4.303425669322495, 1e-05)-DP guarantees for epoch 63 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0629 - accuracy: 0.2236 - val_loss: 0.0635 - val_accuracy: 0.2238\n", + "Epoch 64/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0628 - accuracy: 0.2244\n", + " (4.343767159305043, 1e-05)-DP guarantees for epoch 64 \n", + "\n", + "5/5 [==============================] - 2s 357ms/step - loss: 0.0628 - accuracy: 0.2244 - val_loss: 0.0633 - val_accuracy: 0.2229\n", + "Epoch 65/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0627 - accuracy: 0.2242\n", + " (4.384108652677016, 1e-05)-DP guarantees for epoch 65 \n", + "\n", + "5/5 [==============================] - 3s 375ms/step - loss: 0.0627 - accuracy: 0.2242 - val_loss: 0.0632 - val_accuracy: 0.2232\n", + "Epoch 66/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0625 - accuracy: 0.2260\n", + " (4.42445014497077, 1e-05)-DP guarantees for epoch 66 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0625 - accuracy: 0.2260 - val_loss: 0.0630 - val_accuracy: 0.2248\n", + "Epoch 67/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0625 - accuracy: 0.2271\n", + " (4.4647916365799585, 1e-05)-DP guarantees for epoch 67 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0625 - accuracy: 0.2271 - val_loss: 0.0628 - val_accuracy: 0.2265\n", + "Epoch 68/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0622 - accuracy: 0.2292\n", + " (4.505133128586104, 1e-05)-DP guarantees for epoch 68 \n", + "\n", + "5/5 [==============================] - 3s 365ms/step - loss: 0.0622 - accuracy: 0.2292 - val_loss: 0.0626 - val_accuracy: 0.2242\n", + "Epoch 69/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0623 - accuracy: 0.2276\n", + " (4.544958472325187, 1e-05)-DP guarantees for epoch 69 \n", + "\n", + "5/5 [==============================] - 2s 359ms/step - loss: 0.0623 - accuracy: 0.2276 - val_loss: 0.0626 - val_accuracy: 0.2254\n", + "Epoch 70/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0619 - accuracy: 0.2288\n", + " (4.580253889044595, 1e-05)-DP guarantees for epoch 70 \n", + "\n", + "5/5 [==============================] - 2s 362ms/step - loss: 0.0619 - accuracy: 0.2288 - val_loss: 0.0624 - val_accuracy: 0.2272\n", + "Epoch 71/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0619 - accuracy: 0.2288\n", + " (4.613504255128257, 1e-05)-DP guarantees for epoch 71 \n", + "\n", + "5/5 [==============================] - 2s 356ms/step - loss: 0.0619 - accuracy: 0.2288 - val_loss: 0.0623 - val_accuracy: 0.2258\n", + "Epoch 72/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0617 - accuracy: 0.2283\n", + " (4.646754619793705, 1e-05)-DP guarantees for epoch 72 \n", + "\n", + "5/5 [==============================] - 3s 379ms/step - loss: 0.0617 - accuracy: 0.2283 - val_loss: 0.0622 - val_accuracy: 0.2262\n", + "Epoch 73/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0615 - accuracy: 0.2309\n", + " (4.680004986868141, 1e-05)-DP guarantees for epoch 73 \n", + "\n", + "5/5 [==============================] - 3s 363ms/step - loss: 0.0615 - accuracy: 0.2309 - val_loss: 0.0621 - val_accuracy: 0.2292\n", + "Epoch 74/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0614 - accuracy: 0.2298\n", + " (4.713255352027643, 1e-05)-DP guarantees for epoch 74 \n", + "\n", + "5/5 [==============================] - 3s 392ms/step - loss: 0.0614 - accuracy: 0.2298 - val_loss: 0.0619 - val_accuracy: 0.2273\n", + "Epoch 75/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0616 - accuracy: 0.2288\n", + " (4.746505714565027, 1e-05)-DP guarantees for epoch 75 \n", + "\n", + "5/5 [==============================] - 2s 346ms/step - loss: 0.0616 - accuracy: 0.2288 - val_loss: 0.0618 - val_accuracy: 0.2283\n", + "Epoch 76/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0613 - accuracy: 0.2314\n", + " (4.779756080992392, 1e-05)-DP guarantees for epoch 76 \n", + "\n", + "5/5 [==============================] - 3s 375ms/step - loss: 0.0613 - accuracy: 0.2314 - val_loss: 0.0617 - val_accuracy: 0.2285\n", + "Epoch 77/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0611 - accuracy: 0.2321\n", + " (4.813006446042454, 1e-05)-DP guarantees for epoch 77 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0611 - accuracy: 0.2321 - val_loss: 0.0615 - val_accuracy: 0.2279\n", + "Epoch 78/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0609 - accuracy: 0.2321\n", + " (4.84625681135709, 1e-05)-DP guarantees for epoch 78 \n", + "\n", + "5/5 [==============================] - 2s 366ms/step - loss: 0.0609 - accuracy: 0.2321 - val_loss: 0.0614 - val_accuracy: 0.2309\n", + "Epoch 79/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0608 - accuracy: 0.2326\n", + " (4.879507178851574, 1e-05)-DP guarantees for epoch 79 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0608 - accuracy: 0.2326 - val_loss: 0.0613 - val_accuracy: 0.2316\n", + "Epoch 80/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0608 - accuracy: 0.2311\n", + " (4.912757545677179, 1e-05)-DP guarantees for epoch 80 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0608 - accuracy: 0.2311 - val_loss: 0.0612 - val_accuracy: 0.2311\n", + "Epoch 81/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0607 - accuracy: 0.2333\n", + " (4.9460079085624, 1e-05)-DP guarantees for epoch 81 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0607 - accuracy: 0.2333 - val_loss: 0.0611 - val_accuracy: 0.2317\n", + "Epoch 82/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0607 - accuracy: 0.2341\n", + " (4.979258270989774, 1e-05)-DP guarantees for epoch 82 \n", + "\n", + "5/5 [==============================] - 2s 339ms/step - loss: 0.0607 - accuracy: 0.2341 - val_loss: 0.0610 - val_accuracy: 0.2338\n", + "Epoch 83/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0604 - accuracy: 0.2339\n", + " (5.012508634818511, 1e-05)-DP guarantees for epoch 83 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0604 - accuracy: 0.2339 - val_loss: 0.0609 - val_accuracy: 0.2318\n", + "Epoch 84/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0605 - accuracy: 0.2348\n", + " (5.045759003430268, 1e-05)-DP guarantees for epoch 84 \n", + "\n", + "5/5 [==============================] - 3s 360ms/step - loss: 0.0605 - accuracy: 0.2348 - val_loss: 0.0608 - val_accuracy: 0.2312\n", + "Epoch 85/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0603 - accuracy: 0.2332\n", + " (5.0790093680054635, 1e-05)-DP guarantees for epoch 85 \n", + "\n", + "5/5 [==============================] - 3s 348ms/step - loss: 0.0603 - accuracy: 0.2332 - val_loss: 0.0607 - val_accuracy: 0.2326\n", + "Epoch 86/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0600 - accuracy: 0.2355\n", + " (5.112259736439092, 1e-05)-DP guarantees for epoch 86 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0600 - accuracy: 0.2355 - val_loss: 0.0606 - val_accuracy: 0.2333\n", + "Epoch 87/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0600 - accuracy: 0.2357\n", + " (5.14551009793596, 1e-05)-DP guarantees for epoch 87 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0600 - accuracy: 0.2357 - val_loss: 0.0604 - val_accuracy: 0.2335\n", + "Epoch 88/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0598 - accuracy: 0.2397\n", + " (5.178760460033292, 1e-05)-DP guarantees for epoch 88 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0598 - accuracy: 0.2397 - val_loss: 0.0603 - val_accuracy: 0.2327\n", + "Epoch 89/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0596 - accuracy: 0.2377\n", + " (5.212010824793953, 1e-05)-DP guarantees for epoch 89 \n", + "\n", + "5/5 [==============================] - 2s 345ms/step - loss: 0.0596 - accuracy: 0.2377 - val_loss: 0.0602 - val_accuracy: 0.2333\n", + "Epoch 90/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0597 - accuracy: 0.2372\n", + " (5.24526119058743, 1e-05)-DP guarantees for epoch 90 \n", + "\n", + "5/5 [==============================] - 2s 356ms/step - loss: 0.0597 - accuracy: 0.2372 - val_loss: 0.0601 - val_accuracy: 0.2336\n", + "Epoch 91/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0595 - accuracy: 0.2367\n", + " (5.278511560314511, 1e-05)-DP guarantees for epoch 91 \n", + "\n", + "5/5 [==============================] - 2s 361ms/step - loss: 0.0595 - accuracy: 0.2367 - val_loss: 0.0600 - val_accuracy: 0.2331\n", + "Epoch 92/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0598 - accuracy: 0.2373\n", + " (5.311761920262455, 1e-05)-DP guarantees for epoch 92 \n", + "\n", + "5/5 [==============================] - 3s 355ms/step - loss: 0.0598 - accuracy: 0.2373 - val_loss: 0.0599 - val_accuracy: 0.2358\n", + "Epoch 93/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0594 - accuracy: 0.2368\n", + " (5.3450122912656255, 1e-05)-DP guarantees for epoch 93 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0594 - accuracy: 0.2368 - val_loss: 0.0598 - val_accuracy: 0.2346\n", + "Epoch 94/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0592 - accuracy: 0.2380\n", + " (5.37826264973137, 1e-05)-DP guarantees for epoch 94 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0592 - accuracy: 0.2380 - val_loss: 0.0597 - val_accuracy: 0.2347\n", + "Epoch 95/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0593 - accuracy: 0.2357\n", + " (5.4115130208687106, 1e-05)-DP guarantees for epoch 95 \n", + "\n", + "5/5 [==============================] - 2s 360ms/step - loss: 0.0593 - accuracy: 0.2357 - val_loss: 0.0596 - val_accuracy: 0.2348\n", + "Epoch 96/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0594 - accuracy: 0.2376\n", + " (5.444763387799843, 1e-05)-DP guarantees for epoch 96 \n", + "\n", + "5/5 [==============================] - 2s 349ms/step - loss: 0.0594 - accuracy: 0.2376 - val_loss: 0.0595 - val_accuracy: 0.2362\n", + "Epoch 97/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0589 - accuracy: 0.2411\n", + " (5.47801375480832, 1e-05)-DP guarantees for epoch 97 \n", + "\n", + "5/5 [==============================] - 2s 363ms/step - loss: 0.0589 - accuracy: 0.2411 - val_loss: 0.0594 - val_accuracy: 0.2375\n", + "Epoch 98/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0590 - accuracy: 0.2404\n", + " (5.511264111964721, 1e-05)-DP guarantees for epoch 98 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0590 - accuracy: 0.2404 - val_loss: 0.0593 - val_accuracy: 0.2377\n", + "Epoch 99/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0586 - accuracy: 0.2406\n", + " (5.544514479570887, 1e-05)-DP guarantees for epoch 99 \n", + "\n", + "5/5 [==============================] - 2s 347ms/step - loss: 0.0586 - accuracy: 0.2406 - val_loss: 0.0593 - val_accuracy: 0.2389\n", + "Epoch 100/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0587 - accuracy: 0.2436\n", + " (5.5777648468507035, 1e-05)-DP guarantees for epoch 100 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0587 - accuracy: 0.2436 - val_loss: 0.0592 - val_accuracy: 0.2383\n", + "Epoch 101/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0586 - accuracy: 0.2405\n", + " (5.611015209476669, 1e-05)-DP guarantees for epoch 101 \n", + "\n", + "5/5 [==============================] - 3s 362ms/step - loss: 0.0586 - accuracy: 0.2405 - val_loss: 0.0590 - val_accuracy: 0.2382\n", + "Epoch 102/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0586 - accuracy: 0.2409\n", + " (5.644265572603777, 1e-05)-DP guarantees for epoch 102 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0586 - accuracy: 0.2409 - val_loss: 0.0589 - val_accuracy: 0.2376\n", + "Epoch 103/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0584 - accuracy: 0.2425\n", + " (5.67751593629532, 1e-05)-DP guarantees for epoch 103 \n", + "\n", + "5/5 [==============================] - 3s 366ms/step - loss: 0.0584 - accuracy: 0.2425 - val_loss: 0.0588 - val_accuracy: 0.2397\n", + "Epoch 104/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0583 - accuracy: 0.2422\n", + " (5.710766303023046, 1e-05)-DP guarantees for epoch 104 \n", + "\n", + "5/5 [==============================] - 3s 370ms/step - loss: 0.0583 - accuracy: 0.2422 - val_loss: 0.0587 - val_accuracy: 0.2384\n", + "Epoch 105/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0582 - accuracy: 0.2425\n", + " (5.7440166690784755, 1e-05)-DP guarantees for epoch 105 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0582 - accuracy: 0.2425 - val_loss: 0.0586 - val_accuracy: 0.2383\n", + "Epoch 106/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0583 - accuracy: 0.2411\n", + " (5.777267031618594, 1e-05)-DP guarantees for epoch 106 \n", + "\n", + "5/5 [==============================] - 2s 345ms/step - loss: 0.0583 - accuracy: 0.2411 - val_loss: 0.0586 - val_accuracy: 0.2387\n", + "Epoch 107/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0578 - accuracy: 0.2438\n", + " (5.8105173958576675, 1e-05)-DP guarantees for epoch 107 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0578 - accuracy: 0.2438 - val_loss: 0.0585 - val_accuracy: 0.2409\n", + "Epoch 108/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0582 - accuracy: 0.2442\n", + " (5.843767765269359, 1e-05)-DP guarantees for epoch 108 \n", + "\n", + "5/5 [==============================] - 2s 359ms/step - loss: 0.0582 - accuracy: 0.2442 - val_loss: 0.0584 - val_accuracy: 0.2440\n", + "Epoch 109/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0578 - accuracy: 0.2456\n", + " (5.877018127929281, 1e-05)-DP guarantees for epoch 109 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0578 - accuracy: 0.2456 - val_loss: 0.0584 - val_accuracy: 0.2419\n", + "Epoch 110/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0580 - accuracy: 0.2440\n", + " (5.910268490844311, 1e-05)-DP guarantees for epoch 110 \n", + "\n", + "5/5 [==============================] - 2s 362ms/step - loss: 0.0580 - accuracy: 0.2440 - val_loss: 0.0583 - val_accuracy: 0.2429\n", + "Epoch 111/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0578 - accuracy: 0.2473\n", + " (5.943518855328065, 1e-05)-DP guarantees for epoch 111 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0578 - accuracy: 0.2473 - val_loss: 0.0583 - val_accuracy: 0.2448\n", + "Epoch 112/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0577 - accuracy: 0.2469\n", + " (5.9767692222925275, 1e-05)-DP guarantees for epoch 112 \n", + "\n", + "5/5 [==============================] - 3s 348ms/step - loss: 0.0577 - accuracy: 0.2469 - val_loss: 0.0582 - val_accuracy: 0.2447\n", + "Epoch 113/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0579 - accuracy: 0.2479\n", + " (6.0100195891034165, 1e-05)-DP guarantees for epoch 113 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0579 - accuracy: 0.2479 - val_loss: 0.0581 - val_accuracy: 0.2453\n", + "Epoch 114/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0576 - accuracy: 0.2468\n", + " (6.043269950764723, 1e-05)-DP guarantees for epoch 114 \n", + "\n", + "5/5 [==============================] - 3s 361ms/step - loss: 0.0576 - accuracy: 0.2468 - val_loss: 0.0580 - val_accuracy: 0.2432\n", + "Epoch 115/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0574 - accuracy: 0.2472\n", + " (6.076520315246205, 1e-05)-DP guarantees for epoch 115 \n", + "\n", + "5/5 [==============================] - 2s 357ms/step - loss: 0.0574 - accuracy: 0.2472 - val_loss: 0.0579 - val_accuracy: 0.2441\n", + "Epoch 116/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0573 - accuracy: 0.2476\n", + " (6.109770681686705, 1e-05)-DP guarantees for epoch 116 \n", + "\n", + "5/5 [==============================] - 2s 363ms/step - loss: 0.0573 - accuracy: 0.2476 - val_loss: 0.0579 - val_accuracy: 0.2440\n", + "Epoch 117/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0575 - accuracy: 0.2470\n", + " (6.143021045607053, 1e-05)-DP guarantees for epoch 117 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0575 - accuracy: 0.2470 - val_loss: 0.0578 - val_accuracy: 0.2479\n", + "Epoch 118/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0572 - accuracy: 0.2481\n", + " (6.1762714106501475, 1e-05)-DP guarantees for epoch 118 \n", + "\n", + "5/5 [==============================] - 3s 360ms/step - loss: 0.0572 - accuracy: 0.2481 - val_loss: 0.0576 - val_accuracy: 0.2450\n", + "Epoch 119/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0572 - accuracy: 0.2500\n", + " (6.209521499901805, 1e-05)-DP guarantees for epoch 119 \n", + "\n", + "5/5 [==============================] - 3s 367ms/step - loss: 0.0572 - accuracy: 0.2500 - val_loss: 0.0576 - val_accuracy: 0.2446\n", + "Epoch 120/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0569 - accuracy: 0.2497\n", + " (6.241605627485653, 1e-05)-DP guarantees for epoch 120 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0569 - accuracy: 0.2497 - val_loss: 0.0575 - val_accuracy: 0.2451\n", + "Epoch 121/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0569 - accuracy: 0.2510\n", + " (6.271221812058615, 1e-05)-DP guarantees for epoch 121 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0569 - accuracy: 0.2510 - val_loss: 0.0574 - val_accuracy: 0.2445\n", + "Epoch 122/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0571 - accuracy: 0.2481\n", + " (6.298196491974402, 1e-05)-DP guarantees for epoch 122 \n", + "\n", + "5/5 [==============================] - 2s 359ms/step - loss: 0.0571 - accuracy: 0.2481 - val_loss: 0.0574 - val_accuracy: 0.2447\n", + "Epoch 123/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0568 - accuracy: 0.2517\n", + " (6.324510712314491, 1e-05)-DP guarantees for epoch 123 \n", + "\n", + "5/5 [==============================] - 2s 345ms/step - loss: 0.0568 - accuracy: 0.2517 - val_loss: 0.0573 - val_accuracy: 0.2481\n", + "Epoch 124/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0570 - accuracy: 0.2505\n", + " (6.350824932887864, 1e-05)-DP guarantees for epoch 124 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0570 - accuracy: 0.2505 - val_loss: 0.0573 - val_accuracy: 0.2449\n", + "Epoch 125/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0567 - accuracy: 0.2489\n", + " (6.377139153079873, 1e-05)-DP guarantees for epoch 125 \n", + "\n", + "5/5 [==============================] - 2s 368ms/step - loss: 0.0567 - accuracy: 0.2489 - val_loss: 0.0572 - val_accuracy: 0.2450\n", + "Epoch 126/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0570 - accuracy: 0.2488\n", + " (6.403453374888347, 1e-05)-DP guarantees for epoch 126 \n", + "\n", + "5/5 [==============================] - 3s 349ms/step - loss: 0.0570 - accuracy: 0.2488 - val_loss: 0.0572 - val_accuracy: 0.2485\n", + "Epoch 127/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0566 - accuracy: 0.2539\n", + " (6.429767596763488, 1e-05)-DP guarantees for epoch 127 \n", + "\n", + "5/5 [==============================] - 3s 391ms/step - loss: 0.0566 - accuracy: 0.2539 - val_loss: 0.0571 - val_accuracy: 0.2452\n", + "Epoch 128/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0565 - accuracy: 0.2505\n", + " (6.4560818158974875, 1e-05)-DP guarantees for epoch 128 \n", + "\n", + "5/5 [==============================] - 3s 367ms/step - loss: 0.0565 - accuracy: 0.2505 - val_loss: 0.0570 - val_accuracy: 0.2466\n", + "Epoch 129/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0566 - accuracy: 0.2522\n", + " (6.482396036898421, 1e-05)-DP guarantees for epoch 129 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0566 - accuracy: 0.2522 - val_loss: 0.0570 - val_accuracy: 0.2461\n", + "Epoch 130/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0561 - accuracy: 0.2521\n", + " (6.5087102545452, 1e-05)-DP guarantees for epoch 130 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0561 - accuracy: 0.2521 - val_loss: 0.0569 - val_accuracy: 0.2468\n", + "Epoch 131/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0562 - accuracy: 0.2534\n", + " (6.53502447810436, 1e-05)-DP guarantees for epoch 131 \n", + "\n", + "5/5 [==============================] - 2s 374ms/step - loss: 0.0562 - accuracy: 0.2534 - val_loss: 0.0569 - val_accuracy: 0.2470\n", + "Epoch 132/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0563 - accuracy: 0.2530\n", + " (6.5613386977335715, 1e-05)-DP guarantees for epoch 132 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0563 - accuracy: 0.2530 - val_loss: 0.0568 - val_accuracy: 0.2501\n", + "Epoch 133/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0561 - accuracy: 0.2564\n", + " (6.587652915827986, 1e-05)-DP guarantees for epoch 133 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0561 - accuracy: 0.2564 - val_loss: 0.0569 - val_accuracy: 0.2470\n", + "Epoch 134/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0561 - accuracy: 0.2555\n", + " (6.613967135260202, 1e-05)-DP guarantees for epoch 134 \n", + "\n", + "5/5 [==============================] - 3s 402ms/step - loss: 0.0561 - accuracy: 0.2555 - val_loss: 0.0568 - val_accuracy: 0.2492\n", + "Epoch 135/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0564 - accuracy: 0.2535\n", + " (6.6402813578423405, 1e-05)-DP guarantees for epoch 135 \n", + "\n", + "5/5 [==============================] - 2s 347ms/step - loss: 0.0564 - accuracy: 0.2535 - val_loss: 0.0567 - val_accuracy: 0.2499\n", + "Epoch 136/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0559 - accuracy: 0.2552\n", + " (6.666595582737012, 1e-05)-DP guarantees for epoch 136 \n", + "\n", + "5/5 [==============================] - 2s 360ms/step - loss: 0.0559 - accuracy: 0.2552 - val_loss: 0.0567 - val_accuracy: 0.2506\n", + "Epoch 137/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0560 - accuracy: 0.2562\n", + " (6.692909796982604, 1e-05)-DP guarantees for epoch 137 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0560 - accuracy: 0.2562 - val_loss: 0.0566 - val_accuracy: 0.2484\n", + "Epoch 138/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0560 - accuracy: 0.2538\n", + " (6.719224016310403, 1e-05)-DP guarantees for epoch 138 \n", + "\n", + "5/5 [==============================] - 2s 349ms/step - loss: 0.0560 - accuracy: 0.2538 - val_loss: 0.0565 - val_accuracy: 0.2471\n", + "Epoch 139/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0560 - accuracy: 0.2526\n", + " (6.74553823900151, 1e-05)-DP guarantees for epoch 139 \n", + "\n", + "5/5 [==============================] - 3s 399ms/step - loss: 0.0560 - accuracy: 0.2526 - val_loss: 0.0565 - val_accuracy: 0.2509\n", + "Epoch 140/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0560 - accuracy: 0.2536\n", + " (6.771852459824933, 1e-05)-DP guarantees for epoch 140 \n", + "\n", + "5/5 [==============================] - 3s 493ms/step - loss: 0.0560 - accuracy: 0.2536 - val_loss: 0.0564 - val_accuracy: 0.2493\n", + "Epoch 141/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0557 - accuracy: 0.2555\n", + " (6.798166680154963, 1e-05)-DP guarantees for epoch 141 \n", + "\n", + "5/5 [==============================] - 3s 391ms/step - loss: 0.0557 - accuracy: 0.2555 - val_loss: 0.0563 - val_accuracy: 0.2511\n", + "Epoch 142/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0559 - accuracy: 0.2541\n", + " (6.824480898392123, 1e-05)-DP guarantees for epoch 142 \n", + "\n", + "5/5 [==============================] - 3s 443ms/step - loss: 0.0559 - accuracy: 0.2541 - val_loss: 0.0563 - val_accuracy: 0.2484\n", + "Epoch 143/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0560 - accuracy: 0.2547\n", + " (6.850795124433479, 1e-05)-DP guarantees for epoch 143 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0560 - accuracy: 0.2547 - val_loss: 0.0563 - val_accuracy: 0.2487\n", + "Epoch 144/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0556 - accuracy: 0.2545\n", + " (6.877109344205954, 1e-05)-DP guarantees for epoch 144 \n", + "\n", + "5/5 [==============================] - 3s 374ms/step - loss: 0.0556 - accuracy: 0.2545 - val_loss: 0.0562 - val_accuracy: 0.2487\n", + "Epoch 145/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0555 - accuracy: 0.2569\n", + " (6.903423558068683, 1e-05)-DP guarantees for epoch 145 \n", + "\n", + "5/5 [==============================] - 3s 378ms/step - loss: 0.0555 - accuracy: 0.2569 - val_loss: 0.0562 - val_accuracy: 0.2508\n", + "Epoch 146/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0558 - accuracy: 0.2560\n", + " (6.929737777126363, 1e-05)-DP guarantees for epoch 146 \n", + "\n", + "5/5 [==============================] - 3s 387ms/step - loss: 0.0558 - accuracy: 0.2560 - val_loss: 0.0561 - val_accuracy: 0.2504\n", + "Epoch 147/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0557 - accuracy: 0.2556\n", + " (6.956052008535497, 1e-05)-DP guarantees for epoch 147 \n", + "\n", + "5/5 [==============================] - 3s 372ms/step - loss: 0.0557 - accuracy: 0.2556 - val_loss: 0.0561 - val_accuracy: 0.2509\n", + "Epoch 148/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0557 - accuracy: 0.2538\n", + " (6.982366223228706, 1e-05)-DP guarantees for epoch 148 \n", + "\n", + "5/5 [==============================] - 3s 381ms/step - loss: 0.0557 - accuracy: 0.2538 - val_loss: 0.0561 - val_accuracy: 0.2528\n", + "Epoch 149/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0553 - accuracy: 0.2580\n", + " (7.0086804403647855, 1e-05)-DP guarantees for epoch 149 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0553 - accuracy: 0.2580 - val_loss: 0.0560 - val_accuracy: 0.2530\n", + "Epoch 150/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0549 - accuracy: 0.2595\n", + " (7.034994664689931, 1e-05)-DP guarantees for epoch 150 \n", + "\n", + "5/5 [==============================] - 3s 361ms/step - loss: 0.0549 - accuracy: 0.2595 - val_loss: 0.0560 - val_accuracy: 0.2519\n", + "Epoch 151/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0554 - accuracy: 0.2585\n", + " (7.061308885525292, 1e-05)-DP guarantees for epoch 151 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0554 - accuracy: 0.2585 - val_loss: 0.0559 - val_accuracy: 0.2531\n", + "Epoch 152/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0554 - accuracy: 0.2580\n", + " (7.087623106633284, 1e-05)-DP guarantees for epoch 152 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0554 - accuracy: 0.2580 - val_loss: 0.0558 - val_accuracy: 0.2543\n", + "Epoch 153/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0553 - accuracy: 0.2585\n", + " (7.113937323136563, 1e-05)-DP guarantees for epoch 153 \n", + "\n", + "5/5 [==============================] - 3s 365ms/step - loss: 0.0553 - accuracy: 0.2585 - val_loss: 0.0558 - val_accuracy: 0.2537\n", + "Epoch 154/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0551 - accuracy: 0.2595\n", + " (7.140251544398778, 1e-05)-DP guarantees for epoch 154 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0551 - accuracy: 0.2595 - val_loss: 0.0558 - val_accuracy: 0.2551\n", + "Epoch 155/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0550 - accuracy: 0.2600\n", + " (7.166565767658498, 1e-05)-DP guarantees for epoch 155 \n", + "\n", + "5/5 [==============================] - 3s 355ms/step - loss: 0.0550 - accuracy: 0.2600 - val_loss: 0.0557 - val_accuracy: 0.2569\n", + "Epoch 156/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0553 - accuracy: 0.2561\n", + " (7.192879981310637, 1e-05)-DP guarantees for epoch 156 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0553 - accuracy: 0.2561 - val_loss: 0.0556 - val_accuracy: 0.2545\n", + "Epoch 157/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0550 - accuracy: 0.2581\n", + " (7.2191942080187195, 1e-05)-DP guarantees for epoch 157 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0550 - accuracy: 0.2581 - val_loss: 0.0556 - val_accuracy: 0.2566\n", + "Epoch 158/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0550 - accuracy: 0.2601\n", + " (7.245508431022666, 1e-05)-DP guarantees for epoch 158 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0550 - accuracy: 0.2601 - val_loss: 0.0556 - val_accuracy: 0.2574\n", + "Epoch 159/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0548 - accuracy: 0.2599\n", + " (7.27182264840541, 1e-05)-DP guarantees for epoch 159 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0548 - accuracy: 0.2599 - val_loss: 0.0555 - val_accuracy: 0.2567\n", + "Epoch 160/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0548 - accuracy: 0.2616\n", + " (7.298136867745498, 1e-05)-DP guarantees for epoch 160 \n", + "\n", + "5/5 [==============================] - 2s 367ms/step - loss: 0.0548 - accuracy: 0.2616 - val_loss: 0.0554 - val_accuracy: 0.2560\n", + "Epoch 161/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0551 - accuracy: 0.2595\n", + " (7.324451088022072, 1e-05)-DP guarantees for epoch 161 \n", + "\n", + "5/5 [==============================] - 3s 349ms/step - loss: 0.0551 - accuracy: 0.2595 - val_loss: 0.0554 - val_accuracy: 0.2577\n", + "Epoch 162/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0548 - accuracy: 0.2606\n", + " (7.350765305854425, 1e-05)-DP guarantees for epoch 162 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0548 - accuracy: 0.2606 - val_loss: 0.0554 - val_accuracy: 0.2580\n", + "Epoch 163/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0547 - accuracy: 0.2588\n", + " (7.37707952170881, 1e-05)-DP guarantees for epoch 163 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0547 - accuracy: 0.2588 - val_loss: 0.0553 - val_accuracy: 0.2549\n", + "Epoch 164/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0546 - accuracy: 0.2585\n", + " (7.403393741099066, 1e-05)-DP guarantees for epoch 164 \n", + "\n", + "5/5 [==============================] - 3s 379ms/step - loss: 0.0546 - accuracy: 0.2585 - val_loss: 0.0553 - val_accuracy: 0.2591\n", + "Epoch 165/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0546 - accuracy: 0.2607\n", + " (7.429707969366283, 1e-05)-DP guarantees for epoch 165 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0546 - accuracy: 0.2607 - val_loss: 0.0552 - val_accuracy: 0.2574\n", + "Epoch 166/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0547 - accuracy: 0.2598\n", + " (7.456022189620042, 1e-05)-DP guarantees for epoch 166 \n", + "\n", + "5/5 [==============================] - 2s 356ms/step - loss: 0.0547 - accuracy: 0.2598 - val_loss: 0.0551 - val_accuracy: 0.2544\n", + "Epoch 167/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0544 - accuracy: 0.2589\n", + " (7.4823364015791975, 1e-05)-DP guarantees for epoch 167 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0544 - accuracy: 0.2589 - val_loss: 0.0552 - val_accuracy: 0.2570\n", + "Epoch 168/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0546 - accuracy: 0.2620\n", + " (7.508650622437409, 1e-05)-DP guarantees for epoch 168 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0546 - accuracy: 0.2620 - val_loss: 0.0551 - val_accuracy: 0.2585\n", + "Epoch 169/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0544 - accuracy: 0.2609\n", + " (7.5349648424170645, 1e-05)-DP guarantees for epoch 169 \n", + "\n", + "5/5 [==============================] - 3s 371ms/step - loss: 0.0544 - accuracy: 0.2609 - val_loss: 0.0550 - val_accuracy: 0.2591\n", + "Epoch 170/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0545 - accuracy: 0.2618\n", + " (7.561279065737033, 1e-05)-DP guarantees for epoch 170 \n", + "\n", + "5/5 [==============================] - 3s 369ms/step - loss: 0.0545 - accuracy: 0.2618 - val_loss: 0.0551 - val_accuracy: 0.2582\n", + "Epoch 171/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0542 - accuracy: 0.2642\n", + " (7.587593290867159, 1e-05)-DP guarantees for epoch 171 \n", + "\n", + "5/5 [==============================] - 3s 372ms/step - loss: 0.0542 - accuracy: 0.2642 - val_loss: 0.0551 - val_accuracy: 0.2598\n", + "Epoch 172/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0543 - accuracy: 0.2640\n", + " (7.613907506714526, 1e-05)-DP guarantees for epoch 172 \n", + "\n", + "5/5 [==============================] - 3s 369ms/step - loss: 0.0543 - accuracy: 0.2640 - val_loss: 0.0550 - val_accuracy: 0.2604\n", + "Epoch 173/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0543 - accuracy: 0.2642\n", + " (7.640221723584304, 1e-05)-DP guarantees for epoch 173 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0543 - accuracy: 0.2642 - val_loss: 0.0549 - val_accuracy: 0.2604\n", + "Epoch 174/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0542 - accuracy: 0.2635\n", + " (7.666535950048996, 1e-05)-DP guarantees for epoch 174 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0542 - accuracy: 0.2635 - val_loss: 0.0549 - val_accuracy: 0.2628\n", + "Epoch 175/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0541 - accuracy: 0.2648\n", + " (7.692850164248792, 1e-05)-DP guarantees for epoch 175 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0541 - accuracy: 0.2648 - val_loss: 0.0548 - val_accuracy: 0.2625\n", + "Epoch 176/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0542 - accuracy: 0.2637\n", + " (7.719164393302542, 1e-05)-DP guarantees for epoch 176 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0542 - accuracy: 0.2637 - val_loss: 0.0547 - val_accuracy: 0.2621\n", + "Epoch 177/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0540 - accuracy: 0.2661\n", + " (7.745478613553454, 1e-05)-DP guarantees for epoch 177 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0540 - accuracy: 0.2661 - val_loss: 0.0546 - val_accuracy: 0.2665\n", + "Epoch 178/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0541 - accuracy: 0.2668\n", + " (7.771792822684058, 1e-05)-DP guarantees for epoch 178 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0541 - accuracy: 0.2668 - val_loss: 0.0546 - val_accuracy: 0.2659\n", + "Epoch 179/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0539 - accuracy: 0.2685\n", + " (7.7981070469012, 1e-05)-DP guarantees for epoch 179 \n", + "\n", + "5/5 [==============================] - 2s 357ms/step - loss: 0.0539 - accuracy: 0.2685 - val_loss: 0.0545 - val_accuracy: 0.2646\n", + "Epoch 180/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0538 - accuracy: 0.2682\n", + " (7.824421268798268, 1e-05)-DP guarantees for epoch 180 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0538 - accuracy: 0.2682 - val_loss: 0.0545 - val_accuracy: 0.2656\n", + "Epoch 181/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0538 - accuracy: 0.2671\n", + " (7.850735498247861, 1e-05)-DP guarantees for epoch 181 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0538 - accuracy: 0.2671 - val_loss: 0.0545 - val_accuracy: 0.2639\n", + "Epoch 182/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0539 - accuracy: 0.2661\n", + " (7.877049711425853, 1e-05)-DP guarantees for epoch 182 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0539 - accuracy: 0.2661 - val_loss: 0.0544 - val_accuracy: 0.2645\n", + "Epoch 183/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0537 - accuracy: 0.2635\n", + " (7.903363929529842, 1e-05)-DP guarantees for epoch 183 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0537 - accuracy: 0.2635 - val_loss: 0.0544 - val_accuracy: 0.2645\n", + "Epoch 184/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0538 - accuracy: 0.2641\n", + " (7.929678153587394, 1e-05)-DP guarantees for epoch 184 \n", + "\n", + "5/5 [==============================] - 3s 361ms/step - loss: 0.0538 - accuracy: 0.2641 - val_loss: 0.0543 - val_accuracy: 0.2641\n", + "Epoch 185/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0535 - accuracy: 0.2668\n", + " (7.955992381685565, 1e-05)-DP guarantees for epoch 185 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0535 - accuracy: 0.2668 - val_loss: 0.0543 - val_accuracy: 0.2638\n", + "Epoch 186/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0535 - accuracy: 0.2641\n", + " (7.982306589145621, 1e-05)-DP guarantees for epoch 186 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0535 - accuracy: 0.2641 - val_loss: 0.0543 - val_accuracy: 0.2654\n", + "Epoch 187/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0537 - accuracy: 0.2653\n", + " (8.008620808026855, 1e-05)-DP guarantees for epoch 187 \n", + "\n", + "5/5 [==============================] - 3s 412ms/step - loss: 0.0537 - accuracy: 0.2653 - val_loss: 0.0542 - val_accuracy: 0.2651\n", + "Epoch 188/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0535 - accuracy: 0.2656\n", + " (8.034935029136395, 1e-05)-DP guarantees for epoch 188 \n", + "\n", + "5/5 [==============================] - 3s 488ms/step - loss: 0.0535 - accuracy: 0.2656 - val_loss: 0.0542 - val_accuracy: 0.2662\n", + "Epoch 189/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0536 - accuracy: 0.2653\n", + " (8.061249248434443, 1e-05)-DP guarantees for epoch 189 \n", + "\n", + "5/5 [==============================] - 3s 444ms/step - loss: 0.0536 - accuracy: 0.2653 - val_loss: 0.0541 - val_accuracy: 0.2659\n", + "Epoch 190/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0533 - accuracy: 0.2676\n", + " (8.087563469816706, 1e-05)-DP guarantees for epoch 190 \n", + "\n", + "5/5 [==============================] - 3s 405ms/step - loss: 0.0533 - accuracy: 0.2676 - val_loss: 0.0541 - val_accuracy: 0.2663\n", + "Epoch 191/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0534 - accuracy: 0.2669\n", + " (8.113877688170744, 1e-05)-DP guarantees for epoch 191 \n", + "\n", + "5/5 [==============================] - 3s 385ms/step - loss: 0.0534 - accuracy: 0.2669 - val_loss: 0.0541 - val_accuracy: 0.2675\n", + "Epoch 192/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0535 - accuracy: 0.2648\n", + " (8.140191906358039, 1e-05)-DP guarantees for epoch 192 \n", + "\n", + "5/5 [==============================] - 3s 392ms/step - loss: 0.0535 - accuracy: 0.2648 - val_loss: 0.0540 - val_accuracy: 0.2676\n", + "Epoch 193/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0534 - accuracy: 0.2680\n", + " (8.166506132866681, 1e-05)-DP guarantees for epoch 193 \n", + "\n", + "5/5 [==============================] - 3s 379ms/step - loss: 0.0534 - accuracy: 0.2680 - val_loss: 0.0540 - val_accuracy: 0.2676\n", + "Epoch 194/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0533 - accuracy: 0.2654\n", + " (8.192820350846777, 1e-05)-DP guarantees for epoch 194 \n", + "\n", + "5/5 [==============================] - 2s 356ms/step - loss: 0.0533 - accuracy: 0.2654 - val_loss: 0.0540 - val_accuracy: 0.2679\n", + "Epoch 195/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0531 - accuracy: 0.2681\n", + " (8.219134573417037, 1e-05)-DP guarantees for epoch 195 \n", + "\n", + "5/5 [==============================] - 3s 381ms/step - loss: 0.0531 - accuracy: 0.2681 - val_loss: 0.0541 - val_accuracy: 0.2654\n", + "Epoch 196/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0532 - accuracy: 0.2671\n", + " (8.24544879099129, 1e-05)-DP guarantees for epoch 196 \n", + "\n", + "5/5 [==============================] - 3s 381ms/step - loss: 0.0532 - accuracy: 0.2671 - val_loss: 0.0540 - val_accuracy: 0.2658\n", + "Epoch 197/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0535 - accuracy: 0.2666\n", + " (8.271763016196239, 1e-05)-DP guarantees for epoch 197 \n", + "\n", + "5/5 [==============================] - 3s 389ms/step - loss: 0.0535 - accuracy: 0.2666 - val_loss: 0.0540 - val_accuracy: 0.2656\n", + "Epoch 198/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0534 - accuracy: 0.2676\n", + " (8.298077232897459, 1e-05)-DP guarantees for epoch 198 \n", + "\n", + "5/5 [==============================] - 3s 415ms/step - loss: 0.0534 - accuracy: 0.2676 - val_loss: 0.0539 - val_accuracy: 0.2656\n", + "Epoch 199/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0531 - accuracy: 0.2672\n", + " (8.324391446543665, 1e-05)-DP guarantees for epoch 199 \n", + "\n", + "5/5 [==============================] - 3s 380ms/step - loss: 0.0531 - accuracy: 0.2672 - val_loss: 0.0538 - val_accuracy: 0.2658\n", + "Epoch 200/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0534 - accuracy: 0.2638\n", + " (8.350705669706155, 1e-05)-DP guarantees for epoch 200 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0534 - accuracy: 0.2638 - val_loss: 0.0538 - val_accuracy: 0.2659\n", + "Epoch 201/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0533 - accuracy: 0.2672\n", + " (8.377019893272927, 1e-05)-DP guarantees for epoch 201 \n", + "\n", + "5/5 [==============================] - 2s 369ms/step - loss: 0.0533 - accuracy: 0.2672 - val_loss: 0.0538 - val_accuracy: 0.2678\n", + "Epoch 202/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0533 - accuracy: 0.2685\n", + " (8.403334112768452, 1e-05)-DP guarantees for epoch 202 \n", + "\n", + "5/5 [==============================] - 3s 362ms/step - loss: 0.0533 - accuracy: 0.2685 - val_loss: 0.0537 - val_accuracy: 0.2677\n", + "Epoch 203/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0528 - accuracy: 0.2701\n", + " (8.429648329088547, 1e-05)-DP guarantees for epoch 203 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0528 - accuracy: 0.2701 - val_loss: 0.0537 - val_accuracy: 0.2669\n", + "Epoch 204/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0528 - accuracy: 0.2696\n", + " (8.455962556505566, 1e-05)-DP guarantees for epoch 204 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0528 - accuracy: 0.2696 - val_loss: 0.0537 - val_accuracy: 0.2681\n", + "Epoch 205/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0532 - accuracy: 0.2691\n", + " (8.4822767745793, 1e-05)-DP guarantees for epoch 205 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0532 - accuracy: 0.2691 - val_loss: 0.0536 - val_accuracy: 0.2692\n", + "Epoch 206/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0531 - accuracy: 0.2703\n", + " (8.508590990133396, 1e-05)-DP guarantees for epoch 206 \n", + "\n", + "5/5 [==============================] - 3s 354ms/step - loss: 0.0531 - accuracy: 0.2703 - val_loss: 0.0535 - val_accuracy: 0.2683\n", + "Epoch 207/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0529 - accuracy: 0.2705\n", + " (8.534905221654196, 1e-05)-DP guarantees for epoch 207 \n", + "\n", + "5/5 [==============================] - 3s 348ms/step - loss: 0.0529 - accuracy: 0.2705 - val_loss: 0.0535 - val_accuracy: 0.2661\n", + "Epoch 208/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0526 - accuracy: 0.2726\n", + " (8.56121943210842, 1e-05)-DP guarantees for epoch 208 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0526 - accuracy: 0.2726 - val_loss: 0.0535 - val_accuracy: 0.2671\n", + "Epoch 209/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0530 - accuracy: 0.2703\n", + " (8.58753364829852, 1e-05)-DP guarantees for epoch 209 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0530 - accuracy: 0.2703 - val_loss: 0.0534 - val_accuracy: 0.2691\n", + "Epoch 210/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0527 - accuracy: 0.2701\n", + " (8.613847875406321, 1e-05)-DP guarantees for epoch 210 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0527 - accuracy: 0.2701 - val_loss: 0.0534 - val_accuracy: 0.2676\n", + "Epoch 211/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0525 - accuracy: 0.2713\n", + " (8.640162093797892, 1e-05)-DP guarantees for epoch 211 \n", + "\n", + "5/5 [==============================] - 3s 350ms/step - loss: 0.0525 - accuracy: 0.2713 - val_loss: 0.0534 - val_accuracy: 0.2689\n", + "Epoch 212/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0527 - accuracy: 0.2711\n", + " (8.666476313556027, 1e-05)-DP guarantees for epoch 212 \n", + "\n", + "5/5 [==============================] - 2s 346ms/step - loss: 0.0527 - accuracy: 0.2711 - val_loss: 0.0533 - val_accuracy: 0.2679\n", + "Epoch 213/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0524 - accuracy: 0.2722\n", + " (8.692790541337777, 1e-05)-DP guarantees for epoch 213 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0524 - accuracy: 0.2722 - val_loss: 0.0532 - val_accuracy: 0.2673\n", + "Epoch 214/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0526 - accuracy: 0.2705\n", + " (8.719104752659717, 1e-05)-DP guarantees for epoch 214 \n", + "\n", + "5/5 [==============================] - 3s 355ms/step - loss: 0.0526 - accuracy: 0.2705 - val_loss: 0.0532 - val_accuracy: 0.2675\n", + "Epoch 215/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0523 - accuracy: 0.2729\n", + " (8.745418971706883, 1e-05)-DP guarantees for epoch 215 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0523 - accuracy: 0.2729 - val_loss: 0.0532 - val_accuracy: 0.2674\n", + "Epoch 216/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0525 - accuracy: 0.2733\n", + " (8.77173318977154, 1e-05)-DP guarantees for epoch 216 \n", + "\n", + "5/5 [==============================] - 3s 362ms/step - loss: 0.0525 - accuracy: 0.2733 - val_loss: 0.0532 - val_accuracy: 0.2662\n", + "Epoch 217/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0525 - accuracy: 0.2719\n", + " (8.798047413801395, 1e-05)-DP guarantees for epoch 217 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0525 - accuracy: 0.2719 - val_loss: 0.0531 - val_accuracy: 0.2676\n", + "Epoch 218/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0524 - accuracy: 0.2741\n", + " (8.82436163499698, 1e-05)-DP guarantees for epoch 218 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0524 - accuracy: 0.2741 - val_loss: 0.0531 - val_accuracy: 0.2671\n", + "Epoch 219/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0525 - accuracy: 0.2702\n", + " (8.850675857122916, 1e-05)-DP guarantees for epoch 219 \n", + "\n", + "5/5 [==============================] - 3s 386ms/step - loss: 0.0525 - accuracy: 0.2702 - val_loss: 0.0531 - val_accuracy: 0.2672\n", + "Epoch 220/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0527 - accuracy: 0.2709\n", + " (8.876990076626331, 1e-05)-DP guarantees for epoch 220 \n", + "\n", + "5/5 [==============================] - 3s 376ms/step - loss: 0.0527 - accuracy: 0.2709 - val_loss: 0.0531 - val_accuracy: 0.2668\n", + "Epoch 221/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0525 - accuracy: 0.2715\n", + " (8.903304291167267, 1e-05)-DP guarantees for epoch 221 \n", + "\n", + "5/5 [==============================] - 3s 363ms/step - loss: 0.0525 - accuracy: 0.2715 - val_loss: 0.0531 - val_accuracy: 0.2661\n", + "Epoch 222/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0524 - accuracy: 0.2721\n", + " (8.929618511328595, 1e-05)-DP guarantees for epoch 222 \n", + "\n", + "5/5 [==============================] - 3s 378ms/step - loss: 0.0524 - accuracy: 0.2721 - val_loss: 0.0530 - val_accuracy: 0.2677\n", + "Epoch 223/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0521 - accuracy: 0.2726\n", + " (8.955932731489924, 1e-05)-DP guarantees for epoch 223 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0521 - accuracy: 0.2726 - val_loss: 0.0530 - val_accuracy: 0.2686\n", + "Epoch 224/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0521 - accuracy: 0.2727\n", + " (8.982246951651252, 1e-05)-DP guarantees for epoch 224 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0521 - accuracy: 0.2727 - val_loss: 0.0530 - val_accuracy: 0.2690\n", + "Epoch 225/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0522 - accuracy: 0.2706\n", + " (9.00856117181258, 1e-05)-DP guarantees for epoch 225 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0522 - accuracy: 0.2706 - val_loss: 0.0529 - val_accuracy: 0.2701\n", + "Epoch 226/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0521 - accuracy: 0.2715\n", + " (9.034875391973909, 1e-05)-DP guarantees for epoch 226 \n", + "\n", + "5/5 [==============================] - 3s 396ms/step - loss: 0.0521 - accuracy: 0.2715 - val_loss: 0.0529 - val_accuracy: 0.2690\n", + "Epoch 227/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0521 - accuracy: 0.2713\n", + " (9.061189612135239, 1e-05)-DP guarantees for epoch 227 \n", + "\n", + "5/5 [==============================] - 3s 365ms/step - loss: 0.0521 - accuracy: 0.2713 - val_loss: 0.0529 - val_accuracy: 0.2702\n", + "Epoch 228/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0520 - accuracy: 0.2729\n", + " (9.087503832296568, 1e-05)-DP guarantees for epoch 228 \n", + "\n", + "5/5 [==============================] - 3s 366ms/step - loss: 0.0520 - accuracy: 0.2729 - val_loss: 0.0529 - val_accuracy: 0.2698\n", + "Epoch 229/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0518 - accuracy: 0.2717\n", + " (9.113818052457898, 1e-05)-DP guarantees for epoch 229 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0518 - accuracy: 0.2717 - val_loss: 0.0528 - val_accuracy: 0.2704\n", + "Epoch 230/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0518 - accuracy: 0.2710\n", + " (9.140132272619226, 1e-05)-DP guarantees for epoch 230 \n", + "\n", + "5/5 [==============================] - 3s 371ms/step - loss: 0.0518 - accuracy: 0.2710 - val_loss: 0.0528 - val_accuracy: 0.2693\n", + "Epoch 231/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0519 - accuracy: 0.2725\n", + " (9.166446492780555, 1e-05)-DP guarantees for epoch 231 \n", + "\n", + "5/5 [==============================] - 2s 357ms/step - loss: 0.0519 - accuracy: 0.2725 - val_loss: 0.0528 - val_accuracy: 0.2674\n", + "Epoch 232/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0517 - accuracy: 0.2743\n", + " (9.192760712941883, 1e-05)-DP guarantees for epoch 232 \n", + "\n", + "5/5 [==============================] - 3s 361ms/step - loss: 0.0517 - accuracy: 0.2743 - val_loss: 0.0528 - val_accuracy: 0.2685\n", + "Epoch 233/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0519 - accuracy: 0.2712\n", + " (9.219074933103212, 1e-05)-DP guarantees for epoch 233 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0519 - accuracy: 0.2712 - val_loss: 0.0527 - val_accuracy: 0.2687\n", + "Epoch 234/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0517 - accuracy: 0.2731\n", + " (9.24538915326454, 1e-05)-DP guarantees for epoch 234 \n", + "\n", + "5/5 [==============================] - 3s 370ms/step - loss: 0.0517 - accuracy: 0.2731 - val_loss: 0.0527 - val_accuracy: 0.2663\n", + "Epoch 235/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0518 - accuracy: 0.2720\n", + " (9.27170337342587, 1e-05)-DP guarantees for epoch 235 \n", + "\n", + "5/5 [==============================] - 3s 350ms/step - loss: 0.0518 - accuracy: 0.2720 - val_loss: 0.0527 - val_accuracy: 0.2663\n", + "Epoch 236/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0515 - accuracy: 0.2729\n", + " (9.298017593587199, 1e-05)-DP guarantees for epoch 236 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0515 - accuracy: 0.2729 - val_loss: 0.0526 - val_accuracy: 0.2658\n", + "Epoch 237/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0517 - accuracy: 0.2726\n", + " (9.324331813748529, 1e-05)-DP guarantees for epoch 237 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0517 - accuracy: 0.2726 - val_loss: 0.0526 - val_accuracy: 0.2650\n", + "Epoch 238/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0515 - accuracy: 0.2752\n", + " (9.350646033909857, 1e-05)-DP guarantees for epoch 238 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0515 - accuracy: 0.2752 - val_loss: 0.0525 - val_accuracy: 0.2655\n", + "Epoch 239/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0517 - accuracy: 0.2739\n", + " (9.376960254071186, 1e-05)-DP guarantees for epoch 239 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0517 - accuracy: 0.2739 - val_loss: 0.0525 - val_accuracy: 0.2665\n", + "Epoch 240/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0515 - accuracy: 0.2736\n", + " (9.403274474232514, 1e-05)-DP guarantees for epoch 240 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0515 - accuracy: 0.2736 - val_loss: 0.0525 - val_accuracy: 0.2673\n", + "Epoch 241/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0517 - accuracy: 0.2729\n", + " (9.429588694393843, 1e-05)-DP guarantees for epoch 241 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0517 - accuracy: 0.2729 - val_loss: 0.0524 - val_accuracy: 0.2674\n", + "Epoch 242/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0518 - accuracy: 0.2746\n", + " (9.455902914555171, 1e-05)-DP guarantees for epoch 242 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0518 - accuracy: 0.2746 - val_loss: 0.0525 - val_accuracy: 0.2694\n", + "Epoch 243/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0515 - accuracy: 0.2756\n", + " (9.482217134716501, 1e-05)-DP guarantees for epoch 243 \n", + "\n", + "5/5 [==============================] - 2s 357ms/step - loss: 0.0515 - accuracy: 0.2756 - val_loss: 0.0524 - val_accuracy: 0.2699\n", + "Epoch 244/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0512 - accuracy: 0.2760\n", + " (9.50853135487783, 1e-05)-DP guarantees for epoch 244 \n", + "\n", + "5/5 [==============================] - 3s 367ms/step - loss: 0.0512 - accuracy: 0.2760 - val_loss: 0.0524 - val_accuracy: 0.2712\n", + "Epoch 245/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0514 - accuracy: 0.2756\n", + " (9.534845575173634, 1e-05)-DP guarantees for epoch 245 \n", + "\n", + "5/5 [==============================] - 3s 360ms/step - loss: 0.0514 - accuracy: 0.2756 - val_loss: 0.0523 - val_accuracy: 0.2700\n", + "Epoch 246/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0512 - accuracy: 0.2758\n", + " (9.561159795911662, 1e-05)-DP guarantees for epoch 246 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0512 - accuracy: 0.2758 - val_loss: 0.0523 - val_accuracy: 0.2716\n", + "Epoch 247/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0512 - accuracy: 0.2783\n", + " (9.587474015660208, 1e-05)-DP guarantees for epoch 247 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0512 - accuracy: 0.2783 - val_loss: 0.0523 - val_accuracy: 0.2719\n", + "Epoch 248/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0514 - accuracy: 0.2768\n", + " (9.613788235533915, 1e-05)-DP guarantees for epoch 248 \n", + "\n", + "5/5 [==============================] - 3s 366ms/step - loss: 0.0514 - accuracy: 0.2768 - val_loss: 0.0522 - val_accuracy: 0.2711\n", + "Epoch 249/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2780\n", + " (9.64006012187098, 1e-05)-DP guarantees for epoch 249 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0511 - accuracy: 0.2780 - val_loss: 0.0522 - val_accuracy: 0.2720\n", + "Epoch 250/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2746\n", + " (9.665736679745127, 1e-05)-DP guarantees for epoch 250 \n", + "\n", + "5/5 [==============================] - 3s 352ms/step - loss: 0.0511 - accuracy: 0.2746 - val_loss: 0.0522 - val_accuracy: 0.2731\n", + "Epoch 251/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0509 - accuracy: 0.2777\n", + " (9.690604545814235, 1e-05)-DP guarantees for epoch 251 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0509 - accuracy: 0.2777 - val_loss: 0.0522 - val_accuracy: 0.2727\n", + "Epoch 252/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2793\n", + " (9.714604392289775, 1e-05)-DP guarantees for epoch 252 \n", + "\n", + "5/5 [==============================] - 3s 354ms/step - loss: 0.0511 - accuracy: 0.2793 - val_loss: 0.0522 - val_accuracy: 0.2701\n", + "Epoch 253/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2751\n", + " (9.737670917278972, 1e-05)-DP guarantees for epoch 253 \n", + "\n", + "5/5 [==============================] - 3s 354ms/step - loss: 0.0511 - accuracy: 0.2751 - val_loss: 0.0522 - val_accuracy: 0.2719\n", + "Epoch 254/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0510 - accuracy: 0.2764\n", + " (9.759732027763015, 1e-05)-DP guarantees for epoch 254 \n", + "\n", + "5/5 [==============================] - 3s 365ms/step - loss: 0.0510 - accuracy: 0.2764 - val_loss: 0.0522 - val_accuracy: 0.2718\n", + "Epoch 255/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0510 - accuracy: 0.2765\n", + " (9.780707877727917, 1e-05)-DP guarantees for epoch 255 \n", + "\n", + "5/5 [==============================] - 3s 341ms/step - loss: 0.0510 - accuracy: 0.2765 - val_loss: 0.0522 - val_accuracy: 0.2708\n", + "Epoch 256/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2758\n", + " (9.80055660088896, 1e-05)-DP guarantees for epoch 256 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0511 - accuracy: 0.2758 - val_loss: 0.0521 - val_accuracy: 0.2726\n", + "Epoch 257/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0508 - accuracy: 0.2767\n", + " (9.820083418023108, 1e-05)-DP guarantees for epoch 257 \n", + "\n", + "5/5 [==============================] - 2s 360ms/step - loss: 0.0508 - accuracy: 0.2767 - val_loss: 0.0520 - val_accuracy: 0.2722\n", + "Epoch 258/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2740\n", + " (9.839610235157256, 1e-05)-DP guarantees for epoch 258 \n", + "\n", + "5/5 [==============================] - 3s 348ms/step - loss: 0.0511 - accuracy: 0.2740 - val_loss: 0.0520 - val_accuracy: 0.2707\n", + "Epoch 259/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0507 - accuracy: 0.2782\n", + " (9.859137052291402, 1e-05)-DP guarantees for epoch 259 \n", + "\n", + "5/5 [==============================] - 3s 367ms/step - loss: 0.0507 - accuracy: 0.2782 - val_loss: 0.0520 - val_accuracy: 0.2731\n", + "Epoch 260/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0510 - accuracy: 0.2761\n", + " (9.87866386942555, 1e-05)-DP guarantees for epoch 260 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0510 - accuracy: 0.2761 - val_loss: 0.0519 - val_accuracy: 0.2707\n", + "Epoch 261/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0509 - accuracy: 0.2751\n", + " (9.898190686559698, 1e-05)-DP guarantees for epoch 261 \n", + "\n", + "5/5 [==============================] - 3s 379ms/step - loss: 0.0509 - accuracy: 0.2751 - val_loss: 0.0519 - val_accuracy: 0.2724\n", + "Epoch 262/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2766\n", + " (9.917717503693844, 1e-05)-DP guarantees for epoch 262 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0511 - accuracy: 0.2766 - val_loss: 0.0520 - val_accuracy: 0.2729\n", + "Epoch 263/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0508 - accuracy: 0.2773\n", + " (9.937244320827991, 1e-05)-DP guarantees for epoch 263 \n", + "\n", + "5/5 [==============================] - 2s 342ms/step - loss: 0.0508 - accuracy: 0.2773 - val_loss: 0.0520 - val_accuracy: 0.2708\n", + "Epoch 264/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0507 - accuracy: 0.2777\n", + " (9.95677113796214, 1e-05)-DP guarantees for epoch 264 \n", + "\n", + "5/5 [==============================] - 3s 366ms/step - loss: 0.0507 - accuracy: 0.2777 - val_loss: 0.0519 - val_accuracy: 0.2733\n", + "Epoch 265/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0505 - accuracy: 0.2784\n", + " (9.976297955096285, 1e-05)-DP guarantees for epoch 265 \n", + "\n", + "5/5 [==============================] - 3s 378ms/step - loss: 0.0505 - accuracy: 0.2784 - val_loss: 0.0519 - val_accuracy: 0.2738\n" + ] + } + ], + "source": [ + "hist = model.fit(\n", + " ds_train,\n", + " epochs=num_epochs,\n", + " validation_data=ds_test,\n", + " callbacks=[\n", + " # accounting is done thanks to a callback\n", + " DP_Accountant(log_fn=\"logging\"), # wandb.log also available.\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "8e139678-6ec6-4a2e-980b-83059c98c48b", + "metadata": {}, + "source": [ + "This final val_accuracy is compliant with results reported in other framework. For comparison, in Opacus tutorials, the Resnet 18 reaches 60% val_accuracy at $\\epsilon=47$, but 15% at $\\epsilon=13$. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "db636e0c-0334-45ee-b953-e4cc85bb7d8e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/basics_mnist.ipynb b/docs/notebooks/basics_mnist.ipynb new file mode 100644 index 0000000..3020545 --- /dev/null +++ b/docs/notebooks/basics_mnist.ipynb @@ -0,0 +1,886 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "f7bf07b9-d489-4484-acb9-175cb740dc60", + "metadata": {}, + "source": [ + "# Mnist tutorial\n", + "\n", + "This notebook introduces the basics of usage of our library.\n", + "\n", + "## Imports" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "8a0eebdf-6082-4d00-aa14-b42953217a93", + "metadata": {}, + "source": [ + "The library is based on tensorflow." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "91c2965e-0375-4966-bc55-776204af9d69", + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "9356cd9b-6f79-45f1-8f2e-c46a526c4ae7", + "metadata": {}, + "source": [ + "### lip-dp dependencies\n", + "\n", + "The need a model `DP_Sequential` that handles the noisification of gradients. It is composed `layers` and trained with a loss found in `loss`. The model is initialized with the convenience function `DPParameters`. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1e5d58f8-386c-44c7-8c5d-e5b69b5be231", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp import layers\n", + "from deel.lipdp import losses\n", + "from deel.lipdp.model import DP_Sequential\n", + "from deel.lipdp.model import DPParameters" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "3a247cd3-48d6-4854-92df-01420d3bea80", + "metadata": {}, + "source": [ + "The `DP_Accountant` callback keeps track of $(\\epsilon,\\delta)$-DP values epoch after epoch. In practice we may be interested in reaching the maximum val_accuracy under privacy constraint $\\epsilon$: the convenience function `get_max_epochs` exactly does that by performing a dichotomy search over the number of epochs." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "950c5c56-4b34-4653-aaf3-7d97acc1f5f2", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.model import DP_Accountant\n", + "from deel.lipdp.sensitivity import get_max_epochs" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "893d3078-5166-428c-9cb1-d29ec1f05d71", + "metadata": {}, + "source": [ + "The framework requires a control of the maximum norm of inputs. This can be ensured with input clipping for example: `bound_clip_value`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f395c9fc-b67d-4fd2-be4b-b1c43221ebcb", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.pipeline import bound_clip_value\n", + "from deel.lipdp.pipeline import load_and_prepare_data" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "e54a79db-24b4-4dae-b684-170fa743bc5d", + "metadata": {}, + "source": [ + "## Setup DP Lipschitz model\n", + "\n", + "Here we apply the \"global\" strategy, with a noise multiplier $2.5$. Note that for Mnist the dataset size is $N=60,000$, and it is recommended that $\\delta<\\frac{1}{N}$. So we propose a value of $\\delta=10^{-5}$." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f79ea3b0-33a6-401c-a3a3-e314939fd269", + "metadata": {}, + "outputs": [], + "source": [ + "dp_parameters = DPParameters(\n", + " noisify_strategy=\"global\",\n", + " noise_multiplier=2.0,\n", + " delta=1e-5,\n", + ")\n", + "\n", + "epsilon_max = 3.0" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "6482128c-ac2e-4cdd-9bbd-6d3172c292b1", + "metadata": {}, + "source": [ + "### Loading the data\n", + "\n", + "We clip the elementwise input upper-bound to $20.0$." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a8ed0fc4-4655-4bad-a6ac-8697cd5bc7a6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-05-24 16:00:31.206597: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2023-05-24 16:00:31.742417: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 47066 MB memory: -> device: 0, name: Quadro RTX 8000, pci bus id: 0000:03:00.0, compute capability: 7.5\n" + ] + } + ], + "source": [ + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "# data loader return dataset_metadata which allows to\n", + "# know the informations required for privacy accounting\n", + "# (dataset size, number of samples, max input bound...)\n", + "input_upper_bound = 20.0\n", + "ds_train, ds_test, dataset_metadata = load_and_prepare_data(\n", + " \"mnist\",\n", + " batch_size=1000,\n", + " drop_remainder=True, # accounting assumes fixed batch size\n", + " bound_fct=bound_clip_value( # other strategies are possible, like normalization.\n", + " input_upper_bound\n", + " ), # clipping preprocessing allows to control input bound\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "eb356c04-a836-4f49-93d7-7e0cc4c12b1d", + "metadata": {}, + "source": [ + "### Build the DP model\n", + "\n", + "We imitate the interface of Keras. We use common layers found in deel-lip, which a wrapper that handles the bound propagation. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "30cf44ed-653b-4eaa-8ed9-26e4815db511", + "metadata": {}, + "outputs": [], + "source": [ + "# construct DP_Sequential\n", + "model = DP_Sequential(\n", + " # works like usual sequential but requires DP layers\n", + " layers=[\n", + " # BoundedInput works like Input, but performs input clipping to guarantee input bound\n", + " layers.DP_BoundedInput(\n", + " input_shape=dataset_metadata.input_shape, upper_bound=input_upper_bound\n", + " ),\n", + " layers.DP_QuickSpectralConv2D( # Reshaped Kernel Orthogonalization (RKO) convolution.\n", + " filters=32,\n", + " kernel_size=3,\n", + " kernel_initializer=\"orthogonal\",\n", + " strides=1,\n", + " use_bias=False, # No biases since the framework handles a single tf.Variable per layer.\n", + " ),\n", + " layers.DP_GroupSort(2), # GNP activation function.\n", + " layers.DP_ScaledL2NormPooling2D(pool_size=2, strides=2), # GNP pooling.\n", + " layers.DP_QuickSpectralConv2D( # Reshaped Kernel Orthogonalization (RKO) convolution.\n", + " filters=64,\n", + " kernel_size=3,\n", + " kernel_initializer=\"orthogonal\",\n", + " strides=1,\n", + " use_bias=False, # No biases since the framework handles a single tf.Variable per layer.\n", + " ),\n", + " layers.DP_GroupSort(2), # GNP activation function.\n", + " layers.DP_ScaledL2NormPooling2D(pool_size=2, strides=2), # GNP pooling.\n", + " \n", + " layers.DP_Flatten(), # Convert features maps to flat vector.\n", + " \n", + " layers.DP_QuickSpectralDense(512), # GNP layer with orthogonal weight matrix.\n", + " layers.DP_GroupSort(2),\n", + " layers.DP_QuickSpectralDense(dataset_metadata.nb_classes),\n", + " ],\n", + " dp_parameters=dp_parameters,\n", + " dataset_metadata=dataset_metadata,\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "09777811", + "metadata": {}, + "source": [ + "We compile the model with:\n", + "* any first order optimizer (e.g SGD). No adaptation or special optimizer is needed.\n", + "* a loss with known Lipschitz constant, e.g Categorical Cross-entropy with temperature." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "efd97e75-34f0-49fa-ad2c-1816247f1611", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"dp__sequential\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " dp__bounded_input (DP_Bound (None, 28, 28, 1) 0 \n", + " edInput) \n", + " \n", + " dp__quick_spectral_conv2d ( (None, 26, 26, 32) 288 \n", + " DP_QuickSpectralConv2D) \n", + " \n", + " dp__group_sort (DP_GroupSor (None, 26, 26, 32) 0 \n", + " t) \n", + " \n", + " dp__scaled_l2_norm_pooling2 (None, 13, 13, 32) 0 \n", + " d (DP_ScaledL2NormPooling2D \n", + " ) \n", + " \n", + " dp__quick_spectral_conv2d_1 (None, 11, 11, 64) 18432 \n", + " (DP_QuickSpectralConv2D) \n", + " \n", + " dp__group_sort_1 (DP_GroupS (None, 11, 11, 64) 0 \n", + " ort) \n", + " \n", + " dp__scaled_l2_norm_pooling2 (None, 5, 5, 64) 0 \n", + " d_1 (DP_ScaledL2NormPooling \n", + " 2D) \n", + " \n", + " dp__flatten (DP_Flatten) (None, 1600) 0 \n", + " \n", + " dp__quick_spectral_dense (D (None, 512) 819200 \n", + " P_QuickSpectralDense) \n", + " \n", + " dp__group_sort_2 (DP_GroupS (None, 512) 0 \n", + " ort) \n", + " \n", + " dp__quick_spectral_dense_1 (None, 10) 5120 \n", + " (DP_QuickSpectralDense) \n", + " \n", + "=================================================================\n", + "Total params: 843,040\n", + "Trainable params: 843,040\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "model.compile(\n", + " # Compile model using DP loss\n", + " loss=losses.DP_TauCategoricalCrossentropy(18.0),\n", + " # this method is compatible with any first order optimizer\n", + " optimizer=tf.keras.optimizers.SGD(learning_rate=2e-4, momentum=0.9),\n", + " metrics=[\"accuracy\"],\n", + ")\n", + "model.summary()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "28ae2da5-ed40-4131-8721-73bbc73fa68d", + "metadata": {}, + "source": [ + "Note that the model contains $843$K parameters. Without gradient clipping these architectures can be trained with batch sizes as big as $1000$ on a standard GPU.\n", + "\n", + "Then, we compute the number of epochs. The maximum value of epsilon will depends on dp_parameters and the number of epochs. In order to control epsilon, we compute the adequate number of epochs" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "dd611afd-be30-4bd3-b658-48d1961247aa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch bounds = (0, 512.0) and epsilon = 7.994426666195571 at epoch 512.0\n", + "epoch bounds = (0, 256.0) and epsilon = 5.34128917907949 at epoch 256.0\n", + "epoch bounds = (0, 128.0) and epsilon = 3.631964622805248 at epoch 128.0\n", + "epoch bounds = (64.0, 128.0) and epsilon = 2.4829841192119444 at epoch 64.0\n", + "epoch bounds = (64.0, 96.0) and epsilon = 3.089635897639078 at epoch 96.0\n", + "epoch bounds = (80.0, 96.0) and epsilon = 2.796528753679695 at epoch 80.0\n", + "epoch bounds = (88.0, 96.0) and epsilon = 2.952713799856404 at epoch 88.0\n", + "epoch bounds = (88.0, 92.0) and epsilon = 3.0216241846349847 at epoch 92.0\n", + "epoch bounds = (90.0, 92.0) and epsilon = 2.987618328313939 at epoch 90.0\n", + "epoch bounds = (90.0, 91.0) and epsilon = 3.0046212568846444 at epoch 91.0\n" + ] + } + ], + "source": [ + "num_epochs = get_max_epochs(epsilon_max, model)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "53e94244", + "metadata": {}, + "source": [ + "## Train the model\n", + "\n", + "The model can be trained, and the DP Accountant will automatically track the privacy loss." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0ddcb192-547e-400e-87bb-2d4246185c64", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/91\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-05-24 16:00:36.621954: I tensorflow/stream_executor/cuda/cuda_dnn.cc:368] Loaded cuDNN version 8300\n", + "2023-05-24 16:00:37.363789: I tensorflow/core/platform/default/subprocess.cc:304] Start cannot spawn child process: No such file or directory\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "60/60 [==============================] - ETA: 0s - loss: 0.2020 - accuracy: 0.2324\n", + " (0.3227333785403041, 1e-05)-DP guarantees for epoch 1 \n", + "\n", + "60/60 [==============================] - 5s 38ms/step - loss: 0.2020 - accuracy: 0.2324 - val_loss: 0.1712 - val_accuracy: 0.3147\n", + "Epoch 2/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.1607 - accuracy: 0.3958\n", + " (0.41135036253440604, 1e-05)-DP guarantees for epoch 2 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.1604 - accuracy: 0.3992 - val_loss: 0.1486 - val_accuracy: 0.5122\n", + "Epoch 3/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.1426 - accuracy: 0.5510\n", + " (0.4972854400421322, 1e-05)-DP guarantees for epoch 3 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.1426 - accuracy: 0.5510 - val_loss: 0.1334 - val_accuracy: 0.6108\n", + "Epoch 4/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.1291 - accuracy: 0.6333\n", + " (0.5737399623472044, 1e-05)-DP guarantees for epoch 4 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.1291 - accuracy: 0.6333 - val_loss: 0.1213 - val_accuracy: 0.6784\n", + "Epoch 5/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.1182 - accuracy: 0.6883\n", + " (0.6418194146435952, 1e-05)-DP guarantees for epoch 5 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.1182 - accuracy: 0.6883 - val_loss: 0.1109 - val_accuracy: 0.7180\n", + "Epoch 6/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.1088 - accuracy: 0.7247\n", + " (0.7042008802236781, 1e-05)-DP guarantees for epoch 6 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.1087 - accuracy: 0.7247 - val_loss: 0.1024 - val_accuracy: 0.7527\n", + "Epoch 7/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.1012 - accuracy: 0.7488\n", + " (0.7616059152520757, 1e-05)-DP guarantees for epoch 7 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.1012 - accuracy: 0.7488 - val_loss: 0.0955 - val_accuracy: 0.7698\n", + "Epoch 8/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0948 - accuracy: 0.7644\n", + " (0.8155744676428971, 1e-05)-DP guarantees for epoch 8 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0948 - accuracy: 0.7644 - val_loss: 0.0899 - val_accuracy: 0.7815\n", + "Epoch 9/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0896 - accuracy: 0.7785\n", + " (0.8666021691681208, 1e-05)-DP guarantees for epoch 9 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0896 - accuracy: 0.7785 - val_loss: 0.0848 - val_accuracy: 0.7936\n", + "Epoch 10/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0849 - accuracy: 0.7868\n", + " (0.9152742048884784, 1e-05)-DP guarantees for epoch 10 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0849 - accuracy: 0.7868 - val_loss: 0.0804 - val_accuracy: 0.8003\n", + "Epoch 11/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0810 - accuracy: 0.7967\n", + " (0.9617965624530973, 1e-05)-DP guarantees for epoch 11 \n", + "\n", + "60/60 [==============================] - 2s 30ms/step - loss: 0.0809 - accuracy: 0.7975 - val_loss: 0.0769 - val_accuracy: 0.8109\n", + "Epoch 12/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0774 - accuracy: 0.8060\n", + " (1.0059716506359193, 1e-05)-DP guarantees for epoch 12 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0774 - accuracy: 0.8060 - val_loss: 0.0733 - val_accuracy: 0.8179\n", + "Epoch 13/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0740 - accuracy: 0.8131\n", + " (1.049398006635733, 1e-05)-DP guarantees for epoch 13 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0740 - accuracy: 0.8131 - val_loss: 0.0704 - val_accuracy: 0.8269\n", + "Epoch 14/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0713 - accuracy: 0.8216\n", + " (1.090263192229449, 1e-05)-DP guarantees for epoch 14 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0713 - accuracy: 0.8216 - val_loss: 0.0677 - val_accuracy: 0.8309\n", + "Epoch 15/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0689 - accuracy: 0.8240\n", + " (1.131126828240101, 1e-05)-DP guarantees for epoch 15 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0689 - accuracy: 0.8240 - val_loss: 0.0656 - val_accuracy: 0.8355\n", + "Epoch 16/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0669 - accuracy: 0.8293\n", + " (1.169340908770284, 1e-05)-DP guarantees for epoch 16 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0668 - accuracy: 0.8296 - val_loss: 0.0635 - val_accuracy: 0.8398\n", + "Epoch 17/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0647 - accuracy: 0.8333\n", + " (1.2074292910030167, 1e-05)-DP guarantees for epoch 17 \n", + "\n", + "60/60 [==============================] - 2s 29ms/step - loss: 0.0646 - accuracy: 0.8335 - val_loss: 0.0615 - val_accuracy: 0.8437\n", + "Epoch 18/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0630 - accuracy: 0.8366\n", + " (1.2447047350704166, 1e-05)-DP guarantees for epoch 18 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0629 - accuracy: 0.8367 - val_loss: 0.0598 - val_accuracy: 0.8468\n", + "Epoch 19/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0612 - accuracy: 0.8399\n", + " (1.2800495944157277, 1e-05)-DP guarantees for epoch 19 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0612 - accuracy: 0.8399 - val_loss: 0.0582 - val_accuracy: 0.8508\n", + "Epoch 20/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0598 - accuracy: 0.8428\n", + " (1.3153944538284068, 1e-05)-DP guarantees for epoch 20 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0598 - accuracy: 0.8428 - val_loss: 0.0569 - val_accuracy: 0.8563\n", + "Epoch 21/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0584 - accuracy: 0.8468\n", + " (1.3507368078845663, 1e-05)-DP guarantees for epoch 21 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0584 - accuracy: 0.8466 - val_loss: 0.0557 - val_accuracy: 0.8572\n", + "Epoch 22/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0572 - accuracy: 0.8509\n", + " (1.383564204783113, 1e-05)-DP guarantees for epoch 22 \n", + "\n", + "60/60 [==============================] - 2s 30ms/step - loss: 0.0572 - accuracy: 0.8509 - val_loss: 0.0546 - val_accuracy: 0.8610\n", + "Epoch 23/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0561 - accuracy: 0.8519\n", + " (1.4161979427317832, 1e-05)-DP guarantees for epoch 23 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0562 - accuracy: 0.8518 - val_loss: 0.0537 - val_accuracy: 0.8619\n", + "Epoch 24/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0552 - accuracy: 0.8547\n", + " (1.448831680775656, 1e-05)-DP guarantees for epoch 24 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0552 - accuracy: 0.8547 - val_loss: 0.0525 - val_accuracy: 0.8657\n", + "Epoch 25/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0541 - accuracy: 0.8575\n", + " (1.4814654188092617, 1e-05)-DP guarantees for epoch 25 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0541 - accuracy: 0.8576 - val_loss: 0.0516 - val_accuracy: 0.8675\n", + "Epoch 26/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0531 - accuracy: 0.8578\n", + " (1.512526290723161, 1e-05)-DP guarantees for epoch 26 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0531 - accuracy: 0.8578 - val_loss: 0.0506 - val_accuracy: 0.8691\n", + "Epoch 27/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0522 - accuracy: 0.8605\n", + " (1.5424804710143858, 1e-05)-DP guarantees for epoch 27 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0522 - accuracy: 0.8605 - val_loss: 0.0497 - val_accuracy: 0.8709\n", + "Epoch 28/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0512 - accuracy: 0.8624\n", + " (1.5724346510360574, 1e-05)-DP guarantees for epoch 28 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0512 - accuracy: 0.8626 - val_loss: 0.0488 - val_accuracy: 0.8730\n", + "Epoch 29/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0503 - accuracy: 0.8650\n", + " (1.6023888317992228, 1e-05)-DP guarantees for epoch 29 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0503 - accuracy: 0.8653 - val_loss: 0.0479 - val_accuracy: 0.8752\n", + "Epoch 30/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0495 - accuracy: 0.8665\n", + " (1.632343011263517, 1e-05)-DP guarantees for epoch 30 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0495 - accuracy: 0.8667 - val_loss: 0.0471 - val_accuracy: 0.8749\n", + "Epoch 31/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0488 - accuracy: 0.8684\n", + " (1.6622962394525178, 1e-05)-DP guarantees for epoch 31 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0487 - accuracy: 0.8686 - val_loss: 0.0463 - val_accuracy: 0.8779\n", + "Epoch 32/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0480 - accuracy: 0.8697\n", + " (1.689965116494089, 1e-05)-DP guarantees for epoch 32 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0480 - accuracy: 0.8697 - val_loss: 0.0457 - val_accuracy: 0.8777\n", + "Epoch 33/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0475 - accuracy: 0.8700\n", + " (1.7172705001520499, 1e-05)-DP guarantees for epoch 33 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0475 - accuracy: 0.8704 - val_loss: 0.0452 - val_accuracy: 0.8790\n", + "Epoch 34/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0469 - accuracy: 0.8736\n", + " (1.7445758842338837, 1e-05)-DP guarantees for epoch 34 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0468 - accuracy: 0.8738 - val_loss: 0.0446 - val_accuracy: 0.8806\n", + "Epoch 35/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0463 - accuracy: 0.8754\n", + " (1.7718812676250233, 1e-05)-DP guarantees for epoch 35 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0462 - accuracy: 0.8756 - val_loss: 0.0441 - val_accuracy: 0.8825\n", + "Epoch 36/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0456 - accuracy: 0.8763\n", + " (1.799186650959813, 1e-05)-DP guarantees for epoch 36 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0456 - accuracy: 0.8763 - val_loss: 0.0434 - val_accuracy: 0.8831\n", + "Epoch 37/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0450 - accuracy: 0.8771\n", + " (1.8264920346090618, 1e-05)-DP guarantees for epoch 37 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0450 - accuracy: 0.8773 - val_loss: 0.0429 - val_accuracy: 0.8846\n", + "Epoch 38/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0444 - accuracy: 0.8786\n", + " (1.8537974184156425, 1e-05)-DP guarantees for epoch 38 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0444 - accuracy: 0.8786 - val_loss: 0.0423 - val_accuracy: 0.8855\n", + "Epoch 39/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0439 - accuracy: 0.8800\n", + " (1.8807666749981604, 1e-05)-DP guarantees for epoch 39 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0439 - accuracy: 0.8802 - val_loss: 0.0419 - val_accuracy: 0.8863\n", + "Epoch 40/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0435 - accuracy: 0.8803\n", + " (1.9054738700393052, 1e-05)-DP guarantees for epoch 40 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0435 - accuracy: 0.8804 - val_loss: 0.0415 - val_accuracy: 0.8858\n", + "Epoch 41/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0430 - accuracy: 0.8816\n", + " (1.9301604511513608, 1e-05)-DP guarantees for epoch 41 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0430 - accuracy: 0.8816 - val_loss: 0.0410 - val_accuracy: 0.8884\n", + "Epoch 42/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0425 - accuracy: 0.8824\n", + " (1.9548470320035656, 1e-05)-DP guarantees for epoch 42 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0425 - accuracy: 0.8824 - val_loss: 0.0405 - val_accuracy: 0.8890\n", + "Epoch 43/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0421 - accuracy: 0.8837\n", + " (1.979533612594768, 1e-05)-DP guarantees for epoch 43 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0421 - accuracy: 0.8837 - val_loss: 0.0403 - val_accuracy: 0.8890\n", + "Epoch 44/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0418 - accuracy: 0.8856\n", + " (2.0042201936126345, 1e-05)-DP guarantees for epoch 44 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0418 - accuracy: 0.8856 - val_loss: 0.0399 - val_accuracy: 0.8908\n", + "Epoch 45/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0414 - accuracy: 0.8858\n", + " (2.0289067746857206, 1e-05)-DP guarantees for epoch 45 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0414 - accuracy: 0.8856 - val_loss: 0.0393 - val_accuracy: 0.8926\n", + "Epoch 46/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0408 - accuracy: 0.8872\n", + " (2.053593355232055, 1e-05)-DP guarantees for epoch 46 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0408 - accuracy: 0.8872 - val_loss: 0.0388 - val_accuracy: 0.8951\n", + "Epoch 47/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0405 - accuracy: 0.8882\n", + " (2.078279935996221, 1e-05)-DP guarantees for epoch 47 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0404 - accuracy: 0.8887 - val_loss: 0.0385 - val_accuracy: 0.8959\n", + "Epoch 48/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0400 - accuracy: 0.8882\n", + " (2.1029665168498504, 1e-05)-DP guarantees for epoch 48 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0400 - accuracy: 0.8882 - val_loss: 0.0381 - val_accuracy: 0.8952\n", + "Epoch 49/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0397 - accuracy: 0.8890\n", + " (2.127653097450219, 1e-05)-DP guarantees for epoch 49 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0398 - accuracy: 0.8888 - val_loss: 0.0379 - val_accuracy: 0.8943\n", + "Epoch 50/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0396 - accuracy: 0.8887\n", + " (2.151531383398666, 1e-05)-DP guarantees for epoch 50 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0395 - accuracy: 0.8889 - val_loss: 0.0375 - val_accuracy: 0.8946\n", + "Epoch 51/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0391 - accuracy: 0.8893\n", + " (2.1736284198821467, 1e-05)-DP guarantees for epoch 51 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0391 - accuracy: 0.8895 - val_loss: 0.0372 - val_accuracy: 0.8968\n", + "Epoch 52/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0387 - accuracy: 0.8908\n", + " (2.195725456202997, 1e-05)-DP guarantees for epoch 52 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0387 - accuracy: 0.8908 - val_loss: 0.0368 - val_accuracy: 0.8967\n", + "Epoch 53/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0385 - accuracy: 0.8905\n", + " (2.217822492103547, 1e-05)-DP guarantees for epoch 53 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0385 - accuracy: 0.8905 - val_loss: 0.0366 - val_accuracy: 0.8991\n", + "Epoch 54/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0382 - accuracy: 0.8913\n", + " (2.2399195284840734, 1e-05)-DP guarantees for epoch 54 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0382 - accuracy: 0.8913 - val_loss: 0.0365 - val_accuracy: 0.8992\n", + "Epoch 55/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0380 - accuracy: 0.8924\n", + " (2.2620165646623547, 1e-05)-DP guarantees for epoch 55 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0380 - accuracy: 0.8921 - val_loss: 0.0362 - val_accuracy: 0.8994\n", + "Epoch 56/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0377 - accuracy: 0.8925\n", + " (2.2841136015562187, 1e-05)-DP guarantees for epoch 56 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0377 - accuracy: 0.8925 - val_loss: 0.0358 - val_accuracy: 0.8999\n", + "Epoch 57/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0374 - accuracy: 0.8930\n", + " (2.3062106367493893, 1e-05)-DP guarantees for epoch 57 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0374 - accuracy: 0.8930 - val_loss: 0.0356 - val_accuracy: 0.9004\n", + "Epoch 58/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0371 - accuracy: 0.8938\n", + " (2.3283076739544244, 1e-05)-DP guarantees for epoch 58 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0372 - accuracy: 0.8939 - val_loss: 0.0354 - val_accuracy: 0.9010\n", + "Epoch 59/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0369 - accuracy: 0.8951\n", + " (2.3504047095381226, 1e-05)-DP guarantees for epoch 59 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0369 - accuracy: 0.8951 - val_loss: 0.0351 - val_accuracy: 0.9010\n", + "Epoch 60/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0365 - accuracy: 0.8963\n", + " (2.3725017457248683, 1e-05)-DP guarantees for epoch 60 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0365 - accuracy: 0.8963 - val_loss: 0.0347 - val_accuracy: 0.9037\n", + "Epoch 61/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0363 - accuracy: 0.8968\n", + " (2.3945987822094885, 1e-05)-DP guarantees for epoch 61 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0363 - accuracy: 0.8968 - val_loss: 0.0346 - val_accuracy: 0.9024\n", + "Epoch 62/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0360 - accuracy: 0.8979\n", + " (2.4166958179233653, 1e-05)-DP guarantees for epoch 62 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0360 - accuracy: 0.8981 - val_loss: 0.0343 - val_accuracy: 0.9041\n", + "Epoch 63/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0358 - accuracy: 0.8986\n", + " (2.438792853624178, 1e-05)-DP guarantees for epoch 63 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0358 - accuracy: 0.8987 - val_loss: 0.0340 - val_accuracy: 0.9068\n", + "Epoch 64/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0355 - accuracy: 0.8995\n", + " (2.4608898896847116, 1e-05)-DP guarantees for epoch 64 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0356 - accuracy: 0.8992 - val_loss: 0.0338 - val_accuracy: 0.9072\n", + "Epoch 65/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0352 - accuracy: 0.9005\n", + " (2.4829841192119444, 1e-05)-DP guarantees for epoch 65 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0353 - accuracy: 0.9000 - val_loss: 0.0336 - val_accuracy: 0.9059\n", + "Epoch 66/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0351 - accuracy: 0.8996\n", + " (2.5034880893370737, 1e-05)-DP guarantees for epoch 66 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0351 - accuracy: 0.8996 - val_loss: 0.0334 - val_accuracy: 0.9070\n", + "Epoch 67/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0350 - accuracy: 0.9003\n", + " (2.523024133549594, 1e-05)-DP guarantees for epoch 67 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0349 - accuracy: 0.9003 - val_loss: 0.0333 - val_accuracy: 0.9069\n", + "Epoch 68/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0348 - accuracy: 0.9005\n", + " (2.542560178527111, 1e-05)-DP guarantees for epoch 68 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0348 - accuracy: 0.9005 - val_loss: 0.0332 - val_accuracy: 0.9071\n", + "Epoch 69/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0346 - accuracy: 0.9006\n", + " (2.5620962223364145, 1e-05)-DP guarantees for epoch 69 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0347 - accuracy: 0.9007 - val_loss: 0.0329 - val_accuracy: 0.9081\n", + "Epoch 70/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0345 - accuracy: 0.9015\n", + " (2.5816322672410785, 1e-05)-DP guarantees for epoch 70 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0345 - accuracy: 0.9014 - val_loss: 0.0327 - val_accuracy: 0.9069\n", + "Epoch 71/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0343 - accuracy: 0.9017\n", + " (2.601168310806795, 1e-05)-DP guarantees for epoch 71 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0343 - accuracy: 0.9019 - val_loss: 0.0326 - val_accuracy: 0.9090\n", + "Epoch 72/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0342 - accuracy: 0.9021\n", + " (2.620704354996593, 1e-05)-DP guarantees for epoch 72 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0342 - accuracy: 0.9022 - val_loss: 0.0324 - val_accuracy: 0.9089\n", + "Epoch 73/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0340 - accuracy: 0.9018\n", + " (2.640240400625916, 1e-05)-DP guarantees for epoch 73 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0339 - accuracy: 0.9020 - val_loss: 0.0322 - val_accuracy: 0.9096\n", + "Epoch 74/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0339 - accuracy: 0.9018\n", + " (2.659776444789028, 1e-05)-DP guarantees for epoch 74 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0338 - accuracy: 0.9022 - val_loss: 0.0320 - val_accuracy: 0.9103\n", + "Epoch 75/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0335 - accuracy: 0.9024\n", + " (2.679312488654814, 1e-05)-DP guarantees for epoch 75 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0335 - accuracy: 0.9024 - val_loss: 0.0318 - val_accuracy: 0.9088\n", + "Epoch 76/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0333 - accuracy: 0.9025\n", + " (2.69884853278786, 1e-05)-DP guarantees for epoch 76 \n", + "\n", + "60/60 [==============================] - 2s 29ms/step - loss: 0.0333 - accuracy: 0.9023 - val_loss: 0.0315 - val_accuracy: 0.9098\n", + "Epoch 77/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0332 - accuracy: 0.9033\n", + " (2.7183845763895516, 1e-05)-DP guarantees for epoch 77 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0332 - accuracy: 0.9033 - val_loss: 0.0314 - val_accuracy: 0.9125\n", + "Epoch 78/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0330 - accuracy: 0.9046\n", + " (2.737920620600221, 1e-05)-DP guarantees for epoch 78 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0330 - accuracy: 0.9048 - val_loss: 0.0313 - val_accuracy: 0.9119\n", + "Epoch 79/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0328 - accuracy: 0.9053\n", + " (2.7574566653298858, 1e-05)-DP guarantees for epoch 79 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0328 - accuracy: 0.9053 - val_loss: 0.0311 - val_accuracy: 0.9115\n", + "Epoch 80/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0328 - accuracy: 0.9052\n", + " (2.7769927101097007, 1e-05)-DP guarantees for epoch 80 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0327 - accuracy: 0.9056 - val_loss: 0.0310 - val_accuracy: 0.9118\n", + "Epoch 81/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0325 - accuracy: 0.9056\n", + " (2.796528753679695, 1e-05)-DP guarantees for epoch 81 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0325 - accuracy: 0.9056 - val_loss: 0.0308 - val_accuracy: 0.9114\n", + "Epoch 82/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0324 - accuracy: 0.9057\n", + " (2.816064798903292, 1e-05)-DP guarantees for epoch 82 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0324 - accuracy: 0.9057 - val_loss: 0.0307 - val_accuracy: 0.9114\n", + "Epoch 83/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0323 - accuracy: 0.9053\n", + " (2.8356008431856474, 1e-05)-DP guarantees for epoch 83 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0322 - accuracy: 0.9057 - val_loss: 0.0305 - val_accuracy: 0.9117\n", + "Epoch 84/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0320 - accuracy: 0.9063\n", + " (2.8551368864333964, 1e-05)-DP guarantees for epoch 84 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0320 - accuracy: 0.9063 - val_loss: 0.0303 - val_accuracy: 0.9117\n", + "Epoch 85/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0318 - accuracy: 0.9064\n", + " (2.8746729305801413, 1e-05)-DP guarantees for epoch 85 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0318 - accuracy: 0.9064 - val_loss: 0.0302 - val_accuracy: 0.9121\n", + "Epoch 86/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0317 - accuracy: 0.9074\n", + " (2.894208975473722, 1e-05)-DP guarantees for epoch 86 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0316 - accuracy: 0.9076 - val_loss: 0.0299 - val_accuracy: 0.9132\n", + "Epoch 87/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0314 - accuracy: 0.9078\n", + " (2.9137450193835823, 1e-05)-DP guarantees for epoch 87 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0314 - accuracy: 0.9076 - val_loss: 0.0298 - val_accuracy: 0.9123\n", + "Epoch 88/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0313 - accuracy: 0.9086\n", + " (2.9332810632263646, 1e-05)-DP guarantees for epoch 88 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0313 - accuracy: 0.9086 - val_loss: 0.0299 - val_accuracy: 0.9133\n", + "Epoch 89/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0313 - accuracy: 0.9087\n", + " (2.952713799856404, 1e-05)-DP guarantees for epoch 89 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0313 - accuracy: 0.9087 - val_loss: 0.0298 - val_accuracy: 0.9140\n", + "Epoch 90/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0312 - accuracy: 0.9097\n", + " (2.970615400210975, 1e-05)-DP guarantees for epoch 90 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0312 - accuracy: 0.9097 - val_loss: 0.0298 - val_accuracy: 0.9127\n", + "Epoch 91/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0312 - accuracy: 0.9091\n", + " (2.987618328313939, 1e-05)-DP guarantees for epoch 91 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0312 - accuracy: 0.9093 - val_loss: 0.0297 - val_accuracy: 0.9132\n" + ] + } + ], + "source": [ + "hist = model.fit(\n", + " ds_train,\n", + " epochs=num_epochs,\n", + " validation_data=ds_test,\n", + " callbacks=[\n", + " # accounting is done thanks to a callback\n", + " DP_Accountant(log_fn=\"logging\"), # wandb.log also available.\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "e1cbeee4-c204-454f-8f6f-20273b0169b7", + "metadata": {}, + "source": [ + "The model can be further improved by tuning various hyper-parameters, by adding layers (see `advanced_cifar10.ipynb` tutorial). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fedc70ab-ccd5-4239-9d62-416d680af324", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/notebooks/demo_fake.ipynb b/docs/notebooks/demo_fake.ipynb deleted file mode 100644 index 061deb7..0000000 --- a/docs/notebooks/demo_fake.ipynb +++ /dev/null @@ -1,101 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## This is a fake demo notebook" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Hello World!\n" - ] - } - ], - "source": [ - "print(\"Hello World!\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This print is such a classic!" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1 + 2 = 3\n" - ] - } - ], - "source": [ - "a = 1\n", - "b = 2\n", - "\n", - "c = np.sum([a, b])\n", - "\n", - "print(f\"{a} + {b} = {c}\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This one is a little bit more fancy!" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.8" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..6edbb83 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,16 @@ +# Tutorials + +This folder contains two notebooks illustrating the usage of the library on Mnist and + Cifar10 datasets. + +The notebooks are self-contained and can be run as is. + +The requirements are given in the `requirements.txt` file. + +## Mnist + +The notebook `basics_mnist.ipynb` is intended to be a quick start guide to the library. + +## Cifar10 + +The notebook `advanced_cifar10.ipynb` is intended to show more advanced features of the library, such as residual connections and loss gradient clipping. diff --git a/examples/advanced_cifar10.ipynb b/examples/advanced_cifar10.ipynb new file mode 100644 index 0000000..f37b750 --- /dev/null +++ b/examples/advanced_cifar10.ipynb @@ -0,0 +1,1895 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "f7bf07b9-d489-4484-acb9-175cb740dc60", + "metadata": {}, + "source": [ + "# Cifar-10 tutorial\n", + "\n", + "This notebook introduces advanced tools like MLP mixer, which involves residual connections with Lipschitz guarantees, other input space (HSB) and loss gradient clipping.\n", + "\n", + "## Imports" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "8a0eebdf-6082-4d00-aa14-b42953217a93", + "metadata": {}, + "source": [ + "The library is based on tensorflow." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "91c2965e-0375-4966-bc55-776204af9d69", + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "9356cd9b-6f79-45f1-8f2e-c46a526c4ae7", + "metadata": {}, + "source": [ + "### lip-dp dependencies\n", + "\n", + "The need a model `DP_Model` that handles the noisification of gradients. It is trained with a `loss`. The model is initialized with the convenience function `DPParameters`. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1e5d58f8-386c-44c7-8c5d-e5b69b5be231", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp import losses\n", + "from deel.lipdp.model import DP_Model\n", + "from deel.lipdp.model import DPParameters" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "3a247cd3-48d6-4854-92df-01420d3bea80", + "metadata": {}, + "source": [ + "The `DP_Accountant` callback keeps track of $(\\epsilon,\\delta)$-DP values epoch after epoch. In practice we may be interested in reaching the maximum val_accuracy under privacy constraint $\\epsilon$: the convenience function `get_max_epochs` exactly does that by performing a dichotomy search over the number of epochs." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "950c5c56-4b34-4653-aaf3-7d97acc1f5f2", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.model import DP_Accountant\n", + "from deel.lipdp.sensitivity import get_max_epochs" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "893d3078-5166-428c-9cb1-d29ec1f05d71", + "metadata": {}, + "source": [ + "The framework requires a control of the maximum norm of inputs. This can be ensured with input clipping for example: `bound_clip_value`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f395c9fc-b67d-4fd2-be4b-b1c43221ebcb", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.pipeline import bound_clip_value\n", + "from deel.lipdp.pipeline import load_and_prepare_data" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "e54a79db-24b4-4dae-b684-170fa743bc5d", + "metadata": {}, + "source": [ + "## Setup DP Lipschitz model\n", + "\n", + "Here we apply the \"global\" strategy, with a noise multiplier $2.5$. Note that for Cifar-10 the dataset size is $N=50,000$, and it is recommended that $\\delta<\\frac{1}{N}$. So we propose a value of $\\delta=10^{-5}$. " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f79ea3b0-33a6-401c-a3a3-e314939fd269", + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "dp_parameters = DPParameters(\n", + " noisify_strategy=\"global\",\n", + " noise_multiplier=4.0,\n", + " delta=1e-5,\n", + ")\n", + "\n", + "epsilon_max = 10.0" + ] + }, + { + "cell_type": "markdown", + "id": "ba392eec-4451-49e5-bd45-883af7aa2d40", + "metadata": {}, + "source": [ + "With many parameters, it can be interesting to use `local` strategy over `global`, since the effective noise growths as $\\mathcal{O}(\\sqrt{(D)})$ in `global` strategy. Since the privacy leakge is more important is `local` strategy, we compensate with high `noise_multiplier`.\n", + "\n", + "![DP-SGD accountant](fig_accountant.png \"DP-SGD accountant\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "6482128c-ac2e-4cdd-9bbd-6d3172c292b1", + "metadata": {}, + "source": [ + "### Loading the data\n", + "\n", + "We clip the elementwise input upper-bound to $40.0$. The operates in `HSV` space. The train set is augmented with random left/right flips." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a8ed0fc4-4655-4bad-a6ac-8697cd5bc7a6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-05-24 17:27:24.335576: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2023-05-24 17:27:24.905888: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 47066 MB memory: -> device: 0, name: Quadro RTX 8000, pci bus id: 0000:03:00.0, compute capability: 7.5\n" + ] + } + ], + "source": [ + "def augmentation_fct(image, label):\n", + " image = tf.image.random_flip_left_right(image)\n", + " return image, label\n", + "\n", + "input_upper_bound = 30.0\n", + "ds_train, ds_test, dataset_metadata = load_and_prepare_data(\n", + " \"cifar10\",\n", + " colorspace=\"HSV\",\n", + " batch_size=10_000,\n", + " drop_remainder=True, # accounting assumes fixed batch size\n", + " augmentation_fct=augmentation_fct,\n", + " bound_fct=bound_clip_value( # other strategies are possible, like normalization.\n", + " input_upper_bound\n", + " ), # clipping preprocessing allows to control input bound\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "eb356c04-a836-4f49-93d7-7e0cc4c12b1d", + "metadata": {}, + "source": [ + "### Build the MLP Mixer model\n", + "\n", + "We imitate the interface of Keras. We use common layers found in deel-lip, which a wrapper that handles the bound propagation. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "be32d5d7-efc7-4cc6-91bc-1a2b9bedddca", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.layers import DP_AddBias\n", + "from deel.lipdp.layers import DP_BoundedInput\n", + "from deel.lipdp.layers import DP_ClipGradient\n", + "from deel.lipdp.layers import DP_Flatten\n", + "from deel.lipdp.layers import DP_GroupSort\n", + "from deel.lipdp.layers import DP_Lambda\n", + "from deel.lipdp.layers import DP_LayerCentering\n", + "from deel.lipdp.layers import DP_Permute\n", + "from deel.lipdp.layers import DP_QuickSpectralDense\n", + "from deel.lipdp.layers import DP_Reshape\n", + "from deel.lipdp.layers import DP_ScaledGlobalL2NormPooling2D\n", + "from deel.lipdp.layers import DP_ScaledL2NormPooling2D\n", + "from deel.lipdp.layers import DP_QuickSpectralConv2D" + ] + }, + { + "cell_type": "markdown", + "id": "15b21796-b8e7-41d3-8718-0efdb5d92179", + "metadata": {}, + "source": [ + "The MLP Mixer uses residual connections. Residuals connections are handled with the utility function `make_residuals` that wraps the layers inside a block that handles bounds propagation.\n", + "\n", + "![Residuals Connections](residuals.png \"Residual Connections\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0590e72d-ce2e-48c1-a8ae-e86ecd32b524", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.layers import make_residuals" + ] + }, + { + "cell_type": "markdown", + "id": "9d75f692-c66d-4318-a915-f16707ed87fa", + "metadata": {}, + "source": [ + "Now, we proceed with the creation of the environnement." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "30cf44ed-653b-4eaa-8ed9-26e4815db511", + "metadata": {}, + "outputs": [], + "source": [ + "skip_connections = False # use skip connections, like in original MLP Mixer architecture.\n", + "clip_loss_gradient = 2**0.5 # elementwise gradient is clipped to value sqrt(2) - which is the maximum for CCE loss.\n", + "add_biases = False # Add biases after linear transformations.\n", + "biases_norm_max = 0.05\n", + "hidden_size = 64\n", + "mlp_seq_dim = 64\n", + "mlp_channel_dim = 128\n", + "num_mixer_layers = 2 # Two MLP Mixer blocks.\n", + "layer_centering = False # Centering operation (like LayerNormalization without the reducing operation). Linear 1-Lipschitz.\n", + "patch_size = 4 # Number of pixels in each patch.\n", + "\n", + "def create_MLP_Mixer(dp_parameters, dataset_metadata, upper_bound):\n", + " input_shape = (32, 32, 3)\n", + " layers = [DP_BoundedInput(input_shape=input_shape, upper_bound=upper_bound)]\n", + "\n", + " layers.append(\n", + " DP_Lambda(\n", + " tf.image.extract_patches,\n", + " arguments=dict(\n", + " sizes=[1, patch_size, patch_size, 1],\n", + " strides=[1, patch_size, patch_size, 1],\n", + " rates=[1, 1, 1, 1],\n", + " padding=\"VALID\",\n", + " ),\n", + " )\n", + " )\n", + "\n", + " seq_len = (input_shape[0] // patch_size) * (input_shape[1] // patch_size)\n", + "\n", + " layers.append(DP_Reshape((seq_len, (patch_size ** 2) * input_shape[-1])))\n", + " layers.append(\n", + " DP_QuickSpectralDense(\n", + " units=hidden_size, use_bias=False, kernel_initializer=\"identity\"\n", + " )\n", + " )\n", + "\n", + " for _ in range(num_mixer_layers):\n", + " to_add = [\n", + " DP_Permute((2, 1)),\n", + " DP_QuickSpectralDense(\n", + " units=mlp_seq_dim, use_bias=False, kernel_initializer=\"identity\"\n", + " ),\n", + " ]\n", + " if add_biases:\n", + " to_add.append(DP_AddBias(biases_norm_max))\n", + " to_add.append(DP_GroupSort(2))\n", + " if layer_centering:\n", + " to_add.append(DP_LayerCentering())\n", + " to_add += [\n", + " DP_QuickSpectralDense(\n", + " units=seq_len, use_bias=False, kernel_initializer=\"identity\"\n", + " ),\n", + " DP_Permute((2, 1)),\n", + " ]\n", + "\n", + " if skip_connections:\n", + " layers += make_residuals(\"1-lip-add\", to_add)\n", + " else:\n", + " layers += to_add\n", + "\n", + " to_add = [\n", + " DP_QuickSpectralDense(\n", + " units=mlp_channel_dim, use_bias=False, kernel_initializer=\"identity\"\n", + " ),\n", + " ]\n", + " if add_biases:\n", + " to_add.append(DP_AddBias(biases_norm_max))\n", + " to_add.append(DP_GroupSort(2))\n", + " if layer_centering:\n", + " to_add.append(DP_LayerCentering())\n", + " to_add.append(\n", + " DP_QuickSpectralDense(\n", + " units=hidden_size, use_bias=False, kernel_initializer=\"identity\"\n", + " )\n", + " )\n", + "\n", + " if skip_connections:\n", + " layers += make_residuals(\"1-lip-add\", to_add)\n", + " else:\n", + " layers += to_add\n", + "\n", + " layers.append(DP_Flatten())\n", + " layers.append(\n", + " DP_QuickSpectralDense(units=10, use_bias=False, kernel_initializer=\"identity\")\n", + " )\n", + "\n", + " layers.append(DP_ClipGradient(clip_loss_gradient))\n", + "\n", + " model = DP_Model(\n", + " layers,\n", + " dp_parameters=dp_parameters,\n", + " dataset_metadata=dataset_metadata,\n", + " name=\"mlp_mixer\",\n", + " )\n", + "\n", + " model.build(input_shape=(None, *input_shape))\n", + "\n", + " return model" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "09777811", + "metadata": {}, + "source": [ + "We compile the model with:\n", + "* any first order optimizer (e.g Adam). No adaptation is needed.\n", + "* a loss with known Lipschitz constant, e.g Categorical Cross-entropy with temperature." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "efd97e75-34f0-49fa-ad2c-1816247f1611", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"mlp_mixer\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " dp__bounded_input (DP_Bound multiple 0 \n", + " edInput) \n", + " \n", + " dp__lambda (DP_Lambda) multiple 0 \n", + " \n", + " dp__reshape (DP_Reshape) multiple 0 \n", + " \n", + " dp__quick_spectral_dense (D multiple 3072 \n", + " P_QuickSpectralDense) \n", + " \n", + " dp__permute (DP_Permute) multiple 0 \n", + " \n", + " dp__quick_spectral_dense_1 multiple 4096 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__group_sort (DP_GroupSor multiple 0 \n", + " t) \n", + " \n", + " dp__quick_spectral_dense_2 multiple 4096 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__permute_1 (DP_Permute) multiple 0 \n", + " \n", + " dp__quick_spectral_dense_3 multiple 8192 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__group_sort_1 (DP_GroupS multiple 0 \n", + " ort) \n", + " \n", + " dp__quick_spectral_dense_4 multiple 8192 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__permute_2 (DP_Permute) multiple 0 \n", + " \n", + " dp__quick_spectral_dense_5 multiple 4096 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__group_sort_2 (DP_GroupS multiple 0 \n", + " ort) \n", + " \n", + " dp__quick_spectral_dense_6 multiple 4096 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__permute_3 (DP_Permute) multiple 0 \n", + " \n", + " dp__quick_spectral_dense_7 multiple 8192 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__group_sort_3 (DP_GroupS multiple 0 \n", + " ort) \n", + " \n", + " dp__quick_spectral_dense_8 multiple 8192 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__flatten (DP_Flatten) multiple 0 \n", + " \n", + " dp__quick_spectral_dense_9 multiple 40960 \n", + " (DP_QuickSpectralDense) \n", + " \n", + " dp__clip_gradient (DP_ClipG multiple 0 \n", + " radient) \n", + " \n", + "=================================================================\n", + "Total params: 93,184\n", + "Trainable params: 93,184\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "model = create_MLP_Mixer(dp_parameters, dataset_metadata, input_upper_bound)\n", + "model.compile(\n", + " # Compile model using DP loss\n", + " loss=losses.DP_TauCategoricalCrossentropy(256.0),\n", + " # this method is compatible with any first order optimizer\n", + " optimizer=tf.keras.optimizers.Adam(learning_rate=2e-4),\n", + " metrics=[\"accuracy\"],\n", + ")\n", + "model.summary()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "28ae2da5-ed40-4131-8721-73bbc73fa68d", + "metadata": {}, + "source": [ + "Observe that the model contains only 246K parmaeters. This is an advantage of MLP Mixer architectures: the number of parameters is small. However the number of FLOPS can be quite high. Without gradient clipping, huge batch sizes can be used, which benefits to privacy/utility ratio. \n", + "\n", + "In order to control epsilon, we compute the adequate number of epochs." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "dd611afd-be30-4bd3-b658-48d1961247aa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch bounds = (0, 512.0) and epsilon = 14.81894855578722 at epoch 512.0\n", + "epoch bounds = (256.0, 512.0) and epsilon = 9.820083418023108 at epoch 256.0\n", + "epoch bounds = (256.0, 384.0) and epsilon = 12.31951600358698 at epoch 384.0\n", + "epoch bounds = (256.0, 320.0) and epsilon = 11.069799714608529 at epoch 320.0\n", + "epoch bounds = (256.0, 288.0) and epsilon = 10.44494156631582 at epoch 288.0\n", + "epoch bounds = (256.0, 272.0) and epsilon = 10.132512492169463 at epoch 272.0\n", + "epoch bounds = (264.0, 272.0) and epsilon = 9.976297955096285 at epoch 264.0\n", + "epoch bounds = (264.0, 268.0) and epsilon = 10.054405223632873 at epoch 268.0\n", + "epoch bounds = (264.0, 266.0) and epsilon = 10.015351589364581 at epoch 266.0\n", + "epoch bounds = (265.0, 266.0) and epsilon = 9.995824772230431 at epoch 265.0\n" + ] + } + ], + "source": [ + "num_epochs = get_max_epochs(epsilon_max, model)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "53e94244", + "metadata": {}, + "source": [ + "## Train the model\n", + "\n", + "The model can be trained, and the DP Accountant will automatically track the privacy loss." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "0ddcb192-547e-400e-87bb-2d4246185c64", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.1751 - accuracy: 0.1077\n", + " (0.5205893807331654, 1e-05)-DP guarantees for epoch 1 \n", + "\n", + "5/5 [==============================] - 8s 547ms/step - loss: 0.1751 - accuracy: 0.1077 - val_loss: 0.1409 - val_accuracy: 0.1045\n", + "Epoch 2/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.1243 - accuracy: 0.1061\n", + " (0.7169615437758403, 1e-05)-DP guarantees for epoch 2 \n", + "\n", + "5/5 [==============================] - 3s 451ms/step - loss: 0.1243 - accuracy: 0.1061 - val_loss: 0.1145 - val_accuracy: 0.1055\n", + "Epoch 3/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.1124 - accuracy: 0.1170\n", + " (0.8714581783028138, 1e-05)-DP guarantees for epoch 3 \n", + "\n", + "5/5 [==============================] - 3s 386ms/step - loss: 0.1124 - accuracy: 0.1170 - val_loss: 0.1095 - val_accuracy: 0.1124\n", + "Epoch 4/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.1051 - accuracy: 0.1178\n", + " (1.0041033056975341, 1e-05)-DP guarantees for epoch 4 \n", + "\n", + "5/5 [==============================] - 3s 416ms/step - loss: 0.1051 - accuracy: 0.1178 - val_loss: 0.1019 - val_accuracy: 0.1173\n", + "Epoch 5/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0994 - accuracy: 0.1219\n", + " (1.121902451763874, 1e-05)-DP guarantees for epoch 5 \n", + "\n", + "5/5 [==============================] - 3s 404ms/step - loss: 0.0994 - accuracy: 0.1219 - val_loss: 0.0973 - val_accuracy: 0.1199\n", + "Epoch 6/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0950 - accuracy: 0.1287\n", + " (1.2297900098052366, 1e-05)-DP guarantees for epoch 6 \n", + "\n", + "5/5 [==============================] - 3s 372ms/step - loss: 0.0950 - accuracy: 0.1287 - val_loss: 0.0952 - val_accuracy: 0.1274\n", + "Epoch 7/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0927 - accuracy: 0.1332\n", + " (1.3301791512711914, 1e-05)-DP guarantees for epoch 7 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0927 - accuracy: 0.1332 - val_loss: 0.0917 - val_accuracy: 0.1319\n", + "Epoch 8/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0896 - accuracy: 0.1396\n", + " (1.425115891691246, 1e-05)-DP guarantees for epoch 8 \n", + "\n", + "5/5 [==============================] - 3s 360ms/step - loss: 0.0896 - accuracy: 0.1396 - val_loss: 0.0898 - val_accuracy: 0.1348\n", + "Epoch 9/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0878 - accuracy: 0.1423\n", + " (1.512644960027369, 1e-05)-DP guarantees for epoch 9 \n", + "\n", + "5/5 [==============================] - 2s 367ms/step - loss: 0.0878 - accuracy: 0.1423 - val_loss: 0.0876 - val_accuracy: 0.1386\n", + "Epoch 10/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0857 - accuracy: 0.1461\n", + " (1.599192443478913, 1e-05)-DP guarantees for epoch 10 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0857 - accuracy: 0.1461 - val_loss: 0.0859 - val_accuracy: 0.1469\n", + "Epoch 11/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0840 - accuracy: 0.1543\n", + " (1.6782666312983627, 1e-05)-DP guarantees for epoch 11 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0840 - accuracy: 0.1543 - val_loss: 0.0844 - val_accuracy: 0.1497\n", + "Epoch 12/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0829 - accuracy: 0.1556\n", + " (1.7566369758486253, 1e-05)-DP guarantees for epoch 12 \n", + "\n", + "5/5 [==============================] - 3s 358ms/step - loss: 0.0829 - accuracy: 0.1556 - val_loss: 0.0829 - val_accuracy: 0.1516\n", + "Epoch 13/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0816 - accuracy: 0.1578\n", + " (1.833150779023074, 1e-05)-DP guarantees for epoch 13 \n", + "\n", + "5/5 [==============================] - 3s 367ms/step - loss: 0.0816 - accuracy: 0.1578 - val_loss: 0.0819 - val_accuracy: 0.1565\n", + "Epoch 14/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0806 - accuracy: 0.1618\n", + " (1.903546174784228, 1e-05)-DP guarantees for epoch 14 \n", + "\n", + "5/5 [==============================] - 3s 370ms/step - loss: 0.0806 - accuracy: 0.1618 - val_loss: 0.0809 - val_accuracy: 0.1592\n", + "Epoch 15/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0794 - accuracy: 0.1657\n", + " (1.9739415712927695, 1e-05)-DP guarantees for epoch 15 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0794 - accuracy: 0.1657 - val_loss: 0.0799 - val_accuracy: 0.1614\n", + "Epoch 16/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0788 - accuracy: 0.1654\n", + " (2.044336966003477, 1e-05)-DP guarantees for epoch 16 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0788 - accuracy: 0.1654 - val_loss: 0.0791 - val_accuracy: 0.1642\n", + "Epoch 17/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0778 - accuracy: 0.1696\n", + " (2.111107170532668, 1e-05)-DP guarantees for epoch 17 \n", + "\n", + "5/5 [==============================] - 3s 373ms/step - loss: 0.0778 - accuracy: 0.1696 - val_loss: 0.0783 - val_accuracy: 0.1667\n", + "Epoch 18/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0773 - accuracy: 0.1720\n", + " (2.173720558035018, 1e-05)-DP guarantees for epoch 18 \n", + "\n", + "5/5 [==============================] - 3s 355ms/step - loss: 0.0773 - accuracy: 0.1720 - val_loss: 0.0775 - val_accuracy: 0.1713\n", + "Epoch 19/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0765 - accuracy: 0.1745\n", + " (2.236333946199693, 1e-05)-DP guarantees for epoch 19 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0765 - accuracy: 0.1745 - val_loss: 0.0768 - val_accuracy: 0.1718\n", + "Epoch 20/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0755 - accuracy: 0.1785\n", + " (2.298947335447459, 1e-05)-DP guarantees for epoch 20 \n", + "\n", + "5/5 [==============================] - 3s 351ms/step - loss: 0.0755 - accuracy: 0.1785 - val_loss: 0.0761 - val_accuracy: 0.1749\n", + "Epoch 21/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0751 - accuracy: 0.1809\n", + " (2.3615607218535017, 1e-05)-DP guarantees for epoch 21 \n", + "\n", + "5/5 [==============================] - 2s 370ms/step - loss: 0.0751 - accuracy: 0.1809 - val_loss: 0.0755 - val_accuracy: 0.1779\n", + "Epoch 22/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0744 - accuracy: 0.1807\n", + " (2.424031214499055, 1e-05)-DP guarantees for epoch 22 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0744 - accuracy: 0.1807 - val_loss: 0.0749 - val_accuracy: 0.1782\n", + "Epoch 23/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0737 - accuracy: 0.1829\n", + " (2.4794700865598074, 1e-05)-DP guarantees for epoch 23 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0737 - accuracy: 0.1829 - val_loss: 0.0744 - val_accuracy: 0.1796\n", + "Epoch 24/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0735 - accuracy: 0.1836\n", + " (2.5344857802909178, 1e-05)-DP guarantees for epoch 24 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0735 - accuracy: 0.1836 - val_loss: 0.0738 - val_accuracy: 0.1815\n", + "Epoch 25/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0730 - accuracy: 0.1853\n", + " (2.589501472054093, 1e-05)-DP guarantees for epoch 25 \n", + "\n", + "5/5 [==============================] - 3s 371ms/step - loss: 0.0730 - accuracy: 0.1853 - val_loss: 0.0733 - val_accuracy: 0.1836\n", + "Epoch 26/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0726 - accuracy: 0.1884\n", + " (2.6445171621630954, 1e-05)-DP guarantees for epoch 26 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0726 - accuracy: 0.1884 - val_loss: 0.0729 - val_accuracy: 0.1857\n", + "Epoch 27/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0722 - accuracy: 0.1881\n", + " (2.699532854747239, 1e-05)-DP guarantees for epoch 27 \n", + "\n", + "5/5 [==============================] - 2s 349ms/step - loss: 0.0722 - accuracy: 0.1881 - val_loss: 0.0723 - val_accuracy: 0.1882\n", + "Epoch 28/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0715 - accuracy: 0.1901\n", + " (2.754548546420506, 1e-05)-DP guarantees for epoch 28 \n", + "\n", + "5/5 [==============================] - 3s 371ms/step - loss: 0.0715 - accuracy: 0.1901 - val_loss: 0.0718 - val_accuracy: 0.1879\n", + "Epoch 29/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0711 - accuracy: 0.1928\n", + " (2.809564239271509, 1e-05)-DP guarantees for epoch 29 \n", + "\n", + "5/5 [==============================] - 3s 360ms/step - loss: 0.0711 - accuracy: 0.1928 - val_loss: 0.0715 - val_accuracy: 0.1915\n", + "Epoch 30/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0710 - accuracy: 0.1933\n", + " (2.8645799306976425, 1e-05)-DP guarantees for epoch 30 \n", + "\n", + "5/5 [==============================] - 2s 362ms/step - loss: 0.0710 - accuracy: 0.1933 - val_loss: 0.0710 - val_accuracy: 0.1922\n", + "Epoch 31/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0701 - accuracy: 0.1993\n", + " (2.915773408283026, 1e-05)-DP guarantees for epoch 31 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0701 - accuracy: 0.1993 - val_loss: 0.0706 - val_accuracy: 0.1940\n", + "Epoch 32/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0698 - accuracy: 0.1996\n", + " (2.9633676512735834, 1e-05)-DP guarantees for epoch 32 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0698 - accuracy: 0.1996 - val_loss: 0.0702 - val_accuracy: 0.1964\n", + "Epoch 33/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0695 - accuracy: 0.2004\n", + " (3.010961895901816, 1e-05)-DP guarantees for epoch 33 \n", + "\n", + "5/5 [==============================] - 3s 375ms/step - loss: 0.0695 - accuracy: 0.2004 - val_loss: 0.0699 - val_accuracy: 0.1984\n", + "Epoch 34/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0692 - accuracy: 0.1995\n", + " (3.0585561401091397, 1e-05)-DP guarantees for epoch 34 \n", + "\n", + "5/5 [==============================] - 3s 352ms/step - loss: 0.0692 - accuracy: 0.1995 - val_loss: 0.0696 - val_accuracy: 0.1975\n", + "Epoch 35/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0685 - accuracy: 0.2045\n", + " (3.1061503817189315, 1e-05)-DP guarantees for epoch 35 \n", + "\n", + "5/5 [==============================] - 3s 349ms/step - loss: 0.0685 - accuracy: 0.2045 - val_loss: 0.0692 - val_accuracy: 0.2009\n", + "Epoch 36/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0686 - accuracy: 0.2045\n", + " (3.1537446235861095, 1e-05)-DP guarantees for epoch 36 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0686 - accuracy: 0.2045 - val_loss: 0.0689 - val_accuracy: 0.2032\n", + "Epoch 37/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0684 - accuracy: 0.2033\n", + " (3.2013388677062005, 1e-05)-DP guarantees for epoch 37 \n", + "\n", + "5/5 [==============================] - 2s 349ms/step - loss: 0.0684 - accuracy: 0.2033 - val_loss: 0.0686 - val_accuracy: 0.2033\n", + "Epoch 38/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0684 - accuracy: 0.2024\n", + " (3.2489331117939875, 1e-05)-DP guarantees for epoch 38 \n", + "\n", + "5/5 [==============================] - 3s 352ms/step - loss: 0.0684 - accuracy: 0.2024 - val_loss: 0.0683 - val_accuracy: 0.2046\n", + "Epoch 39/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0675 - accuracy: 0.2064\n", + " (3.296527354122463, 1e-05)-DP guarantees for epoch 39 \n", + "\n", + "5/5 [==============================] - 3s 390ms/step - loss: 0.0675 - accuracy: 0.2064 - val_loss: 0.0681 - val_accuracy: 0.2055\n", + "Epoch 40/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0678 - accuracy: 0.2071\n", + " (3.3441215974412257, 1e-05)-DP guarantees for epoch 40 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0678 - accuracy: 0.2071 - val_loss: 0.0679 - val_accuracy: 0.2061\n", + "Epoch 41/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0670 - accuracy: 0.2076\n", + " (3.391715841019588, 1e-05)-DP guarantees for epoch 41 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0670 - accuracy: 0.2076 - val_loss: 0.0676 - val_accuracy: 0.2047\n", + "Epoch 42/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0670 - accuracy: 0.2074\n", + " (3.4393100820764655, 1e-05)-DP guarantees for epoch 42 \n", + "\n", + "5/5 [==============================] - 3s 362ms/step - loss: 0.0670 - accuracy: 0.2074 - val_loss: 0.0673 - val_accuracy: 0.2077\n", + "Epoch 43/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0668 - accuracy: 0.2091\n", + " (3.4869043257012042, 1e-05)-DP guarantees for epoch 43 \n", + "\n", + "5/5 [==============================] - 3s 365ms/step - loss: 0.0668 - accuracy: 0.2091 - val_loss: 0.0671 - val_accuracy: 0.2098\n", + "Epoch 44/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0664 - accuracy: 0.2133\n", + " (3.5344943006583662, 1e-05)-DP guarantees for epoch 44 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0664 - accuracy: 0.2133 - val_loss: 0.0668 - val_accuracy: 0.2111\n", + "Epoch 45/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0662 - accuracy: 0.2116\n", + " (3.577278802435221, 1e-05)-DP guarantees for epoch 45 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0662 - accuracy: 0.2116 - val_loss: 0.0666 - val_accuracy: 0.2110\n", + "Epoch 46/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0658 - accuracy: 0.2144\n", + " (3.6176202954309518, 1e-05)-DP guarantees for epoch 46 \n", + "\n", + "5/5 [==============================] - 3s 363ms/step - loss: 0.0658 - accuracy: 0.2144 - val_loss: 0.0663 - val_accuracy: 0.2136\n", + "Epoch 47/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0660 - accuracy: 0.2136\n", + " (3.6579617884266824, 1e-05)-DP guarantees for epoch 47 \n", + "\n", + "5/5 [==============================] - 3s 361ms/step - loss: 0.0660 - accuracy: 0.2136 - val_loss: 0.0662 - val_accuracy: 0.2103\n", + "Epoch 48/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0658 - accuracy: 0.2124\n", + " (3.698303280878773, 1e-05)-DP guarantees for epoch 48 \n", + "\n", + "5/5 [==============================] - 3s 378ms/step - loss: 0.0658 - accuracy: 0.2124 - val_loss: 0.0660 - val_accuracy: 0.2126\n", + "Epoch 49/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0651 - accuracy: 0.2170\n", + " (3.7386447748463074, 1e-05)-DP guarantees for epoch 49 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0651 - accuracy: 0.2170 - val_loss: 0.0658 - val_accuracy: 0.2141\n", + "Epoch 50/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0650 - accuracy: 0.2147\n", + " (3.778986264959221, 1e-05)-DP guarantees for epoch 50 \n", + "\n", + "5/5 [==============================] - 2s 359ms/step - loss: 0.0650 - accuracy: 0.2147 - val_loss: 0.0657 - val_accuracy: 0.2139\n", + "Epoch 51/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0649 - accuracy: 0.2157\n", + " (3.819327759198358, 1e-05)-DP guarantees for epoch 51 \n", + "\n", + "5/5 [==============================] - 3s 362ms/step - loss: 0.0649 - accuracy: 0.2157 - val_loss: 0.0654 - val_accuracy: 0.2154\n", + "Epoch 52/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0646 - accuracy: 0.2177\n", + " (3.859669252353283, 1e-05)-DP guarantees for epoch 52 \n", + "\n", + "5/5 [==============================] - 3s 374ms/step - loss: 0.0646 - accuracy: 0.2177 - val_loss: 0.0652 - val_accuracy: 0.2159\n", + "Epoch 53/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0647 - accuracy: 0.2164\n", + " (3.900010744909916, 1e-05)-DP guarantees for epoch 53 \n", + "\n", + "5/5 [==============================] - 3s 398ms/step - loss: 0.0647 - accuracy: 0.2164 - val_loss: 0.0651 - val_accuracy: 0.2139\n", + "Epoch 54/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0642 - accuracy: 0.2180\n", + " (3.9403522382284417, 1e-05)-DP guarantees for epoch 54 \n", + "\n", + "5/5 [==============================] - 2s 356ms/step - loss: 0.0642 - accuracy: 0.2180 - val_loss: 0.0649 - val_accuracy: 0.2165\n", + "Epoch 55/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0643 - accuracy: 0.2178\n", + " (3.9806937272852823, 1e-05)-DP guarantees for epoch 55 \n", + "\n", + "5/5 [==============================] - 3s 385ms/step - loss: 0.0643 - accuracy: 0.2178 - val_loss: 0.0648 - val_accuracy: 0.2190\n", + "Epoch 56/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0642 - accuracy: 0.2194\n", + " (4.021035219696142, 1e-05)-DP guarantees for epoch 56 \n", + "\n", + "5/5 [==============================] - 3s 358ms/step - loss: 0.0642 - accuracy: 0.2194 - val_loss: 0.0646 - val_accuracy: 0.2190\n", + "Epoch 57/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0641 - accuracy: 0.2193\n", + " (4.061376713362479, 1e-05)-DP guarantees for epoch 57 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0641 - accuracy: 0.2193 - val_loss: 0.0644 - val_accuracy: 0.2188\n", + "Epoch 58/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0637 - accuracy: 0.2209\n", + " (4.101718205195644, 1e-05)-DP guarantees for epoch 58 \n", + "\n", + "5/5 [==============================] - 3s 389ms/step - loss: 0.0637 - accuracy: 0.2209 - val_loss: 0.0643 - val_accuracy: 0.2203\n", + "Epoch 59/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0636 - accuracy: 0.2207\n", + " (4.142059698567775, 1e-05)-DP guarantees for epoch 59 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0636 - accuracy: 0.2207 - val_loss: 0.0641 - val_accuracy: 0.2217\n", + "Epoch 60/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0631 - accuracy: 0.2238\n", + " (4.182401188996273, 1e-05)-DP guarantees for epoch 60 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0631 - accuracy: 0.2238 - val_loss: 0.0639 - val_accuracy: 0.2218\n", + "Epoch 61/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0635 - accuracy: 0.2223\n", + " (4.222742681534986, 1e-05)-DP guarantees for epoch 61 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0635 - accuracy: 0.2223 - val_loss: 0.0638 - val_accuracy: 0.2214\n", + "Epoch 62/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0628 - accuracy: 0.2212\n", + " (4.263084178169554, 1e-05)-DP guarantees for epoch 62 \n", + "\n", + "5/5 [==============================] - 3s 358ms/step - loss: 0.0628 - accuracy: 0.2212 - val_loss: 0.0637 - val_accuracy: 0.2214\n", + "Epoch 63/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0629 - accuracy: 0.2236\n", + " (4.303425669322495, 1e-05)-DP guarantees for epoch 63 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0629 - accuracy: 0.2236 - val_loss: 0.0635 - val_accuracy: 0.2238\n", + "Epoch 64/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0628 - accuracy: 0.2244\n", + " (4.343767159305043, 1e-05)-DP guarantees for epoch 64 \n", + "\n", + "5/5 [==============================] - 2s 357ms/step - loss: 0.0628 - accuracy: 0.2244 - val_loss: 0.0633 - val_accuracy: 0.2229\n", + "Epoch 65/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0627 - accuracy: 0.2242\n", + " (4.384108652677016, 1e-05)-DP guarantees for epoch 65 \n", + "\n", + "5/5 [==============================] - 3s 375ms/step - loss: 0.0627 - accuracy: 0.2242 - val_loss: 0.0632 - val_accuracy: 0.2232\n", + "Epoch 66/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0625 - accuracy: 0.2260\n", + " (4.42445014497077, 1e-05)-DP guarantees for epoch 66 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0625 - accuracy: 0.2260 - val_loss: 0.0630 - val_accuracy: 0.2248\n", + "Epoch 67/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0625 - accuracy: 0.2271\n", + " (4.4647916365799585, 1e-05)-DP guarantees for epoch 67 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0625 - accuracy: 0.2271 - val_loss: 0.0628 - val_accuracy: 0.2265\n", + "Epoch 68/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0622 - accuracy: 0.2292\n", + " (4.505133128586104, 1e-05)-DP guarantees for epoch 68 \n", + "\n", + "5/5 [==============================] - 3s 365ms/step - loss: 0.0622 - accuracy: 0.2292 - val_loss: 0.0626 - val_accuracy: 0.2242\n", + "Epoch 69/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0623 - accuracy: 0.2276\n", + " (4.544958472325187, 1e-05)-DP guarantees for epoch 69 \n", + "\n", + "5/5 [==============================] - 2s 359ms/step - loss: 0.0623 - accuracy: 0.2276 - val_loss: 0.0626 - val_accuracy: 0.2254\n", + "Epoch 70/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0619 - accuracy: 0.2288\n", + " (4.580253889044595, 1e-05)-DP guarantees for epoch 70 \n", + "\n", + "5/5 [==============================] - 2s 362ms/step - loss: 0.0619 - accuracy: 0.2288 - val_loss: 0.0624 - val_accuracy: 0.2272\n", + "Epoch 71/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0619 - accuracy: 0.2288\n", + " (4.613504255128257, 1e-05)-DP guarantees for epoch 71 \n", + "\n", + "5/5 [==============================] - 2s 356ms/step - loss: 0.0619 - accuracy: 0.2288 - val_loss: 0.0623 - val_accuracy: 0.2258\n", + "Epoch 72/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0617 - accuracy: 0.2283\n", + " (4.646754619793705, 1e-05)-DP guarantees for epoch 72 \n", + "\n", + "5/5 [==============================] - 3s 379ms/step - loss: 0.0617 - accuracy: 0.2283 - val_loss: 0.0622 - val_accuracy: 0.2262\n", + "Epoch 73/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0615 - accuracy: 0.2309\n", + " (4.680004986868141, 1e-05)-DP guarantees for epoch 73 \n", + "\n", + "5/5 [==============================] - 3s 363ms/step - loss: 0.0615 - accuracy: 0.2309 - val_loss: 0.0621 - val_accuracy: 0.2292\n", + "Epoch 74/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0614 - accuracy: 0.2298\n", + " (4.713255352027643, 1e-05)-DP guarantees for epoch 74 \n", + "\n", + "5/5 [==============================] - 3s 392ms/step - loss: 0.0614 - accuracy: 0.2298 - val_loss: 0.0619 - val_accuracy: 0.2273\n", + "Epoch 75/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0616 - accuracy: 0.2288\n", + " (4.746505714565027, 1e-05)-DP guarantees for epoch 75 \n", + "\n", + "5/5 [==============================] - 2s 346ms/step - loss: 0.0616 - accuracy: 0.2288 - val_loss: 0.0618 - val_accuracy: 0.2283\n", + "Epoch 76/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0613 - accuracy: 0.2314\n", + " (4.779756080992392, 1e-05)-DP guarantees for epoch 76 \n", + "\n", + "5/5 [==============================] - 3s 375ms/step - loss: 0.0613 - accuracy: 0.2314 - val_loss: 0.0617 - val_accuracy: 0.2285\n", + "Epoch 77/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0611 - accuracy: 0.2321\n", + " (4.813006446042454, 1e-05)-DP guarantees for epoch 77 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0611 - accuracy: 0.2321 - val_loss: 0.0615 - val_accuracy: 0.2279\n", + "Epoch 78/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0609 - accuracy: 0.2321\n", + " (4.84625681135709, 1e-05)-DP guarantees for epoch 78 \n", + "\n", + "5/5 [==============================] - 2s 366ms/step - loss: 0.0609 - accuracy: 0.2321 - val_loss: 0.0614 - val_accuracy: 0.2309\n", + "Epoch 79/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0608 - accuracy: 0.2326\n", + " (4.879507178851574, 1e-05)-DP guarantees for epoch 79 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0608 - accuracy: 0.2326 - val_loss: 0.0613 - val_accuracy: 0.2316\n", + "Epoch 80/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0608 - accuracy: 0.2311\n", + " (4.912757545677179, 1e-05)-DP guarantees for epoch 80 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0608 - accuracy: 0.2311 - val_loss: 0.0612 - val_accuracy: 0.2311\n", + "Epoch 81/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0607 - accuracy: 0.2333\n", + " (4.9460079085624, 1e-05)-DP guarantees for epoch 81 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0607 - accuracy: 0.2333 - val_loss: 0.0611 - val_accuracy: 0.2317\n", + "Epoch 82/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0607 - accuracy: 0.2341\n", + " (4.979258270989774, 1e-05)-DP guarantees for epoch 82 \n", + "\n", + "5/5 [==============================] - 2s 339ms/step - loss: 0.0607 - accuracy: 0.2341 - val_loss: 0.0610 - val_accuracy: 0.2338\n", + "Epoch 83/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0604 - accuracy: 0.2339\n", + " (5.012508634818511, 1e-05)-DP guarantees for epoch 83 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0604 - accuracy: 0.2339 - val_loss: 0.0609 - val_accuracy: 0.2318\n", + "Epoch 84/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0605 - accuracy: 0.2348\n", + " (5.045759003430268, 1e-05)-DP guarantees for epoch 84 \n", + "\n", + "5/5 [==============================] - 3s 360ms/step - loss: 0.0605 - accuracy: 0.2348 - val_loss: 0.0608 - val_accuracy: 0.2312\n", + "Epoch 85/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0603 - accuracy: 0.2332\n", + " (5.0790093680054635, 1e-05)-DP guarantees for epoch 85 \n", + "\n", + "5/5 [==============================] - 3s 348ms/step - loss: 0.0603 - accuracy: 0.2332 - val_loss: 0.0607 - val_accuracy: 0.2326\n", + "Epoch 86/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0600 - accuracy: 0.2355\n", + " (5.112259736439092, 1e-05)-DP guarantees for epoch 86 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0600 - accuracy: 0.2355 - val_loss: 0.0606 - val_accuracy: 0.2333\n", + "Epoch 87/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0600 - accuracy: 0.2357\n", + " (5.14551009793596, 1e-05)-DP guarantees for epoch 87 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0600 - accuracy: 0.2357 - val_loss: 0.0604 - val_accuracy: 0.2335\n", + "Epoch 88/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0598 - accuracy: 0.2397\n", + " (5.178760460033292, 1e-05)-DP guarantees for epoch 88 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0598 - accuracy: 0.2397 - val_loss: 0.0603 - val_accuracy: 0.2327\n", + "Epoch 89/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0596 - accuracy: 0.2377\n", + " (5.212010824793953, 1e-05)-DP guarantees for epoch 89 \n", + "\n", + "5/5 [==============================] - 2s 345ms/step - loss: 0.0596 - accuracy: 0.2377 - val_loss: 0.0602 - val_accuracy: 0.2333\n", + "Epoch 90/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0597 - accuracy: 0.2372\n", + " (5.24526119058743, 1e-05)-DP guarantees for epoch 90 \n", + "\n", + "5/5 [==============================] - 2s 356ms/step - loss: 0.0597 - accuracy: 0.2372 - val_loss: 0.0601 - val_accuracy: 0.2336\n", + "Epoch 91/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0595 - accuracy: 0.2367\n", + " (5.278511560314511, 1e-05)-DP guarantees for epoch 91 \n", + "\n", + "5/5 [==============================] - 2s 361ms/step - loss: 0.0595 - accuracy: 0.2367 - val_loss: 0.0600 - val_accuracy: 0.2331\n", + "Epoch 92/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0598 - accuracy: 0.2373\n", + " (5.311761920262455, 1e-05)-DP guarantees for epoch 92 \n", + "\n", + "5/5 [==============================] - 3s 355ms/step - loss: 0.0598 - accuracy: 0.2373 - val_loss: 0.0599 - val_accuracy: 0.2358\n", + "Epoch 93/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0594 - accuracy: 0.2368\n", + " (5.3450122912656255, 1e-05)-DP guarantees for epoch 93 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0594 - accuracy: 0.2368 - val_loss: 0.0598 - val_accuracy: 0.2346\n", + "Epoch 94/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0592 - accuracy: 0.2380\n", + " (5.37826264973137, 1e-05)-DP guarantees for epoch 94 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0592 - accuracy: 0.2380 - val_loss: 0.0597 - val_accuracy: 0.2347\n", + "Epoch 95/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0593 - accuracy: 0.2357\n", + " (5.4115130208687106, 1e-05)-DP guarantees for epoch 95 \n", + "\n", + "5/5 [==============================] - 2s 360ms/step - loss: 0.0593 - accuracy: 0.2357 - val_loss: 0.0596 - val_accuracy: 0.2348\n", + "Epoch 96/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0594 - accuracy: 0.2376\n", + " (5.444763387799843, 1e-05)-DP guarantees for epoch 96 \n", + "\n", + "5/5 [==============================] - 2s 349ms/step - loss: 0.0594 - accuracy: 0.2376 - val_loss: 0.0595 - val_accuracy: 0.2362\n", + "Epoch 97/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0589 - accuracy: 0.2411\n", + " (5.47801375480832, 1e-05)-DP guarantees for epoch 97 \n", + "\n", + "5/5 [==============================] - 2s 363ms/step - loss: 0.0589 - accuracy: 0.2411 - val_loss: 0.0594 - val_accuracy: 0.2375\n", + "Epoch 98/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0590 - accuracy: 0.2404\n", + " (5.511264111964721, 1e-05)-DP guarantees for epoch 98 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0590 - accuracy: 0.2404 - val_loss: 0.0593 - val_accuracy: 0.2377\n", + "Epoch 99/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0586 - accuracy: 0.2406\n", + " (5.544514479570887, 1e-05)-DP guarantees for epoch 99 \n", + "\n", + "5/5 [==============================] - 2s 347ms/step - loss: 0.0586 - accuracy: 0.2406 - val_loss: 0.0593 - val_accuracy: 0.2389\n", + "Epoch 100/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0587 - accuracy: 0.2436\n", + " (5.5777648468507035, 1e-05)-DP guarantees for epoch 100 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0587 - accuracy: 0.2436 - val_loss: 0.0592 - val_accuracy: 0.2383\n", + "Epoch 101/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0586 - accuracy: 0.2405\n", + " (5.611015209476669, 1e-05)-DP guarantees for epoch 101 \n", + "\n", + "5/5 [==============================] - 3s 362ms/step - loss: 0.0586 - accuracy: 0.2405 - val_loss: 0.0590 - val_accuracy: 0.2382\n", + "Epoch 102/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0586 - accuracy: 0.2409\n", + " (5.644265572603777, 1e-05)-DP guarantees for epoch 102 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0586 - accuracy: 0.2409 - val_loss: 0.0589 - val_accuracy: 0.2376\n", + "Epoch 103/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0584 - accuracy: 0.2425\n", + " (5.67751593629532, 1e-05)-DP guarantees for epoch 103 \n", + "\n", + "5/5 [==============================] - 3s 366ms/step - loss: 0.0584 - accuracy: 0.2425 - val_loss: 0.0588 - val_accuracy: 0.2397\n", + "Epoch 104/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0583 - accuracy: 0.2422\n", + " (5.710766303023046, 1e-05)-DP guarantees for epoch 104 \n", + "\n", + "5/5 [==============================] - 3s 370ms/step - loss: 0.0583 - accuracy: 0.2422 - val_loss: 0.0587 - val_accuracy: 0.2384\n", + "Epoch 105/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0582 - accuracy: 0.2425\n", + " (5.7440166690784755, 1e-05)-DP guarantees for epoch 105 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0582 - accuracy: 0.2425 - val_loss: 0.0586 - val_accuracy: 0.2383\n", + "Epoch 106/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0583 - accuracy: 0.2411\n", + " (5.777267031618594, 1e-05)-DP guarantees for epoch 106 \n", + "\n", + "5/5 [==============================] - 2s 345ms/step - loss: 0.0583 - accuracy: 0.2411 - val_loss: 0.0586 - val_accuracy: 0.2387\n", + "Epoch 107/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0578 - accuracy: 0.2438\n", + " (5.8105173958576675, 1e-05)-DP guarantees for epoch 107 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0578 - accuracy: 0.2438 - val_loss: 0.0585 - val_accuracy: 0.2409\n", + "Epoch 108/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0582 - accuracy: 0.2442\n", + " (5.843767765269359, 1e-05)-DP guarantees for epoch 108 \n", + "\n", + "5/5 [==============================] - 2s 359ms/step - loss: 0.0582 - accuracy: 0.2442 - val_loss: 0.0584 - val_accuracy: 0.2440\n", + "Epoch 109/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0578 - accuracy: 0.2456\n", + " (5.877018127929281, 1e-05)-DP guarantees for epoch 109 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0578 - accuracy: 0.2456 - val_loss: 0.0584 - val_accuracy: 0.2419\n", + "Epoch 110/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0580 - accuracy: 0.2440\n", + " (5.910268490844311, 1e-05)-DP guarantees for epoch 110 \n", + "\n", + "5/5 [==============================] - 2s 362ms/step - loss: 0.0580 - accuracy: 0.2440 - val_loss: 0.0583 - val_accuracy: 0.2429\n", + "Epoch 111/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0578 - accuracy: 0.2473\n", + " (5.943518855328065, 1e-05)-DP guarantees for epoch 111 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0578 - accuracy: 0.2473 - val_loss: 0.0583 - val_accuracy: 0.2448\n", + "Epoch 112/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0577 - accuracy: 0.2469\n", + " (5.9767692222925275, 1e-05)-DP guarantees for epoch 112 \n", + "\n", + "5/5 [==============================] - 3s 348ms/step - loss: 0.0577 - accuracy: 0.2469 - val_loss: 0.0582 - val_accuracy: 0.2447\n", + "Epoch 113/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0579 - accuracy: 0.2479\n", + " (6.0100195891034165, 1e-05)-DP guarantees for epoch 113 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0579 - accuracy: 0.2479 - val_loss: 0.0581 - val_accuracy: 0.2453\n", + "Epoch 114/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0576 - accuracy: 0.2468\n", + " (6.043269950764723, 1e-05)-DP guarantees for epoch 114 \n", + "\n", + "5/5 [==============================] - 3s 361ms/step - loss: 0.0576 - accuracy: 0.2468 - val_loss: 0.0580 - val_accuracy: 0.2432\n", + "Epoch 115/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0574 - accuracy: 0.2472\n", + " (6.076520315246205, 1e-05)-DP guarantees for epoch 115 \n", + "\n", + "5/5 [==============================] - 2s 357ms/step - loss: 0.0574 - accuracy: 0.2472 - val_loss: 0.0579 - val_accuracy: 0.2441\n", + "Epoch 116/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0573 - accuracy: 0.2476\n", + " (6.109770681686705, 1e-05)-DP guarantees for epoch 116 \n", + "\n", + "5/5 [==============================] - 2s 363ms/step - loss: 0.0573 - accuracy: 0.2476 - val_loss: 0.0579 - val_accuracy: 0.2440\n", + "Epoch 117/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0575 - accuracy: 0.2470\n", + " (6.143021045607053, 1e-05)-DP guarantees for epoch 117 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0575 - accuracy: 0.2470 - val_loss: 0.0578 - val_accuracy: 0.2479\n", + "Epoch 118/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0572 - accuracy: 0.2481\n", + " (6.1762714106501475, 1e-05)-DP guarantees for epoch 118 \n", + "\n", + "5/5 [==============================] - 3s 360ms/step - loss: 0.0572 - accuracy: 0.2481 - val_loss: 0.0576 - val_accuracy: 0.2450\n", + "Epoch 119/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0572 - accuracy: 0.2500\n", + " (6.209521499901805, 1e-05)-DP guarantees for epoch 119 \n", + "\n", + "5/5 [==============================] - 3s 367ms/step - loss: 0.0572 - accuracy: 0.2500 - val_loss: 0.0576 - val_accuracy: 0.2446\n", + "Epoch 120/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0569 - accuracy: 0.2497\n", + " (6.241605627485653, 1e-05)-DP guarantees for epoch 120 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0569 - accuracy: 0.2497 - val_loss: 0.0575 - val_accuracy: 0.2451\n", + "Epoch 121/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0569 - accuracy: 0.2510\n", + " (6.271221812058615, 1e-05)-DP guarantees for epoch 121 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0569 - accuracy: 0.2510 - val_loss: 0.0574 - val_accuracy: 0.2445\n", + "Epoch 122/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0571 - accuracy: 0.2481\n", + " (6.298196491974402, 1e-05)-DP guarantees for epoch 122 \n", + "\n", + "5/5 [==============================] - 2s 359ms/step - loss: 0.0571 - accuracy: 0.2481 - val_loss: 0.0574 - val_accuracy: 0.2447\n", + "Epoch 123/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0568 - accuracy: 0.2517\n", + " (6.324510712314491, 1e-05)-DP guarantees for epoch 123 \n", + "\n", + "5/5 [==============================] - 2s 345ms/step - loss: 0.0568 - accuracy: 0.2517 - val_loss: 0.0573 - val_accuracy: 0.2481\n", + "Epoch 124/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0570 - accuracy: 0.2505\n", + " (6.350824932887864, 1e-05)-DP guarantees for epoch 124 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0570 - accuracy: 0.2505 - val_loss: 0.0573 - val_accuracy: 0.2449\n", + "Epoch 125/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0567 - accuracy: 0.2489\n", + " (6.377139153079873, 1e-05)-DP guarantees for epoch 125 \n", + "\n", + "5/5 [==============================] - 2s 368ms/step - loss: 0.0567 - accuracy: 0.2489 - val_loss: 0.0572 - val_accuracy: 0.2450\n", + "Epoch 126/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0570 - accuracy: 0.2488\n", + " (6.403453374888347, 1e-05)-DP guarantees for epoch 126 \n", + "\n", + "5/5 [==============================] - 3s 349ms/step - loss: 0.0570 - accuracy: 0.2488 - val_loss: 0.0572 - val_accuracy: 0.2485\n", + "Epoch 127/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0566 - accuracy: 0.2539\n", + " (6.429767596763488, 1e-05)-DP guarantees for epoch 127 \n", + "\n", + "5/5 [==============================] - 3s 391ms/step - loss: 0.0566 - accuracy: 0.2539 - val_loss: 0.0571 - val_accuracy: 0.2452\n", + "Epoch 128/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0565 - accuracy: 0.2505\n", + " (6.4560818158974875, 1e-05)-DP guarantees for epoch 128 \n", + "\n", + "5/5 [==============================] - 3s 367ms/step - loss: 0.0565 - accuracy: 0.2505 - val_loss: 0.0570 - val_accuracy: 0.2466\n", + "Epoch 129/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0566 - accuracy: 0.2522\n", + " (6.482396036898421, 1e-05)-DP guarantees for epoch 129 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0566 - accuracy: 0.2522 - val_loss: 0.0570 - val_accuracy: 0.2461\n", + "Epoch 130/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0561 - accuracy: 0.2521\n", + " (6.5087102545452, 1e-05)-DP guarantees for epoch 130 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0561 - accuracy: 0.2521 - val_loss: 0.0569 - val_accuracy: 0.2468\n", + "Epoch 131/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0562 - accuracy: 0.2534\n", + " (6.53502447810436, 1e-05)-DP guarantees for epoch 131 \n", + "\n", + "5/5 [==============================] - 2s 374ms/step - loss: 0.0562 - accuracy: 0.2534 - val_loss: 0.0569 - val_accuracy: 0.2470\n", + "Epoch 132/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0563 - accuracy: 0.2530\n", + " (6.5613386977335715, 1e-05)-DP guarantees for epoch 132 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0563 - accuracy: 0.2530 - val_loss: 0.0568 - val_accuracy: 0.2501\n", + "Epoch 133/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0561 - accuracy: 0.2564\n", + " (6.587652915827986, 1e-05)-DP guarantees for epoch 133 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0561 - accuracy: 0.2564 - val_loss: 0.0569 - val_accuracy: 0.2470\n", + "Epoch 134/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0561 - accuracy: 0.2555\n", + " (6.613967135260202, 1e-05)-DP guarantees for epoch 134 \n", + "\n", + "5/5 [==============================] - 3s 402ms/step - loss: 0.0561 - accuracy: 0.2555 - val_loss: 0.0568 - val_accuracy: 0.2492\n", + "Epoch 135/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0564 - accuracy: 0.2535\n", + " (6.6402813578423405, 1e-05)-DP guarantees for epoch 135 \n", + "\n", + "5/5 [==============================] - 2s 347ms/step - loss: 0.0564 - accuracy: 0.2535 - val_loss: 0.0567 - val_accuracy: 0.2499\n", + "Epoch 136/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0559 - accuracy: 0.2552\n", + " (6.666595582737012, 1e-05)-DP guarantees for epoch 136 \n", + "\n", + "5/5 [==============================] - 2s 360ms/step - loss: 0.0559 - accuracy: 0.2552 - val_loss: 0.0567 - val_accuracy: 0.2506\n", + "Epoch 137/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0560 - accuracy: 0.2562\n", + " (6.692909796982604, 1e-05)-DP guarantees for epoch 137 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0560 - accuracy: 0.2562 - val_loss: 0.0566 - val_accuracy: 0.2484\n", + "Epoch 138/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0560 - accuracy: 0.2538\n", + " (6.719224016310403, 1e-05)-DP guarantees for epoch 138 \n", + "\n", + "5/5 [==============================] - 2s 349ms/step - loss: 0.0560 - accuracy: 0.2538 - val_loss: 0.0565 - val_accuracy: 0.2471\n", + "Epoch 139/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0560 - accuracy: 0.2526\n", + " (6.74553823900151, 1e-05)-DP guarantees for epoch 139 \n", + "\n", + "5/5 [==============================] - 3s 399ms/step - loss: 0.0560 - accuracy: 0.2526 - val_loss: 0.0565 - val_accuracy: 0.2509\n", + "Epoch 140/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0560 - accuracy: 0.2536\n", + " (6.771852459824933, 1e-05)-DP guarantees for epoch 140 \n", + "\n", + "5/5 [==============================] - 3s 493ms/step - loss: 0.0560 - accuracy: 0.2536 - val_loss: 0.0564 - val_accuracy: 0.2493\n", + "Epoch 141/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0557 - accuracy: 0.2555\n", + " (6.798166680154963, 1e-05)-DP guarantees for epoch 141 \n", + "\n", + "5/5 [==============================] - 3s 391ms/step - loss: 0.0557 - accuracy: 0.2555 - val_loss: 0.0563 - val_accuracy: 0.2511\n", + "Epoch 142/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0559 - accuracy: 0.2541\n", + " (6.824480898392123, 1e-05)-DP guarantees for epoch 142 \n", + "\n", + "5/5 [==============================] - 3s 443ms/step - loss: 0.0559 - accuracy: 0.2541 - val_loss: 0.0563 - val_accuracy: 0.2484\n", + "Epoch 143/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0560 - accuracy: 0.2547\n", + " (6.850795124433479, 1e-05)-DP guarantees for epoch 143 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0560 - accuracy: 0.2547 - val_loss: 0.0563 - val_accuracy: 0.2487\n", + "Epoch 144/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0556 - accuracy: 0.2545\n", + " (6.877109344205954, 1e-05)-DP guarantees for epoch 144 \n", + "\n", + "5/5 [==============================] - 3s 374ms/step - loss: 0.0556 - accuracy: 0.2545 - val_loss: 0.0562 - val_accuracy: 0.2487\n", + "Epoch 145/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0555 - accuracy: 0.2569\n", + " (6.903423558068683, 1e-05)-DP guarantees for epoch 145 \n", + "\n", + "5/5 [==============================] - 3s 378ms/step - loss: 0.0555 - accuracy: 0.2569 - val_loss: 0.0562 - val_accuracy: 0.2508\n", + "Epoch 146/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0558 - accuracy: 0.2560\n", + " (6.929737777126363, 1e-05)-DP guarantees for epoch 146 \n", + "\n", + "5/5 [==============================] - 3s 387ms/step - loss: 0.0558 - accuracy: 0.2560 - val_loss: 0.0561 - val_accuracy: 0.2504\n", + "Epoch 147/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0557 - accuracy: 0.2556\n", + " (6.956052008535497, 1e-05)-DP guarantees for epoch 147 \n", + "\n", + "5/5 [==============================] - 3s 372ms/step - loss: 0.0557 - accuracy: 0.2556 - val_loss: 0.0561 - val_accuracy: 0.2509\n", + "Epoch 148/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0557 - accuracy: 0.2538\n", + " (6.982366223228706, 1e-05)-DP guarantees for epoch 148 \n", + "\n", + "5/5 [==============================] - 3s 381ms/step - loss: 0.0557 - accuracy: 0.2538 - val_loss: 0.0561 - val_accuracy: 0.2528\n", + "Epoch 149/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0553 - accuracy: 0.2580\n", + " (7.0086804403647855, 1e-05)-DP guarantees for epoch 149 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0553 - accuracy: 0.2580 - val_loss: 0.0560 - val_accuracy: 0.2530\n", + "Epoch 150/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0549 - accuracy: 0.2595\n", + " (7.034994664689931, 1e-05)-DP guarantees for epoch 150 \n", + "\n", + "5/5 [==============================] - 3s 361ms/step - loss: 0.0549 - accuracy: 0.2595 - val_loss: 0.0560 - val_accuracy: 0.2519\n", + "Epoch 151/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0554 - accuracy: 0.2585\n", + " (7.061308885525292, 1e-05)-DP guarantees for epoch 151 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0554 - accuracy: 0.2585 - val_loss: 0.0559 - val_accuracy: 0.2531\n", + "Epoch 152/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0554 - accuracy: 0.2580\n", + " (7.087623106633284, 1e-05)-DP guarantees for epoch 152 \n", + "\n", + "5/5 [==============================] - 2s 355ms/step - loss: 0.0554 - accuracy: 0.2580 - val_loss: 0.0558 - val_accuracy: 0.2543\n", + "Epoch 153/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0553 - accuracy: 0.2585\n", + " (7.113937323136563, 1e-05)-DP guarantees for epoch 153 \n", + "\n", + "5/5 [==============================] - 3s 365ms/step - loss: 0.0553 - accuracy: 0.2585 - val_loss: 0.0558 - val_accuracy: 0.2537\n", + "Epoch 154/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0551 - accuracy: 0.2595\n", + " (7.140251544398778, 1e-05)-DP guarantees for epoch 154 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0551 - accuracy: 0.2595 - val_loss: 0.0558 - val_accuracy: 0.2551\n", + "Epoch 155/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0550 - accuracy: 0.2600\n", + " (7.166565767658498, 1e-05)-DP guarantees for epoch 155 \n", + "\n", + "5/5 [==============================] - 3s 355ms/step - loss: 0.0550 - accuracy: 0.2600 - val_loss: 0.0557 - val_accuracy: 0.2569\n", + "Epoch 156/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0553 - accuracy: 0.2561\n", + " (7.192879981310637, 1e-05)-DP guarantees for epoch 156 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0553 - accuracy: 0.2561 - val_loss: 0.0556 - val_accuracy: 0.2545\n", + "Epoch 157/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0550 - accuracy: 0.2581\n", + " (7.2191942080187195, 1e-05)-DP guarantees for epoch 157 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0550 - accuracy: 0.2581 - val_loss: 0.0556 - val_accuracy: 0.2566\n", + "Epoch 158/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0550 - accuracy: 0.2601\n", + " (7.245508431022666, 1e-05)-DP guarantees for epoch 158 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0550 - accuracy: 0.2601 - val_loss: 0.0556 - val_accuracy: 0.2574\n", + "Epoch 159/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0548 - accuracy: 0.2599\n", + " (7.27182264840541, 1e-05)-DP guarantees for epoch 159 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0548 - accuracy: 0.2599 - val_loss: 0.0555 - val_accuracy: 0.2567\n", + "Epoch 160/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0548 - accuracy: 0.2616\n", + " (7.298136867745498, 1e-05)-DP guarantees for epoch 160 \n", + "\n", + "5/5 [==============================] - 2s 367ms/step - loss: 0.0548 - accuracy: 0.2616 - val_loss: 0.0554 - val_accuracy: 0.2560\n", + "Epoch 161/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0551 - accuracy: 0.2595\n", + " (7.324451088022072, 1e-05)-DP guarantees for epoch 161 \n", + "\n", + "5/5 [==============================] - 3s 349ms/step - loss: 0.0551 - accuracy: 0.2595 - val_loss: 0.0554 - val_accuracy: 0.2577\n", + "Epoch 162/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0548 - accuracy: 0.2606\n", + " (7.350765305854425, 1e-05)-DP guarantees for epoch 162 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0548 - accuracy: 0.2606 - val_loss: 0.0554 - val_accuracy: 0.2580\n", + "Epoch 163/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0547 - accuracy: 0.2588\n", + " (7.37707952170881, 1e-05)-DP guarantees for epoch 163 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0547 - accuracy: 0.2588 - val_loss: 0.0553 - val_accuracy: 0.2549\n", + "Epoch 164/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0546 - accuracy: 0.2585\n", + " (7.403393741099066, 1e-05)-DP guarantees for epoch 164 \n", + "\n", + "5/5 [==============================] - 3s 379ms/step - loss: 0.0546 - accuracy: 0.2585 - val_loss: 0.0553 - val_accuracy: 0.2591\n", + "Epoch 165/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0546 - accuracy: 0.2607\n", + " (7.429707969366283, 1e-05)-DP guarantees for epoch 165 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0546 - accuracy: 0.2607 - val_loss: 0.0552 - val_accuracy: 0.2574\n", + "Epoch 166/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0547 - accuracy: 0.2598\n", + " (7.456022189620042, 1e-05)-DP guarantees for epoch 166 \n", + "\n", + "5/5 [==============================] - 2s 356ms/step - loss: 0.0547 - accuracy: 0.2598 - val_loss: 0.0551 - val_accuracy: 0.2544\n", + "Epoch 167/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0544 - accuracy: 0.2589\n", + " (7.4823364015791975, 1e-05)-DP guarantees for epoch 167 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0544 - accuracy: 0.2589 - val_loss: 0.0552 - val_accuracy: 0.2570\n", + "Epoch 168/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0546 - accuracy: 0.2620\n", + " (7.508650622437409, 1e-05)-DP guarantees for epoch 168 \n", + "\n", + "5/5 [==============================] - 2s 343ms/step - loss: 0.0546 - accuracy: 0.2620 - val_loss: 0.0551 - val_accuracy: 0.2585\n", + "Epoch 169/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0544 - accuracy: 0.2609\n", + " (7.5349648424170645, 1e-05)-DP guarantees for epoch 169 \n", + "\n", + "5/5 [==============================] - 3s 371ms/step - loss: 0.0544 - accuracy: 0.2609 - val_loss: 0.0550 - val_accuracy: 0.2591\n", + "Epoch 170/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0545 - accuracy: 0.2618\n", + " (7.561279065737033, 1e-05)-DP guarantees for epoch 170 \n", + "\n", + "5/5 [==============================] - 3s 369ms/step - loss: 0.0545 - accuracy: 0.2618 - val_loss: 0.0551 - val_accuracy: 0.2582\n", + "Epoch 171/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0542 - accuracy: 0.2642\n", + " (7.587593290867159, 1e-05)-DP guarantees for epoch 171 \n", + "\n", + "5/5 [==============================] - 3s 372ms/step - loss: 0.0542 - accuracy: 0.2642 - val_loss: 0.0551 - val_accuracy: 0.2598\n", + "Epoch 172/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0543 - accuracy: 0.2640\n", + " (7.613907506714526, 1e-05)-DP guarantees for epoch 172 \n", + "\n", + "5/5 [==============================] - 3s 369ms/step - loss: 0.0543 - accuracy: 0.2640 - val_loss: 0.0550 - val_accuracy: 0.2604\n", + "Epoch 173/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0543 - accuracy: 0.2642\n", + " (7.640221723584304, 1e-05)-DP guarantees for epoch 173 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0543 - accuracy: 0.2642 - val_loss: 0.0549 - val_accuracy: 0.2604\n", + "Epoch 174/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0542 - accuracy: 0.2635\n", + " (7.666535950048996, 1e-05)-DP guarantees for epoch 174 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0542 - accuracy: 0.2635 - val_loss: 0.0549 - val_accuracy: 0.2628\n", + "Epoch 175/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0541 - accuracy: 0.2648\n", + " (7.692850164248792, 1e-05)-DP guarantees for epoch 175 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0541 - accuracy: 0.2648 - val_loss: 0.0548 - val_accuracy: 0.2625\n", + "Epoch 176/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0542 - accuracy: 0.2637\n", + " (7.719164393302542, 1e-05)-DP guarantees for epoch 176 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0542 - accuracy: 0.2637 - val_loss: 0.0547 - val_accuracy: 0.2621\n", + "Epoch 177/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0540 - accuracy: 0.2661\n", + " (7.745478613553454, 1e-05)-DP guarantees for epoch 177 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0540 - accuracy: 0.2661 - val_loss: 0.0546 - val_accuracy: 0.2665\n", + "Epoch 178/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0541 - accuracy: 0.2668\n", + " (7.771792822684058, 1e-05)-DP guarantees for epoch 178 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0541 - accuracy: 0.2668 - val_loss: 0.0546 - val_accuracy: 0.2659\n", + "Epoch 179/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0539 - accuracy: 0.2685\n", + " (7.7981070469012, 1e-05)-DP guarantees for epoch 179 \n", + "\n", + "5/5 [==============================] - 2s 357ms/step - loss: 0.0539 - accuracy: 0.2685 - val_loss: 0.0545 - val_accuracy: 0.2646\n", + "Epoch 180/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0538 - accuracy: 0.2682\n", + " (7.824421268798268, 1e-05)-DP guarantees for epoch 180 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0538 - accuracy: 0.2682 - val_loss: 0.0545 - val_accuracy: 0.2656\n", + "Epoch 181/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0538 - accuracy: 0.2671\n", + " (7.850735498247861, 1e-05)-DP guarantees for epoch 181 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0538 - accuracy: 0.2671 - val_loss: 0.0545 - val_accuracy: 0.2639\n", + "Epoch 182/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0539 - accuracy: 0.2661\n", + " (7.877049711425853, 1e-05)-DP guarantees for epoch 182 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0539 - accuracy: 0.2661 - val_loss: 0.0544 - val_accuracy: 0.2645\n", + "Epoch 183/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0537 - accuracy: 0.2635\n", + " (7.903363929529842, 1e-05)-DP guarantees for epoch 183 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0537 - accuracy: 0.2635 - val_loss: 0.0544 - val_accuracy: 0.2645\n", + "Epoch 184/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0538 - accuracy: 0.2641\n", + " (7.929678153587394, 1e-05)-DP guarantees for epoch 184 \n", + "\n", + "5/5 [==============================] - 3s 361ms/step - loss: 0.0538 - accuracy: 0.2641 - val_loss: 0.0543 - val_accuracy: 0.2641\n", + "Epoch 185/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0535 - accuracy: 0.2668\n", + " (7.955992381685565, 1e-05)-DP guarantees for epoch 185 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0535 - accuracy: 0.2668 - val_loss: 0.0543 - val_accuracy: 0.2638\n", + "Epoch 186/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0535 - accuracy: 0.2641\n", + " (7.982306589145621, 1e-05)-DP guarantees for epoch 186 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0535 - accuracy: 0.2641 - val_loss: 0.0543 - val_accuracy: 0.2654\n", + "Epoch 187/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0537 - accuracy: 0.2653\n", + " (8.008620808026855, 1e-05)-DP guarantees for epoch 187 \n", + "\n", + "5/5 [==============================] - 3s 412ms/step - loss: 0.0537 - accuracy: 0.2653 - val_loss: 0.0542 - val_accuracy: 0.2651\n", + "Epoch 188/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0535 - accuracy: 0.2656\n", + " (8.034935029136395, 1e-05)-DP guarantees for epoch 188 \n", + "\n", + "5/5 [==============================] - 3s 488ms/step - loss: 0.0535 - accuracy: 0.2656 - val_loss: 0.0542 - val_accuracy: 0.2662\n", + "Epoch 189/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0536 - accuracy: 0.2653\n", + " (8.061249248434443, 1e-05)-DP guarantees for epoch 189 \n", + "\n", + "5/5 [==============================] - 3s 444ms/step - loss: 0.0536 - accuracy: 0.2653 - val_loss: 0.0541 - val_accuracy: 0.2659\n", + "Epoch 190/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0533 - accuracy: 0.2676\n", + " (8.087563469816706, 1e-05)-DP guarantees for epoch 190 \n", + "\n", + "5/5 [==============================] - 3s 405ms/step - loss: 0.0533 - accuracy: 0.2676 - val_loss: 0.0541 - val_accuracy: 0.2663\n", + "Epoch 191/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0534 - accuracy: 0.2669\n", + " (8.113877688170744, 1e-05)-DP guarantees for epoch 191 \n", + "\n", + "5/5 [==============================] - 3s 385ms/step - loss: 0.0534 - accuracy: 0.2669 - val_loss: 0.0541 - val_accuracy: 0.2675\n", + "Epoch 192/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0535 - accuracy: 0.2648\n", + " (8.140191906358039, 1e-05)-DP guarantees for epoch 192 \n", + "\n", + "5/5 [==============================] - 3s 392ms/step - loss: 0.0535 - accuracy: 0.2648 - val_loss: 0.0540 - val_accuracy: 0.2676\n", + "Epoch 193/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0534 - accuracy: 0.2680\n", + " (8.166506132866681, 1e-05)-DP guarantees for epoch 193 \n", + "\n", + "5/5 [==============================] - 3s 379ms/step - loss: 0.0534 - accuracy: 0.2680 - val_loss: 0.0540 - val_accuracy: 0.2676\n", + "Epoch 194/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0533 - accuracy: 0.2654\n", + " (8.192820350846777, 1e-05)-DP guarantees for epoch 194 \n", + "\n", + "5/5 [==============================] - 2s 356ms/step - loss: 0.0533 - accuracy: 0.2654 - val_loss: 0.0540 - val_accuracy: 0.2679\n", + "Epoch 195/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0531 - accuracy: 0.2681\n", + " (8.219134573417037, 1e-05)-DP guarantees for epoch 195 \n", + "\n", + "5/5 [==============================] - 3s 381ms/step - loss: 0.0531 - accuracy: 0.2681 - val_loss: 0.0541 - val_accuracy: 0.2654\n", + "Epoch 196/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0532 - accuracy: 0.2671\n", + " (8.24544879099129, 1e-05)-DP guarantees for epoch 196 \n", + "\n", + "5/5 [==============================] - 3s 381ms/step - loss: 0.0532 - accuracy: 0.2671 - val_loss: 0.0540 - val_accuracy: 0.2658\n", + "Epoch 197/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0535 - accuracy: 0.2666\n", + " (8.271763016196239, 1e-05)-DP guarantees for epoch 197 \n", + "\n", + "5/5 [==============================] - 3s 389ms/step - loss: 0.0535 - accuracy: 0.2666 - val_loss: 0.0540 - val_accuracy: 0.2656\n", + "Epoch 198/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0534 - accuracy: 0.2676\n", + " (8.298077232897459, 1e-05)-DP guarantees for epoch 198 \n", + "\n", + "5/5 [==============================] - 3s 415ms/step - loss: 0.0534 - accuracy: 0.2676 - val_loss: 0.0539 - val_accuracy: 0.2656\n", + "Epoch 199/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0531 - accuracy: 0.2672\n", + " (8.324391446543665, 1e-05)-DP guarantees for epoch 199 \n", + "\n", + "5/5 [==============================] - 3s 380ms/step - loss: 0.0531 - accuracy: 0.2672 - val_loss: 0.0538 - val_accuracy: 0.2658\n", + "Epoch 200/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0534 - accuracy: 0.2638\n", + " (8.350705669706155, 1e-05)-DP guarantees for epoch 200 \n", + "\n", + "5/5 [==============================] - 2s 358ms/step - loss: 0.0534 - accuracy: 0.2638 - val_loss: 0.0538 - val_accuracy: 0.2659\n", + "Epoch 201/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0533 - accuracy: 0.2672\n", + " (8.377019893272927, 1e-05)-DP guarantees for epoch 201 \n", + "\n", + "5/5 [==============================] - 2s 369ms/step - loss: 0.0533 - accuracy: 0.2672 - val_loss: 0.0538 - val_accuracy: 0.2678\n", + "Epoch 202/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0533 - accuracy: 0.2685\n", + " (8.403334112768452, 1e-05)-DP guarantees for epoch 202 \n", + "\n", + "5/5 [==============================] - 3s 362ms/step - loss: 0.0533 - accuracy: 0.2685 - val_loss: 0.0537 - val_accuracy: 0.2677\n", + "Epoch 203/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0528 - accuracy: 0.2701\n", + " (8.429648329088547, 1e-05)-DP guarantees for epoch 203 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0528 - accuracy: 0.2701 - val_loss: 0.0537 - val_accuracy: 0.2669\n", + "Epoch 204/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0528 - accuracy: 0.2696\n", + " (8.455962556505566, 1e-05)-DP guarantees for epoch 204 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0528 - accuracy: 0.2696 - val_loss: 0.0537 - val_accuracy: 0.2681\n", + "Epoch 205/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0532 - accuracy: 0.2691\n", + " (8.4822767745793, 1e-05)-DP guarantees for epoch 205 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0532 - accuracy: 0.2691 - val_loss: 0.0536 - val_accuracy: 0.2692\n", + "Epoch 206/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0531 - accuracy: 0.2703\n", + " (8.508590990133396, 1e-05)-DP guarantees for epoch 206 \n", + "\n", + "5/5 [==============================] - 3s 354ms/step - loss: 0.0531 - accuracy: 0.2703 - val_loss: 0.0535 - val_accuracy: 0.2683\n", + "Epoch 207/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0529 - accuracy: 0.2705\n", + " (8.534905221654196, 1e-05)-DP guarantees for epoch 207 \n", + "\n", + "5/5 [==============================] - 3s 348ms/step - loss: 0.0529 - accuracy: 0.2705 - val_loss: 0.0535 - val_accuracy: 0.2661\n", + "Epoch 208/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0526 - accuracy: 0.2726\n", + " (8.56121943210842, 1e-05)-DP guarantees for epoch 208 \n", + "\n", + "5/5 [==============================] - 2s 351ms/step - loss: 0.0526 - accuracy: 0.2726 - val_loss: 0.0535 - val_accuracy: 0.2671\n", + "Epoch 209/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0530 - accuracy: 0.2703\n", + " (8.58753364829852, 1e-05)-DP guarantees for epoch 209 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0530 - accuracy: 0.2703 - val_loss: 0.0534 - val_accuracy: 0.2691\n", + "Epoch 210/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0527 - accuracy: 0.2701\n", + " (8.613847875406321, 1e-05)-DP guarantees for epoch 210 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0527 - accuracy: 0.2701 - val_loss: 0.0534 - val_accuracy: 0.2676\n", + "Epoch 211/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0525 - accuracy: 0.2713\n", + " (8.640162093797892, 1e-05)-DP guarantees for epoch 211 \n", + "\n", + "5/5 [==============================] - 3s 350ms/step - loss: 0.0525 - accuracy: 0.2713 - val_loss: 0.0534 - val_accuracy: 0.2689\n", + "Epoch 212/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0527 - accuracy: 0.2711\n", + " (8.666476313556027, 1e-05)-DP guarantees for epoch 212 \n", + "\n", + "5/5 [==============================] - 2s 346ms/step - loss: 0.0527 - accuracy: 0.2711 - val_loss: 0.0533 - val_accuracy: 0.2679\n", + "Epoch 213/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0524 - accuracy: 0.2722\n", + " (8.692790541337777, 1e-05)-DP guarantees for epoch 213 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0524 - accuracy: 0.2722 - val_loss: 0.0532 - val_accuracy: 0.2673\n", + "Epoch 214/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0526 - accuracy: 0.2705\n", + " (8.719104752659717, 1e-05)-DP guarantees for epoch 214 \n", + "\n", + "5/5 [==============================] - 3s 355ms/step - loss: 0.0526 - accuracy: 0.2705 - val_loss: 0.0532 - val_accuracy: 0.2675\n", + "Epoch 215/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0523 - accuracy: 0.2729\n", + " (8.745418971706883, 1e-05)-DP guarantees for epoch 215 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0523 - accuracy: 0.2729 - val_loss: 0.0532 - val_accuracy: 0.2674\n", + "Epoch 216/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0525 - accuracy: 0.2733\n", + " (8.77173318977154, 1e-05)-DP guarantees for epoch 216 \n", + "\n", + "5/5 [==============================] - 3s 362ms/step - loss: 0.0525 - accuracy: 0.2733 - val_loss: 0.0532 - val_accuracy: 0.2662\n", + "Epoch 217/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0525 - accuracy: 0.2719\n", + " (8.798047413801395, 1e-05)-DP guarantees for epoch 217 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0525 - accuracy: 0.2719 - val_loss: 0.0531 - val_accuracy: 0.2676\n", + "Epoch 218/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0524 - accuracy: 0.2741\n", + " (8.82436163499698, 1e-05)-DP guarantees for epoch 218 \n", + "\n", + "5/5 [==============================] - 2s 348ms/step - loss: 0.0524 - accuracy: 0.2741 - val_loss: 0.0531 - val_accuracy: 0.2671\n", + "Epoch 219/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0525 - accuracy: 0.2702\n", + " (8.850675857122916, 1e-05)-DP guarantees for epoch 219 \n", + "\n", + "5/5 [==============================] - 3s 386ms/step - loss: 0.0525 - accuracy: 0.2702 - val_loss: 0.0531 - val_accuracy: 0.2672\n", + "Epoch 220/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0527 - accuracy: 0.2709\n", + " (8.876990076626331, 1e-05)-DP guarantees for epoch 220 \n", + "\n", + "5/5 [==============================] - 3s 376ms/step - loss: 0.0527 - accuracy: 0.2709 - val_loss: 0.0531 - val_accuracy: 0.2668\n", + "Epoch 221/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0525 - accuracy: 0.2715\n", + " (8.903304291167267, 1e-05)-DP guarantees for epoch 221 \n", + "\n", + "5/5 [==============================] - 3s 363ms/step - loss: 0.0525 - accuracy: 0.2715 - val_loss: 0.0531 - val_accuracy: 0.2661\n", + "Epoch 222/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0524 - accuracy: 0.2721\n", + " (8.929618511328595, 1e-05)-DP guarantees for epoch 222 \n", + "\n", + "5/5 [==============================] - 3s 378ms/step - loss: 0.0524 - accuracy: 0.2721 - val_loss: 0.0530 - val_accuracy: 0.2677\n", + "Epoch 223/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0521 - accuracy: 0.2726\n", + " (8.955932731489924, 1e-05)-DP guarantees for epoch 223 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0521 - accuracy: 0.2726 - val_loss: 0.0530 - val_accuracy: 0.2686\n", + "Epoch 224/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0521 - accuracy: 0.2727\n", + " (8.982246951651252, 1e-05)-DP guarantees for epoch 224 \n", + "\n", + "5/5 [==============================] - 2s 350ms/step - loss: 0.0521 - accuracy: 0.2727 - val_loss: 0.0530 - val_accuracy: 0.2690\n", + "Epoch 225/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0522 - accuracy: 0.2706\n", + " (9.00856117181258, 1e-05)-DP guarantees for epoch 225 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0522 - accuracy: 0.2706 - val_loss: 0.0529 - val_accuracy: 0.2701\n", + "Epoch 226/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0521 - accuracy: 0.2715\n", + " (9.034875391973909, 1e-05)-DP guarantees for epoch 226 \n", + "\n", + "5/5 [==============================] - 3s 396ms/step - loss: 0.0521 - accuracy: 0.2715 - val_loss: 0.0529 - val_accuracy: 0.2690\n", + "Epoch 227/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0521 - accuracy: 0.2713\n", + " (9.061189612135239, 1e-05)-DP guarantees for epoch 227 \n", + "\n", + "5/5 [==============================] - 3s 365ms/step - loss: 0.0521 - accuracy: 0.2713 - val_loss: 0.0529 - val_accuracy: 0.2702\n", + "Epoch 228/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0520 - accuracy: 0.2729\n", + " (9.087503832296568, 1e-05)-DP guarantees for epoch 228 \n", + "\n", + "5/5 [==============================] - 3s 366ms/step - loss: 0.0520 - accuracy: 0.2729 - val_loss: 0.0529 - val_accuracy: 0.2698\n", + "Epoch 229/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0518 - accuracy: 0.2717\n", + " (9.113818052457898, 1e-05)-DP guarantees for epoch 229 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0518 - accuracy: 0.2717 - val_loss: 0.0528 - val_accuracy: 0.2704\n", + "Epoch 230/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0518 - accuracy: 0.2710\n", + " (9.140132272619226, 1e-05)-DP guarantees for epoch 230 \n", + "\n", + "5/5 [==============================] - 3s 371ms/step - loss: 0.0518 - accuracy: 0.2710 - val_loss: 0.0528 - val_accuracy: 0.2693\n", + "Epoch 231/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0519 - accuracy: 0.2725\n", + " (9.166446492780555, 1e-05)-DP guarantees for epoch 231 \n", + "\n", + "5/5 [==============================] - 2s 357ms/step - loss: 0.0519 - accuracy: 0.2725 - val_loss: 0.0528 - val_accuracy: 0.2674\n", + "Epoch 232/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0517 - accuracy: 0.2743\n", + " (9.192760712941883, 1e-05)-DP guarantees for epoch 232 \n", + "\n", + "5/5 [==============================] - 3s 361ms/step - loss: 0.0517 - accuracy: 0.2743 - val_loss: 0.0528 - val_accuracy: 0.2685\n", + "Epoch 233/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0519 - accuracy: 0.2712\n", + " (9.219074933103212, 1e-05)-DP guarantees for epoch 233 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0519 - accuracy: 0.2712 - val_loss: 0.0527 - val_accuracy: 0.2687\n", + "Epoch 234/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0517 - accuracy: 0.2731\n", + " (9.24538915326454, 1e-05)-DP guarantees for epoch 234 \n", + "\n", + "5/5 [==============================] - 3s 370ms/step - loss: 0.0517 - accuracy: 0.2731 - val_loss: 0.0527 - val_accuracy: 0.2663\n", + "Epoch 235/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0518 - accuracy: 0.2720\n", + " (9.27170337342587, 1e-05)-DP guarantees for epoch 235 \n", + "\n", + "5/5 [==============================] - 3s 350ms/step - loss: 0.0518 - accuracy: 0.2720 - val_loss: 0.0527 - val_accuracy: 0.2663\n", + "Epoch 236/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0515 - accuracy: 0.2729\n", + " (9.298017593587199, 1e-05)-DP guarantees for epoch 236 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0515 - accuracy: 0.2729 - val_loss: 0.0526 - val_accuracy: 0.2658\n", + "Epoch 237/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0517 - accuracy: 0.2726\n", + " (9.324331813748529, 1e-05)-DP guarantees for epoch 237 \n", + "\n", + "5/5 [==============================] - 2s 353ms/step - loss: 0.0517 - accuracy: 0.2726 - val_loss: 0.0526 - val_accuracy: 0.2650\n", + "Epoch 238/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0515 - accuracy: 0.2752\n", + " (9.350646033909857, 1e-05)-DP guarantees for epoch 238 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0515 - accuracy: 0.2752 - val_loss: 0.0525 - val_accuracy: 0.2655\n", + "Epoch 239/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0517 - accuracy: 0.2739\n", + " (9.376960254071186, 1e-05)-DP guarantees for epoch 239 \n", + "\n", + "5/5 [==============================] - 3s 368ms/step - loss: 0.0517 - accuracy: 0.2739 - val_loss: 0.0525 - val_accuracy: 0.2665\n", + "Epoch 240/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0515 - accuracy: 0.2736\n", + " (9.403274474232514, 1e-05)-DP guarantees for epoch 240 \n", + "\n", + "5/5 [==============================] - 3s 356ms/step - loss: 0.0515 - accuracy: 0.2736 - val_loss: 0.0525 - val_accuracy: 0.2673\n", + "Epoch 241/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0517 - accuracy: 0.2729\n", + " (9.429588694393843, 1e-05)-DP guarantees for epoch 241 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0517 - accuracy: 0.2729 - val_loss: 0.0524 - val_accuracy: 0.2674\n", + "Epoch 242/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0518 - accuracy: 0.2746\n", + " (9.455902914555171, 1e-05)-DP guarantees for epoch 242 \n", + "\n", + "5/5 [==============================] - 3s 359ms/step - loss: 0.0518 - accuracy: 0.2746 - val_loss: 0.0525 - val_accuracy: 0.2694\n", + "Epoch 243/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0515 - accuracy: 0.2756\n", + " (9.482217134716501, 1e-05)-DP guarantees for epoch 243 \n", + "\n", + "5/5 [==============================] - 2s 357ms/step - loss: 0.0515 - accuracy: 0.2756 - val_loss: 0.0524 - val_accuracy: 0.2699\n", + "Epoch 244/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0512 - accuracy: 0.2760\n", + " (9.50853135487783, 1e-05)-DP guarantees for epoch 244 \n", + "\n", + "5/5 [==============================] - 3s 367ms/step - loss: 0.0512 - accuracy: 0.2760 - val_loss: 0.0524 - val_accuracy: 0.2712\n", + "Epoch 245/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0514 - accuracy: 0.2756\n", + " (9.534845575173634, 1e-05)-DP guarantees for epoch 245 \n", + "\n", + "5/5 [==============================] - 3s 360ms/step - loss: 0.0514 - accuracy: 0.2756 - val_loss: 0.0523 - val_accuracy: 0.2700\n", + "Epoch 246/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0512 - accuracy: 0.2758\n", + " (9.561159795911662, 1e-05)-DP guarantees for epoch 246 \n", + "\n", + "5/5 [==============================] - 2s 344ms/step - loss: 0.0512 - accuracy: 0.2758 - val_loss: 0.0523 - val_accuracy: 0.2716\n", + "Epoch 247/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0512 - accuracy: 0.2783\n", + " (9.587474015660208, 1e-05)-DP guarantees for epoch 247 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0512 - accuracy: 0.2783 - val_loss: 0.0523 - val_accuracy: 0.2719\n", + "Epoch 248/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0514 - accuracy: 0.2768\n", + " (9.613788235533915, 1e-05)-DP guarantees for epoch 248 \n", + "\n", + "5/5 [==============================] - 3s 366ms/step - loss: 0.0514 - accuracy: 0.2768 - val_loss: 0.0522 - val_accuracy: 0.2711\n", + "Epoch 249/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2780\n", + " (9.64006012187098, 1e-05)-DP guarantees for epoch 249 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0511 - accuracy: 0.2780 - val_loss: 0.0522 - val_accuracy: 0.2720\n", + "Epoch 250/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2746\n", + " (9.665736679745127, 1e-05)-DP guarantees for epoch 250 \n", + "\n", + "5/5 [==============================] - 3s 352ms/step - loss: 0.0511 - accuracy: 0.2746 - val_loss: 0.0522 - val_accuracy: 0.2731\n", + "Epoch 251/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0509 - accuracy: 0.2777\n", + " (9.690604545814235, 1e-05)-DP guarantees for epoch 251 \n", + "\n", + "5/5 [==============================] - 3s 357ms/step - loss: 0.0509 - accuracy: 0.2777 - val_loss: 0.0522 - val_accuracy: 0.2727\n", + "Epoch 252/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2793\n", + " (9.714604392289775, 1e-05)-DP guarantees for epoch 252 \n", + "\n", + "5/5 [==============================] - 3s 354ms/step - loss: 0.0511 - accuracy: 0.2793 - val_loss: 0.0522 - val_accuracy: 0.2701\n", + "Epoch 253/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2751\n", + " (9.737670917278972, 1e-05)-DP guarantees for epoch 253 \n", + "\n", + "5/5 [==============================] - 3s 354ms/step - loss: 0.0511 - accuracy: 0.2751 - val_loss: 0.0522 - val_accuracy: 0.2719\n", + "Epoch 254/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0510 - accuracy: 0.2764\n", + " (9.759732027763015, 1e-05)-DP guarantees for epoch 254 \n", + "\n", + "5/5 [==============================] - 3s 365ms/step - loss: 0.0510 - accuracy: 0.2764 - val_loss: 0.0522 - val_accuracy: 0.2718\n", + "Epoch 255/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0510 - accuracy: 0.2765\n", + " (9.780707877727917, 1e-05)-DP guarantees for epoch 255 \n", + "\n", + "5/5 [==============================] - 3s 341ms/step - loss: 0.0510 - accuracy: 0.2765 - val_loss: 0.0522 - val_accuracy: 0.2708\n", + "Epoch 256/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2758\n", + " (9.80055660088896, 1e-05)-DP guarantees for epoch 256 \n", + "\n", + "5/5 [==============================] - 3s 364ms/step - loss: 0.0511 - accuracy: 0.2758 - val_loss: 0.0521 - val_accuracy: 0.2726\n", + "Epoch 257/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0508 - accuracy: 0.2767\n", + " (9.820083418023108, 1e-05)-DP guarantees for epoch 257 \n", + "\n", + "5/5 [==============================] - 2s 360ms/step - loss: 0.0508 - accuracy: 0.2767 - val_loss: 0.0520 - val_accuracy: 0.2722\n", + "Epoch 258/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2740\n", + " (9.839610235157256, 1e-05)-DP guarantees for epoch 258 \n", + "\n", + "5/5 [==============================] - 3s 348ms/step - loss: 0.0511 - accuracy: 0.2740 - val_loss: 0.0520 - val_accuracy: 0.2707\n", + "Epoch 259/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0507 - accuracy: 0.2782\n", + " (9.859137052291402, 1e-05)-DP guarantees for epoch 259 \n", + "\n", + "5/5 [==============================] - 3s 367ms/step - loss: 0.0507 - accuracy: 0.2782 - val_loss: 0.0520 - val_accuracy: 0.2731\n", + "Epoch 260/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0510 - accuracy: 0.2761\n", + " (9.87866386942555, 1e-05)-DP guarantees for epoch 260 \n", + "\n", + "5/5 [==============================] - 3s 353ms/step - loss: 0.0510 - accuracy: 0.2761 - val_loss: 0.0519 - val_accuracy: 0.2707\n", + "Epoch 261/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0509 - accuracy: 0.2751\n", + " (9.898190686559698, 1e-05)-DP guarantees for epoch 261 \n", + "\n", + "5/5 [==============================] - 3s 379ms/step - loss: 0.0509 - accuracy: 0.2751 - val_loss: 0.0519 - val_accuracy: 0.2724\n", + "Epoch 262/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0511 - accuracy: 0.2766\n", + " (9.917717503693844, 1e-05)-DP guarantees for epoch 262 \n", + "\n", + "5/5 [==============================] - 2s 352ms/step - loss: 0.0511 - accuracy: 0.2766 - val_loss: 0.0520 - val_accuracy: 0.2729\n", + "Epoch 263/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0508 - accuracy: 0.2773\n", + " (9.937244320827991, 1e-05)-DP guarantees for epoch 263 \n", + "\n", + "5/5 [==============================] - 2s 342ms/step - loss: 0.0508 - accuracy: 0.2773 - val_loss: 0.0520 - val_accuracy: 0.2708\n", + "Epoch 264/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0507 - accuracy: 0.2777\n", + " (9.95677113796214, 1e-05)-DP guarantees for epoch 264 \n", + "\n", + "5/5 [==============================] - 3s 366ms/step - loss: 0.0507 - accuracy: 0.2777 - val_loss: 0.0519 - val_accuracy: 0.2733\n", + "Epoch 265/265\n", + "5/5 [==============================] - ETA: 0s - loss: 0.0505 - accuracy: 0.2784\n", + " (9.976297955096285, 1e-05)-DP guarantees for epoch 265 \n", + "\n", + "5/5 [==============================] - 3s 378ms/step - loss: 0.0505 - accuracy: 0.2784 - val_loss: 0.0519 - val_accuracy: 0.2738\n" + ] + } + ], + "source": [ + "hist = model.fit(\n", + " ds_train,\n", + " epochs=num_epochs,\n", + " validation_data=ds_test,\n", + " callbacks=[\n", + " # accounting is done thanks to a callback\n", + " DP_Accountant(log_fn=\"logging\"), # wandb.log also available.\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "8e139678-6ec6-4a2e-980b-83059c98c48b", + "metadata": {}, + "source": [ + "This final val_accuracy is compliant with results reported in other framework. For comparison, in Opacus tutorials, the Resnet 18 reaches 60% val_accuracy at $\\epsilon=47$, but 15% at $\\epsilon=13$. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "db636e0c-0334-45ee-b953-e4cc85bb7d8e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/basics_mnist.ipynb b/examples/basics_mnist.ipynb new file mode 100644 index 0000000..3020545 --- /dev/null +++ b/examples/basics_mnist.ipynb @@ -0,0 +1,886 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "f7bf07b9-d489-4484-acb9-175cb740dc60", + "metadata": {}, + "source": [ + "# Mnist tutorial\n", + "\n", + "This notebook introduces the basics of usage of our library.\n", + "\n", + "## Imports" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "8a0eebdf-6082-4d00-aa14-b42953217a93", + "metadata": {}, + "source": [ + "The library is based on tensorflow." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "91c2965e-0375-4966-bc55-776204af9d69", + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow as tf" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "9356cd9b-6f79-45f1-8f2e-c46a526c4ae7", + "metadata": {}, + "source": [ + "### lip-dp dependencies\n", + "\n", + "The need a model `DP_Sequential` that handles the noisification of gradients. It is composed `layers` and trained with a loss found in `loss`. The model is initialized with the convenience function `DPParameters`. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "1e5d58f8-386c-44c7-8c5d-e5b69b5be231", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp import layers\n", + "from deel.lipdp import losses\n", + "from deel.lipdp.model import DP_Sequential\n", + "from deel.lipdp.model import DPParameters" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "3a247cd3-48d6-4854-92df-01420d3bea80", + "metadata": {}, + "source": [ + "The `DP_Accountant` callback keeps track of $(\\epsilon,\\delta)$-DP values epoch after epoch. In practice we may be interested in reaching the maximum val_accuracy under privacy constraint $\\epsilon$: the convenience function `get_max_epochs` exactly does that by performing a dichotomy search over the number of epochs." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "950c5c56-4b34-4653-aaf3-7d97acc1f5f2", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.model import DP_Accountant\n", + "from deel.lipdp.sensitivity import get_max_epochs" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "893d3078-5166-428c-9cb1-d29ec1f05d71", + "metadata": {}, + "source": [ + "The framework requires a control of the maximum norm of inputs. This can be ensured with input clipping for example: `bound_clip_value`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "f395c9fc-b67d-4fd2-be4b-b1c43221ebcb", + "metadata": {}, + "outputs": [], + "source": [ + "from deel.lipdp.pipeline import bound_clip_value\n", + "from deel.lipdp.pipeline import load_and_prepare_data" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "e54a79db-24b4-4dae-b684-170fa743bc5d", + "metadata": {}, + "source": [ + "## Setup DP Lipschitz model\n", + "\n", + "Here we apply the \"global\" strategy, with a noise multiplier $2.5$. Note that for Mnist the dataset size is $N=60,000$, and it is recommended that $\\delta<\\frac{1}{N}$. So we propose a value of $\\delta=10^{-5}$." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "f79ea3b0-33a6-401c-a3a3-e314939fd269", + "metadata": {}, + "outputs": [], + "source": [ + "dp_parameters = DPParameters(\n", + " noisify_strategy=\"global\",\n", + " noise_multiplier=2.0,\n", + " delta=1e-5,\n", + ")\n", + "\n", + "epsilon_max = 3.0" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "6482128c-ac2e-4cdd-9bbd-6d3172c292b1", + "metadata": {}, + "source": [ + "### Loading the data\n", + "\n", + "We clip the elementwise input upper-bound to $20.0$." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a8ed0fc4-4655-4bad-a6ac-8697cd5bc7a6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-05-24 16:00:31.206597: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2023-05-24 16:00:31.742417: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1525] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 47066 MB memory: -> device: 0, name: Quadro RTX 8000, pci bus id: 0000:03:00.0, compute capability: 7.5\n" + ] + } + ], + "source": [ + "import warnings\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "# data loader return dataset_metadata which allows to\n", + "# know the informations required for privacy accounting\n", + "# (dataset size, number of samples, max input bound...)\n", + "input_upper_bound = 20.0\n", + "ds_train, ds_test, dataset_metadata = load_and_prepare_data(\n", + " \"mnist\",\n", + " batch_size=1000,\n", + " drop_remainder=True, # accounting assumes fixed batch size\n", + " bound_fct=bound_clip_value( # other strategies are possible, like normalization.\n", + " input_upper_bound\n", + " ), # clipping preprocessing allows to control input bound\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "eb356c04-a836-4f49-93d7-7e0cc4c12b1d", + "metadata": {}, + "source": [ + "### Build the DP model\n", + "\n", + "We imitate the interface of Keras. We use common layers found in deel-lip, which a wrapper that handles the bound propagation. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "30cf44ed-653b-4eaa-8ed9-26e4815db511", + "metadata": {}, + "outputs": [], + "source": [ + "# construct DP_Sequential\n", + "model = DP_Sequential(\n", + " # works like usual sequential but requires DP layers\n", + " layers=[\n", + " # BoundedInput works like Input, but performs input clipping to guarantee input bound\n", + " layers.DP_BoundedInput(\n", + " input_shape=dataset_metadata.input_shape, upper_bound=input_upper_bound\n", + " ),\n", + " layers.DP_QuickSpectralConv2D( # Reshaped Kernel Orthogonalization (RKO) convolution.\n", + " filters=32,\n", + " kernel_size=3,\n", + " kernel_initializer=\"orthogonal\",\n", + " strides=1,\n", + " use_bias=False, # No biases since the framework handles a single tf.Variable per layer.\n", + " ),\n", + " layers.DP_GroupSort(2), # GNP activation function.\n", + " layers.DP_ScaledL2NormPooling2D(pool_size=2, strides=2), # GNP pooling.\n", + " layers.DP_QuickSpectralConv2D( # Reshaped Kernel Orthogonalization (RKO) convolution.\n", + " filters=64,\n", + " kernel_size=3,\n", + " kernel_initializer=\"orthogonal\",\n", + " strides=1,\n", + " use_bias=False, # No biases since the framework handles a single tf.Variable per layer.\n", + " ),\n", + " layers.DP_GroupSort(2), # GNP activation function.\n", + " layers.DP_ScaledL2NormPooling2D(pool_size=2, strides=2), # GNP pooling.\n", + " \n", + " layers.DP_Flatten(), # Convert features maps to flat vector.\n", + " \n", + " layers.DP_QuickSpectralDense(512), # GNP layer with orthogonal weight matrix.\n", + " layers.DP_GroupSort(2),\n", + " layers.DP_QuickSpectralDense(dataset_metadata.nb_classes),\n", + " ],\n", + " dp_parameters=dp_parameters,\n", + " dataset_metadata=dataset_metadata,\n", + ")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "09777811", + "metadata": {}, + "source": [ + "We compile the model with:\n", + "* any first order optimizer (e.g SGD). No adaptation or special optimizer is needed.\n", + "* a loss with known Lipschitz constant, e.g Categorical Cross-entropy with temperature." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "efd97e75-34f0-49fa-ad2c-1816247f1611", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"dp__sequential\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " dp__bounded_input (DP_Bound (None, 28, 28, 1) 0 \n", + " edInput) \n", + " \n", + " dp__quick_spectral_conv2d ( (None, 26, 26, 32) 288 \n", + " DP_QuickSpectralConv2D) \n", + " \n", + " dp__group_sort (DP_GroupSor (None, 26, 26, 32) 0 \n", + " t) \n", + " \n", + " dp__scaled_l2_norm_pooling2 (None, 13, 13, 32) 0 \n", + " d (DP_ScaledL2NormPooling2D \n", + " ) \n", + " \n", + " dp__quick_spectral_conv2d_1 (None, 11, 11, 64) 18432 \n", + " (DP_QuickSpectralConv2D) \n", + " \n", + " dp__group_sort_1 (DP_GroupS (None, 11, 11, 64) 0 \n", + " ort) \n", + " \n", + " dp__scaled_l2_norm_pooling2 (None, 5, 5, 64) 0 \n", + " d_1 (DP_ScaledL2NormPooling \n", + " 2D) \n", + " \n", + " dp__flatten (DP_Flatten) (None, 1600) 0 \n", + " \n", + " dp__quick_spectral_dense (D (None, 512) 819200 \n", + " P_QuickSpectralDense) \n", + " \n", + " dp__group_sort_2 (DP_GroupS (None, 512) 0 \n", + " ort) \n", + " \n", + " dp__quick_spectral_dense_1 (None, 10) 5120 \n", + " (DP_QuickSpectralDense) \n", + " \n", + "=================================================================\n", + "Total params: 843,040\n", + "Trainable params: 843,040\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "model.compile(\n", + " # Compile model using DP loss\n", + " loss=losses.DP_TauCategoricalCrossentropy(18.0),\n", + " # this method is compatible with any first order optimizer\n", + " optimizer=tf.keras.optimizers.SGD(learning_rate=2e-4, momentum=0.9),\n", + " metrics=[\"accuracy\"],\n", + ")\n", + "model.summary()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "28ae2da5-ed40-4131-8721-73bbc73fa68d", + "metadata": {}, + "source": [ + "Note that the model contains $843$K parameters. Without gradient clipping these architectures can be trained with batch sizes as big as $1000$ on a standard GPU.\n", + "\n", + "Then, we compute the number of epochs. The maximum value of epsilon will depends on dp_parameters and the number of epochs. In order to control epsilon, we compute the adequate number of epochs" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "dd611afd-be30-4bd3-b658-48d1961247aa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "epoch bounds = (0, 512.0) and epsilon = 7.994426666195571 at epoch 512.0\n", + "epoch bounds = (0, 256.0) and epsilon = 5.34128917907949 at epoch 256.0\n", + "epoch bounds = (0, 128.0) and epsilon = 3.631964622805248 at epoch 128.0\n", + "epoch bounds = (64.0, 128.0) and epsilon = 2.4829841192119444 at epoch 64.0\n", + "epoch bounds = (64.0, 96.0) and epsilon = 3.089635897639078 at epoch 96.0\n", + "epoch bounds = (80.0, 96.0) and epsilon = 2.796528753679695 at epoch 80.0\n", + "epoch bounds = (88.0, 96.0) and epsilon = 2.952713799856404 at epoch 88.0\n", + "epoch bounds = (88.0, 92.0) and epsilon = 3.0216241846349847 at epoch 92.0\n", + "epoch bounds = (90.0, 92.0) and epsilon = 2.987618328313939 at epoch 90.0\n", + "epoch bounds = (90.0, 91.0) and epsilon = 3.0046212568846444 at epoch 91.0\n" + ] + } + ], + "source": [ + "num_epochs = get_max_epochs(epsilon_max, model)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "53e94244", + "metadata": {}, + "source": [ + "## Train the model\n", + "\n", + "The model can be trained, and the DP Accountant will automatically track the privacy loss." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0ddcb192-547e-400e-87bb-2d4246185c64", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/91\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-05-24 16:00:36.621954: I tensorflow/stream_executor/cuda/cuda_dnn.cc:368] Loaded cuDNN version 8300\n", + "2023-05-24 16:00:37.363789: I tensorflow/core/platform/default/subprocess.cc:304] Start cannot spawn child process: No such file or directory\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "60/60 [==============================] - ETA: 0s - loss: 0.2020 - accuracy: 0.2324\n", + " (0.3227333785403041, 1e-05)-DP guarantees for epoch 1 \n", + "\n", + "60/60 [==============================] - 5s 38ms/step - loss: 0.2020 - accuracy: 0.2324 - val_loss: 0.1712 - val_accuracy: 0.3147\n", + "Epoch 2/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.1607 - accuracy: 0.3958\n", + " (0.41135036253440604, 1e-05)-DP guarantees for epoch 2 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.1604 - accuracy: 0.3992 - val_loss: 0.1486 - val_accuracy: 0.5122\n", + "Epoch 3/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.1426 - accuracy: 0.5510\n", + " (0.4972854400421322, 1e-05)-DP guarantees for epoch 3 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.1426 - accuracy: 0.5510 - val_loss: 0.1334 - val_accuracy: 0.6108\n", + "Epoch 4/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.1291 - accuracy: 0.6333\n", + " (0.5737399623472044, 1e-05)-DP guarantees for epoch 4 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.1291 - accuracy: 0.6333 - val_loss: 0.1213 - val_accuracy: 0.6784\n", + "Epoch 5/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.1182 - accuracy: 0.6883\n", + " (0.6418194146435952, 1e-05)-DP guarantees for epoch 5 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.1182 - accuracy: 0.6883 - val_loss: 0.1109 - val_accuracy: 0.7180\n", + "Epoch 6/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.1088 - accuracy: 0.7247\n", + " (0.7042008802236781, 1e-05)-DP guarantees for epoch 6 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.1087 - accuracy: 0.7247 - val_loss: 0.1024 - val_accuracy: 0.7527\n", + "Epoch 7/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.1012 - accuracy: 0.7488\n", + " (0.7616059152520757, 1e-05)-DP guarantees for epoch 7 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.1012 - accuracy: 0.7488 - val_loss: 0.0955 - val_accuracy: 0.7698\n", + "Epoch 8/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0948 - accuracy: 0.7644\n", + " (0.8155744676428971, 1e-05)-DP guarantees for epoch 8 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0948 - accuracy: 0.7644 - val_loss: 0.0899 - val_accuracy: 0.7815\n", + "Epoch 9/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0896 - accuracy: 0.7785\n", + " (0.8666021691681208, 1e-05)-DP guarantees for epoch 9 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0896 - accuracy: 0.7785 - val_loss: 0.0848 - val_accuracy: 0.7936\n", + "Epoch 10/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0849 - accuracy: 0.7868\n", + " (0.9152742048884784, 1e-05)-DP guarantees for epoch 10 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0849 - accuracy: 0.7868 - val_loss: 0.0804 - val_accuracy: 0.8003\n", + "Epoch 11/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0810 - accuracy: 0.7967\n", + " (0.9617965624530973, 1e-05)-DP guarantees for epoch 11 \n", + "\n", + "60/60 [==============================] - 2s 30ms/step - loss: 0.0809 - accuracy: 0.7975 - val_loss: 0.0769 - val_accuracy: 0.8109\n", + "Epoch 12/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0774 - accuracy: 0.8060\n", + " (1.0059716506359193, 1e-05)-DP guarantees for epoch 12 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0774 - accuracy: 0.8060 - val_loss: 0.0733 - val_accuracy: 0.8179\n", + "Epoch 13/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0740 - accuracy: 0.8131\n", + " (1.049398006635733, 1e-05)-DP guarantees for epoch 13 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0740 - accuracy: 0.8131 - val_loss: 0.0704 - val_accuracy: 0.8269\n", + "Epoch 14/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0713 - accuracy: 0.8216\n", + " (1.090263192229449, 1e-05)-DP guarantees for epoch 14 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0713 - accuracy: 0.8216 - val_loss: 0.0677 - val_accuracy: 0.8309\n", + "Epoch 15/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0689 - accuracy: 0.8240\n", + " (1.131126828240101, 1e-05)-DP guarantees for epoch 15 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0689 - accuracy: 0.8240 - val_loss: 0.0656 - val_accuracy: 0.8355\n", + "Epoch 16/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0669 - accuracy: 0.8293\n", + " (1.169340908770284, 1e-05)-DP guarantees for epoch 16 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0668 - accuracy: 0.8296 - val_loss: 0.0635 - val_accuracy: 0.8398\n", + "Epoch 17/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0647 - accuracy: 0.8333\n", + " (1.2074292910030167, 1e-05)-DP guarantees for epoch 17 \n", + "\n", + "60/60 [==============================] - 2s 29ms/step - loss: 0.0646 - accuracy: 0.8335 - val_loss: 0.0615 - val_accuracy: 0.8437\n", + "Epoch 18/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0630 - accuracy: 0.8366\n", + " (1.2447047350704166, 1e-05)-DP guarantees for epoch 18 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0629 - accuracy: 0.8367 - val_loss: 0.0598 - val_accuracy: 0.8468\n", + "Epoch 19/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0612 - accuracy: 0.8399\n", + " (1.2800495944157277, 1e-05)-DP guarantees for epoch 19 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0612 - accuracy: 0.8399 - val_loss: 0.0582 - val_accuracy: 0.8508\n", + "Epoch 20/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0598 - accuracy: 0.8428\n", + " (1.3153944538284068, 1e-05)-DP guarantees for epoch 20 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0598 - accuracy: 0.8428 - val_loss: 0.0569 - val_accuracy: 0.8563\n", + "Epoch 21/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0584 - accuracy: 0.8468\n", + " (1.3507368078845663, 1e-05)-DP guarantees for epoch 21 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0584 - accuracy: 0.8466 - val_loss: 0.0557 - val_accuracy: 0.8572\n", + "Epoch 22/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0572 - accuracy: 0.8509\n", + " (1.383564204783113, 1e-05)-DP guarantees for epoch 22 \n", + "\n", + "60/60 [==============================] - 2s 30ms/step - loss: 0.0572 - accuracy: 0.8509 - val_loss: 0.0546 - val_accuracy: 0.8610\n", + "Epoch 23/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0561 - accuracy: 0.8519\n", + " (1.4161979427317832, 1e-05)-DP guarantees for epoch 23 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0562 - accuracy: 0.8518 - val_loss: 0.0537 - val_accuracy: 0.8619\n", + "Epoch 24/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0552 - accuracy: 0.8547\n", + " (1.448831680775656, 1e-05)-DP guarantees for epoch 24 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0552 - accuracy: 0.8547 - val_loss: 0.0525 - val_accuracy: 0.8657\n", + "Epoch 25/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0541 - accuracy: 0.8575\n", + " (1.4814654188092617, 1e-05)-DP guarantees for epoch 25 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0541 - accuracy: 0.8576 - val_loss: 0.0516 - val_accuracy: 0.8675\n", + "Epoch 26/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0531 - accuracy: 0.8578\n", + " (1.512526290723161, 1e-05)-DP guarantees for epoch 26 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0531 - accuracy: 0.8578 - val_loss: 0.0506 - val_accuracy: 0.8691\n", + "Epoch 27/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0522 - accuracy: 0.8605\n", + " (1.5424804710143858, 1e-05)-DP guarantees for epoch 27 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0522 - accuracy: 0.8605 - val_loss: 0.0497 - val_accuracy: 0.8709\n", + "Epoch 28/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0512 - accuracy: 0.8624\n", + " (1.5724346510360574, 1e-05)-DP guarantees for epoch 28 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0512 - accuracy: 0.8626 - val_loss: 0.0488 - val_accuracy: 0.8730\n", + "Epoch 29/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0503 - accuracy: 0.8650\n", + " (1.6023888317992228, 1e-05)-DP guarantees for epoch 29 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0503 - accuracy: 0.8653 - val_loss: 0.0479 - val_accuracy: 0.8752\n", + "Epoch 30/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0495 - accuracy: 0.8665\n", + " (1.632343011263517, 1e-05)-DP guarantees for epoch 30 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0495 - accuracy: 0.8667 - val_loss: 0.0471 - val_accuracy: 0.8749\n", + "Epoch 31/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0488 - accuracy: 0.8684\n", + " (1.6622962394525178, 1e-05)-DP guarantees for epoch 31 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0487 - accuracy: 0.8686 - val_loss: 0.0463 - val_accuracy: 0.8779\n", + "Epoch 32/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0480 - accuracy: 0.8697\n", + " (1.689965116494089, 1e-05)-DP guarantees for epoch 32 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0480 - accuracy: 0.8697 - val_loss: 0.0457 - val_accuracy: 0.8777\n", + "Epoch 33/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0475 - accuracy: 0.8700\n", + " (1.7172705001520499, 1e-05)-DP guarantees for epoch 33 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0475 - accuracy: 0.8704 - val_loss: 0.0452 - val_accuracy: 0.8790\n", + "Epoch 34/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0469 - accuracy: 0.8736\n", + " (1.7445758842338837, 1e-05)-DP guarantees for epoch 34 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0468 - accuracy: 0.8738 - val_loss: 0.0446 - val_accuracy: 0.8806\n", + "Epoch 35/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0463 - accuracy: 0.8754\n", + " (1.7718812676250233, 1e-05)-DP guarantees for epoch 35 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0462 - accuracy: 0.8756 - val_loss: 0.0441 - val_accuracy: 0.8825\n", + "Epoch 36/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0456 - accuracy: 0.8763\n", + " (1.799186650959813, 1e-05)-DP guarantees for epoch 36 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0456 - accuracy: 0.8763 - val_loss: 0.0434 - val_accuracy: 0.8831\n", + "Epoch 37/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0450 - accuracy: 0.8771\n", + " (1.8264920346090618, 1e-05)-DP guarantees for epoch 37 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0450 - accuracy: 0.8773 - val_loss: 0.0429 - val_accuracy: 0.8846\n", + "Epoch 38/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0444 - accuracy: 0.8786\n", + " (1.8537974184156425, 1e-05)-DP guarantees for epoch 38 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0444 - accuracy: 0.8786 - val_loss: 0.0423 - val_accuracy: 0.8855\n", + "Epoch 39/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0439 - accuracy: 0.8800\n", + " (1.8807666749981604, 1e-05)-DP guarantees for epoch 39 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0439 - accuracy: 0.8802 - val_loss: 0.0419 - val_accuracy: 0.8863\n", + "Epoch 40/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0435 - accuracy: 0.8803\n", + " (1.9054738700393052, 1e-05)-DP guarantees for epoch 40 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0435 - accuracy: 0.8804 - val_loss: 0.0415 - val_accuracy: 0.8858\n", + "Epoch 41/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0430 - accuracy: 0.8816\n", + " (1.9301604511513608, 1e-05)-DP guarantees for epoch 41 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0430 - accuracy: 0.8816 - val_loss: 0.0410 - val_accuracy: 0.8884\n", + "Epoch 42/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0425 - accuracy: 0.8824\n", + " (1.9548470320035656, 1e-05)-DP guarantees for epoch 42 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0425 - accuracy: 0.8824 - val_loss: 0.0405 - val_accuracy: 0.8890\n", + "Epoch 43/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0421 - accuracy: 0.8837\n", + " (1.979533612594768, 1e-05)-DP guarantees for epoch 43 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0421 - accuracy: 0.8837 - val_loss: 0.0403 - val_accuracy: 0.8890\n", + "Epoch 44/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0418 - accuracy: 0.8856\n", + " (2.0042201936126345, 1e-05)-DP guarantees for epoch 44 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0418 - accuracy: 0.8856 - val_loss: 0.0399 - val_accuracy: 0.8908\n", + "Epoch 45/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0414 - accuracy: 0.8858\n", + " (2.0289067746857206, 1e-05)-DP guarantees for epoch 45 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0414 - accuracy: 0.8856 - val_loss: 0.0393 - val_accuracy: 0.8926\n", + "Epoch 46/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0408 - accuracy: 0.8872\n", + " (2.053593355232055, 1e-05)-DP guarantees for epoch 46 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0408 - accuracy: 0.8872 - val_loss: 0.0388 - val_accuracy: 0.8951\n", + "Epoch 47/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0405 - accuracy: 0.8882\n", + " (2.078279935996221, 1e-05)-DP guarantees for epoch 47 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0404 - accuracy: 0.8887 - val_loss: 0.0385 - val_accuracy: 0.8959\n", + "Epoch 48/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0400 - accuracy: 0.8882\n", + " (2.1029665168498504, 1e-05)-DP guarantees for epoch 48 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0400 - accuracy: 0.8882 - val_loss: 0.0381 - val_accuracy: 0.8952\n", + "Epoch 49/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0397 - accuracy: 0.8890\n", + " (2.127653097450219, 1e-05)-DP guarantees for epoch 49 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0398 - accuracy: 0.8888 - val_loss: 0.0379 - val_accuracy: 0.8943\n", + "Epoch 50/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0396 - accuracy: 0.8887\n", + " (2.151531383398666, 1e-05)-DP guarantees for epoch 50 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0395 - accuracy: 0.8889 - val_loss: 0.0375 - val_accuracy: 0.8946\n", + "Epoch 51/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0391 - accuracy: 0.8893\n", + " (2.1736284198821467, 1e-05)-DP guarantees for epoch 51 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0391 - accuracy: 0.8895 - val_loss: 0.0372 - val_accuracy: 0.8968\n", + "Epoch 52/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0387 - accuracy: 0.8908\n", + " (2.195725456202997, 1e-05)-DP guarantees for epoch 52 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0387 - accuracy: 0.8908 - val_loss: 0.0368 - val_accuracy: 0.8967\n", + "Epoch 53/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0385 - accuracy: 0.8905\n", + " (2.217822492103547, 1e-05)-DP guarantees for epoch 53 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0385 - accuracy: 0.8905 - val_loss: 0.0366 - val_accuracy: 0.8991\n", + "Epoch 54/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0382 - accuracy: 0.8913\n", + " (2.2399195284840734, 1e-05)-DP guarantees for epoch 54 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0382 - accuracy: 0.8913 - val_loss: 0.0365 - val_accuracy: 0.8992\n", + "Epoch 55/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0380 - accuracy: 0.8924\n", + " (2.2620165646623547, 1e-05)-DP guarantees for epoch 55 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0380 - accuracy: 0.8921 - val_loss: 0.0362 - val_accuracy: 0.8994\n", + "Epoch 56/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0377 - accuracy: 0.8925\n", + " (2.2841136015562187, 1e-05)-DP guarantees for epoch 56 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0377 - accuracy: 0.8925 - val_loss: 0.0358 - val_accuracy: 0.8999\n", + "Epoch 57/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0374 - accuracy: 0.8930\n", + " (2.3062106367493893, 1e-05)-DP guarantees for epoch 57 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0374 - accuracy: 0.8930 - val_loss: 0.0356 - val_accuracy: 0.9004\n", + "Epoch 58/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0371 - accuracy: 0.8938\n", + " (2.3283076739544244, 1e-05)-DP guarantees for epoch 58 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0372 - accuracy: 0.8939 - val_loss: 0.0354 - val_accuracy: 0.9010\n", + "Epoch 59/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0369 - accuracy: 0.8951\n", + " (2.3504047095381226, 1e-05)-DP guarantees for epoch 59 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0369 - accuracy: 0.8951 - val_loss: 0.0351 - val_accuracy: 0.9010\n", + "Epoch 60/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0365 - accuracy: 0.8963\n", + " (2.3725017457248683, 1e-05)-DP guarantees for epoch 60 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0365 - accuracy: 0.8963 - val_loss: 0.0347 - val_accuracy: 0.9037\n", + "Epoch 61/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0363 - accuracy: 0.8968\n", + " (2.3945987822094885, 1e-05)-DP guarantees for epoch 61 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0363 - accuracy: 0.8968 - val_loss: 0.0346 - val_accuracy: 0.9024\n", + "Epoch 62/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0360 - accuracy: 0.8979\n", + " (2.4166958179233653, 1e-05)-DP guarantees for epoch 62 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0360 - accuracy: 0.8981 - val_loss: 0.0343 - val_accuracy: 0.9041\n", + "Epoch 63/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0358 - accuracy: 0.8986\n", + " (2.438792853624178, 1e-05)-DP guarantees for epoch 63 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0358 - accuracy: 0.8987 - val_loss: 0.0340 - val_accuracy: 0.9068\n", + "Epoch 64/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0355 - accuracy: 0.8995\n", + " (2.4608898896847116, 1e-05)-DP guarantees for epoch 64 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0356 - accuracy: 0.8992 - val_loss: 0.0338 - val_accuracy: 0.9072\n", + "Epoch 65/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0352 - accuracy: 0.9005\n", + " (2.4829841192119444, 1e-05)-DP guarantees for epoch 65 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0353 - accuracy: 0.9000 - val_loss: 0.0336 - val_accuracy: 0.9059\n", + "Epoch 66/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0351 - accuracy: 0.8996\n", + " (2.5034880893370737, 1e-05)-DP guarantees for epoch 66 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0351 - accuracy: 0.8996 - val_loss: 0.0334 - val_accuracy: 0.9070\n", + "Epoch 67/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0350 - accuracy: 0.9003\n", + " (2.523024133549594, 1e-05)-DP guarantees for epoch 67 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0349 - accuracy: 0.9003 - val_loss: 0.0333 - val_accuracy: 0.9069\n", + "Epoch 68/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0348 - accuracy: 0.9005\n", + " (2.542560178527111, 1e-05)-DP guarantees for epoch 68 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0348 - accuracy: 0.9005 - val_loss: 0.0332 - val_accuracy: 0.9071\n", + "Epoch 69/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0346 - accuracy: 0.9006\n", + " (2.5620962223364145, 1e-05)-DP guarantees for epoch 69 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0347 - accuracy: 0.9007 - val_loss: 0.0329 - val_accuracy: 0.9081\n", + "Epoch 70/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0345 - accuracy: 0.9015\n", + " (2.5816322672410785, 1e-05)-DP guarantees for epoch 70 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0345 - accuracy: 0.9014 - val_loss: 0.0327 - val_accuracy: 0.9069\n", + "Epoch 71/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0343 - accuracy: 0.9017\n", + " (2.601168310806795, 1e-05)-DP guarantees for epoch 71 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0343 - accuracy: 0.9019 - val_loss: 0.0326 - val_accuracy: 0.9090\n", + "Epoch 72/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0342 - accuracy: 0.9021\n", + " (2.620704354996593, 1e-05)-DP guarantees for epoch 72 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0342 - accuracy: 0.9022 - val_loss: 0.0324 - val_accuracy: 0.9089\n", + "Epoch 73/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0340 - accuracy: 0.9018\n", + " (2.640240400625916, 1e-05)-DP guarantees for epoch 73 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0339 - accuracy: 0.9020 - val_loss: 0.0322 - val_accuracy: 0.9096\n", + "Epoch 74/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0339 - accuracy: 0.9018\n", + " (2.659776444789028, 1e-05)-DP guarantees for epoch 74 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0338 - accuracy: 0.9022 - val_loss: 0.0320 - val_accuracy: 0.9103\n", + "Epoch 75/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0335 - accuracy: 0.9024\n", + " (2.679312488654814, 1e-05)-DP guarantees for epoch 75 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0335 - accuracy: 0.9024 - val_loss: 0.0318 - val_accuracy: 0.9088\n", + "Epoch 76/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0333 - accuracy: 0.9025\n", + " (2.69884853278786, 1e-05)-DP guarantees for epoch 76 \n", + "\n", + "60/60 [==============================] - 2s 29ms/step - loss: 0.0333 - accuracy: 0.9023 - val_loss: 0.0315 - val_accuracy: 0.9098\n", + "Epoch 77/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0332 - accuracy: 0.9033\n", + " (2.7183845763895516, 1e-05)-DP guarantees for epoch 77 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0332 - accuracy: 0.9033 - val_loss: 0.0314 - val_accuracy: 0.9125\n", + "Epoch 78/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0330 - accuracy: 0.9046\n", + " (2.737920620600221, 1e-05)-DP guarantees for epoch 78 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0330 - accuracy: 0.9048 - val_loss: 0.0313 - val_accuracy: 0.9119\n", + "Epoch 79/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0328 - accuracy: 0.9053\n", + " (2.7574566653298858, 1e-05)-DP guarantees for epoch 79 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0328 - accuracy: 0.9053 - val_loss: 0.0311 - val_accuracy: 0.9115\n", + "Epoch 80/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0328 - accuracy: 0.9052\n", + " (2.7769927101097007, 1e-05)-DP guarantees for epoch 80 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0327 - accuracy: 0.9056 - val_loss: 0.0310 - val_accuracy: 0.9118\n", + "Epoch 81/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0325 - accuracy: 0.9056\n", + " (2.796528753679695, 1e-05)-DP guarantees for epoch 81 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0325 - accuracy: 0.9056 - val_loss: 0.0308 - val_accuracy: 0.9114\n", + "Epoch 82/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0324 - accuracy: 0.9057\n", + " (2.816064798903292, 1e-05)-DP guarantees for epoch 82 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0324 - accuracy: 0.9057 - val_loss: 0.0307 - val_accuracy: 0.9114\n", + "Epoch 83/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0323 - accuracy: 0.9053\n", + " (2.8356008431856474, 1e-05)-DP guarantees for epoch 83 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0322 - accuracy: 0.9057 - val_loss: 0.0305 - val_accuracy: 0.9117\n", + "Epoch 84/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0320 - accuracy: 0.9063\n", + " (2.8551368864333964, 1e-05)-DP guarantees for epoch 84 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0320 - accuracy: 0.9063 - val_loss: 0.0303 - val_accuracy: 0.9117\n", + "Epoch 85/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0318 - accuracy: 0.9064\n", + " (2.8746729305801413, 1e-05)-DP guarantees for epoch 85 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0318 - accuracy: 0.9064 - val_loss: 0.0302 - val_accuracy: 0.9121\n", + "Epoch 86/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0317 - accuracy: 0.9074\n", + " (2.894208975473722, 1e-05)-DP guarantees for epoch 86 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0316 - accuracy: 0.9076 - val_loss: 0.0299 - val_accuracy: 0.9132\n", + "Epoch 87/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0314 - accuracy: 0.9078\n", + " (2.9137450193835823, 1e-05)-DP guarantees for epoch 87 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0314 - accuracy: 0.9076 - val_loss: 0.0298 - val_accuracy: 0.9123\n", + "Epoch 88/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0313 - accuracy: 0.9086\n", + " (2.9332810632263646, 1e-05)-DP guarantees for epoch 88 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0313 - accuracy: 0.9086 - val_loss: 0.0299 - val_accuracy: 0.9133\n", + "Epoch 89/91\n", + "59/60 [============================>.] - ETA: 0s - loss: 0.0313 - accuracy: 0.9087\n", + " (2.952713799856404, 1e-05)-DP guarantees for epoch 89 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0313 - accuracy: 0.9087 - val_loss: 0.0298 - val_accuracy: 0.9140\n", + "Epoch 90/91\n", + "60/60 [==============================] - ETA: 0s - loss: 0.0312 - accuracy: 0.9097\n", + " (2.970615400210975, 1e-05)-DP guarantees for epoch 90 \n", + "\n", + "60/60 [==============================] - 2s 28ms/step - loss: 0.0312 - accuracy: 0.9097 - val_loss: 0.0298 - val_accuracy: 0.9127\n", + "Epoch 91/91\n", + "58/60 [============================>.] - ETA: 0s - loss: 0.0312 - accuracy: 0.9091\n", + " (2.987618328313939, 1e-05)-DP guarantees for epoch 91 \n", + "\n", + "60/60 [==============================] - 2s 27ms/step - loss: 0.0312 - accuracy: 0.9093 - val_loss: 0.0297 - val_accuracy: 0.9132\n" + ] + } + ], + "source": [ + "hist = model.fit(\n", + " ds_train,\n", + " epochs=num_epochs,\n", + " validation_data=ds_test,\n", + " callbacks=[\n", + " # accounting is done thanks to a callback\n", + " DP_Accountant(log_fn=\"logging\"), # wandb.log also available.\n", + " ],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "e1cbeee4-c204-454f-8f6f-20273b0169b7", + "metadata": {}, + "source": [ + "The model can be further improved by tuning various hyper-parameters, by adding layers (see `advanced_cifar10.ipynb` tutorial). " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fedc70ab-ccd5-4239-9d62-416d680af324", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/fig_accountant.png b/examples/fig_accountant.png new file mode 100644 index 0000000..68a0410 Binary files /dev/null and b/examples/fig_accountant.png differ diff --git a/examples/residuals.png b/examples/residuals.png new file mode 100644 index 0000000..4840e69 Binary files /dev/null and b/examples/residuals.png differ diff --git a/experiments/CIFAR10/CLI_sweep.sh b/experiments/CIFAR10/CLI_sweep.sh deleted file mode 100644 index fdcc1cc..0000000 --- a/experiments/CIFAR10/CLI_sweep.sh +++ /dev/null @@ -1,5 +0,0 @@ -for noise in 2.5 3.2 3.5 4. 5.: -do - python experiments/CIFAR10/main_template.py --cfg.log_wandb="sweep_archi" --cfg.noise_multiplier=$noise --cfg.loss="TauCategoricalCrossentropy" --cfg.opt_iterations=30 --cfg.noisify_strategy="global" - python experiments/CIFAR10/main_template.py --cfg.log_wandb="sweep_archi" --cfg.noise_multiplier=$noise --cfg.loss="KCosineSimilarity" --cfg.opt_iterations=30 --cfg.noisify_strategy="global" -done \ No newline at end of file diff --git a/experiments/CIFAR10/main.py b/experiments/CIFAR10/main.py new file mode 100644 index 0000000..b697fb7 --- /dev/null +++ b/experiments/CIFAR10/main.py @@ -0,0 +1,409 @@ +# -*- coding: utf-8 -*- +# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All +# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, +# CRIAQ and ANITI - https://www.deel.ai/ +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +import numpy as np +import tensorflow as tf +from absl import app +from ml_collections import config_dict +from ml_collections import config_flags + +import deel.lipdp.layers as DP_layers +from deel.lip.metrics import CategoricalProvableRobustAccuracy +from deel.lipdp import losses +from deel.lipdp.dynamic import AdaptiveQuantileClipping +from deel.lipdp.dynamic import LaplaceAdaptiveLossGradientClipping +from deel.lipdp.model import DP_Accountant +from deel.lipdp.model import DP_Model +from deel.lipdp.model import DPParameters +from deel.lipdp.pipeline import bound_clip_value +from deel.lipdp.pipeline import default_delta_value +from deel.lipdp.pipeline import load_and_prepare_images_data +from deel.lipdp.sensitivity import get_max_epochs +from deel.lipdp.utils import PrivacyMetrics +from deel.lipdp.utils import SignaltoNoiseAverage +from deel.lipdp.utils import SignaltoNoiseHistogram +from experiments.wandb_utils import init_wandb +from experiments.wandb_utils import run_with_wandb +from wandb.keras import WandbCallback + + +def default_cfg_cifar10(): + cfg = config_dict.ConfigDict() + cfg.batch_size = 2_500 # 5% of the dataset. + cfg.clip_loss_gradient = None # not required for dynamic clipping. + cfg.depth = 1 + cfg.dynamic_clipping = "quantiles" # can be "fixed", "laplace", "quantiles". "fixed" requires a clipping value. + cfg.dynamic_clipping_quantiles = ( + 0.9 # crop to 90% of the distribution of gradient norm. + ) + cfg.delta = 1e-5 # 1e-5 is the default value in the paper. + cfg.epsilon_max = 8.0 # budget! + cfg.input_bound = 3.0 # 15.0 works well in RGB non standardized. + cfg.learning_rate = 8e-2 # works well for vanilla SGD. + cfg.log_wandb = "disabled" + cfg.loss = "TauCategoricalCrossentropy" + cfg.mia = False + cfg.multiplicity = 0 # 0 means no multiplicity. + cfg.noise_multiplier = 3.0 + cfg.noisify_strategy = "per-layer" + cfg.representation = "RGB_STANDARDIZED" # "RGB", "RGB_STANDARDIZED", "HSV". + cfg.optimizer = "SGD" + cfg.signal_to_noise = "histogram" + cfg.sweep_id = "" # useful to resume a sweep. + cfg.sweep_yaml_config = "" # useful to load a sweep from a yaml file. + cfg.tau = 20.0 # temperature for the softmax. + cfg.use_residuals = False # better without. + cfg.width_multiplier = 1 + return cfg + + +project = "ICLR_Cifar10" +cfg = default_cfg_cifar10() +_CONFIG = config_flags.DEFINE_config_dict( + "cfg", cfg +) # for FLAGS parsing in command line. + + +def create_MLP_Mixer(dataset_metadata, dp_parameters): + layers = [ + DP_layers.DP_BoundedInput( + input_shape=dataset_metadata.input_shape, + upper_bound=dataset_metadata.max_norm, + ) + ] + + patch_size = 4 + num_mixer_layers = cfg.depth + seq_len = (dataset_metadata.input_shape[0] // patch_size) * ( + dataset_metadata.input_shape[1] // patch_size + ) + multiplier = cfg.width_multiplier + mlp_seq_dim = multiplier * seq_len + mlp_channel_dim = multiplier * seq_len + hidden_size = multiplier * seq_len + use_residuals = cfg.use_residuals + + layers.append( + DP_layers.DP_Lambda( + tf.image.extract_patches, + arguments=dict( + sizes=[1, patch_size, patch_size, 1], + strides=[1, patch_size, patch_size, 1], + rates=[1, 1, 1, 1], + padding="VALID", + ), + ) + ) + + layers.append( + DP_layers.DP_Reshape( + (seq_len, (patch_size**2) * dataset_metadata.input_shape[-1]) + ) + ) + layers.append( + DP_layers.DP_QuickSpectralDense( + units=hidden_size, use_bias=False, kernel_initializer="orthogonal" + ) + ) + + for _ in range(num_mixer_layers): + to_add = [ + DP_layers.DP_Permute((2, 1)), + DP_layers.DP_QuickSpectralDense( + units=mlp_seq_dim, use_bias=False, kernel_initializer="orthogonal" + ), + ] + to_add.append(DP_layers.DP_GroupSort(2)) + to_add.append(DP_layers.DP_LayerCentering()) + to_add += [ + DP_layers.DP_QuickSpectralDense( + units=seq_len, use_bias=False, kernel_initializer="orthogonal" + ), + DP_layers.DP_Permute((2, 1)), + ] + + if use_residuals: + layers += DP_layers.make_residuals("1-lip-add", to_add) + else: + layers += to_add + + to_add = [ + DP_layers.DP_QuickSpectralDense( + units=mlp_channel_dim, use_bias=False, kernel_initializer="orthogonal" + ), + ] + to_add.append(DP_layers.DP_GroupSort(2)) + to_add.append(DP_layers.DP_LayerCentering()) + to_add.append( + DP_layers.DP_QuickSpectralDense( + units=hidden_size, use_bias=False, kernel_initializer="orthogonal" + ) + ) + + if use_residuals: + layers += DP_layers.make_residuals("1-lip-add", to_add) + else: + layers += to_add + + layers += [ + DP_layers.DP_Flatten(), + ] + + layers.append( + DP_layers.DP_QuickSpectralDense( + units=dataset_metadata.nb_classes, + use_bias=False, + kernel_initializer="orthogonal", + ) + ) + + layers.append( + DP_layers.DP_ClipGradient( + clip_value=cfg.clip_loss_gradient, + mode="dynamic", + ) + ) + + model = DP_Model( + layers, + dp_parameters=dp_parameters, + dataset_metadata=dataset_metadata, + name="mlp_mixer", + ) + + model.build(input_shape=(None, *dataset_metadata.input_shape)) + + return model + + +def get_cifar10_standardized(verbose=True): + (x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data() + x_train = x_train.astype("float32") / 255.0 + x_test = x_test.astype("float32") / 255.0 + CIFAR10_MEAN = np.array([0.4914, 0.4822, 0.4465]).reshape((1, 1, 3)) + CIFAR10_STD_DEV = np.array([0.2023, 0.1994, 0.2010]).reshape((1, 1, 3)) + x_train = (x_train - CIFAR10_MEAN) / CIFAR10_STD_DEV + x_test = (x_test - CIFAR10_MEAN) / CIFAR10_STD_DEV + y_train = y_train.flatten() + y_test = y_test.flatten() + cifar10 = (x_train, y_train, x_test, y_test) + all_norms = np.linalg.norm(x_train, axis=-1) + if verbose: + print(f"Dataset Max norm: {np.max(all_norms)}") + print(f"Dataset Min norm: {np.min(all_norms)}") + print(f"Dataset Mean norm: {np.mean(all_norms)}") + print(f"Dataset Std norm: {np.std(all_norms)}") + quantiles = [0.25, 0.5, 0.75, 0.8, 0.85, 0.9, 0.95, 0.99] + print(f"Dataset Quantiles: {np.quantile(all_norms, quantiles)} at {quantiles}") + # We assume no privacy loss to estimate the max norm, the mean pixel value and the std pixel value. + # This is a reasonable assumption shared by many papers. If necessary, they can be estimated privately. + max_norm = np.max(all_norms) + max_norm = max_norm.astype(np.float32) + return cifar10, max_norm + + +def certifiable_acc_metrics(epsilons): + """Returns a list of metrics for certifiable accuracy at the given epsilons. + + Args: + epsilons: list of epsilons to evaluate, assuming 8bits encoding. + + Returns: + list of metrics. + """ + metrics = [] + for epsilon_8bit in epsilons: + name = f"certacc_{epsilon_8bit}" + epsilon = epsilon_8bit / 255.0 + # dataset has been standardized so we take that into account: + if cfg.representation == "RGB_STANDARDIZED": + epsilon = epsilon / 0.2023 # maximum std dev: lower bound of radius. + else: + assert ( + cfg.representation == "RGB" + ), "Certifiable accuracy only implemented for RGB and RGB_STANDARDIZED" + metric = CategoricalProvableRobustAccuracy( + epsilon=epsilon, disjoint_neurons=False, name=name + ) + metrics.append(metric) + return metrics + + +def train(): + init_wandb(cfg=cfg, project=project) + + ########################## + #### Dataset loading ##### + ########################## + + # clipping preprocessing allows to control input bound + input_bound = cfg.input_bound + if cfg.representation == "RGB_STANDARDIZED": + cifar10_standardized, max_norm_cifar10 = get_cifar10_standardized(verbose=True) + if input_bound is None: + input_bound = max_norm_cifar10 + print(f"Max norm set to {input_bound}") + bound_fct = bound_clip_value(input_bound) + + ds_train, ds_test, dataset_metadata = load_and_prepare_images_data( + "cifar10", + batch_size=cfg.batch_size, + colorspace=cfg.representation, + drop_remainder=True, # accounting assumes fixed batch size + bound_fct=bound_fct, + multiplicity=cfg.multiplicity, + ) + + ########################## + #### Model definition #### + ########################## + + # declare the privacy parameters + dp_parameters = DPParameters( + noisify_strategy=cfg.noisify_strategy, + noise_multiplier=cfg.noise_multiplier, + delta=default_delta_value(dataset_metadata), + ) + + model = create_MLP_Mixer(dataset_metadata, dp_parameters) + + ########################## + ######## Loss setup ###### + ########################## + + if cfg.loss == "TauCategoricalCrossentropy": + loss = losses.DP_TauCategoricalCrossentropy(cfg.tau) + elif cfg.loss == "MulticlassHKR": + alpha = 200.0 + margin = 1.0 + loss = losses.DP_MulticlassHKR(alpha=alpha, min_margin=margin) + elif cfg.loss == "KCosineSimilarity": + K = 0.99 + loss = losses.DP_KCosineSimilarity(K=K) + + ########################## + ##### Optimizer setup #### + ########################## + + if cfg.optimizer == "Adam": + optimizer = tf.keras.optimizers.Adam(learning_rate=cfg.learning_rate) + elif cfg.optimizer == "SGD": + # geometric sequence: memory length ~= 1 / (1 - momentum) + # memory length = nb_steps_per_epochs => momentum = 1 - (1./nb_steps_per_epochs) + momentum = 1 - 1.0 / dataset_metadata.nb_steps_per_epochs + momentum = max(0.5, min(0.99, momentum)) # reasonable range + optimizer = tf.keras.optimizers.SGD( + learning_rate=cfg.learning_rate, momentum=momentum + ) + else: + raise ValueError(f"Unknown optimizer {cfg.optimizer}") + + model.compile( + loss=loss, + optimizer=optimizer, + metrics=[ + "accuracy", + *certifiable_acc_metrics([1, 2, 4, 8, 16, 36]), + ], # accuracy metric is necessary for dynamic loss gradient clipping with "laplace" + run_eagerly=False, + ) + + callbacks = [ + WandbCallback(save_model=False, monitor="val_accuracy"), + DP_Accountant(), + ] + + if cfg.signal_to_noise == "disabled": + pass + elif cfg.signal_to_noise == "average": + batch_train = next(iter(ds_train)) + callbacks.append(SignaltoNoiseAverage(batch_train)) + elif cfg.signal_to_noise == "histogram": + batch_train = next(iter(ds_train)) + callbacks.append(SignaltoNoiseHistogram(batch_train)) + else: + raise ValueError(f"Unknown signal_to_noise {cfg.signal_to_noise}") + + ######################## + ### Dynamic clipping ### + ######################## + + if cfg.dynamic_clipping == "fixed": + assert ( + cfg.clip_loss_gradient is not None + ), "Fixed mode requires a clipping value" + elif cfg.dynamic_clipping == "laplace": + adaptive = LaplaceAdaptiveLossGradientClipping( + ds_train=ds_train, + patience=1, + epsilon=1.0, + ) + adaptive.set_model(model) + callbacks.append(adaptive) + elif cfg.dynamic_clipping == "quantiles": + adaptive = AdaptiveQuantileClipping( + ds_train=ds_train, + patience=1, + noise_multiplier=cfg.noise_multiplier * 2, # more noisy. + quantile=cfg.dynamic_clipping_quantiles, + learning_rate=1.0, + ) + adaptive.set_model(model) + callbacks.append(adaptive) + else: + raise ValueError(f"Unknown clipping strategy {cfg.dynamic_clipping}") + + ######################## + ###### MIA attack ###### + ######################## + + if cfg.mia: + privacy_metrics = PrivacyMetrics(cifar10_standardized) + callbacks.append(privacy_metrics) + + ######################## + ### Training process ### + ######################## + + if cfg.epsilon_max is None: + num_epochs = 1 # useful for debugging. + else: + # compute the max number of epochs to reach the budget. + num_epochs = get_max_epochs(cfg.epsilon_max, model, safe=True) + + hist = model.fit( + ds_train, + epochs=num_epochs, + validation_data=ds_test, + callbacks=callbacks, + ) + + if cfg.mia: + privacy_metrics.log_report() + + +def main(_): + run_with_wandb(cfg=cfg, train_function=train, project=project) + + +if __name__ == "__main__": + app.run(main) diff --git a/experiments/CIFAR10/main_template.py b/experiments/CIFAR10/main_template.py deleted file mode 100644 index 745248c..0000000 --- a/experiments/CIFAR10/main_template.py +++ /dev/null @@ -1,241 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All -# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, -# CRIAQ and ANITI - https://www.deel.ai/ -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -import os - -import numpy as np -import tensorflow as tf -import yaml -from absl import app -from ml_collections import config_dict -from ml_collections import config_flags -from models_CIFAR import create_MLP_Mixer -from models_CIFAR import create_ResNet -from models_CIFAR import create_VGG -from tensorflow.keras.callbacks import EarlyStopping -from tensorflow.keras.callbacks import ReduceLROnPlateau - -import deel.lipdp.layers as DP_layers -import wandb -from deel.lipdp import losses -from deel.lipdp.model import AdaptiveLossGradientClipping -from deel.lipdp.model import DP_Accountant -from deel.lipdp.model import DP_Model -from deel.lipdp.model import DPParameters -from deel.lipdp.pipeline import bound_clip_value -from deel.lipdp.pipeline import load_and_prepare_data -from deel.lipdp.sensitivity import get_max_epochs -from wandb.keras import WandbCallback -from wandb_sweeps.src_config.wandb_utils import init_wandb -from wandb_sweeps.src_config.wandb_utils import run_with_wandb - -cfg = config_dict.ConfigDict() - -cfg.batch_size = 5_000 -cfg.clip_loss_gradient = 1.0 -cfg.delta = 1e-5 -cfg.epsilon_max = 10.0 -cfg.input_bound = 15.0 -cfg.K = 0.99 -cfg.learning_rate = 1e-3 -cfg.log_wandb = "disabled" -cfg.opt_iterations = 10 -cfg.noise_multiplier = 3.0 -cfg.noisify_strategy = "global" -cfg.representation = "HSV" -cfg.optimizer = "Adam" -cfg.sweep_yaml_config = "" -cfg.tau = 8.0 -cfg.sweep_id = "" -cfg.loss = "TauCategoricalCrossentropy" - -_CONFIG = config_flags.DEFINE_config_dict("cfg", cfg) - - -def create_Mixer(dataset_metadata, dp_parameters): - layers = [ - DP_layers.DP_BoundedInput( - input_shape=dataset_metadata.input_shape, - upper_bound=dataset_metadata.max_norm, - ) - ] - - patch_size = 3 - num_mixer_layers = 2 - seq_len = (dataset_metadata.input_shape[0] // patch_size) * ( - dataset_metadata.input_shape[1] // patch_size - ) - multiplier = 2 - mlp_seq_dim = multiplier * seq_len - mlp_channel_dim = multiplier * seq_len - hidden_size = multiplier * seq_len - - layers.append( - DP_layers.DP_Lambda( - tf.image.extract_patches, - arguments=dict( - sizes=[1, patch_size, patch_size, 1], - strides=[1, patch_size, patch_size, 1], - rates=[1, 1, 1, 1], - padding="VALID", - ), - ) - ) - - layers.append( - DP_layers.DP_Reshape( - (seq_len, (patch_size**2) * dataset_metadata.input_shape[-1]) - ) - ) - layers.append( - DP_layers.DP_QuickSpectralDense( - units=hidden_size, use_bias=False, kernel_initializer="identity" - ) - ) - - for _ in range(num_mixer_layers): - to_add = [ - DP_layers.DP_Permute((2, 1)), - DP_layers.DP_QuickSpectralDense( - units=mlp_seq_dim, use_bias=False, kernel_initializer="identity" - ), - ] - to_add.append(DP_layers.DP_GroupSort(2)) - to_add.append(DP_layers.DP_LayerCentering()) - to_add += [ - DP_layers.DP_QuickSpectralDense( - units=seq_len, use_bias=False, kernel_initializer="identity" - ), - DP_layers.DP_Permute((2, 1)), - ] - layers += DP_layers.make_residuals("1-lip-add", to_add) - to_add = [ - DP_layers.DP_QuickSpectralDense( - units=mlp_channel_dim, use_bias=False, kernel_initializer="identity" - ), - ] - to_add.append(DP_layers.DP_GroupSort(2)) - to_add.append(DP_layers.DP_LayerCentering()) - to_add.append( - DP_layers.DP_QuickSpectralDense( - units=hidden_size, use_bias=False, kernel_initializer="identity" - ) - ) - layers += DP_layers.make_residuals("1-lip-add", to_add) - - layers.append(DP_layers.DP_Flatten()) - - layers.append( - DP_layers.DP_QuickSpectralDense( - units=10, use_bias=False, kernel_initializer="identity" - ) - ) - layers.append(DP_layers.DP_ClipGradient(clip_value=cfg.clip_loss_gradient)) - - model = DP_Model( - layers, - dp_parameters=dp_parameters, - dataset_metadata=dataset_metadata, - name="mlp_mixer", - ) - - model.build(input_shape=(None, *dataset_metadata.input_shape)) - - return model - - -def train(): - init_wandb(cfg=cfg, project="CIFAR10_dynamic_clipping") - - # declare the privacy parameters - dp_parameters = DPParameters( - noisify_strategy=cfg.noisify_strategy, - noise_multiplier=cfg.noise_multiplier, - delta=cfg.delta, - ) - - ds_train, ds_test, dataset_metadata = load_and_prepare_data( - "cifar10", - batch_size=cfg.batch_size, - colorspace=cfg.representation, - drop_remainder=True, # accounting assumes fixed batch size - bound_fct=bound_clip_value( - cfg.input_bound - ), # clipping preprocessing allows to control input bound - ) - - model = create_Mixer(dataset_metadata, dp_parameters) - - if cfg.loss == "TauCategoricalCrossentropy": - loss = losses.DP_TauCategoricalCrossentropy(cfg.tau) - elif cfg.loss == "KCosineSimilarity": - loss = losses.DP_KCosineSimilarity(cfg.K) - - model.compile( - loss=loss, - optimizer=tf.keras.optimizers.Adam(learning_rate=cfg.learning_rate), - # accuracy metric is necessary for dynamic loss gradient clipping - metrics=["accuracy"], - run_eagerly=False, - ) - - num_epochs = get_max_epochs(cfg.epsilon_max, model) - - callbacks = [ - WandbCallback(save_model=False, monitor="val_accuracy"), - EarlyStopping(monitor="val_accuracy", min_delta=0.001, patience=15), - ReduceLROnPlateau( - monitor="val_accuracy", factor=0.9, min_delta=0.001, patience=8 - ), - DP_Accountant(), - # AdaptiveLossGradientClipping(), - ] - - hist = model.fit( - ds_train, - epochs=num_epochs, - validation_data=ds_test, - callbacks=callbacks, - ) - - wandb.log( - { - "Accuracies": wandb.plot.line_series( - xs=[ - np.linspace(0, num_epochs, num_epochs + 1), - np.linspace(0, num_epochs, num_epochs + 1), - ], - ys=[hist.history["accuracy"], hist.history["val_accuracy"]], - keys=["Train Accuracy", "Test Accuracy"], - title="Train/Test Accuracy", - xname="num_epochs", - ) - } - ) - - -def main(_): - run_with_wandb(cfg=cfg, train_function=train, project="CIFAR10_dynamic_clipping") - - -if __name__ == "__main__": - app.run(main) diff --git a/experiments/CIFAR10/models_CIFAR.py b/experiments/CIFAR10/models.py similarity index 89% rename from experiments/CIFAR10/models_CIFAR.py rename to experiments/CIFAR10/models.py index e58dd15..d988344 100644 --- a/experiments/CIFAR10/models_CIFAR.py +++ b/experiments/CIFAR10/models.py @@ -44,7 +44,30 @@ def create_MLP_Mixer(dp_parameters, dataset_metadata, cfg, upper_bound): - input_shape = (32, 32, 3) + """Creates a MLP-Mixer network. + + The cfg object must contain some information: + - cfg.add_biases (bool): DP_AddBias layers after each linear layer. + - cfg.layer_centering (bool): DP_LayerCentering layers after each activation. + - cfg.skip_connections (bool): skip connections in the MLP-Mixer network. + - cfg.num_mixer_layers (int): number of mixer layers. + - cfg.patch_size (int): size of the patches. + - cfg.hidden_size (int): size of the hidden layer. + - cfg.mlp_seq_dim (int): size of the hidden layer in the MLP block. + - cfg.mlp_channel_dim (int): size of the hidden layer in the channel block. + - cfg.clip_loss_gradient (float): clip the gradient of the loss to this value. + + Args: + dp_parameters: parameters for differentially private training + dataset_metadata: metadata of the dataset, for privacy accounting + cfg: configuration containing information for DP_Sequential and MLP-Mixer + hyper-parameters + upper_bound (float): maximum norm of the input (clipped if input norm is higher) + + Returns: + DP_Sequential: DP MLP-Mixer network + """ + input_shape = dataset_metadata.input_shape layers = [DP_BoundedInput(input_shape=input_shape, upper_bound=upper_bound)] layers.append( @@ -121,7 +144,9 @@ def create_MLP_Mixer(dp_parameters, dataset_metadata, cfg, upper_bound): DP_QuickSpectralDense(units=10, use_bias=False, kernel_initializer="identity") ) if cfg.clip_loss_gradient is not None: - layers.append(DP_ClipGradient(cfg.clip_loss_gradient)) + layers.append( + DP_ClipGradient(cfg.clip_loss_gradient, mode=cfg.dynamic_clipping) + ) model = DP_Model( layers, @@ -253,7 +278,7 @@ def VGG_factory( layers.append(DP_SpectralDense(10, use_bias=False, kernel_initializer="orthogonal")) layers.append(DP_AddBias(norm_max=1)) - layers.append(DP_ClipGradient(cfg.clip_loss_gradient)) + layers.append(DP_ClipGradient(cfg.clip_loss_gradient, mode=cfg.dynamic_clipping)) # Remove DP_AddBias and DP_LayerCentering layers if required if cfg.add_biases is False: @@ -403,7 +428,9 @@ def create_ResNet(dp_parameters, dataset_metadata, cfg, upper_bound): layers += [ DP_ScaledGlobalL2NormPooling2D(name="globalpool1"), DP_SpectralDense(classes, use_bias=False, name="fc1"), - DP_ClipGradient(cfg.clip_loss_gradient, name="clipgrad"), + DP_ClipGradient( + cfg.clip_loss_gradient, mode=cfg.dynamic_clipping, name="clipgrad" + ), ] model = DP_Model( diff --git a/experiments/CIFAR10/sweep_1.yaml b/experiments/CIFAR10/sweep_1.yaml new file mode 100644 index 0000000..2a4e951 --- /dev/null +++ b/experiments/CIFAR10/sweep_1.yaml @@ -0,0 +1,36 @@ +method: bayes +metric: + name: val_certacc_16 + goal: maximize +parameters: + noise_multiplier: + min: 0.8 + max: 6.0 + distribution: uniform + learning_rate: + min: 0.00001 + max: 1.0 + distribution: log_uniform_values + batch_size: + values: [2000, 2500, 5000] + distribution: categorical + input_bound: + min: 1.0 + max: 4.5 + distribution: uniform + tau: + min: 0.01 + max: 100.0 + distribution: log_uniform_values + epsilon_max: + value: 20.0 + distribution: constant + width_multiplier: + value: 2 + distribution: constant + depth: + value: 1 + distribution: constant + multiplicity: + value: 0 + distribution: constant diff --git a/experiments/MNIST/CLI_sweep.sh b/experiments/MNIST/CLI_sweep.sh deleted file mode 100644 index 0688a27..0000000 --- a/experiments/MNIST/CLI_sweep.sh +++ /dev/null @@ -1,9 +0,0 @@ -for noise in 17.5 14.5 11.5 9.0 7.0 6.0: -do - python main_template.py --cfg.log_wandb="sweep_archi" --cfg.noise_multiplier=$noise --cfg.loss="TauCategoricalCrossentropy" --cfg.opt_iterations=50 --cfg.architecture="Dense" --cfg.noisify_strategy="global" - python main_template.py --cfg.log_wandb="sweep_archi" --cfg.noise_multiplier=$noise --cfg.loss="TauCategoricalCrossentropy" --cfg.opt_iterations=50 --cfg.architecture="ConvNet" --cfg.noisify_strategy="global" - python main_template.py --cfg.log_wandb="sweep_archi" --cfg.noise_multiplier=$noise --cfg.loss="KCosineSimilarity" --cfg.opt_iterations=50 --cfg.architecture="Dense" --cfg.noisify_strategy="global" - python main_template.py --cfg.log_wandb="sweep_archi" --cfg.noise_multiplier=$noise --cfg.loss="KCosineSimilarity" --cfg.opt_iterations=50 --cfg.architecture="ConvNet" --cfg.noisify_strategy="global" - python main_template.py --cfg.log_wandb="sweep_archi" --cfg.noise_multiplier=$noise --cfg.loss="MulticlassHKR" --cfg.opt_iterations=50 --cfg.architecture="Dense" --cfg.noisify_strategy="global" - python main_template.py --cfg.log_wandb="sweep_archi" --cfg.noise_multiplier=$noise --cfg.loss="MulticlassHKR" --cfg.opt_iterations=50 --cfg.architecture="ConvNet" --cfg.noisify_strategy="global" -done \ No newline at end of file diff --git a/experiments/MNIST/main_template.py b/experiments/MNIST/main.py similarity index 52% rename from experiments/MNIST/main_template.py rename to experiments/MNIST/main.py index 5a8f80b..a16fa78 100644 --- a/experiments/MNIST/main_template.py +++ b/experiments/MNIST/main.py @@ -28,65 +28,106 @@ from absl import app from ml_collections import config_dict from ml_collections import config_flags -from models_MNIST import create_ConvNet -from tensorflow.keras.callbacks import EarlyStopping -from tensorflow.keras.callbacks import ReduceLROnPlateau import wandb +from deel.lipdp.dynamic import AdaptiveQuantileClipping +from deel.lipdp.layers import DP_AddBias +from deel.lipdp.layers import DP_BoundedInput +from deel.lipdp.layers import DP_ClipGradient +from deel.lipdp.layers import DP_Flatten +from deel.lipdp.layers import DP_GroupSort +from deel.lipdp.layers import DP_LayerCentering +from deel.lipdp.layers import DP_ScaledL2NormPooling2D +from deel.lipdp.layers import DP_SpectralConv2D +from deel.lipdp.layers import DP_SpectralDense from deel.lipdp.losses import * from deel.lipdp.model import DP_Accountant +from deel.lipdp.model import DP_Sequential from deel.lipdp.model import DPParameters -from deel.lipdp.pipeline import bound_clip_value -from deel.lipdp.pipeline import load_and_prepare_data +from deel.lipdp.pipeline import bound_normalize +from deel.lipdp.pipeline import default_delta_value +from deel.lipdp.pipeline import load_and_prepare_images_data from deel.lipdp.sensitivity import get_max_epochs +from experiments.wandb_utils import init_wandb +from experiments.wandb_utils import run_with_wandb from wandb.keras import WandbCallback -from wandb_sweeps.src_config.wandb_utils import init_wandb -from wandb_sweeps.src_config.wandb_utils import run_with_wandb - - -cfg = config_dict.ConfigDict() - -cfg.add_biases = True -cfg.alpha = 50.0 -cfg.architecture = "ConvNet" -cfg.batch_size = 8_192 -cfg.condense = True -cfg.clip_loss_gradient = 1.0 -cfg.delta = 1e-5 -cfg.epsilon_max = 3.0 -cfg.input_clipping = 0.7 -cfg.K = 0.99 -cfg.learning_rate = 1e-2 -cfg.lip_coef = 1.0 -cfg.loss = "TauCategoricalCrossentropy" -cfg.log_wandb = "disabled" -cfg.min_margin = 0.5 -cfg.min_norm = 5.21 -cfg.model_name = "No_name" -cfg.noise_multiplier = 5.0 -cfg.noisify_strategy = "local" -cfg.optimizer = "Adam" -cfg.N = 50_000 -cfg.num_classes = 10 -cfg.opt_iterations = 10 -cfg.run_eagerly = False -cfg.sweep_yaml_config = "" -cfg.save = False -cfg.save_folder = os.getcwd() -cfg.sweep_id = "" -cfg.tau = 1.0 -cfg.tag = "Default" + +def default_cfg_mnist(): + cfg = config_dict.ConfigDict() + cfg.add_biases = True + cfg.batch_size = 2_000 + cfg.clip_loss_gradient = None # not required for dynamic clipping. + cfg.dynamic_clipping = "quantiles" # can be "fixed", "laplace", "quantiles". "fixed" requires a clipping value. + cfg.dynamic_clipping_quantiles = ( + 0.9 # crop to 90% of the distribution of gradient norm. + ) + cfg.epsilon_max = 3.0 + cfg.input_clipping = 0.7 + cfg.learning_rate = 5e-3 + cfg.loss = "TauCategoricalCrossentropy" + cfg.log_wandb = "disabled" + cfg.noise_multiplier = 1.5 + cfg.noisify_strategy = "per-layer" + cfg.optimizer = "Adam" + cfg.opt_iterations = None + cfg.save = False + cfg.save_folder = os.getcwd() + cfg.sweep_yaml_config = "" + cfg.sweep_id = "" + cfg.tau = 32.0 + return cfg + + +cfg = default_cfg_mnist() _CONFIG = config_flags.DEFINE_config_dict("cfg", cfg) -def create_model(dp_parameters, dataset_metadata, cfg, upper_bound): - if cfg.architecture == "ConvNet": - model = create_ConvNet(dp_parameters, dataset_metadata, cfg, upper_bound) - elif cfg.architecture == "Dense": - raise NotImplementedError("Dense architecture not implemented yet") - else: - raise ValueError(f"Invalid architecture argument {cfg.architecture}") +def create_ConvNet(dp_parameters, dataset_metadata): + norm_max = 1.0 + all_layers = [ + DP_BoundedInput(input_shape=(28, 28, 1), upper_bound=dataset_metadata.max_norm), + DP_SpectralConv2D( + filters=16, + kernel_size=3, + kernel_initializer="orthogonal", + strides=1, + use_bias=False, + ), + DP_AddBias(norm_max=norm_max), + DP_GroupSort(2), + DP_ScaledL2NormPooling2D(pool_size=2, strides=2), + DP_LayerCentering(), + DP_SpectralConv2D( + filters=32, + kernel_size=3, + kernel_initializer="orthogonal", + strides=1, + use_bias=False, + ), + DP_AddBias(norm_max=norm_max), + DP_GroupSort(2), + DP_ScaledL2NormPooling2D(pool_size=2, strides=2), + DP_LayerCentering(), + DP_Flatten(), + DP_SpectralDense(1024, use_bias=False, kernel_initializer="orthogonal"), + DP_AddBias(norm_max=norm_max), + DP_SpectralDense(10, use_bias=False, kernel_initializer="orthogonal"), + DP_AddBias(norm_max=norm_max), + DP_ClipGradient( + clip_value=cfg.clip_loss_gradient, + mode="dynamic", + ), + ] + if not cfg.add_biases: + all_layers = [ + layer for layer in all_layers if not isinstance(layer, DP_AddBias) + ] + model = DP_Sequential( + all_layers, + dp_parameters=dp_parameters, + dataset_metadata=dataset_metadata, + ) return model @@ -98,18 +139,19 @@ def compile_model(model, cfg): optimizer = tf.keras.optimizers.Adam(learning_rate=cfg.learning_rate) else: print("Illegal optimizer argument : ", cfg.optimizer) + # Choice of loss function if cfg.loss == "MulticlassHKR": if cfg.optimizer == "SGD": cfg.learning_rate = cfg.learning_rate / cfg.alpha loss = DP_MulticlassHKR( - alpha=cfg.alpha, - min_margin=cfg.min_margin, + alpha=50.0, + min_margin=0.5, reduction=tf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE, ) elif cfg.loss == "MulticlassHinge": loss = DP_MulticlassHinge( - min_margin=cfg.min_margin, + min_margin=0.5, reduction=tf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE, ) elif cfg.loss == "MulticlassKR": @@ -119,9 +161,8 @@ def compile_model(model, cfg): cfg.tau, reduction=tf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE ) elif cfg.loss == "KCosineSimilarity": - KX_min = cfg.K * cfg.min_norm loss = DP_KCosineSimilarity( - KX_min, reduction=tf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE + 0.99, reduction=tf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE ) elif cfg.loss == "MAE": loss = DP_MeanAbsoluteError( @@ -129,6 +170,7 @@ def compile_model(model, cfg): ) else: raise ValueError(f"Illegal loss argument {cfg.loss}") + # Compile model model.compile( # decreasing alpha and increasing min_margin improve robustness (at the cost of accuracy) @@ -136,7 +178,6 @@ def compile_model(model, cfg): loss=loss, optimizer=optimizer, metrics=["accuracy"], - run_eagerly=cfg.run_eagerly, ) return model @@ -144,34 +185,42 @@ def compile_model(model, cfg): def train(): init_wandb(cfg=cfg, project="MNIST_ClipLess_SGD") - ds_train, ds_test, dataset_metadata = load_and_prepare_data( + ds_train, ds_test, dataset_metadata = load_and_prepare_images_data( "mnist", cfg.batch_size, - colorspace="RGB", + colorspace="grayscale", drop_remainder=True, - bound_fct=bound_clip_value(cfg.input_clipping), + bound_fct=bound_normalize(), ) - model = create_model( + + model = create_ConvNet( DPParameters( noisify_strategy=cfg.noisify_strategy, noise_multiplier=cfg.noise_multiplier, - delta=cfg.delta, + delta=default_delta_value(dataset_metadata), ), dataset_metadata, - cfg, - upper_bound=dataset_metadata.max_norm, ) + model = compile_model(model, cfg) model.summary() + num_epochs = get_max_epochs(cfg.epsilon_max, model) + + adaptive = AdaptiveQuantileClipping( + ds_train=ds_train, + patience=1, + noise_multiplier=cfg.noise_multiplier * 5, # more noisy. + quantile=cfg.dynamic_clipping_quantiles, + learning_rate=1.0, + ) + adaptive.set_model(model) callbacks = [ WandbCallback(save_model=False, monitor="val_accuracy"), - EarlyStopping(monitor="val_accuracy", min_delta=0.001, patience=15), - ReduceLROnPlateau( - monitor="val_accuracy", factor=0.9, min_delta=0.0001, patience=5 - ), DP_Accountant(), + adaptive, ] + hist = model.fit( ds_train, epochs=num_epochs, @@ -179,26 +228,10 @@ def train(): batch_size=cfg.batch_size, callbacks=callbacks, ) - wandb.log( - { - "Accuracies": wandb.plot.line_series( - xs=[ - np.linspace(0, num_epochs, num_epochs + 1), - np.linspace(0, num_epochs, num_epochs + 1), - ], - ys=[hist.history["accuracy"], hist.history["val_accuracy"]], - keys=["Train Accuracy", "Test Accuracy"], - title="Train/Test Accuracy", - xname="num_epochs", - ) - } - ) - if cfg.save: - model.save(f"{cfg.save_folder}/{cfg.model_name}.h5") def main(_): - run_with_wandb(cfg=cfg, train_function=train, project="MNIST_ClipLess_SGD") + run_with_wandb(cfg=cfg, train_function=train, project="ICLR_MNIST_acc") if __name__ == "__main__": diff --git a/experiments/MNIST/models_MNIST.py b/experiments/MNIST/models_MNIST.py deleted file mode 100644 index 2bea581..0000000 --- a/experiments/MNIST/models_MNIST.py +++ /dev/null @@ -1,81 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All -# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, -# CRIAQ and ANITI - https://www.deel.ai/ -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -import tensorflow as tf - -from deel.lipdp.layers import DP_AddBias -from deel.lipdp.layers import DP_BoundedInput -from deel.lipdp.layers import DP_ClipGradient -from deel.lipdp.layers import DP_Flatten -from deel.lipdp.layers import DP_GroupSort -from deel.lipdp.layers import DP_LayerCentering -from deel.lipdp.layers import DP_ScaledL2NormPooling2D -from deel.lipdp.layers import DP_SpectralConv2D -from deel.lipdp.layers import DP_SpectralDense -from deel.lipdp.layers import make_residuals -from deel.lipdp.model import DP_Model -from deel.lipdp.model import DP_Sequential - - -def create_ConvNet(dp_parameters, dataset_metadata, cfg, upper_bound): - norm_max = 1.0 - all_layers = [ - DP_BoundedInput(input_shape=(28, 28, 1), upper_bound=upper_bound), - DP_SpectralConv2D( - filters=16, - kernel_size=3, - kernel_initializer="orthogonal", - strides=1, - use_bias=False, - ), - DP_AddBias(norm_max=norm_max), - DP_GroupSort(2), - DP_ScaledL2NormPooling2D(pool_size=2, strides=2), - DP_LayerCentering(), - DP_SpectralConv2D( - filters=32, - kernel_size=3, - kernel_initializer="orthogonal", - strides=1, - use_bias=False, - ), - DP_AddBias(norm_max=norm_max), - DP_GroupSort(2), - DP_ScaledL2NormPooling2D(pool_size=2, strides=2), - DP_LayerCentering(), - DP_Flatten(), - DP_SpectralDense(1024, use_bias=False, kernel_initializer="orthogonal"), - DP_AddBias(norm_max=norm_max), - DP_SpectralDense(10, use_bias=False, kernel_initializer="orthogonal"), - DP_AddBias(norm_max=norm_max), - DP_ClipGradient(clip_value=cfg.clip_loss_gradient), - ] - if not cfg.add_biases: - all_layers = [ - layer for layer in all_layers if not isinstance(layer, DP_AddBias) - ] - model = DP_Sequential( - all_layers, - dp_parameters=dp_parameters, - dataset_metadata=dataset_metadata, - ) - return model diff --git a/experiments/MNIST/sweep_1.yaml b/experiments/MNIST/sweep_1.yaml new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/experiments/MNIST/sweep_1.yaml @@ -0,0 +1 @@ + diff --git a/experiments/dynamic_gradient_clipping/main_gradient_clipping.py b/experiments/dynamic_gradient_clipping/main_gradient_clipping.py deleted file mode 100644 index 1493169..0000000 --- a/experiments/dynamic_gradient_clipping/main_gradient_clipping.py +++ /dev/null @@ -1,112 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All -# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, -# CRIAQ and ANITI - https://www.deel.ai/ -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -import os - -import numpy as np -import tensorflow as tf -import yaml -from absl import app -from ml_collections import config_dict -from ml_collections import config_flags -from tensorflow.keras.callbacks import EarlyStopping -from tensorflow.keras.callbacks import ReduceLROnPlateau - -import deel.lipdp.layers as DP_layers -from deel.lipdp import losses -from deel.lipdp.model import AdaptiveLossGradientClipping -from deel.lipdp.model import DP_Accountant -from deel.lipdp.model import DP_Sequential -from deel.lipdp.model import DPParameters -from deel.lipdp.pipeline import bound_clip_value -from deel.lipdp.pipeline import load_and_prepare_data -from deel.lipdp.sensitivity import get_max_epochs - -# declare the privacy parameters -dp_parameters = DPParameters( - noisify_strategy="global", - noise_multiplier=1.2, - delta=1e-5, -) - -ds_train, ds_test, dataset_metadata = load_and_prepare_data( - "cifar10", - batch_size=4096, - colorspace="HSV", - drop_remainder=True, # accounting assumes fixed batch size - bound_fct=bound_clip_value( - 10.0 - ), # clipping preprocessing allows to control input bound -) - -layers = [ - DP_layers.DP_BoundedInput( - input_shape=dataset_metadata.input_shape, - upper_bound=dataset_metadata.max_norm, - ), - DP_layers.DP_SpectralConv2D( - filters=80, kernel_size=3, use_bias=False, kernel_initializer="orthogonal" - ), - DP_layers.DP_ScaledL2NormPooling2D(pool_size=2), - DP_layers.DP_Flatten(), - DP_layers.DP_SpectralDense( - units=512, use_bias=False, kernel_initializer="orthogonal" - ), - DP_layers.DP_LayerCentering(), - DP_layers.DP_GroupSort(2), - DP_layers.DP_SpectralDense( - units=10, use_bias=False, kernel_initializer="orthogonal" - ), - DP_layers.DP_ClipGradient( - clip_value=None, epsilon=1, patience=5 - ), # for fixed clipping use clip_value = cste -] - -model = DP_Sequential( - layers=layers, dp_parameters=dp_parameters, dataset_metadata=dataset_metadata -) - -loss = losses.DP_TauCategoricalCrossentropy(14.5) - -model.compile( - loss=loss, - optimizer=tf.keras.optimizers.Adam(learning_rate=1e-3), - metrics=["accuracy"], - run_eagerly=False, -) - -num_epochs = get_max_epochs(8.0, model) - -callbacks = [ - DP_Accountant(log_fn="logging"), - AdaptiveLossGradientClipping( - ds_train=ds_train - ), # DO NOT USE THIS CALLBACK WHEN mode != "dynamic_svt" - ReduceLROnPlateau(monitor="val_accuracy", factor=0.9, min_delta=0.01, patience=3), -] - -hist = model.fit( - ds_train, - epochs=num_epochs, - validation_data=ds_test, - callbacks=callbacks, -) diff --git a/experiments/paper_plots/histogram_monitoring.ipynb b/experiments/paper_plots/histogram_monitoring.ipynb new file mode 100644 index 0000000..b35dad1 --- /dev/null +++ b/experiments/paper_plots/histogram_monitoring.ipynb @@ -0,0 +1,376 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
_typebinsvaluessha256pathsize
val_certacc_40.00010.00010.00010.00010.00010.0001
_timestamp1695985453.4057931695985453.4057931695985453.4057931695985453.4057931695985453.4057931695985453.405793
gradient_bounds_dp__quick_spectral_dense/kernel:04.2426414.2426414.2426414.2426414.2426414.242641
certacc_20.016180.016180.016180.016180.016180.01618
certacc_40.000080.000080.000080.000080.000080.00008
\n", + "
" + ], + "text/plain": [ + " _type \\\n", + "val_certacc_4 0.0001 \n", + "_timestamp 1695985453.405793 \n", + "gradient_bounds_dp__quick_spectral_dense/kernel:0 4.242641 \n", + "certacc_2 0.01618 \n", + "certacc_4 0.00008 \n", + "\n", + " bins \\\n", + "val_certacc_4 0.0001 \n", + "_timestamp 1695985453.405793 \n", + "gradient_bounds_dp__quick_spectral_dense/kernel:0 4.242641 \n", + "certacc_2 0.01618 \n", + "certacc_4 0.00008 \n", + "\n", + " values \\\n", + "val_certacc_4 0.0001 \n", + "_timestamp 1695985453.405793 \n", + "gradient_bounds_dp__quick_spectral_dense/kernel:0 4.242641 \n", + "certacc_2 0.01618 \n", + "certacc_4 0.00008 \n", + "\n", + " sha256 \\\n", + "val_certacc_4 0.0001 \n", + "_timestamp 1695985453.405793 \n", + "gradient_bounds_dp__quick_spectral_dense/kernel:0 4.242641 \n", + "certacc_2 0.01618 \n", + "certacc_4 0.00008 \n", + "\n", + " path \\\n", + "val_certacc_4 0.0001 \n", + "_timestamp 1695985453.405793 \n", + "gradient_bounds_dp__quick_spectral_dense/kernel:0 4.242641 \n", + "certacc_2 0.01618 \n", + "certacc_4 0.00008 \n", + "\n", + " size \n", + "val_certacc_4 0.0001 \n", + "_timestamp 1695985453.405793 \n", + "gradient_bounds_dp__quick_spectral_dense/kernel:0 4.242641 \n", + "certacc_2 0.01618 \n", + "certacc_4 0.00008 " + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import wandb\n", + "import pandas as pd\n", + "\n", + "api = wandb.Api()\n", + "\n", + "run = api.run(\"algue/ICLR_Cifar10/ye5mlfrv\")\n", + "summary = run.summary_metrics\n", + "pd.DataFrame(summary).transpose().head()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+0AAAH9CAYAAABvDp2hAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+7klEQVR4nO3de3RU9b03/k8SrikXAStaQBA1SJQAXrgZpFgUamuLHnuqKAKioAjVqq22niVFWyinxysq4uUgiPJYfaxVa6FaWvFWqPWCj0VoBY5gQWxRQrmFJPP7wx9zTAkYApnZCa/XWqzl7L2/s797eDszb/aemZxUKpUKAAAAIHFysz0BAAAAoGpKOwAAACSU0g4AAAAJpbQDAABAQintAAAAkFBKOwAAACSU0g4AAAAJ1SDbE0iCsrKy2LhxYzRu3Dhyc/07BgAAALWroqIitm/fHi1btowGDXZfzZX2iNi4cWOsWrUq29MAAADgANOpU6do06bNbtcr7RHRuHHjiPj0wWratGmWZwMAAEB9t3Xr1li1alW6j+6O0h6RviS+adOmkZ+fn+XZAAAAcKD4vI9o+wA3AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe37wY6y8mxPgQzK5t93RXlZ1vZN5mXz77tM1g4o2fz7riiTtQNJNv++y7xfO6Bk8++73PPaASUTf98Nan0PB4CGDfJi/E+eiK3bdmR7KtSypk0axp3Xn521/efmNYgld38vyku3Zm0OZEZeo6ZRNO5nWdt/g7wG8d1Hb4itO7ZlbQ5kRtOGTeLWb9+Ytf3nNmgQC664Ksq2el6r7xo0bRqn3n5L9vbfIC+mTf1VbN/u/Vp917hxw5hw7deytv+8Bg3i3inXRul2r6H1XaPGTWLMD6bW+n6U9v1k67YdsXW7f1Wj9pWXbo2KUi8C1L6tO7bFth3bsz0NDgBlW7dG2TbPa9S+7dt3RKn3a2RA6fZtSjv7jcvjAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKESVdqXLVsWhYWFccopp3zutkuXLo1hw4ZFUVFRnHrqqTFnzpwMzBAAAAAyp0G2J/BZkydPjoMOOuhzt9uwYUOMGjUqioqKYsaMGfHOO+/E5MmTo1mzZjF06NBanycAAABkQmLOtD///POxevXq+Ld/+7fP3Xbu3LmRk5MTt99+e/Tt2zcuvvji+Pd///eYPn16BmYKAAAAmZGI0l5aWhpTp06Na665Jho1avS527/00ksxYMCAaNq0aXrZkCFDYtWqVbF69eranCoAAABkTCIuj581a1a0bt06zjjjjJg2bdrnbr9q1aoYOHBgpWWdO3eOiIgVK1ZEhw4dajSP8vLyKC8v3+txeXl5NdofdVdNcrI/yNqBR9bIFFkjU2SNTJE1MqWmWavuuKyX9r///e9xzz33xP3331/tMSUlJdG8efNKy1q2bJleV1PLly/f6zG5ubnRs2fPGu+TumnJkiVRUVGR0X3K2oFJ1sgUWSNTZI1MkTUypbazlvXSfsstt0T//v0TEe6CgoLIz8/P9jSoA4qKirI9BQ4QskamyBqZImtkiqyRKTXN2pYtW6p14jirpX358uXx1FNPxc9//vP0GfLt27dHKpWKkpKSaNKkSZWfcW/RokVs2rSp0rKd41u0aFHj+eTl5bmchWqREzJF1sgUWSNTZI1MkTUypaZZq+64rJb2999/P3bs2BFnnXXWLutOOumk+NGPfhTnnXfeLus6deoUK1eurLRsxYoVEfG/n20HAACAui6rpf3444+P2bNnV1r2i1/8In7/+9/H7bffHp06dapyXHFxcTz88MOxbdu2aNKkSUREzJ8/Pzp16lTjL6EDAACApMnqT761bt06evfuXelPu3btolGjRtG7d+9o27ZtfPDBB1FYWBhPPvlketx5550XFRUVceWVV8arr74aDzzwQDz66KNx2WWXZe9gAAAAYD9LxO+070kqlYry8vJK38bXunXrmDlzZmzcuDHGjBkTc+bMieuuuy6GDh2avYkCAADAfpb1b4//VxMmTIgJEyakb7dv3z6WLVu2y3Zdu3aNuXPnZnJqAAAAkFGJP9MOAAAAByqlHQAAABJKaQcAAICEUtoBAAAgoZR2AAAASCilHQAA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Ivr06RMbN26MW265pcrSvvMM+z//+c9Ky3eegW/ZsmWN55GXl+dyFqpFTsgUWSNTZI1MkTUyRdbIlJpmrbrjEvlFdF27do3Vq1dXuS4/Pz/atm0bK1asqLR8xYoV0bBhw+jQoUMmpggAAAC1LpGl/fXXX4927drtdn1xcXH85je/iVQqlV42f/786NWrVzRq1CgTUwQAAIBal/XSPnz48JgzZ0688sor8bvf/S7+4z/+I5555pm45JJLIiJi8eLFUVhYGIsXL06PGT16dKxatSp++MMfxqJFi+Lmm2+OhQsXxqWXXpqtwwAAAID9LuufaT/mmGPioYceinXr1kXTpk3jqKOOinvuuScGDhwYERGpVCrKy8srnVU/8sgjY8aMGTF16tR4+umno3379nHzzTdHr169snUYAAAAsN9lvbRff/31cf311+92fe/evWPZsmW7LO/bt288+eSTtTgzAAAAyK6sXx4PAAAAVE1pBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChsl7an3322RgzZkwUFxfHCSecEOeff3689tprexyzaNGi6NKlyy5/nnjiiQzNGgAAAGpfg2xPYPbs2dGxY8e44YYbIj8/P5544okYOXJkPP7443HMMcfsceztt98ehx56aPr24YcfXtvTBQAAgIzJemmfPn16tGrVKn27X79+ceaZZ8bDDz8cN9100x7Hdu3aNTp27FjbUwQAAICsyPrl8Z8t7BERubm5cfTRR8eaNWuyNCMAAABIhqyfaf9X5eXl8fbbb0dxcfHnbnvuuefGJ598Eh06dIiRI0fGsGHD9nnf5eXlez0uLy9vn/ZL3VOTnOwPsnbgkTUyRdbIFFkjU2SNTKlp1qo7LnGlfc6cObF27do9FvDmzZvH2LFj48QTT4ycnJyYN29eTJo0KXbs2BEjRoyo8b6XL1++12Nyc3OjZ8+eNd4nddOSJUuioqIio/uUtQOTrJEpskamyBqZImtkSm1nLVGl/a233oqbb745LrvssujSpctutyssLIzCwsL07f79+8f27dvj3nvvjQsvvDBycnJqtP+CgoLIz8+v0VgOLEVFRdmeAgcIWSNTZI1MkTUyRdbIlJpmbcuWLdU6cZyY0r5mzZoYN25cDBw4MMaPH7/X4wcNGhRPP/10rF+/Ptq2bVujOeTl5bmchWqREzJF1sgUWSNTZI1MkTUypaZZq+64rH8RXURESUlJjB07Ntq1axdTp06t8ZnyiNinsQAAAJAkWT/TXlpaGuPHj4+tW7fGrFmzokmTJjW6n+eeey6++MUvxiGHHLKfZwgAAADZkfXSPmnSpPjjH/8YN910U6xZsyb9U2+NGjVKf269sLAwxo0bl75sfuLEidGmTZvo1q1b5Obmxrx58+KZZ56JG264IWvHAQAAAPtb1kv7q6++GhUVFXH99ddXWt6uXbtYsGBBRHz6VfipVCq9rnPnzvHYY4/FzJkzo6ysLI488siYOnVqDB06NJNTBwAAgFqV9dK+s5jvybJlyyrdHjFixD79tBsAAADUBYn4IjoAAABgV0o7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAm116V90aJF8dRTT8U777xT5foPP/ww7rzzzn2eGAAAABzoGlR3w82bN8fo0aPjrbfeilQqFTk5OdGvX7+YPHlytG3bNr3dunXr4q677orx48fXyoQBAADgQFHtM+0zZsyI9957L6ZMmRK/+tWv4oYbboilS5fGv//7v8df//rX2pwjAAAAHJCqXdp/85vfxIQJE2Lo0KFx5JFHxnnnnRe/+MUvok2bNnH++efHkiVLanOeAAAAcMCpdmlfu3ZtFBYWVlrWtm3bmDNnThQUFMSoUaNi0aJF+32CAAAAcKCqdmlv06ZNrFu3bpfl+fn5cf/998cJJ5wQY8eOjd///vf7c34AAABwwKp2aT/uuOPit7/9bZXrGjduHHfffXcMGDAgpk+fvt8mBwAAAAeyapf2r33ta/G3v/0tPv744yrXN2jQIG677bb49re/HYcddth+myAAAAAcqKr9k2+DBw+OwYMH73GbnJycmDRp0j5PCgAAANiLM+0AAABAZintAAAAkFBKOwAAACSU0g4AAAAJpbQDAABAQintAAAAkFBKOwAAACSU0g4AAAAJpbQDAABAQintAAAAkFBKOwAAACRU1kv7s88+G2PGjIni4uI44YQT4vzzz4/XXnvtc8etWbMmLrnkkujRo0cUFxfHHXfcERUVFRmYMQAAAGRGg2xPYPbs2dGxY8e44YYbIj8/P5544okYOXJkPP7443HMMcdUOaa0tDRGjx4dLVu2jDvuuCPWrVsXU6ZMiby8vLj88sszfAQAAABQO7Je2qdPnx6tWrVK3+7Xr1+ceeaZ8fDDD8dNN91U5Zhnn302Pvjgg5g9e3a0bds2IiI2btwY06dPj4svvjgaN26ckbkDAABAbcr65fGfLewREbm5uXH00UfHmjVrdjvmpZdeip49e6YLe0TEkCFDYvPmzfH666/X2lwBAAAgk7J+pv1flZeXx9tvvx3FxcW73WbVqlVRWFhYaVmHDh2iUaNGsXLlyujbt2+N911eXr7X4/Ly8mq0P+qumuRkf5C1A4+skSmyRqbIGpkia2RKTbNW3XGJK+1z5syJtWvXxrBhw3a7TUlJSbRo0WKX5S1atIiSkpIa73v58uV7PSY3Nzd69uxZ431SNy1ZsiTjX3woawcmWSNTZI1MkTUyRdbIlNrOWqJK+1tvvRU333xzXHbZZdGlS5eM77+goCDy8/Mzvl/qnqKiomxPgQOErJEpskamyBqZImtkSk2ztmXLlmqdOE5MaV+zZk2MGzcuBg4cGOPHj9/jti1atIhNmzbtsnx3Z+CrKy8vz+UsVIuckCmyRqbIGpkia2SKrJEpNc1adcdl/YvoIj4t22PHjo127drF1KlTIycnZ4/bd+rUKVasWFFp2Zo1a6K0tDSOOOKI2pwqAAAAZEzWS3tpaWmMHz8+tm7dGnfffXc0adLkc8cUFxfHG2+8EevXr08vmz9/fjRr1iyOP/742pwuAAAAZEzWS/ukSZPij3/8Y4wbNy7WrFkTb775Zrz55pvx5z//Ob1NYWFh3HnnnenbZ5xxRrRr1y4mTJgQL774Yjz22GNx5513xkUXXeQ32gEAAKg3sv6Z9ldffTUqKiri+uuvr7S8Xbt2sWDBgoj49KvwU6lUel2jRo3i/vvvj0mTJsX48eOjWbNmMXLkyLjssssyOncAAACoTVkv7TuL+Z4sW7Zsl2UdOnSI+++/vzamBAAAAImQ9cvjAQAAgKop7QAAAJBQSjsAAAAklNIOAAAACaW0AwAAQEIp7QAAAJBQSjsAAAAklNIOAAAACaW0AwAAQEIp7QAAAJBQSjsAAAAklNIOAAAACaW0AwAAQEIp7QAAAJBQSjsAAAAklNIOAAAACaW0AwAAQEIp7QAAAJBQSjsAAAAklNIOAAAACaW0AwAAQEIp7QAAAJBQSjsAAAAklNIOAAAACaW0AwAAQEIp7QAAAJBQSjsAAAAklNIOAAAACaW0AwAAQEIp7QAAAJBQSjsAAAAklNIOAAAACaW0AwAAQEIp7QAAAJBQSjsAAAAklNIOAAAACaW0AwAAQEIp7QAAAJBQWS/tb7/9dnz/+9+P0047Lbp06RK33nrr54554oknokuXLrv8WbRoUQZmDAAAAJnRINsTeP311+Ott96KE044IT7++OO9GvvII49EXl5e+vZRRx21v6cHAAAAWZP10j58+PAYMWJERESceuqpezW2e/fu0aBB1g8BAAAAakXWL4/Pzc36FAAAACCR6nRjPuWUU6KwsDDOPPPMmDdvXranAwAAAPtVnby2/Itf/GJ897vfje7du8e2bdvi8ccfjyuuuCLuuuuuGDRoUI3vt7y8PMrLy/d63Gc/V8+BoSY52R9k7cAja2SKrJEpskamyBqZUtOsVXdcnSzt/fv3j/79+6dvDxw4MIYNGxYzZszYp9K+fPnyvR6Tm5sbPXv2rPE+qZuWLFkSFRUVGd2nrB2YZI1MkTUyRdbIFFkjU2o7a3WytFflK1/5SrV+Lm5PCgoKIj8/fz/NiPqsqKgo21PgACFrZIqskSmyRqbIGplS06xt2bKlWieO601p3x/y8vJczkK1yAmZImtkiqyRKbJGpsgamVLTrFV3XJ3+IrqdUqlUPPfcc1FYWJjtqQAAAMB+k/Uz7Rs2bIjFixdHRMTWrVtj5cqVMW/evGjatGkMGDAgPvjggzjttNNi8uTJMXTo0IiI+M53vhPdunWLLl26RGlpaTz++OPx5ptvxvTp07N4JAAAALB/Zb20/+Uvf4krrrgifXv+/Pkxf/78aNeuXSxYsCBSqVSUl5dX+mB/p06d4vHHH49169ZFRETXrl1jxowZMWDAgIzPHwAAAGpL1kt77969Y9myZbtd3759+13WX3XVVXHVVVfV9tQAAAAgq+rFZ9oBAACgPlLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEgopR0AAAASSmkHAACAhFLaAQAAIKGUdgAAAEiorJf2t99+O77//e/HaaedFl26dIlbb721WuOWLl0aw4YNi6Kiojj11FNjzpw5tTxTAAAAyKysl/bXX3893nrrrTjhhBOiefPm1RqzYcOGGDVqVDRr1ixmzJgRw4YNi8mTJ8eTTz5Zu5MFAACADGqQ7QkMHz48RowYERERp556arXGzJ07N3JycuL222+Ppk2bRt++fWPNmjUxffr0GDp0aC3OFgAAADIn62fac3P3fgovvfRSDBgwIJo2bZpeNmTIkFi1alWsXr16f04PAAAAsibrpb0mVq1aFZ07d660bOftFStWZGNKAAAAsN9l/fL4migpKdnl8+8tW7ZMr6up8vLyKC8v3+txeXl5Nd4ndVNNcrI/yNqBR9bIFFkjU2SNTJE1MqWmWavuuDpZ2mvL8uXL93pMbm5u9OzZsxZmQ5ItWbIkKioqMrpPWTswyRqZImtkiqyRKbJGptR21upkaW/RokVs2rSp0rKdZ9hbtGhR4/stKCiI/Pz8fZobB4aioqJsT4EDhKyRKbJGpsgamSJrZEpNs7Zly5ZqnTiuk6W9U6dOsXLlykrLdn6W/V8/67438vLyXM5CtcgJmSJrZIqskSmyRqbIGplS06xVd1yd/CK64uLieOGFF2Lbtm3pZfPnz49OnTpFhw4dsjgzAAAA2H+yXto3bNgQ8+bNi3nz5sXWrVtj5cqVMW/evHjhhRciIuKDDz6IwsLCePLJJ9NjzjvvvKioqIgrr7wyXn311XjggQfi0UcfjcsuuyxLRwEAAAD7X9Yvj//LX/4SV1xxRfr2/PnzY/78+dGuXbtYsGBBpFKpKC8vr/TB/tatW8fMmTPjxhtvjDFjxsTBBx8c1113XQwdOjQLRwAAAAC1I+ulvXfv3rFs2bLdrm/fvn2V67t27Rpz586tzakBAABAVmX98ngAAACgako7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmltAMAAEBCKe0AAACQUEo7AAAAJJTSDgAAAAmViNK+dOnSGDZsWBQVFcWpp54ac+bM+dwxixYtii5duuzy54knnsjAjAEAAKD2Ncj2BDZs2BCjRo2KoqKimDFjRrzzzjsxefLkaNasWQwdOvRzx99+++1x6KGHpm8ffvjhtThbAAAAyJysl/a5c+dGTk5O3H777dG0adPo27dvrFmzJqZPn16t0t61a9fo2LFj7U8UAAAAMizrl8e/9NJLMWDAgGjatGl62ZAhQ2LVqlWxevXqLM4MAAAAsivrZ9pXrVoVAwcOrLSsc+fOERGxYsWK6NChwx7Hn3vuufHJJ59Ehw4dYuTIkTFs2LAaz6W8vDzKy8v3elxeXl6N90ndVJOc7A+yduCRNTJF1sgUWSNTZI1MqWnWqjsu66W9pKQkmjdvXmlZy5Yt0+t2p3nz5jF27Ng48cQTIycnJ+bNmxeTJk2KHTt2xIgRI2o0l+XLl+/1mNzc3OjZs2eN9kfdtWTJkqioqMjoPmXtwCRrZIqskSmyRqbIGplS21nLemmvqcLCwigsLEzf7t+/f2zfvj3uvffeuPDCCyMnJ2ev77OgoCDy8/P35zSpp4qKirI9BQ4QskamyBqZImtkiqyRKTXN2pYtW6p14jjrpb1FixaxadOmSst2nmFv0aLFXt3XoEGD4umnn47169dH27Zt93oueXl5LmehWuSETJE1MkXWyBRZI1NkjUypadaqOy7rX0TXqVOnWLlyZaVlK1asiIj//Wz73qrJWXYAAABImqyX9uLi4njhhRdi27Zt6WXz58+PTp06fe6X0P2r5557Lr74xS/GIYccsr+nCQAAABmX9cvjzzvvvHjooYfiyiuvjBEjRsSf//znePTRR+MnP/lJpe0KCwtj3LhxMX78+IiImDhxYrRp0ya6desWubm5MW/evHjmmWfihhtuyMZhAAAAwH6X9dLeunXrmDlzZtx4440xZsyYOPjgg+O6666LoUOHVtquvLw8UqlU+nbnzp3jsccei5kzZ0ZZWVkceeSRMXXq1F3GAQAAQF2V9dIeEdG1a9eYO3fuHrdZtmxZpdsjRoyo8U+7AQAAQF2Q9c+0AwAAAFVT2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIKKUdAAAAEkppBwAAgIRS2gEAACChlHYAAABIqESU9qVLl8awYcOiqKgoTj311JgzZ061xq1ZsyYuueSS6NGjRxQXF8cdd9wRFRUVtTxbAAAAyIwG2Z7Ahg0bYtSoUVFUVBQzZsyId955JyZPnhzNmjWLoUOH7nZcaWlpjB49Olq2bBl33HFHrFu3LqZMmRJ5eXlx+eWXZ+4AAAAAoJZkvbTPnTs3cnJy4vbbb4+mTZtG3759Y82aNTF9+vQ9lvZnn302Pvjgg5g9e3a0bds2IiI2btwY06dPj4svvjgaN26coSMAAACA2pH1y+NfeumlGDBgQDRt2jS9bMiQIbFq1apYvXr1Hsf17NkzXdh3jtu8eXO8/vrrtTpnAAAAyISsn2lftWpVDBw4sNKyzp07R0TEihUrokOHDrsdV1hYWGlZhw4dolGjRrFy5cro27dvteew83PwmzdvjvLy8r2ZfkRE5OXlRftDvhDbtpft9VjqliaNG8SWLVtqlJP9IS8vL3IP+lKkdmzPyv7JnNyGjbOetXbN2sa2stKs7J/MadKgUdaz1qjdlyJvu+e1+i6vcfaf11of3DRKS71fq+8aNcr++7WWBx8aZTu8htZ3DRru22votm3bIiI+93vZsl7aS0pKonnz5pWWtWzZMr1uT+NatGixy/IWLVrscVxVtv//bxTef//9vRr3Wd/od1iNx1K3LF26NLsT6DY4u/snI8oi+1k7o8OXs7p/MifbWWv+9TOyun8yJ9tZ69774Kzun8zJdtYK+56e1f2TOfsja9u3b49mzZrtdn3WS3sStGzZMjp16hSNGzeO3Nysf2IAAACAeq6ioiK2b9+ePmm9O1kv7S1atIhNmzZVWrbzTHlVZ9L3NG7n2D2Nq0qDBg2iTZs2ezUGAAAA9sWezrDvlPXTyp06dYqVK1dWWrZixYqI+N/Ptu9u3M7tdlqzZk2UlpbGEUccsf8nCgAAABmW9dJeXFwcL7zwQvpD+BER8+fPj06dOu32S+h2jnvjjTdi/fr1lcY1a9Ysjj/++FqdMwAAAGRC1kv7eeedFxUVFXHllVfGq6++Gg888EA8+uijcdlll1XarrCwMO6888707TPOOCPatWsXEyZMiBdffDEee+yxuPPOO+Oiiy7yG+0AAADUC1kv7a1bt46ZM2fGxo0bY8yYMTFnzpy47rrrYujQoZW2Ky8vj1Qqlb7dqFGjuP/++6N58+Yxfvz4uO2222LkyJG7lH0AAACoq3JSn23CAAAAQGJk/Uw7AAAAUDWlHQAAABJKaQcAAICEUtoBAAAgoZR2AAAASCilPUtuvfXWOPXUU7M9jb1SXl4e9957b5x77rlx4oknxsknnxxXXHFFfPDBB1Vuv2DBgiguLo5UKhXXXXddnHfeeRme8d5ZtGhRdOnSJf7nf/4n21PZr+pi1v7Vww8/HF26dIlrrrmmyvUPPfRQfPvb346IiOHDh+92u6R44oknokuXLlFWVpbtqexXdTVrP/3pT2Pw4MHRo0eP6NWrV1x00UXx9ttv73bbq666KiIiTj311Lj11lszOdW9Nm3atDjllFOyPY2MS3oWS0pKorCwMFasWFFnng+6dOkSjz32WLankXFJz9LuPPvsszFu3Ljo27dvdOnSJV555ZXdbus1NBnqatauu+666NKlyy5/qiJrNdcg2xOg7ti2bVs88MADcc4558T48eNj27Ztcdddd8WIESPil7/8ZXzhC1+otP3ChQujf//+kZOTk6UZUx9s3Lgxpk2bFq1bt97tNjuzBjWxbdu2uPDCC+OII46Ibdu2xaxZs2LUqFHx1FNPxZe+9KVK2y5cuDDGjBmTpZlSX7z00ktx2GGHRefOnePNN9/M9nSoh+bNmxfr1q2L/v37xy9/+cs9bus1lH3VpUuXuPHGGz93O1mrOaWdamvSpEk899xz0aJFi/Sybt26xZe//OVYsGBBnHnmmZW2X7hwYXzve9+rtflUVFREWVlZNGrUqNb2Qfbdeeed0a9fv/joo4+qXL99+/ZYvHhxTJgwodbmsGPHjsjNzY28vLxa2wfZ86Mf/ajS7T59+kTv3r3jd7/7XZx//vnp5R988EGsWLEiiouLa20u27ZtiyZNmtTa/ZMML774Yq1fASFLB7bbbrstcnNzY82aNXss7V5D2R++8IUvRI8ePfa4jaztG5fHZ0BFRUX853/+Z5x00knRu3fvuPnmmyOVSlXa5t13343Ro0dHz54948QTT4xrr702SkpK0ut3Xp6xfPnyOO+886J79+4xdOjQeOONNyrdz6OPPhpDhgyJoqKi6Nu3b1x00UWxdu3a9PrVq1fHd77znTjxxBOjZ8+eMW7cuFi3bl21jiMvL69SYY+IaNu2bbRq1SrWrFlTafl7770X69ati5NPPrnK+/rnP/8Z5513Xpxzzjnp41y0aFGce+656bn/5Cc/idLS0vSYnZd5vvLKK/GNb3wjunXrFm+88Ub60vvnn38+Bg8eHD179oxLLrkk1q9fX2mf+3LsdUV9ydpO7733Xjz++ONx9dVX73abRYsWRX5+fnTr1q3K9evXr48hQ4bE2LFj03maN29eDB06NLp16xannHJK3HXXXZUep52Zevrpp2Pw4MFRVFQUa9euTV/K9fOf/zy+/OUvx4knnhhXX311/POf/6y0z897jOuD+pa1z8rPz4/GjRvHjh07Ki1fuHBhFBYWxsEHH1zluPfeey+Ki4vjhhtuSD8WjzzySHz1q1+N4447LgYNGhT/5//8n0pjdmbqwQcfjC9/+cvpNz07L72/++67o1+/ftGnT5+46aabdpnT5z1vHgjqWhZTqdTnlvaf/OQn0adPn3j33Xerdb87P971yiuvxEUXXRTdu3eP++67r9rHtXXr1pgyZUr0798/jjvuuDjnnHPitddeq+bfQP1R17K0J7m51XuL7zU0O+pT1qpL1vaN0p4BDzzwQMyaNSsuvvji+M///M9Yvnx5PPHEE+n1K1eujGHDhkVeXl7cfPPNMWnSpHjttdfi+9///i739b3vfS+GDh0a06ZNi8aNG8eECRPSwV68eHHceOONcfbZZ8f9998fN910Uxx11FGxZcuWiIjYsGFDnH/++bFu3bqYPHly/OxnP4u1a9fGmDFjoqKiokbH9v7778eGDRuiY8eOlZYvXLgwevTosUvJj/i0sF988cVRVlYWM2fOjBYtWsRrr70WF110UXTs2DHuvPPOuOqqq+Lpp5+OqVOnVhq7adOm+NGPfhQjR46M++67L73f999/P+6+++64+uqr4yc/+Um88847cdNNN6XH1caxJ1F9y9pPf/rTOP/886Ndu3a73WbhwoVRXFxc5ccwPvzwwxg+fHh06tQppk2bFo0aNYpnnnkmvvvd70avXr1i+vTpcdFFF8V9990XM2fOrDR25cqVcc8998QVV1wR99xzT7Rs2TIiIv74xz/GM888ExMnToxrr702FixYEHfeeWeNHuO6rL5lLZVKRVlZWfzjH/+I//qv/4q8vLz46le/WmmbF154YbdF6y9/+UsMHz48vvKVr8SkSZMiJycnZsyYEVOmTImvfe1rce+998Y3v/nNuPHGG2P+/PmVxr766qsxb968+I//+I+YNm1aevmTTz4Z7777bvz0pz+NSy65JObOnVup9Ff3ebO+q2tZ/POf/xwbN26M3r17V3k8N954Yzz99NPx4IMPxjHHHLNXGf/hD38YJ510UsyYMSO+8pWvVOu4UqlUTJgwIX71q1/Fd77znZg+fXocfvjhMXr06Epv7A8EdS1L+4PX0Oyob1lbunRp9OzZM4qKimLUqFHpf3D8LFnbRylq1Y4dO1J9+/ZNTZkyJb1s+/btqZNPPjk1cODAVCqVSl199dWpb3zjG6mysrL0NkuWLEkVFBSk3nnnnVQqlUr93//7f1MFBQWpZ555Jr3N22+/nSooKEj98Y9/TKVSqdT999+fOuuss3Y7l1tuuSV18sknpzZt2pRetm7dutSxxx6beu6552p0fOPGjUsNGDAgtX379krLR44cmZo+fXr69rXXXps699xzUyUlJalvfetbqW9961upkpKS9Ppzzz03NWbMmEr38etf/zp17LHHpj766KNUKpVK3XHHHamCgoLUyy+/XGm7a6+9NnXsscem/va3v6WXPfDAA6nCwsJUeXl5tY/9D3/4Q6qgoCC1atWqGj0W2Vbfsvb73/8+1adPn/R9XHDBBamrr756l+1OO+201FNPPZW+vXO7tWvXpk477bTUpZdems5nRUVFasCAAalJkyZVuo/7778/1bt371RpaWkqlfo0U8ccc0zqvffeq7TdBRdckOrVq1dq8+bN6WU33nhj6itf+Ur69t48xjt27KjWY5E09S1rqVQq9cwzz6QKCgpSBQUFqd69e6fefPPNSuu3b9+e6tGjR+pPf/pTetnAgQNTt9xyS+rdd99N9enTJ/WjH/0oVVFRkUqlUqlNmzalunfvnrr//vsr3c+kSZNS3/jGN9K3L7jgglSPHj1Sn3zySaXtBg4cmDrjjDPSz2GpVCo1duzY1IUXXpi+Xd3nzf79+1f7cahr6mIW77777tSoUaPSt3fuu7S0NDVx4sRUnz59UsuWLdur+935+nXLLbdUmlN1juvll19OFRQUpJYsWZLepqKiIvX1r3899eMf/zi9rKCgIPXzn/98t8df19XFLFXH6tWrq3zvtJPX0Myrb1mbNWtWau7cuanFixennn766dTXv/711AknnJD64IMPKm0na/vGmfZatnbt2vjHP/5R6dsgGzVqVOkzkX/4wx/itNNOS5/pKSsri65du0bz5s3jnXfeqXR/ffv2Tf/3kUceGRGf/utURETXrl3jz3/+c0yZMiVee+21Xb7p8A9/+EP0798/mjRpkt5PmzZtonPnzvH//t//2+tjmzVrVvzud7+LKVOmVPpc+ZYtW+K1117b5YzUP//5zxg1alTk5ubGf//3f0fz5s0j4tPL8t58880YPHhwel5lZWXRq1ev2LFjR/zlL39J30fDhg0rPQY7derUKQ477LBKj83Os2a1cexJVJ+ytmPHjpgyZUpMmDAhmjVrttvt/ud//idWr169y8cwPvzww7jgggvi6KOPjjvuuCOdz5UrV8batWt3yVrv3r3j448/rnRWqUOHDtG5c+dd9tmjR4/Iz89P3+7cuXP6cdl57NV9jOuq+pS1nYqLi+Pxxx+Pe++9N3r27BmXXnpprFq1Kr3+tddei4YNG0b3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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "history = run.history(samples=1000)\n", + "df = pd.DataFrame(history)\n", + "cols = df.columns.tolist()\n", + "ratios_col = [col for col in cols if 'ratio' in col]\n", + "bound_cols = [col for col in cols if 'bound' in col]\n", + "norm_cols = [col for col in cols if 'norm' in col]\n", + "df_ratios = df[ratios_col].dropna(axis=0, how='any')\n", + "df_ratios = df_ratios.rename(columns=lambda x: x.replace('ratios_', ''))\n", + "df_bounds = df[bound_cols].dropna(axis=0, how='any')\n", + "df_bounds = df_bounds.rename(columns=lambda x: x.replace('gradient_bounds_', ''))\n", + "df_norms = df[norm_cols].dropna(axis=0, how='any')\n", + "df_norms = df_norms.rename(columns=lambda x: x.replace('norms_', ''))\n", + "remove_prefix = lambda x: x.replace('dp__quick_spectral_', '')\n", + "df_ratios = df_ratios.rename(columns=remove_prefix)\n", + "df_bounds = df_bounds.rename(columns=remove_prefix)\n", + "df_norms = df_norms.rename(columns=remove_prefix)\n", + "remove_trailing_zero = lambda x: x.replace(':0', '')\n", + "df_ratios = df_ratios.rename(columns=remove_trailing_zero)\n", + "df_bounds = df_bounds.rename(columns=remove_trailing_zero)\n", + "df_norms = df_norms.rename(columns=remove_trailing_zero)\n", + "plt.figure(figsize=(12, 6))\n", + "sns.set(style=\"whitegrid\")\n", + "sns.set_context(\"paper\", font_scale=1.2)\n", + "sns.barplot(x=df_bounds.columns, y=df_bounds.iloc[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABKAAAAJJCAYAAACdwk/MAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVhUZfsH8O+ZYYZ92AREBAEVEEUBUQQxcykts9Ky3aS0zK1+lq2auZta9qaWS1qp5Vtp6ptpWeaG+4IorriAAsqi7OsMM/P7gxgdQWEGhln4fq7LCznrfR7gPHPu8yyCWq1Wg4iIiIiIiIiIyEBExg6AiIiIiIiIiIgsGxNQRERERERERERkUExAERERERERERGRQTEBRUREREREREREBsUEFBERERERERERGRQTUEREREREREREZFBMQBERERERERERkUExAUVERERERERERAbFBBQRERERERERERkUE1BEREQWavjw4Rg+fLixw2gUO3fuxDvvvIMBAwYgODi4zutKTExEUFAQMjMzcfjwYQQFBeHAgQNNFG3jCAoKwuLFi+u17XfffYfBgwdDrVYDANLT0xEUFIT169cbMkSD6Nu3Lz744IMGHyctLQ1dunRBUFAQrl69Wuf2v/zyC1577TX06tULYWFheOyxx7By5UrI5fL77jdy5EgEBQXhiy++0Fq+Y8cOxMTEoKSkpEHXQdQULKW+KC4uxpIlS/Dcc88hKioKkZGReO6557Bjx4577rN161aEh4ejoqICGzdurPc9w1RU3+83btxYr+1nzZqF0aNHa7431zoS0K2evJ+EhAQEBwcjKCgIlZWV991WqVRi1apVePnllxETE4Pw8HAMGTIE69evh0qluud+CoUCgwcPrrVu/v777zF48OD77m8pmICyQOZYgUydOhVxcXEAgA8++AAPPPCAcQPSUXVllZ6eXue2KpUKTzzxBFatWqVZtnjx4nrd8ExNdYV1+PDhBh9rxYoVCAoKwvPPP1/nttnZ2fj8888xdOhQREZGokePHhgxYgSOHj163/3u9zAyduxYTJs2rSGXQEQGtGPHDpw7dw5dunRBy5Yt67V9x44d67WtuSssLMSyZcswbtw4CIJg7HBMxrRp0+Do6Fjv7b/66iu0aNECkydPxrJly/DII4/gyy+/xKRJk+65z++//44LFy7Uuq5fv35wd3fXqu+JyLCuX7+O//73v+jWrRvmz5+PL774An5+fhg3bhx+/PHHWvfZsWMHevXqBWtr6yaOtuldu3YNP/30E8aPH2/sUEyGQqHAJ598ghYtWtRr+/LycixduhSBgYGYMWMGvv76a0RFReHjjz/GggUL7rnft99+i7y8vFrXPffcc8jNzcWmTZv0ugZzYmXsAIjUajV27tyJN954w9ihNInffvsNOTk5eOGFF4wdislIS0vD0qVL4ebmVq/tz5w5g23btmHo0KEICwuDQqHAunXrMHz4cCxduhR9+vSpdb/qh5Hy8vIa68aPH49hw4ZhxIgR8Pf3b9D1EFHjmzVrFkSiqvdm9UlU79ixA48//rihwwIAyOVySKXSJjlXbTZs2ACJRIKHHnrIaDGYmi1btuDcuXN4/fXXMXfu3Hrts2nTJri6umq+79GjB9RqNRYvXoy0tDT4+PhobV9QUIC5c+fiww8/xDvvvFPjeIIg4JlnnsGiRYswevToZvFwS2RsrVu3xo4dO2Bra6tZ1qtXL9y4cQPffPMNXnzxRa3t5XI59u7di6lTpzZJfMauL1avXo2goCCEhoYaLQZTs2rVKqjVajz11FNYtmxZndvb2Nhgx44dcHZ21iyLjo5GQUEBfvjhB7z11luwsbHR2qf6WWfmzJm1vtSwsbHBE088gW+//RZPPfVUg6/JlLEFFBndyZMnkZOTg/79+xv8XEql0uitjFatWoUnnnhCq2Js7qZNm4bBgwejbdu29dq+a9eu2L59O8aNG4eePXviwQcfxNdff402bdpg5cqVte5T/TAyatSoWteHhISgQ4cOWL16td7XQWRMW7duxcCBA9GpUycMGjQIf//9d63b5ebmYurUqejVqxc6deqEgQMH4ueff9baprpVZ2JiIt555x1EREQgNjYWs2bNQkVFhWa7yspK/Oc//0H//v0RGhqKqKgoPP/88zh27JjW8X7++Wc8/vjjmm0++ugj5Ofn63R91cmn+rh8+TJSUlLuW6+kpaXh4YcfxnPPPYeCggIAwPnz5/HGG2+gW7du6Ny5M5577rka11LdSvfEiRN47rnn0LlzZ8yfP1/TBeKnn37Cl19+idjYWERGRuKNN95AZmZmjfM3RplUW79+PQYOHAixWFxjnVwux9y5cxEdHY0uXbpg9OjRNVrrKhQKfPHFF+jbty86deqEvn374osvvoBCodBsc68Wr7W1AO7bty8mTZqErVu34pFHHkFYWBiGDh1aoyyBqoehvn37IjQ09J7b6KqgoACffvop3nvvPchksnrvd2fyqVr1Q1pWVlaNdZ999hnat2+Pxx577J7HfOSRR1BYWIi//vqr3nEQGZol1xd2dna1fsbu1KkTsrOzayw/dOgQysvL7/nyEgCSkpIQExOD8ePHa67pyJEjGDFiBMLDwxEWFoaRI0ciOTlZa7/hw4fj+eefx86dO/Hkk0+iU6dOWLduneZ++s8//2DGjBmIiopCVFQUJk2ahMLCQq1jVFZWYvny5ZqfV2xsLD799FOtsq0vuVyO3377DYMHD651fVFRET744AN069YNEREReOedd2q02CkuLsaMGTMQGxuLTp06YcCAAfj+++813b+Be/cMqe7xcafq7str1qxB3759ER4ejpdeegkXL17U2k6pVOKLL75AbGwsunTpguHDh9fYRh/Xrl3D0qVL8cknn8DKqn5tc8RisVbyqVpoaCjkcnmtrZymTZuGRx99FOHh4fc87qBBg3Dp0iUkJCTUO35zxASUmbOECqQ+3SR+/fVXdOrUCStWrNDp+NU3tRUrVmg+WCcnJ2tugKmpqXj99dcRHh6OPn36YMmSJTX63tan7Orr5MmTSE5OvueN//Llyxg+fDi6dOmC2NhYfPnllzXiuXLlCsaNG4fIyEh07twZzzzzDPbu3au1zQcffIC+ffvWOP7d3TN1qQBzc3M1vxeRkZF47733UFRUpFc53GnLli04c+YM3n777XrvI5PJalQSVlZW6NChQ60PCfV9GBk0aBC2bNlSawspIlN24MABvPPOO/Dz88OSJUswcuRIzJ49GykpKVrbFRcX4/nnn8fevXsxYcIErFixAn369MG0adOwdu3aGsd977334OvriyVLluD555/Hjz/+iOXLl2vWf/PNN1i9ejWGDx+OVatWaRId1QkdoOohfcaMGYiJicHSpUvx3nvvIT4+Hq+99hqUSqVByuOff/5BmzZtEBgYWOv6s2fP4rnnnkNAQAC+//57ODk54cyZM5pk1MyZM7F48WI4OzsjLi4Op0+f1tq/qKgIb7/9NgYNGoRvvvlG656+YsUKXLt2DbNnz8bkyZNx4sQJvPvuu1r7N2aZZGRk4MqVK4iMjKx1/YoVK3D16lXMnTsXU6dO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b3f922jI5fKr6q4OEV3dNBqNr0PwOvYZRETuYZ/h5E6fwf6CiK427vQZAZGeT05ORllZ2YBlFy5cAPDdM9pEREQA+wwiIho59hlERN4TEAmouXPnYt++fa6JrgCgoKAAycnJo5pMloiIxj/2GURENFLsM4iIvCcgElBLly6Fw+HAmjVrcOjQIbz++ut45513sHLlSl+HRkREfoZ9BhERjRT7DCIi7wmIKngAcPbsWaxduxanTp1CREQE7rzzTixbtszXYRERkR9in0FERCPFPoOIyDsCJgFFRERERERERESBKSAewSMiIiIiIiIiosDFBBQREREREREREYmKCSgiIiIiIiIiIhIVE1BERERERERERCQqJqB85OzZs7j99tuRk5ODhQsXYuvWrVd8T0VFBR599FH85Cc/QWZmJv7whz8M+brS0lLcc889mD17NmbNmoW7774bRUVFnm6C33BnWx44cAD3338/5s+fj7y8PPzbv/0bdu/ePeh1drsdL7zwAubOnYvc3FysWLECNTU1YjTDL4i1LRsaGvDUU0/hpz/9KXJzc7Fo0SKsX78eXV1dYjXFL4j52bzY6tWrkZGRgXfffddToZObxDy2A8ChQ4ewdOlSTJs2DbNmzcKdd94Js9nsySaI1oYdO3YgIyNjyD+bNm0KiDYA3utjxWzDuXPn8B//8R/IycnBD37wA6xfvx69vb2ebsK46J/FbMPLL7+MZcuWITc3FxkZGbDZbB6Pn8RTWFiIhx56CD/84Q+RkZGB55577orv+fjjj7FixQrMnTsXM2bMwB133IGjR496IdrLc6ctH3zwAX7xi1/gmmuuQW5uLpYsWYKPPvrIC9EOz512XKyoqAjZ2dm49tprRYpw5Nxpy3D97L/+9S8vRDw0d/eJ1WrFxo0bcf3112PKlClYuHChx88VRsudtixbtmzYc5/GxkYvRD00d/fLBx98gJtvvhm5ublYuHAh1q9fD4vFMqr/W+5OwDQ2JpMJy5cvR05ODjZt2oTTp09j3bp10Gg0WLx48bDvKy4uxoEDB5CbmzvsjjabzbjzzjsRExODp556CgCwadMm3HXXXfjoo48QGhoqRpN8xt1tuX37djgcDjz00EMIDw/H559/jt/97nd49dVXMX/+fNfrNmzYgDfffBMPP/wwYmNjsWHDBtx9993YuXMngoKCvNBC7xFzW545cwZ79+7FrbfeiuzsbFRWViI/Px+1tbV4/vnnvdNALxP7s9nv6NGjfnHySuIe2wFg7969WLVqFe644w7cf//96OzsxOHDhz160SpmG6677jq88847A5Z9+eWX2LBhA+bNmxcQbfBWHytmG9rb2/HrX/8aGRkZePHFF1FTU4NnnnkG3d3deOyxxzwS/1ja4E/9s9htePfdd5GcnIwZM2Zg//79HomZvOfYsWM4ceIEZsyYgZaWlhG956233sKECRPw2GOPQaVSYceOHfj1r3+N9957D5mZmSJHPDx32tLW1oZFixYhKysLCoUCu3fvxu9//3soFAosWrRI5IiH5k47LrZu3TqEhYV5PjA3jKUtb7/9NmQymev3iRMnejq8EXO3HQ899BCOHTuGVatWISkpCdXV1WhubhYx0itzpy2PP/74oBuFa9euhc1mQ1RUlBhhjog7bfn000/x8MMP4+6778bcuXNx4cIF5Ofnw2w2Y+3atSP/zwXyupdffln43ve+J3R1dbmWPf7448KPfvSjy77Pbre7/v7v//7vwoMPPjjoNXv37hXS09OFiooK17KqqiohPT1d2L17twei9y/ubkuTyTRo2V133SUsX77c9bvFYhFyc3OF1157zbWsvr5eyM7OFnbu3OmB6P2LmNuyra1NsNlsA17z0UcfCenp6UJ9ff0YI/dPYm7Pfna7XVi8eLGwbds2IT09Xdi+ffvYAye3iXls7+npEebNmyc8//zzngt4CGK2YSj33XffFdc9WuOhjxWzDa+88oowc+ZMwWw2u5Zt3bpVyMrK8ujxeDz0z2Ifx/v31/vvvy+kp6cLVqvVA1GTt1z8fVuwYIGQn59/xfdc+tmw2+3CTTfdJDz66KMej2803GnLUG677Tbhvvvu81RYozaWdnz22WfCggULhGeeeUaYN2+eGOGNijtt8cdjiTvt2LNnjzB58mShpKREzNBGzRPfk9bWVmHy5MnCK6+84snQRs2dtqxevVpYunTpgGUvvviiMGvWrFH933wEzwf279+P+fPnQ6lUupbdcMMNKC8vR1VV1bDvk0qvvLvsdjsAQKPRuJZptVoAgCAI7obst9zdlnq9ftCyjIwMVFdXu34/duwYurq6cMMNN7iWRUdHIy8vD1999ZWHWuA/xNyWOp1uwJ2Y/tcAGPC68UTM7dnv/fffh9VqxS23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n6mLudOWW2+9Ff/85z/x3HPP4dChQ9i2bRvWrVuHhQsXjqpdnAPKB8LDw/HGG29g7dq1WLFiBSIiIvDwww9j8eLFA15nt9sHDD9sbm7G6tWrB7zm6NGjAICioiIAzmo8b775JvLz8/Hwww9DIpEgKysLmzdvRmxsrLgN8wF3t+WhQ4cAAM8+++ygdfZvSwD43e9+B4fDgeeffx5msxmzZs3Cs88+69GTdH8h5rY8ceIEOjs78c033wwqz/vf//3f+MUvfuHh1vie2J9N8j9iHtsB4JFHHoFSqcTLL7+Mjo4OTJs2DW+88caAORL8vQ2A8/G7KVOmiFaCeDz0sWK2QSaTobCwENu2bUNvby+ysrLwt7/9DXPmzPFY/GNpgz/1z2K34aWXXsLXX3/t+r2/ktB47RfHm+Li4gHft4KCAhQUFCA+Ph5ffPEFBEGA3W6Hw+FwvebQoUNwOBz405/+NGBd/e/xFXfakpmZiS1btqC+vh5KpRITJ07EX//6VyxYsMAXTQDgXjv8lTttSU5OxnvvvYf6+noAzkciN23a5NMCCO60Q6fTYfPmzXjiiSewZs0ahISE4MYbb/R58R13P18NDQ345ptv8F//9V/eDnlY7rTlV7/6FaRSKbZv344333wTBoMBN99886DzjiuRCMM9YElEREREREREROQBfASPiIiIiIiIiIhExQQUERERERERERGJigkoIiIiIiIiIiISFRNQREREREREREQkKiagiIiIiIiIiIhIVExAERERERERERGRqJiAIiIiIiIiIiIiUTEBRUREREREREREomICioiIiIiIiIiIRMUEFBERERERERERiYoJKCIiIiIiIiIiEhUTUEREREREREREJKr/DyCUAXsCA7vKAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import math\n", + "\n", + "def plot_hist_norms(df, bounds, key, ax):\n", + " hist = df[key].iloc[0]\n", + " count = hist['packedBins']['count']\n", + " start = hist['packedBins']['min']\n", + " size = hist['packedBins']['size']\n", + " bins = [start + i * size for i in range(count)]\n", + " indices = hist['values']\n", + " values = [bins[i] for i in indices]\n", + " sns.histplot(values, kde=True, ax=ax, stat='density')\n", + " bound = bounds[key].iloc[0]\n", + " title = key + f' (bound: {bound:.2f})'\n", + " ax.set_title(title)\n", + "\n", + "def plot_histograms_norms(df, bounds):\n", + " plt.figure(figsize=(12, 6))\n", + " sns.set(style=\"whitegrid\")\n", + " sns.set_context(\"paper\", font_scale=1.2)\n", + " nrows = math.ceil(len(df.columns) / 3)\n", + " fig, axes = plt.subplots(nrows, 3, figsize=(12, 6))\n", + " axes = axes.flatten()\n", + " keys = sorted(df_ratios.columns)\n", + " for key, ax in zip(keys, axes):\n", + " plot_hist_norms(df=df, bounds=bounds, key=key, ax=ax)\n", + " plt.tight_layout()\n", + "\n", + "plot_histograms_norms(df_norms, df_bounds)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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cfHiRURERMDU1BQuLi5o1aoVOnToUKTyYMCAAXjx4gV+++03HD9+XPXGhF69eqnFHhoainXr1gEo+qAvEonQunVrHDhwANbW1hrfUAgUtNr9+OOP2Lt3L/766y/cvHkT0dHRsLOzg6urK/r3749OnToVmdT15Zdfhr+/P7Zt24ZTp07h4sWLkMvlcHZ2Rr169TBo0CDVHD6GNnToULRu3Rrbt29HZGSkamJsZ2dn+Pj4aEzjkujymRlKRaazs7MzNmzYgG+++QYxMTG4dOkSFAoF5HK5WgWU8m13SUlJaN68uVorDFDwXVT2btHU8644np6emDlzJs6dO4dbt26pXlfs6uqK3r17Y8iQIUVeU21iYoKvv/4avXr1wp49e3D58mXcunULlpaWcHFxQceOHdGpU6ci85+VRNffhCHpkvcYgp2dHbZt24aff/4Zf/zxB27cuIGoqCg4OTmpWk0LmzlzJry9vbFz505cvXoVEokEUqkUy5YtwyuvvKLXCqhatWph27ZtWL9+Pf78809ERETA3t4ebdq0waRJk7B69WoAur30ITAwED///DOWL1+O6OhoHD16FHXq1MHgwYMxZswYfP755xr3s7KywtatW7F+/Xr88ccfOHHiBOzs7BAaGopJkyYVOzylJC1btsSff/6J7du34/jx44iOjkZeXh6cnJxQp04d9OrVS2/5U3nK4vIwZDle0XT97uhKLBZj9erV2LZtG/bs2YOzZ8/CysoKzZs3xzfffINr165pXQEFAPPmzYO9vT0iIiJw8OBB1ZuNy1sBBehWzjk4OOCHH37Atm3b8Ndff+HkyZNQKBSoW7cu3nrrLbz77rs6vwFOl3iaNGmCVatWYePGjbh8+TJOnz4NQRBQu3btUh/wzMzM8O233+LPP//Evn37cPXqVVy9ehX29vaoX78+hg0bBhcXF9X2w4cPR926dfHdd9/hzp07uHXrFho1aoRZs2ZhwIABBnmgrFu3Lvbs2YPly5fjzJkzSE9Ph7u7O3r27ImRI0dqnNh90qRJCA4Oxvbt23H58mVcvnwZDg4O6NGjB9577z2N96W2trbYtWsXli5dioiICPz7779wc3PDW2+9hXHjxmH+/Pl6vS5dfy/5+fm4efMmzMzM0KtXL63OWZ48PDAwEG+//TZWrlyJkydPIisrCw0aNMCbb76JwYMHF3nZhq55qbZlvTFYWlpi69at2LJlC37//XccP34cpqamaNasGQYNGoSXX35Z62M6Ozuje/fuqvK6ohr3SiMIAj777DM4ODjgo48+0rjNokWLUKdOHfz+++84evQoateujY8//ljjfKapqamIiIhAvXr1VFNPUPmJhMo0eQcREZEOhgwZgrNnz2Lr1q1VYr6bykomk6Fnz56Ij4/H3r17Vd3ViYiItHXhwgUMHDgQw4cPx4wZMwx+vunTp2Pfvn1YtGiR2tvISf+uXLmCfv36oVu3bloNr6xKNm3ahMWLF+OTTz4pMgyWdMc5oIiIiGqYq1evFpmz5cWLF5g/fz7i4+Ph7e3NyiciIiqXkydPwtraWus5hqjyCwgIQM+ePXHo0CG9viSissjKysJ3332HBg0aqObRIv3gEDwiIqIaZuLEicjOzoZUKoWTkxOePn2KGzduIC0tDfb29qoJc4mIiHQ1ceLEIvNeUfUxdepUHD16FMuWLVNNdVJdbNmyBU+fPsWiRYt0mhOTiscKKCIiohpm+PDhOHToEO7cuYOLFy9CLBbD3d0dr732Gt577z3UqVPH2CESERFRJebm5lZp34RXXmPHjsXYsWONHUa1xDmgiIiIiIiIiIjIoDgHFBERERERERERGRQroIiIiIiIiIiIyKBYAUVERERERERERAbFCigiIiIiIiIiIjIoVkAREREREREREZFBsQKKiIiIiIiIiIgMihVQRERERERERERkUKyAIiIiIiIiIiIig2IFFBERERERERERGRQroIiIiIiIiIiIyKBYAUVERERERERERAbFCigiIiIiIiIiIjIoVkAREREREREREZFBsQKKiIiIiIiIiIgMihVQRERERERERERkUKyAIiIiIiIiIiIig2IFFBERERERERERGRQroIiIiIiIiIiIyKBYAUVERERERERERAbFCigiIiIiIiIiIjIoVkAREREREREREZFBsQKKiIiIiIiIiIgMihVQVOUNGTIEQ4YMMXYYZTZr1iwMHz4cADB9+nS0b9/euAFpae/evfD29kZCQoKxQyEiqnJlQHGOHj2KKVOmoHv37mjSpEmp13Tp0iV4e3vj0aNHiIyMhLe3N06dOlVB0eqHt7c3Vq1aZewwiKiaqw7lxPPnz7F69Wr0798fISEhaNGiBfr374/Dhw8Xu8+ff/6JoKAg5Obmqu7f7927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ANOhANOhQEWng77PU2UroDIyMjB69Gh4eHhg8eLFRhvSQERExiUIAg4dOoSmTZuqlrVr1w5r167F1atX4efnBwA4evQo5HI52rZta6xQiYioAhhrqLY+5goszJjzBipVhvkDOS1BAaZDAaZDgaqaDlWyAiovLw/jx49HdnY2vv/+e1hYWBg7JCIi0kFqairOnj0LAMjOzkZcXBwOHDgAS0tLhIeHIzExEV27dsXChQvRu3dvAAVvLfL394e3tzfy8vKwZ88eXLp0CWvWrFEdt0WLFmjZsiU++ugjfPzxx6q3G/Xp04cTyxIR1UAVMVS7PHMFyvLVe0AZe95AJWPOH8jpGgowHQowHQpUdDroe0oPo1dA6fLwMXfuXJw7dw7z589HQkICEhISABSM2y7cAk5ERJXbrVu38MEHH6j+PnjwIA4ePAgPDw8cPXoUgiBALpertbo2aNAAe/bswaNHjwAAPj4+WLduHcLDw9WOvXLlSnz++ef46KOPYGpqildffRXTpk2rmAsjIqJKzRBDtcszV2Dh6QGVZZ4x5w1UqgzzB3K6hgJMhwJMhwIVlQ76PofRK6B0efg4ffo0FAoFPvnkE7VjKfchIqKqISQkBDdv3ix2fd26dYusnzx5MiZPnlzqsR0dHbF06dJyx0hERFUbh2oTEVUORq+A0uXhg5VMRERERETVH4dqExFVH0avgCIiIiIiItKEQ7WJiKoPVkAREREREVGlxKHaRETVh3FntSMiIiIiIiIiomqPFVBERERERERERGRQrIAiIiIiIiIiIiKDYgUUEREREREREREZFCugiIiIiIiIiIjIoFgBRUREREREREREBsUKKCIiIiIiIiIiMihWQBERERERERERkUGxAoqIiIiIiIiIiAyKFVBERERERERERGRQrIAiIiIiIiIiIiKDYgUUEREREREREREZFCugiIiIiIiIiIjIoFgBRUREREREREREBsUKKCIiIiIiIiIiMiijV0BFR0dj6tSp6Nq1K7y9vbFs2bIy7Xf9+nUMHDgQAQEB6NSpE7Zv327gSImISN90KQP++usvjBo1CmFhYWjevDkGDRqE8+fPF9nO29u7yL/p06cb4jKIiIiIiKgUJsYO4OLFi7h8+TKaN2+OZ8+elWmf1NRUvPPOOwgICMC6desQExODhQsXwtraGr179zZswEREpDe6lAFb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1dXVOHHiBFavXo0HH3yw0YeMbdu2YejQoZBImq4P/+9//8PLL7+M6dOnY/r06QCApKQkLFiwAA888ABmzJiB8vJyLF26FI8++ih++OEH2Nvba7c/cOAAzp49i5kzZ8LV1RW+vr7aJNnaMautrcUTTzyBCxcuYNq0adrE/PHHH6O4uBjz58/X6XgQEbVVV8gT7733HkJCQjB69OgWx7zYtm0b+vXr12yRas+ePZg1axZGjRqFV199FVKpFDt37sT06dORkJCA9957DwDw2Wef4e9//zt++OEHeHt7a7fPzMzEG2+8genTp8Pf3x+Ojo7aNr/55psYOnQoPvjgA2RkZOC9996DVCrFO++8o93+hRdewI4dOzBlyhT06dMHFy5cwOLFi5GTk4OlS5e2+XgQEemiK+SJwsJCDBgwAKWlpfD398eDDz6IJ554otE+mCfIbIlEZmDs2LHi3XffLarVau2yY8eOiWFhYeKjjz4qiqIoLlu2TOzVq5eYkZHRYNuXXnpJ7N+/v6hSqURRFMVvv/1WDAsLExcvXtxgvalTp4p33nlng8czZsxoNqasrCyxR48e4tKlSxssP3z4sBgWFiZu3bpVpzampqaKYWFh2p958+aJtbW1DdYpLS0Ve/bsKW7fvl27bMmSJWJYWJioUqnEVatWiZGRkeLXX3+tfb6srEzs06ePOH/+/Ab7unTpktizZ09x9erV2mVDhw4Vo6Ojxby8vAbrtvWYfffdd2JYWJh48ODBBut9/PHHYs+ePcX8/HxRFEVx//79YlhYmLh//34djhARUfMsPU8cOnRI7Nmzp3ju3LkGMWZmZjZYT6PRiHfccYe4bt067bKb1/3+++/Fnj17Nmrb8OHDxccee6zBstLSUrF///7iG2+8oV326KOPiuHh4eKZM2carFt/XZ83b16D5a+99prYq1cvUaPRaNsRFhYmfvfddw3W+/7778WwsDDtfrOyssSwsDDx22+/beshIiJqkaXnidWrV4tr164V9+7dK+7cuVN86aWXxPDwcPHFF19ssB7zBJkzdsEjk1Or1Th16hTuuuuuBnf9xMTEwNfXV/t49+7d6N27N/z8/FBbW6v9iY+PR1FREc6fP99gv0OGDGnwOCwsrEGXtKioKOzatQsffvghDh8+jJqamgbr7927FxqNBvfff3+D1+vduzfs7Oxw6NAhndoZ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qqoK7u7u6N27N+655x6Dxvnee+9h3bp1+Pbbb/HJJ5/A2toavr6+iI+Pb3J8FiIiQ7DkPGFnZwdHR0d89tlnyM/Ph0QiQUhICF5++WWMHz9eux7zBJk7QRRF0dRBEHV1x48fx9ixY7Fr164mBwwkIqKuLS8vD4MHD8b69etx2223mTocIiIyM8wT1BmwAEVEREREREREREbFLnhE7aDRaKDRaJp9XhAESKXSDoyIiIjMCfMEERG1hHmCuhLeAUXUDvPnz8d3333X7PP9+/fHunXrOjAiIiIyJ8wTRETUEuYJ6kpYgCJqh+zsbFy/fr3Z5+3s7BASEtKBERERkTlhniAiopYwT1BXwgIUEREREREREREZlcTUARARERERERERkWXjIOQAamtrUVxcDBsbG0gkrMkRkWXQaDSorq6Go6MjrKx4udcXcwQRWSrmCcNgniAiS2XoPMFMA6C4uBiZmZmmDoOIyCiCgoLg6upq6jA6LeYIIrJ0zBPtwzxBRJbOUHmCBSgANjY2AOoOqlwuh1qtRlpaGsLCwjjlpYHx2BoPj63xdNZjW1lZiczMTO01jvRza44whM56TjWFbTFfltQetsU4mCcMwxh5wtDM6bwzFLapc7C0Nllae4CW22ToPMECFKC9VVYul0OhUECtVgMAFAqFxZxU5oLH1nh4bI2nsx9bdgdon1tzhCF09nPqZmyL+bKk9rAtxsU80T7GyBOGZo7nXXuxTZ2DpbXJ0toDtK1NhsoTzDZERERERERERGRULEAREREREREREZFRsQBFRERERERERERGxQIUEREREREREREZFQtQRERERERERERkVCxAERERERERERGRUbEARUREZAKc9pyIiDoS8w4RmRqvQu2k1oimDqFF5h4fEVFLfvnlF0ydOhXx8fHo27cv/v73v+Pw4cOtbpednY0nn3wSMTExiI+Px5IlS6DRaDog4oaauwZLpVLExsZCKpV2cESNMU8QEZlOR12D25N3mCeIyFCsTB1AZyeVCPhu53moajv+g01rZFYSjBnSzdRhEBHpbe3atQgMDMQrr7wChUKBTZs2YdKkSdi4cSN69OjR5DY1NTV44okn4OjoiCVLluDq1at46623IJVKMWPGjA6Nv7kcIYoa5ObmwtPTE4Jguu+CmCeIiEyroz5L6Jt3mCeIyJBYgDIAVa0GtWrzK0AR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Xh7eeOMNlJWVwcXFBffddx+eeeYZvWbAIyKi1rEARUREREREZikiIgJJSUktrlNfVKq3bt26Vvfbo0ePNq1HRESGw/I+EREREREREREZFQtQRERERERERERkVCxAERERERERERGRUbEARURERERERERERsUCFBERERERERERGRULUEREREREREREZFQsQBERERERERERkVGZvACVnJyMefPmYcSIEQgPD8eHH37Y6jabNm1CeHh4o58DBw50QMRERERERERERKQLK1MHcPToUZw4cQJ9+/bF9evXddr2yy+/hFQq1T7u1q2bocMjIiIiIiIiIqJ2MnkBasKECZg4cSIAIDExUadte/fuDSsrkzeBiIiIiIiIiIhaYPIueBKJyUMgIiIiIiIiIiIj6tS3Dw0ePBhFRUUIDQ3FjBkzMHLkyHbtT61Wa3/qH7dGKpVCFDXQaDTtem1jEP+q7bWlHR1Fl2NLuuGxNZ7Oemw7W7xERERERGS5OmUByt3dHc888wx69+6NqqoqbNy4EXPmzMHy5csxfPhwvfeblpbW4HFycnKL60skEsTGxiI3Nxc1KvP7oGctkwLogZMnT5pdgay1Y0v647E1Hh5bIiIiIiIi/XTKAtSgQYMwaNAg7eOhQ4di/PjxWLlyZbsKUGFhYVAoFFCr1UhOTkZUVFSDQc6b4+npCVWteRV4AEBmVXcLVHR0tIkjuUHXY0ttx2NrPJ312FZUVDQqrBMREREREZlCpyxANWXYsGH48MMP27UPqVTa4MPlrY+bIwgSmONQVoJQF5Q5fmBu67El3fHYGk9nO7adKVYiIiIiIrJsZlg2ISIiIiIiIiIiS2IRBShRFLF161ZERkaaOhQiIiIiIiIiIrqFybvgFRYW4uDBgwCAyspKZGRkYPPmzZDL5UhISEBOTg5GjBiBRYsWYfTo0QCA2bNnIyoqCuHh4aipqcHGjRtx/PhxrFixwoQtISIiIiIiIiKippi8AHXu3DnMmTNH+3jLli3YsmULfH19sX37doiiCLVa3WAWt6CgIGzcuBFXr14FAERERGDlypVISEjo8PiJiIiIiIiIiKhlJi9ADRgwAKmpqc0+7+fn1+j5Z599Fs8++6yxQyMiIiIiIiIiIgOwiDGgiIiIiIiIiIjIfLEARURERERERERERsUCFBERERERERERGRULUERERERERERE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o9Fgz549wXmqqqpw6NAhzJw5Mwa1ISKiuCeg7rnnHvj9fixfvhxffvklXn/9dWzbtg0PP/xwyHyFhYXYsGFD8PUtt9yCrKwsLFu2DPv27cN7772HDRs24P7774dSqRzoahARUQwwRhARDV2xjAEqlQqLFi3CX/7yF7z33nvYt28ffvWrXyEnJwfz5s0b0HoSEQ0VgiiKYrwLcfLkSaxZswbHjh1DSkoK7r//ftx3330h84wePRpLly7FsmXLgtPKysqwevVqHDhwADqdDnfeeSeWLVvGzv+IiK4gjBFERENXLGOAz+cLJqCam5txzTXX4Nlnn0VWVtaA1Y+IaChJiAQUERERERERERFduXgbmIiIiIiIiIiIYooJKCIiIiIiIiIiiikmoIiIiIiIiIiIKKaYgCIiIiIiIiIiophiAoqIiIiIiIiIiGJqSCegTp8+jcLCQtxwww29znvy5Ence++9mDhxIubMmYO33357AEo4eIW7bt9//32MHj2608/XX389QCUdHCJdT9xvexfJuuV+S+127NiBO+64A1dffTWKiopw++234x//+EePy8yZM6fL/Wf8+PHBeaxWa5fz/OUvf4l1lQBEPz66XC6sXr0a1157LaZMmYLHH38cDQ0NMSh518Ktz86dO7F48WLMmDEDV111FX7xi1/g22+/7TRfV9tmxYoVsSp+iGjH1/r6ejz++OOYMmUKrr32WqxZswYulyuWVQgKty733Xdfl3UZPXo0bDZbcL6B3i6xjM3xPmYocYUTd6xWK375y1+iqKgIM2bMwPr16+H3+3v97HidD3qr0+eff45HH30Us2bNwuTJk/Hzn/8cH3/8ca+fG89Y2ludvv766y7L9v777/f62ZFu3/7orT4rVqzo9jx96NChHusSz+udjrqLSZEeF4lwHu+qTt9//z2eeuopzJkzB0VFRbj11lvx3nvvhfV50Yizsj7NfYVZu3YtkpKSep2vrq4OixYtwsSJE7Fp0yYcP34ca9euhU6nw/z582NezsEo3HXb7m9/+xukUmnw9ciRI2NQqsGvL+uJ+23fRLIPcr+lxsZGzJ07F2PHjoVSqcTHH3+MX//611AqlZg7d26Xy2zYsAFutztk2rJly0ISUO1WrlyJCRMmBF+np6dHtwLdiHZ8XLVqFfbt24ff/e53UKlU+MMf/oDly5fjjTfeiFkd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OWGNthJLXdXnyy+/hN/vx9NPPx0yb1ZWFj799FMAwLBhw7Bjxw7s2rULTqcTaWlpWLhwIZYsWTKg5e+oP+ep9evX4/e//z2eeOIJyOVy/PSnP+1zs9Bo6qouAFBVVYXvvvsOv/vd77pcLh7bJZaxORGPGUoMvcUdhUKB1157DatXr8bSpUuh0+mwcOFCPPzwwyGf09VxFq/zQW91+vLLLwEAf/zjHzste/r06eDfl9cpnrG0tzrl5+fjvffew+bNm+H1ejFixAi8+OKLnc4Fl19DhLt9B7o+QOAp4k8++QR33nlnt02yEmkbhSuc4+LyYwlI3PP4V199BQDYsmULtmzZEvLeJ598guzsbACd6xStOCuIl18VExERERERERERRdGQGgWPiIiIiIiIiIgGHhNQREREREREREQUU0xAERERERERERFRTDEBRUREREREREREMcUEFBERERERERERxRQTUEREREREREREFFNMQBERERERERERUUwxAUVERERERERERDHFBBQREREREREREcUUE1BERERERERERBRTTEAREREREREREVFM/f9sfc1VcWJBmAAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def plot_hist_ratios(df, key, ax, epoch):\n", + " hist = df[key].iloc[epoch]\n", + " count = hist['packedBins']['count']\n", + " start = hist['packedBins']['min']\n", + " size = hist['packedBins']['size']\n", + " bins = [start + i * size for i in range(count)]\n", + " indices = hist['values']\n", + " values = [bins[i] for i in indices]\n", + " values = [v * 100 for v in values]\n", + " sns.histplot(values, kde=True, ax=ax, stat='density')\n", + " ax.set_title(key)\n", + " # ax.set_xlim(0, None)\n", + "\n", + "def plot_histograms_ratios(df, epoch):\n", + " plt.figure(figsize=(12, 6), dpi=300)\n", + " sns.set(style=\"whitegrid\")\n", + " sns.set_context(\"paper\", font_scale=1.2)\n", + " nrows = math.ceil(len(df.columns) / 3)\n", + " fig, axes = plt.subplots(nrows, 3, figsize=(12, 6))\n", + " axes = axes.flatten()\n", + " keys = sorted(df_ratios.columns)\n", + " for key, ax in zip(keys, axes):\n", + " plot_hist_ratios(df=df, key=key, ax=ax, epoch=epoch)\n", + " title = f'Ratio between elementwise empirical gradient norm and theoretical bound, epoch {epoch:2d} (in %)'\n", + " fig.suptitle(title, fontsize=16)\n", + " plt.tight_layout()\n", + " plt.savefig(f'histogram_ratios_epoch_{epoch}.png')\n", + "\n", + "plot_histograms_ratios(df_ratios, 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABKEAAAJOCAYAAABvBRRKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1hT1/8H8HcIW7YICqi4gmzBgSCK4kJrW7X16x5dWmcdravWOqpW27rraGttnbW1aodV6i4uHCgiojhABRVUBAc7ub8//CUSCZKEhDDer+fpY7kr55wk9+R+7rmfIxIEQQAREREREREREZEeGRm6AEREREREREREVPUxCEVERERERERERHrHIBQREREREREREekdg1BERERERERERKR3DEIREREREREREZHeMQhFRERERERERER6xyAUERERERERERHpHYNQRERERERERESkdwxCERERERERERGR3jEIpYbw8HB4eHgo/efj44N27dph5MiROHToULmXaerUqfDw8MCOHTv0/lqDBw+Gh4cHoqOj9f5aVD74nhrWihUr4OHhgRUrVhi6KFVSWdtXfp43FHmfk5KSYrAylIeS3qcdO3bAw8MDU6dONVDJqKrS12eL5/TSGfq8ps3vnur+vvJcrB59XJM9fPgQu3btwqRJk9ClSxf4+vrC398fERER+OKLL0r8Hj158gR79uzB9OnT0b17d/j7+8PX1xcdO3bEtGnTcOXKlRJfMz4+HuvWrcPEiRPRtWtXNG3aFB4eHvjjjz/KXJ+0tDQEBATgww8/VFqekpICDw8PhIeHl/k11JGdnY3Zs2cjJCQEvr6+6NOnD06cOFHi9ocOHYKHhwfWrFlT4jarVq2Ch4cHjhw5oo8iV1kMQmkgMDAQvXr1Qq9evRAWFgZjY2McPHgQH374IRYsWKCz16nuJ31D/1Ch6qm6/9gkImXVvS+m58r7IqkyKs8bo0TVwYIFCzBlyhT8888/MDc3R3h4OIKCgpCVlYWNGzfi9ddfx7Fjx4rt98MPP2D8+PH4/fffIZVK0a5dO7Rt2xaFhYXYsWMH3nrrLezcuVPla3777bdYtGgRdu/ejeTkZAiCoLP6LFq0CLm5uZgwYYLOjqmNqVOnYsuWLahZsyZCQ0ORmJiI999/H+fPny+27bNnzzB79mxIJBK89957JR5z2LBhcHR0xPz5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CwDQq1cvqFQqbNq0yTBOQUEBDh06hEGDBplhbYiIyBqYM7cQEZHt4LkGEZF1sXgRatSoUdDr9Zg+fTp27dqFzz77DGvXrsUzzzzTZLzY2FgsWLDA8Pquu+5CUFAQpk6dih07duCrr77CggULMGHCBCgUCgCAs7Mzxo8fj48++ghfffUVduzYgWnTpiEkJKTJo1SJiMi+mDO3EBGR7eC5BhGRdRFEURQtHURaWhrmzJmDY8eOwcfHBxMmTMCYMWOajBMdHY0pU6Zg6tSphmE5OTmYPXs29u3bB1dXVzz88MOYOnVqk/uodTqdITFUVFSgX79+mDVrVpMms0REZH/MmVuIiMh28FyDiMh6WEURioiIiIiIiIiI7Bsv6xIRERERERERkdmxCEVERERERERERGbHIhQREREREREREZkdi1BERERERERERGR2LEIREREREREREZHZsQjlINLT0xEbG4vBgwffdLz169cjOjr6up89e/Z0UKSmZ+w6paWlYfTo0YiPj0dKSgpWrVrVQRGbjzHbwh73CQDQarX4+OOPMXToUHTv3h0pKSlYvHhxi9PZ435BjskR84Kj5wPmAB77AeO2gb3tB46stcd+wL72e0fKeY6c6xw5z9lSfpOZfQlkFebNmwcPD49Wj7969WpIpVLD686dO5shqo7VlnUqLi7G+PHjER8fj8WLF+P48eOYN28eXF1dMWLEiA6I1ryM+XztbZ+YMWMGDh48iClTpiA0NBS5ubkoKiq66TT2vl+QY3HkvODo+cCRcwCP/cZtg0b2sh84stYe++1tv3fEnOfIuc4R85wt5TcWoRzAli1bkJOTgwcffBDffPNNq6bp0aMHZDL72j3ask5r1qyBIAiYP38+lEolEhMTkZubi0WLFtnkgfhaxny+9rRPbNu2DZs3b8Y333yDyMhIAED//v1bnM7e9wtyHI6eFxw9HzhqDuCx3/ht0Mge9gNH1pZjvz3t946a8xw51zlanrO1/Mbb8excXV0d3n77bbz44otwcnKydDg2Y+fOnUhOToZSqTQMGz58OLKzs5GTk2PByMgU1q9fj/79+xsO0q3F/YLsAfNC2/D/3n7w2G/8NiDb19Zjv73s98x5rWMvn7ejsrX8xiKUnVu+fDm8vLxw1113tWm6wYMHIzY2Fvfccw82btxopug6VlvWKTs7GxEREU2GNb7OzMw0W4wdxZjP1572idTUVISFhWHWrFlISEhAQkICXnjhBZSWlt50OnvfL8gxMC8wHzhqDuCx3/ht0Mge9gNH1dZjv73s946c8xw51zlanrO1/MYilB27dOkSPvnkE8ycObPV0/j6+uK5557De++9h4ULFyI0NBTTpk3Dli1bzBipeRmzTmVlZXBzc2syzN3d3fCerTJmW9jjPnHx4kWsX78eGRkZmD9/PmbNmoVdu3bhH//4x02ns9f9ghyHo+cFR88Hjp4DeOw3fhvY037giIw59tvDfu+oOc+Rc52j5jlby2+2edMjtcq///1vDBo0CAkJCa2eZtCgQRg0aJDh9ZAhQzB69GgsXrwYw4YNM0eYZmeP62QsY7aFPW4/URQBAAsXLoSnpycAQKFQYNq0acjOzkZYWJgFoyMyH0fPC/a0LsZw9BzAY7/x28Ce9gNHZMyx3x44as6zh3UwlqPmOVvLb2wJZacyMjLw7bffYuLEiSgrK0NZWRlqa2shiiLKyspQV1fX6nkNHToUaWlpZoy247W0Tmq1GuXl5U2GNVaD1Wq1WWPraMZ8vra+T6jVakRFRRkO0gDQr18/AMCZM2duOp2j7Bdkf5gXbszR84Ej5QAe+43fBjdiq/uBozH22G/r+z1zXlOOnOscIc/ZWn5jSyg7de7cOWi1Wtx///3Xvde3b1/MmjULo0aNskBktiEsLAxZWVlNhjXeF3vtfbNkeyIjI5v98iGRNF+b535Btox5wTj8v7cfPPYbvw3Idhl77Lf1/Z45r21s/fN2dLaW31iEslO9evXCihUrmgzbsGEDtm3bhvnz57e6SZ4oiti8eTNiY2PNEKVltGadkpKS8MUXX6CmpgbOzs4AgE2bNiEsLAwhISEdFarZGfP52sM+MXjwYHz88ccoLi6Gl5cXAGD37t0QBAFdunRpdjpH2S/IPjEvXM/R84Gj5QAe+43fBtey5f3A0Rh77Lf1/Z4570+OnOscJc/ZXH4TyWF8+OGH4qBBgwyvc3NzxZiYGHHDhg2GYVOnThWXLFkibt++Xdy8ebP41FNPidHR0eLWrVstELFptLRON9oORUVFYv/+/cWnnnpK/OOPP8SlS5eKsbGxTcaxRcZsC3vcJ0pLS8WkpCRx5MiR4tatW8X//e9/4i233CL+3//9n2EcR9ovyHE5Wl5w9Hzg6DmAx37jt4E97QfUumO/Pe33jRwl5zlyrnPUPGdr+Y0toRyYKIrQ6XTQ6/WGYWFhYVi3bh3y8/MBADExMVi8eDGSk5MtFWa7tbRON9oOXl5eWLZsGebMmYOJEyfCx8cHM2fOxIgRIyyxCiZjzLawx31CrVZj+fLleP311zF9+nQ4OzvjzjvvxN///nfDOI60XxA1svdjgKPnA0fPATz2G78N7Gk/oOvZ+37fHHvd1x051zlqnrO1/CaI4pWu1ImIiIiIiIiIiMyEPRASEREREREREZHZsQhFRERERERERERmxyIUERERERERERGZHYtQRERERERERERkdixCERERERERERGR2bEIRUREREREREREZsciFBERERERERERmR2LUEREREREREREZHYsQhERERERERERkdmxCEVERERERERERGbHIhQREREREREREZkdi1BERERERERERGR2LEIREREREREREZHZsQhFRERERERERERmxyIUERERERERERGZHYtQRERERERERERkdixCERERERERERGR2bEIRUREREREREREZsciFBERERERERERmR2LUGSzxowZgzFjxlg6jHZ79913cc8996BPnz6Ij4/H8OHDsWDBAlRXV99w/CVLluD2228HAHz00UeIjo5GfX19R4bcLnv27EF0dDT27Nlj6VCIyIHYS864Wk5ODnr06IHo6GicPXv2huP88MMPSEhIQG1tLdavX3/Tca1Rbm4uoqOjsX79ekuHQkQOxl7yxsyZMxEdHX3dz9y5c284PvMGmZvM0gEQObqKigo8+OCDCA8Ph5OTEw4ePIhPPvkEx48fx6JFi64bf8uWLRg6dKgFIiUiImsya9YsuLm5oaamptlxtmzZgkGDBkGhUHRgZEREZE28vLyuO6/w9fW94bjMG2RuLEIRWdisWbOavE5MTERNTQ2WLFmC4uJieHl5Gd4rLCzE0aNHMWPGDLPHJYoitFotnJyczL4sIiJqm++++w5paWmYOHEi3nzzzRuOU1dXh99++w2vvvpqh8RUV1fHnEFEZIXkcjl69uzZ4njMG9QReDse2YQffvgBw4cPR/fu3XH33Xdj8+bN141TXFyMV199FYMGDUL37t0xfPhwrF27tsk4jU1KDx8+jBdeeAG9evVCUlIS3njjDdTW1hrGq6+vxwcffIBhw4YhLi4O/fv3x6hRo7B///4m81u7di3uvfdewzgvvfQSLl++3O719fDwAADIZE3rxL/88gu8vLzQq1evZqf97bffkJCQgDlz5kCv1wMAfv75Zzz88MPo0aMH+vTpg2effRbnz59vMl1KSgpefPFFrFu3zrCtt2/f3uptBgDV1dV45513kJKSgu7duyMlJQWLFi0yxEFE1BHsPWeUlpbirbfewowZM6BWq5sdb/fu3aipqcGQIUOaHSc1NRUDBgzAlClTDOu0d+9ejB07FgkJCejZsycef/xxZGRkNJluzJgxGDVqFLZu3YoRI0age/fuWL16teGW619++QVz5sxB//790b9/f7z44osoKytrMo/6+nosXrzY8FklJSXhrbfeui63EBGZm73njdZi3qCOwJZQZPX++OMPvPDCC7j11lsxc+ZMFBcXY+7cuaivr0d4eDiAhlvaRo0ahdraWkydOhXBwcHYsWMHZs2ahbq6uuvu554xYwbuvvtuLFiwAIcOHcKCBQugVqvx7LPPAgA+/fRTLF++HNOnT0dMTAwqKipw7NgxlJaWGubx7rvvYtmyZRgzZgxmzJiBgoICfPDBBzh16hT++9//QiqVtmk96+vrUVtbiyNHjmDZsmV48MEHrzu52LJlC4YMGQKJ5Mb146+//hqvvPIKJk2ahEmTJgEA1qxZg1mzZuGBBx7A5MmTUVlZiY8++giPPvoovv32W7i6uhqm37NnD06ePIkpU6bA29sbQUFBhmTY0jarr6/H448/jjNnzuCZZ54xJOCPP/4YpaWlmDlzZpu2BxGRMRwhZ7zzzjuIiIjAiBEjbtrnxZYtW9C3b99mC1U7d+7E1KlTcc899+C1116DVCrFtm3bMGnSJCQnJ+Odd94BACxduhR/+9vf8O233yIgIMAwfXZ2Nt544w1MmjQJISEhcHd3N6zz3LlzMWTIELz33nvIysrCO++8A6lUirffftsw/f/93//h119/xRNPPIFevXrhzJkzmD9/PvLy8vDRRx+1ensQEbWHI+SN4uJi9O/fH+Xl5QgJCcGDDz6Ixx9//Lp5MG9QhxCJrNzIkSPFO++8U9TpdIZhhw4dEqOiosRHH31UFEVRXLBggdi9e3cxKyurybQvv/yy2K9fP1Gr1YqiKIr/+9//xKioKHH+/PlNxps4caJ4++23N3k9efLkZmPKyckRu3btKn700UdNhu/fv1+MiooS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kjeogS38L9kbbvOOZUvbm3mjY1lTzrCl/dTe8bOwDvwcWtaWnMEiVCs1NotVKpVQqVQ3HVen0wEAVCqVw+2kXHfHXHfAsdffltadTfw7TlvyBjWwpf8le8Ft3rFscXszb3QMa8oZtrif2it+FtaBn0PrtSZnMKsQEREREREREZHZsQhFRERERERERERmxyIUERERERERERGZHYtQRERERERERERkdixCERERERERERGR2bEIRUREdufHH3/ExIkTkZSUhN69e+Nvf/sb9u/f3+J0ubm5ePLJJ9GzZ08kJSXhww8/hF6v74CIiYiIiIjsn8zSARAREZnaihUr0KlTJ7z66qtQqVRYv349xo0bh3Xr1qFr1643nKaurg6PP/443N3d8eGHHyI/Px9vvvkmpFIpJk+e3MFrQEREZDmtecw6EZExWITqADq9CKlEsHQYN2TNsRERGWvRokXw9PQ0vB4wYADuuecefPHFF3j99ddvOM2PP/6IvLw8rFixAhqNBgBQWlqKRYsW4YknnoBCoeiQ2K39uGzt8RERORpTH5elUikSEhJMNj/mDSK6GotQHUAqEbBh22lo663rlg65TIL7b+1s6TCIiEzu6gIU0HBFt0uXLsjNzW12mp07dyIhIcFQgAKA4cOH491338XBgweRmJhotnivZq05A2DeICKyRqbOG6KoR0FBATQaDQShfS2imDeI6FosQnUQbb0e9TrrO6EgInIEOp0OqampSEpKanac7OxsxMbGNhkWEhICJycnZGVlGV2E0ul00Ol0rR5fKpWiTltvlUUoUWw4GWnL+rRF43zNNX+6Hrd5x7Kl7W0LMdKfTHmuodfrUafVQVuvB+/KIyJTYxGKiIjs3qpVq3DhwgWMHj262XHKysqgVquvG65Wq1FWVmb0sjMyMlo9rkQiQUJCAgoKClCntb4TQCe5FEBXHD161Kwdtqempppt3nRj3OYdi9ubiIgcFYtQRERk144cOYL33nsPzzzzDKKjozt8+VFRUVCpVG2aRqPRWGVLKLms4ZJ4fHy8Webf2GItLi4OUqnULMugprjNO5Ytbe+qqqo2FdGJiIhag0UoIiKyW7m5uZg0aRKGDBmCKVOm3HRctVqN8vLy64Y310KqtaRSaZtPNgVBYpW3QDT2DWLuk2djthm1D7d5x7KF7W3t8RERkW2ywq+4RERE7VdW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dTWysrKwceNGKJVKJCcnIy8vD7fddhvmzZuHESNGAACeffZZxMXFITo6GnV1dVi3bh0OHz6MRYsWWXBNiIiIiIjsB4tQRERkd06dOoVp06YZXm/atAmbNm1CUFAQtm7dClEUodPpmjzhLSwsDOvWrUN+fj4AICYmBosXL0ZycnKHx09EREREZI9YhCIiIrvTv39/pKenN/t+cHDwde8///zzeP75580dGhERERGRw2KfUEREREREREREZHYsQhERERERERERkdmxCEVERERERERERGbHIhQREREREREREZkdi1BERERERERERGR2LEIREREREZHdSktLw+jRoxEfH4+UlBSsWrWqxWnOnj2LV155BXfffTe6du2KF1988YbjRUdHX/czc+ZMU68CEZHdkFk6ACIiIiIiInMoLi7G+PHjER8fj8WLF+P48eOYN28eXF1dMWLEiGanO3XqFH7//Xf07NkT1dXVN13GU089hZSUFMNrLy8vU4VPRGR3zFqE2rlzJ5KSksy5CCIisiPMG0REBJguH6xZswaCIGD+/PlQKpVITExEbm4uFi1adNMiVEpKCoYNGwYAGDNmzE2XERISgp49e7Y7ViIiR2DW2/GeeOIJ3HbbbVi6dCmKi4vNuSgiIrIDzBtERASYLh/s3LkTycnJUCqVhmHDhw9HdnY2cnJymp1OImGvJURE5mDWo+vy5csRFxeH+fPnIzk5GS+88AL27t1rzkUSEZENY94gIiLAdPkgOzsbERERTYY1vs7MzDRJrO+++y5iY2MxYMAAzJ07FzU1NSaZLxGRPTLr7Xj9+/dH//79UVxcjPXr1+Orr77CDz/8gPDwcDzyyCMYMWIE3N3dzRkCERHZEOYNIiICTJcPysrK4Obm1mRY43RlZWXtjvOBBx5ASkoK1Go1Dh48iMWLF+P8+fNYuHChUfPT6XTQ6XRtmkYqlUIU9dDr9UYt81qiKBp+t3ee4pUmD21dJ2rQuN24/SyLn0PL2rJtOqRjci8vLzzxxBN44oknsGvXLnz00Ud466238P7772P48OEYP348oqOjOyIUIiKyAcwbREQEWH8+ePPNNw1/9+/fHz4+PnjllVdw5swZREZGtnl+GRkZbRpfIpEgISEBBQUFqNOa9gS5oKCg3fNwkksBdMXRo0dNViRzRKmpqZYOgcDPwVQ69Ol427dvx3//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37p28sLMx/rgjWV78dqSXfjX1EHwdle2PCER2bwO+bZYXFyMX3/9FRs2bMDly5cBALW1tWbt1NTaiaKIE1lF2HYgF1qdHn1jNBjaJ6RdBairOStk6BOjwe39Q+HppkBadjE27zmH8so6k8yfiMic2ps3iouLsXHjRmzcuBHV1dXIysrCxo0bsX37dgBAXl4eYmNj8fXXXxumGTVqFPR6PaZPn45du3bhs88+w9q1a/HMM8+YevVarapGiy37cnC5vBZxnX1wS3d/qyn09Iv1x4cvDEFsuBe+/S0Tr326C+VVzDFEZFo8j7BffWP9MfWhHigsqcbspbtRWa21dEhE1AHM2hJKFEX861//wqpVq6DVaiEIAtatWwcPDw9MmjQJvXr1wuTJk80ZglXS1uux5/gF5BRUwN3VCYN6BsGtmT6f2svbXYnb+nXCscwiHM8swsbd2egb64+wAOP7NyEiMhdT5Y1Tp05h2rRphtebNm3Cpk2bEBQUhK1bt0IUReh0uiYnMV5eXli2bBnmzJmDiRMnwsfHBzNnzsSIESPMsaotqqiqw9b9uais0aJXtB+iO3laJI6b8fFQYu4zA7FkQyp+2pWNF+b/hn9O6I8QDW+rIKL24XmEYxjWrxNKymux4sc0zF22F7Mn3gK5zLr7SyOi9jHr5dTFixfjiy++wOTJk/Hll19CFEXDe0OGDMG2bdvMuXirVKvV4dcDOcgpqECoxg239etktgJUI4lEQHxnH6T0CYFcJsGu1As4cupik8+DiMgamCpv9O/fH+np6df9bN26FQAQHByM9PR0PPDAA02mi4mJwZo1a5Camopff/0VY8aMMdm6tUVltRZb9+eiqkaLft38rbIA1UgmlWDSX3vg6QfiUVBchRc//A370wosHRYR2ThTnkekpaVh9OjRiI+PR0pKClatWtXiNGfPnsUrr7yCu+++G127dsWLL754w/Fqamowe/Zs9O/fH7169cILL7xgaLFFrfPXlC74S1I4Us9cwr9XH4Rez3MUIntm1iLUV199hcmTJ+Ppp59Gt27dmrwXGhqKc+fOmXPxVqe6th6/7DuHotIaxIZ7YUB8gFkfq30tjZcKd9wSBm+1M05kFeO3w3moqavvsOUTEbWEeQMorajFln3nUHmlABUZdP1jya3R3QPDMefJREgEAa9/thubdmdbOiQismGmygfF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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "epoch = run.summary_metrics[\"epoch\"]\n", + "plot_histograms_ratios(df_ratios, epoch-2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "lipdp", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/experiments/paper_plots/multiaug_report.ipynb b/experiments/paper_plots/multiaug_report.ipynb new file mode 100644 index 0000000..94449fd --- /dev/null +++ b/experiments/paper_plots/multiaug_report.ipynb @@ -0,0 +1,272 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plotting the Pareto Front from WandB sweeps :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Imports & Installs :" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import wandb\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import pandas as pd\n", + "from joblib import parallel_backend, Parallel, delayed\n", + "import tqdm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Get run hashes and load run-table artifacts : " + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "api = wandb.Api()\n", + "entity = \"algue\"\n", + "project = \"ICLR_Cifar10\"\n", + "states = [\"finished\", \"killed\"] # only runs that did not failed or crashed.\n", + "sweeps = {\n", + " 'acc_eps20_certacc_0' : 'q4zk798t',\n", + " 'acc_eps10_mult4': 'p1f5ix9a',\n", + " 'acc_eps10_mult2': 'ko4x40m8',\n", + "}\n", + "name_from_id = {v: k for k, v in sweeps.items()}\n", + "sweep_ids = list(sweeps.values())\n", + "filters = {\"state\": {\"$in\": states}, 'sweep': {\"$in\": sweep_ids}} \n", + "\n", + "redownload = True\n", + "if redownload: \n", + " runs = api.runs(entity + \"/\" + project, filters) " + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 99/99 [00:04<00:00, 22.83it/s]\n", + "100%|██████████| 99/99 [00:00<00:00, 438475.29it/s]\n" + ] + } + ], + "source": [ + "faulty_runs = {}\n", + "\n", + "def get_hist(run, add_config=True):\n", + " # requires that n_epoch < 1024 to work ! (otherwise increase sample)\n", + " hist = run.history(samples=2048)\n", + " # check for empty runs\n", + " if len(hist) == 0:\n", + " faulty_runs[run.name] = \"empty_run\"\n", + " return hist\n", + " \n", + " if \"epsilon\" not in hist.columns:\n", + " faulty_runs[run.name] = \"no_epsilon\"\n", + " return hist\n", + " \n", + " # re-order columns and reindex data\n", + " hist = hist.sort_values(by=[\"epoch\", \"_step\"], axis=0)\n", + " hist = hist.reset_index(drop=True)\n", + "\n", + " # backward fill the \"epsilon\" field (reported on epoch+1)\n", + " hist = hist.fillna(method='bfill', limit=2)\n", + " # hist = hist.fillna(method='ffill', limit=2) # for mia-attacks.\n", + "\n", + " # drop row where epsilon is not known\n", + " hist = hist.dropna(how=\"any\", subset=[\"epsilon\", \"val_accuracy\"], axis=0)\n", + "\n", + " # take one value out of two\n", + " hist = hist.iloc[::2, :]\n", + "\n", + " if len(hist) == 0:\n", + " faulty_runs[run.name] = \"empty_run\"\n", + " return hist\n", + "\n", + " hist['name'] = run.name\n", + " hist['sweep'] = name_from_id[run.sweep.id]\n", + " if add_config:\n", + " for k, v in run.config.items():\n", + " hist[k] = v\n", + " hist['num_epochs'] = len(hist)\n", + " hist['run_id'] = run.id\n", + " \n", + " return hist\n", + "\n", + "if redownload:\n", + " n_jobs = 10\n", + " histories = []\n", + " debug = False\n", + " num_runs = 50 if debug else len(runs)\n", + " with parallel_backend(backend='threading', n_jobs=n_jobs, require='sharedmem'):\n", + " pfor = Parallel(n_jobs=n_jobs)(delayed(get_hist)(run, add_config=not debug) for run in tqdm.tqdm(runs[:num_runs]))\n", + " for metrics_dataframe in tqdm.tqdm(pfor):\n", + " histories.append(metrics_dataframe)\n", + " histories = pd.concat(histories)\n", + " histories = histories.dropna(how=\"any\", subset=[\"epsilon\", \"val_accuracy\"], axis=0)\n", + " histories = histories.dropna(how=\"all\", axis=1)\n", + " histories = histories.sort_values(by=[\"num_epochs\", \"name\", \"epoch\", \"_step\"], axis=0)\n", + " faulty_runs = pd.DataFrame.from_dict(faulty_runs, orient=\"index\", columns=[\"reason\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "if redownload:\n", + " histories.to_csv(\"multiaug.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "histories = pd.read_csv(\"multiaug.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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ZKQiIyMfvHeWLFkiSSpdurT+85//qHv37kwidQNnz57V2bNnLWLFihVTsWLFXJSR+/rjjz8o+M4keF8DAICMRNE3AAAAALuFhYVp6tSphni+fPn0zDPPqFKlSgoODjZ0CCpatGgGZQjA2caOHavk5GSLWLZs2dSxY0fVqVNHefPmlY+Pj8XjISEhGZniA0lJSVq4cKH69+/v8FjJyck2dRl7VBw9elQvvfSSRSyz38ECrrNq1SqFh4en+Pi8efNcXogEZBX//POPhg0bZhHr1KmTRo0a5aKMnOfGjRuG76bQ0FCtXr3aRRkBsEdSUpKmTJmicePG2VzsnZLLly9rwoQJmjFjhvr3768XXnhBfn5+Thk7M4iLi9Nff/2V4uMbNmzQ9evXlTdv3gzMynoXL17U//t//09z587V559/rnr16rk6Jf38889uOSl6+fLlevvtt3X37l2b1z1y5Ih69Oihr776Si1atEiH7DLeiRMn9Nlnn2nOnDn66quv9Pjjj7s6pUfan3/+afjcZETn+8wmISFB33//vSEeHBysLl26qHr16sqVK5e8vS1LfgoUKJBRKeJfeF8DAICMRNE3AAAAALstXrxYsbGxFrFixYrpjz/+UM6cOV2TFIB0c/z4ce3du9ci5uPjo+nTp7ttZ+d58+Y5peh7+/btOn/+vBMyApCStDqYbdy4UdeuXVO+fPkyKCMAAOAKYWFheuutt7Rx48Y0lw0JCVHBggUVEBAgLy8vRUdH68qVK7p27Zphsup9ERERGjNmjG7duqV3333X2em7rbQm2CUmJmrhwoXq169fBmZlu4sXL6pfv34aO3asmjRp4up03M66des0ZMgQJSQkmD6eL18+FStWTB4eHrp48aIuXrxoWCY2NlZDhgzR+PHj1bBhw/ROOcMcOXJEXbt21S+//KKqVau6Oh0gVRs2bNCVK1csYjlz5tScOXNUpEgRF2UFAAAAd0DRNwAAAAC77dq1yxDr378/Bd9AFrVz505DrE2bNm5b8C1Jp0+f1u7du1WtWjWHxuF2uhlr1KhRWaLbLKx39epVbdq0KdVl7hciPdzBFwAywmuvvUanPiADXL9+XX369NHx48dNH/f19VWLFi3UokUL1axZU7lz5zZdLioqSrt27dL69eu1dOlSXb9+3bBMYmKiU3O31sCBA/XUU085PE5AQIBNy1tzTjN//vx0L/pu1KiRBg0aZPpYUlKSIiIidO3aNe3fv19///23bty4YVguISFBgwcP1syZM1W+fPl0zTczuXTpkt5++23Tgu/GjRvr9ddfN7xep06d0sSJEw13toqPj9d///tfLViwQIUKFUrXvK1Vvnx5ffTRR6aPJScn686dO7p27Zp27dqllStXKiIiwrBcbGysBgwYoD/++IM7EcKtmf3u/uyzz1LwDQAAAIq+AQAAANjv0KFDhlitWrVckAmAjJAZPvOVKlXSkSNHFB8f/yA2b948h4q+o6KitHz5cotYjRo1TIvgAdhn4cKFhsKrbNmyGe4oMn/+fIq+AQDIoiIjI1Ms+Pbw8FC3bt306quvWnXXj4CAAD355JN68sknNXToUC1evFg//PCDzpw5kw6Z26Zo0aIZ3mX46tWr+ueffyxiHh4e8vHxUVxc3IPYiRMntG/fvnSd2BsSEmLV8+/atavef/99zZw5U2PGjNHdu3ctHo+NjdXo0aP1yy+/pFOm9gkKClL58uVVsWJFVapUSRUrVtQLL7xg2lHb2UaMGGHazX3w4MEaMGCA6TolS5bUqFGjVLduXQ0bNkxJSUkPHgsPD9eIESM0YcKEdMvZFoGBgVa/d9577z19//33+vnnnw2P3759W6NGjdL48ePTIUvAOTLDb3AAAABwDU9XJwAAAAAg8woLCzPE8ufPn/GJAMgQZp95awouMlJwcLDhFt9Lly41FI7aYunSpYqOjraIde7c2e7xABiZdZ4cMmSI/Pz8LGInT57U3r17MyotAACQgd566y3Tgu/g4GBNmjRJI0aMsOv8w9vbWx07dtTixYv11ltvydfX1xnpZioLFiywKOaV7hUPNmvWzLDs3LlzMyqtNPn6+uqFF17Qjz/+KB8fH8PjW7Zs0fbt212Q2T3Zs2dX9erV1atXL3311VdaunSptm/frmnTpumdd95R69atM6wr75YtW7RmzRpD/D//+U+KBd//1rFjRw0ePNgQX7NmjbZu3eqUHDNSYGCghg4dqs8++8z08b///pvzCrg1fncHAABASij6BgAAAGC3yMhIQyxbtmwuyARARsgsn/mHC7IjIiK0YsUKu8d7uBg1NDRUderUsXs8AJZ2796t06dPW8SyZ8+uZ555Ro0bNzYs706FSAAAwDlmzpyptWvXGuI5c+bUtGnT1KBBA4e3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0dF68cUX9csvv9hUvJiUlKTJkyc73GVt8uTJ6tq1q3bu3OnQOIcPH7Zp+W3btql9+/ZauHChXUWbN27c0Pvvv68RI0a4vOjzhx9+UJ8+fXT27Fm71t+1a5eeeeYZLV++3MmZuaeHb2V97tw57dixw+r1Hy5G9ff3V4sWLZySGzJeQkKCXn31VU2ZMsWmz3J8fLzGjh2rwYMH230x3VGXL19Wjx499N1336V58dRMXFycJk2apD59+ig8PDwdMrTPpUuXtGXLFkP8350nJal8+fKGrr/3u/dnNQcOHFDXrl1NC3dSExkZqaFDh2rixInplNm9AvMePXrY/B2yf/9+Pffcc4ZirN9//10vv/yybt68afVY8fHx+vzzz9PsMp2au3fvaujQoXrzzTfTLKxOyYoVK9StWzcdOXLE7jweNn36dA0cONCqotF/O3TokHr06JEuRej22Ldvn9asWePQ/jI5OVnLly9X165dXVaEmp7c8XjOFecJkyZN0htvvKFr167ZvO7D7t696/AYtjp37py6du2q3377za7C7ZiYGH399dfq37+/UwuLVqxYoeeee86qCcf/duHCBT333HM6dOiQ03Kx1sqVK03j3bt3z+BMsiazCXZPP/20vLy8LGJmk+zc8Vgrpc9LtmzZMjgT93Hs2DHT340qVapk95iVK1c2xOLi4jL1JHJbJij9/vvvDt/d69q1axoyZIjGjBnjlCYK9509e1bPPPOMNm/e7NA4WfUcU7p3/tGpUyctWbLErvXDwsI0fPhwvfPOOy77DSAjxMbGqm/fvpo+fbpDv3euW7dOnTp1svs9eenSJQ0YMEBjxoyxOwczX375pYYPH27zcdY///yj559//pGeTAQAANwfRd8AAABAJnf/Av3Dtyj19/fX448/rjp16qhy5cqp3jp63Lhx2rp1a3qn+sjYt2+fnnvuOZ07dy7FZUJDQ1W5cmXVqVNHjz/+uPz8/EyXW7lypfr16+fwRYakpCS99tprhlvD+vr6qlSpUqpdu7aqVq2qfPnypTjGvHnz7L7o+9lnn+nLL79MtSNogQIFVKFCBdWtW1eVKlVSkSJF5OHhYdf27luzZo369u2bYkGZp6enihUrpmrVqql27doqVaqUvL29TZedMWOGhg4d6lA+jvjuu+/07bffpnixMCgoSGXKlFHt2rVVunTpFG9tHRMTo8GDB2vZsmXpma5baNu2reGzZVb0YObOnTtatWqVRax169by9/d3Wn7IWKNGjdLq1astYp6enipSpIhq1qypypUrK2/evCmuv2zZMn344YfpnabB+fPn9eyzz+rAgQMpLpM/f35VrFhRdevWVdmyZVN8n+7evdu0+NZV5s+fb9inlStXztBpUjIWgktyy+6Tjjh37pz69euXYndjLy8vFS9eXLVq1VKVKlVUoEABwzJjxoyxu7ghNfHx8Ro4cKDheDNHjhwqV66c6tSpo3LlyqV4PHP69Gm9//77D/69ZMkSffTRRxZ/fw8PDxUtWlTVqlVTjRo1FBoammI+o0ePNuRijdjYWA0YMCDV905wcLDKli2runXrqmLFisqdO7fpctevX9dzzz2X6mfTWgsWLNBnn31mKLYIDQ1VlSpVHny3P1ygd9/Fixc1bNgwpxYUpYeQkBA9/vjjqlGjhurVq6eKFSumut89f/58qp+JzMgdj+dccZ6watUqffXVVyk+HhAQoLJly6pWrVqqX7++KleurOLFi8vHx8fqbaSnS5cu6fnnn9epU6dMH/fw8FDhwoVVo0YNValSRfnz509xrI0bN6pfv35O6ZS6efNmDRkyxFD8mS9fPlWsWFF16tRRmTJlUnwdw8LC9NZbb2VoJ9/4+HjTCWAlSpRQ2bJlMyyPrOrixYumv/WYFXi3a9fO8D1z5swZhydtO9v58+cNMV9f30e6K/zRo0dN44899pjdYxYrVsz0uM6ZE94yWkrHE7ly5bJ6DB8fHxUrVuzBuVeNGjX02GOPpfr9NHHiRP30008252smMjJS/fr1M9zlxc/PTyVLllTt2rVVqVKlVI+vpKx9jnno0CH16dMnxUll3t7eKlasmGrVqpXqsb4kLVy4UIMHD3Z5A4j0MnToUMPxn9k5WUq/k0rS+vXr9corr6RYWO3r66sSJUqodu3aKl++vHLmzJniWBMnTtRnn31m13N52Pfff6/JkydbxP793GrVqqXixYunuP6hQ4c0cuRIp+QCAACQHlI+QgMAAACQKYwYMcLiAk+jRo3Up08f1ahRQ76+vg/iycnJ2r17t7755hvDD7rJycn68MMPtXTpUnl6ms8N/eijjww/4Jp13po1a1aq+aZWLJAV3Lx5U4MGDTK92FGiRAn17dtXTz31lOECTExMjNatW6exY8caOidt3bpV48aN0+DBg+3O6/vvv9f27dsf/LtatWrq37+/6tWrZygmOXLkiMaNG2facW3kyJFq3ry5AgMDrd72jBkzUuzIWbx4cb344otq1KiRafFaZGSkDhw4oL///lvLli2zqRPgyZMnTYseJKlixYrq27evnnjiCQUHB1s8dufOHa1cuVJjx441dAD9888/VatWLXXr1s3qPJxh48aN+uGHH0wfq1Onjvr166f69etbXIiJjY3V6tWrNW7cOJ08edJincTERA0bNkzly5dX0aJFTcft2rWrnnzySYvYJ598Yuj+9+GHH6pChQop5p7S+BkhR44catasmcUtlZctW6YPPvggxSKq+xYvXmzoGtm5c+d0yTOzGTdu3IPP1cGDBzVixAiLx8uXL6+PPvoozXH+/R2V3rZu3WqxD/T391f//v3VqVMnw77n0KFDmjFjhubMmWMYZ968eXriiSf09NNPp3vO0r3P8aBBg0w7+BYoUEB9+vRR8+bNDcWxcXFx2rp1q77//ntDx+hjx47pk08+cXoXLVslJyebFgiaFSFJ9wqR/ve//1l0Uz1z5ox27NihmjVrpleaGSY5OVnvvvuuaTFKSEiIXn31VbVu3dowie/UqVOaM2eOxZ1FPvnkE+XJk8ep+Y0bN0579ux58O8mTZqob9++qlatmkWBWExMjBYvXqwxY8YYnsvy5cu1detW5cuXT++9996DeO7cuTVgwAC1bt3acHx08uRJffPNN4Zjkvj4eH366ac2d/weMWKENm3aZIj7+/ure/fu6tChg8qWLWuYdHbw4EFNnTpVixYtsijWjYiI0FtvvaX58+fbPSnoxIkTWrp06YN/58qVS/3791fr1q1VsGBBi2Vv376tOXPmaPz48YaOjFu2bNHChQtT/AxJlsfpa9euNRxbNGrUSIMGDUozZ2uPA4sVK6amTZvqiSeeUNmyZVN8X167dk0rV67Ur7/+aiiivXLlioYNG6YJEyakuq1/n6tcv35dr776qsXjefPmdfndjVxxPGeNjD5PiIuLMy3o8ff313PPPaenn37adPKPdO+zf+rUKe3cuVNr1qzRli1bMrRAWbpXJP/f//5XV65cMTzm7++vl19+WR07djQcX5w4cUKzZs3SjBkzDJ3Bd+/erdGjR+vjjz+2O6+bN29qyJAhD74L/P391bt3b7Vr104lS5a0WDYqKkp//fWXvv32W8Pk2FOnTumnn37SK6+8Yncutjh+/Lhph1mzLsOwndkEuzJlypgW1OfNm1f169fXhg0bLOLz5s1TjRo10jVPa129etWwL5Skxx9/PMXfsh4FZg0HAgICHDoe9PDwUJEiRQy/T5kV3WcWKRU4p9Ykw8/PT/Xq1VOTJk1UpUoVlSpVyrTAOy4uTvv27dO8efO0cOFCQ8OD7777TnXr1nV43/a///3P4u9duXJlvfzyy3riiScM39lnzpwxnVTjinPMfPnyWRyHzp4923C+/cwzz6hr164pPPP/k9rfKzo6WoMHD1ZERIThsdy5c+uVV14xPafat2+ffv31Vy1cuNCw3sqVKzV58mS99NJLaebmiEGDBuk///mPRezVV1813AVo3LhxqRb1ly5d2qrtLVu2zOLznT9/fg0aNEjNmjUz7Dtu376thQsXGt77165d09tvv23aqKRIkSJ69dVX1axZM4tjw6SkJG3btk1TpkzR2rVrDetNnz5d1atXV5s2bax6Hma2bNliMWEpNDRUAwYMUNOmTQ1F/levXtX06dM1depUw/OYN2+eunTpkuLvDRn1vgYAADBD0TcAAACQyd2/QJ8tWzZ99dVXatGihelyHh4eql69un755RcNHz7cUGh15swZ/fPPP4Yiz/us/dG4atWq1iefxSQnJ+udd94x/CDv4eGhQYMG6dVXX03xQmT27NnVqlUrNW/eXJ988omheP6nn37SU089pWrVqtmV2/33iZeXl4YPH67nnnsuxWXLli2rcePG6bvvvtP48eMtHgsPD9fixYsNFyJSsm/fPtPOKJ6ennrrrbfUu3fvVDvGBAYGqm7duqpbt66GDRumZcuW6bfffktzu3fv3tXgwYMNBQQ+Pj5677331KNHjxTXzZEjh7p06aI2bdpo8ODBWrNmjcXjI0eOVL169VSkSJE083CGsLCwFLt3Dhs2TC+88IJpR/Rs2bKpTZs2atq0qT799FPNnj3b4vHo6Gi98847mjFjhmnn0AIFChiKVcyKeEqXLu3Wn/vOnTtbFH1HRUVp+fLlqRbFScaO4MWKFcsShaXOUL58+Qf//3BhvHTvfeJu74l/F7MVL15cP/30U4oFcuXLl9fnn3+uli1b6vXXXzd03vziiy/UoEGDVDtUOcvnn39u2s24W7du+uCDD1IsnPf19dWTTz6pJ598Uj/88IO+/fZbi8cXL16spk2bOnQh1VHbt283FI14eXmlWFCfP39+1atXTxs3brSIz58/P0t8Nn/77TfTTpq1a9fW2LFjU3y/lSxZUu+8847at2+vfv366fr16woLC1NYWJhT87tf2OHj46Mvv/wyxfdO9uzZ1bVrV1WvXl09e/Y0FH5PmTJFUVFRD76f69atq3HjxqXYnbNUqVIaN26cPv30U/36668Wj23btk0nT55UqVKlrHoOixYt0ty5cw3xatWq6bvvvku1E2+FChX01VdfqV27dnrjjTcsji/OnDmjL7/80u5izf379z/4/wYNGujbb79N8fXIlSuXXnrpJdWrV099+vQxTDKcOXNmqt9v/943m3UoDgkJcXj/7enpqRYtWqhv375Wj5UvXz717NlTXbt21XfffadJkyZZPL5mzRrt2rVL1atXT3GMf5+rXLhwwfC4r6+vS7+bXHU8Z42MPk/YvHmzYWJlSEiIfv311zQ/zz4+PipTpozKlCmjZ599Vrdu3dKsWbNS7dLpbJMmTTLdX5cpU0bjx49X4cKFTdcrXbq03nvvPbVt21YDBw7UrVu3LB6fOXOmGjdurEaNGtmV178LYcuXL68JEyakuF8LCAhQt27dVK9ePfXq1ctQ+Ddr1iwNGDDA7veULR6eUHpfpUqV0n3bWZ2tE+wkqVOnToai72XLlun9999Pc9JsRpgyZYppvEGDBhmciXsxK951RsOF/PnzG4q+L1686PC4rnDu3DkdP37cEC9VqpQCAgIM8UKFCql3797q1q2bVZPdfH19VbNmTdWsWVPPP/+8Xn31VYvjkYSEBH377bf6+eefHXoe//57/Pe//1W/fv1SvENe8eLFTTsZu+Ic8+HjsIf3M9K936AcPVYbNWqUzpw5Y4jXq1dP//vf/1IsrK1cubK+/PJLtW7dWm+++aZiY2MtHv/uu+/05JNPpusdKIoWLWr4jcLsb1GuXLkUjzVs8e/3UsuWLTVq1KgUJ7HmypVLvXv3NsSHDx9uet759NNP69NPPzUdz9PT88HvvH/88Yc++ugjQyf1jz/+WDVq1Ej1/Cw1O3bsePD/HTt21Keffpri+zp//vz673//q1q1aumVV14xFH7/9ttvKf7ekFHvawAAADOP7rRnAAAAIAvx9PTUhAkTUiz4fnjZESNGmP7wb8stuWE0b948QzGaJH366ad6/fXXreo85eXlpREjRhg6CicmJur77793OMfPPvss1UKOf3vjjTdUq1YtQ9yW98mHH35o+MHc29tb//vf/9SvX79UC74f5unpqTZt2hiKvsz8+OOPhlsce3l5afz48akWfP9b9uzZ9f3336tevXoW8ejoaEMxUnqaPHmyaYfzt99+W717907xAt99fn5++vTTT00LKXfv3q0lS5Y4LVd3VL9+fUPxulnR378dP37coghPulcAgcwvT548mjx5slUdURs2bKhvv/3WsO++efOmfvzxx/RK8YEtW7bojz/+MMQHDBiQ6kXLhw0cONDQ8VaSyzvePjyxQpKeeOKJVDsSmhUpLV261FCYn9nExcWZ/j3uF+1ZM8GgbNmymjp1qk134rDHN998Y9VkgVKlSuntt982xNesWfPgjjPVqlXTTz/9lGKB878NHTrU9HO7YMGCtJPWvY7cZkXZderU0fTp060uKGjYsKHGjx9v2C/Mnj3btOuvLerXr68ff/zRqtejYsWKGjp0qCG+Z88e02LujNS5c2eNHTvWruIGX19fvf3223rxxRcNj9na1d3dZIbjuYw6T/jnn38MsbffftvqCRz/FhISooEDB9pdKG2r8PBwQ7G7dK+b5eTJk60qwqpataomTpxoWgg1cuRI04kBtnjsscf066+/WrVfK1KkiL744gtD/OrVq6Z3RUgPKXUNTs/COncwbNiwBxMY7Plv1apVaW5j27ZthkkwqU2wk2ToyCrdu/vW8uXL7XuiTrRx40bT7wIvL69H/o5MD08ikeSUu76YjWG2rczg+++/N92/1q9f33T5mTNn6sUXX7Tr2LpcuXKaNm2a4Rh+06ZNpp3q7fHWW2/ppZdeSvP44WFZ+Rzz1KlTps+tUqVKGj9+vFWdlBs3bqxvv/3WMOkpPj5eX375pdNydSeNGzfWN998Y/NdizZs2GBa5NykSRN9+eWXVo3XrVs3ffjhh4Z4eHi4U95LnTt31ujRo616Xzdq1Mi0m/vKlSsNdz4FAABwBxR9AwAAAFlAv379DIWpqfH19VW/fv0M8V27djkzrUdKcnKyacee7t27W3Ubx4d98MEHKlSokEVs48aNDhXytG3b1uaLoYMGDTLEDh48aNVt1Dds2KDDhw8b4gMGDFDr1q1tysMWMTExmjFjhiH+5ptvqmHDhjaN5eXl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kCF255YVlSxZUv379zfEz549q169eqU58SE8PFxvvfWWFi5caHisfPnypvsyd5ce72sAAICUeKe9CAAAAAC4ty5dumjatGmGC7+bNm1Sy5Yt1bZtW9WuXVt58+ZVQkKCbty4oT179mj16tW6cuXKg+VLliypp556Sj///LPduQwbNkynT582FLecPXtW/fr102OPPaYWLVqoevXqKlGihIKDg5U9e3ZFRUUpIiJC165d09GjR3X06FFt3rxZp0+ftjsXd5AzZ0598803ev755w0Xozds2KDNmzerSZMmatSokapWraqQkBDlyJFDUVFRun37to4ePar9+/fr77//ftCZx+x2mWa++uor9ezZ01Acc+DAAXXv3l1VqlRRkyZNVKNGDRUpUkQ5cuSQr6+vIiMjFRERocuXL+vo0aM6cuSINm3a5JRbctrD09NTo0ePVvv27Q0FaatXr9auXbvUqVMnNW/eXEWLFlVwcLBu3bqlEydOaMmSJVq0aJFpgVPJkiX19ttvZ9TTgIm+fftq7ty5hk5qixYt0ubNm9W2bVtVr15duXPnVmxsrK5fv67t27drzZo1un379oPla9eurYIFC5peLMsILVu2NHTDXrhwoU6dOqU2bdqoVKlSCgwMNFzw9vX1Vfny5TMkx06dOmnZsmWKjo5WdHS0hg4dqjlz5qhz586qUaOG8uXLp/j4eF2+fFnr1q3TnDlzdPbsWcM43t7e+vTTTzPs4n3fvn117Ngxw9/2xo0bGjx4sEJDQ9W6dWvVqFFDjz32mIKDgxUQEKCYmBhFREToxo0bOnbsmI4cOaIdO3bo0KFDGZK3JB09etT0Qm96FCFJUpMmTeTv728oxpg3b16q+zp3+hwOHTpUhw4d0t69ew2PrV692qqOyUFBQRozZow++eQTw2Oeno92/49q1arp448/1vvvv28Rj4+P17fffqtJkyapTZs2qlmzpipWrKhcuXIpR44ciouLU0REhMLDw3XixAkdPXpU+/bt0/bt200L7TKTli1bGo57J0yYoL1796pZs2YqVqyYAgICDO+dwMBAQyc7T09PvfzyyxoxYoRFPDIyUi+++KJatWql9u3bq2LFisqZM6eio6N17do1bdq0SX/++acOHDjwYB0PDw+99NJLDnVrbdGihWHiydatW9WxY0e1a9dOjz/+uIKDgw0TASSpatWqdm83JRzPGW3cuFEbN25UtmzZVK9ePVWuXFkVKlRQsWLFFBwcrKCgICUkJCg8PFynTp3S5s2bNW/ePNOC3dq1a6tx48YZknf9+vX13HPPGbqNR0REaMiQIfr999/VsWPHB8cXSUlJunLlijZu3Ki5c+eaFu5L0nvvvffIFFWm5YUXXpCvr68+/fRTQ/FhTEyMfvnlF/3yyy8qU6aMatasqccee0wFCxZ8sL+Kjo7W1atXderUKe3atUv79++3uktvZmNWcF2pUiXD3S2cwdfXV82bN9fcuXMt4gsXLtTgwYNdUtz6yiuvaNWqVRax+92+P//88wzL4/nnnze9O1Baxo0bp3HjxqW6zMiRI9W5c2erx3zttde0YcMGwx0VNm7cqNatW6t3795q3LixihYtKg8PD128eFEbN27UlClTdPHiRcN45cqV0+uvv2719jO7Tp06afz48Ra/FUrS0qVLtW/fPvXs2VNPPPGEihQpIh8fH928eVMnTpzQypUr9eeffyomJubBOrVq1VJycrJNd4LICO5wjunr66smTZpo+fLlFvEPPvhA69evV4MGDVS4cGH5+/sbJlqFhISoaNGipuN27dpVa9as0d9//20Rv3r1qvr06aMmTZqoXbt2qlSpkvLmzavY2FhdvnxZa9eu1Zw5c0zvJuHh4aFRo0aZTnp51L3yyitav3694bz/5MmT6tatm1q3bq22bduqTJkyypMnjyIjI3XhwgWtXLlS8+bNM5306Ofnp6+//tpQPJ0ZpNf7GgAAwAxF3wAAAAAyvWzZsunzzz/XCy+8YLiYGxkZqVmzZmnWrFmpjpE3b179+OOPDhdN+vr6avz48Xr99ddNO9AdP35cx48fd2gbmU21atX0zTffaPDgwYbiqISEBK1YsUIrVqxw+nZz5MihqVOn6qWXXjItPNy7d69pYZ07Cg0N1dixY/Xyyy8bCn7CwsI0ZcoUTZkyxerx8ubNqx9++EHZsmVzdqqwQe7cufX+++/rv//9r+GxGzduPChoSU3JkiX13Xff6csvv0yvNNPUrl07jR071lA0u3///lRv7RwaGmpVEaszFCpUSJ988olFYdz27du1fft2m8b56KOPTLvHphcPDw998cUX8vLyMu2affHiRU2aNEmTJk3KsJysZZavt7e3WrdunS7by5Ytm5o1a6Y///zTIv7nn39qyJAhKRYiudPnMHv27Jo0aZIGDRpk83tTuve998MPP6h06dKmHfr8/f0dyi8r6Nq1q5KSkvTJJ58YXqPIyEj98ccf+uOPP1yUXcbr3r27pk+fbjg+27x5c6rduWvXrm0oeJWkbt266a+//tLOnTst4klJSVqyZImWLFliVV6vvfaaatas6VDRd8OGDVWsWDHDBJ6TJ0/q22+/TXXdo0eP2r3d1HA8Zy42NlZr1qzRmjVr7Fo/X758+uKLLwzFM+npnXfe0dmzZ7V+/XrDY9u2bbO5+PPFF180vXvVo6xHjx4qVaqUhgwZkmJn7vuTpe1VoEABNWzY0O71Xe3IkSOm57np2fW+Xbt2hqLva9euaePGjWrUqFG6bTcl5cuXV+PGjQ37j4ULF2rAgAGP5EQKPz8/ff/99+rZs6ehcPnmzZsaM2aMxowZY9VYBQoU0Lhx4+Tr65seqbolX19fffLJJxo4cKCSkpIsHrt48aLVx/sFCxbUmDFjTM8xXM1dzjGfe+45Q3FscnJymr8RdurUSaNGjUrx8dGjR+uFF14w3T9aO5H2395//33Vq1fPpnUeFT4+Pg/2Nw9PGklISNCiRYssOt+nxdvbW//73/9UqlQpZ6eaYdLrfQ0AAPCwR7u9CwAAAIAso2bNmvr222/t6gRSvHhxTZ8+3WkdNfz9/TVhwgQNGjTItHugI9zt1rDWat68uX799VeFhoZm6HZz586tGTNmqHv37k4d18PDI8P/FvXr19fUqVOVN29eh8YpW7asfv/9dxUvXtw5icEh7dq104cffmhXoVKVKlU0ffp0hYSEpENm1gsODtbnn3/u9l2E27dvr+HDh9v1Wnt5eenDDz9Ut27d0iGz1Hl7e2vkyJH68MMPlT17dqePnR7uX+B9WN26ddP1/WpW5HS/ECk17vQ5vD9hadCgQfLz87N6vRo1amj27NmqWbOmpHsdZx9m7Z0ysrru3btr6tSpKlSokFPHzYzd6IoXL6533nnHaeP5+Pho3Lhxhi7gthg4cKBeeeUVh3Px8vLS119/7XaFahzPOVfp0qX1+++/Z3hhp6+vr77//nt17drVoXG8vLz0zjvvaOjQoU7KLGupXbu2li5dqhdeeMGp+9igoCANGTJEy5cv15NPPum0cTOaWbGmp6dnuk2wk/TgDmrW5JJRBg0aZIjd7/b9qCpcuLCmT5/u0Pdx6dKlNX36dBUuXNiJmWUOTz31lIYPH273+W3RokU1ZcoU5c+f38mZOY87nGPWrl1bvXv3duq2pXv7+GnTpjl8B5Bs2bLp66+/1nPPPeekzLKmggULaubMmapSpYpD4+TMmVOTJk1Ss2bNnJSZa6TX+xoAAOBh7n01DgAAAABs0Lx5c/3222+qVq2aVcv7+vrq+eef17x581SiRAmn5uLt7a033nhDf/75p1q2bOlQgXCBAgX00ksvacmSJapUqZITs8xYVatW1eLFizVgwAAFBgbaNUaJEiX0xhtv2LRO9uzZNWLECM2aNUtPPPGEXdu9r3jx4nrjjTe0evVqlxTa1qhRQ4sXL1b37t1tLnwICgrS66+/rtmzZz+SF27dWc+ePfXTTz9ZfVHe399fr7/+umbMmKE8efKkc3bWadasmX7++We3f2+98MIL+vHHH226AF+iRAlNmzZNPXv2TMfM0tazZ08tXbpUXbp0caiIMVeuXOrZs6dmz56tli1bOjHD/7N27VrdvHnTEG/btm26bO+++vXrK2fOnIb4wx0pzbjT5/D+McTKlSs1aNAgPf7446YF6bly5VLbtm01adIk/fbbbxbFn3fu3DEsb+93b1ZUu3ZtLVmyRK+//rpD3+d+fn5q2bKlfvjhBw0bNsyJGWacXr166X//+59y587tlPFCQkL0xx9/qF27djZNpChYsKDGjx+vN9980yl5SFLlypX1xx9/qEyZMk4b0xke9eO5IUOGqH79+g4V8QYFBemtt97S/PnzM3xS6X2+vr767LPP9MMPP6hkyZI2r1+zZk3NmTNHffv2TYfsso6goCANHz5cf//9twYMGGD339vT01P16tXT6NGjtX79er388suZukt+fHy86QS7mjVrpmuhqZeXl1q1amWIr1692nDXn4xSuXJl0+L9hQsX6vz58y7IyD0ULVpUf/zxh3r37m3T/tbHx0d9+vTRH3/84bTGCJnR888/rwkTJtg0ScvDw0OdO3fW7Nmznf4bY3px9TnmsGHDNHz4cKefpwQGBmrChAn64osvVKBAAZvXb9KkiRYtWqR27do5Na+sKn/+/Prtt9/0zjvvmJ6Pp8bLy0udOnXSkiVLskxH9fR6XwMAAPybR3JycrKrkwAAAACQOZldoJ48ebILMjHasmWL1qxZo+3bt+v69eu6ffu2PD09FRISoscee0z169dX27ZtlS9fvgzJ58qVK1q2bJn++ecfHThwQLdu3TJdztfXV8WLF1fJkiVVvXp11a9fX4899liG5JiRIiMjtWLFCq1evVp79uxJ8ZbduXLl0mOPPaY6deqoYcOGqly5ssPbPn36tJYvX67Nmzfr0KFDpoVx0r1i8RIlSqhUqVKqVauW6tev71a3h7569aoWLlyodevW6cCBA4qNjTUskyNHDlWtWlVNmzZV27ZtHe7y+uWXXxpuof7222+rbNmyDo2LexITE7V+/XqtXbtWu3fv1q1btxQWFiZvb2/lyZNHZcqUUYMGDdS2bVvlyJHD1emaSkpK0ubNm7V+/XodPnxY58+fV2RkpKKjo5WQkGCxbGhoqM23VrbG2LFjNW7cOIvYq6++qtdee+3Bv+/evauFCxdq6dKl2rVrl+Hzky1bNtWsWVMdOnRQmzZt0q0jtr1u3bqllStXav369dq/f7+uXr1qupy3t7eKFCmiUqVKqUqVKqpfv77Kly+f7l3Z16xZowMHDhjivXv3Tvdu00uWLNHJkyctYn5+furfv79V67vr5zAmJkaXLl1SVFSU/Pz8lDt37hSLzSMjI1WzZk39+2dfX19f7d692+3ey+4gLi5O69ate3BMcubMGSUlJRmW8/DwUP78+VWqVClVqFBB9erVU40aNWzqyO7O4uPjtXbtWm3evFmHDx/WxYsXFRUVpejoaMPrUbt2bU2fPj3NMY8cOaIZM2bon3/+MdzyXbrX0a9mzZpq2bKlWrVqZVFsdPXqVa1cudJi+fz586t58+Z2Pb9du3ZpzZo1OnTokE6fPv3guyk+Pt6w7MPHOunJFcdz7iIyMlI7d+7U7t27tW/fPp0+fVpXrlwx/fx5enqqWLFiqlChgpo2baqmTZu61WcvKSlJGzZs0NKlS7Vt2zbT97unp6dKliypevXqqV27dg53xHyUHTx4UDt27NCBAwd07tw5Xbp0SZGRkbp79658fX2VI0cOBQcHK1++fKpYsaIqVaqkqlWrumyy5J49ewyxokWLOjTp6MqVK5o9e7YhXqdOHdWuXdvuca1x6tQp/fXXX4Z4mzZtVKpUKUP8xIkTioyMtIiFhIQ4taD4xo0bunDhgiFeuHDhDPm7mz1HZ3H0vSLd+66ZPXu21q5dqyNHjhi++3x8fFS2bFk1btxYzzzzjNt0qD537pzht7PAwECHOpjb6u7du5ozZ46WL1+uPXv26O7duxaPe3l5qXTp0nryySf1zDPPGIq9V65caThXa968udu8xv/mynPMmJgYrVixQjt27NCRI0d0+fJlRUdHKzo6Wg+XsnTq1EmjRo2yeuy4uDj9/fffWr58uXbs2GH6+6O3t7cef/xxPfHEE+rQoYPb/A47dOhQ3bhxwyI2evRot5n8byY6OlrLli3TypUrtWvXLtMJQb6+vqpQoYKefPJJdejQIdNOZExLer6vAQAAKPoGAAAAABeIjIzU1atXFRMTIw8PDwUEBCggIEAhISEOdQXPrP79enh6eiogIEA5c+ZUcHBwum87LCxMN27cUExMjLy8vBQQEKCgoCDlypXLpg6VrpScnKxr167p9u3biouLk5+fn/LkyeO0rp1AZmJN0fe/JSUl6fLly7pz546SkpKUI0cOhYaGpnthtDPFxMToypUrDy4e+vv7P/hOcaSTKjKnzZs3G24pXalSJc2ZM8c1CWUy8fHxunr1qiIjIxUXF/fg85QzZ05lz57d1ellWmFhYbp165aioqKULVs25c6d2yV3TXFnHM/dK8y6ceOGoqKiFBsbq2zZsikwMFC5cuXKVF2Zo6Ojdfny5QfneoGBgSpYsKBDXVQBwBni4+N1+fJlRURESLrXTb9QoUJMDLRCXFycbt68qbCwMCUnJz/Yt2fV862seo4ZERHx4PdHLy8vBQUFqWDBgnwG0smtW7d048YNxcbGysfHR8HBwSpQoECm+r0FAADAHXH0CgAAAAAuEBgYyG0e/8WVr0fOnDltvv2ou7nffdQdu0UB7s7T01OhoaEKDQ11dSp2u39nAkCSli1bZohVrFjRBZlkTj4+Plm225wrZYXjrfTG8dy9zo+FChVydRoO8/f3N+14DACu5uPj49Qu648SX19fFSxYUAULFnR1Khkiq55jBgUFZZm7pmQGISEhTPQEAABIB0yhAwAAAAAAAIAsIDw8XH/++achXrNmTRdkAwAAAAAAAAAAnImibwAAAAAAAADIAj766CNFR0dbxIKDg9W8eXMXZQQAAAAAAAAAAJyFom8AAAAAAAAAcAN//fWXEhMTbV4vOTlZY8aM0dKlSw2PdezYUX5+fs5IDwAAAAAAAAAAuBBF3wAAAAAAAADgBt5++221adNGv/76q27evGnVOgcPHlS/fv00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l8/nO+Lampoa/f73v1dtbW1AffTo0erYsWPEe41na/aut7ymdwihb1Oh3WBB6BsAAAAAAAAAAAAAAMC6mTM/kd/vD6j16zdAHTt20rBhI4KuX7hwnkpKdrdUewAAIESOWDcQim+//VarVq0KmMqdnJysZ555Ruecc06T6+12u3JycpSTk6OePXtq5MiR+t///V9NnTpVf/rTn1RdXS2fz6cpU6Zo+fLl+stf/qKUlPgKjHbv3l3jx4/X3/72t4D6nXfeqXvvvVdXXnllg+HpmTNn6u6775bHExiYHTVqlAYNGhTVniXpk08+0T333BP0xnHkyJF68sknZbfbo96DJN1333269NJLA16HWbNm6bbbbtMTTzyhNm3aBK3Zvn27fvWrX2n58uUB9ezsbP3mN7+Jes/xpM5Xpw37N1tak2xPVrfMzk1fGOJQ/WSjztL5csbXv2EAAAAAAAAAAAAAAIBY+PTTj4NqB8PePXoco+OO66V169bUf83v92vmzE907bXXt1iPsVJevl8rV67Q9u2FqqqqktPpVFZWtrp27a5evXrL4YhdvK6mpkarV6/Utm1bVVFRIelAbumYY47Vscceb7m37duLtH79Wu3evVs1NdXKzMxSbm6e+vUb0GB2KpK8Xq82bFinwsJt2rt3j2pra5WamqY2bdooP7+tevfuI5fLFdUeDldUVKh169aqpGSXamtrlZGRqezsNjr++F7q2LFTi/bSXNXVVdq6dYsKCwtVUVGu6uoq2e12ZWZmKiMjS127dlO3bt1j3WbM1NXVad26NSos3KZ9+/aprs4tl8ulrKxsderURccf30vJyckt2pPX69WaNau0ZcsmlZWVSZKys9soLy9f/fsPUGpqWsTPdLvd2rx5Y/33lKqqSklScnKyUlJSlZ/fVu3bd1CHDh2DBhQjfiRE6Pudd96p/9w0TRmGoccffzykwHdjkpKSdM011+icc87RbbfdpnXr1kmSvv/+e/3617/WlClTAqaKx4MJEyZo/vz5Wrp0aX3N6/XqoYce0quvvqrhw4erS5custvtKioq0qxZs7R27dqgfbp27aoHHnigRXq+6667GpymvW7dOo0ZM6ZZe0+YMEHnnXdeSNcef/zxuuuuuzRx4sSA+jfffKOhQ4dq+PDh6t27t3Jzc7Vr1y4tWbJEX3zxhbxeb8D1hmHoiSeeUG5ubrN6TzQbyjbL6/c2feEhjm/TU3Zb06H+UDLfdvnkNPxNX3gIJn0DAAAAAAAAAAAAAICj3bJlS1RUtC2g5nIl6dxzz69/PGzYiIDQtyR99tnHzQp93377zVqyZHFA7S9/eV4DB4Y3pPLll1/Qq68GDsu8/vqbdOONt4S13w8/zNF7772tH39cGDTM8qC0tDSde+75uuqqcercuUt9feLEB/XZZ4FB+nvueUDDh49q8txQ1q5cuULvvPO6fvhhjurqGh6SmJubq9GjL9NVV12rpKTGw6p1dXX65z+n6aOPpmnz5k0NXmO329W//4m65ZZfqm/f/k0+h1D5/X59991szZz5sebP/7fcbnej16akpGjQoMEaMeIinXnmkLDOW7x4oSZMuDWgduKJAzV58ov1j91ut/75zw/14YdTtW3b1kb36tSpsy6++FJdeukVIYfRL7tslHbu3NHo15csWawzz2z673+7du31j3/MOOI1NTU1+uGHOVq8eIEWL154xOdyUHZ2Gw0cOEhXXDHW8p9zQ39vDxfKc5OkqVP/qfbtOwTVP/10hh577KGA2oUXjtS99z4Ycp+HMk1T338/WzNmfKSFC+c1+m9JkhwOhwYOHKQRIy7S0KE/bXD4bihC+fddVFSot99+Q199NUtVVVWN9jNgwEBdf/3/6MQTB4bVy0Eej0dffPEvzZz5qZYsWdRglvNwLpdLxx/fSwMGDNTQoT/V8cf3alYPiKy4D32bpqlFixbJMIz6wPcZZ5yhCy+8MCL7d+rUSa+++qquvvpqbd26VaZpavbs2XrllVd04403RuSMSHG5XHr++ec1fvz4oDD3tm3b9Pzzzze5R8eOHfXyyy8rIyMjWm0GODw0fdDBkH1z7N+/39L148aNU2lpqV544YWAek1NjT744IMm19tsNj388MMaOnSopXNbg9V7rf959c49LrQLzaZj38mGp8lrDmcw6RsAAAAAAAAAAAAAABzlPv00ODz6k5+cFZAdOv/8YXruuWcCwoDbtm3V8uVL1a/fgBbps6Xs27dPjz/+sObO/a7Ja6uqqjRjxnT961+f6sYbb9HVV18X1d48Ho/+8penNX36P2Q2kafZs2ePXn75Bf3rX5/qySefUZcuXYOuWb16pR588F5t3150xL18Pp9+/HGRfvGLGzV27DW67bZfNet5SNKiRQv0pz/9n7Zs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Bw7sV0pKstLS0pSdnW249scf56h69RouneOspKRELV68UKtWrVRc3BalphozagEBAWratLk6deqsG27oqfDwKiXSW3HLzMxUXNwWbd68Udu2bdWBA/t14sTxfL//qlevqcaNG6tjx8669tpuZfLTC0rid7mXl0lVqnj2ufFI6Hv06NFFWr93715t3rzZJsR94WH4+vqqYcOGCg8PV3BwsHx9fZWSkqKUlBQdOHBAp06dyltzYb3ValVAQIBuuOEGm49TmDhxYpH6BEq70hD6HvPZPzp2Ji3f+x8MWaxon2MO7+dVtb6CBrzojtYAAADgQYRYAAAAgPzxehkAAADIX0UIfcNzjhyJ1y239LephYWFa+7cRZ5pqIzJycnR6dOnlJycrOzsLPn5+SkwMEihoaHlJuDtCampKTp37pxSUpLl4+OrSpUql+gbJ8qKs2fP6OzZs8rOzpK3t4/CwsJUpUqE3WHC5ZHFYtHZs2eUmpqqzMwM+fj4KigoSKGhlRQYGOjp9oqsooS+3TOr30lFCVNPmTJFv/76q01gu3r16urbt6969uypRo0aFfgRBGfPntU///yjOXPmaOXKlcrJyZHJZFJGRob27t2r9957T7Vq1XK5PwDu5W8yvuOrICYf1z+aAgAAAAAAAAAAAAAAAMjP778vMdSaNIn2QCdlk9lsVmRklCIjozzdSrkSFBRcJiczl7Tw8CrlZpK3K7y9vflEgnLAI6FvV7344ov64YcfJP03nfuhhx7S0KFD5ePj49Ae4eHh6tWrl3r16qWdO3fq5Zdf1r///iuTyaS4uDjdcsst+vLLL9WoUaPifCgA/r/CBs84Hfr2DSj8IgAAAAAAAAAAAAAAAMAJFotFv/zys6HeunVbD3QDAKiIvDzdgKM+/fRTff/997JarbJarYqIiNC3336rYcOGORz4vlSTJk301VdfafDgwXkf4XLmzBkNGzZMCQkJbuweQH4K+7BRZ0Pf8iH0DQAAAAAAAAAAAAAAAPf69NMPdezYUZua2WxWjx69PdQRAKCiKROh73379un999+XyWSSdH7M/KeffqpmzZoVeW+TyaRx48bphhtukNVqlclk0okTJ/Taa68VeW8ADihk1Lfzk779i9INAAAAAAAAAAAAAAAAyqHly5cqKyvLpbU//fSDvvvuG0O9U6erVbVqtaK2BgCAQ8pE6Puz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AAAAIE9o1aqtvv32G2u2avv2rTp+/JhKly5z03k3hsPvu+8BRUZGea1PfxMREaGKFStbx/Hxh2U2m63j6OgYFS1azBetGZw6dVIffzzaGko2mUyKi6upu+++R0WLFlNgYKDOnj2jjRvXa+vWLTbh5UmTvlZMTD516tTF673+8MMUffbZJzb10NBQ3XVXQ1WtWl2FChVWZGSkUlJSdPLkCW3ZstEQTJb+3il88ODX9MknnysoyPsR17/+2mwYm0wmValSzel1ChQoqGHDRuj//q+34eswatQIValSNccdtj/++APt37/PULvrrobq2fM5p3s5cuSwvvnmC+s4ODhYgwa9qcDAQKfXclXVqtV16tRJ63jr1r+UlZWV7QbHcAyh7zwgOTlZc+fONdSCgoLUt29fh9f497//re+++06XLl2y1tasWaPjx4+rdOnSnmrVrh9//NGm9sorryg0NNSh+XfffbcaN26s1atXW2tJSUlasGCBHnvsMY/1CQAAAAAAAAAAAAAAAAB5SbFixVWv3l3atGmDtTZ//q964YU+2c5JSbmq339faqi1atXWaz36o6pVq+vbb3+wjh97rI1Onz5lHTdu3FSDB7/lg86MfvjhO6WlpUmSSpcuo0GD3lTNmrVtjuvevacOHz6oESOGa+9e4y7bX3wxVnfffU+ONwK4Y8uWTfryy3GGWkhIqJ566hl17NhZUVHZ3VDQW3v37tH777+tAwf2W6vbtv2lr776TC+++IrXer7uxl3Jixcv4fJmtHXq1NVzz/U2vBapqSkaOnSAvvrqW4WGhtmdt3jxb/r119mGWqFChfXGG+84HZI2m8169923lJ6ebq317Pmcypev4NQ67qpYsZLhfSYl5aqOHo3P9T5uNYS+84DFixdb37iva968uYoWLerwGqGhoWrfvr0mT55sqM+dO1cvvviiR/q0JyEhQX/99ZehVrhwYbVo0cKpdbp06WIIfUvSvHnzCH0DAAAAAAAAAAAAAADAL2VkZuhy+hVft4EbxIREKzgw2NdteFSrVm0Noe+FC+fr3//une2uvkuXLta1a9es45IlS+nOO+t5vU8473pusFy58ho37mvFxsZme2yFChU1duyXevXVlwy7Z6elpenDD9/XRx+N90qPKSkpGjZssGF369jY/Proo/GqVKnyTWb+rWrVavryy2/12mt9tXnz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/+3SWp4WGGiMKJvNuf070SSTBwOSnlzLVYS+/dylS5dsahERES6vFxkZaVNLSkpyeb2b8XTv9ua603twcLDy58+v6Ohomc1mXbp0Kdv1MjIy9O6772rbtm0aPXq0X/zwekKBArbfDwAAAIC/KlgwytctAAAAAH6L62UAAAAgezldL5vNZl24EPj//z1LkhQYGKDAQNc+zT4oKEy96jypjMwMXUq/4tIa8J58IdF5fodvk8mkoCDb788CBfKradP7tHTpYmvtt9/mqlatWkpMTNT69esMx7dt287uOva+9wMC7J8zp3mBgQE5zrPnxnxWds/ZkXVyc152XH39oqOjXe4jJibGpnb1arJT6+XUt72MoKdlZKR79GvxT+Hh4TY1sznD4+erWrWKXn31dY0c+bbNY6VKldLQoW+5dM6tW7do5swfreOAgAANGfKWIiLCHJofEGCbg/Tk9/6NIffw8HCvfS0zMy26fhPX9XMULBipoKBbKyZ9az2bW1BKSopNLSzMsR9Ie0JDbT96IDXVO1vm21vXnd7tzXWm94iICDVp0kRNmjRRnTp1VL58eZsf6MTERG3cuFHTpk3T+vXrbdaYN2+eChUqpIEDBzr/BAAAAAAAAAAAAAAAAHDbCA4MVqHwAr5uA7eZNm3aG0LfS5Ys0v/9Xz/Nn/+rYVfjatWqq1Klyr5oEU6wF0p2fK5t3i4l5ao77di4cuWyR9fLbfZe37S0a14518GDB+zWS5Uqo8hI127mf++9d5WVlWUdd+3aTTVq1HRpLW+48bV05/sZfyP07ecyMjJsavaC246yF5y2dw5PuP4xIf8UEhLi8nr2nrcjvUdEROitt95SmzZtFBV18zfHwoULq2XLlmrZsqX++OMPvf7660pMTDQc8+2336phw4Zq3ry5c08AAAAAAAAAAAAAAAAAALzorrsaqFixYjp9+rQkKTk5Wb//vkzz5v1qOK5163a+aA9OcmdD19RU2/ByRESkO+3YCA0Nk9mcbB0XKFBQCxYs8eg5vCl//vw2tcuXPR9kX758qWbOnGb3sT///ENTpkxWjx49nV733DljtnHNmtXasMF2s9vs2Huua9as1JNPdjHUypQpq3fffd+p3tLT03XtmvF70N7rDecQ+r7N3PixF3np/K7OLVCggLp27er0vHvuuUczZ85U586ddebMGcNjH374oZo1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evbZZzV79mwVK1Yst9oGAABAHnD8+HE988wzunLlis1j+fLlU/PmzRUXF6cCBQrIYrHowoUL2rlzp5YtW6bk5GTD8adPn1aPHj00d+5cxcTE5NZT0AcffGA3fBITE6PWrVurYsWKypcvn06ePKn169dr7dq1hp0W09LS9NJLL2natGmqVq1arvUNAACA21ORIkVUv359ValSRQUKFFB0dLSSk5N15MgRrVmzxu7mIz///LMsFotL4XVP4JobAAB4Gjt9AwAAAABcMn/+fL366qvWcZ06dbR161ab43yx0/eMGTM0dOhQm/oLL7ygl156SSEhITaP/fnnn+rbt68uXrxoqDdo0EBTpkzxWq8AAADIe3r16qWVK1caaiaTSb169VLv3r0VHh5ud15KSorGjh2riRMn2jzWuXNnDR8+3Cv93mjNmjV69tlnbeodO3bU4MGDFRkZafPY3r171adPHx0/ftxQL1eunObOnWv3GhsAAAB5V3Y7fZtMJpUrV05xcXE6ePCg9u7da3jckzt9Fy9eXO3atVPbtm11xx133HTeH3/8oaFDhyohIcHmsVGjRqldu3Yu9+QKrrkBAIA3+ObzSwAAAAAAeVpiYqIhkBISEqIRI0b4sKP/uXz5ssaMGWNT79+/v/7zn/9k+4fxu+++W9OnT1d0dLShvmHDBs2bN88rvQIAACDvOXTokE3gW5IGDBigV199NdvAtyRFRESof//+6tevn81js2bN0uXLlz3aqz1ms1lvv/22Tb179+4aMWKE3fCJJFWtWlUzZsxQyZIlDfX4+HhNmjTJK70CAADAt64HvFu3bq0BAwZoypQp2rRpkxYuXKgxY8Z4bffpatWqady4cVq+fLn+85//5Bj4lqR77rlHs2fPVtWqVW0eGzVqlK5du+aNVu3imhsAAHgLoW8AAAAAgNOGDh2qpKQk67hPnz4O/eE9N3z//feG3iSpYcOGevrpp3OcW7ZsWQ0ePNim/tlnn4kPygIAAIAkLV261KZWvXp1PfXUUw6v8dxzzxl2MJSkjIwMu2FyT5s/f77i4+MNtQoVKuj111/PcW6BAgU0YsQImUwmQ33ixIlKSUnxZJsAAADwsbZt22rTpk1atGiRxowZo6effloNGjRQVFSUV887fvx4zZ49W//6178UEOBcrCkmJkaff/65wsLCDPVz585pzZo1nmzzprjmBgAA3kLoGwAAAADglFmzZun333+3juPi4ux+TKUvZGVlafr06Tb1//73vzZ/JM/Oo48+ahNgP3TokP7880+P9AgAAIC87fDhwza1li1bOny9KUkBAQFq3bq1Tf3IkSNu9eaIH3/80ab2yiuvKDQ01KH5d999txo3bmyoJSUlacGCBR7pDwAAAP6hQIECXg9429OiRQunrq1vVKJECT322GM29X/+TdvbuOYGAADeQugbAAAAAOCw06dPa8SIEdZxcHCwRo4cqaCgIB929T8bN27U6dOnDbW4uDjVqlXLqXU6d+5sU5s3b55bvQEAAODWcO7cOZuaK596U6FCBYfW9qSEhAT99ddfhlrhwoXVokULp9bp0qWLTY3rZQAAAPiLZs2a2dSOHTuWK+fmmhsAAHgToW8AAAAAgMMGDx6sK1euWMcvvPCCzcfS+9KqVatsag8//LDT69ibY29tAAAA3H6Cg4MdquUkJCTEpubozn+usndN27x5c6f7v++++xQeHm6obdq0SVevXnWrPwAAAMATSpQoYVM7f/58rpyba24AAOBNhL4BAAAAAA758ccftWbNGuu4atWqev75533Yka3Nmzfb1OrVq+f0OkWLFlXp0qUNtbNnz+ro0aMu9wYAAIBbQ6lSpWxqN37ajCPszSlTpoxLPTnK3vVy/fr1nV4nKChItWvXNtQyMjK0bds2l3sDAAAAPCUlJcWm5u0bLK/jmhsAAHgToW8AAAAAQI6OHz+uUaNGWcdBQUEaOXKkSzsaektmZqb27t1rqAUHB6tmzZourVe3bl2b2q5du1xaCwAAALeORo0a2dRWr17t9DorV650aG1P2rlzp03tzjvvdGkte9fL9tYHAAAActuxY8dsaoULF86Vc3PNDQAAvInQNwAAAADgpiwWiwYNGmTYHeW5555T9erVfdiVrZMnTyo1NdVQK1asmEJCQlxaz94ui4cPH3ZpLQAAANw67rvvPpUsWdJQW7JkibZv3+7wGlu2bNGyZcsMtUaNGqlixYoe6dEes9ms48ePG2rBwcE2z8VR9q6Xjxw54tJaAAAAgCctXLjQplarVi2vn5drbgAA4G2EvgEAAAAANzV58mRt2LDBOq5UqZJeeuklH3ZkX0JCgk2tRIkSLq9nb+6Nf7AHAADA7ScwMFDDhg2TyWSy1rKysvTiiy86FPzevHmz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AAAAbgH2PkHmn5804yx7c8PCwlxeLyeeul42m83atm2boRYcHOzWrucAAACAPZmZmXr99dc1f/58Q91kMuntt99Whw4dfNSZfVxzAwAAbwrydQMAAAAAAP8wePBgDR482K01qlSpYlPbt2+fW2s6o2nTpvrmm28MtUWLFqlXr15OrXPjR4ReXxsAAAC3N3s7cx8/ftzl9ezNLViwoMvr5aRJkyY2tWXLlmno0KEKCnL8fxmtWrVKKSkphlq9evUUGRnpdo8AAADAdVlZWerfv7/mzZtnqJtMJg0fPlydOnXyUWfZ45obAAB4Ezt9AwAAAABuGXfddZeKFi1qqO3cuVM7duxwap3p06fb1Nq0aeNWbwAAAMj77H3yy+rVq2WxWJxey2KxaNWqVQ6dw1NKly5tszNgYmKili5d6tQ606ZNs6m1bt3andYAAAAAg6ysLA0cOFBz58411E0mk4YNG6bHH3/cR53dHNfcAADAmwh9AwAAAABuGQEBAXb/2P/hhx86vMacOXN04MABQ618+fJq2LCh2/0BAAAgb7vnnnsUGBhoqMXHx+u3335zeq1ffvlFx44dM9SCgoJ0zz33uNVjTrp27WpTGzdunNLT0x2av2HDBpuwemxsrFq2bOmR/gAAAACLxaLBgwdrzpw5hrrJZNKbb76pzp07+6YxB3HNDQAAvIXQNwAAAADArwwYMEBVqlQx/DNgwACH5z/55JOKiYkx1P744w99++23Oc49duyY3n33XZt67969FRDAf0IDAADc7mJjY+2Gst98803t37/f4XV2796t4cOH29SbNGmi6Ojom84dO3aszfXyk08+6fC5W7durTJlyhhqBw4c0AcffJDj3AsXLmjgwIE2O5s/9dRTfMw8AAAAPMJiseiNN97QrFmzDHWTyaQ33njDbqDa07jmBgAA/or/Yw0AAAAAuKXky5dPr776qk195MiR+vTTT7PdTWX9+vXq3LmzLl++bKjXq1dPbdu29UqvAAAAyHv69etnc0Pg5cuX1aVLF82cOVMZGRnZzk1PT9fUqVP1xBNP6OrVq4bHAgMD7V7HelpQUJCGDBliU//uu+80ePBgpaSk2J23b98+de7cWQkJCYZ62bJl9eyzz3qlVwAAANx+3n77bc2YMcOmPnToUD3xxBM+6Mh5XHMDAABvCfJ1AwAAAAAAeFrXrl21du1a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vulrePXqVQ0cONDuzQO9e/dW3759c+xj1qxZGjhwoKH26KOP6r333stxrj0JCQl64IEHDLWSJUtq+fLlDs1/9dVXNX/+fJv6k08+qf79+ys4ODjbuenp6Xr33Xc1bdq0bI9xtJesrCx17dpVW7dutXmsf//+euaZZ24632KxaNKkSXr//ffd7kWSNm3apB49eigzM9NQr1ChgsaOHetQ6Hbnzp3q1auXzp8/b6g3bdpUX3/9tUN9uPr+mVueffZZrVmzxlC788479fXXXys6OtpHXeXMH97X/f1re92MGTP01ltvWX8WgoKCNHz48JsGVZOTkzV+/HhNmjTJ5lpE+jvkOmLECI/2ae+90Fe+++47NWzY0Gfnt/d7RpL1Jh1PGjlypL799lubetOmTTVy5EgVKlTopvMtFos++OADTZgwweaxadOm6c477/RUqx53+fJltW7dWj169FCbNm1uujN5RkaGZs2apffee8/wSRmtW7fWmDFjcqNdAAAAAADyHHb6BgAAAAAAwG1h/PjxdkNWrgS2pb8DXl9//bXq1avnbmtOuf/++5UvXz5dunTJWjt16pTWr1+vRo0aOb3enDlzbGrt2rXLMSj94osvOhymvlFkZKTef/99paenG3bBzMzM1NSpU/Xf//7XoXXS09P11ltv2V3/yy+/1F133eVUXyEhIercubM6d+6c7TElSpRQs2bNDLutm81mzZ49W7169XLqfBaLRTNnzrSp+3KX73968cUXHXpOkZGRGj16tC5duqQ///zT8Ng333yjbt26uRSI95Xt27fbDXy3b9/eoZ3oQ0JC9NZbbyk5OVnz5s1zq5fly5fbDXz37ds3x8C3JJlMJj3zzDO6du2aPvnkE7d6yczM1IABA2wC35UqVdKPP/7ocJi5Ro0a+u677/TYY48pNTXVWl+1apW2bdum2rVru9Wnr6Wmptr8HISFhWns2LF+HfiW/ON9PS9YuHCh3nzzTevNPwEBAfrkk0/UokWLm86LiopS//79VbVqVfXv39/mmmT27Nl65plncn3HcnjW4sWL7Qa+n376aQ0YMMChNUwmk15//XWdOHFCCxcuNDz23Xff+XXoW5LOnDmjDz74QKNHj1b16tVVrVo1lStXTtHR0QoJCdHly5e1b98+rVmzRmfPnjXMrV27tt5++20fdQ4AAAAAgP9zfusfAAAAAAAAII+ZOXOm3XCzJLVq1cqlNZ9++ulcD3xLfwdKW7ZsaVPP7vndTGJiov744w9DzWQyqX379jnOdTUY+M/5Q4cOVUREhKE+d+5ch9eYNWuWEhMTbepDhgxxOvDtjC5dutjUZs6cafemgptZt26djh8/bqjFxsbqoYcecqs/T6hWrZpefvllh48PCQnRe++9p/DwcEP9+i6eecn06dNtaoULF9Ybb7zh8Bomk0nDhg3LcTfXnNjbLTwuLk7PP/+8U+u88MILql69ulu9LFq0yOb7NSwsTJ9//rnTYeaKFSvafMKA9HeYMa+Lj4+X2Ww21Jo2bZonbnzwh/d1f7dx40a99tprhk976Nu3b46B739q166dXnjhBZt6VlaWzaebIG+5cOGChg4dalPv2rWrw4Hvf7L3yRI33lTizywWi3bt2qWffvpJo0eP1ptvvqmBAwdq5MiRmjVrlk3gu0OHDpo4caLNewgAAAAAAPgfQt8AAAAAAAC4ZSUnJ2vUqFF2AziSdN9997m0W2JoaKjTuzp70qOPPmpTW7x4sVJSUpxaZ+7cuTa79tarV0+lS5d2qz9HFSxYUE2aNDHUTp8+rTNnzuQ412KxaOLEiTb1xo0bq0OHDh7r0Z6mTZuqZMmShtqxY8ecDmLNmDHDpta+fXuFhIS41Z8nvPbaawoIcO7Px8WLF1ePHj1s6jNmzHA6EO8rycnJWrBggU39lVdeUWRkpFNrRUVFqU+fPi73cvr0aa1du9am3rdvX6e/NgEBAerbt6/LvUiy+/P21FNPufx+0blzZ5tQ/KJFi3T16lWX1vMXaWlpNrX8+fP7oBPfcOd93d9duXJFr732mtLT0621hg0bOn0ThiT16tXL7k0h69atc6tH+Nbo0aOVlJRkqMXFxWnQoEEurVeiRAnVr1/fULtw4YIOHTrkaoteFxYWpqeeekpxcXEKCsr5A6fDwsLUunVr/fDDDxo5cqSioqJyoUsAAAAAAPKunP9rGwAAAAAAAPAjycnJ2rp1q93HLBaLrly5ojNnzmjLli1asmSJrly5YvfYfPnyubTroiS1aNFCMTExLs31hNq1a6t8+fI6cuSItZaSkqLFixc7tEv3dfZ2B3dmvifUqFFDixYtMtS2bdumBx988KbzDhw4oKNHj9rUe/bs6cn27AoICFCnTp308ccfG+ozZ85Uo0aNHFrjwoULWrp0qU398ccf90SLbilRooTuuecel+Z26NBBX375paGWkJCgI0eOqEKFCp5oz6s2b95sc/NEWFiY3d31HdG6dWuNHDnSbhA4J5s2bTLsJiz9veP4vffe61IvjRs3VuHChe3ujp+T48ePa8eOHYaayWRSt27dXOpF+nt3+IceekhTp0611jIyMrR9+3aHf4780Y03hEjShg0blJmZqcDAQB90lPtcfV/3dyNGjNCpU6esY5PJ5PJ1REREhO6//37NnDnTUD948KBbPd6oVKlS2rdvn0fXhH1Hjhyx2andZDLp7bffdutmrjp16tjcDHD27FndcccdLq/pTSEhIdaQe3p6ug4ePKiEhASdPXtWKSkpMpvNioqKUkxMjCpVqqQqVao4FA4HAAAAAAB/47+iAQAAAAAAkKfs3r1bnTt3dmuNkJAQffbZZypfvrxL8xs2bOjW+T2hffv2+uijjwy1X375xeHQ9t69e22CYGFhYXrkkUc81aJD7O2Ae/z48Rznbdy40aZWrFgxNW7c2CN95eSxxx7T+PHjlZGRYa0tWbJEFy9edGhX3zlz5hjmSn/vsu4PIa4WLVrIZDK5NLdcuXKqWrWq9u7da6hv3749T4S+bww2S9K9997r8s6j0dHRuvfee7V8+XKn527bts2m1qxZM5eDw4GBgWratKl+/vlnp+du2rTJpla7dm0VLVrUpV6uq1evniH0LUlbtmzJ06HvwoULq379+obX7MiRI3rnnXc0ePDg2yLc6Or7uj/bsWOHZs2aZag98MADql69ustr1q5d2yb0nZaWpqtXrzr9yQLwvW+++cbmRp1WrVopLi7OrXULFixoU7t48aJba+aWkJAQVa9e3a2fEwAAAAAAYHTr/3URAAAAAAAA+IdKlSpp1KhRbgVQ/CG80q5dO33yySeGgNGff/6pM2fOOBTEtLfLd4sWLVwOt0p/B3s3bNigffv26eDBg0pKStLVq1d19epVmc1mh9e5fPlyjsfYC6HWq1fP5bCyswoXLqwHHnhACxcutNbS09M1Z84cPf300znOnzFjhk3NH3b5lv7epdcdcXFxNqHvHTt25Pou8q7Yvn27Tc0Tr4croe9du3bZ1KpVq+ZWL1WrVnVpnr2fN3dfF8n+rtj79+93e11fGzhwoLp166Zr165Zaz/88IM2bdqkLl26qH79+ipZsqQi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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "import math\n", + "\n", + "sns.set_context(\"paper\")\n", + "\n", + "def plot_all_datasets():\n", + " num_cols = 1\n", + " num_rows = 1\n", + " unit_row = 4\n", + " unit_col = 10\n", + " sns.set(rc={'figure.figsize':(num_cols * unit_col, num_rows * unit_row)})\n", + " sns.set(font_scale=1.1)\n", + " plt.gcf().set_dpi(300)\n", + "\n", + " name_from_code = {\n", + " \"acc_eps20_certacc_0\": \"None\",\n", + " \"acc_eps10_mult2\": \"Multiple (x2)\",\n", + " \"acc_eps10_mult4\": \"Multiple (x4)\",\n", + " }\n", + "\n", + " df = {}\n", + "\n", + " for sweep_name in name_from_code:\n", + " delta = 5\n", + "\n", + " name = name_from_code[sweep_name]\n", + "\n", + " histories_radius = histories[histories[\"sweep\"] == sweep_name]\n", + " pareto_front = histories_radius.set_index(\"epsilon\").sort_values(\"epsilon\")\n", + " pareto_front = pareto_front[\"val_accuracy\"].expanding().max()\n", + "\n", + " df[sweep_name] = pd.DataFrame.from_dict({\n", + " \"epsilon\": pareto_front.index,\n", + " \"metric\": pareto_front.values,\n", + " \"Augmentations\": name,\n", + " })\n", + " \n", + " # stack of dataframes\n", + " df = pd.concat(df.values(), ignore_index=True, axis=0)\n", + " ax = sns.lineplot(\n", + " data=df,\n", + " x='epsilon',\n", + " y='metric',\n", + " hue='Augmentations',\n", + " lw=3,\n", + " errorbar=None,\n", + " zorder=2)\n", + "\n", + " ticks = [4.0, 8.0, 12.0, 16.0, 20.0]\n", + " labels = [str(v) for v in ticks]\n", + " ax.set_xticks(ticks, labels=labels)\n", + " ax.set(xlim=(0.15, 15.0))\n", + "\n", + " yticks = [0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5]\n", + " ylabels = list(map(lambda v: f\"{v:.2f}\", yticks))\n", + " ax.set_yticks(yticks, labels=ylabels)\n", + " ax.set(ylim=(0.01, 0.51))\n", + "\n", + " ax.set_xlabel(f\"Privacy budget $\\epsilon$ at $\\delta=1e^{{{-delta}}}$\")\n", + " ax.set_ylabel(\"Validation accuracy\") \n", + "\n", + " ax.set_title(\"Influence of Multiple Augmentations on CIFAR-10 Pareto front.\")\n", + "\n", + " # ax.legend(loc='lower right', bbox_to_anchor=(1.0, 0.0))\n", + "\n", + " plt.tight_layout()\n", + " plt.savefig('multiaug.png', dpi=300, bbox_inches='tight')\n", + "\n", + "plot_all_datasets()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "lipdp", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/experiments/paper_plots/opacus_cifar10.py b/experiments/paper_plots/opacus_cifar10.py new file mode 100644 index 0000000..c1e1bef --- /dev/null +++ b/experiments/paper_plots/opacus_cifar10.py @@ -0,0 +1,281 @@ +# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All +# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, +# CRIAQ and ANITI - https://www.deel.ai/ +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +import warnings + +from absl import app +from ml_collections import config_dict +from ml_collections import config_flags + +warnings.simplefilter("ignore") +import torch +import torchvision +import torchvision.transforms as transforms +from torchvision import models +from opacus.validators import ModuleValidator +from torchvision.datasets import CIFAR10 +from opacus import PrivacyEngine +import torch.nn as nn +import torch.optim as optim +import numpy as np +from opacus.utils.batch_memory_manager import BatchMemoryManager +from tqdm import tqdm +from mlp_mixer_pytorch import MLPMixer + +from experiments.wandb_utils import init_wandb +from experiments.wandb_utils import run_with_wandb + +import wandb + + +def default_cfg_cifar10(): + cfg = config_dict.ConfigDict() + cfg.MAX_GRAD_NORM = 1.2 + cfg.EPSILON = 20.0 + cfg.DELTA = 1e-5 + cfg.EPOCHS = 20 + cfg.LR = 1e-3 + cfg.BATCH_SIZE = 1000 + cfg.MAX_PHYSICAL_BATCH_SIZE = 200 + cfg.log_wandb = "disabled" + cfg.model = "mlp_mixer" + cfg.sweep_id = "" # useful to resume a sweep. + cfg.sweep_yaml_config = "" # useful to load a sweep from a yaml file. + return cfg + + +project = "ICLR_Opacus_Cifar10" +cfg = default_cfg_cifar10() +_CONFIG = config_flags.DEFINE_config_dict( + "cfg", cfg +) # for FLAGS parsing in command line. + + +def accuracy(preds, labels): + return (preds == labels).mean() + + +def test(model, test_loader, epoch, device): + model.eval() + criterion = nn.CrossEntropyLoss() + losses = [] + top1_acc = [] + + with torch.no_grad(): + for images, target in test_loader: + images = images.to(device) + target = target.to(device) + + output = model(images) + loss = criterion(output, target) + preds = np.argmax(output.detach().cpu().numpy(), axis=1) + labels = target.detach().cpu().numpy() + acc = accuracy(preds, labels) + + losses.append(loss.item()) + top1_acc.append(acc) + + top1_avg = np.mean(top1_acc) + + print(f"\tTest set:" f"Loss: {np.mean(losses):.6f} " f"Acc: {top1_avg * 100:.6f} ") + res_test = { + "val_epoch": epoch, + "val_loss": np.mean(losses), + "val_accuracy": np.mean(top1_acc), + } + + return res_test + + +def train(model, privacy_engine, train_loader, optimizer, epoch, device): + model.train() + criterion = nn.CrossEntropyLoss() + + losses = [] + top1_acc = [] + + with BatchMemoryManager( + data_loader=train_loader, + max_physical_batch_size=cfg.MAX_PHYSICAL_BATCH_SIZE, + optimizer=optimizer, + ) as memory_safe_data_loader: + for i, (images, target) in (pbar := tqdm(enumerate(memory_safe_data_loader))): + optimizer.zero_grad() + images = images.to(device) + target = target.to(device) + + # compute output + output = model(images) + loss = criterion(output, target) + + preds = np.argmax(output.detach().cpu().numpy(), axis=1) + labels = target.detach().cpu().numpy() + + # measure accuracy and record loss + acc = accuracy(preds, labels) + + losses.append(loss.item()) + top1_acc.append(acc) + + loss.backward() + optimizer.step() + + if i % 20 == 0: + try: + epsilon = privacy_engine.get_epsilon(cfg.DELTA) + except: + epsilon = float("nan") + + pbar.set_description( + f"Train Epoch: {epoch} \t" + f"Loss: {np.mean(losses):.6f} " + f"Acc@1: {np.mean(top1_acc) * 100:.6f} " + f"(ε = {epsilon:.2f}, δ = {cfg.DELTA})" + ) + + try: + epsilon = privacy_engine.get_epsilon(cfg.DELTA) + except: + epsilon = float("nan") + res_train = { + "epoch": epoch, + "loss": np.mean(losses), + "accuracy": np.mean(top1_acc), + "epsilon": np.mean(epsilon), + "delta": cfg.DELTA, + } + return res_train + + +def train_dp_model(): + init_wandb(cfg=cfg, project=project) + + # These values, specific to the CIFAR10 dataset, are assumed to be known. + # If necessary, they can be computed with modest privacy budgets. + CIFAR10_MEAN = (0.4914, 0.4822, 0.4465) + CIFAR10_STD_DEV = (0.2023, 0.1994, 0.2010) + + transform = transforms.Compose( + [ + transforms.ToTensor(), + transforms.Normalize(CIFAR10_MEAN, CIFAR10_STD_DEV), + ] + ) + + DATA_ROOT = "/data/datasets/pytorch/CIFAR10" + + train_dataset = CIFAR10( + root=DATA_ROOT, train=True, download=True, transform=transform + ) + + train_loader = torch.utils.data.DataLoader( + train_dataset, + batch_size=cfg.BATCH_SIZE, + ) + + test_dataset = CIFAR10( + root=DATA_ROOT, train=False, download=True, transform=transform + ) + + test_loader = torch.utils.data.DataLoader( + test_dataset, + batch_size=cfg.BATCH_SIZE, + shuffle=False, + ) + + if cfg.model == "resnet18": + model = models.resnet18(weights=None, num_classes=10) + elif cfg.model == "mlp_mixer": + model = MLPMixer( + image_size=32, + channels=3, + patch_size=4, + dim=64, + depth=1, + num_classes=10, + ) + else: + raise ValueError(f"Unknown model type: {cfg.model}") + + errors = ModuleValidator.validate(model, strict=False) + errors[-5:] + + model = ModuleValidator.fix(model) + errors = ModuleValidator.validate(model, strict=True) + assert not errors + + print( + f"Device = {torch.cuda.get_device_name(0)} and cuda={torch.cuda.is_available()}" + ) + + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + model = model.to(device) + + optimizer = optim.RMSprop(model.parameters(), lr=cfg.LR) + + privacy_engine = PrivacyEngine() + + model, optimizer, train_loader = privacy_engine.make_private_with_epsilon( + module=model, + optimizer=optimizer, + data_loader=train_loader, + epochs=cfg.EPOCHS, + target_epsilon=cfg.EPSILON, + target_delta=cfg.DELTA, + max_grad_norm=cfg.MAX_GRAD_NORM, + ) + + print(f"Using sigma={optimizer.noise_multiplier} and C={cfg.MAX_GRAD_NORM}") + + for epoch in tqdm(range(cfg.EPOCHS), desc="Epoch", unit="epoch"): + res = train(model, privacy_engine, train_loader, optimizer, epoch + 1, device) + res_test = test(model, test_loader, epoch + 1, device) + res.update(res_test) + wandb.log( + res, + step=epoch, + ) + with torch.no_grad(): + torch.cuda.empty_cache() + + del ( + model, + train_loader, + optimizer, + test_loader, + train_dataset, + test_dataset, + errors, + privacy_engine, + ) + with torch.no_grad(): + torch.cuda.empty_cache() + + +def main(_): + run_with_wandb(cfg=cfg, train_function=train_dp_model, project=project) + + +if __name__ == "__main__": + app.run(main) diff --git a/experiments/paper_plots/opacus_cifar10.yaml b/experiments/paper_plots/opacus_cifar10.yaml new file mode 100644 index 0000000..1301198 --- /dev/null +++ b/experiments/paper_plots/opacus_cifar10.yaml @@ -0,0 +1,21 @@ +method: bayes +metric: + name: val_accuracy + goal: maximize +parameters: + MAX_GRAD_NORM: + min: 0.01 + max: 100 + distribution: log_uniform_values + LR: + min: 0.00001 + max: 1.0 + distribution: log_uniform_values + BATCH_SIZE: + values: [500, 1000, 2000] + distribution: categorical + EPOCHS: + min: 1 + max: 400 + distribution: q_log_uniform_values + \ No newline at end of file diff --git a/experiments/paper_plots/opacus_tabular.py b/experiments/paper_plots/opacus_tabular.py new file mode 100644 index 0000000..8f0c618 --- /dev/null +++ b/experiments/paper_plots/opacus_tabular.py @@ -0,0 +1,349 @@ +# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All +# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, +# CRIAQ and ANITI - https://www.deel.ai/ +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +import random +import warnings + +from absl import app +from ml_collections import config_dict +from ml_collections import config_flags +from sklearn.metrics import roc_auc_score +from sklearn.model_selection import train_test_split + +warnings.simplefilter("ignore") +import torch +import torchvision +import torchvision.transforms as transforms +from torchvision import models +from opacus.validators import ModuleValidator +from torchvision.datasets import CIFAR10 +from opacus import PrivacyEngine +import torch.nn as nn +import torch.optim as optim +import numpy as np +from opacus.utils.batch_memory_manager import BatchMemoryManager +from tqdm import tqdm + +from experiments.wandb_utils import init_wandb +from experiments.wandb_utils import run_with_wandb + +import wandb + + +def default_cfg_tabular(): + cfg = config_dict.ConfigDict() + cfg.dataset_name = "22_magic.gamma" + cfg.MAX_GRAD_NORM = 1.2 + cfg.EPSILON = 1.0 + cfg.DELTA = 1e-5 + cfg.EPOCHS = 20 + cfg.LR = 1e-3 + cfg.BATCH_SIZE = 1000 + cfg.MAX_PHYSICAL_BATCH_SIZE = 2000 + cfg.log_wandb = "disabled" + cfg.depth = 1 + cfg.model = "mlp" + cfg.sweep_count = 0 # 0 means no limit. + cfg.sweep_id = "" # useful to resume a sweep. + cfg.sweep_yaml_config = "" # useful to load a sweep from a yaml file. + cfg.width = 1 + return cfg + + +project = "ICLR_Opacus_Tabular" +cfg = default_cfg_tabular() +_CONFIG = config_flags.DEFINE_config_dict( + "cfg", cfg +) # for FLAGS parsing in command line. + + +def get_mlp(num_features): + """Build multi-layer perceptron.""" + depth = cfg.depth + width = cfg.width * 64 + layers = [] + last_width = num_features + for i in range(depth): + layers.append(nn.Linear(last_width, width)) + layers.append(nn.ReLU()) + last_width = width + layers.append(nn.Linear(last_width, 1)) + return nn.Sequential(*layers) + + +def accuracy(preds, labels): + return (preds == labels).mean() + + +def test(model, test_loader, epoch, device): + model.eval() + criterion = nn.BCEWithLogitsLoss() + losses = [] + top1_acc = [] + all_labels = [] + all_preds = [] + + with torch.no_grad(): + for images, target in test_loader: + images = images.to(device) + target = target.to(device) + + output = model(images) + loss = criterion(torch.flatten(output), target) + preds = np.ceil(output.detach().cpu().numpy()) + labels = target.detach().cpu().numpy() + acc = accuracy(preds, labels) + + losses.append(loss.item()) + top1_acc.append(acc) + + all_labels.extend(labels) + all_preds.extend(output.detach().cpu().numpy()) + + top1_avg = np.mean(top1_acc) + auroc = roc_auc_score(all_labels, all_preds) + + print( + f"\tTest set:" + f"Loss: {np.mean(losses):.6f} " + f"Acc: {top1_avg * 100:.6f} " + f"AUROC: {auroc:.6f}" + ) + res_test = { + "val_epoch": epoch, + "val_loss": np.mean(losses), + "val_accuracy": np.mean(top1_acc), + "val_auroc": auroc, + } + + return res_test + + +def train(model, privacy_engine, train_loader, optimizer, epoch, device): + model.train() + criterion = nn.BCEWithLogitsLoss() + + losses = [] + top1_acc = [] + all_labels = [] + all_preds = [] + + with BatchMemoryManager( + data_loader=train_loader, + max_physical_batch_size=cfg.MAX_PHYSICAL_BATCH_SIZE, + optimizer=optimizer, + ) as memory_safe_data_loader: + for i, (images, target) in (pbar := tqdm(enumerate(memory_safe_data_loader))): + optimizer.zero_grad() + images = images.to(device) + target = target.to(device) + + # compute output + output = model(images) + loss = criterion(torch.flatten(output), target) + + preds = np.ceil(output.detach().cpu().numpy()) + labels = target.detach().cpu().numpy() + + # measure accuracy and record loss + acc = accuracy(preds, labels) + + losses.append(loss.item()) + top1_acc.append(acc) + + all_labels.extend(labels) + all_preds.extend(output.detach().cpu().numpy()) + + loss.backward() + optimizer.step() + + if i % 20 == 0: + try: + epsilon = privacy_engine.get_epsilon(cfg.DELTA) + except: + epsilon = float("nan") + + pbar.set_description( + f"Train Epoch: {epoch} \t" + f"Loss: {np.mean(losses):.6f} " + f"Acc@1: {np.mean(top1_acc) * 100:.6f} " + f"(ε = {epsilon:.2f}, δ = {cfg.DELTA})" + ) + + try: + epsilon = privacy_engine.get_epsilon(cfg.DELTA) + except: + epsilon = float("nan") + res_train = { + "epoch": epoch, + "loss": np.mean(losses), + "accuracy": np.mean(top1_acc), + "auroc": roc_auc_score(all_labels, all_preds), + "epsilon": np.mean(epsilon), + "delta": cfg.DELTA, + } + return res_train + + +def download_adbench_datasets(dataset_dir: str): + import os + import fsspec + + fs = fsspec.filesystem("github", org="Minqi824", repo="ADBench") + print(f"Downloading datasets from the remote github repo...") + + save_path = os.path.join(dataset_dir, "datasets", "Classical") + print(f"Current saving path: {save_path}") + + os.makedirs(save_path, exist_ok=True) + fs.get(fs.ls("adbench/datasets/" + "Classical"), save_path, recursive=True) + + +def load_adbench_data( + dataset_name: str, + dataset_dir: str, + standardize: bool = True, + redownload: bool = False, +): + """Load a dataset from the adbench package.""" + if redownload: + download_adbench_datasets(dataset_dir) + + data = np.load( + f"{dataset_dir}/datasets/Classical/{dataset_name}.npz", allow_pickle=True + ) + x_data, y_data = data["X"], data["y"] + + if standardize: + x_data = (x_data - x_data.mean()) / x_data.std() + + return x_data, y_data + + +def train_dp_model(): + init_wandb(cfg=cfg, project=project) + + if cfg.BATCH_SIZE < cfg.MAX_PHYSICAL_BATCH_SIZE: + cfg.MAX_PHYSICAL_BATCH_SIZE = cfg.BATCH_SIZE + + transform = transforms.Compose( + [ + transforms.ToTensor(), + ] + ) + + x_data, y_data = load_adbench_data( + cfg.dataset_name, dataset_dir="/data/datasets/adbench", standardize=True + ) + + print(f"x_data.shape = {x_data.shape}") + print(f"y_data.shape = {y_data.shape} with labels {np.unique(y_data)}") + + random_state = random.randint(0, 1000) + splits = train_test_split( + x_data, y_data, test_size=0.2, random_state=random_state, stratify=y_data + ) + x_train, x_test, y_train, y_test = splits + + train_dataset = torch.utils.data.TensorDataset( + torch.from_numpy(x_train).float(), + torch.from_numpy(y_train).float(), + ) + + test_dataset = torch.utils.data.TensorDataset( + torch.from_numpy(x_test).float(), + torch.from_numpy(y_test).float(), + ) + + train_loader = torch.utils.data.DataLoader( + train_dataset, + batch_size=cfg.BATCH_SIZE, + ) + test_loader = torch.utils.data.DataLoader( + test_dataset, + batch_size=cfg.BATCH_SIZE, + shuffle=False, + ) + + model = get_mlp(x_data.shape[1]) + + errors = ModuleValidator.validate(model, strict=False) + + model = ModuleValidator.fix(model) + ModuleValidator.validate(model, strict=False) + + print( + f"Device = {torch.cuda.get_device_name(0)} and cuda={torch.cuda.is_available()}" + ) + + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + model = model.to(device) + + optimizer = optim.RMSprop(model.parameters(), lr=cfg.LR) + + privacy_engine = PrivacyEngine() + + model, optimizer, train_loader = privacy_engine.make_private_with_epsilon( + module=model, + optimizer=optimizer, + data_loader=train_loader, + epochs=cfg.EPOCHS, + target_epsilon=cfg.EPSILON, + target_delta=cfg.DELTA, + max_grad_norm=cfg.MAX_GRAD_NORM, + ) + + print(f"Using sigma={optimizer.noise_multiplier} and C={cfg.MAX_GRAD_NORM}") + + for epoch in tqdm(range(cfg.EPOCHS), desc="Epoch", unit="epoch"): + res = train(model, privacy_engine, train_loader, optimizer, epoch + 1, device) + res_test = test(model, test_loader, epoch + 1, device) + res.update(res_test) + wandb.log( + res, + step=epoch, + ) + with torch.no_grad(): + torch.cuda.empty_cache() + + del ( + model, + train_loader, + optimizer, + test_loader, + train_dataset, + test_dataset, + errors, + privacy_engine, + ) + with torch.no_grad(): + torch.cuda.empty_cache() + + +def main(_): + run_with_wandb(cfg=cfg, train_function=train_dp_model, project=project) + + +if __name__ == "__main__": + app.run(main) diff --git a/experiments/paper_plots/plot_speed_curve.ipynb b/experiments/paper_plots/plot_speed_curve.ipynb new file mode 100644 index 0000000..7905657 --- /dev/null +++ b/experiments/paper_plots/plot_speed_curve.ipynb @@ -0,0 +1,533 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "eNamFBDN6VYb" + }, + "source": [ + "# Plotting the Pareto Front from WandB sweeps :" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7bjW31l66ayq" + }, + "source": [ + "### Imports & Installs :" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9OFvOrDIVZdg", + "outputId": "04004c02-8a60-44a6-d736-1e27e04d43ec" + }, + "outputs": [], + "source": [ + "import wandb\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-ca3VBFf6fcS" + }, + "source": [ + "### Enter WandB project name :" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 193 + }, + "id": "R-gPmfgUVfYE", + "outputId": "52d743ec-7663-4d27-8f3f-f77e85733837" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Failed to detect the name of this notebook, you can set it manually with the WANDB_NOTEBOOK_NAME environment variable to enable code saving.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33malgue\u001b[0m. Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n" + ] + }, + { + "data": { + "text/html": [ + "wandb version 0.15.10 is available! To upgrade, please run:\n", + " $ pip install wandb --upgrade" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Tracking run with wandb version 0.15.8" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Run data is saved locally in /data/Projets/dp-lipschitz/sandbox/wandb/run-20230919_154934-e3tgtj03" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Syncing run different-sky-2 to Weights & Biases (docs)
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " View project at https://wandb.ai/algue/dp-lipschitz-sandbox" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " View run at https://wandb.ai/algue/dp-lipschitz-sandbox/runs/e3tgtj03" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Specify the W&B project\n", + "run = wandb.init()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Cs9VHKoh7O2y" + }, + "source": [ + "### Get run hashes and load run-table artifacts : " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "z0RuU8Vi-GBr" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "api = wandb.Api()\n", + "\n", + "entity = \"algue\"\n", + "project = \"dp-lipschitz_CIFAR10_quick3\"\n", + "states = [\"finished\"] # only runs that did not failed or crashed.\n", + "filters = {\"state\": {\"$in\": states}}\n", + "\n", + "# Get a list of all the runs in the project\n", + "runs = api.runs(entity + \"/\" + project, filters)\n", + "\n", + "summary_list, config_list, name_list = [], [], []\n", + "for run in runs:\n", + " # .summary contains the output keys/values for metrics like accuracy.\n", + " # We call ._json_dict to omit large files\n", + " summary_list.append(run.summary._json_dict)\n", + " # .config contains the hyperparameters.\n", + " # We remove special values that start with _.\n", + " config_list.append(dict(run.config)['_fields'])\n", + " # .name is the human-readable name of the run.\n", + " name_list.append(run.name)\n", + "\n", + "runs_df = pd.DataFrame({\n", + " \"summary\": summary_list,\n", + " \"config\": config_list,\n", + " \"name\": name_list\n", + " })\n", + "\n", + "# runs_df.to_csv(\"NAME.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + }, + "id": "DlJ6ZNF4eIde", + "outputId": "bad4598b-4ee1-4247-beda-aede6eda344b" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
summaryconfigname
0{'_timestamp': 1684172153, 'median_time': 4.57...{'seed': 1337, 'delta': 1e-05, 'dpsgd': True, ...hardy-water-466
1{'mad_time': 0.006640114821493626, '_timestamp...{'seed': 1337, 'delta': 1e-05, 'dpsgd': True, ...scarlet-lake-465
2{'times': {'artifact_path': 'wandb-client-arti...{'seed': 1337, 'delta': 1e-05, 'dpsgd': True, ...dandy-sun-464
3{'times': {'sha256': 'cb4ef9a38ecaef8e82175a02...{'seed': 1337, 'delta': 1e-05, 'dpsgd': True, ...smart-serenity-463
4{'_step': 0, 'times': {'size': 233, '_type': '...{'seed': 1337, 'delta': 1e-05, 'dpsgd': True, ...desert-plant-462
............
290{'_step': 0, 'times': {'artifact_path': 'wandb...{'K': 0.99, 'N': 50000, 'tag': 'Default', 'tau...peachy-yogurt-5
291{'_timestamp': 1684003865.3701484, 'median_tim...{'K': 0.99, 'N': 50000, 'tag': 'Default', 'tau...fallen-sea-4
292{'_step': 0, 'times': {'sha256': '742bef733139...{'K': 0.99, 'N': 50000, 'tag': 'Default', 'tau...stellar-dust-3
293{'median_time': 153.4468233315274, '_step': 0,...{'K': 0.99, 'N': 50000, 'tag': 'Default', 'tau...brisk-dragon-2
294{'median_time': 117.60727335698904, '_step': 0...{'K': 0.99, 'N': 50000, 'tag': 'Default', 'tau...apricot-frost-1
\n", + "

295 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " summary \\\n", + "0 {'_timestamp': 1684172153, 'median_time': 4.57... \n", + "1 {'mad_time': 0.006640114821493626, '_timestamp... \n", + "2 {'times': {'artifact_path': 'wandb-client-arti... \n", + "3 {'times': {'sha256': 'cb4ef9a38ecaef8e82175a02... \n", + "4 {'_step': 0, 'times': {'size': 233, '_type': '... \n", + ".. ... \n", + "290 {'_step': 0, 'times': {'artifact_path': 'wandb... \n", + "291 {'_timestamp': 1684003865.3701484, 'median_tim... \n", + "292 {'_step': 0, 'times': {'sha256': '742bef733139... \n", + "293 {'median_time': 153.4468233315274, '_step': 0,... \n", + "294 {'median_time': 117.60727335698904, '_step': 0... \n", + "\n", + " config name \n", + "0 {'seed': 1337, 'delta': 1e-05, 'dpsgd': True, ... hardy-water-466 \n", + "1 {'seed': 1337, 'delta': 1e-05, 'dpsgd': True, ... scarlet-lake-465 \n", + "2 {'seed': 1337, 'delta': 1e-05, 'dpsgd': True, ... dandy-sun-464 \n", + "3 {'seed': 1337, 'delta': 1e-05, 'dpsgd': True, ... smart-serenity-463 \n", + "4 {'seed': 1337, 'delta': 1e-05, 'dpsgd': True, ... desert-plant-462 \n", + ".. ... ... \n", + "290 {'K': 0.99, 'N': 50000, 'tag': 'Default', 'tau... peachy-yogurt-5 \n", + "291 {'K': 0.99, 'N': 50000, 'tag': 'Default', 'tau... fallen-sea-4 \n", + "292 {'K': 0.99, 'N': 50000, 'tag': 'Default', 'tau... stellar-dust-3 \n", + "293 {'K': 0.99, 'N': 50000, 'tag': 'Default', 'tau... brisk-dragon-2 \n", + "294 {'K': 0.99, 'N': 50000, 'tag': 'Default', 'tau... apricot-frost-1 \n", + "\n", + "[295 rows x 3 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "runs_df" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "id": "vJhUWkulAARA" + }, + "outputs": [], + "source": [ + "expanded_summary = runs_df['summary'].apply(lambda summary: pd.DataFrame.from_dict([summary]))\n", + "df = pd.concat(expanded_summary.tolist(), axis=0).set_index(runs_df['name'])\n", + "df = pd.concat([df, pd.json_normalize(runs_df['config']).set_index(runs_df['name'])], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "id": "fFS0hmeHRVPz" + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "speed = df.loc[:,('batch_size', 'median_time', 'mad_time', 'archi_type', 'architecture')]\n", + "clipless_name = '[lip-dp] Clipless DP-SGD'\n", + "version = '0.7.3'\n", + "vanilla = f'[tf_privacy] DP-SGD'\n", + "lipschitz_name = '[tensorflow] Clipless DP-SGD (no Lischitz only orthogoality)'\n", + "fasttf = f'[tensorflow] DP-SGD with global clipping'\n", + "opacus = f'[opacus] DP-SGD without virtual batches'\n", + "opacus_virtual_batches = f'[opacus] DP-SGD'\n", + "jax = '[optax] DP-SGD'\n", + "archi_key = 'Number of parameters'\n", + "num_parameters = {'VGG5_small': '130K', 'VGG5_large': '510K', 'VGG5_huge': '2,000K'}\n", + "algorithm = 'Optimizer'\n", + "speed = speed.rename({'archi_type': algorithm, 'architecture': archi_key}, axis=1)\n", + "speed[archi_key].replace(num_parameters, inplace=True)\n", + "# speed[algorithm].replace({True: clipless_name, False: vanilla, }, inplace=True)\n", + "speed = speed[speed[algorithm].isin(['gnp', 'vanilla', 'opacus_virtual_batches', 'jax'])]\n", + "speed[algorithm].replace({'gnp': clipless_name, 'vanilla': vanilla,\n", + " 'lipschitz': lipschitz_name, 'fasttf': fasttf,\n", + " 'opacus':opacus, 'opacus_virtual_batches':opacus_virtual_batches, 'jax': jax}, inplace=True)\n", + "speed = speed[speed['batch_size'] >= 50]\n", + "num_batch_per_epoch = 50_000 / speed['batch_size']\n", + "# Time per batch\n", + "speed['median_time'] = speed['median_time'] / num_batch_per_epoch" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "id": "LV1VTyH63YDJ" + }, + "outputs": [], + "source": [ + "archi_name = 'VGG5_small'\n", + "num_params = num_parameters[archi_name]\n", + "#speed = speed[speed['architecture'] == archi_name]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "id": "KMzmvlrLKZol" + }, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "sns.set_context(\"paper\")\n", + "sns.set(rc={'figure.figsize':(5,4), 'figure.dpi':300})\n", + "sns.set(font_scale=1.15)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "K5VZnYWvJhHj", + "outputId": "2aa12200-03ef-4443-984c-4fad45f6e520" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(0.0, 4.0)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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/e9/9eWXX+riiy/Wtddeq8jIyNo+fQAAcJhxutxameF7Mc0+Dqdbyzfu0fKNe5SSGKms3SWyWb3fcWexWBQRZldEmF2GYVR7Z16f9CS/cwEAAAAAoKEUFxfpmWeeMMXDwsL1/PP/9ruQZh+LxaI777xHhYWFmjPnO49ja9as1n//+6EuueSygNYGAADAoSFoxTQzZ87U008/rV27dnktotkXa926tUaNGqVhw4apf//+fhXOeBMREaHu3bure/fu+2NlZWVasmSJ5s+frzlz5mjbtm378zmwW01ZWZneeustff3117rnnnt00kkn1SoXAABweNm4vUBl5c5arbEpq1Al5Q41j/e+B/yBqiukadUsSsk+rAEAAAAAQLC8//672r17tyl+1VXXqHv3HrVa22Kx6J57HtDSpUuUk5Pjcezdd9/Waaedrri4+FqdAwAAAE1XUIppLr30Ui1atMhURLPvcWJios444wyNGTNGPXv2rPd8IiIiNHToUA0dOlT/+te/tHLlSs2cOVPffPPN/jfqB+a4a9cu3XHHHZoyZYree++9es8PAAAcGpZv8r8rzcEKSyuVEB1a63X6pLN1JQAAAACg8SosLNTnn08xxdPTO+q88y6sk3NERUXp5ptv1/jx93rES0tL9fHHH+naa2+ok/NIktPp1Nq1a7R580bl5eXJ6XQqJiZW7dq1U8+evRQefvjd8FJUVKRVq1Zo69YtKi4uVkhIiBITk9SjRy+1bdvWr7WysrK0Zs1q7dqVrfLycsXFxal58xT17dtPUVFR9fQMmo7KykqtW7dWW7dmKjc3T5WVFYqJiVViYqJat05V585dqr0pqy7l5eVp7drV2rZtm0pKimUYhmJiYnXkkYP8/roDAFCfglJM8/vvv5u6vkjS4MGDde655+r4449XSEhIMFKTJPXo0UM9evTQbbfdprlz52rKlCn69ddfJXkW1SxatChoOQIAgKYlt7Bc23OKa7VGpdMtl8utsBBbrdaJighReuvYWq0BAAAAAEB9+vbbGSotLTXFr7/+JtntdXdp44QTTtTHH3+kVatWeMSnTv1a48ZdU+O5rrvuKv3112KP2G+/Ldn//7t35+jDD9/TzJkzVFhY4HWNsLAwHXvscbr88nFKS2vnU97eznugd955U++882aN67zyypvq33+AKf7WW6+b5lc19kBZWVk6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As2ePVvz589XeXn5/pwkzyIau92uyy+/XNdff3295eNNSUmJ/v77by1evFjLly/X2rVrlZ2d7dPc5ORkHXfccTrrrLPUu3fves60ar///rsuueSSOl1z9uzZSktLq9M1AQDwl7ctnsoqXXI4XX6t4637THJchFolRwWcGwAAAAAAAAAAAHwXlGKaiIgI3XnnnTrjjDP05JNPav78+ZI8C1YkqbS0VN99952+++47WSwWderUSYMGDVKvXr3UuXNnpaeny273/yk4HA5t2LBBa9eu1fLly7Vo0SJt2LBh//EDt2I4OKcRI0bonnvuUYcOHQJ78rVwxRVXaOnSpQHN3b17t6ZMmaIpU6Zo2LBhevjhhxvVdloAADRlRaWV2rKz2BQvLKn0a53wULtC7FZTvHfHJK/dagAAAAAAAAAAAFD3glJMs096errefvttLVq0SM8///z+QpEDLxbtK2IxDENr167VunXr9h+z2+1q1aqVUlJSlJKSoqSkJIWHhys8PFwhISFyOBwqLy9XeXm5du/erZ07dyo7O1s7duyQy+UynWMfb+fv16+fbr/9dg0YMKDO/x58dXCegZo/f77Gjh2rSZMmaeTIkXWyJgAAh4qyCqfmL9+h4b1bKjzUt7dKqzPzTD+nnS63Ssv93OIp0tyVJizUpq5t4/1aBwAAAAAAAAAAAIELajHNPgMHDtQnn3yin376SW+//bb++OMPSXuLWg4ubDnwQpXD4VBmZqa2bNni87mqKkg5+G7vfeMGDRqkcePGafjw4T6fo6HFx8erffv2at68uaKiohQSEqLi4mJt375d69atU2lpqWlOeXm5br75Zr300ksU1AAA8A+ny63pCzOUtbtEO/aU6rSh7RQXHVbtHMMwtCojzxQvKvWvkMZisSgy3PzWrFtagkLsNr/WAgAAAAAAAAAAQOAaRTHNPkcffbSOPvporVy5UpMnT9acOXNUWbl3e4SDC2sO5E/Hluq2SNi3TlhYmE488URdfvnl6tatmx/PoGF07txZQ4cOVf/+/dWvXz8lJSVVOdbhcOinn37S66+/ruXLl5uO3XfffZo5c6YSExPrO+0qXXnllRo3blzA8+Pj4+suGQDAYcswDM39c5uydpdIkvIKyzVl3gadclQ7tUyKqnJe1u4SFRRXeK6lvVs/+SM6IkRWL+9Teqcn+7UOAAAAAAAA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IV3HHjtSo0aNUVpauwbP0e12q6ioSEVFRdqxI0urV6/SN998JavVqiFDjtJFF12qI47o3+B5HWjhwgV69tkntWNHVs2DD7CvU8zWrVs0e/a3kvZuCXbHHXdr+PDaXYvbuTNb//nP2/r225mqqCj3e/6uXTu1a9dOzZ//s55//ln17dtPp59+po4/fpSsVmutcquKYRiqqKhQRUWFioqKlJ2dbRoTFxevo44aqhNOOFGDBg2RzWarl1wANByKaQ4THTt21IcffqibbrpJ8+bN8zj24osv6sQTT1SbNm2ClJ1/xowZo0mTJmnLli0e8V9++aXJF9MAAILDbrNq1JFtFB8dpt9WevlFKDpURlGlDryxoKjU4fen3uGhdoXYPX+h69I2XuGhvCUDAAAAAKAmzzzzvHr37mOKR0bS3Qk42KxZ33uNX3rphdq50/z5V1O0adNGbdq0UZMnv60hQ4bqiivGqWfP3sFOS263WwsWzNfChQt07rnn67rrblJYWFiD5uByuTRx4lP66qsv6mzN7Owd2rIlM+D5brdbH3zwrv7zn7dVXu5/EU1Vay5Z8qeWLPlT//nP2xo37hqNHHl8UDrEFBTk69tvZ+jbb2eodetUnX/+RTr99DNlt/PZL9BU8eo9jISEhOj555/XmDFjPComKysr9cEHH+i+++4LYna+s1gsGjFihD788EOP+LJly4KUEQDgUGCxWDSoe4pio0I198+t+7fdi4oIUXqrOC1Zl7N/rCGpsLTS73PERIaYYr07BtaGFAAAAACAw01UVHSdb+sCHKqqeq0citvQGIahhQvn69dfF2js2FN16613Kioq+EV2hmHok0/+q23btunpp59rsE4lhmHoiSce1YwZ06ocExcXr/T0jkpOTlZkZKQqKytVUFCgnJwcbdq0QU6ns05zKiws1H333a0//1xU7bj4+Hi1bdtOzZs3V0REpOx2m8rKyrR7925t27ZV2dk7qpy7efMm3X//v/Tll9PVqlVwt9navn3bP8VMn+u++x5Ujx49g5oPgMBQTHOYiYyM1DXXXKNHHnnEIz5nzpwmU0wjSd27dzfF9uzZE4RMAACHmm5pCYqJDNGMXzPlcrl1ylHtNGuRZze00gqnXC63X+taLBZFhnu+9WqZHKXm8RG1zhkAAAAAAABoii688BJdfPGlXo85HE5VVlYoLy9Xu3bt0saNG7Rq1UotXbpEZWVlpvGGYWjatG+0bNnfevbZF9S2bds6ybGqLj9ut6GiokJlZW3X4sV/asaMqcrLM28jP3/+z/r3vyfp1lvvrJN8avLxxx95LaSx2ew67bQzdMopp6lbN/N1tn0qKyu1bt0a/frrAn3//VxlZGyuVT579uzRzTdfp40bN3g9npbWTqeeerqGDz9abdum1bjW4sV/6Pvv52jhwvlyOBy1yu1gKSkt9N57H3k95nK5VVlZoeLiYu3enaMtWzK1bt1aLV78Z5VFPhs3btC1116pO++8R6eddkad5gqg/lFMcxg67rjjTMU0WVlZysnJUbNmzYKUlX8SExNNsdzc3CBkAgA4FKU2i9Y5x3ZUYUmlXG5D+UUVHseLSvzvShMdYZf1oDt/+qQn1SpPAAAAAAAAoCkLDw+vseNU69apkqSRI4+XJFVUVOinn+bp448/1OrVq0zjMzMzdMMNV+m1195WamqbWudYXX6JiYlKS2unIUOGaty4qzVp0kR9881XpnGffTZFZ555do3FIrW1Z88evfPOm6Z4SkoLTZz4gjp16lzjGqGhoerZs7d69uytq666TuvXr9Nnn03Rd9/N9Duf8vIy3X77TV4LaZKTk3XzzbfrhBNO9LljUlJSkkaNGq1Ro0YrJydHn3zykT7/fIoqKipqnuwDi8XiUwe0Tp06a8iQofsfr169Sl9++blmzpwul8uzq4/D4dCTT06Q0+nU//3f2XWSJ4CGYQ12Amh4KSkpioyMNMVzcnK8jG6crFbzt65hGEHIBABwqEqICVNaixitzPAs1nS43Cqr8L/NaXREqMfjyHC7OqbG1SpHAAAAAAAA4HATFhamUaNG6z//+VCPPPK4YmNjTWNycnJ0xx23eO1gU1/CwyN0773jddZZ55iOuVwuvfvuO/Wew9dff6GSkuKD8grXyy+/7lMhjTedOnXWffeN19dfz9RRRw3za+6TTz6mtWvXmOJ9+vTV++9/olGjRge89VizZs100023asqULzV8+NEBrVFXunXrrvvvf1Aff/y5evfu63XMc889rUWLfm/YxADUCsU0hylve0VWVvp/l32weOtC461bDQDg0LZ5R6EqHa56W9/hdGn91nyPWGEAXWlC7FaFhXi+7erZPkk2L8WhAAAAAAAAAHxz4oljNHnyB0pNTTUdy8zM0IsvPtfgOd1yyx1q0aKFKb5gwXy53f5tHe+vn3/+0RQ799wL1KZN7be8SkhIUPv2HXwe/+OPP+i77741xXv16qMXX3ylzq7rtWjRUs8+O0n33jteYWFhdbJmoNq2batXX31Tp5xyuumY2+3Www8/oKKiooZPDEBAuIJzGDIMQ/n5+aZ4UlLT2WpizRpzFWtCQs1t1wAAh46M7EJNW5Chz37cqKLS+ikIzcwulsP5v19w3Yah4jL/9+GNjgjxuMPCYrGoZweKQAEAAAAAAIDaSk1toxdffFVxcfGmY1Onfq3169c1aD4hISE680xzd5qCgnytW7e23s5bWlrqtQvMccedUG/nrIrT6dBLL00yxSMjo/Too48rPDyizs952mln6LXX3lZkZN2v7Q+73a777huvY44ZaTqWm7tHkye/FYSsAATCHuwE0PA2bdokh8N8ITA5OTkI2QTml19+McW6d+8ehEwAAMGwO79MM3/bIsMwtDu/TFN+2KBTh7VX8/i6/UUpvXWszju+k1Zl5Gntljzl5JfL7fZ/W8HoiBDTujGRoVWMBgAAAAAADc3pdGr9+nXKyNis3NxcVVRUKDQ0RAkJiWrTpq26du2m0NCG+V3eMAxt2LBeGzas+yeXSkVFRalt27bq1au3oqNj6vyclZWV2rIlU5mZGcrLy1NpaYkkKTY2TrGxcWrXrp3at+8Q8HYs/igpKdHatWuUlbVdBQX5qqioVFhYmKKjo5Wamqr27dMPmU71hYWFWr9+rbKytqukpESlpWUKCbErPDxc8fEJatGihVJT23IzsQ9at07V3Xffq/vv/5dH3O12691339Hjjz/doPkceeRAr/GtW7eoa9du9XLOPXt2e423bm3u2lPfpk+fpqys7ab4zTffppYtW9Xbebt371Fva/vDYrHo/vsf0sqVy5WTk+Nx7MsvP9Nll13htfgLQONCMc1haNasWaZY586dFRER3EpNX/3www/auHGjKT58+PAgZAMAaGjFZQ59s2CzHAds71RS5tDn8zZozOA0tW9p3iM5UBaLRSkJkUpJiNSwXi30xtRVKi13qKzC6fMaEWF22W2ezQB7pzedAlYAAAAAAA5lK1Ys12effaJffvlJpaWlVY4LCwvT4MFH6ayzztGRRw4K6FyPPvqQZs6c5hH78svpatVq74XloqIiffLJR/rmmy+1e7f3i+I2m11D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OMHc/aA6zZo109FHH6tjjhmpnj17KTw8osqxy5f/rY8//sjUzScra7ueffYpPfLI4z6f1zAMPfrog14LaeLi4nXZZVdo1KjRSkryvo13QUGBFi78RXPnztavvy70+bzB9MILz5kKaZo3T9E111yv4447vtq/+z17dmvhwvn6+eefGry7SlPVq1cfUzFNXl6edu7MVkpKiwbJ4c8/F3mNt2nTpt7OabFYdOSRgzR79rce8aKiIl199RW6+eZbNXr0SbLba/dZaU3WrjVv8VSbosOmrlevPl7ja9euoZgGaOQopmmCXC6XFi1apEWLvP8g9lWfPn00efJkRURU/Satvrjdbv3555/6888/A14jIiJCL774onr3Nv9yAwA4dGzeUaiflmYFNDcnr0xTfliv04a2V3J8YD/vXG63lm/y7w6gELtNibHmopk+Hb1/CAQAAAAAAOrfxx9/6HVrpnPPPV+33HKHrFar13np6R31/PMv6d1339Hrr7/icSwzM0Ovvvpv3X77XQHltGVLpiQpLCxMzz//b/XvP8DruLCwMI0de5oGDhyi668fZ+rOMmnSRA0aNESxsbE1nrNDhw469dTTdMIJo2W3+3aZqFevPurVq4/mzPlODz883mOroTlzvtNVV12r1FTfigT++98PNH/+z6b44MFDNGHCU4qJqb7LTVxcnMaMGasxY8YqMzNDM2dO8+m8wbJjR5ZWrFjuEUtJaaHJkz/waReCpKRknXLK6TrllNO9rgWz9PR0r/Ht27c3SDGN0+nQl19+ZorHxsapc+eu9Xruc88931RMI0mFhQV67LFH9Prrr+iYY47T0KHD1KtXb7+7StUkNzfXayerw7mYJi4uTsnJyaYt3rZvb3pdtoDDTZMuptm4caP+/vtvrVq1SpmZmSoqKlJxcbHKy8u9tsrzl8Vi0dy5ge2Z2piFhITo8ssv14033qiwsLBgpxOQXr166dlnn1X79g3Tkg4AEBw5+WX69rfMWv1cLy516NN5G3TSkDS1a1HzB0oH25RVqJIyR8Dn3ye1ebQSYwO7Sw0AAAAAANRORUWF3n//XVP8+ONH6dZb7/TYprkql112pXbvztHnn3/qEf/qq8916aVX+FQYUZUHH3y0ykKaAzVv3lyTJr2sSy+9cH9HG0nKzd2jzz//VFdcMa7GNe66696A8zzhhBNVUFCgiROf2h9zu936/PNPdeutd9Q4v7CwUO+886YpPmzYCD311LN+d8xIS2un6667ya85DW3Zsr9NsSuuuCqg75eWLVupZctWdZHWIa158xSv8V27djbI+V966QVlZ2eb4kcdNbTKor260qNHT40aNVqzZ8/yenz37t36/PMp+vzzKbJYLGrXrr26deuh7t17qGfPXurcuUutcqzq77h169SA1zwUNG/ewlRMs2vXriBlA8BXTa6YxuVy6dNPP9Vnn32m1atXm47XRRHNPr68eW4od9xxh+bOnas//vhDFRUVAa0RHR2tMWPG6NJLL1WnTp3qOMOaHXvssZo9e3atfjj07NlTF154oU499VSfK+YBAE1TcZlDU+dvlsPprvVaDqdbU+dn6JgjWql3un/dYZZtrJt9qfv4eV4AAAAAaOwqnS4VFFcGOw3UIC46VKF2thyeM2eWCgryPWIxMTG6445/+XUt4IYbbtHPP//kccHY4XDo66+/0JVXXh1QbkOGDNVxx53g8/g2bdrq8suv1CuvvOQRnzbta11++ZX1fm3jzDPP0hdffKrNmzftjy1Y8ItPxTRffPGpSktLPWLJyckaP/6Ret96JlgOvoAuSb160XG/PiUmei9UKigo8BqvK+Xl5fr3vyfpiy/MXWlsNpsuvfSKej3/PvfdN17btm3VqlUrqx1nGIY2b96kzZs37e/wFB0drT59jtDw4SN0wgknKioq2q9z5+Z6/yw1KirKr3UONQdv3SfV//cjgNprUtUIK1eu1H333ad169ZJqrpwpi7eKNZlUU5dOP/883X++eervLxcy5Yt29+RZ8uWLdq2bZsKCgo8co6MjFRsbKzS09PVvXt39e7dWyNGjAh439a6MH78eI0fP16bN2/WsmXLtHr1aq1fv147duxQdna2Skr+V0VvtVoVFRWlxMREdevWTUcccYQGDhyo7t27By1/AEDDcThdmjp/s4rroCPMPoZhaP7ybHVoFafoCN8+nNldUKZtu4prfe7oiBB1aOV/VxwAAAAAaIwqHC69PW2VlqzLqZMbIFC/QuxW9evcTONO6a6wkMO3qGb69Kmm2DnnnK+EhAS/1omIiNDll1+pp59+wiM+bdo3ARfTjBt3jd9zzj33An3wwbsqLCzcH9uxI0uLF/+hAQMGBpSHr6xWq4499jiPYpqtW7eooKBAcXFxVc4zDMPU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beHePgkJCRo//lHZbDaPuNPp1L333qX//Odtn//dq4rT6ajV/LqyZs0qPfHEBJ1//llauvQv03GLxaK7775P/fr1D0J2AALVJIppjjzySF199dUyDEMWi0WbN2/WrbfeaqqEBAAAjYthGJr313ZlZhcpe0+ppvywXrmFwS2INQxDyzflesS27irWnsJybd1VrJz8MpVXunz+MOVAvdLpSgMAAAAAQGN11133mLY6ys7O1o03Xqs1a8zbmBwoMzNDN910nTZv3mQ6dvfd95q2EfLVvnm//bZQd999u/bsqbpzrsPh0Guv/Vtvvvma6dhxx52gI48cVO25vHWSmDt3tt5441W53dV3FF69epWuueZKrVu3VtLeC8OBevDBRxUREeERy8vL0/XXX6Ovv/7C52s/27dv0/PPP6srrzR3uznY2LGnmmJLl/6lJ56YUO3FeIfDoffff1fjx98rwzAC+jovXDhfF198nm699Ub98MNcv24W37x5k+666zbT38kxxxxn+l5uqsrLy5Wfn+f1z+7dOcrK2q6VK1fohx++1+TJb+mOO27W6NEjNX78vVq1aoXXNTt0SNerr76pVq3M22MdDnJz92jSpIk66aRReuKJCVq27G+/5ufl5enppx/X448/Yvq3wWq16qabbvN5raOOGqrbbrvTFHe5XHrjjVd1ySXna86c7/wuiikrK9PUqV/rnHPO9GteTQzDqPL7MTc3Vzt3ZmvDhvX67beF+vTTT/T444/ojDPG6rLLLtLUqV95LQ4KCwvT+PGP6LTTzqjTXAHUvybzk/a2225TTk6OvvzyS1ksFv300086//zz9dxzz6lNmzbBTg8AAHixZN1urThg+6TCkkp9Om+DTh7STm2aB6ed5fbdJco7oKDH4XKrrGLvLzmGYai4zKHiModCQ2yKiQhRdESIrNaaPyCKiQpVWouYessbAAAAAADUTufOXXTllVfrjTde9Yhv2ZKpK6+8VCeeOEYnnDBK6emdlJCQoMLCAmVkZOj77+doxoxpqqgwF0GceebZGjz4qIBzOvvsczVlyseS9hZdnH/+/2n06JM1fPgItWjRUqGhocrJ2aUlSxZr+vSp2rIl07RGbGysbr/9rhrPdcQR/dWzZy+tWLHcI/6f/7ytX39doLPOOkd9+/ZTs2bNZRhu5ebm/lPEMFc//viDx41H55xz3v68/dW+fQfdeec9mjDhIY94aWmJnnrqcX388Uc6/vgTNHDgELVs2Urx8fFyOp3/fD02a9WqlVqw4BetXLm3kKJFi5Y1njM9vaOGDz9av/zyk0d82rSvtWzZUp155tk64oh+SkhIVHl5mXJycrR48SLNmvWttm//3/ZBl1xyecDbXP3220L99ttCRUZGatCgIerevYe6deuuVq1aKyYmVpGRkaqsrNTu3Tlav36dfv75R82ZM9vUCSkiIkKXXXZFQDk0Rh999L4++uj9OlnLYrHotNPO0C233GEq2DoclZaWaOrUrzR16ldKTExSr1691bt3X6Wnpys+Pl5xcfEKCQlRaWmpdu/erQ0b1uvPPxfp118XyOHwXtxy0UWXqkuXrn7lcdZZ58piseq55542Feds2rRR48ffq9jYWA0ePFS9e/dWu3bt1bx5iiIiImW1WlVWVqrS0lLt2JGljIzNWr58mf7443dVVFRUeU6bLbACx507szV69HEBzfWmU6fOuv/+h9S1a7c6WxNAw2kyxTSS9MQTT6hVq1Z69dVXZRiGli1bpjFjxmjMmDE6/fTTdcQRRygyMjLYaQIAAEkbthdowfIdpnhFpUtf/7JJI/unqke7xAbPa8VBXWmKSr3/YljpcGmPw6XcogpFR9gVExmqsBCb17GS1LN9oqy1uCsLAAAAAADUv0svvUKbN2/S7NmzPOIul1MzZ07TzJnTfF5rwICBuuWW22uVzznnnK+srKz9RR6FhYX69NOP9emnvhWqhISE6IknnvFpyxVJuvPOf+maa8aZCoPWrFmtxx57xKc1LrzwEh111LCAi2kk6eSTT9GePbv16qv/Nh3LzMzQO++8pXfeeSvg9b256657tGTJYtO2UJmZGZo06dka5w8ffrSuuuragItp9iktLdW8ed9r3rzv/Z5rtVp19933qVWr1rXK4VBjsVh01FHDdOWVV6t79x7BTqdRys3do59+mqeffpoX8BrnnHO+rr/+poDm/t//na3U1DZ6+OEHlJeXazpeWFio2bO/1ezZ3wacnyR1795Tt9xyu1JSWtRqndpKTU3VhRdeolNPPcO0zRWApiMoxTSXXHJJrebHx8crN3fvP7ROp1PTp0/X9OnTZbPZ1KJFC8XFxSkqKqrWeVosFr333nu1XgcAgMPNztxSfff7liq3SnK7Dc39Y6sKiis0pEeL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MGVEOwy5LQKtInzh7ma58ounuwRB/rIa5zYajUhMrmzxVFauh1antylOb1llS6mQJnI08fW0aR4iIiIiIiIiIiIiIiIie7l8Ms369euh15uemPP398fKlSsRERHhkDWaN2+On376CX5+fibjer0e69evd8gaRERErkDmIUHb5n4Y3r05nhgZiwf6t0S3toFoekPySvNghUmVmKqkZpegSFlesV2sLq9m76p5uElMWjqxKg0RERERERERERERERHVJ5dPptm3b1/Fz0ajEYIgYNasWWjSpIlD1wkMDMTMmTPNWl/s37/foesQERG5CpFIQGgTOXq1D8HDg1vhsRHtMKhrONpH+dfq+ISLlVVp9AYjVGU6m+K4sSqNh7sEMWE+Ns1DRERERERERERERERE5Agun0xz8eLFihZPABAcHIxhw4Y5Za0777wTwcHBACpbPV28eNEpaxEREbkaL08pYqP80aypV437FqvLkZxZUrGtLNUCNyWk1oZYJILMo7JdY7vmfpCIXf7jCRERERERERERERERETViLn+2qqCgAEBlVZoBAwY4db1BgwaZVKe5vj4RERFVSrqUb/J+WWJjiyeFTGqSNBsXzRZPREREREREREREREREVL9cPplGr9ebbIeFhTl1vZvnNxgMTl2PiIioodEbDEhMzq/YLi3XQ6uz7f1ScUOLp/AgBXy93O2Oj4iIiIiIiIiIiIiIiMgeLp9M4+Vl2mrC29vbqespFAqTbblc7tT1iIiIGppLGcVQl2krtm2tSiPzkJi0dIpvwao0REREREREREREREREVP8k9R1ATcLDw1FYWFixnZeX59T1bp7f2ZVwiIiIGpqTFyvfK/UGI1RlOpvmUcjcKn6We0oRFaqoZm8iIiIiIiIiupUsXfoVli37ulb7zpw5GyNGjHJyRESWjR59F7KyMmu17/79R50cDRERETmKyyfTxMbGIiEhAYIgAAAuXLjg1PWuz280GiEIAmJjY526HhERUUNSUKJBeo6yYltZqgWMRqvnkYhF8HQTV2zHRvlDLHL5gnlEREREREREREREtZKRkYELF86hqKgQJSVKlJWVwcPDA56eHvD19UOzZmEIDQ2Fl1fdXmSYkZGB9PTLyM7OhFJ5LS6JRAIvLy94eSng7e2D6OhoNGnStE7jIiJyNS6fTNO/f3/88ssvAK4luGzfvh3l5eVwc3Or4UjraTQabN++HYIgwPj/Jwb79+/v8HWIiIgaqoRLphXcbG3xpJBJKxJlBUFAbKS/3bERERERERERERER8O67b2PjxvW12lcsFkMqlcLNzQ3e3j7w9w9AYGAgmjePRIsW0YiL64DAwECHxpeRkYF77x1R6/0FQYBMJodC4QVvbx+0bBmDdu1i0bXrbYiMjHJobPY6cuQw/vhjLQ4dOoCCgoJaHRMcHIK2bduhXbtYdOvWHa1bt6n47tQR1Go1du36Fzt37sDx48dQUJBfq+P8/PzRunVrdOnSDQMHDkFoaKhN6x85chjPPvtErfYVBAFubm6QSqWQyeTw8/NDQEATREREIDIyCm3atENMTCuIxeKaJyMispPLJ9P06dMHzZs3R1paGgBApVJh2bJlePrppx2+1rJly6BUKiveoJo1a4a+ffs6fB0iIqKGSKsz4FRK5R9apeV6aHUGq+cRBAEKmbRiOyLIC95yxyfJEhERERERERERUfX0ej30ej3KyspQXFyM9PTLZvs0axaGvn37Y8iQYWjTpm2dx2g0GqFSKaFSKZGVlYVz585i48YNAIBOnTrjoYceQZ8+/eo8rhslJSXigw/m4MKF81Yfm5WViaysTOzYsQ0A4O8fgCeeeAqjR99nV0xFRYX44Yfv8Mcfa6FUKms+4CYFBfnYv38f9u/fh8WLP0O7drG4665RGDVqNKRSac0T2MBoNEKj0UCj0UCpVCInJxsAsHdv5T4ymRy33dYdgwcPxR139HVKAQYiIqABJNMIgoBp06bh+eefr6gY8+WXX6JHjx7o1KmTw9Y5evQovvzyy4o1BEHAq6++6tDMTyIioobsXHohNOX6im1bq9LIPSQmLZ3iogPsjo2IiIiIiIiIGr/58z9BfHwHs3GZTF4P0TRM2dlZGD/+YZOxwYOHYtq01+spoobvhx9WwmDQm42/+uorSEg4UQ8ROd6VK+n4+ecV+PnnFejQoSMmTnwMPXveXt9hAQCOHTuKY8eOYsiQ4Xj11TegUNRtyyQAWLbsayxfvhR6vfnjwBb5+Xk2JeXc6M8/1+GLLz5FcXGRQ2ICgFOnknDqVBJWrPgWEydOwYgRIyGROCeppjpqtQr//rsd//67Hf7+ARgz5kE8+ODD8PDwrPNYiKhxc/lkGgAYPHgwxo4di19//RWCIECr1WLy5Mn4+OOPMWDAALvn37ZtG6ZNm1bxJicIAh544AEMHTrU7rmJiIgai4SLlS2e9AYjVGU6m+a5sSqN3FOKqGBvu2MjIiIiIiIiosZPLveCr69ffYfRoOn1BhQVFZqMqdXq+gmmkfD2tvzdlkTSIE7BWe3EieN4+eXncccdffHGGzMQENCkvkMCAGze/DfS09OwePHX8PSsu6SKpUuXYNmypVXeLpd7ITq6JQIDAyGXy6HX61FUVIS8vDxcvHgBGk2ZQ+PRaDSYO/cdbN68qdr95HIvREVFISgoGDKZDBKJFGVlpSgoKEB6+mVcuZIOo9Fo8disrCzMm/cewsMj0KVLV4fGb638/Dx89dVirFu3Fq+99iZ69XKNJC8iahwazDv522+/DY1Gg3Xr1kEQBJSWluLZZ5/FkCFD8Morr6B58+ZWz5mamoqPP/4YW7ZsMXlDGD16NGbPnu3A6ImIiBq27AI1svMrv1hRlmqBKv6Yqo5UIoa7tLKfbWyUP0QiVoEjIiIiIiIiIiJypsGDh2Lq1Ncs3qbT6VBeXo7CwkJcvZqD5ORLOH36FI4ePYySkhKLx+zevROnTydh3ryP0b59nENi/P77nxEUFGQ2bjQCJSUluHo1G8eOHcWGDX8gKyvLbL9Tp5Iwe/ZMfPjhxw6JpyY7dmyzmEgjCAIGDx6K0aPvQ6dOnavsgqHT6XDx4gUcOLAf27dvwZkzp+2Kp7S0FK+++hIOHz5k8fagoGCMHHk3+vbtj5YtY6rtzlFcXIxjx45g+/at2LXrX5SWltoVmyWbNm2zOG4wGFFeroFKpUJubi7S0y/jwoVzOHLkMNLSUi0ek5WVialTX8CUKU/isceecHisRHRrajDJNCKRCPPmzUNcXBwWLFiAsrIyGI1GbN68GZs3b0aHDh0wZMgQxMbGonXr1vD19TWbo7CwEGfPnkVSUhI2b96MEyeulde7nkgjk8kwdepUjBs3ri7vGhERkc0On8lBcmYxIkO8ERmsQBMfD6e0KDx5Q1UawPYWT94yaUV8giAgNtLf7tiIiIiIiIiIiIioelKpW42VnUJDmwGIRd++/QFcS/bYt+8/rFr1Cw4dOmC2f25uLl544Rl89tmXDkmoUSi8q4zRz88PERER6NKlGyZOfAzffrsUy5d/Y1Y9ZefOHTh06AC6detudzzV0Wg0+OyzhWbjCoUC8+YtQJcu3WqcQyKRoHXrNmjdug3Gj5+I9PTLWLNmNf78c53V8ej1esyc+brFRBovLy88+eQzuOee+2tdMcnb2xt9+/ZH3779UVxcjLVrV+Onn36oMrnKFrWpNBYd3RLdu/eo2E5JSca6dWuxbt0alJWZVvUxGo1YuvQrlJaW4rnnXnRYnER066qXZJqBAwfadbxYLIbRaIQgCBVvkidOnKhIjgGuvQHJ5XJ4enqitLQUKpUKOp1pO4rrx14/qScWi7F8+XIsX768Ynzr1q12xUpERORMlzKLkZmrQkauCnsTMuHlKa1IrAkP9ILbDVVgbKUp1+NcWmHFdmm5Hlqdwep5BEGAl2dli6eIIC94y93sjo+IiIiIiIiIiIgcTyKR4I47+uKOO/riwIF9eP/9OcjONq0Io1ar8OqrL2PFipVo0qRpncX1+ONPQyaT4/PPF5ndvnz5Uqcn02zbtgWZmRkmYyKRCB99tAgdO3ayac6wsHC8+OIrmDLlSVy+nGbVsUuXfoX//ttjNh4V1QIffbQQYWHhNsUEXEusmTjxMYwefS8WL/4c69evs3kue0VGRuGll6bi0Ucn4MMP38euXf+a7fPjj98jIqI5Ro0aXefxEVHjUi/JNFeuXDFJhLHW9eSX6wk113++kVarRWFhIQoLC2s1DwAolUqTjEpnXNlPRETkKKUaHbLyTHtaK0u1SLyUh8RLeRCJBDRrKkdk8LXkGj+Fu03vbadTC6DTVybP2FqVxstTatLSKS46wKZ5iIiIiIiIiIiIqG51794T3333E6ZOfQGnTiWZ3FZQkI85c97Gp59+WacxjRs3Hjt2bENiYoLJ+IkTx1FcXAxvb2+nrW0piWPQoKE2J9LcSC6Xo02btrXe//TpU1ix4juz8fDwCHz55VL4+dVcAaY2fH39MGPGLPTp0xdz5rztkDltFRDQBPPnf4Jvvvkfvvnmf2a3f/LJfHTu3MWuJCIiIlF9Li4IgtX/AaaJM0ajsSKpxtr/rh9741zX4yIiInJ1adkl1SamGgxGXM5WYveJDKz45yy++/sMdhy7guTM4lpXljEajUi4VNniSW8wQlWmq+aIqnnLKqvSyD2liAp23h+zRERERERERERE5Fh+fn5YuPBziwkKBw7sx+7dO+s8prFjHzYbMxgMOHLEvN2RIx0/ftRsbODAQU5dsyqLFi2AXq83GROLxZg9+z2HJdLc6I47+mLZsh/QtGmgw+e21pQpT+LBB8eZjZeVleGLLz6th4iIqDGpl8o09nBkoguTZoiIqCFLybKuP22xqhwnL+Ti5IVcSMQiNGsqR4eWTRAVUnVSy5WrKuQXV/aeVZZqARsqy7m7iU1aTsVG+ZtUqSGyhzjjPAR1IXTRXQFrPt8ZjZBcPAyjzBf60BjnBUhEREREREQuT6fT4fz5c0hJSUZ+fj40Gg3c3KTw8/NHeHgE2rRpCze3umlXbTQaceHCeVy4cO7/YymHXC5HREQE4uLi4eWlqJM47FVUVIjk5GRcuZIOpbIEarUaHh4e8Pb2gZ+fP9q2beeUE/3kXD4+vpg9ew6eeGIyDAbTC/a+/fYb3HFH3zqNp2vX2yyOW9smyRo6nRZFRUVm482ahTltzaocOLAfJ04cNxt/5JEJiI1t77R1w8MjnDa3tZ577gUcOXII58+fMxn/99/tSE6+hKioFvUUGRE1dPWWTGNriyciIiICDEYjUq1MprmRTm9AalYJIqtJpAGAkzdUpQFsb/HkLav8skkQBMRG+ts0D5EJoxGy1XMg+/NjCEYjymP7ofjln2D0rPlLRaG0BN4Lx8Et6V8YBQHqUVOhfuAt65JxiIiIiIiIqMFLTEzA6tW/YPfunVCr1VXu5+7ujh49euH++8egW7fuNq317rtvY+PG9SZja9duQGhoKACgpKQEv/zyE/74Yy1yc3MtziEWS3D77b0xYcLkWp8ot7TujTZuXF/t7dfNnDkbI0aMqvJ2pbIEu3fvxKFDh3D06CFkZWXVOGdkZBQGDhyEMWMeho+PT43732jv3j2YOvVFk/NNgiDg448/Ra9eva2aC7jWKueJJyZBq9WajL/xxkyMHn2v1fM1Zu3bx2PQoKHYvPlvk/FTp5Jw6lQS2rWLrbNY/Pz8IJPJzJ6/hYWFTluzsLDQ4nlOiaTuT7uuXbvabEwmk2H8+El1Hkt9kUikeO65l/Dii8+Y3fbbb7/i1Ven10NURNQY1EsyzQcffFAfyxIRETUa2flqlGpsa7d0o6jgqpMOVGVaXLxSeYVFabm+1u2hbiQSCZB7VH7kiAjygre8bq7kokbMaIR85VuQ/fVZxZBb0r/wmX8fil5bA8iqThQTSkvgM/8+SM/tv7ZtNEL+IhyuEAABAABJREFUxwIIunKoHprDhBoiIiIiIqJbQH5+PhYsmIft27fWan+NRoOdO3dg584duO22Hpg+fSZCQkIdFs/Ro0fw9ttv4urVq9Xup9frsGvXv9i9eyfGjHkQzz33EqRSabXHOJtSWYI5c2Zj377/UF5u3YVYKSnJWLZsKVau/AmTJz+ORx6ZUOtje/XqjYceegQ//7yiYsxoNOLdd2dhxYpf0bRp01rPpVIpMXPmG2aJNIMHD2UiTRUeeWS8WTINAGzfvrVOk2kAQC6XmyXTKJVKp63n5uZucTwzMwORkVFOW/dmxcXF2LNnt9n4oEFDIZfL6ywOV9C9ew/ExLSyUJ1mB6ZNe4PdSojIJvWSTHPPPffUx7JERESNhrUtnizxU7jDx8vyH34AkJScD4Oh8goLW6vSKDylJn+sxEUH2DQPUQULiTTXSc/th8/8+1D8+loAXma335xIc6Pr8zGhhoiIiIiIqHG7ePECpk59oVaVUyw5eHA/Jk58BPPnf4IOHTraHc++ff/h9denWpWIYjQa8euvK5Gamor58z+psxZUlhQXl2Dnzh12zaFWq/HFF5/i3LmzeOutd2qdIPTMM8/h+PGjOHUqqWKssLAQs2a9iS+++Apisbiaoyu9//4cXLmSbjIWFhaGN96YUfs7cYtp1ao1oqNb4uLFCybj+/b9h+eee7FOY1GpVGZjXl7m3ws5ikKhgFgsgV5verHjv/9uR8+etztt3ZsdOLDPLAYAGDXq7jqLwZUMHz4C589/YjKWl5eLs2dPo02bdvUUFRE1ZKL6DoCIiIisl5JpfzJNdS2eDEYjEi/lV2zrDUaoymyrhKO4ocWT3FOKqODqW0sRVauaRJrrpOf2w/vDewG16fOkukSa62R/fQb5yrcAtiQlIiIiIiJqlDIyruC5556qMpEmNLQZ7rijL0aNugd9+/avsspEUVEhXn75OZw5c9queNLTL2PGjDdMEmnEYjHi4ztiyJDhGDFiFLp37wG53HJiwP79ezFnztt2xeAsMpkM7dvHoW/f/rjrrpEYPfpeDBw4GO3axVaZLLN58yYsXlz13/w3k0ikeO+9eWaJE8eOHcHy5UtrNcfvv/+Gbdu2mIxJpdfmrer3Ttd0797TbOzSpYvVtkxztIKCAovr+fr6Om1NQRDQqlUrs/G//lqP48ePOm3dmx05cshszNPTE23b1m1lIFfRvXsPi+OJiQl1HAkRNRb1UpmGiIiIbKcq0yKnwP4/SCOrafGUmlViUolGWaq1KbnA010CqaQydzc2yh8iESt+kI1qkUhznfTcfmDGcGDu34BMAahL4P3hvdUm0lzHCjVERERERESNk8FgwDvvvIWCgnyz2+LjO+KFF15C+/bxZrddvHgBixd/hr1795iMq9VqvP32DHz//c/w8PCwKaYFC+ZBrb5WVUMsFmPcuPF48MFx8Pf3N9lPo9Fgy5ZN+OyzRSguLjK5bcuWf9CnTz8MHjzU4hrTpr2OF154CQCQnZ2NCRMeNrl98OChmDr1tRpjlclqbhvTvn0c+vUbgN69+yAiojlEIsvXdJeVlWHr1s347rtlSE+/bHLbr7/+jJ49b6/yxPjNQkObYfr0tzBjxusm499++w06d+6KLl26VnnshQvnsWjRx2bjzz77AitZ1EJcnPnzxWg04ty5M+jYsXOdxHD48EGL42FhEU5d97bbeuD06VMmYzqdDi+99Bwef/xp3Hff/fDw8HRqDGfPnjEbi4lpXeuKTI1NdHRLyOVeUKlMW3xZ+j0REdUGK9MQERE1MKkOaPEklYgQ2qTqL0BOXswz2S5Ra6vYs3oKWeVVRoIgIDbSv5q9iaphRSJNhaT/riXU5GUCM4bXKpHmOlaoISIiIiIianxWrvwRJ04cNxsfO/YhfPXVNxYTaYBrJ2g/+eQzPPXUs2a3paam4MsvP7c5prS0VACAu7s7PvtsCZ555nmzRJrrt48YcTd+/PFXhIWFmd2+cOECFBcXW1xDJpPB19cPvr5+UCjMKwZLpW4Vt1f3X1WtpMRiEQYOHIwffliJb775Ho88MgGRkVFVJtIAgIeHB0aMGIUff/wFAwcONrnNaDTiu+++qfJYSwYOHIx77rnPZMxgMGD27BkoLCyweExpaSlmznwDGo3GZLx37z548MFxVq1/q4qObmlx/MqVK3UWw6+//mw2JhKJqk2icoR7773fYoWlsrIyfP75QowaNRxz576DnTt3oKDA8mPQXsnJl8zG2rRp65S1GooWLVqYjdXl45GIGhdWpiEiImpgUhyQTBMe6AWJ2PIXGkWqcpOEndJyPbQ6vdVriMUiyNwrP2pEBHnBW15//bupAbMlkea6pP+ACS2A8jKrD2WFGiIiIiKi6mn1WhSV2/83KjmXj5sCUrHlljq3Eo1Ggx9++M5sfNCgIXjppWkQavF338SJjyE39yp++22Vyfjvv/+GCRMmIyAgwOb4Zs16t1Yn/wMDA7Fw4ReYMGFcRUUbAMjPz8Nvv63C5MlTbI7BVkFBwZg790ObjvXw8MQ778xFTk4OEhJOVIwfO3YU58+fQ0yMeSudqrz00jScPHkCFy9eqBi7evUq3n33bXz88adm/8YLFsxDSkqyyVhgYBDeemu2TfflVhQYGGRxPCcnu07WX7nyR4stfOLi4uHj4+PUtYOCgvHww4/g+++/tXh7cXEx1q//A+vX/wEACAsLQ7t27dG2bTvExsahXbt2kEhsf20uKipCWZn5913NmjWzec7GwNJjsq4ej0TU+DCZhoiIqAHRGwxIy7b/i8rIEPOrkK5LvJQH4w3VOG5s92QNhUxq8iVFXLTtXyjRrU22eo5tiTTX2ZBIU7H2X5/BKHGDesws29cnIiIiImpkyvXl+D5pFU7kJEJr0NV3OFQDqUiCDoHtMSF2DNzEt+5FLlu2bEJRUaHJmEKhwNSpr9cqkea6Z599Ebt27TQ5OavVarFu3Ro89tgTNsXWs+ftZtVZqhMeHoFJkx7D4sWmfyuvX78OkyY9ZtX9cQUSiQQvvvgKpkyZYDL+33+7rUqmcXd3x9y5H2LSpEdQWlpaMb537x78/PMKjBs3vmLs77//wl9/rTc5XiwW491358LHx9e2O3IL8vDwgEwmN0nsAq4lejiTTqfDDz98h2+++cri7ZMnP+7U9a978slncfHiRezZs6vGfdPT05Geno7NmzcBuPa7i4vrgF69bsfQoXdarEhVnfz8PIvjcnnN7dgaM39/8++gb26NR0RUW2zzRERE1IBk5qmhKbe+SszNIoMVFsd1egOSUir7husNRqjKbPtiVOFZeWWF3FOKqOCqE3iIqiLOOA/Zn+a9y+uS7M+PIc44X68xEBERERG5ku+TVuFw1nEm0jQQWoMOh7OO4/ukVTXv3Iht2PCn2diYMQ/Bz8/Pqnk8PT0xadJjZuPXq0/YYsqUJ60+ZuzYh+HtbfpdS2ZmBo4cOWRzHPWpffs4BAcHm4wlJSVaPU9kZBSmTn3dbHzJki8q5ktLS8VHH31gts9jjz2Jjh07W73mrc7Dw8Ns7ObWWbVVUlKMwsICs/8KCgqQnn4ZR44cxvLlS/HAA6Px9ddfwmAwmM1x++13oHv3njatby2RSIQPP/wY48aNtzqJraysDIcOHcCnn36CUaOG4c03X0Nqakqtj78xYexGcrmXVXFcp9VqLf7ua/pPp9PatJ6zOPLxSETEyjREREQNSEqm/VVpmvh4QiGzfCXaxStFKL0heUZZqgVuqFJTW3IPqUkbqdhIf4hEDeuqKHINgroQgg2PQYfGYDRCKOUVLEREREREwLXWTidyrD/BTfXvRE4itHrtLdnySavV4tSpJLPx4cPvsmm+QYOGYuHCBSgvr6zmm5WViezsLAQFBVdzpLmwsDDExra3OgY3Nzf06zcQf/75u8n48ePH0LXrbVbP5wqioqKRlZVVsX3mzCmb5hkxYhQOHz6ITZs2VozpdDq89dZ0LF36HWbOfANqtdrkmK5du2HixMm2BX6Lk0rNX1NsTbCYMOFhu2Jp3boN5swxT5RyJrFYjOeffwmDBw/FV18txv79e62eQ6fTYfv2rdi161889NAjeOqpZyEWi6s9przccoKIrck0//67HW+9Nd3q4xYv/rpWLerqiqXHo1brWgk/RNRwsDINERFRA5KSVWz3HJEhlqvSAMDJS6blQUvUtv2hoZBV/tEiCAJio6wrU0p0nS66K8pj+9VrDOXt+0PXoku9xkBERERERES2O3v2jEniCwA0bx6JsLBwm+ZTKBQWK5gkJiZYPVePHr1sigEAevY0P9ZS0pCr0Ov1KCkpqbLChUwmM9k/P7/A5rVee+1NhIdHmIxlZFzBuHEP4Ny5sybjfn7+eOeduRCJeMrMFpYSFaTSum8pN3DgYHz22RKzx1FdadOmLRYt+gKrVv2OSZOmoHnzSKvn0Ol0WLHiO0yd+qJZwtfNRCLLyTauVimmrrnK45GIGgdWpiEiImpA7uoZidSsEiRnFiP9qhIGg/UVO6pq8aTR6k2q0pSW66HVWd9SSioRwcOt8o+5iCAveMv5BwvZSBBQ/PJP8Jl/H6Tn9tf58tpWPVD80o9AA+s3T0RERETkLFKxFB0C2+Nw1vH6DoWs1CGw/S1ZlQYAzp8/azbWunUbu+Zs1ao1Dh40/Tv13LmzGDhwsFXztGwZY3MMlo49d+6MzfM5isFgwLFjR3DgwH5cuHAely5dQEFBITSaMqvm0et1UKvVNiVHyGQyzJ37IaZMmWCSSFVYWGiynyAImD17DgICmli9Bl1TVmb+7+rmVnffBcbFdcBDDz2CAQMGVrmPwWBAcbH1VYclEgm8vKq+MNGSiIjmePLJZ/Dkk88gLy8XR48eQVJSAs6cOY1z585BrVbVOMf+/Xsxd+47mDv3wyr3cXd3tziuVCqtirexsfR4dHfnd9NEZBsm0xARETUgfgp3+Cnc8X/s3XdYVNfWBvD3TIOBmaFKswE2FLH3GLvGkhhjNL2Xm/bd5KZ5UzSmGNN7brrJTTHtJsbYorEkxsSu2BsgIIj0MsDA1PP9YUSPZ4BpMIDv73nyxFlz9t4LBQZm1qzVr1skrDY7cgqrkZVvRNapSlSaLI2uD9AoERsR7Pw+tRI3XtIDOYVV2H+8BFsOFniUoz5II5kRnNIlwqN9iM4QtXpUzPmx2QtqrN2HoWLOjxC17j1pQkRERETU1t2cfBWAv8cGOWyNXE3+plao0Deqd92/24Xo/AIKAB51jThXfHyCLFZRIT+nMR07dvY4hw4dOkKpVMFuP/t16OxjbS5WqxXffPMV/ve/b1FUVOSTPauqqjzuNNK9ew/cf/+DePXV+gsSbrzxFgwdOtzT9C54tbU1TotDQkNDfX5WUFAQdDo9DAYDunTpil69kjF48FAkJnZpdG1+fj5mzrzU7TP79x+I99//2JN0AQAREZGYOPESTJx4CQBAFEUcP56B3bt3YuPG37F79044HA6na9evX4thw4bjsstmOL1frzc4jV/oxTSlpSWyWEhIaPMnQkRtAotpiIiIWim1SonEOAMS4wwQRRGlRvPpwpr8SuQVVzvtWtMpWg+Fov4OG4IgoFO0Hu1CtUjLrYBKIaCyxgq73fkvdc7W67Rn3+UWrFUjIcb5L3ZE7mjughoW0hARERER1U+j1ODOPjfAareiwlLp73SoESEa/QXbkeaMqir556m73SbOZzDIn++orHT/60Gn03mcgyAICA4OgtF4diy4zWZDTU0NtFqtx/t64vjxDPz73w8jJ+eET/e12bwr2Js162ps2bIZf/21SXZfSkof/OMf93i1/4UuPz/faTwqKtqj/ZYsWYG4uDhvUmrRBEFAly5d0aVLV8yefQ3y8vKwaNGHWLlyudPrP/tsEaZMuRQqlfzl3Hbt2kEQBIii9DlgT4r6AEiKfuozY8Y05Oef8mj/5uIsv6ioKD9kQkRtAYtpiIiI2gBBEBAREoiIkEAM7BEFs8WOnMIqZP7dtcZUe3pWbH0jns53JLsMAk53wgnVaWAy21BpsqLG3PATGMGBKijPKdZJjg9vsHiHyB3NVVDDQhoiIiIiIteolWpEasP9nQZRo5x1aggOdt6511XO1ntSTONp15Wz64MlxTTA6Y+3OYtpMjLS8X//dxfKysqa7UxXVVVV4vjxDKf3tW/fwWmRArmuob9balxcXBzmzXsGF110MebNe0LSZQoA8vJOYseObRg+/CLZWrVajaioaBQUSAua0tPTmjTnlkwURWRmHpfF27fv6IdsiKgt4E8JREREbVCARomuHULQtUMIRFFEUUUtsk4ZXSqmEUUR+zNL624LgoDgQDWCA9Ww2hyoNFlQWWN12vnGEKSRrEtO4JOq5FtnCmoML1wOTcZOn+/PQhoiIiIiIqK2R62Wd+bxtuOJs/XOzvFkH3dYrVZZTKNpvk5Edrsd8+c/6bSQJiwsDCNHjkLv3n3QsWMntGvXDiEhodBo1NBoAqBQKCTXP/vsfKxa5bxDh6cWLnwOp07lOb1v9epVGDp0GKZMcX/8D522b99eWUyhUKB79x5+yKb1GjduAvLyTuLdd9+S3bdr106nxTQA0K1bd1kxzeHDh5okx9YgPT0NJpNJFu/RI8kP2RBRW8BiGiIiojZOEAREhWoRFeraO5JOFlejzFjr9D61SoFwQyBC9QEw1dpgNFlgttgBABq1EgEaZd21naJ1MARrnO5D5A1HoA7FY65BTNYeKOzePel4LlEdCOP9X7CQhoiIiIiIqI1xNtKpulrercYdzrrdOBv91Jjq6mqv8nD2cXg7wsody5f/LOuEoVSqcO+9/4fZs6+BRuP6c0MWi9mnuS1Z8gM2bFjX4DWvvPIikpNT0KlTZ5+efaHYtm2LLNalS9dmHzPWmLi4OGzdutvfaTToqquuxZdffi4b05SWdrTeNcnJvfHnn39IYnl5J1FRUY6QkNAmyLJlc/b5CJwe6UZE5AlF45cQERHRheTA8dJGr1EIAnRaNeIigtE+Mhj6IA1CziucSekS0VQp0gXOcXwHwpe97dNCGgAQrLUwvH0ThBr323ITERERERFRy6XXy4tcSktLvNqzpES+3tk5jfEmj+rqatTWSt8QFRQUBKVSWc8K31u3bo0s9sgjc3D99Te5VUgDABUVFb5KC+npaXjrrddk8aioaMltk8mEuXMfh8Vi8dnZF4ojRw47HakzYoTzLirUMI1Gg0GDBsviZWXl9a4ZPnyE0/j69Q0XkbVVv/yyUhZr164dOyURkcdYTENERER1asw2pJ9074kLjVqJyJBA6LRnWwgHa9VIiHH/CSSiRlUUIfTdOxBYdKJJtlcf24qQl69kQQ0REREREVEbEhMTI4ud303FXc66RURHy89pjDd5OFvbvn0Hj/dzV21tLfbsSZXEYmJiMWPGlR7tV984JnfV1tZg7tzHYDZLO92MHj0Wn332JcLCpGPJjx07gnfeedMnZ19Ivv76S6fx8eMnNXMmbYez71U1NfKxRWf06NETsbFxsvjPPy/xaV6twbZtW5CRkS6Ljxs3wQ/ZEFFbwWIaIiIiqnMkuwx2u8PrfZLjw6FQCD7IiOgsoaYShoXTEFiY1aTnsKCGiIiIiIiobUlO7i2LHTlyBHa73eM9Dx066NI5jTl48IAXOcjX9uqV7PF+7iopKYbNJu0aO3jwEAiC+88JlZaWIjc3xyd5vfbay8jKypTEoqNj8OST8xEREYmnn35OluP//vct/vjjd5+cfyHYv38v1q37VRZPSenLLiA+FhISUu99giDgsssul8WPHj2C/fv3NmVaLYrNZnVaECcIAmbOnN38CRFRm8FiGiIiIgIAiKKI/ZmNj3hqjCAISE4Ib/xCIjecLqS5DAG5R5rlPBbUEBERERERtR0xMbGIjIyUxCoqyrFz53aP9svISJd1QFCpVEhK6un2Xjt2bENVlWe/e65fv1YW69mz4WIalUo+AkoUPXtjVVmZ/Hmk8HDPnhP644/fPFp3vl9/XY3ly3+WxJRKJZ59diEMhtNdlIcOHY4bbrhZtnbBgmdQUJDvkzzasoqKcjzzzFNwOOSfN7fffqcfMmo78vPln3/h4RENrrniilkICgqSxV988fkLZnzZu+++7bRT14QJk9C5c3zzJ0REbQaLaYiIiAgAcLK4GmXG2sYvbESnaB0Mwe7NxCZqiFBTCcPLV0JzfHeznsuCGiIiIiIiorZjxIiLZbGlSz0bhbJkyf9ksQEDBiEwMNDtvSwWC1auXOH2urS0YzhwYL8kplSqcPHFoxpc5+xF9/PHIblKpVLJYtXV9Y+kqY/D4cC3337tUQ7nysk5gRdffF4Wv+OOu9C3bz9J7K677kXv3imSmNFYgaeeesKrjkVtXVlZGR588J9OuwhddNHFGDZshB+yahtsNit27Ngmi3fp0rXBdWFhYbj22htk8YyMdHz44Xs+y6+lWrToI3z77WJZXKvV4t57/+mHjIioLWExDREREQEADhz3visNAKR0afjdEkRuEUUY3rgemmNb/XK8+thWGN64HhBFv5xPREREREREvnHllfJRH7/9th6pqbvc2icjIx1Ll/4ki8+adZXHuX366ccwGo1urXnrrddksZEjL0ZERKSTq8/SaoNkI46Ki4vdOvuMsDB5F5p9+/a4vc9XX30hG8vkLqvVinnzHofJVC2JDxo0BDfffJvsepVKhWeffQF6vV4S37t3Dz755EOvcmmrtm3biltvvd7piLPIyEg8+eR8P2TlP5988qHbX7cN+e67b53uN3JkwwVyAHDTTbciPj5BFl+8+Av88MP3PsmvpSkpKca///0wPv74A6f3z5nzBGJj45o5KyJqa1hMQ0RERKgx25B+ssLrfYK1aiTEGHyQEdFpqoyd0Bz83a85aA7+DtVx955cJSIiIiIiopalR48kpKT0lcWfeWYeCgsLXNqjoqICc+c+BrvdJonHxbV36QXv+vctx1NPPQGbzdb4xThdfLNz5w5Z3JWCHqVSibi49pJYZmaGR91YoqKiZcU7x44dxZYtf7m8x+bNf+Ljj993++zz/ec/b+HIkcOSWFhYGJ5++jkoFM5fCouLi8Pjj8+TxT///FOPR4C1NXa7HX/9tQn3338vHnjgXqdjiPR6PV599S2PR3y1Vl988RlmzrzUJ0U1W7duxkcfyb8OOnTogF69Gh7dBgABAQF45pnnnXbHevXVF/Hqqy+htrbGqxxFUXQ62qu5ZWVl4u2338CsWZdj40bn4+Fuu+1OTJkyrZkzI6K2SN6Dj4iIiC44R7LLYLd7/8tQcnw4FAqh8QuJXCQGhUKEAAH+6wwjCgJEbYjfziciIiIiIiLfePTRx3DbbTdKilby8/Pxf/93N559diGSknrWuzY7Owvz5j2BzMzjsvvmzHm83oKNxigUCjgcDmzduhlz5jyEJ5+cj4gI511/rVYrPvnkA3z++Wey+8aPn4jBg4e6dGbXrt1w8mRu3e3KykqsX78WkyZNdit3QRAwfPgIrFixTBKfP38uXn/9LfTu3afetXa7HT/++D+8/fbrdf8egiBA9KAz7J9//iEbEyUIAp566llERrZrcO24cRNwxRWz8NNPP9TFHA4Hnn56Lr788juEhYW5nU9LZbVaUF5e5vQ+u90Os9kCo7EchYVFyMo6jsOHD2HXrh0NFopERUXj5Zdfa/Brpy2rqqrCJ598iC+//C9GjRqDSy+djsGDh7r8/cBkMuHzzz/F4sVfOC2mu//+h2WdpOrTo0cSnn12IR5/fI6s4O+HH77Dn3/+gVtuuQ2TJ09zaySd1WrFpk0b8emnH7tceOiq+j4fRfH052t1dTWKi4uQm5uDtLQ07Nq1A9nZWfXup1AocPfd9+Gmm271aZ5EdOFq8cU0t99+OzZv3lx3W61W49dff0VMTIwfsyIiImo7RFHE/kzvRzwJgoDkhAvrHSjU9CwaNYy9RyLkwCa/5WCa/jDscd38dj4RERERERH5RvfuPXD77f/Ahx++J4mfOJGN22+/GZdcMgUTJ05Cly7dEBYWBqOxAllZWVi/fi1WrlwOs7lWtufMmbMxbNgIj3OaPftqfPfdNwBOd2m59torMXnyNFx88SjExMRCo9GgqKgQu3fvwooVy3DiRLZsD4PBgIceetTlM0eOvFjW0WHBgqdx9OhhjBgxErGx7aHVanH+a/hBQcHQaDSS2PXX34RVq1ZIOlYYjRW46647MHnyFEyaNBnduydBr9ejuroahYUF2LZtC1auXC4pTIqJiUGPHj3r7TRRn8LCQjz33NOy+HXX3Yjhwy9yaY9//eth7Nu3BxkZ6XWx4uJiPPPMPLzxxjsuFzO0dGvXrsHatWt8tt+YMeMwZ84TF1xHGmfMZnPd36/BYEDv3n3Qp09fdOvWHaGhYQgNDUVgYCBMJhPKysqQkZGG1NRUbNr0O2pqnHeMmTjxEowaNdqtPEaNGoMXXngZc+c+BovFIrkvP/8UXnzxebz11usYOnQ4+vTphy5duiAqKhrBwToolUrU1tbAZDKhqKgQmZnHcejQQWzdugXV1VX1nqlUKt3K8VyTJ4/3eO354uLa47HH5mLIENeKComIXNHii2mOHTsmqUQePnw4C2mIiIh86GRxNcqM8ieD3NUpWgdDsKbxC4lcJNptsB76DeZ+4wGHHSGHNje+yNk+ShUEu2utss9nmnY/TLPlLZ+JiIiIiIiodbr55tuQmXkcv/66WhK3221YtWo5Vq1a7vJegwYNwQMPPORVPldddS3y8vKwadNGAIDRaMT333+D77//xqX1arUaCxe+LBu31JDx4yfhnXfelHQcsVgsWLz4Syxe/GW96+bOfRqXXjpdEktISMS1196AxYu/kMTtdhtWrlyOlSsb//vUarVYuPAV/PDD9y5/DKfPsGP+/CdQUVEuiScn98Y999zn8j4BAQFYsOBF3HrrDaitPfsc2datm7F48Re44Yab3cqrrevXrz9uvfVODB06zN+ptEhGoxGbN/+JzZv/9HiPMWPGYf785zxaO2rUGHz00WeYO/ffyM3Nld1fU1OD33/fgN9/3+BxfgDQuXM8/vnPf6Ffv/5e7eOtyMhIXHXVdbjqqmvc6rhDROQKz/oONqOysrK6ql9BEJCUlOTnjIiIiJrHd+uOYuWWLBzMKkV1rbXJzjlw3PuuNACQkui8BTGRp2yZO+AwlQOCgPIBk1DRy/13+lmiO6PoqodhiYl3e61p2v2ovvY5yN6KR0RERERERK2WQqHA/PnP4brrbvSq48jUqZfh9dffRkBAgFf5CIICzz23ECNGjHR7rU6nw6uvvoVBg4a4tS4oKAiPPea7N47cd9/9mDBhkkdrDYYQvPba2+jVK9nttZ9++hFSU3dLYjqdDs899wJUKrVbeyUkJOKhh+bI4h988B8cPHjA7dzamg4dOuL662/C559/jQ8+WMRCGgA9evT0edcirVaL//u/B7BgwYtQqTzvh5CU1BNffvkdbrnldq+/R50vJiYWDz74KBYv/h4jR47y6d6uCg7WYdy4CVi48GUsWbICN910CwtpiKhJtPjONGq1Gna7ve52VFSUH7MhIiJqHrVmG9JOlJ/+f045ACAqLAjxsXrEx+gRHR4EhQ9+Wasx25B+ssLrfYK1aiTEGrzeh+gMR3UZbMd3nA38XVADwOUONZboziibdDNETQCsj3wG4aPHoT621aW1LKQhIiIiIiJqu5RKJe6//0FcdNHFePfdN3H48CGX18bHJ+Dee/+JUaPG+CyfwEAtXnnlDXzzzVf47LNFDY5UOWPEiJF45JF/Iy6uvUdnjhs3Hq+++iZefHEBiouLPdrjDIVCgQULXkTPnslYtOgjmEzVLq0bOXIUHn54DmJj49w+c9eunfjss0Wy+GOPzfX472T69BnYuXO7pGuRzWbDvHmP44svvoZOp/do35ZOoVBArdYgIEADg8GAsLBwREVFIz4+HgkJXdCnTz+fvzYXHByMWbOuchpvLT7++DMUFhbijz9+w19//Yl9+/a69LXrTGRkJCZOnIyrr74WMTGxPslPq9Xi7rvvw1VXXYuffvoBv/yywmmnGlcEBQVhzJhxmDbtMgwYMKjJR5+p1Wqo1RoEBwchLCwCERER6NixE+LjE9CrVy9069bDq/FSRESuEsRzZyi1QGPGjEFBQQFEUYQgCHj22Wcxe/Zsf6dF1CRKSqrgcLToL0kiakKCICAyUgcAOJxZiv9tOAaLxQ44eagODFChc7QeCbF6dIrWQxvgWX1s6rEi/LE3z6u8AWBIz2gM780xjOQ71qObYM3cKb9DFBG6+9dGC2pq23VCxeRbIGoCoAqLRsSEW1B6shCGl2Y2WlDDQhqis859bDqjuLgKLfzXSKIWiV9PRL7T1r6eFAoBERG6xi/0kM1mQ1pa2t9/dgAAYmM78kUoavE+/vgDLFr0kST2n/98hIEDB/n8rP3792LDhvXYu3cPsrOzJC+Ia7VadOzYGX369MHo0WMxcOBgKBSeNf1/9tn5sjFSS5asQFzc2WKSqqpK/PrrGmzduhnp6WkoLS2B1WpFUFAQOnbshH79BmDSpMlISurp2Qd7HpvNik2b/sD27duQlnYU+fmnYDKZUFNTI/u+6mzM0/kqKyuxbNlSbN++BYcPH0ZlpbFuH51Oh4SERAwYMAiTJk1Gly5dJWvT0o6hoCBfEhs0aEir7Thxzz13IjV1lyS2devueq6m1s5utyMt7RgOHNiPrKxM5ORkIy8vD1VVVTCZqmGz2REcHISgoGAYDAbExyeiW7du6NWrN/r1698sj8tpacewZ89uHD58CDk5J5Cfn4/q6iqYzWYAp0eeGQwGtGsXhQ4dOiIxsQtSUvoiObk31Gr3uj0REXnLbrfj1KkcAIBKdfpnr27dunnVuctdLb4zTefOnZGff/aHp9JS34yiICIiasnScssavL/WbMPRE2U4euL0OMSYiCDEx+gRH2tAu5BAl94dIIoi9md6/7gqCAKSE8K93ofoXKruIyHoImA9+gdES83ZO1zoUFPbrhOKxt8ItSYAEAQYBk6GoFBC1OpRMedHhLx8Zb0FNSykISIiIiIiuvCkpPRFSkrfutu1tbWwWCzQaNQIDNQ2ay46nR4zZ87CzJmzmuU8lUqNsWPHY+zY8T7ZT6/X4/rrb8T1198I4HRBX01NDQICAqDRaBpc261bd3Tr1t0neRA1N6VSiaSknj4rdGsK/BojInKPZ+XTzahPnz4AUPeiYEZGhj/TISIianKiKCL979FOrl5/qrgaWw7k45u1x7Bo5WGs3ZmDskpzg+tOFlejzFjrZbZAp2gdDMENPxlC5C5BEKBq3wuBI2+GqmPK+XeifMAkVPQaIVtX264TCsffAFF9eh60NrEfNBFn2zufKaixdpfP9mYhDREREREREQFAYGAgDAZDsxfStEUqlQp6vb7RQhoiIiKilqbFd6YZM2YMPv74YwCnXyzctGlT3cgnIiKitqig1ISqGqvH66trrDiUWYqB3ds1eN2B477p9paSGOGTfYicETRaaJInQNU+GZaD6+GoLPr7jr871CiUMBz4EwJE1MQkomjMNRDVARAAKAKDoU8ZI9vzTEGN4Y3roTn4O0RBgGn6wzDNnsdCGiIiIiIiohbsvvv+4TTuyvghoqYyY8Y05Oef8ncaRERE5GMtvphm4MCB6NatG9LT0wEA5eXl+OmnnzBz5kw/Z0ZERNQ00tzoSlMffbAGYfqAeu+vMduQfrLC63OCtWokxBq83oeoMYrQWAQMvw72E3thTd8M0WY5XVDTfwKqEvtBYa2FJaK9pBhG32csFAHO30UoavWoePxnqI7vgqgNgT2uW3N9KERERERERERERERE1MK1+DFPAPDwww/XdaMRRRGvv/46iouL/Z0WERFRk3BnxFN9EmL0ki5uFVVmiKJYd/tIdhnsdofX5yTHh0OhYCcPah6CQgFVfH8EjrwZypgedXFbSCQskR0khTSK8PYIjE9xts05GwqwdRnEQhoiIiIiIiIiIiIiIpJoFcU0Y8aMwezZs+sKaoqLi3HLLbegpKTE36kRERH5lKnWitzCKq/3iT+nW4zZasfitceweO0x7MsoRq3Fhv2Z3o94EgQByQnhXu9D5C4hUIeAflMRMGgmFEGh8vsFBTS9xnMsKBEREREREREREREReaTFj3k6Y/78+SgvL8fatWshCALS09Mxbdo0PPbYY7j88sv5YgkREbUJGScrIEJs/MIGqJQKdGinq7t9JLsMVpsDJRW1+G33SazdkYPyKgv0QWoEqJUen9MpWgdDsMarXIm8oYzsDMVFN8KWuRO24zsgOmwAAFX8ACj0EX7OjoiIiIiIiLxx4403Y/bsq126NigouImzIarfF198A4fD7u80iIiIyMdaTTGNSqXC22+/jXfffRcffvgh7HY7ysvL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IwgCdIFqSSwlUT4WkKgxosMG66H1PttPGd0NynYJPtuPiIiIiIiIiIiIiIioMa2imGbJkiXYsWOHrJBm6NChePnll31W7DJmzBjZuKitW7fi8ssv98n+LcGRI0dw8OBBWXzs2LF+yOasNWvWOI3X1taioKAAR48erbsmOTkZd9xxBy655BIolcrmTJOIyGdsdgdUSu8bxB3OKoPN7qi7bXeIqK61ub2PTquGQnH2MTBYq0ZCrMHr/OhCpICqY19Y0zdDtLlf2HUuQamGuudoH+VFRERERERERERERETkmhZfTCOKIt5//33JSCdBEHDFFVdg4cKFsuIXb4SEhKB9+/Y4efJkXezYsWM+278lePPNN2UxvV6PUaNGNX8yHjp48CAefPBBDBgwAG+88QZiYmL8nZLPnB5f5u8siKipma12LFpxCHGRwegSF4KEOAN0WrXTr//TMeffGERRxP7MUpy7sKrGAoii2zkZgjWSfZITwqH0QbEPXXgEpRKKhAFQxXaH5chG2E95/rOUuttwKLWeFXW5+/VERM7xa4nId/j1ROQ7be3ryZfPbxIREREREZFvtPhimh07diAnJweCINQV0vTr1w8LFixokl80e/bsidzc3Lq9MzMzfX6Gv/zyyy/47bffZPEbb7wROp3ODxl5Z/fu3bj88svxn//8B4MGDfJ3Oj4RHh7s7xSIqBkcPF4CKATklZqQV2rCpgOn0L6dDkmdw9FDqURkqLbu2oiI+r8/Z+ZVoNpsg0bzd5cuEag22yAo3Ht81AaooAvW1N0WIGDUwE4I1Qe494ERSeiADlfDnH8cxl1rYK8qc2u1KqQdIgZeDEHhuy50DX09EZHr+LVE5Dv8eiLyHX49ERERERERkS+1+GKajRs3ymJPPPFEk433SUhIqPuzKIo4ceJEk5zT3PLy8jB//nxZPDY2FnfeeacfMjpNq9Vi2LBhGDBgALp164b27dtDr9dDoVCgrKwMeXl52LVrF9atW4esrCzZ+vLyctx333349ttvJf92REQt2dHsUlnsZFEVThZVYf3OE4gI0aJHpzD06ByGDlG6eotHdx4ukNyusdhgsdrdzidUJy2a6dIhhIU05DMBMYmInHwHqo9sRdXhLYDdtTFkhkFTfFpIQ0RERERERERERERE5KoWX0yzb98+ye0ePXogJSWlyc4zGKSjBIxGY5Od1VzMZjPuv/9+VFRUyO5bsGABgoKCmjUfQRAwbNgwXHvttRg7diwCApy/YBsdHY2kpCSMGzcODz/8MNasWYMFCxaguLhYcl15eTnuvvtuLF++HBqNxuleREQthd3uQFpOeYPXlFTUYPP+Gmzen4dgrbqusCY+NgRq1enRS5UmC45mSzt9VFSZ3c5HqVQgOEgtiQ1IinJ7H6KGCEo1dMkXI7BTbxh3r4El/3iD12sT+0IT2aGZsiMiIiIiIiIiIiIiIpJq8cU05494GjFiRJOep9frJberqqqa9LymJooiHn/8cezfv19236233oqRI0c2e05DhgzBkCFD3FqjUCgwZcoUDB48GHfddRcOHDgguT8rKwuLFy/Grbfe6stUiYh8LuuUEWY3usdU11ix+2ghdh8thEalRJcOIUjqHI5SYw0colh3nd0uospkdTufkGANFOd0vtEHadCtY5jb+xC5QqUPQ9ioq2HOPQJj6jo4aipl1wgBWuj7jPVDdkRERERERERERERERKe1+GKa8vJyye3Y2NgmPe/8ziZms/vv8m9JXn31VaxcuVIWHzJkCB5++GE/ZOSdyMhIfPjhh5g9ezby8vIk93344Ye45pproNVq/ZSd90pLq+FwiI1fSESt1q5D+bBY6i+m0WikY23OvdZisWPvsSIczymHKIqS+yqqzLDbHW5mI0CrUUn26dJFj7LSajf3IXKTtiOEwdfBkb4FtuxU4JyHPk33YSitdACV3hU0CwIQEaGTxEpKqiDyYZbILfxaIvIdfj0R+U5b+3pSKASEhwf7Ow0iIiIiIiI6R4svprFape+y1+l09VzpG+ePQmrNY4M+/fRTfPLJJ7J4z5498d5770GtVjtZ1fJFRkbi0UcfxYMPPiiJl5WVYfv27Rg9erSfMvOeKIoQW+szP0TUKFEUkXGyAvU+w3tOh5jzFkpuGnQanCyUFhpUetCVRhughFop1O0vCAKS48P5fYiah0oDddJoKON6wnJoAxzlp6AIjYWifbKPPgflX0+iCH5+E7mNX0tEvsOvJyLfaVtfT600bSIiIiIiojatxRfTBAYGwmQy1d0+v9jF187vhNPUxTtN5ccff8TLL78si8fHx2PRokWycVatzZQpU/DGG2/gxIkTkvimTZtadTENEbVthWU1qK5xv+jlfKbz9qi12GG1uT466gxDkLRgtFO0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tecX0wiCgClTpnqcS2bmcWzc+BvS0o4hPT0NRUVFqKkxOX09rCGNjYA5dOigLJac3DzddLp06Yq+ffth7949dbHt27fh1Kk8xMbG1buuoqIcv/++QRILCQlttiKgtqC2Vj5uqDkneXTt2g2zZ1+D6dNnNNiNqr7xUQ1RKJQwGAxurYmKisZNN92Km266FUajEampu3DgwH4cOXIYR48egdFY0egehw8fwmOPPYL33/8IKpXzrlwB9YxaPHfc2YXI2ecjAAQEsJiG/K/VFdOsWLECzz33HIxGY90PDa62/auvwAYAfvnlF/z111946qmnMG2ab6uFiYjowlFWaUaITgOFBy1p92WUSAMiUGlyvypdH6SWPOYJgoDkhHC39yESVAHQJI2GKq4nLIc2wFF+qtE1qq5DodC69wsrERERERG1HgqNBvr+AzjmqRXS9x/ArjTkVMeO3o3G6dw5XhYrK3P/RXCDIcSrPLw1Zco0fPTR+5KCldWrf2m0mGb//r3Izc2RxPr1G9BgQUh9NmxYj08//Qjp6Wlur3Xm3KkOzpSWlshiXbt29cnZrpg5c7akmMbhcGDZsqW46657612zcuUK2WiqqVMvbdZikNbO2b97aGioz88JDAyEXq+HTqdHQkIievVKRv/+A13uQjV5cuNdis4XExOLpUtXur3uDIPBgNGjx2L06LNvFszJOYHdu3fhzz//wNatm+vtJLN//158+ukn+Mc/nH/PCA4OhlKphN1ul8Qb+zpt60pKimUxjUaDoCDPxl8R+VKrKqZ5//338fbbbzdYRONKVe75LzCeWVdRUYFHHnkEOTk5uPvuu32UNRERXSisNge+XnsMarUCibEGdGkfgo5ROqiUjXeEsdocOJRVCpzzGFVjscFqszewSk4QBOiDpJXvnaJ1MATzl0nynMIQhYChV8Oeux/WY39BtDp/t4AiOByq+IHNnB0RERERETW3uNvvAHB6bJB4gY8maA0EtRr6/gPq/t2IzqfT6bxaHxwsX99YRxTn+/j3hdOYmFj07z8Qu3fvrIudPJmLvXv3oG/ffvWu++UX+YinqVPde9N2dXUVnnzyMWzdutmtdY2x2RoeH280GmUxvb753iQ1btwEvPnmq5LiqxUrfsYdd9wFpdL5SJyff14ii82YMbPJcmxramtrUF5eLotHRUV7tN9//vMRBg4c5GVWLVvHjp3QsWMnXH75FSgrK8MXX3yG77//Fna7/Ovru+++wTXXXO+0O45SqUR4eDiKiook8YqKxjvfONO7dx9s3drw6M177rkTqam7PNq/uRQU5MtikZHtXG6mQdSUWk0xzeLFi/HWW28BkBfRnCmgCQ4ORo8ePZCUlITIyEjodDpotVrU1NSgqqoKxcXFOHLkCI4ePYrq6mrJXucW1bz11lswGAy47rrrmuvDIyKiNuBEYSVsdgdsdgcOZpbiYGYp1CoFOsfokRgXgoRYPQI1zh96j+WWw2x1QHPOeKaKKrPbOQQHqmTjnFISOcKQvCcIAlQd+0AZ3RXWo5tgO3lIdo261zgI9cz+JSIiIiKitkMREIAO994Hh8UCm4cvAFHzUYWEsCMNNSgoKMir9c6KYDzptKBS+f8lqylTpkqKaYDTo57qK6axWq1Yt+5XSSwgIBDjxk1w+czq6ir885/34tChA27n663KSmkxjSAIzVrUpFarMW3adHz11ed1saKiIvz1158YNWq07PrU1F3Izs6SxPr3H+i0OxI5l5mZ6bQxQfv2HfyQTesTFhaGBx54CKNHj8FDDz0Ak6lacn91dRXWrfsVM2fOcrq+ffsOsmKa9PRjTZZva3D8eIYsxs9Hain8/5OJC44cOYIXX3zRaRHN6bmTUzBjxgyMHDmy3krVc9ntdvz555/46aefsGbNGsl9giBAFEW88MILGDBgAJKSknz6sRARUdt1/KT8nRxWmwPpuRVIz62AQiGgfbtgJMaFoEucAfqgs09k7T9vxJPdLqLKwxFP5wrWqhEfq3d7H6L6CJogaFIugbJ9b1gPrYej6vTnriquJ5QRHf2cHRERERERNSeFRgNNu3b+ToOIvNRY95LGWK0WWUytbp0FXOPGTcSrr74Ms/lsV97169fioYfmQK1Wy67fvPlPGI3SosJRo0Y77dZTn/fee8dpIY1Go8Hw4RehT59+6Nq1G6KiohAWFgaNJgABAQGy18NWrFiGBQuedvncM2ec++8viiJsNluzjky64oorsXjxF5ICj59//tFpMc3SpexK4619+/Y6jffowddD3dGv3wA8+eRTePLJf8vu27VrR73FNN269cCePamSWHp6Gmw2K1Qq+feYts5oNCIrK1MW5+cjtRStopjm+eefh9VqlRTTiKKI3r174+mnn0bv3q7N1jtDqVRi9OjRGD16NA4cOID58+fj4MGDkv2tVisWLlyIL774wmcfBxERtV0OUUTmKXkxjeQah4icgirkFFRhY+pJtAvToktcCEJ0auSXVEM4p6OM0WSBw4XRhedSq5QIUEt/iU6OD5d1qiHyBWV4eyhGXA9bdips2alQ97jY3ykRERERERERkQfOdPL35Xq9vnW+uSs4OBijR4/Br7+urosZjUb8+ecfGDt2vOz61avlI56mTLnU5fOysjLx008/OtljGh544CGEhoa5vJfFIi9qaozBYIDJZJLEKisrERHRfJ2u27fvgKFDh0tGXG3dugUFBfmIjo6pi1VUVOD33zdI1oaEhDr9d6H6bdu2RRYzGAwtsrtPYyOM/G38+In49NOPkZGRLomnpdXfaSY5uTf+9z9pzGKxID09HUlJPZsizRZtx45tcDgcsnhKSh8/ZEMk1+JfXTt48CB27NghGcMEAOPHj8fixYvdLqQ5X+/evfH1119j3LhxdXufOWvHjh04ePCgV/sTEdGF4VRxNWrM7r2Lp6isBlsP5uOrX9OQW1SNkopaOBwiIHo24skQpJYUhgqCgOSEcLf3IXKVoFBCnTAIgaNuhRDg37nmREREREREROSZ0tKSxi9qQEmJfL1O1zqLaQBg8uRpspizopnKykr89dcmSSw8PAJDhw5z+awNG9bJXkieOPESzJ//nFuFNABQUVHu1vUAYDCEyGLefj54YubM2ZLbdrsdy5YtlcR++WUFzGbpc6ZTp17arF10WrvS0lJs27ZVFh82bAQUfEOmR4YNGyGLlZeX1Xv90KHDnf5dr1+/1qd5tRa//LJSFlOr1Rg8eKgfsiGSa/HfGVevPlv9e2asU1JSEt5++20EBAT45IyAgAC8/fbbTkc6rVol/wGJiIjofBl5DXelaYhSIcDuEFFda4UgADUWGyxWu1t7CIIAnVbaBrJTtA6GYP4ySU1PULSKZodERERERERE5ERWVqZXo57S09NksQ4dOniTkl8NHToMERGRktjmzX+iokI6zmn9+l9l3WAmTZosG7/UkK1b5V1C7rnn/9zI9qxTp065vaZjx06y2KFDzf8m84suGinpQgOcHlt1bqHRzz//JFvHEU/u+e67xbDb5V/r48dP9EM2bUNsbKwsdn63p3OFhYWhb99+svjKlcths1l9mVqLl5WVic2b/5TFhw+/CEFB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MLpgCUo11N0vgjIuCbBZICj5IyEREREREREREREREdEZfOWEiIioESeLqmG22AEAReU1KCqvwdaD+dAHa9C1fQgSYw2IiwyG4u/RTRknjaiptUn2qKqxQRRF2d5WmwOlxtrT3Wq0aoSHBCJQU3+3ml7x4VAqFD7+COlCpdCxyxEREREREREREREREdH5WExDRETUiIw8o9N4ZbUFqceKkHqsCIEBKiTEGpAYZ8Ce9GL5tSZLg2eIoogqkwXVtVYEqJUI0QUgRCcfKZWcEO7ZB0FERERERERERERERERELmExDRERUQNEUcTxvIpGr6s123A4qxT7Mopxsqga2gAlggJUCApQwSYCFqvd5TPNVjsqqsyyYpoOUTqE6gLc/hiIiIiIiIiIiIiIiIiIyHUspiEiImpAYXkNqkxWl6+vrLZAFEWYam0w/T3qySECgAhFPaObnAnRBchGPfVmVxoiIiIiIiIiIiIiIiKiJqfwdwJEREQt2fGTzkc8OSMCqKyxymJmix2ul9EACkGAPljalSYwQIUu7UPc2IWIiIiIiIiIiIiIiIiIPMFiGiIiogZkuDDi6YzqGiscp9vQ1LHbRSgUkHWZaYg+SAOlQnp9z85hUCn5sH0hEm1mmHcvg8NY6O9UiIiIiIiIiIiIiIiILggc80RERFSP8iozSipqXb7eaLLIYja7AyqlO31pgBCdRhbjiKcLlzVtC+yFGbAXHoeqU1+ou42AoA7wd1pERERERERERERERERtFt/iTkREVI/jea6PeLLYHDBb7JKYQwQcoijrMtOQAI0SARqlJBbXLhjhhkCX96C2w2EshC17z9+3RNhO7EHtn5/DduooRFFsaCkRERERERERERERERF5iMU0RERE9XBnxFNlPV1plArBrRFPIcEBsut7J0S4vJ7aDlEUYTm0AYC0aEY0V8OydxUsO5fAUV3mn+SIiIiIiIiIiIiIiIjaMBbTEBEROWGqteFUscmla0UAVTVWWexMMY2rBEGAPlg64ilArUC3DiEu70Fthz13Pxzlp+q/v+QEzH99CWvaZoh2WzNmRkRERERERERERERE1LaxmIaIiMiJzFNGl8foVNdY4XBIr7XbT992p5hGp1XLru/ZORwqJR+uLzSixQTrsb8av85hhzVjG8x/fQF7UVbTJ0ZERERERERERERERHQB4KtzREREThx3Y8STsZ4RTwrBvRFP+iCNLNY7Idzl9dR2WI9ugmitdfl6h6kC5l0/wZy6Ao7ayibMjIiIiIiIiIiIiIiIqO1T+TsBIiKilsZqs+NEQZVL11psDpgtdknMIQIOhwi1yvWaVY1aiQCNUhJr306HyFCtyx1yqG2wl+bCdvKQZ2sL0uAozoKq63CoOveDoFA2voiIiIiIiIiIiIiIiIgk2JmGiIjoPNkFVbDZHS5dW19XGsC9EU/6ILUsNqBHlMvrqW0QHXZYD23wbg+7Fdajf8C85Ws4Kot8lBkREREREREREREREdGFg8U0RERE51EqBMREBDV6nUMUUWWySmIiThfTCAoBCheLaQRBgC5QWkyjUSuRnBjhcs7UNtiydsNRVeKTvcTqckAV4JO9iIiIiIiIiIiIiIiILiQc80RERHSehFgDEmINqKqxIvOUERknK5BTWAWHQzpuqbrWJhvBZHeIgAgola53pdFp1bLCm5TECGjUHNFzIXHUGGHL2Oaz/VRdh0KhNfhsPyIiIiIiIiIiIiIiogsFi2mIiIjqodOqkZIYgZTECJitdmTnVyIjrwJZpyphsdphrG7CEU9J0Z4nTq2S9fDvEO3Wxi90gUIXAVX8QJ/sRUREREREREREREREdKFpU8U0FosFJ06cQHl5OYxGIyorK+s6BsyYMcO/yRERUasWoFaie8dQdO8YCrvDgX3HS7Hk9wzY7SLsjtMFNA4RcNhFCALgai1NgFqJgPM60MRGBCM2MtjXHwK1YPbC47AXZvhsP3WvsRAU7GxERERERERERERERETkiVZfTHPgwAGsXLkSqampOHjwIGw2m9PrGiqmsVqtyM3NlcQMBgMiIiJ8mSoREbURSoUCZcZaRIYEQjSIsFgdqDbbUFpZ+/f9AgTBtWoaZ11p+veI8mm+1LKJdiush3/z2X6quJ5Qhnf02X5EREREREREREREREQXmlZbTLNhwwZ88sknSE1NrYud6UJzvsZe0BQEAbfccgsKCwvrYl27dsXy5ct9kywREbUpVpsdR06UAzj9GBKgUUKjUaLKZIWgAeBiVxqFQkCwVlpMo1Yp0LsLizkvJKK5GlDKi6o8IagCoO5xsU/2IiIiIiIiIiIiIiIiulAp/J2Au6qrqzFnzhzcd999SE1NhSiKdf8JgiD7zxUqlQo33HCDZK/09HQcPHiwiT8aIiJqjY6eKIfVapfETLU22B0OKBQCFC4+/ugC1bJrkxMjEKhptbWu5AFFUCgCRlwPdfeRELwsqlF3vwhCAEeEEREREREREREREREReaNVFdPk5ORgxowZWL58udMCmnPV16WmPtdccw0CAwMl+yxbtswneRMRUduy73iJLFZpsri9j7MRTwM44umCJCiUUCcORsDIm6CM6uLRHoqQGCg7pvg4MyIiIiIiIiIiIiIiogtPqymmKS4uxo033oicnBxJEQ0ASUeZgIAA6PV6t/fX6/W4+OKL6/YWRREbN2709YdBREStXEGpCUVlNZKYze5Ajdnm1j4BGiU0aqUkFhkSiPbtdF7nSK2XQmtAwIDpCBhwORRagxsrBWh6jYMgtJof7YiIiIiIiIiIiIiIiFqsVjNH4sEHH0R+fr6kc4woilCr1bjsssswceJEDBw4EAaDAcuWLcOcOXPcPmPChAlYu3Zt3e3s7GwUFBQgOjraJx8DERG1fvuddaWpsbq9jyFII4v1Tgh3eUQhtW3KqEQowjvAdnw7bJm7IIqOBq9XdeoLRQh/XiEiIiIiIiKi1mnFimVYsOBpSWzu3Kdx6aXT/ZMQtQp79qRi48bfcODAPuTnn0JlZSVqa2sl11x99bV48MFH/ZQhERG1Zq2imGbJkiXYsWOHrJBm6NChePnll31W7DJmzBjZi5hbt27F5Zdf7pP9iYiodTNb7TiWUy6JiQAqTe4V0ygUAoICpQ/BKqUCSZ3DvMyQ2hJBpYG6+0go43rCemgD7KW5zq8LCIa624hmzo6IiIiIiIiIiMg/8vJO4umn52Hfvj3+ToWIiNqwFl9MI4oi3n//fclIJ0EQcMUVV2DhwoU+fQd/SEgI2rdvj5MnT9bFjh075rP9iYiodTt6ogxWm7RDSI3ZBru94a4h59Np1VCc9/jVtUMIAjUt/mGZ/EChi4Bm8CzYTx2B9cgfEC0myf3qpNEQ1AF+yo6IiIiIiIio6cyYMQ35+aec3rdw4SsYN268V/vPmjUdubnSN68sWbICcXFxXu1LRE0nM/M47r77DlRUlPs7FSIiauMU/k6gMTt27EBOTg6As4U0/fr1w4IFC5pkFEbPnj3rzgGAzMxMn59BREStjyiK2H+8VBavNFnc3ksfpJbFeieEe5QXXRgEQYAqricCL74Zqk59AZz+OUUZ0QnKmO7+TY6IiIiIiIjIDz7++H04HO69wYmIWjebzYannnqChTRERNQsWvxb4Ddu3CiLPfHEE1AqlU1yXkJCQt2fRVHEiRMnmuQcIiJqXfJLTSgur5HEbA4RplqbW/sEapTQqKSPYWGGQMRFBnudI7V9gjoQml7joIrrBcuR36HuNa5JiouJiIiIiIiIWrrMzOP45ZeVmDbtMn+nQkTNZNOmjUhLk06U0Gg0uPba6zFy5ChER8dAo9FI7g8ICGzOFInoHI8++iD27dsria1Zs8FP2RC5r8UX0+zbt09yu0ePHkhJSWmy8wwGg+S20WhssrOIiKj1OOCkK02VR11pNLJY74RwFkSQWxShMQgYejU/b4iIiIiIiOiCtmjRR7jkkslQqeRdgImo7Vm1aoUstmDBSxg1arQfsiGixlRVVbGTFLVqLX7MU05ODgRBqBu9NGLEiCY9T6/XS25XVVU16XlERNTymS12HMspl8WNJqtb+ygUAoIDVbJYz85h3qRHFygW0hAREREREdGFLi/vJJYuXeLvNIiomRw4IH0DfufO8SykISKiJtPii2nKy8slt2NjY5v0vPPbv5nN5iY9j4iI/OtgZinScytgtdnrveZwdhlsdukM7hqzDXa7e3O5dVq1rACia4cQaANafKM4IiIiIiIiIqIW6b//XYTa2prGLySiVq24uAhlZWWSWO/eTTfJgoiIqMW/eme1St/1r9PpmvS8iooKye3zi2uIiKjtcIgi/jpwCjW1NqiUCnSM1qFLXAgSYg0I+ruDjCiK2J9ZIlvrblcaADAEyVsO906IcD9xIiIiIiIiIqILVGRkJIqLi+tuFxcX4/vvv8NNN93iv6SIqMmd//odAERERPohEyIiulC0+M40gYGBktvOHix96fxOOE1dvENERP6TX2JCTa0NAGCzO5CZZ8S6nTn4ZMUh/O+3dOw6WoRjOeUoraiVrLM7RJjM7hXTBGpUUKuUkliILgAd2gV790EQEREREREREV1AbrnlDlnsq68+R1VVpR+yIaLmUl1dLYup1fI3LxIREflKiy+mCQsLk9wuKCho0vMOHTokud3UY6WIiMh/Mk46L9AURRF5xdX4c18evlxzFLlFVSitNMNssUMURVSarIDo3ll6p11pwmVjn6htcdQY4agua/xCIiIiIiIiInLJqFGjZaNdjMYKLF78pZ8yIqLmcP4kCyIioqbW4sc8dezYEbm5uRAEAaIoYteuXU12lsPhQGpqat1ZgiCgS5cuTXaer9jtdmRnZyM9PR2lpaUwGo0QBAEhISEIDQ1Ft27dkJCQ4O80XVZaWooDBw4gJycHlZWVUCgUCA0NRWJiInr37i3rVkRE5AlRFJGRZ2zwGrtDRFWtDRBFVFSZUVFlhlKpgNlqhwBAIcClYhiFQkBwoEoW6xUfVs8KagtEUYT10AY4Sk5AlTAIqsQhEJQt/kcvIiIiIiIiohbv7rvvw//9392S2HfffY2rrrpW9gZdOi0jIx1pacdQUlIMi8UCnU6H+PgE9O7dB1qt1uV9zGYzjhw5jMzMDBiNRiiVKkRERKBr127o2rVbE34EZ+Xl5eHo0cPIzz+FmppaBAQEIDY2FsnJvREdHdOkZ5eWluLYsSPIy8ur64YUFhaG8PAI9OiRhMjIdk16/rkyM48jIyMdRUWFqKmphVqtQnh4BC65ZDJUqubt2HLqVB7S0o4hPz8fJlM1BEFAcLAOcXFxSErqhfDw8GbNp6WwWCw4dOgAsrKyYDQaIYoOGAwGJCR0Qe/evZvk36mqqhJZWVnIyTmByspKmEzVUKs1CAkxICQkFD169ERUVJTPz21IdXUVDh8+9HdOVbDbbdDpdOjTpx969EhyaY+KinJkZmbi5MlcVFVVwmQyITAwEAZDCMLCwtGzZ69m//5fUJCPI0cO49SpPNTU1ECr1SI2Ng4pKX3d+pwXRRHp6WlITz+G0tJS2O12hIeHo337DkhJ6QuVqumeUy4oyP/7a/cUqquroVAoEB4egfDwcPTq1RshISFNdnZTyck5gePHM5Cfn4+aGhPUag3Cw8MRGRmJ5OQUBAUFNUseNpsVR44cQXZ2FsrLy2A2W6DVBqJz5wSMGHGRS+szMzORmXkcRmMFqqurIYoiAgMDERwcjKioGMTGxqFDhw5QKFp8/5RWq8W/opOSkoItW7bU3T506BAKCgoQHR3t87PWr1+PyspKyQujffv29fk53rLb7UhNTcWWLVuwZcsWHDhwAGazucE1YWFhuOiii3D99ddjwIABzZSp60RRxOrVq/HVV19h9+7dcDgcTq8LDAzEmDFjcNttt7XIfxsiaj3KKk8XxzSkqsYKiNIWNBarHRaL/fQNAQhUK6FQNFxQo9eqZUU3iXEGBAWyDWlb5ihIh70oEwBgzdgG+6mjUPccC2W7eP8mRkRERERERNTKDRo0BIMGDcHOndvrYiaTCZ9/vgj/+tcjTX7+rl07cd99/5DEbr/9H7jzzrvrWdGwGTOmIT//VN3tmJhYLF26stF1zz47H6tWLZfElixZgbi4OACn/06+++5rLF26BAUF+U73CAoKwtSpl+LOO+9GSEhovWfl5ubg888/xfr162AyycftAED79h1w0023Yvr0GT7vxmy327Fq1XJ89903SE9Pq/e6Xr2Sce21N2DixEt8drbRaMTSpT9izZpfkJGRXu91giCge/cemDBhEmbPvsajNwbfc8+dSE2Vvql869bddX8uKyvDt98uxqpVy1FUVOR0j1GjxkCvb/rnHcvLy/DDD99j9epVyM3NafDa7t17YOrUSzFjxkwEBrpWvOXs7+J8ixZ9hEWLPqr3/rlzn8all0536Tx3NPY1m5NzAl988RnWr18Lk8nkdI/gYB0mT56Cm2++3aviltraWmze/Bd27NiG3bt3Ijs7q9E17dt3wMUXj8J1192IqCjPXm915fvg5s1/4ttvv8auXTtht9tke1x99bX1FtNUVVVi06aN2LFjB3bv3oH8fOffw84VH5+A8eMn4KqrrvO4CGTFimVYsOBpSezczyNRFLFmzS/49tvFOHLksNM9lEolhg+/CPfe+08kJtbftKGqqhLffLMYy5f/jMJC55NZQkJCcdlll+P22//hVuFjQ4qKivDjj99j3bo1yM3Nrfc6pVKJ5OQUTJkyFZddNsOloh5nnxfnGzas8dep+/cfiPff/7jR6844ceIEfvzxO2zYsK7e743A6dFw/fsPxGWXXe7x48T5+Z+fa0ZGOhYv/hK//77B6eNlt27dGyym2bz5L6xY8TP++mtTo6//A0BQUDCSk3tj2LARmDhxksdf0+Rciy+mGT58OD766OwDod1ux6efforHH3/c52ctWrRIFhs1apTPz/HUrl27sGLFCqxZswYlJSVurS0rK8OKFSuwYsUK9O/fHwsXLkRiYmITZeqenJwcPProo0hNTW302traWqxevRpr1qzBzJkzMW/ePJ89eBDRhSW9nhFP56o0yVuH2uzSYj9XnhfQB2lksd4JEY0vpFZL/H/27js8inJtA/g9W7LZTa+EEEICCSQhBKUqIgcRRf3sil3sogiWY0URG3Y8KEXsvVdU7FixUKWk0xOSkF43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IiIiIiIi6g1+n0yTlZWFrKys9mosxcXF+Pvvv3Hsscf6OLLeVV5ejt9++83htrfffhtvv/22x8d46623MHHiRI/XcUZqaipuvfVWLF682G68sLAQp5xyCi644AJMnToVgwcPhtlsxr59+/D555/jp59+giRJdnM0Gg2eeuopVqUhIrSYrCir7qo9zyE2Ueq0lZMh0PmPx+gwPeIiDU7vT/5NLM1DWwMw98lWEwQVKxURERERERERERERERH1VX6fTAMAd911F2bNmgWgrTrNY489ho8//hiBgYE+jow8ce2112LPnj347LPP7MZbWlrwxhtv4I033uh2DUEQ8NBDD2HMGN79T0RAYXE9ZNm5RIimVmun2ww65z8eRw6NbG9FSH2bLMsQS5xv8dQZQaWBemCaFyIiIiIiIiIiIiIiIiIiX1D5OgBnjBs3Dtdffz1kWYYgCNi1axduvvlmWCyO23NQ3yAIAhYtWoQrrrjCrfk6nQ5PPfUUzj//fC9HRkR9VUFxvVP7yQCaWhwn0+i0amjUzn08atQqpCWGOxcc+T2pphhSq/NtwjqjjkuFoNV5ISIiIiIiIiIiIiIiIiLyhT6RTAMAt956Ky644IL2igNr167F+eefj/z8fB9HRp5Qq9W499578corryAlJcXpeVOmTMGqVatw5pln9mB0RNSX1DaaUFnX4tS+rWYbRFFyuM2VFk8pCWEIDOgTRd7ICbaSXK+so07I9Mo6RERERERERERERERE5Bt96grgww8/jEGDBuG5556DJEnYsWMHzj33XBxzzDE488wzcfTRRyMpKcnXYfaIhIQEFBYW+joMAMDPP//s9TWPP/54TJ48GX///Td+/vlnbNu2DcXFxTAajVCpVAgLC8PQoUMxbtw4nHLKKRg+fLjXYyCivq2guM7pfRtbOq9sFuRCMk3m0Cin9yX/JltaIVXu8ngdVVAEVBGDvBARERERERERERERERER+UqfSqYBgNmzZ+OYY47BggULsHPnTsiyjHXr1mHdunUA2iqdhISEwGAweHwsQRCwZs0aj9ch5wiCgEmTJmHSpEm+DoWI+hhZlp1u8WSTZLSabA63aTUqaDVqp9aJDA1EfJTnnzXkH2xl+ZAl0eN11AmZEATBCxERERERERERERGRP1q16mtfh0BERL2gzyXTmM1mbNiwAc3NzQDaEjAOtn4C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mjD4fCJKDT6XiFKHzyei1OHziYiIiIiIiFJJSfcCaHgdHR0RYy5Xci8QRNs/2nFSZbTOQUoJr9eb1LxERERERERERERERERERER09GKYZhwIBoMRYxaLJak5o+0fCASSmnMoo3UOwMieBxEREREREREREREREREREU1sDNOMA9GCKJqWXIeuaPvrup7UnEOJNvdInMNgxyIiIiIiIiIiIiIiIiIiIiKKBcM044CiRH6Zkg2MRNs/2nFSRQgR0xriMdj+I3keRERERERERERERERERERENLExdTAORKvA4vf7k5rT5/NFjCXbdmko0eZO9hwG238kz4OIiIiIiIiIiIiIiIiIiIgmNoZpxgGn0xkxlmwQJRAIRIzZ7fak5hyKw+GIGBupMM1IngcRERERERERERERERERERFNbAzTjAMZGRkRY93d3UnN2dXVFTGWmZmZ1JxDiXYOfr8fpmkmPGe0c7BarVHDR0RERERERERERERERERERESxYJhmHMjNzY0Ya2hogJQy4Tnr6+sjxnJychKebzjRzkFKiYaGhoTnjHYO2dnZCc9HRERERERERERERERERERExDDNOFBcXBwxFgwG0djYmPCcdXV1EWMlJSUJzzecoqIiCCEixmtraxOec7TPgYiIiIiIiIiIiIiIiIiIiCY+hmnGgZKSEqiqGjGeTBAl2r5lZWUJzzccm82GSZMmRYwfOnQo4TlH+xyIiIiIiIiIiIiIiIiIiIho4mOYZhywWq2YOnVqxPjHH3+c8Jzbt2+PGJs1a1bC88Vi5syZEWM7duxIeL5o5z/S50BEREREREREREREREREREQTG8M048QxxxwTMbZ+/fqE5jpw4AAaGhoixufOnZvQfLGKdg7r1q1LaK5AIICtW7dGjI/0ORAREREREREREREREREREdHExjDNOLFw4cKIsbVr1yY0V7T9SktLUVpamtB8sYp2Dlu2bEEgEIh7rk2bNkXsZ7fbMX/+/ITXR0RERERERERERERERERERMQwzTixaNEiKEr4l6u6uhqbNm2Ke65nnnkmYmzx4sUJry1Wxx9/PDIyMsLGurq68Oqrr8Y9V7RzOOWUU2C1WhNeHxERERERERERERERERERERHDNONEfn5+1MouTzzxRFzz1NXV4Z133okYv+SSSxJeW6ysVivOO++8iPEnn3wyrnl8Ph+ee+65iPHROAciIiIiIiIiIiIiIiIiIiKa2BimGUeuvfbaiLEVK1Zgz549Mc9xzz33wDTNsLFZs2ZhwYIFMe2/dOlSzJw5M+zP73//+5iPH+0cVq9ejffeey/mOf7whz+go6MjbCw3Nxfnn39+zHMQERERERERERERERERERERRcMwzThy7rnnorKyMmwsGAziBz/4AQKBwLD7v/baa1HbI33pS19K2RqHM2/ePCxatChi/Ec/+hHa29uH3X/Lli34y1/+EjF+/fXXs8UTERERERERERERERERERERJY1hmnFEURTceuutEePr16/HjTfeCK/XO+i+L7zwAv77v/87YnzBggW46KKLUrrO4Xz/+9+HpmlhYzU1Nbjuuutw+PDhQff78MMPcf311yMYDIaNl5WV4frrrx+JpRIREREREREREREREREREdFRRht+ExpLFi1ahGuvvRb//Oc/w8bXrFmDs88+G9dddx1OOeUUlJSUoL29HVVVVfj3v/+NNWvWRMzlcrlw1113jdbS+0yfPh3f/OY3cc8994SN79ixAxdccAGuvvpqLFmyBGVlZfD7/di3bx+eeuopvPbaaxEtqjRNw913382qNERERERERERERERERERERJQSQkop070Iik8gEMBXvvIVrF69OuE5LBYL/vCHP+CMM86Ia7+lS5fi4MGDYWNf//rXcdNNN8U1j5QSt956K1asWBHXfv0JIfDzn/8cV155ZcJzEBEREREREREREREREREREfXHNk/jkNVqxf33359we6bMzEw8+OCDcQdpUqk3CPPZz342of1tNhvuvvtuBmmIiIiIiIiIiIiIiIiIiIgopRimGafsdjt+85vf4Fe/+hWKi4tj2kdRFFxyySV45plncNppp43wCoenqipuvfVW/N///R+mTZsW835nnnkmVq5cicsuu2wEV0dERERERERERERERERERERHI7Z5mgB0XceqVauwatUqbNmyBQcPHkRnZycsFguys7NRWVmJhQsX4sILL0RZWVm6lxuVlBLvvfceXn/9dWzcuBE1NTXwer1QFAWZmZmoqKjAiSeeiAsuuAAzZsxI93KJiIiIiIiIiIiIiIiIiIhogmKYhoiIiIiIiIiIiIiIiIiIiIioB9s8ERERERERERERERERERERERH1YJiGiIiIiIiIiIiIiIiIiIiIiKgHwzRERERERERERERERERERERERD0YpiEiIiIiIiIiIiIiIiIiIiIi6sEwDRERERERERERERERERERERFRD4ZpiIiIiIiIiIiIiIiIiIiIiIh6MExDRERERERERERERERERERERNSDYRoiIiIiIiIiIiIiIiIiIiIioh4M0xARERERERERERERERERERER9WCYhoiIiIiIiIiIiIiIiIiIiIioh5buBRCNZ0uXLsXBgwfDxu644w4sX748TSsaeR0dHXj//fexefNmbN68GbW1tejo6EBHRwd0XYfD4YDD4UBWVhZKSkpQUlKCiooKzJs3D7NmzYLNZkvouL///e9x3333hY0tW7YMd955ZypOi4iIiIiIiIiIiIiIiIiICADDNElZsWIFbrnlloT2tVgscLlccLvdyM/Px6xZszBr1iwsXrwYRUVFKV4pUfI2bdqERx99FC+88AJ8Pt+g2/UGa+rr67Fz586wxzRNw5w5c7Bo0SKcccYZOO6446Cq6kgvnYiIiIiIiIiIiIiIiIiIKGYM06RJMBhEa2srWltbceDAAaxfvx4AIITASSedhM9+9rM455xz0rxKIsDr9eLuu+/GY489BillUnPpuo5NmzZh06ZNeOCBB3DnnXdi2bJlKVopERERERERERERERERERFR8himGWOklPjggw/wwQcfYNGiRfjFL36BwsLCdC8raTfffHPE2Fe+8hVUVlamYTUUq/379+Ozn/1sRCurVEk2nENERERERERERERERERERJRqDNOMYatXr8anPvUpPPzwwygrK0v3cpLyzDPPRIxdddVVDNOMYQcPHhw2SFNaWopjjjkG06ZNQ2ZmJlwuF7q7u9HW1obm5mZs27YN27dvR1dX1yiunIiIiIiIiIiIiIiIiIiIKHEM04yAL3/5y6ioqBhym66uLnR0dGDv3r3YsGEDqqqqom538OBB3HDDDfjPf/4Du90+EssliiClxM033xw1SCOEwEUXXYTPf/7zmDdv3rBzmaaJbdu24ZVXXsHLL7886Pc6ERERERERERERERERERHRWMAwzQg47bTTsHDhwrj22bJlC+6++268//77EY9VV1fj/vvvx7e//e1ULZFoSCtXrsS6desixp1OJ+69916ceeaZMc+lKArmzZuHefPm4Vvf+ha2bduGRx55BM8991wql0xERERERERERERERERERJQSSroXQCHz5s3Dww8/jKuvvjrq4//6178QCARGeVV0tPrrX/8adfy3v/1tXEGaaObMmYM77rgDq1atwsknnxzzfjfddBN27NgR9ufOO+9Mai1EREREREREREREREREREQDsTLNGCKEwG233YYPPvgA+/btC3usvb0da9asSTrIQDScmpoa7Ny5M2J86dKlWLx4ccqOk5OTg5ycnJTNRzSeBYNBbNu2Dbt370ZLSwuCwSBcLhdKSkowb948TJo0Kd1LJBqSYRiorq7G7t270dzcjPb2dgghkJmZiaysLEyfPh1Tp04dlbXw+UTjWXt7O/bv34/a2lo0NDSgu7sbPp8PTqcTbrcbubm5mD17NgoLC0d8LXwuEaUOn09EqcPnExEREREREY0WhmnGGKvViiuvvBL33HNPxGM7duxgmIZG3Jo1a6KOX3zxxaO8EqKR1dzcjC1btmDz5s3YvHkztmzZgoaGhojtXnvtNZSWlo7IGvbs2YO//vWvePHFF+H1egfdbs6cObj22muxbNkyWCyWhI+3dOlSHDx4MGzsjjvuwPLlyxOes6GhAZ/73Oewa9euiMcWL16M3//+97DZbAnPT2OTYRhYv3493nvvPbz33nvYsmUL/H7/kPtkZ2fj9NNPx6c//WksWLAg5Wvi84nGm87OTmzcuBFr167F5s2bsWPHDtTV1cW0b15eHs4++2xceeWVOPbYY1O6Lj6X6GhgmiauvvpqbN68OerjO3bsSMlx+Hyi8WbFihW45ZZbUjrn1q1boWnJv/zI5xMRERERERGNNoZpxqDBbjBFu8lLlGr19fVRx0erogDRSAgEAtiwYUNfcGbz5s04cOBA2tZjGAZ++9vf4q9//St0XR92+23btuG2227D3/72N9x1112YO3fuKKxyeIcOHcL111+P6urqiMfOP/98/PrXv07qBWwae9auXYtnn30WL730EpqamuLat6WlBc8++yyeffZZzJ8/H7/85S9RUVGR9Jr4fKLx6vOf/zw2bNiQ0L6NjY3497//jX//+99YtGgRbr/9dpSVlSW1Hj6X6Gjyt7/9bdAgTSrw+USUOnw+ERERERERUbowTDMGDdb65v+3d9/xNZ7/H8ffmciQELMoGqNoo18jKUVL1Wi16OCrQ0mtauigRmvV164ajVmKUjWqP7O0RVtfo2YJrZitEUriKwkJIZHz+6OhjvtOcs7JyRCv5+PRx6P53Oe6rk/a8wm5z+e+rqSkpCzNe/r0ae3cuVORkZH6888/dfr0aV26dEkJCQlyc3OTn5+f/Pz8VLZsWdWpU0d16tRRUFCQXFxcsrRubjp06JA2b96sAwcO6MSJEzp//rwSExNlsVjk7e0tX19fVahQQQ888IBq1aqlevXqyd/f3+l5JCYmav369dq8ebMiIyN1/vx5JSUlydfXVwEBAapUqZIaNmyoJk2a5PrRRxcuXDCNe3l55XAm+Z/FYtHevXu1detWRURE6PTp07pw4YKuXr0qd3d3FS5cWGXLltVDDz2kBg0a6LHHHuPmmoP27t2rjh075nYakqRr166pZ8+e2rJli91jjx49qpdfflmTJ0/WE0884fzk7HDq1Cl16tTJ8LSmJLVu3VqjR4+Wm5tbLmSG7DRgwACdOnUqy/Ps3btXzz//vIYOHaq2bds6PA/1hLuZxWJxyjxbtmxRq1atNHHiRDVp0sShOagl3EvOnj2ryZMnZ9v81BPgPNQTAAAAACA30UyTByUmJprGfX197ZrHYrFoz549Wrt2rX766SedPXs23dcmJycrKSlJ58+f15EjR/Tjjz9KkipVqqSuXbuqVatWdm3L+9prr2nnzp0ZvsbWD7bLlClzKx9bJCcn65tvvtH8+fN1/PjxdF8XHx+v+Ph4RUVFacuWLZo/f75cXV0VEhKidu3aqWnTpvL09LR53fRymTt3rmbPnq34+HjD9djYWMXGxurYsWP67rvv5OXlpa5du+qNN97Ita19XV1dTeMxMTG5ujtNeHi4pkyZYhVr27atxowZk+E4W96LWREcHKwFCxbYNeb69etasmSJ5s6da3ozTfr76buYmBjFxMRo7969WrBggYoXL67Q0FC99tprNNXcpSwWi9599910bwZXqlRJFStWlK+vr6KiovTbb7/pypUrVq9JSkpS79699cUXX+hf//pXTqRtcPz4cb3++uumO6a1b99eH3300V3diAnHuLq6qlKlSipZsqQCAgLk5uamixcvav/+/aa72Fy9elUffPCB3N3d9eyzz9q9HvWE/Mrf318VK1ZUiRIl5O3tLQ8PDyUkJOjMmTM6cuSI4X0s/fNe/vTTT+1uqKGWcK8ZPny4aR05A/UEOA/1BAAAAADIbTTT5EF//vmnabxChQp2zfP222/r+++/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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "\n", + "for curve in [] : # [opacus, fasttf, clipless_name, lipschitz_name]:\n", + " filtered = speed[algorithm] == curve\n", + " means = speed[filtered]['median_time']\n", + " stds = speed[filtered]['mad_time']\n", + " nstd = 1\n", + " lower = means - nstd*stds\n", + " upper = means + nstd*stds\n", + "\n", + " xpoints = speed[filtered]['batch_size']\n", + "\n", + " poly = np.polyfit(xpoints, lower, 5)\n", + " lower = np.poly1d(poly)(xpoints)\n", + " lower = np.maximum(lower, 0.)\n", + " poly = np.polyfit(xpoints, upper, 5)\n", + " upper = np.poly1d(poly)(xpoints)\n", + "\n", + " plt.fill_between(xpoints, lower, upper, alpha=0.1)\n", + "\n", + "style_order = list(num_parameters.values())\n", + "speed = speed.sort_values(archi_key, key=np.vectorize(style_order.index))\n", + "ax = sns.lineplot(speed, x='batch_size', y='median_time', hue=algorithm, style_order=style_order, style=archi_key, lw=4., alpha=0.7, zorder=1)\n", + "ticks = [10_000, 20_000, 30_000, 40_000, 50_000]\n", + "labels = ['10K', '20K', '30K', '40K', '50K']\n", + "ax.set_xticks(ticks, labels=labels)\n", + "#x = np.array([100, 2_000, 10_000, 20_000, 25_000, 25_000])\n", + "#y = np.array([0.8, 0.5, 2.2, 2.7, 5.7, 1.35])\n", + "x = np.array([100, 3_000, 15_000, 20_000, 25_000])\n", + "y = np.array([0.8, 0.3, 0.7, 2.7, 1.35])\n", + "plt.scatter(x=x, y=y, marker='X', c='orangered', s=50., label='Out Of Memory Error\\n (limit: 48GB)')\n", + "plt.legend(loc=(1.02, 0.05))\n", + "plt.xlabel('Batch Size')\n", + "ax.xaxis.set_label_coords(0.00, -0.035)\n", + "plt.ylabel('Median Runtime per batch (s)')\n", + "# plt.title(f'Runtime over 9 epochs for VGG architecture')\n", + "# plt.xscale('log')\n", + "# ax.set(ylim=(None, 10))\n", + "plt.ylim(0, 4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "l53vbchDQ0jo" + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/experiments/paper_plots/robustness_report.ipynb b/experiments/paper_plots/robustness_report.ipynb new file mode 100644 index 0000000..ec8c254 --- /dev/null +++ b/experiments/paper_plots/robustness_report.ipynb @@ -0,0 +1,830 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plotting the Pareto Front from WandB sweeps :" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Imports & Installs :" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import wandb\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import pandas as pd\n", + "from joblib import parallel_backend, Parallel, delayed\n", + "import tqdm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Get run hashes and load run-table artifacts : " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "api = wandb.Api()\n", + "entity = \"algue\"\n", + "project = \"ICLR_Cifar10\"\n", + "states = [\"finished\", \"killed\"] # only runs that did not failed or crashed.\n", + "sweeps = {\n", + " 'acc_eps20_certacc_0' : 'q4zk798t',\n", + " 'acc_eps20_certacc_1' : 'g1kkuykc',\n", + " 'acc_eps20_certacc_2' : 'bbidcxvf',\n", + " 'acc_eps20_certacc_4' : 'n222sidg',\n", + " 'acc_eps20_certacc_8' : 'qjpo7dh8',\n", + " 'acc_eps20_certacc_16': 'l3pr52hk',\n", + "}\n", + "sweeps_opacus = {\n", + " 'opacus_resnet': 'mf2npmbi',\n", + " # 'opacus_mlp': 'lbhfq07e',\n", + "}\n", + "name_from_id = {v: k for k, v in sweeps.items()}\n", + "for k, v in sweeps_opacus.items():\n", + " name_from_id[v] = k\n", + "sweep_ids = list(sweeps.values())\n", + "filters = {\"state\": {\"$in\": states}, 'sweep': {\"$in\": sweep_ids}} \n", + "\n", + "redownload = False\n", + "if redownload: \n", + " runs = api.runs(entity + \"/\" + project, filters) " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "faulty_runs = {}\n", + "\n", + "def get_hist(run, add_config=True):\n", + " # requires that n_epoch < 1024 to work ! (otherwise increase sample)\n", + " hist = run.history(samples=2048)\n", + " # check for empty runs\n", + " if len(hist) == 0:\n", + " faulty_runs[run.name] = \"empty_run\"\n", + " return hist\n", + " \n", + " if \"EPSILON\" not in hist.columns:\n", + " faulty_runs[run.name] = \"no_epsilon\"\n", + " return hist\n", + " \n", + " # re-order columns and reindex data\n", + " hist = hist.sort_values(by=[\"epoch\", \"_step\"], axis=0)\n", + " hist = hist.reset_index(drop=True)\n", + "\n", + " # backward fill the \"epsilon\" field (reported on epoch+1)\n", + " hist = hist.fillna(method='bfill', limit=2)\n", + " # hist = hist.fillna(method='ffill', limit=2) # for mia-attacks.\n", + "\n", + " # drop row where epsilon is not known\n", + " hist = hist.dropna(how=\"any\", subset=[\"epsilon\", \"val_accuracy\"], axis=0)\n", + "\n", + " # take one value out of two\n", + " hist = hist.iloc[::2, :]\n", + "\n", + " if len(hist) == 0:\n", + " faulty_runs[run.name] = \"empty_run\"\n", + " return hist\n", + "\n", + " hist['name'] = run.name\n", + " hist['sweep'] = name_from_id[run.sweep.id]\n", + " if add_config:\n", + " for k, v in run.config.items():\n", + " hist[k] = v\n", + " hist['num_epochs'] = len(hist)\n", + " hist['run_id'] = run.id\n", + " \n", + " return hist\n", + "\n", + "if redownload:\n", + " n_jobs = 10\n", + " histories = []\n", + " debug = False\n", + " num_runs = 50 if debug else len(runs)\n", + " with parallel_backend(backend='threading', n_jobs=n_jobs, require='sharedmem'):\n", + " pfor = Parallel(n_jobs=n_jobs)(delayed(get_hist)(run, add_config=not debug) for run in tqdm.tqdm(runs[:num_runs]))\n", + " for metrics_dataframe in tqdm.tqdm(pfor):\n", + " histories.append(metrics_dataframe)\n", + " histories = pd.concat(histories)\n", + " histories = histories.dropna(how=\"any\", subset=[\"epsilon\", \"val_accuracy\"], axis=0)\n", + " histories = histories.dropna(how=\"all\", axis=1)\n", + " histories = histories.sort_values(by=[\"num_epochs\", \"name\", \"epoch\", \"_step\"], axis=0)\n", + " faulty_runs = pd.DataFrame.from_dict(faulty_runs, orient=\"index\", columns=[\"reason\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 20/20 [00:00<00:00, 38.83it/s]\n", + "100%|██████████| 20/20 [00:00<00:00, 75032.27it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
_stepepsilonaccuracy_timestampval_lossval_epochlossepoch_runtimedelta...EPOCHSEPSILONsweep_idlog_wandbBATCH_SIZEMAX_GRAD_NORMsweep_yaml_configMAX_PHYSICAL_BATCH_SIZEnum_epochsrun_id
0019.9908260.0980411.695634e+096.353306136.156680152.8674830.00001...120sweep_cifar1020000.129804experiments/paper_plots/opacus_cifar10.yaml20016zf3ts8o
0015.9952840.2514231.695636e+091.91083512.096110147.2488560.00001...220sweep_cifar1010000.759089experiments/paper_plots/opacus_cifar10.yaml2002rxhgpsuc
1119.9999110.3463811.695636e+091.80255821.828817287.9223840.00001...220sweep_cifar1010000.759089experiments/paper_plots/opacus_cifar10.yaml2002rxhgpsuc
0015.9952840.1029541.695637e+092.41121513.859198147.3130330.00001...220sweep_cifar1010002.136437experiments/paper_plots/opacus_cifar10.yaml2002crjs7cyj
1119.9999110.1889091.695637e+091.91193222.205820287.7032180.00001...220sweep_cifar1010002.136437experiments/paper_plots/opacus_cifar10.yaml2002crjs7cyj
..................................................................
37037019.8579680.5438621.695692e+091.9028903711.70985837122835.2599010.00001...37520sweep_cifar105000.303976experiments/paper_plots/opacus_cifar10.yaml2003755kzoad2m
37137119.8921480.5366301.695692e+091.8981403721.74300837222926.9071130.00001...37520sweep_cifar105000.303976experiments/paper_plots/opacus_cifar10.yaml2003755kzoad2m
37237219.9263020.5384241.695692e+091.9025643731.74184337323013.0553820.00001...37520sweep_cifar105000.303976experiments/paper_plots/opacus_cifar10.yaml2003755kzoad2m
37337319.9604320.5402941.695692e+091.9041883741.72700137423098.7320670.00001...37520sweep_cifar105000.303976experiments/paper_plots/opacus_cifar10.yaml2003755kzoad2m
37437419.9945360.5390511.695692e+091.9086093751.73021137523189.7566230.00001...37520sweep_cifar105000.303976experiments/paper_plots/opacus_cifar10.yaml2003755kzoad2m
\n", + "

1702 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " _step epsilon accuracy _timestamp val_loss val_epoch loss \\\n", + "0 0 19.990826 0.098041 1.695634e+09 6.353306 1 36.156680 \n", + "0 0 15.995284 0.251423 1.695636e+09 1.910835 1 2.096110 \n", + "1 1 19.999911 0.346381 1.695636e+09 1.802558 2 1.828817 \n", + "0 0 15.995284 0.102954 1.695637e+09 2.411215 1 3.859198 \n", + "1 1 19.999911 0.188909 1.695637e+09 1.911932 2 2.205820 \n", + ".. ... ... ... ... ... ... ... \n", + "370 370 19.857968 0.543862 1.695692e+09 1.902890 371 1.709858 \n", + "371 371 19.892148 0.536630 1.695692e+09 1.898140 372 1.743008 \n", + "372 372 19.926302 0.538424 1.695692e+09 1.902564 373 1.741843 \n", + "373 373 19.960432 0.540294 1.695692e+09 1.904188 374 1.727001 \n", + "374 374 19.994536 0.539051 1.695692e+09 1.908609 375 1.730211 \n", + "\n", + " epoch _runtime delta ... EPOCHS EPSILON sweep_id \\\n", + "0 1 52.867483 0.00001 ... 1 20 \n", + "0 1 47.248856 0.00001 ... 2 20 \n", + "1 2 87.922384 0.00001 ... 2 20 \n", + "0 1 47.313033 0.00001 ... 2 20 \n", + "1 2 87.703218 0.00001 ... 2 20 \n", + ".. ... ... ... ... ... ... ... \n", + "370 371 22835.259901 0.00001 ... 375 20 \n", + "371 372 22926.907113 0.00001 ... 375 20 \n", + "372 373 23013.055382 0.00001 ... 375 20 \n", + "373 374 23098.732067 0.00001 ... 375 20 \n", + "374 375 23189.756623 0.00001 ... 375 20 \n", + "\n", + " log_wandb BATCH_SIZE MAX_GRAD_NORM \\\n", + "0 sweep_cifar10 2000 0.129804 \n", + "0 sweep_cifar10 1000 0.759089 \n", + "1 sweep_cifar10 1000 0.759089 \n", + "0 sweep_cifar10 1000 2.136437 \n", + "1 sweep_cifar10 1000 2.136437 \n", + ".. ... ... ... \n", + "370 sweep_cifar10 500 0.303976 \n", + "371 sweep_cifar10 500 0.303976 \n", + "372 sweep_cifar10 500 0.303976 \n", + "373 sweep_cifar10 500 0.303976 \n", + "374 sweep_cifar10 500 0.303976 \n", + "\n", + " sweep_yaml_config MAX_PHYSICAL_BATCH_SIZE \\\n", + "0 experiments/paper_plots/opacus_cifar10.yaml 200 \n", + "0 experiments/paper_plots/opacus_cifar10.yaml 200 \n", + "1 experiments/paper_plots/opacus_cifar10.yaml 200 \n", + "0 experiments/paper_plots/opacus_cifar10.yaml 200 \n", + "1 experiments/paper_plots/opacus_cifar10.yaml 200 \n", + ".. ... ... \n", + "370 experiments/paper_plots/opacus_cifar10.yaml 200 \n", + "371 experiments/paper_plots/opacus_cifar10.yaml 200 \n", + "372 experiments/paper_plots/opacus_cifar10.yaml 200 \n", + "373 experiments/paper_plots/opacus_cifar10.yaml 200 \n", + "374 experiments/paper_plots/opacus_cifar10.yaml 200 \n", + "\n", + " num_epochs run_id \n", + "0 1 6zf3ts8o \n", + "0 2 rxhgpsuc \n", + "1 2 rxhgpsuc \n", + "0 2 crjs7cyj \n", + "1 2 crjs7cyj \n", + ".. ... ... \n", + "370 375 5kzoad2m \n", + "371 375 5kzoad2m \n", + "372 375 5kzoad2m \n", + "373 375 5kzoad2m \n", + "374 375 5kzoad2m \n", + "\n", + "[1702 rows x 25 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def get_hist_opacus(run, add_config=True):\n", + " # requires that EPOCHS < 1024 to work ! (otherwise increase sample)\n", + " hist = run.history(samples=2048)\n", + " # check for empty runs\n", + " if len(hist) == 0:\n", + " faulty_runs[run.name] = \"empty_run\"\n", + " return hist\n", + " \n", + " if \"epsilon\" not in hist.columns:\n", + " faulty_runs[run.name] = \"no_epsilon\"\n", + " return hist\n", + " \n", + " # re-order columns and reindex data\n", + " hist = hist.sort_values(by=[\"epoch\", \"_step\"], axis=0)\n", + " hist = hist.reset_index(drop=True)\n", + "\n", + " # drop row where epsilon is not known\n", + " hist = hist.dropna(how=\"any\", subset=[\"epsilon\", \"val_accuracy\"], axis=0)\n", + "\n", + " if len(hist) == 0:\n", + " faulty_runs[run.name] = \"empty_run\"\n", + " return hist\n", + "\n", + " # add name to data\n", + " hist['name'] = run.name\n", + " hist['sweep'] = name_from_id[run.sweep.id]\n", + " # append metadata (for instance sweep params!)\n", + " if add_config:\n", + " for k, v in run.config.items():\n", + " hist[k] = v\n", + " hist['num_epochs'] = len(hist)\n", + " hist['run_id'] = run.id\n", + " \n", + " return hist\n", + "\n", + "def get_opacus_runs():\n", + " api = wandb.Api()\n", + " entity = \"algue\"\n", + " project = \"ICLR_Opacus_Cifar10\"\n", + " states = [\"finished\", \"killed\", \"running\"] # only runs that did not failed or crashed.\n", + " sweep_ids = list(sweeps_opacus.values())\n", + " filters = {\"state\": {\"$in\": states}, 'sweep': {\"$in\": sweep_ids}} \n", + "\n", + " runs = api.runs(entity + \"/\" + project, filters) \n", + "\n", + " histories = []\n", + " n_jobs = 10\n", + " debug = False\n", + " with parallel_backend(backend='threading', n_jobs=n_jobs, require='sharedmem'):\n", + " pfor = Parallel(n_jobs=n_jobs)(delayed(get_hist_opacus)(run, add_config=not debug) for run in tqdm.tqdm(runs))\n", + " for metrics_dataframe in tqdm.tqdm(pfor):\n", + " histories.append(metrics_dataframe)\n", + "\n", + " histories = pd.concat(histories)\n", + " histories = histories.dropna(how=\"any\", subset=[\"epsilon\", \"val_accuracy\"], axis=0)\n", + " histories = histories.dropna(how=\"all\", axis=1)\n", + " histories = histories.sort_values(by=[\"EPOCHS\", \"name\", \"epoch\", \"_step\"], axis=0)\n", + " return histories\n", + "\n", + "opacus_hist = get_opacus_runs()\n", + "opacus_hist" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "if redownload:\n", + " histories.to_csv(\"robustness_cifar10.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "histories = pd.read_csv(\"robustness_cifar10.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAChcAAAR1CAYAAACz9gZmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAC4jAAAuIwF4pT92AAEAAElEQVR4nOzdeYCNZf/H8c+ZfWc2BmMZipGdiZQtJUUUQlpEi7RQqsfToqKIkniKFiLqaUUplETZtzCy7wZjLLOYfZ85vz/6mafjHDPnzJyZM2e8X3+5v+e6r+t7zpjblI/rMhiNRqMAAAAAAAAAAAAAAAAAAAD+n4ujGwAAAAAAAAAAAAAAAAAAAJUL4UIAAAAAAAAAAAAAAAAAAGCCcCEAAAAAAAAAAAAAAAAAADBBuBAAAAAAAAAAAAAAAAAAAJggXAgAAAAAAAAAAAAAAAAAAEwQLgQAAAAAAAAAAAAAAAAAACYIFwIAAAAAAAAAAAAAAAAAABOECwEAAAAAAAAAAAAAAAAAgAnChQAAAAAAAAAAAAAAAAAAwAThQgAAAAAAAAAAAAAAAAAAYIJwIQAAAAAAAAAAAAAAAAAAMEG4EAAAAAAAAAAAAAAAAAAAmCBcCAAAAAAAAAAAAAAAAAAATBAuBAAAAAAAAAAAAAAAAAAAJggXAgAAAAAAAAAAAAAAAAAAE4QLAQAAAAAAAAAAAAAAAACACcKFAAAAAAAAAAAAAAAAAADABOFCAAAAAAAAAAAAAAAAAABggnAhAAAAAAAAAAAAAAAAAAAwQbgQAAAAAAAAAAAAAAAAAACYIFwIAAAAAAAAAAAAAAAAAABMEC4EAAAAAAAAAAAAAAAAAAAmCBcCAAAAAAAAAAAAAAAAAAAThAsBAAAAAAAAAAAAAAAAAIAJwoUAAAAAAAAAAAAAAAAAAMAE4UIAAAAAAAAAAAAAAAAAAGCCcCEAAAAAAAAAAAAAAAAAADBBuBAAAAAAAAAAAAAAAAAAAJggXAgAAAAAAAAAAAAAAAAAAEwQLgQAAAAAAAAAAAAAAAAAACbcHN0Ayi4zM1O7d+9WTEyMUlNTVVhYKH9/f9WvX18tW7ZUQECAo1sEAAAAAAAAAAAAAAAAADgRwoVObMeOHZo3b57Wrl2rvLw8i2NcXV3VoUMHDRs2TF27dq3gDv+2detWDR061G7zzZkzR126dLF6fGxsrG655Ra7rT9+/HgNGTLEbvMBAAAAAAAAAAAAAAAAQGVDuNAJZWZmasKECVqyZEmJYwsKCrRp0yZt2rRJXbt21ZQpUxQUFFT+TQIAAAAAAAAAAAAAAAAAnJaLoxuAbZKTk3XfffdZFSy83Nq1a3XPPffozJkz9m8MAAAAAAAAAAAAAAAAAFBlsHOhE8nLy9PIkSN14MABs9fq1q2r3r17q27dunJ1dVVsbKxWrlypw4cPm4w7c+aMHn74YS1evFh+fn4V1bqZevXqycfHp1T32qPvWrVqqVq1aqW6NzAwsMzrVxYXL2aosNDo6DYA2MhgMCgoyNeklpSUIaOR72cAPCMAFI9nBIDi8IwAUByeEQCKwzMCQHF4RuByLi4GBQb6ljwQAOBwhAudyMyZMxUdHW1Sc3Nz08svv6whQ4bIxcV0I8pRo0bp559/1ssvv6ysrKyiekxMjN588029/fbbFdK3JRMnTlSHDh0ctv7o0aPVv39/h61fWRQWGgkXAk7IYDCvFRYa+Y9wAJJ4RgAoHs8IAMXhGQGgODwjABSHZwSA4vCMAADAeXEsspM4efKk5s6da1afNm2a7r//frNg4SW9evXSvHnz5O7ublJfsmSJdu7cWS69AgAAAAAAAAAAAAAAAACcGzsXOonZs2crLy/PpNa/f3/dfvvtJd7btm1bjRw5Uh988IFJfdasWRYDiwAAAAAAAAAAAAAAAM7IaDSqsLCQ3TEBOB2DwSAXFxcZLG376yCEC51Aenq6li5dalJzc3PTs88+a/Ucjz32mD7//HOlpKQU1TZs2KDTp0+rbt269moVAAAAAAAAAAAAAACgwhiNRmVnZystLU1paWnKzc11dEsAUCYeHh7y9/eXv7+/vLy8HBo25FhkJ7By5Url5OSY1Lp3766aNWtaPYenp6fuvvtus/rloUUAAAAAAAAAAAAAAABnkJmZqWPHjikmJkaJiYkECwFUCbm5uUpMTFRMTIyOHTumzMxMh/XCzoVOYN26dWY1a45DtnTPggULzOZ+8sknS90bAAAAAAAAAAAAAABARcvMzNSpU6eKjj/++zjkS792ZGcAUHqXNil0cTHIYDAoLy9Pp06dUr169eTj41Ph/bBzoRPYvn27WS0qKsrmeZo3by5PT0+T2p49e8x2RQQAAAAAAAAAAAAAAKis/hksNBqNys8vVEGBUUYjwUIAzu3Sc6yg4O9n26Xn3KlTpxyygyE7F1ZyFy5cUHx8vEmtdu3aNh2JfImHh4datGhhElbMz8/XwYMH1apVqzL3CgAAAAAAAAAAAAAAUJ6MRqPi4uKKAjcFBX+nCd3c3OTt7SMvLx+5urrJcGn7LwBwEn8/0/KVnZ2prKxM5efnq6DAKFfXv1+Pi4tTo0aNKvT5Rriwkjt+/LhZrV69eqWer169emY7IR4/frzCw4WrV6/Wjz/+qL179yohIUGpqany9vZWtWrVFBISopYtWyoqKkodO3aUv7+/3df/888/tWfPHv3111+6cOGCkpOT5eHhoerVqyswMFDNmzdXVFSUbrzxRgUHB9t9fQAAAAAAAAAAAAAAYLvs7Gzl5eVJUlGw0NvbR0FBoQQKATg9Nzc3eXp6KSAgUElJ8crKylRBgVFubn8fkZyTkyMvL6+K66fCVkKpxMbGmtVq165d6vks3Xv69OlSz1daCxYsMKvl5eUpNTVVp0+fVnR0tBYsWCBfX18NHDhQw4cPV1hYmN3W//777y2un5GRoTNnzmjv3r365ptv5OHhob59++qRRx5Rw4YN7bY+AAAAAAAAAAAAAACwXVpamqS/d/iS/g7iECwEUNUYDAYFBYXq/Pkzys/Pl9FolMFgUGpqKuFC/E9CQoJZrVatWqWez1JAz9IalUVGRobmz5+vRYsW6c0331SvXr0qdP3c3FwtWrRIP/74o8aOHauhQ4dW6PrlzWAwiJ+vAOdj6fv27xrf0AB4RgAoHs8IAMXhGQGgODwjABSHZwSA4vCMwOXKGgK8FC4sLPzfroUECwFURQaDQd7ePkpLS1VhoVGurgalpaWpRo0aFdYD4cJKLiUlxazm4+NT6vl8fX3NasnJyaWeryw8PT0VGBgoPz8/ZWdnKyUlpeiHgMulp6drzJgxOnDggJ5//nm7rO/u7q7AwED5+/srPz9fKSkpV/ws8vLyNGnSJP3111969913q8wPJkFB5r8fADin4GA/R7cAoBLjGQGgODwjABSHZwSA4vCMAFAcnhEAisMzAqVlNBqVm5trUvPyKn2GAgAqOy+vv8OFl+Tm5hbtYlgRCBdWcpmZmWa1smxt6enpaVbLysoq9Xy2qF69urp06aIuXbqoefPmql+/vlxcXEzGxMbGauvWrfryyy+1b98+szlmz56t0NDQUu0g6OPjo86dO6tz585q3bq1IiIi5OZm+i0QHx+vP//8U9988422bt1qNseyZcsUEhKil156yeb1AQAAAAAAAAAAAABA6RUWFhb9+v9PRZarK9EXAFWXq6urpP8986S/n4WX6uWNJ2wll5eXZ1azFBC0lqVgoqU17KlGjRqaOnWqbr/9dnl4eBQ7Njw8XOHh4RowYICWLl2q119/XRkZGSZjJk+erPbt2ysyMtKq9X18fDR+/Hj16dNHfn7F/wuY0NBQ9erVS7169dKmTZs0duxYxcfHm4yZP3++OnTooO7du1u1PgAAAAAAAAAAAAAAKDvjP9M1/6+qnDwIAJYYDC5mNUvPwvJivjqqNEf8oRoREaG+ffuWGCy8XJ8+ffTVV1+ZHeVcWFioqVOnWj1PUFCQhgwZUmKw8HI33nijFi5cqJo1a5q99t5776mgoMCm+QAAAAAAAAAAAAAAAADAWbBzYSV3+bG9kpSTk1Pq+bKzs81q7u7upZ6vvEVGRmry5MkaPXq0SX3Dhg06dOiQmjRpUq7r16pVSzNnztSgQYNMUr9HjhzR2rVrnX73wqSkDBUWVlyaGYB9GAxScLBpYDoxMV0V+I8TAFRiPCMAFIdnBIDi8IwAUByeEQCKwzMCQHF4RuByLi4GBQX5ljwQAOBwhAsrOR8fH7OapYCgtSzd6+3tXer5KkLPnj3Vpk0bRUdHm9TXrl1b7uFCSWrZsqV69+6tZcuWma3v7OFCo9FYoVulArAX811ojcaK3foYQGXGMwJAcXhGACgOzwgAxeEZAaA4PCMAFIdnBEzxpXcOcXFx6t//TpPali07HdQNAEchXFjJVa9e3ayWmZlZ6vks3WtpjcqmT58+ZuHCzZs3a8SIERW2/uXhws2bN1fI2gAAAAAAAAAAAAAAoHKZM+djzZ0726qxPj4+8vX1U2BgkBo3bqzrrmuum2++RYGBgeXcJQCUDeHCSi44ONisdvbs2VLPd+7cObNaSEhIqeerKB06dDCrxcXFVdj67du3d+j6AAAAAAAAAAAAAADAOWVmZiozM1Px8Rd0+PBBLVv2k6ZPn6ru3W/V6NFjFBxc+XMbKL05cz42ub733vvl7+/voG4A2xAurOTCw8PNamUJtZ05c8aqNSqb0NBQs1pSUlKFre/j4yM/Pz+lp6cX1fLy8pSWlsYDHwAAAAAAAAAAAAAA2CQvL0+//vqLNm/epLfeeltRUeabHqFquHyHy969+5I1gdMgXFjJNWzY0Kx26tSpUs93+vRpq9aobLy9vc1q2dnZFd7DP8OFl3rggQ8AAAAAAAAAAAAAAB58cJjFekZGhs6fP6e9e/coJSXZ5LXU1BSNHfu8Pvlkrq69tnH5NwkANiBcWMnVrFlToaGhio+PL6rFxcXp/Pnzqlmzpk1z5eXlac+ePSY1V1dXRUZG2qXX8nTx4kWzWmBgYIX2kJycbHJtMBhUvXr1Cu0BAAAAAAAAAAAAAABUTk89NbrY1/Pz8/Xbbys0ffo0paamFNUzMzP0zjtvac6c+eXcIQDYxsXRDaBkUVFRZrUdO3bYPM++ffvMdvtr0aKFvLy8St1bRTl69KhZLTg4uMLWj4mJUV5enkktICBA7u7uFdYDAAAAAAAAAAAAAABwXm5ubrrjjjs1Z85nZqck7tmzW3/+udVBnQGAZYQLnUCXLl3MaitWrLB5Hkv3WJq7Mlq7dq1ZrSJ3XHT0+gAAAAAAAAAAAAAAoGqoX7+BHn30cbP6xo3rHdANAFwZ4UIn0KNHD3l6eprUVq9ebXJUcklycnL0ww8/mNX79OlT5v7KW1JSkhYtWmRWr6hgZG5urhYsWOCw9QEAAAAAAAAAAAAAQNXSq1cfubiYxnZ27Yp2UDcAYJmboxtAyfz9/dW7d299//33RbX8/HzNmDFDkyZNsmqOTz/9VMnJySa1m266SfXq1bNnq3ZnNBo1fvx4ZWRkmNT9/PzUqVOnCulh2rRpOnPmjEnN1dVVPXr0qJD1AQAAAAAAAAAAAABA1eLv76/w8Lo6depkUS0hwfpNpv4pMTFR+/fvVVJSklJSkuXp6amgoGCFh9dVkyaRZiFGeyksLNSBA/t17NhRJSdflKurm2rUqKFGja5Rw4aNymXNinDhwnkdOXJY58+fV0ZGuvLz8+Xl5SU/Pz/VqlVb4eF1FRZWy9FtWnTixHEdOLBfCQkJkqTAwOqqXz9CzZo1l6urq13XOnr0iE6dOqmkpCSlp6fJ3z9AgYFBatasmWrWDLPLGnFxZ3TkyGHFx8crMzNDhYWF8vLykr9/gGrXrq169eorODikVHMXFhbq9OlTOnr0iJKSEpWRkSGDwSAvLy9Vq1ZdtWvXUf36DVStWjW7vBdnRbjQSYwYMUJLly5VXl5eUW3RokXq1q1biSG3Xbt26aOPPjKrP/nkk1at/cEHH2jmzJkmtfbt2+uLL74o8d758+erR48eqlOnjlVr/VNubq7eeOMN/frrr2avjRgxQv7+/iXOsXDhQrVq1UqNGze2ef3CwkLNmjVL8+fPN3vtnnvuUf369W2eEwAAAAAAAAAAAAAAQJKqVasu6X/hwpSUFKvvLSgo0NKlP2rJksU6dOigjEajxXGBgYHq3Lmbhg9/RLVq1S5jx3/LycnRV199oYULv1VSUqLFMRERDXXvvferb9+7ZTAYrJp3x47teuqpEUXXYWG1tGTJcpt6W7bsJ02cOL7ouk2bdvroozkl3peTk6NFi77VsmU/6cSJ4yWODw4OUevWbdStW3d169Zd7u7uJq/fcEPbK97bv/+dxc7dq1cfvfbaBJNaXFyc2X1btuyU9PfGXcuXL9UXX8zXyZMxFuf09/fXwIH36oEHHpKPj0+x6xfn7Nk4ff75fG3YsLbYE1cbNmykAQMG6a67+snNzbZ4Wlpamr7++r/65ZflOns2rsTxYWFhatv2enXvfotuuqlzib/f4uPj9eWXC7Ry5a9X/P37T3Xr1tP113fQrbfeprZt21n9PqoKjkV2EhERERo2bJhZ/dlnn9VXX32lwsJCi/etWLFCw4cPNwklSn8fhxwVFVUerZr44YcfdNttt+m5557TqlWrlJ2dXeI9RqNRa9eu1aBBg7Rw4UKz1xs2bGjxs7Dkjz/+UN++ffX4449r6dKlSk9Pt+q+HTt26KGHHjILVUpSSEiIRo8ebdU8AAAAAAAAAAAAAAAAluTk5JhcWxvCOnz4kB54YLCmTJmogwcPXDFYKEkXL17UTz/9oHvvHaB580oO2ZUkLi5Ow4bdr08++bDYYNaJE8c1efKbevLJEbp48WKZ1y1Phw4d1L33DtAHH8ywKlgoSYmJCVq9+je9+upLOnMmtpw7vLLU1FQ988xTmjhx/BWDhdLfgb158+Zo+PAHdOHCeZvXyc/P18yZ/9Hgwf31ww+Lig0WStLx48c0depk3X//IKs/U0naunWzBg26W/PmzbEqWChJ586d088/L9ULLzyr3NzcYsf+8ssyDR7cT99885VVwUJJOn36lL7/fqHGjXvRqvFVDTsXOpHRo0dr27Zt+uuvv4pq+fn5mjBhgj777DP16tVL9erVk6urq2JjY7Vy5UodOnTIbJ769evr9ddfr7C+8/PztXz5ci1fvlze3t6KjIxUZGSk6tevL39/f/n5+Sk7O1spKSk6ePCgtm7danYM8SVhYWGaO3euPD09rV7faDRqzZo1WrNmjdzd3RUZGakmTZqoYcOGCggIkJ+fn/Lz85WSkqIjR47ozz//1LFjxyzO5efnp08//VQhIaXbUhUAAAAAAAAAAAAAAMBoNOrcOdPwVFBQcIn37djxp8aOfV4ZGdZtrnRJTk6OZs/+SGfOxOqll161eTc5SUpKStJTT42wOvQlSdHROzRq1EjNmvXJ/+/UWLnExJzQ008/rrS0NEe3YrOMjHSNGjVShw4dtPqekydjNGrUE/r886+tzt5kZGTolVfGasuWzTb3ePJkjB5//GFNm/YftWjRqtix0dE79K9/jSkxIFhaK1eu0BtvvF5sGBfmCBc6EQ8PD3388ccaNmyYWWjw1KlT+vjjj0uco06dOpo7d65VRwqXh6ysLEVHRys6Otrme5s2barp06erdu3Sb9Obl5enPXv2aM+ePTbfGx4ervfee09NmzYt9foAAAAAAAAAAAAAAAD79u1VamqqSa1x4ybF3hMbe1r/+tcYZWZmmtQjIhqqf/97FBXVXiEhocrKytSJE8e1cuUK/fLLcpPTMJcvX6qQkBA98cQom3t+6603ioKFfn5+GjBgkLp06abatetIkuLizmjduj+0aNFCk/Dj0aNH9MorL2rmzJJzLRXtnXcmmwULo6Laq2fP29WkSVPVqFFDnp5eys7OVlpamk6ditGRI4e1Zcsm7d27RwUFBRbnffDBYUW//uKL+Sav9et3j/z8/K7YU2SkdbmUN98cXxQsDAkJUf/+g9Shww0KC6slDw8PXbhwXps3b9R//7tAycnJRfedPBmj+fPn6vHHnyxxjcLCQv37389p+/Y/TephYWHq27ef2rZtp9q1w+Xr66v09DQdPnxIq1at1G+//Vr0+y41NVUvvvgvffHFNwoKCrK4Tn5+viZNesMkWOji4qLOnbuqe/dbde21jRUcHCIPDw9lZWUpNTVFMTEndOjQQW3evLHYo8Ev9fDuu2+bjHFzc9Ntt92uzp27qmHDRqpePVAeHh7KzMxQcnKyjh8/poMH92vTpo027b5Y1RAudDJBQUH6+uuv9dprr2nZsmU23dupUye98847Cg4uOelemfj4+Gjo0KF6+umnzc6orwju7u7q37+/xo4dW+zDHQAAAAAAAAAAAAAAwBqWjiju1q37FccXFBRo/PhxZsHCe++9T08//Yzc3P6Xp/D391eNGjXVoUNH9es3QP/61xiTo4m/+GKBOna8Sa1bt7Wp5w0b1kmSmja9Tm+//Z5q1Khh8npgYKCaNWuu/v0HauzY50x21Nu+fZt++mmJ+va926Y1y9OpU6e0c+d2k9qLL47T3Xf3Nxvr7e2twMBA1atXT506ddHw4Y8qMTFB33+/SN7e3mbjn3pqdNGvLw8XPvjgsDJtrHXJmjW/S5J69rxDL700Tl5epn34+/urUaNrdPvtvfTkkyN06tTJotcWL16o4cMflYeHR7FrzJ072yRY6OLiouHDH9Hw4Y+Z7X7p6+urmjXD1LlzVw0cOFj//vcLSkxMkPT3MdJvvz1Jb789zeI6O3ZsV2zs6aJrV1c3TZ06XTfeeJPZWG9vbwUFBalBgwh169Zdjz/+pM6cidXChd/KxcXF4vy//75Kqakp/+jVT7NmfazIyOsszh8cHKJGja5Rjx49NWrUGB05clgrV64o5pOquix/oqjUfH19NW3aNH355Ze65ZZbig3cubq6qmPHjvr44481d+7cCg8Wzpw5UxMnTlTfvn3VqFEjubq6WnWfp6en2rZtq3Hjxmn9+vUaM2ZMqYKFr7/+ut555x0NHDhQkZGRVs/h7u6uZs2aacyYMVq7dq3eeOMNgoUAAAAAAAAAAAAAAKBMCgoKNGPGu9q0aYNJPTw8XN2733rF+9atW6O9e01Pabzrrn569tkXTIKFl2vevKVmzJhlcgRuYWGhPv54Vqn6r127jqZP/8AsWPhPNWuGacaMWQoLCzOpz5nzkfLz80u1bnnYvdv01M3rr+9gMVh4JcHBIXrssZGqWTOs5MHlpHv3WzV+/ESzYOE/hYSE6rXXJpjUUlNTtHnzxmLnPns2TvPnzzOpPffcWD322BMlHqvdvHlLTZ/+gTw9vYpqa9f+oePHj1kcf/nXonfvPhaDhVdSp064nn32+Svmgnbv3mVy/cADQy0GC6/k2msbmwRGrybsXOjEoqKiFBUVpYyMDO3evVsnTpwo2jLXz89P9erVU6tWrVStWrUyrTNq1CiNGmX7driSVLduXdWtW1cDBw6UJOXk5OjEiRM6d+6czp8/r4yMDGVnZ8vd3V0BAQHy9/dX3bp1bQoCFqdmzZq66667dNddd0n6+1jkU6dOKS4uTufOnVN6erqys7Pl6uoqf39/BQQEqFatWrruuuvk5eVVwuwAAAAAAAAAAAAAAADFy8jI0Pnz5xQdvVPff79Qx44dNXnd3d1d48aNLzYnsXDhtybXNWrU1DPPPG/V+k2aROrBB4fp008/Kart2hWtQ4cOqkmTSBveiTRmzAuqXj2wxHGBgYF69tkX9OKLLxTV4uPjtWHDumJ3aKxISUlJJtdNm1ofNqsM/Pz89NJLr8pgMJQ4tnnzlmrevIVJQHXfvr3q2vXmK97z9ddfqqDgf2HQm27qrHvuGWR1f40bN9HgwUP0+eefFdUWLvxG//73K2Zjzb8W1h0Nba2kpMTL5neur7UjES6sAnx9fdWxY0d17NjR0a2UyNPTU5GRkYqMtO0PJ3txd3dXo0aN1KhRI4esDwAAAAAAAAAAAAAAqqYbbrDtmGHp7+NZ33hjUrFHFCclJZkd3zt48BD5+PhYvc6QIffrv/9doOzs7KLaqlUrbQoXNmgQoc6du1o9vlu37qpbt55Onz5VVPvtt18rTbjw8h0fLx3h6yzuvLOv/P39rR7fvv0NJuHCo0ePXHFsfn6eli37yaQ2fPgjNvd4990DTMKFf/651eI4869FosVxpVXe81dlHIsMAAAAAAAAAAAAAAAAVCBfXz/17z9Q3367WDfd1LnYsXv2/GVWu+22O2xe7/JgoKV5i3PrrbfZNF6Sbrutp8n15Uc7O1KDBhEm16tW/aYDB/Y7qBvb3XDDjTaNv/z9JicnX3HswYMHlJmZUXQdGlpDzZu3tGk9Sapdu7Zq1KhZdB0bG2sxxHl5b4sXL9SZM7E2r3cll8//+eefKTn5ot3mr8oIFwIAAAAAAAAAAAAAAAAVKCQkRJ06dVFISGiJY/fv32tyHRZWS6GhJd93ucvDYQcOHFBhYaHV9zdr1tzmNZs1a2Fyff78uUqzQ2Dbtm1VrVr1ouucnGyNGDFcU6dO1v79+2Q0Gh3XnBWuvbaxTeP9/Ex3OczISL/i2F27osu01j+FhISYXMfGmocGO3fuIje3/x3Ae/Fikh58cIhmzXpfx48fK/Xal1y+W+bJkzEaMmSgPvvsU8XFnSnz/FUZxyIDAAAAAAAAAAAAAAAAZfTgg8PMajk5OUpMTNDevXt0/vy5ovrJkzF6/vnRevbZ5zV48H3FzpuQYBrGa9TomlL1d801pvfl5GQrPT1dAQEBVt0fEdHQ5jUt3RMfH6/g4BALoyuWl5e3Ro58Um+//VZRLS8vT4sXL9TixQsVFBSsNm3aqkWLlmrRopUiI5vK1dXVgR2bCgioZtN4T09Pk+ucnJwrjj1zxjRwt2nThlId+21JamqKWa1GjZq6774HTY5QzszM0BdfzNcXX8xXWFiYWrduq5YtW6tFi5a65pprZTAYrF6zefMW6tGjp3777dei2sWLSfrkkw/1yScfql69+v8/f0u1bNla9erVL9ubrEIIFwIAAAAAAAAAAAAAAABl9NRTo6/4mtFo1KZNGzR16mSdO3euqDZ9+rsKDg4p9sjh9HTTHeasDQNezlIYLS0t1er5/P1tX9ff39+slpaWavM85aVfv3uUmpqqTz750GwXx6SkRK1e/ZtWr/5NkuTj46u2bdvp1ltvU7duN8vLy9sRLRdxd3cvt7ktBQDtJT09zWJ95MinlJmZoUWLvjN77dy5c1qx4metWPGzJKlateq6/vr26tGjp266qZPc3Er+LF555XXl5eVpzZrfzV47deqkTp06qZ9++kGSFBoaqhtuuFE9etyu669vb1OQsarhWGQAAAAAAAAAAAAAAACgHBkMBt10U2fNnj1fNWrUNHntrbfeNNnV8HIZGRkm16UNtXl5eZnVMjMzy3R/yfeY95qVlWXzPOXpoYce1vz5X6pLl25ydb3yPm2ZmRnasGGdxo8fp379+ujbb7+u9Ecnl1ZamuUAoD0UFFg+itvFxUUvvPCiZs2arXbtoooN9KWkJGvVqpX697+f18CB/YpCh8Xx8vLSlCnvasqUd3Xddc2KHRsfH6+lS3/U6NFP6IEHBmvLlk0lzl9VsXMhAAAAAAAAAAAAAAAAUAFq1Kiht956RyNGDC/aKS8zM0PTpr2jd955z+I9vr6+JtfZ2aUL52VnZ5vVfHx8bLr/8l5Kvse8V29vx+74Z0njxk30zjvvKSkpSZs2rdfOnTv111/ROnMm1uL4ixeTNH36VG3btllvvz3Nqp3znMnlRyg3bNhIN93U2S5zX3489+XatYtSu3ZROns2Tps2bVR09A799Ve04uPjLY4/ezZO48eP065dO/Xii+NKXL9bt+7q1q27YmJOaPPmjYqO3qndu3cpOTnZ4vhjx45qzJhRGjHiCQ0f/miJ81c1hAsBAAAAAAAAAAAAAACACtK8eQv17z9QixZ9W1Rbt26NoqN3qE2bdmbj/fz8TK5TU0t3rLClo25tOeo4LS3V5nChpR3wSnO8srXy8nLLdH9QUJDuvPMu3XnnXZKkhIR47d79l7Zt26ING9YpISHBZPzGjRs0a9YHeuaZ58q0bmVTvXp1k+s6dcKLPfa7PNSqVVsDBgzUgAEDJUlxcXH6669obd26WZs2bTD7Pliy5Hs1bHiNBg2616r5GzSIUIMGERoy5AFJUkzMCf311y5t2bJJW7ZsMtlh02g06pNPPtQ111yrzp272ukdOgeORQYAAAAAAAAAAAAAAAAq0KOPjpCPj2lQb/bsjyyODQkJMbk+fvxYqdY8evSoybWnp5dZcLE4J04ct3lNS/eEhoZaHOvhYbr7X15ens3rpaSYByjLIiQkVN2736oXXxynJUt+1oQJk8yCd4sWfauUlGS7rutowcGmv+cSEizvGliRateurTvu6K3x4ydq6dJf9cIL/zY7qvuzzz4t2hHUVg0aROiuu/pp8uSpWrbsVz322Ei5urqajJk7d3ap+3dWhAsBAAAAAAAAAAAAAACAClS9eqAGDx5iUouO3qkdO7abjb3uuuYm12fPxikxMcFsXEn27t1tct20aVO5uFgfHdq3b6/Na15+T82aYWbBtUt8fU2DjunpaTIajTatd/ToEdsatIGbm5t69rxD7747w6Sel5dn8evmzFq3bmNyffjwYWVmZjqoG3Oenp66557BeuWV103qFy8m6dChg2We39fXT488MkKPP/6USf3QoYO6ePFimed3JoQLAQAAAAAAAAAAAAAAgAp27733ydvb26RmaWe0Fi1amdVWrlxh01oZGRlav35tifMWZ/Xq32waL0mrVq00uW7evMUVx1arVt3kOicnR2fPxlm9VkWF/Jo3b6n69RuY1M6ePXvF8R4eHibX+fm278hY0Vq3bmPSd0FBvtas+d2BHVnWvfutZt9DxX0tbNW7dx+Ta6PRqPPn7Te/MyBcCAAAAAAAAAAAAAAAAFSwatWqq1+/e0xqO3du165dO01qQUFBatcuyqT27bdfKzs7y+q1vv32K2VnZ5vUevToaVO/J04c18aN660ev27dWp08GWP1msHBwWa7Gm7btsXq9VasWK6LF5OsHl8Wvr6+JQ+6wtjk5GQ7d2N/Xl7euvXW20xqn332qXJychzUkWWurq5mRyPbk6+vT7nN7SwIFwIAAAAAAAAAAAAAAAAOcN99D8jT09Ok9umn5rsXDhx4r8n1uXNnNXPm+1atceTIYS1Y8JlJrXXrNmrcuImN3UrvvTdVKSkpJY5LTr6o6dOnmtRCQkLUqVOXYu+7fGfDhQu/VX5+fonrnT0bpw8+mFHiuH+Kiztj0/hLUlNTdezYMZNaWFjYFceHhdUyuT548ECp1q1ow4c/KldX16Lr06dP6c03X1dhYWGp5issLFRysuUjhUv7tTh5MsbsmGJLX4vSzr9rV7RZrWbNWhZGVl2ECwEAAAAAAAAAAAAAAAAHCAkJ1Z139jWpbd++Tbt3/2VS69y5q1nwbtGib/Xhhx8UG77bt2+vnnnmKeXk/G/XQhcXF40c+VSp+j1zJlZjxoxSfHz8FcdcuHBBY8aMMjvSeMSIJ+Xm5lbs/D173mFyfezYUb3//vRi7zly5LCeeOJRpaamltC9qRkzpmno0CFatuwnZWSkW3VPdnaWJkwYZ/J5enh4qH37G654T2RkU5Pr7777WomJCTb16gh169bTAw88ZFJbtWqlRo0aadNx1RcvXtR3332jQYPu1m+//WpxzIsvvqAnnnhUv/++2myHzStJTr6oCRNeNamFhISYfd6SNGzY/Xr++We0efNGq4+ljos7o6lTp5jUrruuuQIDA626v6oo/jsWAAAAAAAAAAAAAAAAQLl58MFh+vHHH0xCgnPnfqL//OfDomtXV1eNHz9RQ4cOUWZmZlH9888/08aN6zVgwCC1axel4OBgZWZmKSbmhFau/EW//LJcBQUFl633kFq3bmtzn506ddGGDeu0f/9e3XffPbrnnsHq0qWbatX6eye3uLg4rVu3RosWfav0dNOwXlRUe/Xte3eJa3Tu3FXh4eGKjY0tqn333dc6fPigBg26T82bN5evr5/S0lJ15Mhh/fHHav366y8qKCiQwWBQt27d9ccfq61+T4cPH9LEieP19tuTFBXVXq1bt1FkZFPVrl1HAQEB8vDwVGZmhmJjY7Vjx3YtWbJYFy6cN5mjf/975O/vf8U1une/VT/8sLjoOjb2tAYM6Ku2baNUp0642bG+kZFNdcstPax+D+Xp8cef1NGjh7Vx44ai2o4d23XPPXerW7eb1bHjTbruumaqXj1QXl5eyszMUFpamk6ejNGRI4e0Y8d27d79V4m7HRqNRkVH71R09E55e3vrhhtuVIsWrdSkSaTCwsLk7x8gNzc3paen69SpGG3dukU//viDUlNNd9F88MFhcnEx32uvsLBQGzeu18aN6xUQEKAbb+ykZs2aq3HjSIWG1lBAgL8MBhelpqYoJuaENm7coOXLf1JWlunR48OGPVyGT9M5ES4EAAAAAAAAAAAAAAAAHCQsrJZuv72Xli37qai2desW7d27x2S3wvDwunrnnfc0duzzyszMKKofO3ZU77zzllVr9e7dR4899kSp+nz55df08MMP6ty5s0pLS9Nnn32qzz77tMT7GjW6RpMmTSlxnCS5u7vr5Zdf19NPP24SSNu1K9riEbX/9PjjTyokJNSmcOEleXl52rx5ozZv3mjTfS1atNLIkU8XOyYqqr3atYvSjh3bi2rZ2dnatGmDxfG9evWpNOFCFxcXTZr0tiZOnKBVq1YW1QsK8rV69W9avfo3u6+ZlZWlP/5YbfPXsVu37ho0aEiJ41JTU7Vixc9aseJnm+a/99771aVLN5vuqQo4FhkAAAAAAAAAAAAAAABwoKFDH5arq6tJbe7c2WbjoqLa66OP5qhBgwib5vfw8NBjj43Uq69OKPFo4isJCgrShx/OVv36Day+p02btpo58xNVq1bd6nvatm2nN954S+7u7laNd3V10zPPPKdhwx6xeg1JVs9vicFgUO/effTBBx+Z7TxoaezEiW8Xe3RyZebl5a2JE6dozJgXFBAQUOp5atYMu+Lv27J8LVxd3fTAAw9p0qS3ZTAY7D6/l5eXRo0ao2effb7Uczgzdi4EAAAAAAAAAAAAAAAAHKhevXq65ZYeWrlyRVFt8+aNOnBgv5o2vc5kbJMmkfryy++0dOkS/fDDYh0+fEhGo9HivNWrV1fnzt308MOPqlat2mXus3btOlqw4Cv9978LtHjxd7p48aLFcQ0aROjee+/XXXf1u2Lgqzi33nqbGjW6Rh9++IE2bdpgdrSz9Peueh073qjHH39KjRs3sXmNCRMm6Z57BmnTpo2Kjt6hw4cPKTc3t9h7fHx81a3bzRowYJCaNWtu9VqBgYF6//0PFR29Q6tXr9KhQwcVF3dGGRnpys7Otrl3Rxg8+D7deeddWrz4O61atVJHjhy+4u+7Sxo0iND113dQ585dFRV1vcUjiyXp44/naseOP7V58ybt2hWtY8eOWPya/1P16tXVvXsPDRp0b4lh28WLl2rbti3asmWT/vprl2JiTpTYe40aNdWjR08NHjxENWrULHZsVWYwlvRJAaiyEhPTVVjIIwBwNgaDQSEhfia1hIT0En/4AXB14BkBoDg8IwAUh2cEgOLwjABQHJ4RAIrDMwKXc3ExKDjYr+SBFuTn5+vIkSP//+u/j8ytVauu2Y5/V5vExATt27dXSUmJSklJkaenpwIDgxQeXldNm153xUBXWRUUFOjAgf06evSIUlKS5ebmrpCQEF1zzbVq1Ogau62Tlpam6OidunDhvNLSUuXp6aXatWurVas2CgwMtNs6ubm5OnXqpE6fPqXExARlZmaqsLBQPj6+ql69uho2bKQGDSJKvfNjVZOSkqJ9+/bq4sUkJScnKzc3Rz4+PvL3D1DdunXVoEFD+fv7l2ru7OwsxcTEKDb2tJKSkpSZmSGDwSAfHx8FB4eoUaNrVLduvVL/3s7ISC+aPzn5ojIzM+Xq6iofH1/VqFFD11xzrWrXrlOque2toKBAZ8+eliS5uf39fq+99toK+31IuBC4ihEuBJwT/xEOoDg8IwAUh2cEgOLwjABQHJ4RAIrDMwJAcXhG4HKECwHAeo4OF5ZPNBkAAAAAAAAAAAAAAAAAADgtwoUAAAAAAAAAAAAAAAAAAMAE4UIAAAAAAAAAAAAAAAAAAGCCcCEAAAAAAAAAAAAAAAAAADBBuBAAAAAAAAAAAAAAAAAAAJggXAgAAAAAAAAAAAAAAAAAAEwQLgQAAAAAAAAAAAAAAAAAACYIFwIAAAAAAAAAAAAAAAAAABOECwEAAAAAAAAAAAAAAAAAgAnChQAAAAAAAAAAAAAAAAAAwAThQgAAAAAAAAAAAAAAAAAAYIJwIQAAAAAAAAAAAAAAAAAAMEG4EAAAAAAAAAAAAAAAAAAAmCBcCAAAAAAAAAAAAAAAAAAATBAuBAAAAAAAAAAAAAAAAAAAJtwc3QAAAAAAAAAAAAAAAACAqu/uu3vr3LmzRdezZs1Wu3ZRVxy/bNlPmjhxfNF1mzbt9NFHc8qzRQD/wM6FAAAAAAAAAAAAAAAAAADABOFCAAAAAAAAAAAAAAAAAABggnAhAAAAAAAAAAAAAAAAAAAwQbgQAAAAAAAAAAAAAAAAAACYcHN0AwAAAAAAAAAAAAAAAABwuTvv7Ks77+zr6DaAqxY7FwIAAAAAAAAAAAAAAAAAABOECwEAAAAAAAAAAAAAAAAAgAnChQAAAAAAAAAAAAAAAAAAwISboxtA2WVmZmr37t2KiYlRamqqCgsL5e/vr/r166tly5YKCAhwdIuVltFo1KFDh3T48GElJCQoOztb3t7eCgsLU2RkpCIiIhzdIgAAAAAAAAAAAAAAuIrk5+dp//79iok5oeTkZBUU5Kt69eq6+eZbVL16YLH3pqSk6MSJ44qNPaXU1DTl5GTL19dPAQEBql+/gRo3biJXV1e79nv2bJwOHNiv+PgLysrKUkBANUVERKh585Zyd3e361rOIikpSUeOHNbZs2eUnp6u3Nw8eXl5ycfHR7Vq1VKdOuGqUydcBoPB0a0CxSJc6MR27NihefPmae3atcrLy7M4xtXVVR06dNCwYcPUtWvXCu7wb1u3btXQoUPtNt+cOXPUpUuXMs2RmJioBQsW6Pvvv1d8fPwVx9WtW1eDBg3S/fffL19f3zKtCQAAAAAAAAAAAAAArm7Llv2kiRPHF123adNOH300R5KUmJigzz77VL/88rMyMtLN7q1Xr4HatYsyqRUUFGjnzu1au/YP7dixXSdOHC92fR8fH3Xq1EUPPjhM117buEzvZdOmjZo3b7b27t1j8XVfXz/ddVc/Pfzwo/Lz8y/VGsV9XpbExcWpf/87TWpbtuy0ac0dO7brqadGFF2HhdXSkiXLS7yvoKBAS5f+qJ9+WqL9+/eWOD4goJpatGipm2/uru7de8jHx8emPoGKQLjQCWVmZmrChAlasmRJiWMLCgq0adMmbdq0SV27dtWUKVMUFBRU/k1WYkuWLNHEiROVlpZW4tjTp09r2rRp+uKLL/T222/rxhtvrIAOAQAAAAAAAAAAAADA1WTTpg167bWXlZ5uHiq8kvz8PN11V28lJiZYfU9mZqZWrlyhlStXaMiQB/T008/YvJNhXl6eJk9+Uz//vKzYcRkZ6frqqy/022+/6t13Z6hJk0ib1nEmZ8/GaezY53TkyGGr70lNTdHGjeu1ceN6BQeHqGPHm8qxQ6B0XBzdAGyTnJys++67z6pg4eXWrl2re+65R2fOnLF/Y07iP//5j/79739bFSz8pwsXLuiRRx7R4sWLy6kzAAAAAAAAAAAAAABwNdqyZZP+9a/nbAoWSlJBQaFNwcLLff31fzVu3Is23ZOfn6eXXx5bYrDwn+LjL2jUqJE6deqkrS06hYsXL2rkyEdtChYCzoKdC51IXl6eRo4cqQMHDpi9VrduXfXu3Vt169aVq6urYmNjtXLlSh0+bPrgOnPmjB5++GEtXrxYfn5+FdW6mXr16pV6O9fS9v3ll1/qww8/NKt7eXmpV69eatq0qYKDg3X+/Hnt2rVLq1evVn5+ftG4wsJCjRs3TiEhIQ47YhoAAAAAAAAAAAAAAFQdKSnJGj9+nAoK/s4nNG7cRH373q22baMUHByi/Pw8nT17VuvXryk2LxEeHq4OHTqqadPrFBHRSCEhIfLx8ZWLi0FpaWk6eTJG27f/qV9+WaaEhP8FEv/4Y7W+/vq/GjLkAav6nTXrA61fv9ak5uHhobvvHqDu3W9R3br15ObmrvPnz2nDhvVavPg7JSYmKDU1Va+++pIKCgps/owqu5kzZ+j8+XMmteuua6Zeve5Us2YtVLNmmLy9vZWbm6OMjAydPn1KR48e0bZtWxQdvVO5ubkO6hwoGeFCJzJz5kxFR0eb1Nzc3PTyyy9ryJAhcnEx3Yhy1KhR+vnnn/Xyyy8rKyurqB4TE6M333xTb7/9doX0bcnEiRPVoUOHClvvyJEjmjx5slm9S5cuevvtty0eFR0bG6vRo0dr3759RbXCwkKNHTtWv/zyy1V/vDQAAAAAAAAAAAAAOKuYkzFatOg7HTp8SCdPxjhl4Onmbt017pXX7DLXezOmafnypXaZqyQ1aoRq1coVFbKWMzh+/FjRr0eOfEpDhw43y38EB4eoefMWZve6uLiof/+B6tdvgK69tvEV1/D19VNYWC116NBRDz/8mP7zn2lasuT7otc//XS2+vbtJ19f32J73bdvr7799iuTWu3adTRt2n8UEdHQpF6tWjU1btxEAwYM1GuvvaStW7fo0KGDxc7vjDIyMrRq1UqT2rBhj2jkyKfMxnp7e6tateqqXbuOOnToqPvvH6q0tDT99NMSVa8eWFEtAzYhXOgkTp48qblz55rVp02bpttvv/2K9/Xq1UthYWEaOnSo8vLyiupLlizR4MGD1bZt23Lpt7J58803Td6/JN1yyy364IMP5OrqavGe8PBw/fe//9VDDz2k3bt3F9WTk5M1Y8YMvfHGG+XaMwAAAAAAAAAAAADAvoxGoz7/YoHmffap2d8hOxt77naWl5trsmlRecrOyq6QdZzNI488pmHDHrHpHnd3d40d+5JN93h7e+vFF8cpLS1Nq1f/JknKyEjXsmU/afDgIcXeO3v2hyosLCy69vf31/vvf6jw8LpXvKdatWp6++1pevzxR6pkuPDgwf3Kyckpuq5bt54ef/xJq+/39/fX/fc/WB6tAXbhUvIQVAazZ882+8Gmf//+xQYLL2nbtq1GjhxpVp81a5bd+qvMtm/frq1bt5rUgoKCNHHixCsGCy/x8fHRlClT5OnpaVL//vvvFRcXZ/deAQAAAAAAAAAAAADl54cl3+uT2R85fbAQVUv9+g00fPijFbrmo48+bnK9adP6YsefOROrbdtMsxePPfZEscHCS7y8vPXSS+PMdmSsCpKSkkyuIyObymAwOKgbwP6q3ndtFZSenq6lS023H3Zzc9Ozzz5r9RyPPfaYqlWrZlLbsGGDTp8+bY8WK7Wvv/7arPbII49Yfaxxo0aN1K9fP5NaXl6eFi5caJf+AAAAAAAAAAAAAADlLzb2tN7/4D+ObgMw07//QLm5uVfomhERDeXr61d0vX//PhmNxiuOX736N5PX/f39dffd/a1eLzLyOkVFtS9ds5WYm5vpobGJiYkO6gQoHxyL7ARWrlxpsoWqJHXv3l01a9a0eg5PT0/dfffdWrBggUl96dKlevJJ67djdTbZ2dlatWqVSc3Dw0P9+1v/B5wkDRkyRN98841JbdmyZXrmmWfK3CMAAAAAAAAAAAAAoPytWbtGubk5JQ8EKljnzl3tNldBQYFOnTqpo0ePKCkpSZmZGcrOzlJh4ZWDg5KUlpamhIQEhYaGWnx97949JtddunSTh4eHTb3ddltPbdu2xaZ7KrsGDSJMrqOjd2j9+rV2/ZoCjkS40AmsW7fOrGbNcciW7rk8XLhu3boqHS7cunWrsrOzTWrt27e3etfCSyIjI9WgQQPFxMQU1U6dOqUTJ04oIiLiyjcCAAAAAAAAAAAAACqFXX9FO7oFwExAQDXVrl27zPP89dcu/fjjD1qz5ndlZmaUao709LQrhgsPHNhnct2sWQub5y/NPZVdRERDNWgQoZiYE5Iko9Gof//7efXo0VN9+/ZT69Zt5Orq6uAugdIjXOgEtm/fblaLioqyeZ7mzZvL09PTZBfEPXv2KCcnR56enmXqsbLasWOHWa00n50ktWvXziRcKP39tSFcCAAAAAAAAAAAAACVX+zp045uATBzpTCftdLS0vTuu1P066+/lLmXtLQ0i/XCwkIlJCSY1EqTlahXr75cXV1VUFBQqv4qq9Gjn9MLLzyjwsJCSX9/Xr/++ot+/fUX+fv7q1WrNmrZsrVatmyp665rbvOOj4AjuTi6ARTvwoULio+PN6nVrl3bpiORL/Hw8FCLFqYp8Pz8fB08eLBMPVZm+/btM6u1adOmVHO1bdvWrLZ3795SzQUAAAAAAAAAAAAAqFiZWVmObgEw4+vrV+p709PT9MwzT9olWChJeXl5FusZGRkyGk2PVfb3D7B5fldXV/n4+JSqt8rsxhtv0iuvvG5xY6+0tDRt2LBOH374vkaOfFQ9enTVqFFPaMmSxVcMcwKVCTsXVnLHjx83q9WrV6/U89WrV89sJ8Tjx4+rVatWpZ6zNFavXq0ff/xRe/fuVUJCglJTU+Xt7a1q1aopJCRELVu2VFRUlDp27Ch/f/9Sr2Pp86tfv36p5rL0uVuaHwAAAAAAAAAAAABQ+WRlZTq6BcBMWY7M/c9/3tP+/aabLvn4+OqWW25V69ZtVb9+A9WoUVO+vr7y9PSQm5u7ydi77+6tc+fOlriOpe8dLy+vUvXs5eVdJUN1vXv3UatWrTVv3hytXv2byami/5STk6M//9yqP//cqvffn6EhQ+7TsGGPyt3d3eJ4wNEIF1ZysbGxZrXatWuXej5L9552wNbPCxYsMKvl5eUpNTVVp0+fVnR0tBYsWCBfX18NHDhQw4cPV1hYmE1r5OXl6dy5cyY1Nzc31ahRo1Q9W/rsLH19AAAAAAAAAAAAAACVT/16DZSeka6srExlZWUpKyuryh3PiqvHiRPHtWzZTya1zp276vXX35Cfn3WbOOXkZFs1ztvbfLfB7Gzr7jW/r+ruIBoeXlevvfaGnnvuX9q8eZN27PhTu3ZF6+TJGLOdHyUpMzNDc+fO0aZNG/XBBx9Z/XUDKhLhwkru8jPrJalWrVqlns9SQM/SGpVFRkaG5s+fr0WLFunNN99Ur169rL43KSmp6Dz7S2rUqFHq1H9YWJgMBoPJA78yf3bWMBgMMhgc3QUAW1n6vv27xjc0AJ4RAIrHMwJAcXhGACgOzwgAxeEZAaA4lekZMffTz0yujUaj8vLy/j9smK15n32qpZeFtSqzv/++106fI39x7HTWrPndJL8QHl5XEydOsXg075VYu4Ogr6+vWV4iLS3V+mb/X0FBgTIzK/8Oonl5uWW638/PXz169FSPHj0lSSkpKdq9e5e2b9+m9evXKS7ujMn4Awf2a+LECZoy5d0yrQuUB8KFlVxKSopZrSznz/v6+prVkpOTSz1fWXh6eiowMFB+fn7Kzs5WSkrKFf/gSk9P15gxY3TgwAE9//zzVs1v78/Ozc1NHh4eJlvX5ubmKjMzs0zzOlJQkPnvBwDOKTjYz9EtAKjEeEYAKA7PCADF4RkBoDg8IwAUh2cEgOJUtmeE0RiombM+cqpgoSR5eLopJMQ+n6WXF/ERZ/PXX7tMrvv0ucumYOHp06eUn59v1VgXFxeFhIQoPj6+qHbixAm1adPO6vUk6dSpk+W+W6iHh/nxwrm5ufLw8LB6Dkt5k7KoVq2aOnfuqs6du+rZZ1/Q5s0b9e67b5uEDNes+V1Hjx7RNddca9e1gbLiT4dKzlJiu7Tn1kuy+AdJVlbFbDlbvXp1denSRV26dFHz5s1Vv359ubi4mIyJjY3V1q1b9eWXX2rfvn1mc8yePVuhoaEaOnRoietZel+2/EFqiZeXl0m48NI6zhouBAAAAAAAAAAAAFCxjEajMjMzZeGEzDJx93CXpw3hmeJkZmaqsNDODTqAt7eXVSfbHT12TBkZ6Xrk4WHl35QdNY2MtNtcN914o/wsbFZUHvz8Kle41FklJSWaXDds2Mim+y8PJ5akadNmio9fU3S9b98e9e9/j01z7Nu316bxpeHra/77Ky0tVcHBIVbPcfToEXu2ZMJgMOjGGztp5syGGjLkHpOjqbdu3Uy4EJUO4cJKLi8vz6xWloCcpWCipTXsqUaNGpo6dapuv/32EpPg4eHhCg8P14ABA7R06VK9/vrrysjIMBkzefJktW/fXpEl/KBk78/uSveX9+cHAAAAAAAAAAAAwLkZjUb9/scaLVjwufYfOKCUFNuPEy3JmGdH68knRtplruEPP6ad0dF2mcuRvvnqv2rXrm2J46695hq9+O+xFdBR5XXH7T11x+09Hd0GbHD5hktubrZFgJYt+9Gm8c2bt9C6dWuKrtevX6u8vDy5u5vvFHglv/22wqY1S8Pb21uenl4mob2YmBM2hQu3bt1cHq2ZqF27ttq0aastWzYV1c6ePVvu6wK2Ilx4lTEYDBW+ZkREhCIiImy+r0+fPrr22mt13333mQQMCwsLNXXqVM2dO9fmOcv6/h3x+QEAAAAAAAAAAAD21KdvP11MTnZ0G2X205LvFRQUWOZ5TpyI0YMPDbdDR5adP3++3OYGcPUKCAgwuT516qQ6drzJqnu3bduqXbtsCxDfcksPffTRTBn/f9vV1NRU/fjj97rnnsFW3X/o0EH9+ec2m9YsrWuuucZkl8Rt27aoXbvrrbp3+/ZtOnz4UHm1ZsK3gnYLBcqCcGElZylZfvmxvLbIzs42q9mSIq9okZGRmjx5skaPHm1S37Bhgw4dOqQmTZpc8V5Ln52l928LS599Zf78SpKUlFEltjMHrjYGgxQcbLqdd2Jiut2PTwDgnHhGACgOzwgAxeEZAaA4PCMAFIdnhPM5f/6CLiZfdHQbZZaQmKbCwrL/XV1CQmqVCABmZuYqISHdLnPl5RfYZR5HS07JsttnAvtxcTEoKIhQVVlFRDQ0CdAtX75UgwYNKXHTpISEeE2aNMHm9erUCVf79h20deuWotrs2R/pxhs7qXbtOsXem52drbffnqTCwkKb1y2NFi1amnw2S5f+pKFDh1s8Mvmf0tPTNHnyRJvWOns2TjVrhsnFxcWm+/Lz87V37x6TWlhYmE1zABWBcGEl5+PjY1YrS0DO0r3e3t6lnq8i9OzZU23atFH0Zdtur127tthwoaX3VZZgpuScn19xjEZj0b8qAOBMzP+DwGgU388A/h/PCADF4RkBoDg8IwAUh2cEgOLwjHA2VeUrY6+/66oqv1f5vrOAvw+tlPiS2McNN9yoZct+Kro+fPiQpk9/V88++/wVg27Hjx/T2LHP6fz5c6Vac8SIJ/Xnn9uKQoKpqakaPfoJTZv2vurXb2DxntTUVL322svav39fqdYsjZ49e+mbb74quk5KStSbb47XxIlTrnh89NmzcRo79jmdORNr01rffPOlNm7coEGDhqhHj54KDCx5R938/Hy9885ks6/DTTd1tmltoCIQLqzkqlevblbLzMws9XyW7rW0RmXTp08fs3Dh5s2bNWLEiCveY+/PLj8/3yyc6OHhYTEACgAAAAAAAAAAAAAAUF66deuuOnXCTcJw3333tQ4c2KdBg4aoefMWqlatutLSUnXixHGtXr1KP/+8TAUF+ZKkqKj2io09pXPnrA8aNmvWXIMH36evv/5vUS02NlZDhw7R3Xf3V/fuPRQeXldubm66cOG8Nm5cr4ULv1ViYoIkqUmTSCUlJSk+/oKdPgXLmja9Tq1btzE5+nnNmt81bNj9uv/+oWrduo0CAqopIyNDMTEntG7dGi1duqQoE9K9+636/fdVVq8XG3ta7733jv7zn2lq1aqN2rZtpyZNIlWvXn0FBFSTl5eXsrOzFRd3Rn/9tUs//vi9Tp6MMZmja9ebFRHR0C7vH7AnwoWVXHBwsFnt7NmzpZ7P0h8KISEhpZ6vonTo0MGsFhcXV+w9QUFBcnFxMdlWNz4+XgUFBXJ1dbW5h/Pnz5v9qxZn+OwAAAAAAAAAAAAAAEDV4ubmppdfflWjRz9VFBiUpD17dmvPnt3F3lurVm1NmDBRjzzykM3rPvXUKJ0+fUobNqwrquXk5Ojbb7/Wt99+fcX7AgIC9MYbb+mZZ56yec3SeOmlV/XQQ/eZnFB59OgRTZjwarH33XVXP9122x02hQsvKSgo0M6d27Vz53ab7qtfv4H+/e9XbF4PqAi2HfiNChceHm5WKylUV5wzZ85YtUZlExoaalZLSkoq9h53d3fVrFnTpJaXl6cLF0qXgLf0uTvDZwcAAAAAAAAAAAAAAKqedu2u14QJE+Xp6WX1PY0bR+rjjz9VcHDpNlNyc3PX5MlTdfvtvay+JyQkRO+//9EVj04uD/XrN9D06R/I19fPqvEGg0H33/+gzSE/Nzf30rRX5KabOmn27HkKCgoq0zxAeWHnwkquYUPzLU9PnTpV6vlOnz5t1RqVjbe3t1ntn+nyK2nYsKHZTo8nT55UrVq1bO7B0uceERFh8zwAAAAAAAAAAAAAAAD2cOutt6lRo2v0yScfat26NSanO/5TnTrhGjRoiAYMGCg3t7LFhdzd3TV+/ETddtvtmjt3tvbt22txnI+Pr/r06atHHnlcAQEBZVqzNNq0aaevvvpOn3zyoVatWqnc3FyL41q3bqPHHntC7dpF2bzG008/o1tu6aGNG9crOnqnDhzYp6ysrGLv8fT0VMeON6lfv3vUocMNNq8JVCTChZVczZo1FRoaqvj4+KJaXFyczp8/b7YrX0ny8vK0Z88ek5qrq6siIyPt0mt5unjxolktMDCwxPuaNWumjRs3mtR27dqlG26w/eG8c+dOs1rz5s1tngcAAAAAAAAAAAAAAFyd7ryzr+68s69d54yIaKgpU95Vamqqdu3aqXPnzik9PV2enh4KDa2ha69trIgI842nlixZXqZ1b7yxk268sZPi4uK0f/9eJSTEKzs7W/7+AWrQIEItWrSUh4dHmdYs6+dVs2aYXnvtDY0d+5Kio3fq7NmzSk1NkZubm8LCaqlFi5aqWTPM5J527aK0ZYt5RsQSg8Gg665rpuuuayZJys/PV2zsaZ0+fUoXLlxQRkaGCgry5ePjo4CAAEVENFRERCN5enqW+j0BFYlwoROIiorSL7/8YlLbsWOHevWyfotZSdq3b5/Zbn8tWrSQl5f12+M6ytGjR81qwcHBJd4XFRWl2bNnm9S2b7ftbPtLduzYYXF+AAAAAAAAAAAAAAAARwsICFCXLt0qfN3atWurdu3aFb6uLby8vNWx403lvo6bm5saNIhQgwachImqwcXRDaBkXbp0MautWLHC5nks3WNp7spo7dq1ZjVrdlxs3769WXhy27ZtFndCLM6hQ4d04sQJk1rdunWd4khpAAAAAAAAAAAAAAAAALAV4UIn0KNHD7PtUFevXm1yVHJJcnJy9MMPP5jV+/TpU+b+yltSUpIWLVpkVrcmGOnt7a1bbrnFpJaTk6Pvv//eph6++eYbs9qdd95p0xwAAAAAAAAAAAAAAAAA4Cw4FtkJ+Pv7q3fv3iaBuPz8fM2YMUOTJk2yao5PP/1UycnJJrWbbrpJ9erVs2erdmc0GjV+/HhlZGSY1P38/NSpUyer5hgyZIiWL19uUps3b5769++vwMDAEu8/ceKEWRjRzc1NAwcOtGp9AAAAAAAAAAAAALAkqt31uuGGjnaZq2WLlnaZR5IG9L9HXe10tKrBYJCvr4dJLSMjV0aj0S7zF6dWrVrlvgYAAFUZ4UInMWLECC1dulR5eXlFtUWLFqlbt27q0aNHsffu2rVLH330kVn9ySeftGrtDz74QDNnzjSptW/fXl988UWJ986fP189evRQnTp1rFrrn3Jzc/XGG2/o119/NXttxIgR8vf3t2qe66+/Xu3bt9e2bduKagkJCXrttdc0Y8YMubq6XvHerKws/fvf/1Z2drZJ/e677y7VewIAAAAAAAAAAAAcredtPZWZmenoNsrM08Oj5EFW8PP3V587+9plrpIYDAbVqlVbTRo3Ufv2HeTiUjkPG7ytR0+7zWUwGBQS4mdSS0hIr5BwIQAAKBvChU4iIiJCw4YN05w5c0zqzz77rF555RXde++9Fn/wXLFihV566SWTUKL093HIUVFR5dqzJP3www+aOnWqevbsqV69eqlTp07y8vIq9h6j0ah169Zp+vTpOnDggNnrDRs21LBhw2zqY9y4cRowYIDJ57By5Uo9+eSTmjJlisUdDM+cOaNnnnlGe/bsMalXr15dzz33nE3rAwAAAAAAAAAAAJXFM6PHOLqFSiU0JFQvvfiKo9sAAACodAgXOpHRo0dr27Zt+uuvv4pq+fn5mjBhgj777DP16tVL9erVk6urq2JjY7Vy5UodOnTIbJ769evr9ddfr7C+8/PztXz5ci1fvlze3t6KjIxUZGSk6tevL39/f/n5+Sk7O1spKSk6ePCgtm7dqjNnzlicKywsTHPnzpWnp6dNPTRp0kRjx441O0Z6zZo1uvnmm9WrVy81bdpUwcHBOn/+vHbt2qVVq1YpPz/fZLzBYNCUKVMUHBxs24cAAAAAAAAAAAAAAAAAAE6EcKET8fDw0Mcff6xhw4aZhQZPnTqljz/+uMQ56tSpo7lz51p9pLC9ZWVlKTo6WtHR0Tbf27RpU02fPl21a9cu1dpDhw5VQkKCPvnkE7OeFi9eXOL9Li4ueuONN3TzzTeXan0AAAAAAAAAAAAAAAAAcBaEC51MUFCQvv76a7322mtatmyZTfd26tRJ77zzjtPtuufj46OhQ4fq6aeflru7e5nmeu6559SgQQNNmjRJ6enpVt8XGhqqyZMnq3PnzmVaHwAAAAAAAAAAALCHJUu+V0pqqlxcXOTq4iJXN1e5uLj+fe3qKlfX//3axcVFYTXD1LJlK0e3DQAAACdCuNAJ+fr6atq0aRoyZIjmzZundevWKS8vz+JYV1dXtW/fXg899JBDdtybOXOmtmzZom3btmnfvn2KiYlRQUFBifd5enqqWbNm6tWrl/r16yc/Pz+79dS/f3917dpVn332mX744QclJCRccWx4eLgGDhyoBx54wK49AAAAAAAAAAAAAGWxcNF3OhFzwurx3brdTLgQAAAANiFc6MSioqIUFRWljIwM7d69WydOnFBqaqokyc/PT/Xq1VOrVq1UrVq1Mq0zatQojRo1qlT31q1bV3Xr1tXAgQMlSTk5OTpx4oTOnTun8+fPKyMjQ9nZ2XJ3d1dAQID8/f1Vt25dRUZGlnmXwuIEBwfrhRde0PPPP69Dhw7p0KFDio+PV05Ojry9vRUWFqbIyEg1bNiw3HoAAAAAAAAAAAAASsuaDT3+ydXFtZw6AQAAQFVFuLAK8PX1VceOHdWxY0dHt1IiT09PRUZGKjIy0tGtSJIMBkOl6gcAAAAAAAAAAACwRkFhoU3jXV0JFwIAAMA2Lo5uAAAAAAAAAAAAAABgm8JC23YudHHhr4YBAABgG36CBAAAAAAAAAAAAAAnY/OxyOxcCAAAABsRLgQAAAAAAAAAAAAAJ1NYYNuxyC6ECwEAAGAjwoUAAAAAAAAAAAAA4GTybdy50I1wIQAAAGxEuBAAAAAAAAAAAAAAnExhoW3hQhcX/moYAAAAtuEnSAAAAAAAAAAAAABwMgU27lxIuBAAAAC24idIAAAAAAAAAAAAAHAyhYWFNo13dXUrp04AAABQVREuBAAAAAAAAAAAAAAnU1Bga7iQvxoGAACAbfgJEgAAAAAAAAAAAACcTEFBvk3jXV1dy6kTAAAAVFXsfQ0AAAAAAAAAAACg1P7443ftjN5mUsvOyZOMDmqolLp27aabbuxkl7kWfD5fZ87E2mWuKykoKLBpvIsL+84AAADANoQLAQAAAAAAAAAAAJTawUMHtWjx945uo8zq1Am3W7hw46YN2rt3j13mshcXF3YuBAAAgG345ykAAAAAAAAAAAAAUMVxLDIAAABsRbgQAAAAAAAAAAAAAKo4V1f+ahgAAAC24SdIAAAAAAAAAAAAAKji2LkQAAAAtiJcCAAAAAAAAAAAAABVnIsL4UIAAADYhnAhAAAAAAAAAAAAAFRxbm5ujm4BAAAAToZwIQAAAAAAAAAAAABUcRENIhzdAgAAAJwM4UIAAAAAAAAAAAAAqOIiI5s6ugUAAAA4GcKFAAAAAAAAAAAAAFCF9bj1Nvn5+Tm6DQAAADgZwoUAAAAAAAAAAAAAUEWFBIfo+edecHQbAAAAcEKECwEAAAAAAAAAAACgCmp2XTO9/5+ZCgio5uhWAAAA4ITcHN0AAAAAAAAAAAAAgIq1dNlPOnkyxurxoaE1NHjQvRZf8/PzVVhYmEmtsLCwLO05hI+Pj93mCgwMVI0aNew2ny38/QPUpHETtW7VWnfc0Vuurq4O6QMAAADOj3AhAAAAAAAAAAAAcJVZs/YPbd68yerxkZFNrxgufPCBhzTm2adMagkJ6TIajWXq0Zm9PXmqo1sAAAAAyoxjkQEAAAAAAAAAAAAAAAAAgAnChQAAAAAAAAAAAAAAAAAAwAThQgAAAAAAAAAAAAAAAAAAYIJwIQAAAAAAAAAAAAAAAAAAMOHm6AYAAAAAAAAAAAAAAABQcXJzc7Vz5w4dPXZUZ8+erdC1AwL8Ne6VsRW6JgCgdAgXAgAAAAAAAAAAAAAAOLEtWzZr5W+/6ujRI4pPiC92bEpKSgV1ZVnNGjUIFwKAkyBcCAAAAAAAAAAAAAAAUAklJyfrr91/6fDhg0pITNT69WuVnJwsSfL3D1BaWqpjGwQAVGmECwEAAAAAAAAAAAAAACqRwsJC/bT0R8368ANlZGRYHEOwEABQ3ggXAgAAAAAAAAAAAAAAVAJZWVmKOxunsf9+XmfPnnV0OwCAqxzhQgAAAAAAAAAAAOBqYzTaNNxgMJRTIwBQNaSmpiojI71U92ZkZGje/Llas+YPO3cFAEDZEC4EAAAAAAAAAAAAAFQZiYmJOnb8qHJzch3dCiTJYFBAgJdJKTU12+aQc2V0If6CZs/5WKmpHE8MAKiaCBcCAAAAAAAAAAAAAJya0WjUil9/0ezZH+v8hfOObgcAAKBKIFwIAAAAAAAAAAAAAHBa+fn5ennci9qwYb2jWwEAAKhSXBzdAAAAAAAAAAAAAAAApfX5F/MJFgIAAJQDdi4EAAAAAAAAAAAAAJRZTk6Ovlv4rbZu26Jjx44qNTW13Nc0Go3lvgYAAMDVinAhAAAAAAAAAAAAAKBMvlv4rWb85z1HtwEAAAA7IlwIAAAAAAAAAAAAACiVvLw8vfHmeK3+fZWjWwFgJ35+fnJzcy+3+QOqVSu3uQEA9kW4EAAAAAAAAAAAAABQKp/OnU2wEKjEvL29dXvPXnJxMVxxTEBAgK655lq1atVaQYFB5d5Tcb0AACoXwoUAAAAAAAAAAAAAimUQQRD8T3Z2to4fP6aVv/2q7xZ+6+h2gKte/foNdH3U9ZLh72d1cFCwrrnmGrVq2Vp+fn4O7g4A4MwIFwIAAAAAAAAAAABwSoWFhYo7G6ejR48oKzPL0e1UealpqZoz5xNlZmU6uhXgqlejRg1NeesdRUY2dXQrAIAqjHAhAAAAAAAAAAAAAKdiNBr1228r9cGs/ygxMdHR7QBAhQkKClL3m2/R4yNGyteXXQkBAOWLcGEVkJmZqd27dysmJkapqakqLCyUv7+/6tevr5YtWyogIMDRLQIAAAAAAAAAACeUlpam/Qf26fDhw0pOvliqOfr2vVv169W3Sz+zPpypwsICu8zlSE+MfEpubmX/a7qzZ+O0aPHCUt0bczKmzOs7itFo1IQ3XtfK3351dCsAUO5GPv6k2rVtJ0mqWTNMISEhDu4IcC7Llv2kiRPHF11v2bLTcc0ATohwoRPbsWOH5s2bp7Vr1yovL8/iGFdXV3Xo0EHDhg1T165dK7jD0lm4cKHGjRtn8bXPP/9cHTp0sGm+rVu3aujQofZoTZI0Z84cdenSxW7zAQAAAAAAAABQ2RiNRi1fvlQfzHxfaelpZZrr+us72C1c+N3Cb674dyLO5PERT9hlnoTERH39zVd2mauy2rt3j35duUJHjhzWufPnJEkXLlxwcFcAULxrGl2jAQMGljpIHhYWpmsaXatq1arZuTMAAGxDuNAJZWZmasKECVqyZEmJYwsKCrRp0yZt2rRJXbt21ZQpUxQUFFT+TZZSXFycpkyZ4ug2AAAAAAAAAAC4qr077R39sOR7R7eBSuRicpKW/PiDxdcMBoP8/DxNaunpOTIajaVaKy8vTxs3bdC2bVtLdT9wJa+/NsFuYWdYz2AwqHp1H5NacnJmqZ8RlZXBxUW1a9WWv7+/o1sBAMBuCBc6meTkZA0bNkwHDhyw+d61a9fqnnvu0RdffKE6deqUQ3dlYzQa9fLLLys9Pd3RrQAAAAAAAAAAcNVas/YPgoUwc/bsWb0zlQ0i4Ly+/OJrRUQ0dHQbVyWDwaCQED+TWkJCepULFwIAUBURLnQieXl5GjlypMVgYd26ddW7d2/VrVtXrq6uio2N1cqVK3X48GGTcWfOnNHDDz+sxYsXy8/Pz2weR/rqq6+0efPmClmrXr168vHxKXmgBZXtcwMAAAAAAAAAwJ4+mf2xo1sAALvpd3d/PTfmBbm6ujq6FQAAAKdDuNCJzJw5U9HR0SY1Nzc3vfzyyxoyZIhcXFxMXhs1apR+/vlnvfzyy8rKyiqqx8TE6M0339Tbb79dIX1b49SpU3r33XeLrgMCAhQcHKwTJ06Uy3oTJ05Uhw4dymVuAAAAAAAAAACcVVJSok6ejHF0GwCqqH53D1D16tXKfZ3g4BBde821aty4iTw9PUu+AQAAABYRLnQSJ0+e1Ny5c83q06ZN0+23337F+3r16qWwsDANHTpUeXl5RfUlS5Zo8ODBatu2bbn0a4vCwkK9+OKLyszMLKq9+OKLWrJkSbmFCwEAAAAAAAAAgDlLpycBgD0MvGeQxjz7vKPbAAA4qfj4eO3du1tJSUlKS0uVu7uHgoKCFBHRUNde27jcdqgtKCjQvn17dfr0KV28mCSDwaCgoGBFRjZVRETDUs979mycTpw4obi4M8rISJeLi4sCAqopPDxczZq1kJeXl93eQ1pamqKjd+j8+XPKyspSYGCgmjdvWab+cfUgXOgkZs+ebRIOlKT+/fsXGyy8pG3btho5cqQ++OADk/qsWbMsBhYr2vz587Vjx46i606dOmnAgAFasmSJ45oCAAAAAAAAAMAJHTp0UOs3rNexY0d18WKSzfdfvHjR7j198MEMzZ/vb5e58vPz7TKPoz096gmzE6lKIyMjww7dAOUvokGEnnziKUe3AQBwMgUFBfrll2X6+usvdezY0SuO8/X10003ddLgwfepWbPmdlk7ISFe8+Z9qt9+W6G0tDSLY8LDw/XwwyN0xx29ZTAYip2voKBA27Zt0e+/r9a2bVt0/vy5K451c3PTLbf00PDhj6pBgwir+r3hhv9tLvbIIyP02GMjlZKSovfff0+rVq1UTk6O2T2NG0fq+efHqlWr1latgasT4UInkJ6erqVLl5rU3Nzc9Oyzz1o9x2OPPabPP/9cKSkpRbUNGzbo9OnTqlu3rr1atdmxY8c0Y8aMomtfX1+9+eabDusHAAAAAAAAAABnlJiYqD539XJ0GxadiOGUosvt3bfX0S0AFaZXr956dvRz8vS03w5MAICqLy7ujMaOfU5Hjx4pcWxGRrpWrlwhNzd3u4QLV65cobfeekPZ2dnFjouNjdUbb7ymVatW6q233il2t8Hz589rzJhRVq2fn5+vX3/9RWvW/KFx415Xjx49bepfko4ePaLnn3+m2BDj4cMH9fTTj2vy5Knq1KmLzWvg6kC40AmsXGmeIO7evbtq1qxp9Ryenp66++67tWDBApP60qVL9eSTT9qlT1sVFBToxRdfNHlvY8eOVe3atR3SDwAAAAAAAAAAzqCwsFCnY0/r999XKzMzQwcPHdSOHdsd3RYAmLitR089+MBQNWp0jaNbAQA4mePHj+mpp0aY7Krt6eml669vrxYtWiowMEh5eXm6cOG89u/fp127dpqdBlpaCxd+o/femyqj0VhUa9asudq3v0E1a9ZUQUGhYmJO6PffVykxMUGStGnTBr3wwrN6//0Prdqd2s3NTc2bt1Bk5HUKCwuTn5+fsrNzFBt7Wps3b9TJkzGSpJycbI0fP06hoTXUunUbq9/DxYsX9cILfwcLvby81LlzV113XTP5+/srPj5ea9f+oYMHD0iS8vLy9MYbr+nrrxcrODjYhk8KVwvChU5g3bp1ZjVrjkO2dM/l4cJ169Y5LFw4e/Zs7d69u+j6hhtu0ODBgx3SCwAAAAAAAAAAFSEnJ1uHjxzRgs8/09m4OEVGNi3xCLVLcnNztWr1b+XcIQDYrtl1zTRmzAtqasMzDQDKW05OjhITEx3dhtMJDg6Wp6enw9bPzMzUSy/9yyRYePPNt+i558YqNDTU4j1paWn6+edlSkoq29d79+6/NGPGe0XBwtDQUI0fP1Ht2l1vNvaJJ57Wu+9O0c8/L5Mkbd++TV999YUeeOChK85fp0647r9/qG65pYeqVatmccwzzzynFSt+1jvvvKWsrCwVFBRo0qQJ+u67H6z+M3bJksUqLCxU27ZRmjBhktnnNmzYI/r00481d+4cSVJqaqq++eZLPfXUaKvmx9WFcKET2L7d/F8bRkVF2TxP8+bN5enpabJT4J49e5STk1PhfzAcPHhQs2bNKrr28fHRxIkT+Y8NAAAAAAAAAECVZDQatXz5Ur01ZZJJnSODgfLz1qQpuvaaxo5uo0rz9fVV9erVHd0GAJjIzs7WmxPf0Lr168xOiUTJPD091aVzF7067rVij/ktL59//lnRzn2S1Lt3H40bN77YPIm/v78GDx5SpnWNRqPeeusNFRTkS5ICAwP1ySefXfH0TR8fH7366gSlpqZqw4a/Nw377LO56t9/oHx8fMzG16gRqm+//V5ubsVHtQwGg+64o7d8ff00duwYSdLp06e0efNG3XhjJ6veS2FhoRo3bqIZM2bKw8PD4hqPPfaEtm3bpj17/pIk/frrL4QLYRHhwkruwoULio+PN6nVrl3bpiORL/Hw8FCLFi1Mwor5+fk6ePCgWrVqVeZerZWXl6cXX3zRZEva559/XnXr1q2wHgAAAAAAAAAAsEVqaqoOHzms48ePKTs7y6Z7jUbpk9kflVNnAC7XokVLvTj2JUVENHR0KwAAB3hz4hv6bRW7PZdWTk5O0ec3aeJbFbp2Zmamvv9+YdF1nTrh+te/XqyQjarWr1+nmH/8w59nnnn+isHCSwwGg/71rxe1efMmFRTkKyMjXStW/Kz+/e8xG+vm5m5TP126dFWrVq3111+7JEkbN663OlwoSc8//2+LwcJ/uvvu/kXhwgsXzis+Pv6Ku0Pi6kW4sJI7fvy4Wa1evXqlnq9evXpmOyEeP368QsOFs2bN0oEDB4quo6KidP/991fY+pK0evVq/fjjj9q7d68SEhKUmpoqb29vVatWTSEhIWrZsqWioqLUsWNH+fv7V2hvAAAAAAAAAADHSk1N1Y6d23Xo0CGdPn1Kf6z53dEtAbCgTeu2qlOnjiTJ1dVVDRpEqHHjJmrVspVcXFwc3B0AwBFycnK0bv06R7dRJVza+bEiT8Lctm2LUlNTi64HDRoiLy/vCln7119/Lvp1aGgN3Xbb7VbdV7NmmK6//npt2bJZkrR162aL4cLS6NChY1G4cP/+fVbfV69efbVq1brEcc2btzC5jok5TrgQZggXVnKxsbFmtZKS0cWxdO/p06dLPZ+t9uzZozlz5hRde3l5adKkSRV+HPKCBQvManl5eUpNTdXp06cVHR2tBQsWyNfXVwMHDtTw4cMVFhZWoT0CAAAAAAAAACqW0WjU77+v1rTp7yo5+aKj2wFwmerVA9W2TVt17Hij7ri9FwFCAACqmOjoHSbX3bvfWmFr//VXdNGvb7zxJpt+zmjWrEVRuHDfvj126yk4OKTo1xcuXLD6vubNW1o1LjS0hsl1Wlq61Wvg6kG4sJJLSEgwq9WqVavU81kKyFlaozzk5ubqxRdfVH5+flHt2WefVYMGDSpk/dLIyMjQ/PnztWjRIr355pvq1auXo1uyK4PBoArOdQKwA0vft3/X+IYGwDMCQPF4RgAoDs8IAMW5Wp4RX3/zlT6Y+R9HtwFUar173anHRzxhUjMYpMBAX5PaxYsZMhrLvp5/gL+8PL3KPhEAh7lafo6A9cpz8yFPT0916dyFY5HtoEvnLhW6a6FkerpnaGiNCttFLzEx0SQ707BhI5vuDwoKLvp1QkKC8vPz5eZ25UjWqVMntWrVb9q/f69iYk4oNTVFGRmZKijIv+I96elpVvcTHBxc8iBJPj4+JtdZWZlWr4GrB+HCSi4lJcWsdvk3ty18fX3NasnJyaWezxbTp0/X0aNHi67btGmjhx56qELWtsTT01OBgYHy8/NTdna2UlJSlJZm+WGcnp6uMWPG6MCBA3r++ecruNPyExRk/vsBgHMKDvZzdAsAKjGeEQCKwzMCQHF4RgAojrM/I4xGo2Jjz+jw4cPKycnRwUOH9NHHsx3dFlCpvfbqK3rg/vusCoXUrFkBDQFwWs7+cwQqt1fHvSbpf8f6wjaXApqXPseK9M+MTEhISDEj7b1ussn19Onvavr0d0s9X1pamgIDA83qFy6c13vvTdWaNb/bPKctv5c9PDxsnl/6+7+RgMsRLqzkMjPNU8FeXqX/11mWUuVZWVmlns9aO3fu1Pz584uuPTw8NGnSpArdrr569erq0qWLunTpoubNm6t+/fpm68fGxmrr1q368ssvtW+f+Xn1s2fPVmhoqIYOHVpRbQMAAAAAAAAA7MhoNGrR4u817b0ZSkxMdHQ7gNP45OMP1f3mbo5uAwCAEnl5eWnSxLeUk5PDz3ulEBwcXOE7Fl6SmZlR9Gtv79JvvGWr9HT7HgecnZ0lyTRceOZMrJ58coTOnz9nNt7V1VUBAdXk4eEhd/f/RbkyMjJ18WKSXXsDbEW4sJLLy8szq5XlIW4pmGhpDXvKysrSSy+9pMLCwqLaqFGj1KiRbdvIllaNGjU0depU3X777SWms8PDwxUeHq4BAwZo6dKlev3115WRkWEyZvLkyWrfvr0iIyPLs20AAAAAAAAAQBlkZmZq+oz39d3ChfL29lGAv7/yCwp0+vRpR7cGOA1/f3/d1uNWjf3XCwoKMt99BwCAyszT01O1a9d2dBuwgY/P/05frMgjei/P0gQGBsnXt/ThRldX8zjWxInjTYKF11/fQX373q3mzVuoZs0wi5tzLVv2oyZOnFDqPgB7IFx4lbFmm3p7e/fddxUTE1N03bx5cz3yyCMVtn5ERIQiIiJsvq9Pnz669tprdd9995kEDAsLCzV16lTNnTvXnm0CAAAAAAAAAEopJSVFZ+LiZCw06kRMjMY894LJ65mZWexaU05q16qlBg3qO7oNFOP8hQtqGBGhPn3uVEhIsNX3hdUMU3h4HYf83RIAALg6VatWrejXCQkJDllXkh57bKT697/HbvPv379P0dE7i64ffHCYnnpqdIn3paWl2a0HoLQIF1Zybm7mXyJbzlG/XHZ2tlnN3d291POVZMuWLfryyy9N1po8ebJcXV3LbU17ioyM1OTJkzV6tOlDfcOGDTp06JCaNGnioM7sIykpQ4WFRke3AcBGBoMUHOxnUktMTJeRb2cA4hkBoHg8IwAUh2cEgOKU9hlhNBq1+vdV2rpti44dParU1FS79ZSTm6uEhHi7zYfS6dWrjx55+FFHt4FykpiYUfIg8XMEgOLxjMDlXFwMCgryLXkgrjqNGjXSn39ulSTFx19QfHy8QkNDy33dkJBQ+fn5FR2PfOHCebvOv23blqJf+/r66dFHH7fqvjNnYu3aB1AahAsrOR8f821WLQUErWXpXm9v71LPV5z09HS9/PLLMv7jp8InnnhCjRs3Lpf1ykvPnj3Vpk0bRUdHm9TXrl3r9OFCo9Fo8vUB4CzM/6Ww0Si+nwH8P54RAIrDMwJAcXhGAPaUnp6u2NjTKiwsdHQr9mEwqHp10/+XnJycpSulAgoKC7Vmze/6+puvKqI7XMbFxUX16tWTn5+/9u7dU65r+fj48GcFxM8RAIrHMwKm+NLjStq0aadv/vHfEH/8sVqDBt1b7uu6urqqbdsorVu3RpK0Y8efdp0/Pv5C0a/r128gT09Pq+7btm2rXfsASoNwYSVXvXp1s1pmZunPlbd0r6U17GHKlCk6c+ZM0XXTpk01YsSIclmrvPXp08csXLh582anfT8AAAAAAABAWSQkJGjT5o06dOiQzp6Nc3Q7lUZBYYH+/HObo9tAFeHl5aXq1QOLHZOZmSFvbx917tRZDw9/VO4ef59U5O7mLg8PD6WlpanPXb2Um5tbbn36+/uX29wAAAC4urRvf4MCAqopNTVFkvTtt1+pb9+75eXlVe5r9+jRsyhcuGfPbu3du1vNm7e0+zq5udadVrpx43qdOnXS7usDtiJcWMkFBweb1c6ePVvq+c6dO2dWCwkJKfV8V7J7924tXLiw6NrNzU2TJ08u1yOYy1OHDh3ManFx/E9TAAAAAAAAXF2MRqN+WvqjZn34QdFxUQDKR+dOXTRh/JtlmsPf319dOnfVqtW/2akrc82ua1ZucwMAAODq4u3trXvuGaR58+ZI+vtY4HffnaJXXnldBoP5Lqj2dMstPfTpp5/o5MkYSdL48a9qzpz5Cgws/h/8XC4nJ8dsZ8KwsFpFvz5+/Jji4s6odu06V5wjMTFRb7/9lk3rAuWFcGElFx4eblYrS6jtnzsJFrdGWV24cMHk2t3dXS+++KJNc5w6dcqsNm7cOLOjoh955BH17dvX9iZtEBoaalZLSkoq1zUBAAAAAACAymb+gs8059NPHN0GABv06nVnuYULg4KCVL9+g3KZGwAAAFenBx8cpt9/X6WYmBOSpGXLflJGRoaee26sxeyGJGVkpGv58mVKSkrUyJFPlWpdFxcXvfLK63rqqRHKy8tTbOxpDR9+v8aOfUU33nhTsfcmJiZo7do1Wrz4O40Y8YS6dr3Z5PUbbrhRs2a9L0kqLCzUuHEv6d13ZygoKMhsrgMH9uvVV1/ShQvn5eLiosLCwlK9H8BenCJcePbsWdWqVavkgVVQw4YNzWqWQnfWOn36tFVr2FtWVpYOHjxY5nksvfeKCPl5e3ub1bKzs8t9XQAAAAAAAKCyOHDwgOZ99qmj2wBgo+ujrldIcIgSEhPsPvdTT4wq9x1kAAAAcHXx9vbWW2+9oyeffEzJycmSpD/+WK1NmzaqQ4cb1Lx5SwUGVld+fr7i4+N14MB+7djxp3Jzc9WrV58yrd2yZSu99NKrmjRpggoKCnTu3Dk999wo1a1bT1FR7dWgQQP5+vopLy9XaWnpOnUqRocPH9aRI4dkNBqvOO+11zZWp05dtGHDOknS/v17NWjQ3brllh5q3DhSHh7uSkxM1Pbtf2rHjj9lNBrl5+en/v0H6vPPPyvTewLKyinChbfeeqs6deqkQYMG6eabb5aLi4ujW6owNWvWVGhoqOLj44tqcXFxOn/+vGrWrGnTXHl5edqzZ49JzdXVVZGRkXbptSq7ePGiWc3WrW8BAAAAAAAAZzZ9xjQVFBQ4ug0ANnJ1ddXtt/fSf7/83K7z3t7zDt1++x12nRMAAACQpIYNG+nTTxfohReeLdrBMCcnW+vWrdG6dWvKde1eve5UaGioXnvt5aKsyOnTp3T6tHUbgV0p0zRu3Ot6/PFHio5dTk9P148//mBxbEBAgCZOfFsXLpy3/Q0AduYU4cKCggKtW7dO69atU2hoqAYMGKB77rlHdepc+fzxqiQqKkq//PKLSW3Hjh3q1auXTfPs27fPbLe9Fi1ayMvLq8w9VnVHjx41qwUHBzugEwAAAAAAAMD+jEajEhLidfjIYZ09e9bs9V27orV37x4LdwJwBr3usF+40N/PX08/PVp39u7DroUAAAAoN+HhdfXf/36jH39com+++bLYcF9AQIA6deqqwYOH2GXt66/voMWLl2rRom+1ZMn3ios7U+z4+vUbqEOHjrrtttvVvHkLi2OqVw/UvHlfaNas97Vs2Y/Kzc01G+Pp6anOnbtq9OjnVKNGDS1b9pNd3g9QFk4RLrzEaDTqwoUL+vjjj/XJJ5+oY8eOuvfee9W9e3e5uro6ur1y06VLF7Nw4YoVK2wOF65YscLi3OXh1ltv1aFDh8o0x4MPPqht27aZ1D7//HN16NChTPOWxtq1a81q7PgIAAAAAAAAZ5eTk6Oflv6o6TOmOboVAOWoQYMIXde0mfYf2Gf1PQ8Pf9TkOiAgQI0bN9a11zaWr4+vvVsEAAAAzLi5uWvAgIEaMGCgzpyJ1f79+3Tx4kWlp6fLy8tLwcHBiohoqGuuufaKOwbeeWdf3XlnX5vX9vHx0dChwzV06HCdOROrAwf2Kzn5otLS0uTh4SE/P3/VqVNHDRteo6CgIKvm9PX11dixL+mJJ57Wrl07deZMrLKzs1W9eqBq1KihVq3ayNf3fz9r29L7li07bX6PZbkPVw+nChde+hdwRqNRRqNRmzZt0qZNmxQcHKz+/ftr4MCBqlu3roO7tL8ePXpo/PjxysnJKaqtXr1a8fHxCg0NtWqOnJwc/fCD+XaqffqU7bz5q0FSUpIWLVpkVi+vYCYAAAAAAABQ3uLi4jTxrTe0a1e0o1sBUEF69eptVbgwJDhEn837nNN7AAAAUKnUqROuOnXCq8Ta/v7+6ty5q93mA8qT04QLjUZjUbjwnyFDSUpISNCcOXP06aefqkOHDho8eLBuvfVWubk5zdsrlr+/v3r37q3vv/++qJafn68ZM2Zo0qRJVs3x6aefKjk52aR20003qV69evZstcoxGo0aP368MjIyTOp+fn7q1KmTg7oCAAAAAACAMyosLNTadWu0Z88eHTt2VFnZWaWap6CgQAcO7C+6/ueuBtb0kJVVunUBOLdbb7lV/3l/uvLy8q44JigoSG9NmkKwEAAAAAAgyUnChatXr9Z3332nH374QRcuXJD0d8DwUshQ+t9uhlu2bNGWLVsUGBiofv36adCgQapfv76jWrebESNGaOnSpSb/0b9o0SJ169ZNPXr0KPbeXbt26aOPPjKrP/nkk1at/cEHH2jmzJkmtfbt2+uLL76w6n5Hmj9/vnr06KE6derYfG9ubq7eeOMN/frrr2avjRgxQv7+/vZoEQAAAAAAADbIzs7WxeSLjm7DZjEnTuhf/35ehYWFdp/78n8YCwBXcl3T6/TX7r/M6rVr1Vbnzl308PBH+X/fAAAAAIAiThEurFOnjsaMGaNnnnlGv//+uxYtWqT169eroKDgirsZJiUlad68eZo3b56uv/563XvvverRo4fc3d0d9j7KIiIiQsOGDdOcOXNM6s8++6xeeeUV3XvvvRbPj1+xYoVeeukls3+J2KdPH0VFRZVrz5XBDz/8oKlTp6pnz57q1auXOnXqJC8vr2LvMRqNWrdunaZPn64DBw6Yvd6wYUMNGzasnDoGAAAAAACoOpKSEnX48GHFnIxRQUF+qeZITU3Vhg3rdSLmhJ27A+AMvL291aWLdceFJSUmyWg06vrr26tBgwaSJHd3DzWMiFDMyRhNn/GeTp6MKb9mreDh4Wn1WHuezpSdna3U1FS98vKrZq9Vrx4oPz8/u60FAAAAAKg6nCJceImLi4tuvfVW3XrrrTp//rwWLlyo77//XnFxcZIs72YoSX/++af+/PNPVatWTf369dPAgQPVsGFDh7yHshg9erS2bdumv/76378qzM/P14QJE/TZZ5+pV69eqlevnlxdXRUbG6uVK1fq0KFDZvPUr19fr7/+ekW27lD5+flavny5li9fLm9vb0VGRioyMlL169eXv7+//Pz8lJ2drZSUFB08eFBbt27VmTNnLM4VFhamuXPnytPT+v8BBAAAAAAAcLVJTU3RzFkfaNnypY5uBYCTq169ul5/dUKZ56lRo6Y+n/9fLVz4reZ9NleZWZl26M7atWto5gcfKbxOeIWteTkvLy+Fh9d12PoAAAAAAOfkVOHCf6pZs6aefvppPfXUU1q/fr2+++47rVmzRvn5+VfczTA5OVnz58/X/Pnz1a5dOw0ePFg9e/aUh4eHw96HLTw8PPTxxx9r2LBhZqHBU6dO6eOPPy5xjjp16mju3LlX7bEGWVlZio6OVnR0tM33Nm3aVNOnT1ft2rXLoTMAAAAAAICyyc/P14kTx3X23NlS3W8wGBTgb3riQ2padtH/W7NWfHy8pr03tVQ9oGq5rmkzR7fgcMn/f4R3q1at1f3mW2RwMZRwR/nIzc3VokXflfrevfv22rkjx3B3d9d99z2gkJBQjX/jtXJdy2AwqE6dOrrj9t66d/AQeXt7l+t6AAAAAACUB6cNF15iMBjUpUsXdenSRQkJCVq8eLEWLVqk06dPF71uaTfDHTt2aMeOHZo4caLuuusuDRo0SNdcc41D3oMtgoKC9PXXX+u1117TsmXLbLq3U6dOeueddxQcHFxO3VVNPj4+Gjp0qJ5++mmnPVYbAAAAAADYR05Otr797htFR0fr8JFDSktLc3RLys8v3XHDQHkJCAjQ119+p8DAQEe3gv+Xnp6ul1950dFtOFzsmVjNmvWB1q5bU6r7H3v0cd1xey+rxgYGVpenp1fJAwEAAAAAqMScPlz4TyEhIXr88cf1+OOPa/Pmzfruu++0atUq5eXlXXE3w5SUFH3xxRf64osv1Lp1aw0ePFh33HFHpT721tfXV9OmTdOQIUM0b948rVu3Tnl5eRbHurq6qn379nrooYd08803V3Cnjjdz5kxt2bJF27Zt0759+xQTE6OCgoIS7/P09FSzZs3Uq1cv9evXT35+fhXQLQAAAAAAqMz27durNydO0KnTpxzdClCpvTPlXYKFqFTS09M1f8E8fbfwW5sD2YGBgbr++g4a9tBwNajfoHwaBAAAAACgkjIYbT3XxMlcvHhRP/zwgxYtWqTjx49LkslOhtL/goaX6v7+/urbt68GDhyoJk2aVGzDpZCRkaHdu3frxIkTSk1NlST5+fmpXr16atWqlapVq+bgDiuPnJwcnThxQufOndP58+eVkZGh7Oxsubu7KyAgQP7+/qpbt64iIyOvil0KExPTVVhYpR8BQJVkMBgUEmIaek5ISLf5qDIAVRPPCADF4RkBlF5CQoIefOg+paSkOLoVoFJb+O33qlOnjqPbwGXS09N12+23OLqNUqlVq5YWL1xSpjnS09OVlZ1l831enl7y9/cv09rA1YL/1gBQHJ4RuJyLi0HBwaXb4Cc/P19Hjhz5/18XSpJq1aorV1dXu/UHAJVJQUGBzp79+wRfNzcXSdK1114rN7eK2VOwyocL/2n79u369ttvtXLlSuXk5EiSxSOT/1lv2bKlBg0apN69e8vLiyMMULUQLgScE/8RDqA4PCMAFIdnBGCb7OxsHT58SEeOHNa06e86uh2gUqtZM0xvjH9TLVq0dHQrTsVoNNr057DBYDD7x/PWuNrDhQDKH/+tAaA4PCNwOcKFAGA9R4cLq9SxyCWJiopSVFSUXn31Vf34449auHChDh8+LIPBIKPRaDFouHv3bu3evVtvv/22+vXrp/vuu0/169d31FsAAAAAAABAOTMajfrjj9/13ox3lZSU5Oh2gErLzc1NDRs2Uof2HfTQ0OHy8fFxdEtOISMjXV9/87U2b9mkmJgTysqyfke9X39ZxU56AAAAAACgwlxV4cJLAgIC9OCDD+rGG2/U66+/ru3btxcFDCXTf/15qZaamqrPP/9cX3zxhe644w49/fTTioiIcNh7AAAAAAAAgJSWlqZz586qNPtdJCdf1O+/r1Zs7Gn5+f0vrLNu/Vr7NQg4sQfuH6p7B98rFxfLO4D4+vrK3d29grtybnv27tG/X3xBycnJjm4FAAAAAACgRFdduDAnJ0e//PKLFi5cqJ07dxbV/xks/KfLdzM0Go36+eef9euvv+rRRx/VU089xf9AAwAAAAAADpWSkqJz5846uo0Kk5uXp6+//q/WrF3j6FaAKickJFSTJ01Rs2bNHd1KlXPs2FG98MIYpaWnObqVSickOOSKrwVWD6rATgAAAAAAwD9dNeHCgwcPauHChVq6dKnS0v7+nzeWAoWXatWqVVN2drZycnKKxvxzN8P8/Hx98skn/8fefYc3Vf1/AH+n6d4tLaUt3aUFCmWDAqUMUWQoyBYV/LoFGQ62DCcqoggoiiBTUUBAEBFEaNl7Q0uhm+6906zfH/yIhHSkbZKbtO/X8/g8uSf3nvNOLLfNzeeeg3PnzmH16tWwt7c35MshIiIiIiIioiZOIqnAup/W4sDBA8jMzBA6DhHpQHj7cFhZW9f5uMTEBGRnZ2PgY4/D1bXuhVhOTs5oFdwK7du3h6OjU52Pp9pVVlZiwaL3WVj4kGbNmuHXX7ZzSW0iIiIiIiIiI9WoiwvLysrw559/4rfffsO1a9cA/Fc8CFRdVNixY0eMGzcOgwcPhkQiwe7du7F9+3bExMSojnmwyPD8+fOYM2cOVqxYYaiXRUREREREREQmTqFQoKKiot7HJyYlYuasd5CXl6fDVEQkBCcnJ0x+YwqGDBmmsaoKGb/S0hKk3r0LuUym1l4prcT169eQlJSE3LxcnDx5QqCExsvMzAwzpr/DwkIiIiIiIiIiI9YoiwuvXLmCbdu24c8//0R5eXmtBYW2trYYNmwYxo8fj9atW6uet7S0xHPPPYfnnnsOly9fxtq1a3Hw4EG1vpRKJf755x+cPXsW3bp1M8CrIyIiIiIiIiJTJJPJ8Nu2X3H0aBTibsehrKxM6EhEJm/gY4+jW7fuQseoE4VCgbKyMgQHt0KbNm1gZ2sndCSqI4VCgUP//oONmzbgzp3bQscxSbY2tpgzex769xsgdBQiIiIiIiIiqkGjKS4sKSnB7t27sW3bNsTGxgKofZbCNm3aYOzYsRg2bBjs7Gq+iNehQwd88803uHLlCmbNmoXExES153fu3MniQiIiIiIiIqImTi6Xo7y8HMC96w9R0Udw7NhRRB+NEjgZkXGZ8Ozz+N+LL9X5OCsrK5iZmekhEVHVZDIZMjIzkJ+fDyiVkMnl+HTJR0hNTRU6mtHwaO4BsVhc637m5ubw9vZGu3btMfKZUVyCm4iIiIiIiMgEmHxx4fnz57Ft2zb8/fffqKioqLagELh3Ud/KygqDBw/GuHHj0KFDhzqPFx4ejs2bN+OJJ55AaWmpavbCS5cuNfSlEBEREREREZEJkkgqsHnLZpw6dQK379yGRCIROhKRUbK2tkZYWDtMfmMKWrduI3QcasJKy0qxZs33Ne6jVCqRmJiIK1cvN4rzushMBG/vlg3ux8rKEj4tvdGtWzeMHTMKMpm52jV5IiIiIiIiImpcTLK4sKCgALt27cK2bdsQHx8PoPZZCgMCAjB27Fg888wzcHR0bND4zZo1w4QJE/D999+rxsrMzGxQn0RERERERERkemJjY7Bg4XykpKYIHYWMyGMDBsLLy0uw8SsqKtCypQ9CWoXAytpa6+NEIhGcnW3U2goKynVSOGRrYwMvL2+tZjcj0jdJRQV+2/ar0DEMys7WDtt+3dGgPkQiEdzc7NXacnJKGtQnERERERERERk3kyouPHnyJLZt24Z//vkHUqm01lkKzc3NMXDgQIwbNw49evTQaZa2bduqbZeVlem0fyIiIiIiIiKqP4mkAmVl5TrpKy8vF1evXsHW37YiNTUF7du1h1gsRnFJCeLibulkDGo85s6Zj6FDhgkdo16qKxzirGTUENnZWfhz35+4E38b+Xl5De5v3Nhn0bt3hA6SERERERERERFRbUyiuPCHH37A9u3bkZJybxaA2mYp9Pb2xpgxYzBq1Cg0a9ZML5k8PDz00i8RERERERER1U9efh7Wrv0RFy+dR3JyMhQKhV7GuXzlsl76JdPm5OSE+fMWoFfP3kJHITIKCoUCGzb+hHU/rYVcLtdZv4899rjO+iIiIiIiIiIiopqZRHHhsmXLIBKJVMWDVc1SaGZmhr59+2LcuHHo06ePxj66pu/+iYiIiIiIiOgeiUSC4uLiGveJPhqFpV9+bqBERP8JDQnFCy9MQreu3WFvb1/7AURNgEKhwCeffoR9f/0pdBQiIiIiIiIiImoAkyguvK+qWQrd3d0xatQojBkzBp6engbPxGVhiIiIiIiIiGpWVFSIS5cv4datW8jJydbqmPLychz854CekxHVnVgsxnMTXsCLk/4HS0tLoeMQGR2lUomvvv6ShYX1FNmnL1q1alXt8zzvEBEREREREZEhmVRxIXDv4pRIJELPnj0xbtw4DBgwAGKx2OA5goKCsHHjRoOPS0RERERERCQkpVKJ3NxcJCUnQiqV1bYz/tq/j0WCZJKCg4LVtlt4eiKkVSj69euPoMAggVIR6UdmZibi4m7hbtpdjSXllQoFSstKUVxSAklFRa197dn7h75iNnr/e/FlvPzSK0LHICIiIiIiIiJSMZniQqVSCWdnZ4wYMQLjxo2Dn5+foHns7e3RvXt3QTMQERERERER6UJFRQX+PrAfsbExSEhMgEwq1dhHoVTi5s0bAqQjqptJE19EaGibOh/n4uwMf/8AODo66iEVkXHKzMzE6h++xcGDBzSKCsmwIiL6YNLEF4WOQURERERERESkxiSKCzt37oxx48Zh0KBBXPaBiIiIiIiIjE5JSQmKioqEjlErkQgoL7dTaztw8Ag++/xTKJVKgVKRvoSEhOKl/70sdAyDcHJ0QlBQEOzs7IWOQmQS8vLzEH/nDqZOnyJ0lCZPJBJh0BNPYuZ7s2FubhKX64mIiIiIiIioCTGJqxU///yz0BGIiIiIiIiI1OTn5+OHNatx7vw53L2bKnQcIhWP5h6Y+d5sPPpoT6GjEJGR+vTTj3H8xDGhYzQZDvYO8Pb2vlfl//9cXV0R4B+Axwc+gVatQgRMR0RERERERERUPZMoLiQiIiIiIiIyJidOHsdHH3+AgoICoaNQIxEUFIxBTwyCCKLad66Gi4srQkJC4Ofnz9mviKhaSqWShYV69vprbyA4uBUszC3g6emJFi08eV4mIiIiIiIiIpPEKxpERERERETUpFRWViIhIR4ZGRn1Ov7u3VSs/HaFjlNRUxMSEorevXqjVXAIOnXqDEdHR6EjEVETUVFRgd69InDs+FGhozQq5ubmGDJ4KCa+8CJatGghdBwiIiIiIiIiIp1gcSERERERERE1CTk5Ofjq6y8RfTQKcrlc6DjUhIjFYkx+8y14eHigVXAreHu3hEhU/xkKiahpyc/Px67dv+PWrVtIS7sLhVKJjz78BH6+fvXqz8bGBra2tjpOaWJEItjb22uxmxnc3d0REBCAzp26wNPTC1Wdvt3dmqNly5awtLTUQ1giIiIiIiIiIuGwuJCIiIiIiIgavYsXL2D2nJkoLikWOgo1IVZWVnjlpVcxZsw4LodJRPXy+84d+PbblSgrL1Nrr5RIBErUOLi6uOLA/kNCxyAiIiIiIiIiMnomc2V74sSJuHnzpmo7NDQUmzZt0knf2dnZePrppyGTyVRt06ZNw4QJE3TSPxERERERERmeUqmEUqlEUVERFi56n4WFpBcezT3g6eWl1ubZwhMhISHo3asPvL29BUpGRMYkOycbyclJyM/Pr/L5oqIiyOVylJSUQC6/d41y9x+7kJuba8iYBmVvb4/g4FZ1Ps6tmZse0hARERERERERUVVMorgwJiYGp0+fVm2LRCI8++yzOuvf3d0dkZGR2Llzp6pty5YtLC4kIiIiIiKqg9KyUtyOi0NmVqbBx5bL5IhPuIPzF84jJuZm7QdQkzTymVHw9/Ov9/EKpRKeLTzRNiwMri6uugtGREZPoVAgMzMDpaWlWh+TkZGBM+fO4MyZ00hOTtJjOtNibW2N5V+tQPv24UJHISIiIiIiIiKiWphEceHevXsB3CsqVCqVaN68OZ588kmdjjFx4kTs3LlTNUZCQgKuXr2K9u3b63QcIiIiIiKixiY9Ix1Lv/wcp06dhFKpFDoOkYbHHx+EaW9Nh4uLi9BRiMgIpaen4ebNm0hMSkBlpfSBZ5TIyspCfEI8kpOTUFFRIVjGxsLCwgJLPv2chYVERERERERERCbCJIoLjx07pir6E4lEGDRokM7HaN26NQIDA5GQkKBqi46OZnEhERERERFRDU6dPoV582ejvLxc6ChkwrRZ4jInNwcA8NiAgejcqXOt+4vMzODr44tWrUJgb2/f4IxE1PgUFBTghzWr8cee3VAoFELHafRcXV3x6cefsbCQiIiIiIiIiMiEGH1xYXFxMWJjY9XaBgwYoJexBgwYgDVr1kAkEgEATp8+jcmTJ+tlLCIiIiIiIlOVlZWJ4yeOIyr6CM6cOS10HDJBDg6OiIiIwOQ33uJsgkQkiJKSEkye8joSEhNq35kA3FvO2M7ODmZmZlofY2lpBS8vL/Tq2RtDBg+BnR2LvYmIiIiIiIiITInRFxfeuXNHNWMhcG9p5Hbt2ullrAdnKVQqlbh9+7ZexiEiIiIiIjIVMpkM165fxY3r1/Hd999CLpcLHYkE0KVLV5iL1S8hlJeXQWRmhrZt2qJPRCTMxGKt+nJzc0MLjxaqz/lEREL44MNFLCysga2NLb75ZhX8fH0B3CsStLCwEDgVEREREREREREZmtEXFyYmJqptt2zZEra2tnoZKzQ0VG07Pz8fxcXFcHBw0Mt4REREREREuqZUKnHnzm3E3opFYmJig4oBL148j9hbsbXvSI2Svb09XnvldQwf/gzEWhYOEhHpmkQiQWJiApKSk1ApkajaxWJzPPnk4Hr1mZycjGPHj+oqouCOHz8GRycntG/XvvadayEWi/HEE4Pw8v9eRYsWLXSQjoiIiIiIiIiITJnRFxcWFRWpbTs7O+ttrKqWYiooKGBxIRERERER6URubi7S0tMApVIv/aenp+PLZV+guKRYL/1T3TjYO2DatBlCx9Dg4GCttl1cXKG2bWVphaCgIPj4+LKokIgEI5PJsOP3bdi4aQPy8/M1nrexsal3ceGBg/sbGs8oyOVyrPnxB/z8y2b8te9AnY59+ukR6N69h2pbJBKhRQtPBPgH6PX6KxERERERERERmRajLy4sKytTPRaJRLCzs9PbWFX1XVpaqrfxiIiIiIio8auoqMDadT9i/9/7kJubK3QcMgCxWIznJryAFyf9D5aWlkLHUSMSieDmZq/WlpNTAqWeCl6JiOpDJpNh0eIF+PfwIb30f+36NdXjZ8dPQHh4B8yeM1MvY+lLfkE+Zrw9DefOn0W3rt1hZ1u3a6adOnZCp46d9JSOiIiIiIiIiIgaC6MvLjQzM1M9ViqVGjMZ6lJVfSsUCr2NR0REREREpq2yshIpqSm4c/s2jp84hhMnj8PFxQUeHveWEUxOTkJ2drbAKclQ3NzcMfjJIRjQfwBatQoROg4Rkcn6ce0avRUWAkBc3C1YWFhg5nuzMWTwUBw/fkxvY+nL9BlTVY/HjBkrYBIiIiIiIiIiImrMjL648OHZBPPy8vQ2VlV929jY6G08IiIiIiIyPUVFRfhp/Vrs+2sfios1b1AqLS1FamqqAMlIFz768BP4tPTRen8bW1t4eXqp3RhHRET3XL12FefOnUFc3C2tbxguKCxEfPwdvWXKzc2FUgmsWL4K4eEd9DaOofSJiMSjj/QUOgYRERERERERETVSRl9c6OnpqbadkZGBzMxMeHh46HysS5cuabTpYxwiIiIiIjJNp8+cwkcff8DljRshCwsLzJ0zH/37DRA6ChGRySsoKMCKlcvx1/59QkfRUF5ehrU//gTPFp6172zkeveKwOJFH7LAnYiIiIiIiIiI9MboiwuDg4M12qKjozF69GidjxUVFaW27ebmBltbW52PQ0REREREpic9PQ3z5s9BWVmZ0FFIxzp36ox3350Ffz9/oaMQERkFpVKJS5cuY++f+3D7dgJKS0u0PlYmk+H6jet6TNcwLeswO62xEYlE8PBogcDAQIwaOQY9uveASCQSOhYRERERERERETViRl9c6OvrC1dXV+Tn50MkEkGpVGLdunUYOXKkTu/KjY+Px7///qsaQyQSoVOnTjrrn4iIiIiIhFdcXIx/Dh1EbGwMkpKToFAotD726tUrekxG+hbZpy9atWoFhUKB1NRUBAUFI7x9OFq1CuFNZUREAPLyciFXKJCXl473Zs3GjRs3hY7UqPj5+aN7t+7o3q0HvL29q93PxcUVTk5OBkxGRERERERERERUPaMvLgSAfv36YceOHao7cRMTE7Fhwwa8+OKLOulfqVTi008/hUwmU7vbt3///jrpn4iIiIiIhHck6jC+XPYFlzQWQNcu3fDOO+8ZbDxHB0e4uLgYbDwiosZg+oypuH3nttAx6qykpAT29vZ6HUMsFsPdvTn8/fzh5++PoIBA2Ds4aHWss7MzfFr6olmzZnrNSEREREREREREpA8mUVw4cuRI7NixAwBUMwsuXboU3t7eePzxxxvc/wcffICjR4+qFRba29vrpG8iIiIiIhJOSUkJNm7agM1bNgodpUmytbHFG6+/iREjdDvzPBER6Z68DrP5GgOFQoFNmzfCwcEBw58eobdx3nt3FkYMf0Zv/RMRERERERERERkzkygu7Ny5Mzp37oyLFy8CuFdgKJfL8fbbb+ONN97AG2+8Ua8vqvLz87FgwQL8888/qsLC+0siP/fcc1wai4iIiIhIhxITE3D12lXExNzEzl2/q9qtra11Oo5MJoNMJtNpn1Q3I58Z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ERF9tcpy+fJF7N37h1pbYWEhXn11klbH3zd58jT06zegyufKy8uwdesWbN26BT4+vmjbNgwBAYFwdHSClZUVSkqKkZAQj1OnTiAjI0Pt2JCQULz//qIax1YqFTh8+BAOHz4EFxdXhId3QGBgEFxdXWFra4fy8nKkp9/FuXNnERurPqmavb09li79GtbWNnV6vabG6IsLLSwsEBYWhsuXL6varl27Vm1xYd++fWFpaQmpVAqRSASlUolly5ahd+/eaN68+hltPvvsM8TFxamOEYlEaN++vVYzHupb165d8ddff6m1nT9/HoMHD65TP9evX0dFRYVaW/v27Q02a4EQunbtij///FOt7dy5cxg2bFid+pHJZGo/g8C9n82OHTs2NCIREZFWjh6LxrJlS5GZlSl0FL0ICAjEIz0eUSsWtLd3QIB/ADp16gwrKytYWVkJmJCIiKj+lEolEhIScPHieVy8dBHXr19DVnYWlEqlwXOkpachLT0NJ0+eULXv/WMfXF2rv7mybZu2aNumbbXPExERERERERERkWGUlpYiNTW11v2KiopQVFSk0V7V6qCJiQmq2fisrKzw6KM9tcoilys02vLyclHNAqTVKi0t1Wq/lJRkpKRot9rrgAEDMXPmXNjZ2WudIz8/D1FRhxEVdbjWfVu1CsGiRR8hKChY6/5NldEXFwJAjx49cPnyZdWXzYcPH8ZTT1W9XrWDgwMiIyNx8OBBiEQiiEQi5OTkYPTo0Zg3bx769++vNnVnQkICvvrqK9X+DxowoOqqWEPr06ePRnHh/v3761xcuH///ir71ofHHnsMsbGxDerj+eefx5kzZ9TaNm7ciB49emjdR0REhEbboUOH8P7772s1het90dHRKCsrU2vr0qUL7OzstO6DiIialsSkRMTE3MSdO3cgk0kb1Nevv23VUSrjYG1tjRXLVyE4OBhWVo33JgciImpa5HI5zp0/izt37iA7O0vVnpmViUuXLqKgoEC4cDVwdHSEi4tulighIiIiIiIiIiIi0/PgrIVdu3aHjY3xzMT31FPDcfjwv7hx45rGhGoPs7CwQM+evTFq1Bh066ZdbVHPnr2RkZGBK1cuIT8/v8Z9RSIR2rYNw4gRozBo0JMwN69+NZjGxCSKC3v27IkffvgBwL277I8ePQqpVFrtkj2vvfYaDh06pJoBQCQSITMzE9Om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0vogMDDIqfUUFxchO/sUSktLoFar4eHhAX//ACQnJ6N37z7w9LTvZ2XkeG4RLly5cmXz16IoQhAEPPPMM7jmmms6PbdcLscrr7wCg8GAdevWNQcYjUYjVq9ejbvucp3w0pIlS3DgwAGzYwqFAosWLcKcOXNaBGIWLFiAdevWYdGiRWhqamo+npubi2effRYvv/yyU+o+w8/PD9OnT8esWbMwZMgQyNvZHi4nJwdPP/00du7caXb8+PHjePnll/H88893qpaFCxdi1qxZnZqDpKNUKnHvvQulLoNsJIoi1qz/A8u++g4ajdZh60RGhOP1555AkI1B4u5ix74j3S5YOHxgb0wcNcji863dFjmAv3Nurba+EV+u240DJwocMn9DE4OAXU2vhAhcd9EwJMeGSV0KERERERERERERERF1EwcO7MOXXy7Hrl3/tNm0RyaTYfjwkZg792aMGjXa5rX++ON3PPHEowCAnj174csvv2u+r7GxEdu3b8O2bVuwb99eVFVVtjmPl5cXpk69CDfeeDNSUizfSXDx4qewbt0am2pfv/5PBAW130Rs7dpf8NxzT9s0/wsvvIIpUy60aay7cPlwoVqtxsGDB5s7CgqCgIkTJ9olWHiup59+Grt370ZVVVXzsa1bt7pMuDAvLw/Lli1rcfz111/H9OnT2xw3Y8YMREVF4eabb4Zef7brzqpVq3Dddddh6NChDqn3XOHh4fj3v/+N6667Dj4+lnVzSU5OxmeffYbHHnsMK1asMLvv559/xpw5c9C/f39HlEsuztvbG48tehLRUdFSl0I2+mPTVrz3yXKHrnHZxRfitpuuh6+Fjznd2derN0pdglONHdoPt8+5zKpt0K0OF3JbZLel0enx0ucbUF5dL3Up5IIClT4YMyAZPt4eAASEBvohLjII8ZHBVj2mEBEREREREREREbmyBo0eOkPLHcfsSSGXITTUoUsQdVmiKOKtt17DDz98B1Fsf2dJk8mE3bt3YvfunbjiiqvwyCOL2m0E1pYtWzY1fz1hwqTmrxsaGjBjxoXQai1rKqTVarFu3Rr88cd63H77fNx887+sroWcz+XDhUeOHIHJZDL7wO7WW2+1+zoBAQG46qqr8PHHHzcHGY8dO2b3dWz10UcfmYUDAWDWrFntBgvPGDp0KObPn493333X7Ph7773XamDRnm6//XaMHDkS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ZW17ojXhGDW0HwBAgID4GA3SkhOQlBAD6QXbn/s7T3UujI4IwYQRfTwytzP27N3t9Dn9+w/wQCXkCbuOl+PbTadQz86EHhcbEYz4SJXd6wxGM+IjVbikRywSNPaPISIiIiIiIiIiIiIiIgo09fX1+Pvf78apUyfR2Njo8fV++WUlXnvtFdTW1rR6bEVFOVat+tmlcOGGDeuavh45cnTT1zqdDuPHX24VmmyJwWDAzz+vwG+/rcKMGffittvudLoWaruACBcGBQVh3Lhx+O6775rGPv7442bDhcCZbXDz8vJw6NAhCIJg1ZVQPK/tkL3uh+PHj8eMGTPcVH3brV692uYX67LLLkNcXJzDcygUCkyaNKmpA+RZK1aswH333eeWOj1l5MiRkEgkVh3kCgoKYLFYIGklaNXQ0IDff//dakwul2Py5MlO1TB9+nSrcCEArFy5kuFCD9PXN3h0/mhNJP7x97vRv8+Z7dJFUcS7i370abAQAB742/XonZnm0xrcxROdC0OUCsycPBxKhW+7lFksFuxzsnPhmfbNtltwk/85XarFl2uPw9LBOhUOzYxB9+QIt87ZaLJAqZAiKjQYkvOedimCpIgMVUDCbcKJiIiIiIiIiIiIiIioAzKZTDh69IhX1lq8+Eu88carTZcFQUBmZndcdNFQxMbGQqlUoqamFjk5p7B//z6cPp3j0jpGoxFbtmxuujxq1Jimry0Wi03+KS4uHv36DUBGRgYiIiJhNpuRl5eLTZvWIz8/v2nOt99+CzqdDn//+wNO1SOVypCQ4PiuiBJJyzug2hMfnwCZzLHzlEql0/P7WkCECwHgkUcewT333OPw8aGhofj000/xn//8B+vXrwdwLkhoL1B4tmPh3XffjX/9619uqdldNm7caDPmyHbI9s65MFy4ceNGvw8XKpVKREREoLLyXODLbDajqqoKUVFRLZ67bds2NDRYB9SGDBnidFfK7t27o3PnzlZdL3Nzc5GdnY20tPYRAvNPnk31vP/6S1Crz3XB2nXwGHYdPObRNVsjlUjQpXMnn9bgTmY3bistk0owqEcKpl81GGFq3z/gZudko7a21qlz+vXr12oomnzPbBHx1boTHSZYGKGWo0dyBCYMTUGIklsLExEREREREREREREREflCcHAwunTpiszM7tDpdFi16me3zPvTTyusgoWZmd3x8MOP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9BFWrlzZFOoRRREJCQmYOHEirr76anTt2rXFtqiVlZXYunUrfvzxR2zatAlmsxmCIKChoQEnT57E66+/7lfd6OLi4hATE2MViiwsLERJSQni4uKcmstoNOLAAevWnVKpFN27d3dLrc5YtGgRnnnmGZvxKVOm4JlnnnFbaKtXr174888/rcb27t2Liy++2Om5du/ebTPWu3dvl2sj+/YfOuKWeY6czMWBrFNumas5vgzNuYOh0YjswgqPr6NUOPYExd3y8nKRn5/vk7XP6tKlq1c+SZGVV4192YHzyQZPuXFkutVWxVFhCiRGqe1ucUxERERERERERETU3pksIkwOhL4CTV2DBeuO6nG6woia+sAPqHUc/LciIs8zGAwefY84kLrNAUC3bt2xffvWpsu1tbWIiGg92FtTU2t1OTzc/jk7d26HTndmV8r4+Hh0797DqfrMZjOefPJx/P776qaxjIwuWLDgXYSHRzg1V1tVVlpnJ9wdbLzwZ8fb319bBNS77fPmzcM333wDAE3dBu+77z7ccccdCAoKcmgOjUaD8ePHY/z48cjKysKzzz6LHTt2QBAEHDp0CDfeeCM+/fRTdO3a1ZPfilMGDx6MX375xWps165dGD9+vFPzHDp0CA0N1l3c+vTpg+Dg4DbX6IxFixbh6aefthmfPHkynn32Wbd2gxs8eDDef/99q7GdO3e6NNeuXbvszk/ulXXipMvnCud1Hj152nYLcHeTBHDnwhN5pXh/2Z+tH9hGoSoFNGEqj69jz5atW3yy7vkGDhjolXWO5VV7ZR1/1bVTGO65ugeCZOxKSERERERERERERJ4hiiKq9RaU1JpQ1+C/ISmtwYL1R/Voh5lCIiIictKIESOtwoVZWUeRkpLa6nnHjh21utypUye7x23cuP68tUY7VZvZbMZTTz2B3377tWksPT0DCxa851AA0p0aG2ciYykAAQAASURBVBtx+PChpsuxsXGQyRzLoTlqzx7rhmaJiYlund+TAiZc+P777+Prr79uuhwdHY33338fPXv2dHnOzMxMfP7553jqqaewZMkSCIKAiooKzJgxA8uXL0dERIQbKm+7kSNH2oQLV61a5XS4cNWqVXbn9qbFixfb7Vg4adIkzJ8/3+3bUg8ZMgTBwcFWocrt27ejqqoKkZGO3xllZWUhOzvbaiw5OdlnW0q3Z3V1WpfP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nr1w/fVTcdVVV0MmC2rxeH/l9+HC6upqq8ue7BR24dwXru1rcrkc7777Lu644w6b0GBubi7efffdVufo1KkTPvroI4SGhnqqTCsXhvPOOnbsWJvnrqlpPX19vttuuw3l5eV47733rMbr6+vx3XfftXq+RCLB008/jTFjxji1LjlO70K4sFuXdLesHSSToVN8tN3rghVypCXFo1t6MoYN6g2pB7fybjSa8P26fVi99YjHt3Z2llIRhE6xtl0+A5VUKkWf3n3Qp3cfr69ttohYvSsfq/cUwOKjj7FLJS0/ngbJJOgUpUJKbAjG9E1EuFrupcqIiIiIiIioPRJFEfpGEcYA76R2usKIrOJGVGjNaOVPa79iEYGCaneE4ircMAcREREREZF9M2bcixkz7vV1GV7lze85KSkZzz//P+h0WuzduwelpSWoqamBSqVGTEwM+vcfaHfnzwud36lv1CjHMzSDBg3G1q27XardUdOm3YRp026CxWJBXl4ucnNPo6ysDFqtFiaTCSqVEqGhYUhNTUW3bt0hlzv3PvjQoZdg6NBLAAClpSXIzs5GWdmZ29FgaIRCIUdISCji4xPQq1cvhIR4J5/lSX4fLjx/G1tRFG32u3ankpKSZtf2FxqNBosXL8bcuXOxcuVKp84dPnw4XnrppQ7dde+hhx5C586dMX/+fGi1WofPi4mJwfPPP48RI0Z4sDpyJVyoUtlPwDuby0uI1eDlR//u9PruJIoi3vtuE/Zktd7y2BemX3WR32x3HOjW7CnAql2++3fukhiGWdf28tn6RERERERE5L/MFhFVejOqdBZYHHiB5XSFEdtONcBgEiG305mu0RTYYUIiIiIiIiKi9katDsGll7qWfykvL8Phw4cAnGnSNWLEKHeW5jYSiQSpqZ2RmtrZY2vExsYhNtZzO/D6C78PF17YYa+oqAh5eXlITk52+1pbtmyxuhwS4vg+2t6kVqvxyiuvYPr06fj444+xcePGZoOQUqkUQ4YMwe23386Oe3+ZPHkyRo0ahU8++QTff/89ysvLmz02KSkJ06ZNw6233uq3Pw/tib6+5Za09qiaba8beC9cb953ym+DhRf36YxL+7mnS2RHV1Cu82mwEAA82ASYiIiIiIiI7NAbLCiuNVkF7eqNInbmNKC4xgSNWuqTLnju6WR3DoOERERERERERO3bxo0bmnZh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WlRy4dV69uwJb29vCIKA33//nckzRHYi2JD25sq2yFcnObpSUXkNfvrzNM7mid9QcxUmfrk/ncHzSnX6KiWY1MOfP19ERERERERE1Oyo1Wrcf//DovHRo8c5fO/HH5+Fo0cPG41JJBJoNDVQqbzqx3r06Ilt2/babV+JRIL+/Qehf/9BAIDLl/NRWloCg0GAr68voqKioVCY7o5y7tw50VhISKhVcahUXnj00em44467sWHDWmzfvhXHjh2pLzJxNW9vb3TokIp+/frjpptutnpPAHjppVfx0kuvWj2/MUuWrLJ5DblcjkcfnY4777wXf/65AUePHsbp05koLi6CWq1GTU0NBMG89xijo2Ps+rMDWH8f7f1zPG/e13Zby96xERERERG5SotLLiwqKsLKlSuxbNkynDr1z9V75r5oIiL7ujqvSGtV5ULTpzFbkhxdRac34Nt1GcgpUrs6FCNS5n65RKlaj5xSHfLLddAbxLf7+PxTrfBYlvlXYbuDTrEqjOniBz8vqatDISIiIiIiIiKyu65du6Fr124u2bt3777o3buvS/a+WkREJCIiIs069uTJ46Kx9u1tax8dEBCIyZNvw+TJtwEAiouLUFxcDK22FnK5AsHBwQgNDWtxhSf8/f0xfvwkjB8/ydWhEBERERGRh2gRyYVarRYbN27EsmXLsH37duj1epPJhHUvIlvai0kid6GzonKhvdoiu8Ov/bp9l9wusRAApMwudKrqWgPSj1Rh/8WaJo50zc9Kr0Qvq35f5FIJIgPkiA2WIzKgRTz9ICIiIiIiIiKiJhQUXBZVWgSAlJSOdt0nJCTUpsqERERERERELVWz/nT/8OHDWLZsGdLS0lBeXg7AuELhtUmEdbd5eXlh2LBhuOmmm5wXLBFZVbmwobbInliMdG9moatDMIkJ185TUWPAF5tKUF5tolShi6nkEswYEoxgX3u1IiciIiIiIiIiopZu6dLfoNcbvy8cH5+A4OAQF0VEREREREREV2t2yYX5+flYsWIFli9fjnPnzgFoPKHw6tu7deuGSZMmYdSoUfDz83NOwERUz5rKhYoG2iJ7mrKqWhRXalwdhoi/t4JtkZ1EEAQsP1DhlomFrUIVmNjDj4mFRERERERERERkN6dOZWDx4p9E46NHj3NBNERERERERGRKs8jK0Wg02LBhA5YtW4adO3fCYDCY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be8Rq+bK7dgW2VGsSSwM8lMiyFcJAJBAgrBAFeLC/NC5dTBCA7zsHCHZQ26ZZVU37UHGyoVERERERERERERERERERETkQO6fmUNE1ACFouHKhYLlpQsdwpqWyP07RmF4j1gHREOOUqtz/s9bdLDS6XsSERERERERERERERERERFRy8G6R0TksRpti2whR3WYNQiWJ51JeWb2OPZqfW2J1uEq529KRERERERERERERERERERELQYrFxKRx1K4UVvk/NJqnMkpR1ZBJSpr/mmRa03lQqmjMh3JYQwG5+4XEyRHKyYXEhERERERERERERERERERkQO5T2YOEZGFFPJG2iI7qZKcTm9A+t5L+PNgtt2q18mkTC50B3qD+c219U4sXSiXArf0DODPCRERERERERERERERERERETkUkwuJyL6c2B7W28u1ldsMgoCv0k4iM7vMrutKmTTmMvnlOmw7pUZ2iQ4FFXpn/jibJdhHiok9/BEZwD/fRERERERERERERERERERE5FjMTiAiF7M+kS65daz9orCiFfH2Y/l2TywE2BbZFQRBwJbMavx5sgp6J7Q4lksBH6XUrGMVMgmig+SIC5ajV6I3lHL+fBAREREREREREREREREREZHjMbmQiDySTCpFciv7JRdaShAEpO/NcsjarFzofPsv1GDD8Sqn7dcuUok7+wQ6bT8iIiIiIiIiIiIiIiIiIiIiS5lXNomIyM3cOnowfLy9XLZ/UbkGVTU6h6wtY3KhU5VV65F2xHmJhQATSImIiIiIiIiIiIiIiIiIiMj9sXIhEXmcwMBAnCusxQc//dHgMRdziy1a09JUr+wixyWjMbnQuTLyaqHRCU7dk99iIiIiIiIiIiIiIiIiIiIicndMLiQij6LyDYFBFYzjZ/NcGodWb3DY2lEhPg5bm8QulTimAmVjmFxIRERERERERERERERERERE7o7JhUTk9rz9giGRe0Gq8IJUKnPMJhYmewkOKnSnUkgRFeTtmMXJpOJKvdP39FZKnb4nERERERERERERERERERERkSWYXEhEbk/uEwKJxL1KvTkquXBApyhIWdbOqQQ4tyUyAMQE8c8vERERERERERERERERERERuTeWTiIiO7NzopZE6naJhVfYPyEtJtQHN/eMt/u61DhHJYo2JiFE4fxNiYiIiIiIiIiIiIiIiIiIiCzA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QGpqKgwGAzZv3uywfbZt24YFCxaIxidPnoyXXnoJvr6+RuOPPPIITp48iRkzZiArK6t+vKamBrNnz8aqVaucVrLb41icdNf4k3KJ1PwXaREh/njpwZst3N86BrZF9kjbTlc3fRARERERERERkR2EhYXju+8WuToMIjJDQ7+vllSicrTly3/HZ599gupqtc1r1dTUIC1tFTZsWIvx4yfjscdmQqVS2SFKouanqqoKf/yxDn/8sQ5RUdG4++77MHbsRKcmGV5Lq9Xir7/+wPbtW/Hoo4/jttvucurer7zyIrZs+csu6wmCgNzcHKvnb9++Fe+++waKiorsEo/BYMChQwdw6NABJCe3w/TpT+D663vbZW1LnD6didOnM7Fw4TcYOPBGPPLI44iPT3B6HERERACTCz3GhQsXMH/+fNH4Bx98gJEjRzY4b9SoUYiKisK9994LrVZbP758+XLcdttt6NGjh0PiNaUukbBTp071/w8PDwcALF261GHJhTqdDq+/Lr7a5e6778bLL7/c4LyUlBT8+uuvuOWWW5CdnV0/fv78eSxcuBCPPvqoQ+IlYxKJ+ZUL3R0r3rmWTi8gr1Rn8zr8NhIREREREREREZGz6HQ6zJnzGtatS2/wmLCwcPTs2QuxsXEIDAxCYGBQfcWznJxsnDx5HCdOHBO1LNVqtViyZDFuu+1OREfHOPquELlUbGwcvL3F7cAFwQCNphZqdRVKS0tgMBgaXCMvLxfvv/82VqxYildeeROtWyfaJbbWrRMhl4s7bRkMelRWVqKoqBB6vV50e22tBnPnfoTaWi3uuWeqXWJpjF6vx0sv/R927Nhq8va4uHh069YDrVsnIjAwCF5eXlCr1aioKMelS5eQmXkSZ86cgkZjW4cp4EpS4pdfzsN///t9g8d4e/ugc+euaN8+BQEBgQgMDISPjw9qampQUlJSf348dSoDOp3486PTpzOxYsXvVicXent7IzY23uRtOp0WGo0GpaUlRkWCrqXX6/HXX39g27bNuO++B3HvvQ+ICg4RERE5GpMLPcTXX39tlBwIAJMmTWo0sbBOjx49MG3aNMydO9do/LPPPjOZsGhvrVu3xtatWxEREeHwvUxZs2YNzp8/bzSWlJSE//u//2tybkhICN566y1MnTrVqA3uggULcM8998DHR/wihOzLksqFzmRNW2Qpk9JcqrBSD70dulnL+ZqNiIiIiIiIiJqhUaPGYtSosa4Og9zEgw8+igcf5AX2rqbT6fDii89gx45tottkMhlGjBiF22+/C0lJyU2upVarsXXrJvz++684fvyo/YO9xpgx4zBy5BiH70Nkruee+xd69OjZ6DF6vR7Z2Zdw6lQmDhzYh61b/zJZEe/UqUw8/PC9+M9/5qBv3/42x/bee580muCrVqtx8OB+/Pbbz9izZ5fo9q++moeUlBRcf30fm2NpzNKlv5lMLOzWrQemTZuJTp06NzpfLpeipqYGu3fvxKZNf2Hz5j9RVVVlVSzvvPMGVq9eYfK23r374a677kWXLt0glzedDlFVVYkdO7Zh9eoV2Ldvj1XxmNK+fQfMm/d1k8eVl5fj3LmzOHbsMHbt+hsHDuwTJblqtVp8++2XOHbsCN544x2oVF52i5OIiKgpTJHwAJWVlVi1apXRmFwux+zZs81e4+GHH0ZgYKDR2LZt24xa/jqKt7e3yxILAeDnn38Wjc2aNcvsEv99+vRB//7GLwxKS0uRlpZml/iaGzvkbhmRuOnVN1bkFqKpFtDkWHprelmbEBXIvHwiIiIiIiIiIiJyvA8+eNtkYmFKSkd8//1ivPjiK2YlFgKAj48PRowYha+//g4ffjgPrVsn2TtcIo8nk8mQkNAKQ4cOxzPPPI+lS9PwxhvvIDFR/PtSXV2NF198Fnv27HR4XD4+PujXrz8++ugzPPPM8yY7ZX322aeNVl20VVVVJb799gvR+IQJk/Hpp182mVhYx8vLCwMHDsa///0ali1Lx9NPP4+kpDYWxTJ//lcmEwvj4uLx1Vff4YMPPkWPHj3NSiwEAF9fPwwfPhKffPIFvvvuZ/TrN8CieGwVEBCArl274c4778Unn3yB335biVtuuc1k6+2//96O559/2mSlRSIiIkdxz6wdMrJ+/XpReeghQ4YgMjLS7DVUKhUmTJggGr82abG5uXTpEg4cOGA0Fh4ejmHDhlm0zu233y4aW716tU2xkXkkkuZTuZDtdF3LTrmFiAsWtyYgIiIiIiIiIiIisqf169di1arlovE+ffph7tyvbGrH2qtXHyxY8BNuu+0uGyIkav5kMhkGDx6KhQsX4Z577hfdrtVq8corLyEvL89pMU2YcAumTn1INH76dCaOHj3ssH23b98qqjLYtm07zJ79rNVten18fDBx4i149tkXzZ6zb98efPfdt6Lxrl2746uvFiI1tZNVsdRJTm6Ld9/9CG+//SHCw11TPCcyMgqzZz+Lb7/9EXFx4rbKe/bswpdfznNBZERE1FIxudADbNmyRTRmTjtkc+aYWrs5MXX/hgwZAoXCsuSgwYMHw9vb22hs7969VpfqbtasK+lnkkwmM3n1lTuw5l666V1pMeyRXJgUrkB8CCsXEhERERERERERkeNUVFTgk0/eE4136NARb7/9oejzCmsolUrMnPkk/v3vNyz+zISopZHL5Xj00emYOfNJ0W3l5WX46KN3nBrP3Xffh+DgENH4rl1/O2zPnTt3iMYmTpxidnVAe9BqtXj33TdFBUDi4xPw/vufIjAwyG579e8/EAsXLkLPnr3stqal2rZthy+/XIiYmFjRbb/+uggnTx53QVRERNQSMUPCA+zdu1c01rNnT4vX6dSpE1QqlVEVxCNHjkCj0ZjdItjT7Nu3TzRmzWMnl8vRtWtX7Nz5T2lzrVaLQ4cOoV+/fjbFSA2Ty933DQ1rciglbIvsUgYbE19Vcgkm9vCHlFmiREREREREREQWKy8vx/HjR5GdnYXKykr4+PgiLCwMSUnJaNWqtV33Kii4jNOnT+Hy5XxUVVWhtlYDpVIFb29vhISEIjo6GvHxreySoFVHp9Ph1KkM5OfnobS0FBUV5ZDJZPDx8UFUVAxat05EVFS03faro9FocPz4UVy4cA7l5eVQKJQICgpCq1atkZLS0epqUuRaixb9gLKyMqMxLy8vvPzy63ZP5LnpJsuLWbgDZ55T7KG0tBQZGSdQUlKM0tIS6HQ6BAUFISgoBB07piIkJNRuewmCgNzcHJw5cwpFRYVQq9Wora2FSuUFb28vhIVFIDo6BvHxCVAqlTbtVVJSgtOnM5GXl4uqqkrU1NRAqVRCpfJCcHBI/fnWz8/PTvfOtW677S5kZJzE+vXpRuPbt2/FwYP70a1bD6fEoVJ5oW/fG5CWZtyhLjPzpMP2zMvLFY21b9/BYfuZsnLlUmRnXzIak8vleOWVN+36N71OUFAQJky4xe7rWhrDm2++h8ceewA1NTX14waDAZ9//ik+/fRLF0ZHREQtBZML3dzly5dRUFBgNBYTE2NRS+Q6SqUSnTt3NkpW1Ol0OHnyJLp27WpzrO7o6NGjorHu3btbtVaPHj2Mkgvr1mdyoeMoFBaeopyY9MW2yJ7HlsqFrcMUmNjdH8E+7tmmm4iIiIiIiIjIVmlpq/DWW68Zjf3220pER8c0Om/+/K+wcOE3RmPbtv3zHvThwwfxww8LsGfPLuj1epNrJCW1wZgxEzBpkvUVkIqLi/D777/ijz/WiRIPTJHJZEhKaoMePXpi0KAh6Ny5q8VdVARBwF9/bcTatatx8OABqNWNd7qJiIhEz569MGLEKPTo0dOmri3Z2Zfw448LsXHjelRXV5s8JiAgEGPGjMPdd9+PgIAAi9Zv6vt6tVtuGWsy6aRO//5NX/D/4ouvYNSosfVfv/nmq0hPX21mtOaJiorGkiWrmj7QxTSaGixf/rto/I477kFCQisXRGSd1atX4o03XjUa86Rzij1UVlZiyZLF2Lp1MzIzTzb4uYJEIkFSUjJGjhyNSZNugUrlZdV+2dmXsHTpr/jjj/UoKips8niFQoG2bdujZ89euPHGoWjbtr1Z+1RVVWLZsiXYsGEtzpw53eTxEokErVq1Rteu3TF48BB0797Tpd8XWz377IvYtWuHKAH4l18WOS25EIDJ1uilpSUO26+kpFg05oiEvoYIgoDfflssGh89ehxSUpyb5Ohsbdu2w9SpD4laIe/fvxenTmWibdt2LoqMiIhaCl6y5ubOnj0rGktISLB6PVNzTe3RHOh0OmRlZRmNKRQKxMaKS0ebw9Rjd+7cOavWIvO4deVCK+a4a4vnlsJgsHxOcoQC9/YLxAP9AxHqx8RCIiIiIiIiIiJz6fV6fPLJB5g+/WHs3LmjwSQgADh79gw+/fQDPPzwvWYlqlxr+fIluOOOSfj++/lmJRbWxXfqVCZ++WURHn/8IVy8eMGiPXfs2IZ77rkN//7389ixY1uTiYUAcPlyPtLSVuGJJx7DG2+8YtF+V1u+fAnuvfc2rF69osHEQuBKq85Fi37EnXdOZutED7JlyyZUVJQbjclkMowfP8lFEbkHZ55TbGUwGLBo0Y+49dbx+PbbL5GRcaLRggWCIODMmVP47LOPceut47FlyyaL9hMEAfPnf4V77rkVv/yyyKzEQuBKh67jx4/ihx8W4P777zLqfNaQzZv/xB13TMaXX84z+7EVBAHnz5/DihVL8eSTM7B3726z5rkrb29vTJw4RTS+Y8dWVFRUOC0OPz9/0VhFRaXD9lMqxV3w8vMbTiy3t8OHD+LSpSzR+OTJtzotBleaMOEW+Pj4isbXrUtzQTRERNTSMLnQzV26JH4jJCam8au6GmNq7rUJeM1Fbm6u6MVlZGSk1W0gWtJjZwvB4rS7hhPuLK5c6ESsXOh5rPmeDe3gi3aRSrZCJiIiIiIiIiKygCAIeOONV/Dbbz9b9J7MqVOZmDHjEWRkmN/WccGCr/H++2+jqqrp5D57EAQB3377JZ577kmcP2/9hfvmJCOa8vXXn+P99982KwmoTmlpCWbOnOaSJCuy3LZtm0VjN9wwEGFh4S6Ixj0485xiq+rqarz44jP4/PNPUF5e1vSEaxQVFeGll57FDz8sMHvOnDn/wcKF36C2ttbi/SyxevUKvPzy8yguLnLoPp5g8uRbIZMZFyTQ6/XYuXO702KorBQnMvr7O679dGiouHX3xo0bHLbftbZt2yIa69SpC5KSkp0Wgyv5+flh1KgxovHt28WPCxERkb25b+YOAQAKC8VXF0VHR1u9XlRUlFl7NAfXtpMGbHvsTM319MdOIpHYP+HNhtaz11LIFdBYUG1OAudVB7TmbkolElYvdCFDI4msDZFK3fN7ZiqkK2PuFysROR/PEUTUGJ4jiKgx7n+OcJc4iKgpixf/Fxs2rK3/2tvbB/37D0SHDqkIDQ1FZWUlLl3KwubNfyInJ9tobkVFOZ58cjoWLPgJUVGNv5978OB+UftUAPDx8cX11/dC27btERkZBS8vL+h0OlRVVaGoqBDnzp3BiRPHkZ+fZ/F9mzPnP0hLM91aNz4+Addf3xvx8a0QFBQEQbiS/JGVdREZGSdw/PhR6HQ6i/ess3LlMqOEo8DAQPTu3Q8dOqQiKCgIer0eubk52L59q6hSYXW1Gm+++Sq+/vo7u7cjbd06sb6CVnFxkSjxKDm56XaN17ZtjoyMMmteQ6qqqpCbm930gW5o//59orGePXu5IBL34axziq00mhrMmvUoTpwQVwqNjo5Bjx49kZzcDgEBAZDLFSgvL0NmZgZ27tyOgoLL9ccKgoCvv/4cgYFBTVasXLt2jclzUlBQEK6/vg/atElGWFg4vLy8UFtbC7W6Cnl5eTh//iyOHTtqstWtKVlZF/Hhh+/CcE2LIKVShR49rkOHDqmIioqGt7cPBMGAqqoqFBcX4dy5s8jMPImsrItm7eMpgoND0KZNMjIzM4zGjxw5hOHDRzolhnPnxAnuQUHBDtuvU6cu2L17p9FYevpq9OnTD4MHD3XYvnX2798rGuve/TqH7+tOevbshSVLfjEay8q6iNLSUgQFBTl4d/t/XuaOn78REZFpTC50c2Vl4quafHx8rF7P11dcLrm0tNTq9dyZvR87U3M9/bELCRH/PNjK4ueBjRyv8lKhUm3+UjK5FGFh9rsqS6PV40J+BbILKqE3GKcT5pXWWLxeeLi4RD3ZjyAIqGokG1WhsjwlNDTYB2Fh4lL/7ig01HFXJBKR5+M5gogaw3MEETXGnc4ROp0OxcWy//37yus/mUwKmYzNWcg9mPqAVC63/ufT1M+2RCKxac3GSKXi+GUyaaP7yeVSk/O+/fbL+n+PGjUGs2c/I0oeA4BZs2ZjxYql+PTTj40q+ZWXl+Gdd97A3LlfNBrz99/PF1Uxu/32u/Dww4/C17fp89fZs2fw559/YMWKpZDJmn5sf/11sckkno4dO2H69Fm47rqejc4vLy/Hli2bsGTJL01+L009rp988j4AQCaT48EHH8Gdd94FLy9v0XEPP/wo1q1Lx5tvvmZUySwz8yS2bduEYcNuajTOhvZvKN6PP55X/+9vvvkS8+d/bXT7Tz8tbnK/a02b9jimTXvc4nkAoFarMX36I6LkwtTUThb//pj6PWzq98IW+fl5JpO9unTp7LA9m2LNuaEh5sxz5Tmlof3Nvb/vvPOeKLGwVavWeOKJp9G3b78GE2l0Oi1WrlyBTz/9EDU1/3z28Mkn76Nz585o1659g3t+//38a2KV4dFHH8ftt98FpVLZaLyCIODkyRPYsGEdVq9eCbm84fv5888/orbWuGLqTTeNxOzZzyAkJKTRfQAgO/sSNm36C8uX/27W+dZWph5re//udu7cRZRceOpUhsN+N66m0Wiwc+cO0Xj79ikOe2yHDBmKhQu/Mfq7q9fr8a9/PYcRI27GHXfchZSUjhataW6sOp0WZ8+Kq+926mT5ed1RnPG8rWvXbibHz5zJQO/efe22j14voO4D3Lr4Q0N97X5xAhEReQ7+BXBzarU4s8rLy8vq9VQqcZJMdXW11eu5M1P3y5bHztTc5vrYOVNjuYhXnqTasRSimWpqdfjlr9NYv+cirOikaxIvvrEfvUFAXqkWWYUaVNcasD2jAllFjmn3YOqNJCIiIiIiImpeampqcPlyvqvDoGtERETa9F4euZZGcyU55q677sHMmU82eJxEIsGECZORmNgGTzzxuFFSzZ49u7BuXTpGjLjZ5NyqqkpRhbdRo8Zi9uynzY4zKakNkpLaYOrUB5tstXr+/Dl8+umHovGxY8fjuedeMusD94CAAIwZMw5jxowTVVczh0ajgUKhwPvvf9xkEsGIETfDYNDjtdf+bTS+YsUys5ILPZVOp8WLLz4rSvDq0qUbXn75NRdFZb4LFy6IxuRyOZKT27ogGvfhjHOKrf788w+sWrXCaKx//4F46613m0zyk8sVmDTpFqSmdsJjjz1cnxhZW1uLr776DB988KnJeefOnRVVBJw69UHce+/9ZsUskUjQoUNHdOjQEY888lijcW7dusno6x49euK11940u/JYbGwc7rrrHtx5590WtXV3Zx07dsLvv/9mNJad7ZyKqT/99L3JROQ+ffo5bM/k5LYYMmSYyVbI69alY926dERHx6BXr97o1KkzOnRIRevWiXZJSMvJyYVWqxWNp6R0sHltTxIcHIzo6Bjk5uYYjTvr546IiFouJhe6OVNPlEwlCJrL1BtypvZoDq6+IrNOUy/gGmPqcW+uj527UCgUAMxPGrNHGlhJRQ3+8/0e5JfYN3FUyuxCmwmCgB0ZFViysxjqWgv6ZduAuYVERERERETNl1qtxsyZjyE9fY1R8gG5By8vL9x882jMnfuFTd1IyHW6deveaBLQ1bp27YYnnngK77zzltH4L78sajARKC8vD3q9cYvh8eMnWhWrOYkP3303X9TS+IYbBuCll16xas+YmFir5k2fPsvs6kQ33zwGv/662CjR7sCBfaitrbXpvXJ3JQgC3njjNezc+bfReGJiEt5//2OPSFi+fFncqjswMAhyucIF0bgXR59TbCEIgqhiZ3JyW8yZ897/PucwT/v2KXj22eeMkoK3b9+GU6cy0batuE14dvYl0VhTbZQb0tjvh1qtRklJidHYuHETrGppKpFIPOJ30RzBweKKjSUlxdDptA79nV2xYpno5w0A2rRJRpcuXR22LwD83/+9gIyMk7h0Kcvk7bm5OVixYhlWrFgGAFCpvJCcnIzU1M7o1q07unbthtDQMIv3LSgwfSGQqe9BcxccHCJKLuSFUkRE5GjuUSeYnMaaJ/rNiS33v6U/duayV6U/ACbbGjiSIAj4ds1xuycWku0MgoCv/7iMH7YUOi2xEGDl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Isxms0aOvFMTJ06wiX/wwdsKCgrStdcOdWnc3bt36fPP/6t7731QERERhsd//HG2goODdemlPe1uSV6eb76xtw42N8Q2blyvrVs3q3//QQoNDXN6nlmzZqigoKDceXxRUVGRlixZqClTPtDevXsMjwcEBGjSpOdVq1btSs+tsv344xw9//xTGjToWg0b9k/VqVPHpXGOHTumf//7AeXn2xZJBwQEqkePXuWef/75F+qmm241bBO8fv1a3XnnrXr88afVpo3r25+fm5c3HD16RF988Ylmzpxh+HdQki66qKvuuONuL2QGAKipKC6sQgICAvT+++9rxIgRhqLBAwcO6P333y93jPr162vKlCl27x70pNTUVG3bts3pc+zdNXVaq1bO3V328MMP68SJE/rhB9s2+JmZmfr000/LPT8gIECTJ09WmzZtnJq3xqnS7f+cri6EG+Xku+eXJzKIprwAAAAAAADeFBgYqPz8fH366cc6cSJNY8feZ7cwRpLmzJmlyZNfV16e7Q4zXbpcYOgWeLZDhw7qrbde0/vvv60+ffrq0kt7qn37jvLzK/vaUE5OtqZN+0gzZtjeDB8WFq5LLim9aC0hoaHuvfd+vfLKCzbxuXN/0J49u3X33feoU6eydwvKzs7WkiUL9e23Xys+Pl7PP/9qmcdXRU2aNFNoaKhycnLOxD799GPFx9fS5Zf3VmBgULljHDt2VA8/PN7QnW/UqNHq33+Q23P2ZQ888IhOnEjTsmVLbeJbt27WTTcNU79+AzV06HA1adK03LFyc3O1dOkizZjxlbZs2eSplD2iMtaUirriiiu1atUKm2LQoqIivfbai1q58i+NGHGHWrYsv8g2PT1dixf/rt9++1WrV/+9bew999xv99idO3fom2++UJ06ddW7d1/16NFTSUmtHZjjhN5++3UtWbLIJt6wYaJatTJ+Bpaenq633npNH330gS6/vI969Oipzp3Pl7+/f5nzFBQU6JtvvtCHH75rEzebzbriiivLzdMbioqKdPjwIe3YsV1r1qzSkiW/Ky3Nfre+4OAQPfPMi+rc+fxKztJ78vPz9c03X2jGjC/VsWMnXXnlVerW7TLDttf25OXl6Zdf5mrKlA+Unp5uePzmm29VXFycQ3ncccfdSk09rh9/nG0TT0lJ1p13jtBFF3XVP/5xs9q37+hQ8X9JSYm2b9+q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2DBRr7zylh56aEKF1sDBg6/TV1/N1LXXDlVwcHCF8woICFCPHj31yitvafLkD1wuLKwIs9msdu066J577tO3387Rgw8+SmEhAABeQufCKuDSSy/VTz/Ztl//+eef1a+f462xT59jb2xP6t69uyG2YMECPf74405diFm8eLFyc3NtYp07d1ZoaGiFc3TEokWLDDFPdnys0ipQ01fk5L7AZRUX+prV+09p1trs8g90o86JQYoJ/ftioMkkxYSaVS/KougQvyrX8REAAAAAAABS79591atXby1cuEA//zxXGzduUHZ2VpnnmM1mNWvWQl27dtO11w5VdHRMJWXrWXXq1NGzz76snTu365tvvtSKFX8pNfV4meeEhoaqU6cu6tGjl3r2vEKBgYEOzRUQEKB7771fQ4YM0+efT9eyZUt1/PixUo8PCQlVly4X6Prrh6tjx05OfV/e1Ldvf3Xr1kPLly/TqlUrtHHjBu3fv7fc7VFNJpOSklqrd+8r1b//IIWGOtdZ8PTze8MN/9SCBfO0efNG7d27RxkZGcrLyzXc+F/Z2rZtr48//lxffvmZvv/+u1K3DZWkxo2baPDgIRo06BqaE+jv7o+33nqHhg37p3744TstXrxQW7duLvdnajab1bx5S3XpcoEuuqirOnQ4z6lr2oGBgXrooQnq27e/PvlkmlauXF7qVrT16tXXddddr2uvvb7G/sxMJpMsFov8/QMUFhamqKhoxcfHKyEhUY0aNVabNu3UqFFjPleQdOWV/XTllf2Um5ujVatWav36tdqwYZ127drh8FoVFxevCy+8WFdccaU6depS4aLu06KjY/Svfz2sO+4Yrd9/n6+lSxdp/fq1drett6du3Xpq2bKVunS5QL169VZERMWKgstjNpvl7++vwMBARUZGKSYmVnXr1lPDholq0SJJbdu2c/rfEwAA4BmmkvLeFcLrsrKydMkllyg/P/9MzGKxaOHChYqPj3dojPz8fF166aWGrX1//fVXNWzY0J3pGgwbNkzr1q2zib355pvq27evw2OMGjXKUOD3zDPPaOjQoe5IsUwFBQXq27evDh48aBN/8MEHdfvtt3t8fk9KS8tWcbF7l4Cht45RZmaGw8eHR0RpxrR3JElTvl+mP9btdvjc6IgQvXrfdXYfe2/uFm1LLv0iz7kSa4XpX9e2c/h4Z6TnFGnyb+kq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b9bu3buVlpamgoIChYSEqEGDBmrdurXq1avn7RQBeFFBQYE2btyoPXv2KCMjQ1arVWFhYUpISFDbtm0VFxfn7RSBaqO4uFg7duzQnj17dOzYMeXl5clisSg0NFT169dXYmKiEhMTZTKZvJ3qGawRgGcVFxdr9+7d2rlzpzIyMpSdnS1JioiIUFRUlJKSknxuXTgb7zUA35abm6sNGzZo3759yszMVHFxscLDw5WYmKj27dsrIiLC2ymWiTUG8IzqcL1TYo0AUD6uaQAAUDaKCwEAcMGhQ4e0ZMkSLV++XCtWrNDx48fLPN7f319t27bVkCFDNGDAAAUFBVVSpuVLSUnR1KlTNWfOHJ08ebLU41q0aKHhw4dr6NCh8vf3r8QMgertwQcf1A8//GD3se3bt1dyNvZzmDJlin799Vfl5ubaPcZkMqlDhw668cYbNWDAAJ8tbAB83apVq/T1119r4cKFZf6bLEnh4eHq0KGDunfvrquuukq1a9eupCxtsUYAnvXnn3/qm2++0e+//17q39hpERER6tOnj4YOHaqOHTtWToLl4L0GULbc3Fxt3bpVmzZt0ubNm7V582bt2bNHxcXFNsdNnz5dF154odvnX716taZOnapFixapsLDQ7jFms1kXXnihRowYoR49erg9h4pgjUF1V9lrRHW63imxRqBm8PZribL4+jVPiWsaAAA4ylRSUlLi7SQAAKgqpk2bpp9//lnr16+Xq/+ExsTE6IknntBVV13l5uycN2XKFL355pvKz893+JzGjRvrtddeU+vWrT2YGVAzzJ8/X2PGjCn1cW9eaLNarXr11Vf13//+V0VFRQ6f16FDB7366qtKSEjwYHZA9bJ//35NmjRJf/zxh0vn33vvvRo9erSbsyobawTgWcnJyXryySddXheuuuoqPfbYY17tsMF7DcAoJSVFCxYsKPPDf3vcXRCQm5urSZMmadasWU6d16NHD73wwguKiYlxWy6uYo1BdeStNaK6Xe+UWCNQffnKa4ny+PI1T4lrGgAAOIviQgAAnNCyZUu3jXXdddfpmWeekZ+fn9vGdFRxcbEmTJig7777zqXzAwMD9e6776pbt25uzgyoOU6cOKEBAwYoLS2t1GO8daEtPz9fo0eP1tKlS106PyoqStOmTeOCPOCAuXPn6rHHHiu3I1lZKru4kDUC8KwNGzZo5MiRyszMrNA4derU0fTp05WYmOimzBzDew2gdB9//LGef/55p89zZ0FARkaGRowYoa1bt7p0fv369fXJJ5+ofv36bsnHWawxqM68tUZUl+udEmsEqj9feC1RHl++5ilxTQMAAFewLTIAAG5Qq1YtdenSRS1btlRMTIzCw8OVnZ2tvXv3aunSpXbfLH/77bcqKSlx6WJARb388st2L7JFRERowIABatasmSIjI3Xo0CEtX75cf/zxh82dy/n5+RozZoy+/PJLtWrVqjJTB6qNSZMmlXmRzZseeughuxfY4uPjNXDgQDVq1EhBQUE6dOiQFi1apLVr19ocl5GRoZEjR2rmzJmqU6dOZaUNVDmfffaZnn76abvdQZKSktS1a1fVrVtXsbGxKi4uVmZmpvbt26ft27dr7dq1Kigo8ELWrBGAJyUnJ+u2225TVlaW4bHIyEj16tVLbdq0UUxMjEpKSnTixAlt2rRJCxYsUHZ2ts3xR44c0c0336zZs2crIiKisr4F3msAPqywsFB33XWX3cLChIQE9e/fXwkJCTKbzUpJSdG8efO0Y8cOm+MOHjyo2267Td9++63CwsIqK/UzWGOAylPVrndKrBGAL/Dla54S1zQAAHAFnQsBAHDC2Xfy1q1bV1dffbUGDRqkpk2blnnesmXL9PjjjyslJcXw2EsvvaSrr77a7bmWZunSpRo5cqQhft1112nChAkKDQ01PLZt2zaNHTtWycnJNvFGjRpp9uzZCggI8Fi+QHU0d+5c/etf/zrzdceOHbVu3TrDcd64i/frr7/W448/bojfddddGjNmjN2/97/++kvjx49Xenq6TfyCCy7QJ5984rFcgarsp59+0n333WcoLOzTp48eeOCBcjuN5eXladmyZfr222/VsWNHjRo1ypPpnsEaAXjWqFGjtGjRIpuYyWTSqFGjdPfddys4ONjuebm5uZo8ebKmTp1qeGzYsGF66qmnPJLvuXivAZSttG5DJpNJjRo1Ups2bbRr1y5t27bN5nF3dRt6/fXX9f7779vELBaLHn30UQ0fPtxup7Eff/xRjz76qPLy8mzigwcP1osvvljhnJzBGoPqzltrRHW43imxRqBm8PZrifL48jVPiWsaAAC4iuJCAACc0LJlS7Vq1UpjxozR5Zdf7tQWH5mZmbrpppsMb+zj4uK0YMECBQUFuTtdA6vVqv79+2vfvn028RtvvNHum+qznThxQkOGDNHBgwdt4v/617905513ujtVoNo6fvy4BgwYoIyMDElSQECAZs2apX79+hmOrewLbZmZmerdu/eZ3E57+OGHddttt5V57v79+3XdddcZOi29+uqrGjBggLtTBaq0/fv365prrlFOTs6ZmMVi0QsvvKCBAwc6PV5JSYlMJpM7U7SLNQLwrN27d9t9PfDII49oxIgRDo3x4Ycf6tVXX7WJ+fv7a9myZR7vXsh7DaB8H3/8sV544QUlJiaqbdu2atu2rdq0aaPWrVuf6QL473//WzNnzrQ5zx0FAfv371f//v1VWFhoE3/zzTfVt2/fMs9ds2aNbr75ZsO5X3zxhTp16lShvBzFGoOawFtrRFW/3imxRqDm8OZrifL48jVPiWsaAABUhOPvEAAAgN555x3NnDlTvXv3dupCm/T39hvvvfee4aJaamqq3Tb8njB37lzDRbYmTZrooYceKvfcmJgYPffcc4bihalTpyo3N9edaQLV2uOPP25zEWvs2LHldgOoLJ9++qnhAtuFF16oW2+9tdxzExMTNWHCBEP83XfftbvlK1CTTZw40aawUPp7+y5XCgslVUphocQaAXja/PnzDbHWrVvrlltucXiM22+/3ab7kPT3NqjndkP0BN5rAOUbNGiQVq1apV9++UWvvvqqbr31Vl1wwQWVsr3whx9+aCgOvPbaa8stLJSkTp066a677jLE33nnHbflVx7WGNQE3lojqvr1Tok1AjWHN19LlMeXr3lKXNMAAKAiKC4EAMAJV1xxRYU+wK9Xr56GDBliiP/+++8VScthX3zxhSE2btw4BQYGOnT+RRddpG7dutnEMjIy9OOPP7olP6C6++6772z+3tu0aWN3yx5vKC4u1ldffWWIP/DAAw6ve9dcc43houHu3bv1119/uSVHoDpYtGiRli1bZhMbMGCA3Tv5fQlrBOB5e/bsMcT69evn1PsPPz8/u50z9u7dW6HcHMF7DaB8MTExXvnwPzs7W7Nnz7aJWSwWjR8/3uEx7rjjDkVGRtrEli5dathK1FNYY1ATeGuNqOrXOyXWCNQc3lonyuPL1zwlrmkAAFBRFBcCAFDJevToYYgdOHDA4/OmpKRo7dq1NrH4+HhdccUVTo1zww03GGJz5sypUG5ATXDkyBE999xzZ7729/fX888/L4vF4sWs/mflypU6cuSITaxNmzZq3769U+MMGzbMEGONAP7nP//5j83X/v7+euSRR7yUjeNYIwDPS01NNcRc6fTRpEkTh8Z2J95rAL5t3rx5ys/Pt4n16tVLtWvXdniMwMBADR482BA/t2jRE1hjAN/nreudEmsE4G2+fs1T4poGAAAVRXEhAACVrF69eoZYWlqax+ddvHixIdarVy/5+/s7Nc5ll12m4OBgm9iqVasM2zsCsDVhwgRlZWWd+fquu+4ybFvoTfbWCEe2SHPkHHtjAzXRvn37tHLlSpvYZZddpri4OC9l5DjWCMDz7L0ud/a1uiQFBAQYYo527XEV7zUA31bV/x1njQF8n7eud0qsEYC3+fo1T6nqvxYCAMDbKC4EAKCS5ebmGmKe/rBPklavXm2IdenSxelxLBaLOnToYBMrLCzU+vXrXc4NqO6++OILLV269MzXSUlJuvPOO72YkZG9NaJz585Oj1O7dm0lJCTYxI4dO6b9+/e7nBtQXfz000+GmL3tS30RawTgeQ0aNDDEzu2u4Qh75zRs2NClnBzFew3At61atcoQc+VvtG3btobrFxs3bjR0RXQ31hjA93nreqfEGgF4U1W45ilxTQMAgIqiuBAAgEpmb0uQ+Ph4j8+7adMmQ+y8885zaaxOnTo5ND4AKTk5WS+99NKZry0Wi55//nmXOhF5SlFRkbZt22YT8/f3V7t27Vwaz94asXnzZpfGAqqTZcuWGWIdO3as/EScxBoBVI6LL77YEFuyZInT4yxatMihsd2J9xqA7zp27JiOHz9uE6tXr55TWyKfFhAQYPj332q1Gl4nuBtrDOD7vHW9U2KNALylKlzzlLimAQCAO1i8nQAAADXNzz//bIi1b9/eo3NarVYlJyfbxPz9/VW/fn2XxrPX+WTv3r0ujQVUZyUlJXr00Udt7uC//fbb1bp1ay9mZXTo0CHl5eXZxOrUqWN3W0VH2Fsj9uzZ49JYQHVRVFRk6HgRFRWlOnXqnPk6OztbP/zwgxYvXqxt27YpLS1NZrNZ0dHRiouLU6dOndS1a1ddcsklslgq7+08awRQOS677DLVr19fBw8ePBP79ddftWHDBoffL6xZs0YLFiywiV188cVq1qyZW3M9G+81AN9m79/YinQzbdiwoaET4p49ewzdvtyFNQaoGrxxvVNijQC8papc85S4pgEAgDvQuRAAgEp09OhRLVy40BC/4oorPDrv4cOHVVRUZBOrXbu2/PxceylQr149Q+zcC3kApP/+979asWLFma+bN2+uMWPGeDEj+1JSUgwxe3/njmKNAIz27dtn2DKwUaNGZ/7/m2++UY8ePTRp0iT9/vvvOnz4sAoKCpSXl6dDhw5pw4YN+vjjjzVq1Cj17dtXM2fOVElJSaXkzhoBVA6z2axJkybJZDKdiRUXF2v06NHasGFDueevXr1ao0ePtlkbgoOD9cQTT3gk39N4rwH4tqr+7zhrDOD7vHW9U2KNALylqlzzlKr+ayEAAHwBxYUAAFSil156SYWFhTaxDh06KCkpyaPznrsFkiTVrVvX5fHsnZuamuryeEB1tHfvXr3++utnvjabzXruuedcvivWk+z9/bJGAO5l72J2WFiYCgoKdNddd+mxxx5Tdna2Q2MlJyfr3//+t+655x6bLgGewhoBVJ7u3bvr8ccftykwPH78uIYPH677779fCxYs0NGjR1VQUKD8/HwdPnxYv/76q+69917deOONSk9PP3NecHCw3nnnHTVp0sSjOfNeA/Bt7v53/Oyuy2XN4S6sMYDv89b1Tok1AvCGqnTNU+KaBgAA7sC2yAAAVJKff/5Zc+bMMcTvv/9+j8998uRJQywkJMTl8eydm5GR4fJ4QHVTVFSkf//73zp16tSZ2K233lopWwK5gjUC8Lxjx44ZYqGhoXrooYf0+++/Gx6LjY1VVFSUsrOzlZqaaujGIf29XerNN9+sTz/9VEFBQR7JW2KNACrbP//5TzVu3FhPPPHEmQ4YVqtVc+bMsft+wp4uXbroqaeeUtOmTT2ZqiTWCMDXuftvNDQ01BDz5N8oawzg2/6vvfsMj6rc/j7+S0JCSCOhQ+i9dylKORQrXVGaIHKOCIoej0oTLNgQRFERwaOI4AEFlCJIDyBFEBBBeugQkBogpJD+vOAhfzZ7J5mWzAS+n+viBWvv+94rM5l7Mjsr63bn/U6JNQLIbXntnqfEOgEAgCtQXAgAQC44evSoRo0aZYo/+uijatq0aY5fPyEhwRRzpgjBaqzVNYC71bRp07Rz586M/1eoUEEvvvii+xLKhlXnM2fWiPz585tirBG421ndzP71118NN+RDQkL0zDPPqFOnToa/hL927ZrWrFmjL774QsePHzfMsXv3bo0ZM0Zjx47NsdxZI4Dcd++992r58uVauXKl5s+frw0bNtg07sEHH1S/fv3UuHHjHM7w//BZA/Bsef19nDUG8Fzuvt8psUYAuS2v3fOU8v7PQgAAeAK2RQYAIIdFR0dr0KBBpq0Oy5cvb3kDLickJSWZYs5sU2D1Afr27U+Au1VkZKQ+++yzjP97e3vr/ffft3zdeAqr168za4TVDTrWCNztrN6Lby0srFq1qpYsWaKBAweattgJDg5Wly5dtHjxYj300EOmeebPn6+NGze6Pun/jzUCcI9NmzZpwYIF+v33320es3LlSo0fP14///yzUlJScjC7/8NnDcCzWb1+nPlsktvv46wxgGfyhPudEmsEkJvy4j1PiXsaAAC4AsWFAADkoPj4eA0ePFgnTpwwxAMCAvTZZ58pKCjITZlJXl5ebhkL3MmSk5M1YsQIww2lvn37qmHDhm7MyjGsEYBrpaenZ3qsUKFCmj59uooXL57lHH5+fpo4caIaNWpkOjZ16lSnc7QHawSQc6KiotS3b18NHDhQ69evN/3SPDQ0VBUqVFD58uUVGhpqOJaenq5du3Zp6NCheuKJJ3T48OFczPz/sEYAdy5PeI2yxgDu5cn3OyXWCCAn3En3PCXWCQAA7MW2yAAA5JCkpCQ9//zzhm0CpBuFAZ9//rmqVauWa7n4+vqaYomJiQ7Pd2unpayuAdxtpk6dqr1792b8v2zZsvrPf/7jxoxswxoB5LysXgOvvvqqihQpYtM83t7eeuedd9ShQwdDweK2bdt09OhRVaxY0elcb8caAeSeAwcO6Omnn1Z0dLQhXqZMGfXv319t27ZVqVKlDMdOnz6tNWvW6Ntvv1VUVFRGfO/everVq5emTZumunXr5ljOrBGAZ8uXz/wrgLz0GmWNATyLJ93vlFgjgNySV+95SqwTAAC4Ap0LAQDIAcnJyXrxxRf122+/GeK+vr765JNPdN999+VqPgUKFDDFrD4E28rqw7fVNYC7yd69ew2dw7y8vPTee+/lidcGawSQ8wICAizjoaGh6tSpk11zVapUyfJnCXu2TrUHawSQO65cuaKBAweaCgu7du2qJUuW6MknnzQVFkpSeHi4+vbtqyVLlqhr166GYzExMRo8eLBpTldijQA8m9XPIM68Rq3G5uRrlDUG8Byedr9TYo0AckNevucpsU4AAOAKFBcCAOBiKSkpeumll7R27VpD3MfHRxMmTFC7du1yPafbt0uTbmxh4iirsVbXAO4WSUlJGjFihFJSUjJivXv3VpMmTdyYle1cvUbExcXZdA3gbpLZa6BJkyby8/Oze74WLVqYYn/88Yfd89iCNQLIHR999JHOnTtniLVv315jx46Vv79/tuMLFCigsWPHmj5vXLx4UR9++KFLc70VnzUAz5bXX6N5PX/gTuGJ9zsl1gggp+X1e54S9zQAAHAFigsBAHChlJQUvfzyy1q9erUh7uPjo/Hjx+uhhx5yS15WWy3+/fffDs9nNdbW7RyBO9GMGTMUGRmZ8f/w8HC98sorbszIPq5eI86ePWvTNYC7SdGiRS3jNWvWdGi+GjVqmGLnz593aK7ssEYAOS86OloLFy40xPLnz6/XX39d3t62377z9vbW66+/bipaXrx4cY51L+SzBuDZChcubIrlpfdx1hjA/Tz1fqfEGgHktLx+z1PingYAAK6Qz90JAABwp0hNTdUrr7yiFStWGOLe3t4aO3asOnbs6KbMpJIlS8rHx0epqakZsXPnziktLc2uX1bedObMGVOsdOnSTuUI5GW3F/Rcv35dvXv3dnreLl26mGITJ05UxYoVnZ77VlavX6vXua1Onz5t0zWAu0mZMmUs447+dXtYWJgpduXKFYfmyg5rBJDzNm/erKSkJEOsefPmKlGihN1zlSxZUs2bN9evv/6aEUtOTtbmzZvVoUMHp3O1uh6fNQDPldffx1ljAPfy5PudEmsEkNPy+j1PKe//LAQAgCeguBAAABdITU3Vq6++quXLlxviN2+0WX1Yzk2+vr4qU6aMjh8/nhFLTk7W6dOnMy12yMrJkydNsZz44A/kVZcuXdKlS5ecnufAgQOmWGJiotPz3q5UqVLy9/fX9evXM2Jnz55VUlKSQ9u1njp1yhRjjcDdrkSJEgoICDBtvePIa0y60dHsdjmxPkisEUBuOHjwoClWv359h+erX7++objw5jVyoriQzxqAZ7N6/Vi9zmyV2+/jrDGA+3j6/U6JNQLIbXntnqfEPQ0AAFyBbZEBAHBSamqqhg4dqqVLlxriXl5eeu+999S1a1f3JHabWrVqmWI7d+50aK4dO3bYND+AvMHHx0fVq1c3xJKTk7Vnzx6H5mONAMy8vb1Vu3ZtU/zatWsOzRcTE2OKWXUzdAXWCCDnWXUeLVSokMPzWY3Nqe6mEp81AE9WvHhxFS1a1BA7c+aMzp07Z/dcycnJ2r17tyFm9XOCq7HGALkvr9zvlFgjAGSNexoAADiP4kIAAJyQmpqqYcOG6ZdffjHEvby89M477+jRRx91U2ZmjRs3NsW2b99u9zwpKSnatWuXIebr6+tUZxUA7ueqNeLChQumv/QvWrSoypcv72hqwB2jSZMmplhUVJRDc1mNy6niQok1AshpVh0zbu2sYS+rsf7+/g7Plx0+awCezeo1+scff9g9z969e03rS506dXJ0fZFYY4Dclpfud0qsEQCyxz0NAACcQ3EhAAAOSktL0/Dhw7VkyRJD3MvLS2+//bYef/xxN2VmrWXLlqZYRESEUlJS7Jpn/fr1pi0dGzVqpMDAQKfyA/KyUaNG6eDBg079s2J1Xo0aNXLka2jVqpUptmLFCrvnuX27pMzmBu5GrVu3NsWs/uLdFn/++acpVrNmTYfmsgVrBJCzrDoNWm23ZSursYULF3Z4vuzwWQPwbFbvtVbvydlx1/s4awyQe/La/U6JNQLISXfCPU+JexoAADiL4kIAAByQlpamkSNHavHixYa4l5eXxowZoyeeeMJNmWWuTJkypr+0vXDhglavXm3XPD/88IMp1rFjR2dSA+AB7rnnHhUvXtwQ27Nnj2nbs+zMmTPHFOvUqZNTuQF3irp166pixYqG2N69e3X48GG75klKSjJtTyZJzZs3dyq/rLBGADnLqtPFhg0blJ6ebvdc6enpWr9+vU3XcBU+awCe7f7771f+/PkNsYiICF24cMHmORITE7VgwQJTPDfex1ljgNyRF+93SqwRALLHPQ0AAJxDcSEAAHZKT0/XqFGjtHDhQkPcy8tLb775pnr06OGexGzQq1cvU+zzzz9XUlKSTeO3bt1q+kVlaGioHnnkEZfkB8B9vL29LX9R8PHHH9s8x8KFC3Xo0CFDrEKFCmratKnT+QF3iieffNIU+/TTT+2aY9asWbp48aIhVrJkyRzdros1AshZ9957r3x8fAyx48ePa9myZXbPtWjRItNWXfny5dO9997rVI7Z4bMG4LmCg4PVoUMHQywlJUWffPKJzXN8/fXXunLliiF23333qWzZsi7IMHusMUDOysv3OyXWCABZ454GAADOobgQAAA7pKen64033tD8+fMNcS8vL73xxhuWN7JcadKkSapWrZrh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YrMGDRpo3rx5Ln98Q0JCNH36dI0YMUIhISE2jQkPD9dnn32m0aNHu6zQ7KYyZcro22+/1cyZM9WpUycVLlzYdI63t7eqVKmigQMHatWqVXr11Vczng+rroeOFBdKNzp8LliwQK+//rrCw8MdmkO6UZTWsmVLffzxx/r0009tHhcSEqJ58+bp/vvvl5eXl8PXd6VXX31VP/zwg5o3b+7wcx8aGqqHH35Y9957r4uzy56nrOue+NxKN15/8+fPV//+/e1a4/z8/NStWzctXrxYQ4cOdWp9hGcLDAzURx99pIkTJ6pixYpOzVWqVCkNGDBAX331lYuyAwAAAAAAnoZtkQEAAADASSdPnlR0dLQhFhQUpMqVK7spo7zh0qVLmj17tuWxcuXKqXPnzi693vbt2/XDDz9oy5YtunDhgul40aJF1bRpUz3yyCNq06aNoejmyJEj2rx5s+H8SpUq2dWdzUp0dLSWLVumX3/9Vbt27dKVK1cszytatKiqVq2q5s2bq3Xr1i7rxPb999/rrbfeMsRq1KihhQsXumT+3HT9+nWtWLFC69ev1/79+3X27Fldv35d+fPnV4kSJVSrVi21bdtW7du3d3nRTFRUlFatWqWNGzfqxIkTio6OVmJiooKCglSuXDk1aNBADz74oBo2bOjS61qJi4vT0qVLMx6HCxcuKDk5WYGBgSpVqpRq1qyptm3bqk2bNg51bXTUxYsXdfHixYxcSpYsqQIFClie+9133+ndd981xLp376733nvPqRxSU1P122+/KSIiQjt27NCRI0eUkpJieW6RIkVUsWJF1ahRQ82aNVOTJk2c7uZ56tQpLVu2THv27FFkZKSuXr2quLg4JSYmms7Nya1zb3X27FlFRERo//79ioyM1Pnz5xUXF6f4+Hh5eXkpICBAYWFhCg8PV7ly5VSzZk3Vrl1b1apVc3lRqiM8ZV33xOdWki5fvqzly5dry5YtOnToUMa66O3trZCQEIWHh6t69eq655571KZNG4eLeGGb2NhYHT58OEfm9vPzU82aNR0au3nzZq1cuVK7du1SZGSkkpOTLc8LCQlRmTJlVLlyZTVs2FCNGzdWpUqVPKq4FgAAAAAAuB7FhQAAAACAu050dLQuX76s+Ph4FShQQMWKFbO541tOunLlii5evKiEhAT5+voqICBAhQoVyrEtih999FHt3bvXEHvzzTfVu3fvHLkeYIthw4Zp0aJFhtgbb7zhsq2kb0pNTdX58+d19epVJSUlyd/fX4GBgSpYsKDHbwsOM09d14G8JDk5WVevXtXVq1cVHx8vPz8/BQQEKCQkRAULFnR3egAAAAAAwA0oLgQAAAAA4C60f/9+de3a1RArUKCANm7cSGEV3Ob69etq3bq1qYvnvHnzVLduXfckBQAAAAAAAAB3KffvXwIAAAAAAHLdDz/8YIp16NCBwkK41c8//2wqLAwMDFT16tXdkxAAAAAAAAAA3MUoLgQAAAAA4C5z6dIlLVy40BR39bazgD3Onj2rjz76yBTv1KmT/Pz83JARAAAAAAAAANzdKC4EAAAAAOAu88UXX+j69euGWMOGDVWzZk03ZYQ7wYEDBxQZGenQ2HPnzmnw4MGmroWS1KtXLyczAwAAAAAAAAA4guJCAAAAAADuIqtWrdLs2bNN8cGDB7shG9xJDh48qM6dO2vIkCH69ddflZKSku2YlJQUzZ8/X927d9e+fftMxx955BG2RAYAAAAAAAAAN8nn7gQAAAAAAIDrnTx5UtHR0ZKkxMRERUVFac2aNVq9erXp3IYNG6pVq1a5nSLuQOnp6Vq1apVWrVql0NBQNWnSRLVr11a5cuVUsGBB+fr66sqVK7p06ZJ27Nih3377TefPn7ecq1ixYnrzzTdz+SsAAAAAAAAAANxEcSEAAAAAAHegL774QgsWLMj2PF9fX40ZMyYXMsLd5sqVK1q5cqVWrlxp99hChQpp8uTJCg0NdX1iAAAAAAAAAACbsC0yAAAAAAB3sZEjR6pq1aruTgPIULlyZc2dO1d169Z1dyoAAAAAAAAAcFejuBAAAAAAgLuQv7+/3njjDfXp08fdqeAOUbduXXXs2FGBgYEOjS9TpozeffddLVy4UGXKlHFxdgAAAAAAAAAAe7EtMgAAAAAAdwEfHx8FBwerQoUKuu+++/TEE0+oePHi7k4Ld5AKFSroo48+UlJSknbt2qU///xTBw4cUFRUlM6ePau4uDhdv35dPj4+CgkJUVhYmEqUKKHGjRurSZMmqlu3rnx8fNz9ZQAAAAAAAAAA/j+v9PT0dHcnAQAAAAAAAAAAAAAAAAAAPAfbIgMAAAAAAAAAAAAAAAAAAAOKCwEAAAAAAAAAAAAAAAAAgAHFhQAAAAAAAAAAAAAAAAAAwIDiQgAAAAAAAAAAAAAAAAAAYEBxIQAAAAAAAAAAAAAAAAAAMKC4EAAAAAAAAAAAAAAAAAAAGFBcCAAAAAAAAAAAAAAAAAAADCguBAAAAAAAAAAAAAAAAAAABhQXAgAAAAAAAAAAAAAAAAAAA4oLAQAAAAAAAAAAAAAAAACAAcWFAAAAAAAAAAAAAAAAAADAgOJCAAAAAAAAAAAAAAAAAABgQHEhAAAAAAAAAAAAAAAAAAAwoLgQAAAAAAAAAAAAAAAAAAAYUFwIAAAAAAAAAAAAAAAAAAAMKC4EAAAAAAAAAAAAAAAAAAAGFBcCAAAAAAAAAAAAAAAAAAADigsBAAAAAAAAAAAAAAAAAIABxYUAAAAAAAAAAAAAAAAAAMCA4kIAAAAAAAAAAAAAAAAAAGBAcSEAAAAAAAAAAAAAAAAAADCguBAAAAAAAAAAAAAAAAAAABhQXAgAAAAAAAAAAAAAAAAAAAwoLgQAAAAAAAAAAAAAAAAAAAYUFwIAAAAAAAAAAAAAAAAAAAOKCwEAAAAAAAAAAAAAAAAAgAHFhQAAAAAAAAAAAAAAAAAAwIDiQgAAAAAAAAAAAAAAAAAAYEBxIQAAAAAAAAAAAAAAAAAAMKC4EAAAAAAAAAAAAAAAAAAAGFBcCAAAAAAAAAAAAAAAAAAADP4foJn9Ah/ajU8AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "import math\n", + "\n", + "sns.set_context(\"paper\")\n", + "\n", + "def plot_all_datasets(use_all_sweeps=True, custom_legend=False):\n", + " num_cols = 1\n", + " num_rows = 1\n", + " unit_row = 4\n", + " unit_col = 10\n", + " sns.set(rc={'figure.figsize':(num_cols * unit_col, num_rows * unit_row)})\n", + " sns.set(font_scale=1.1)\n", + "\n", + " fig, ax = plt.subplots(figsize=(num_cols * unit_col, num_rows * unit_row), dpi=300)\n", + "\n", + " df = {}\n", + "\n", + " sorted_keys = sorted(sweeps.keys(), key=lambda k: int(k.split(\"_\")[-1]), reverse=True)\n", + " for sweep_name in sorted_keys:\n", + " delta = 5\n", + " radius = int(sweep_name.split(\"_\")[-1])\n", + " legend_label = f\"r={radius:3}/255\" if radius > 0 else \"clean\" \n", + "\n", + " metric = f\"val_certacc_{radius}\" if radius > 0 else \"val_accuracy\"\n", + "\n", + " if use_all_sweeps:\n", + " histories_radius = histories\n", + " else: \n", + " histories_radius = histories[histories[\"sweep\"] == sweep_name]\n", + " pareto_front = histories_radius.set_index(\"epsilon\").sort_values(\"epsilon\")\n", + " pareto_front = pareto_front[metric].expanding().max()\n", + "\n", + " df[sweep_name] = pd.DataFrame.from_dict({\n", + " \"epsilon\": pareto_front.index,\n", + " \"metric\": pareto_front.values,\n", + " \"Robustness radius\": [legend_label] * len(pareto_front),\n", + " \"Algorithm\": \"[Lipschitz] Clipless DP-SGD\",\n", + " })\n", + "\n", + " pareto_front = opacus_hist.set_index(\"epsilon\").sort_values(\"epsilon\")\n", + " pareto_front = pareto_front['val_accuracy'].expanding().max()\n", + " df['opacus_resnet'] = pd.DataFrame.from_dict({\n", + " \"epsilon\": pareto_front.index,\n", + " \"metric\": pareto_front.values,\n", + " \"Robustness radius\": [\"clean\"] * len(opacus_hist),\n", + " \"Algorithm\": \"[Unconstrained] DP-SGD\",\n", + " }) \n", + " \n", + " # stack of dataframes\n", + " df = pd.concat(df.values(), ignore_index=True, axis=0)\n", + " # palette = sns.color_palette(\"flare\", len(sorted_keys))\n", + " # palette = sns.color_palette(\"mako\", len(sorted_keys))[::-1]\n", + " palette = sns.dark_palette(\"#69d\", len(sorted_keys), reverse=True)\n", + " sns.lineplot(\n", + " data=df,\n", + " x='epsilon', y='metric',\n", + " hue='Robustness radius',\n", + " style='Algorithm',\n", + " palette=palette,\n", + " lw=3,\n", + " errorbar=None,\n", + " zorder=2,\n", + " ax=ax)\n", + "\n", + " ticks = [2.0, 4.0, 6.0, 8.0, 10., 12.0, 14.0, 16.0, 20.0]\n", + " labels = [str(v) for v in ticks]\n", + " ax.set_xticks(ticks, labels=labels)\n", + " ax.set(xlim=(0.15, 15.0))\n", + "\n", + " yticks = [0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6]\n", + " ylabels = list(map(lambda v: f\"{v:.2f}\", yticks))\n", + " ax.set_yticks(yticks, labels=ylabels)\n", + " ax.set(ylim=(0.01, 0.56))\n", + "\n", + " ax.set_xlabel(f\"Privacy budget $\\epsilon$ at $\\delta=1e^{{{-delta}}}$\")\n", + " ax.set_ylabel(\"Validation accuracy\") \n", + "\n", + " if custom_legend:\n", + " handles, labels = ax.get_legend_handles_labels()\n", + "\n", + " # Create a custom legend for the \"style\" part\n", + " unique_styles = ['-', '--'] # Custom marker styles\n", + " style_handles = [plt.Line2D([0], [0], linestyle=style, markersize=5,\n", + " # marker='o',\n", + " color='black') for style in unique_styles]\n", + " style_labels = df['Algorithm'].unique()\n", + " style_legend = plt.legend(style_handles, style_labels, title=\"Algorithm\", loc=\"lower right\", bbox_to_anchor=(1.0, 0.0))\n", + "\n", + " del labels[0] # title of \"Style\" legend\n", + " del handles[0] # handle of \"Style\" legend\n", + " \n", + " hue_labels = labels[:len(df['Robustness radius'].unique())][::-1]\n", + " hue_handles = handles[:len(df['Robustness radius'].unique())][::-1]\n", + "\n", + " # Customize the legend for the \"hue\" part\n", + " hue_legend = plt.legend(hue_handles,\n", + " hue_labels,\n", + " title='Robustness\\n radius', loc=\"center left\",\n", + " bbox_to_anchor=(1., 0.65),\n", + " labelspacing=1.25,\n", + " borderpad=0.25,\n", + " handletextpad=0.75,\n", + " borderaxespad=0.4,\n", + " fontsize='x-small',\n", + " title_fontsize='small'\n", + " )\n", + "\n", + " # Combine both legends\n", + " ax.add_artist(style_legend)\n", + " # ax.add_artist(hue_legend)\n", + " else:\n", + " # move legend in bottom right corner\n", + " ax.legend(loc='lower right', bbox_to_anchor=(1.0, 0.0), ncol=3)\n", + "\n", + " plt.tight_layout()\n", + " plt.subplots_adjust(right=0.75) # Adjust the right margin\n", + " plt.savefig('robustness_cifar10.png', dpi=300, bbox_inches='tight')\n", + "\n", + "plot_all_datasets(custom_legend=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "$\\tau=0.01$ & $\\bm{47.4}$ & $5.9$ & $0.1$ & $0.0$ & $0.0$ & $0.0$ & nan & nan\\\\\n", + "$\\tau=0.22$ & $44.4$ & $\\bm{39.1}$ & $34.2$ & $24.9$ & $11.5$ & $0.8$ & nan & nan\\\\\n", + "$\\tau=0.40$ & $41.6$ & $38.4$ & $\\bm{35.6}$ & $29.6$ & $19.1$ & $5.3$ & nan & nan\\\\\n", + "$\\tau=0.74$ & $38.4$ & $36.4$ & $34.7$ & $\\bm{30.9}$ & $24.1$ & $13.0$ & 51.9 & 20.5\\\\\n", + "$\\tau=2.77$ & $33.3$ & $32.2$ & $31.2$ & $29.3$ & $\\bm{25.9}$ & $18.8$ & 52.5 & 21.3\\\\\n", + "$\\tau=5.40$ & $32.5$ & $31.4$ & $30.4$ & $28.8$ & $25.5$ & $\\bm{19.7}$ & 59.7 & 23.6\\\\\n" + ] + } + ], + "source": [ + "keys = ['val_accuracy', \n", + " 'val_certacc_1', \n", + " 'val_certacc_2', \n", + " 'val_certacc_4', \n", + " 'val_certacc_8', \n", + " 'val_certacc_16']\n", + "radii = [0, 1, 2, 4, 8, 16]\n", + "restrict = True\n", + "for j, (i, key) in enumerate(zip(radii, keys)):\n", + " prefix = f\"r={i}\"\n", + " pos = histories[key].argmax()\n", + " row = histories.iloc[pos]\n", + " measures = [f'{row[key]*100:3.1f}' for key in keys]\n", + " measures[j] = f'\\\\bm{{{measures[j]}}}'\n", + " measures = [f'${n}$' for n in measures]\n", + " measures = ' & '.join(measures)\n", + " temp = 1 / row['tau']\n", + " sweep_name = f'acc_eps20_certacc_{i}'\n", + " histories_sub = histories[histories['sweep'] == sweep_name] \n", + " auroc = histories_sub['mia_auc_entire_dataset'].max()*100\n", + " adv = histories_sub['mia_adv_entire_dataset'].max()*100\n", + " print(f\"$\\\\tau={temp:.2f}$ & {measures} & {auroc:.1f} & {adv:.1f}\\\\\\\\\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "lipdp", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/experiments/paper_plots/tabular_report.ipynb b/experiments/paper_plots/tabular_report.ipynb new file mode 100644 index 0000000..903eb6e --- /dev/null +++ b/experiments/paper_plots/tabular_report.ipynb @@ -0,0 +1,2336 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "eNamFBDN6VYb" + }, + "source": [ + "# Plotting the Pareto Front from WandB sweeps :" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7bjW31l66ayq" + }, + "source": [ + "### Imports & Installs :" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "9OFvOrDIVZdg", + "outputId": "5a1e2ac9-52ec-4dac-81ae-e5e202ea3f7a" + }, + "outputs": [], + "source": [ + "import wandb\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Cs9VHKoh7O2y" + }, + "source": [ + "### Get run hashes and load run-table artifacts : " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "z0RuU8Vi-GBr" + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "api = wandb.Api()\n", + "\n", + "entity = \"algue\"\n", + "project = \"ICLR_Tabular\"\n", + "states = [\"finished\", \"killed\"] # only runs that did not failed or crashed.\n", + "sweeps = {\n", + " '22_magic.gamma': 'alrqcmlh',\n", + " '5_campaign': 'o45yl6gh',\n", + " '8_celeba': 'ld7yp15w',\n", + " '11_donors': 'gzvd2wdc',\n", + " '47_yeast': 'se3o4ifc',\n", + " '9_census': '50v0h64o',\n", + " '32_shuttle': '70i8lk5h',\n", + " '33_skin': '0ohqofvr',\n", + " '1_ALOI': 'os5xmq3w',\n", + " # '23_mammography': '',\n", + "}\n", + "sweeps_opacus = {\n", + " '22_magic.gamma': '38a9vh6y',\n", + " '5_campaign': 'i95a8iwf',\n", + " '8_celeba': '9s55vik1',\n", + " '11_donors': 'hgl5lv2a',\n", + " '47_yeast': '88vx2ydv',\n", + " '9_census': '094361u3',\n", + " '32_shuttle': 'kgcj1488',\n", + " '33_skin': 'maobrmys',\n", + " '1_ALOI': 'pgpa9cp2',\n", + "}\n", + "sweep_ids = list(sweeps.values())\n", + "filters = {\"state\": {\"$in\": states}, 'sweep': {\"$in\": sweep_ids}} \n", + "\n", + "# Get a list of all the runs in the project\n", + "redownload = False\n", + "if redownload: \n", + " runs = api.runs(entity + \"/\" + project, filters) \n", + "\n", + "# summary_list, config_list, name_list = [], [], []\n", + "# for run in runs: \n", + "# # .summary contains the output keys/values for metrics like accuracy.\n", + "# # We call ._json_dict to omit large files \n", + "# summary_list.append(run.summary._json_dict)\n", + "# # .config contains the hyperparameters.\n", + "# # We remove special values that start with _.\n", + "# config_list.append(\n", + "# {k: v for k,v in run.config.items()\n", + "# if not k.startswith('_')})\n", + "# # .name is the human-readable name of the run.\n", + "# name_list.append(run.name)\n", + "\n", + "# runs_df = pd.DataFrame({\n", + "# \"summary\": summary_list,\n", + "# \"config\": config_list,\n", + "# \"name\": name_list\n", + "# })" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "vJhUWkulAARA" + }, + "outputs": [], + "source": [ + "# expanded_summary = runs_df['summary'].apply(lambda summary: pd.DataFrame.from_dict([summary]))\n", + "# df = pd.concat(expanded_summary.tolist(), axis=0)\n", + "# df = df.set_index(runs_df['name'])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PBAnmgP5B7mR" + }, + "source": [ + "At this point we only have summary statistics, not the whole statistics. Nonetheless, it is useful if want to select only some runs based on diverse criteria (e.g wandb sweep hyper-parameters)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "def default_delta_value(n):\n", + " smallest_power10_bigger = np.ceil(np.log10(n))\n", + " return int(smallest_power10_bigger)\n", + "\n", + "test_ratio = 0.2\n", + "train_ratio = 1 - test_ratio\n", + "dataset_size = {\n", + " \"5_campaign\": int(41188 * train_ratio),\n", + " \"8_celeba\": int(202599 * train_ratio),\n", + " \"22_magic.gamma\": int(19020 * train_ratio),\n", + " \"47_yeast\": int(1484 * train_ratio),\n", + " \"11_donors\": int(619326 * train_ratio),\n", + " \"9_census\": int(299285 * train_ratio),\n", + " \"32_shuttle\": int(49097 * train_ratio),\n", + " \"33_skin\": int(245057 * train_ratio),\n", + " \"1_ALOI\": int(49534 * train_ratio),\n", + " # \"23_mammography\": int(11183 * train_ratio),\n", + "}\n", + "\n", + "dataset_features = {\n", + " \"5_campaign\": 62,\n", + " \"8_celeba\": 39,\n", + " \"22_magic.gamma\": 10,\n", + " \"47_yeast\": 8,\n", + " \"11_donors\": 10,\n", + " \"9_census\": 500,\n", + " \"32_shuttle\": 9,\n", + " \"33_skin\": 3,\n", + " \"1_ALOI\": 27,\n", + " # \"23_mammography\": 6,\n", + "}\n", + "\n", + "dataset_delta = {name: default_delta_value(dataset_size[name]) for name in dataset_size}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ihkplJNJ8o1L", + "outputId": "ecb54eb4-1567-443b-9cb9-98f5f4e598ad" + }, + "outputs": [], + "source": [ + "from joblib import parallel_backend, Parallel, delayed\n", + "import tqdm\n", + "\n", + "faulty_runs = {}\n", + "\n", + "def get_hist(run, add_config=True):\n", + " # requires that n_epoch < 1024 to work ! (otherwise increase sample)\n", + " hist = run.history(samples=2048)\n", + " # check for empty runs\n", + " if len(hist) == 0:\n", + " faulty_runs[run.name] = \"empty_run\"\n", + " return hist\n", + " \n", + " if \"epsilon\" not in hist.columns:\n", + " faulty_runs[run.name] = \"no_epsilon\"\n", + " return hist\n", + " \n", + " if \"val_auc\" not in hist.columns:\n", + " faulty_runs[run.name] = \"no_val_auc\"\n", + " return hist\n", + " \n", + " # re-order columns and reindex data\n", + " hist = hist.sort_values(by=[\"epoch\", \"_step\"], axis=0)\n", + " hist = hist.reset_index(drop=True)\n", + "\n", + " # backward fill the \"epsilon\" field (reported on epoch+1)\n", + " hist = hist.fillna(method='bfill', limit=1)\n", + "\n", + " # drop row where epsilon is not known\n", + " hist = hist.dropna(how=\"any\", subset=[\"epsilon\", \"val_auc\"], axis=0)\n", + "\n", + " # take one value out of two\n", + " hist = hist.iloc[::2, :]\n", + "\n", + " hist['name'] = run.name\n", + " if add_config:\n", + " for k, v in run.config.items():\n", + " hist[k] = v\n", + " hist['num_epochs'] = len(hist)\n", + "\n", + " try:\n", + " hist['runtime'] = run.summary['_runtime']\n", + " except KeyError:\n", + " hist['runtime'] = float('nan')\n", + " faulty_runs[run.name] = \"no_runtime\"\n", + " return hist\n", + " \n", + " return hist\n", + "\n", + "if redownload:\n", + " # parallel query\n", + " n_jobs = 10\n", + " histories = []\n", + " debug = False\n", + " num_runs = 50 if debug else len(runs)\n", + " with parallel_backend(backend='threading', n_jobs=n_jobs, require='sharedmem'):\n", + " # build pool\n", + " \n", + " pfor = Parallel(n_jobs=n_jobs)(delayed(get_hist)(run, add_config=not debug) for run in tqdm.tqdm(runs[:num_runs]))\n", + " for metrics_dataframe in tqdm.tqdm(pfor):\n", + " # aggregate results in an array\n", + " histories.append(metrics_dataframe)\n", + "\n", + " # build dataframe with data\n", + " histories = pd.concat(histories)\n", + " histories = histories.sort_values(by=[\"num_epochs\", \"name\", \"epoch\", \"_step\"], axis=0)\n", + " faulty_runs = pd.DataFrame.from_dict(faulty_runs, orient=\"index\", columns=[\"reason\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "faulty_runs" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "if redownload:\n", + " histories.to_csv(\"tabular.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(['5_campaign', '47_yeast', '8_celeba', '11_donors', '33_skin',\n", + " '22_magic.gamma', '32_shuttle', '1_ALOI', '9_census'], dtype=object)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "histories = pd.read_csv(\"tabular.csv\")\n", + "histories[\"Algorithm\"] = [\"[Lipschitz] Clipless DP-SGD\" for _ in histories.index]\n", + "histories['dataset_name'].unique()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 74/74 [00:02<00:00, 26.70it/s]\n", + "100%|██████████| 74/74 [00:00<00:00, 212733.72it/s]\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
_steploss_runtimedeltaaccuracyepochepsilonval_epochval_accuracy_timestamp...log_wandbBATCH_SIZEsweep_countdataset_nameMAX_GRAD_NORMsweep_yaml_configMAX_PHYSICAL_BATCH_SIZEnum_epochsruntimeAlgorithm
000.14172613.2434460.000010.06745810.99420310.0029211.695826e+09...sweep_celeba50018_celeba15.641288experiments/paper_plots/opacus_tabular_celeba....2000113.243446[Unconstrained] DP-SGD
000.2821246.7065190.000010.33258110.99090610.0484181.695818e+09...sweep_celeba400018_celeba0.212050experiments/paper_plots/opacus_tabular_celeba....200016.706519[Unconstrained] DP-SGD
00134.2033305.1344750.000010.11947010.99287110.0091241.695811e+09...sweep_ALOI500011_ALOI0.073162experiments/paper_plots/opacus_tabular_ALOI.yaml200015.134475[Unconstrained] DP-SGD
0044.2031098.0243790.000010.00323010.80528310.0001451.695826e+09...sweep_celeba100018_celeba91.954707experiments/paper_plots/opacus_tabular_celeba....2000212.918013[Unconstrained] DP-SGD
1112.02451112.9180130.000010.00019920.99124820.0000001.695826e+09...sweep_celeba100018_celeba91.954707experiments/paper_plots/opacus_tabular_celeba....2000212.918013[Unconstrained] DP-SGD
..................................................................
1811811.70750687.9312560.000010.0132451820.9838631820.0150581.695824e+09...sweep_magic.gamma2000122_magic.gamma0.070708experiments/paper_plots/opacus_tabular_magic.yaml200018689.897592[Unconstrained] DP-SGD
1821821.72505188.4134070.000010.0133261830.9867901830.0093711.695824e+09...sweep_magic.gamma2000122_magic.gamma0.070708experiments/paper_plots/opacus_tabular_magic.yaml200018689.897592[Unconstrained] DP-SGD
1831831.91548488.9399030.000010.0149031840.9897101840.0088231.695824e+09...sweep_magic.gamma2000122_magic.gamma0.070708experiments/paper_plots/opacus_tabular_magic.yaml200018689.897592[Unconstrained] DP-SGD
1841842.16089789.3606240.000010.0152051850.9926231850.0062421.695824e+09...sweep_magic.gamma2000122_magic.gamma0.070708experiments/paper_plots/opacus_tabular_magic.yaml200018689.897592[Unconstrained] DP-SGD
1851851.71660489.8975920.000010.0130431860.9955291860.0145551.695824e+09...sweep_magic.gamma2000122_magic.gamma0.070708experiments/paper_plots/opacus_tabular_magic.yaml200018689.897592[Unconstrained] DP-SGD
\n", + "

2904 rows × 32 columns

\n", + "
" + ], + "text/plain": [ + " _step loss _runtime delta accuracy epoch epsilon \\\n", + "0 0 0.141726 13.243446 0.00001 0.067458 1 0.994203 \n", + "0 0 0.282124 6.706519 0.00001 0.332581 1 0.990906 \n", + "0 0 134.203330 5.134475 0.00001 0.119470 1 0.992871 \n", + "0 0 44.203109 8.024379 0.00001 0.003230 1 0.805283 \n", + "1 1 12.024511 12.918013 0.00001 0.000199 2 0.991248 \n", + ".. ... ... ... ... ... ... ... \n", + "181 181 1.707506 87.931256 0.00001 0.013245 182 0.983863 \n", + "182 182 1.725051 88.413407 0.00001 0.013326 183 0.986790 \n", + "183 183 1.915484 88.939903 0.00001 0.014903 184 0.989710 \n", + "184 184 2.160897 89.360624 0.00001 0.015205 185 0.992623 \n", + "185 185 1.716604 89.897592 0.00001 0.013043 186 0.995529 \n", + "\n", + " val_epoch val_accuracy _timestamp ... log_wandb \\\n", + "0 1 0.002921 1.695826e+09 ... sweep_celeba \n", + "0 1 0.048418 1.695818e+09 ... sweep_celeba \n", + "0 1 0.009124 1.695811e+09 ... sweep_ALOI \n", + "0 1 0.000145 1.695826e+09 ... sweep_celeba \n", + "1 2 0.000000 1.695826e+09 ... sweep_celeba \n", + ".. ... ... ... ... ... \n", + "181 182 0.015058 1.695824e+09 ... sweep_magic.gamma \n", + "182 183 0.009371 1.695824e+09 ... sweep_magic.gamma \n", + "183 184 0.008823 1.695824e+09 ... sweep_magic.gamma \n", + "184 185 0.006242 1.695824e+09 ... sweep_magic.gamma \n", + "185 186 0.014555 1.695824e+09 ... sweep_magic.gamma \n", + "\n", + " BATCH_SIZE sweep_count dataset_name MAX_GRAD_NORM \\\n", + "0 500 1 8_celeba 15.641288 \n", + "0 4000 1 8_celeba 0.212050 \n", + "0 5000 1 1_ALOI 0.073162 \n", + "0 1000 1 8_celeba 91.954707 \n", + "1 1000 1 8_celeba 91.954707 \n", + ".. ... ... ... ... \n", + "181 2000 1 22_magic.gamma 0.070708 \n", + "182 2000 1 22_magic.gamma 0.070708 \n", + "183 2000 1 22_magic.gamma 0.070708 \n", + "184 2000 1 22_magic.gamma 0.070708 \n", + "185 2000 1 22_magic.gamma 0.070708 \n", + "\n", + " sweep_yaml_config \\\n", + "0 experiments/paper_plots/opacus_tabular_celeba.... \n", + "0 experiments/paper_plots/opacus_tabular_celeba.... \n", + "0 experiments/paper_plots/opacus_tabular_ALOI.yaml \n", + "0 experiments/paper_plots/opacus_tabular_celeba.... \n", + "1 experiments/paper_plots/opacus_tabular_celeba.... \n", + ".. ... \n", + "181 experiments/paper_plots/opacus_tabular_magic.yaml \n", + "182 experiments/paper_plots/opacus_tabular_magic.yaml \n", + "183 experiments/paper_plots/opacus_tabular_magic.yaml \n", + "184 experiments/paper_plots/opacus_tabular_magic.yaml \n", + "185 experiments/paper_plots/opacus_tabular_magic.yaml \n", + "\n", + " MAX_PHYSICAL_BATCH_SIZE num_epochs runtime Algorithm \n", + "0 2000 1 13.243446 [Unconstrained] DP-SGD \n", + "0 2000 1 6.706519 [Unconstrained] DP-SGD \n", + "0 2000 1 5.134475 [Unconstrained] DP-SGD \n", + "0 2000 2 12.918013 [Unconstrained] DP-SGD \n", + "1 2000 2 12.918013 [Unconstrained] DP-SGD \n", + ".. ... ... ... ... \n", + "181 2000 186 89.897592 [Unconstrained] DP-SGD \n", + "182 2000 186 89.897592 [Unconstrained] DP-SGD \n", + "183 2000 186 89.897592 [Unconstrained] DP-SGD \n", + "184 2000 186 89.897592 [Unconstrained] DP-SGD \n", + "185 2000 186 89.897592 [Unconstrained] DP-SGD \n", + "\n", + "[2904 rows x 32 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def get_hist_opacus(run, add_config=True):\n", + " # requires that n_epoch < 1024 to work ! (otherwise increase sample)\n", + " hist = run.history(samples=2048)\n", + " # check for empty runs\n", + " if len(hist) == 0:\n", + " faulty_runs[run.name] = \"empty_run\"\n", + " return hist\n", + " \n", + " if \"epsilon\" not in hist.columns:\n", + " faulty_runs[run.name] = \"no_epsilon\"\n", + " return hist\n", + " \n", + " if \"val_auroc\" not in hist.columns:\n", + " faulty_runs[run.name] = \"no_val_auc\"\n", + " return hist\n", + " \n", + " # re-order columns and reindex data\n", + " hist = hist.sort_values(by=[\"epoch\", \"_step\"], axis=0)\n", + " hist = hist.reset_index(drop=True)\n", + "\n", + " # backward fill the \"epsilon\" field (reported on epoch+1)\n", + " hist = hist.fillna(method='bfill', limit=1)\n", + "\n", + " # drop row where epsilon is not known\n", + " hist = hist.dropna(how=\"any\", subset=[\"epsilon\", \"val_auroc\"], axis=0)\n", + " hist[\"val_auc\"] = hist[\"val_auroc\"]\n", + " hist[\"auc\"] = hist[\"auroc\"]\n", + " hist = hist.drop(columns=[\"val_auroc\", \"auroc\"])\n", + "\n", + " hist['name'] = run.name\n", + " if add_config:\n", + " for k, v in run.config.items():\n", + " hist[k] = v\n", + " hist['num_epochs'] = len(hist)\n", + "\n", + " try:\n", + " hist['runtime'] = run.summary['_runtime']\n", + " except KeyError:\n", + " hist['runtime'] = float('nan')\n", + " faulty_runs[run.name] = \"no_runtime\"\n", + " return hist\n", + " \n", + " return hist\n", + "\n", + "def get_opacus_runs():\n", + " api = wandb.Api()\n", + " entity = \"algue\"\n", + " project = \"ICLR_Opacus_Tabular\"\n", + " states = [\"finished\", \"killed\", \"running\"] # only runs that did not failed or crashed.\n", + " sweep_ids = list(sweeps_opacus.values())\n", + " filters = {\"state\": {\"$in\": states}, 'sweep': {\"$in\": sweep_ids}} \n", + "\n", + " runs = api.runs(entity + \"/\" + project, filters) \n", + "\n", + " histories = []\n", + " n_jobs = 10\n", + " debug = False\n", + " with parallel_backend(backend='threading', n_jobs=n_jobs, require='sharedmem'):\n", + " pfor = Parallel(n_jobs=n_jobs)(delayed(get_hist_opacus)(run, add_config=not debug) for run in tqdm.tqdm(runs))\n", + " for metrics_dataframe in tqdm.tqdm(pfor):\n", + " histories.append(metrics_dataframe)\n", + "\n", + " histories = pd.concat(histories)\n", + " histories = histories.sort_values(by=[\"num_epochs\", \"name\", \"epoch\", \"_step\"], axis=0)\n", + " return histories\n", + "\n", + "opacus_hist = get_opacus_runs()\n", + "opacus_hist[\"Algorithm\"] = [\"[Unconstrained] DP-SGD\" for _ in range(len(opacus_hist))]\n", + "opacus_hist" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 582 + }, + "id": "dlWKiGPIVuhz", + "outputId": "3f0ab85d-aff4-4786-a03d-1d5ee6527a01" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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vffei0aNGiEvLw9//PEHduzYUeu1/W5ubli8eDFGjRqFYcOGoU+fPmjXrh3c3Nxw/Phx47orlQWoL774AosXL8Znn31mXJw7LCwM77zzDqZMmYI+ffpg4MCBiI6OhiiKOHfuHDIyMqBQKNCkSRMAFd/IiaKInj17WpxTt27doFKpkJ6eXu1BUceOHdGxY8caY7PEz88PEyZMqLHN9u3bUVhYWG2hMDY2FkFBQUhLS2MBihq0li1b4p133kFKSgr69euHQYMGITIyEmVlZdi3bx8yMzPx8MMP49dff0WbNm2qvcy3R48emD17Ng4fPow77rjDYhtH/MJnT5615KmnnsKJEyewYsUK7N69G/fffz+aNGkCrVaLw4cPIzMzE40aNar2OSpVngX17bff1jk2Iqo7a3NapZycHIvrvfn4+JhdWvvpp5+anTWtUChM1rH87bffUFpaajZeVFSUyXILNz6vTqfD0aNH8eWXXyIwMNB4+Z0jjrWIiEg6WIAih/rxxx+h1Wpx7733Vtvm3nvvxcqVK7Fx40aMGDECXl5eWL58Ob777jt89913WLFiBQoKCuDn54fo6Gi89tprNRa9KrVq1QobNmzAp59+iq1bt2Lbtm0wGAxo1aoVHn30UePBTE3uu+8+pKenY+XKldi9eze++eYbCIKA0NBQdOvWDY8//rjx4Ck9PR2hoaEmB1M3UqvVaNeuHTZt2oSpU6fW+tyOlpaWBg8Pj2rXllIoFMY7yOTl5SEwMLCeZ0gkHT179kRaWhpWrFiBbdu2Yc2aNXB3d0dUVBSmTp2Ku+66C19++WW1ZzcBFblt9uzZSEtLq7YA5Qj25FlLFAoF3n77bfTu3dt4FqpWq4W3tzduu+02pKSk4LHHHrPqblqVa0HxzppE0lBbTnvssceMbf/66y+89NJLZmM0a9bMrAC1dOlSs3ZKpdKkALV69WqLc3ruuedMjplufF6FQoHAwEDcf//9eP755xESEgLA9mMtW5YzICKi+ieI1p5jT0REREREREREZAf7Vh0lIiIiIiIiIiKyEgtQRERERERERETkVCxAERERERERERGRU7EARURERERERERETsUCFBERERERERERORULUERERERERERE5FQsQBERERERERERkVOxAEVERERERERERE7FAhQRERERERERETkVC1BERERERERERORUqps9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nZzikVMsgLzikUIsDSE/AdJ4rR1FTrEA8oqHsTgW85NrklM8jEW65BYPEbk2SRWgXJVCISAw0MemPmq1l5Nmc3PIKR45xQLIKx45xVJf7MlPgLxeaznFAsgrHsbSsDE/VZBTPIxFuuQWDxG5JkkVoNRqNfLz8822azQa+Pv7O2R8S7cM1mg0aNq0qd3jGgwitNoiq9oqlQqo1V7Qaouh1xvsfk6pkFM8cooFkFc89sSiVns59Nu+hpCfAL5vpExO8TT0WJifKjTk/ATIKx7GIl1SyFFERJUkVYCKiIgwW0sgPz8fV65cMVt7wN7xjx07ZrJNFEWcPHkSCQkJdRq7vNy2Dyi93mBzHymTUzxyigWQVzw3M5aGlJ8Avm+kTE7xMBbHYH5ybXKKh7FIl9ziISLXJKnSdmJiIvbs2QOtVmvclpmZCYVCUecDnMrxjx49ilOnThm37d27F9evX0e3bt3qPD4RyRfzExFJFfMTERERuQJJnQE1dOhQrF69GsnJyRg/fjxycnKQmpqKoUOHIiQkxNguKSkJFy5cwNatW43bDh06hPPnzyM3NxcAcODAAQBAUFAQOnbsCADo3bs3li5digkTJmDy5MkoLi5GamoqunfvjpiYmHqMlIhcDfMTEUkV8xMRERG5AkkVoPz9/bFq1SrMnj0bycnJ8PHxweDBg5GSkmLSzmAwQK/Xm2z74osv8O233xofr1y5EgDQsWNHrF69GgDg5uaG5cuXY86cOZg8eTJUKhV69eqFadOmOTkyInJ1zE9EJFXMT0REROQKBFEUxZs9CVen1xuQm1toVVuVSoHAQB/k5RXK4jpsOcUjp1gAecVjTyxBQT5cQBO25SeA7xspk1M8DT0W5qcKDTk/AfKKh7FIF3MUEUkJMwsRERERERERETkVz4ByAFEUYTBY/zIqlQpZ3Na1kpzikVMsgLzisTUWhUKAIAhOnJFrsDU/AQ37fSN1coqnIcfC/FShoecnQF7xMBbpYo4iIqlgAYqIiIiIiIiIiJyKl+AREREREREREZFTsQBFREREREREREROxQIUERERERERERE5FQtQRERERERERETkVCxAERERERERERGRU7EARURERERERERETsUCFBERERERERERORULUERERERERERE5FQsQBERERERERERkVOxAEVERERERERERE7FAhQRERERERER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Dx9Go0aN4OXl5bQ5O1q7du3g6+uLzZs3G7fpdDp8//33SExMvIkzky455SjmJ+YnKWN+sp2c8hPAHAVIM0cxPzE/EZEEiOQQ169fFxMSEsRhw4aJ/+///T/x66+/Ftu3by/OmjXLpN2IESPE++67z/j4n3/+Ee+++25xwIAB4u+//y7u27fP+Of06dP1HYaRvfFYMmzYMPGpp55y5nRrVJdYtm3bJkZFRYlz5swRd+3aJX700UfiHXfcIb777rv1GYIJe+PJz88Xu3fvLvbq1UvcsGGDuGfPHjE1NVWMjo4WP/jgg/oOw6ioqEjcvHmzuHnzZnHYsGFit27djI+vXbsmiqLl/zZLly4V77zzTvHTTz8V9+zZI06YMEGMi4sTz5w5czPCkDw55SjmpwrMT87H/FQ/5JSfRJE5qpLUchTzUwXmJyK6mbgGlIP4+/tj1apVmD17NpKTk+Hj44PBgwcjJSXFpJ3BYIBerzc+PnDgAPLz85Gfn4/HH3/cpO1DDz2EuXPn1sv8q7I3HimqSyw9evTAu+++iw8//BBr1qxB48aNMWHCBDz11FP1GYIJe+Px9fXFp59+igULFuCdd95Bfn4+mjdvjqlTp2LYsGH1HYbRtWvX8Pzzz5tsq3z82WefoVOnThb/24wbNw6iKGLlypXIzc1FmzZtsGLFCrRo0aLe5u5K5JSjmJ8qMD85H/NT/ZBTfgKYoypJLUcxP1VgfiKim0kQRVG82ZMgIiIiIiIiIiL54hpQRERERERERETkVCxAERERERERERGRU7EARURERERERERETsUCFBERERERERERORULUERERERERERE5FQsQBERERERERERkVOpbvYEiMgxhg8fjv3790Olqvixvvvuu7F8+fKbPCsiIuYnIpK+ZcuW4fPPP4dWq0WrVq3w+eefw9fX92ZPi4hIVliAIpKROXPmYNCgQTd7GkREZpifiEiqvvjiC/y///f/sGbNGjRt2hR///033N3db/a0iIhkhwUoIiIiIiJqkPR6PT766CP873//Q2hoKAAgOjr6Js+KiEieuAYUSd4ff/yBRYsWQavV2tTv6NGjmDhxIu655x7ceeed6NKlC55++mlcvnzZKfMsLCzEwoULMWbMGHTs2BFRUVFYv369U56rOm+99RY6d+6MUaNG4ejRo/X63EQNEfOT9ZifiOofc1Tt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NinFw1jsl9TiISLHZFUBasKECTh9+jRyc3Ph7OyMiRMn4s6dOzh48CBkMhmeeuopzJs3z+J+w8PDsX79epO1DOLi4iCTyUq9wJk/f77xm7sCb7zxBlxdXTFjxgwEBwcb+9+9ezeuXLmC+vXrAwASEhKQnp6Orl27WjxeIqo6mJ+IyF4xPxEREZEjEERRFCt7EAXUajX69euHwMBAREZGIiUlBcuXL0f//v2xcOFCY7uIiAjcunULhw4dKrGvkSNHwt3dHbGxscZtOp0OAwcOBADMmDEDWVlZiI6ORnBwsEk7S+n1Bty7l2lWW4VCBh8fD6SlZUriWwgpxSOlWABpxWNNLL6+HjadPl4V8hPAz409k1I8VT0W5qd8VTk/AdKKh7HYL3vIUUREBayaAVVRVCoVNm3ahCVLliAqKgoeHh4YNGgQpk+fbtLOYDBAr9db3L+TkxM2bNiApUuXYsaMGVAoFOjZsyfmz59vqxCISKKYn4jIXjE/ERERkSMwawbU2rVrLe9YEBAVFWXVoBwNZ0BJIx4pxQJIKx5+e2e9qjzDQEqxANKKp6rHwvyUryrnJ0Ba8TAW+8UcRUT2xKwZUMUVoARBAJC/CGXh7aIoVqkCFBERERERERERlcysAtT58+dNXqekpGDChAlo2LAhIiIiEBgYCABISkrCpk2bcPny5XKtCUBERERERERERNJh1dzKxYsXo169eli5ciWaN28OT09PeHp6IiQkBKtWrULdunXx2muv2XqsRERERERERETkgKwqQP3000/o0KFDifs7dOiAhIQEqwdFRERERERERETSYVUBysXFBadOnSpx/8mTJ+Hi4mLtmIiIiIiIiIiISELMWgOqsP79+2Pz5s1QKpUYMWIE6tatCwC4du0aNm/ejL1792LkyJE2HSgRERERERERETkmqwpQs2bNQlpaGrZs2YKtW7dCJsufSGUwGCCKIvr164dZs2bZdKBEREREREREROSYrCpAOTs7480338TYsWMRHx+PmzdvAgBq1aqF8PBwNG7c2OoBXb58GUuXLsXJkyfh4eGBAQMGYNq0aXB2di71uFmzZiExMRF37tyBk5MTGjVqhBdeeAGdO3c2aafVarFs2TJ8++230Ol06NKlCxYsWAB/f3+rx0xEVQPzExHZK+YnIiIisndWFaAKNG7cuFzFpsLUajUiIiJQv359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YSz2izmKiOwFC1BERERERERERFSheAseERERERERVSkjR45EcHAwgoOD8e677xq3x8TEoGXLliUed+PGDQQHByMuLu5hDNPE3Llz8dRTT5XZLjg4GBs3bjS+3rlzJ/bs2WPx+02fPt14jl577bUy2+fm5uLjjz/GwIED0bJlS4SEhKB///6IiYmBRqMBABw/fhzBwcE4ffp0ieM1l7XH2VpBTAW/QkND8fjjj2P69Ok4evRokfYxMTEm7Tt06IBRo0bhxIkTZb7Xn3/+ialTpyI8PBzNmzdHeHg4IiMjceTIkSJtT548ialTp6Jz585o1qwZ2rdvj1GjRmHbtm3Izc0tdjyNGzdG69at0b9/f7z22mu4fPly+U5OIQqb9kZERERERETkAFq1aoU5c+agRo0aZh/j7++P7du3o379+hU3sHLavn07atasaXz91Vdfwd3dHf3797eon2nTpiEiIgKTJ08us21OTg7GjRuHU6dOYfjw4Zg2bRqcnZ3xxx9/YPPmzdBqtZg/f75Z43VUy5YtQ1BQEHJycnD9+nXs27cPY8aMwXPPPYdFixaZtHV1dcWmTZsAALdv38a7776L0aNHY+fOnWjUqFGx/V+7dg2DBw9GcHAw5s6dC19fX9y8eRNHjhzBzz//jK5duxrbfvrpp1iyZAnatGmDWbNmoVatWlCr1YiPj8frr78OABg6dGix48nMzMTFixexfft2fP7553j99dcxYMAAm5wjFqCIiIiIiIioylEqlQgNDbXoGGdnZ4uPedhsNb569eqhXr16cHZ2LrPtO++8gxMnTmDjxo3o1KmTcXuHDh3w3HPP4bfffivxWHs/n+Zq2LAhmjdvDgBo3749Bg0ahLfeeguxsbFo2bIl/vOf/xjbymQyk7hDQkLQo0cPbNu2DQsXLiy2/x07dgAAPvroI7i5uRm3P/vsszAY/l3n7fz583j99dfx9NNP44033jBZ0+2JJ57AmDFj8Ndff5n0XXg8YWFheO655zBhwgS8/PLLaNWqFerUqWP5SSmEt+ARERERERERmaG4W/B69OiB1157DRs2bECXLl3QokULvPDCC7hz547Jse+//z569uyJ5s2bo0OHDhg9ejSuX79u3J+bm4vVq1fj8ccfR7NmzRAeHo65c+cWGcPx48fx9NNPIzQ0FIMGDcKZM2dM9j94a9rIkSPx888/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h4ikqSF9bsuWLZgxYwb69OmD5cuXw8vLq97nW7ZsGR555BEIgmDPGETkBtLT09GqVSscOXIE58+fR7t27azex86dOzFlyhQEBATgySefROvWrXH58mV8+eWX2LFjBxYtWoS4uDgHVE9ERFLHARQ51cqVK+Hv748vv/wSarXa7LFr1641Sg3R0dFmP3t5eWH9+vXo06cPevbsWet2lq5XH5VKhaFDh9q8PRFJm6197ptvvsH06dPRq1cvi4dPnTp1wokTJ5CZmYlHHnmkwbUTkfu4ePEiDh48iKVLl2L27NlIT0/Hyy+/bNU+Lly4gNdffx1t2rTBxo0bERgYaHpszJgxePbZZ/H6669jy5YtaNOmjb0jEBGRxPESPHKqCxcu4M4776z2jzIAaNasmRMqIiKyL1v63LZt2/Daa6+hR48eWLFihUXDJwAYOHAgQkNDsWzZMoii2KC6ici9pKenQ6PRoF+/foiPj0d6errV+1izZg1KSkowb948s+ETAAQGBuLtt9/GjRs3sHr1anuVTURELoQDKHKqVq1a4dixYzh9+nS961ZWVuL69evVfun1+kao1LFqylVUVOTssojIDqzpcwCwY8cOvPbaa+jWrRtWrlwJb29vi59LqVTixRdfxMmTJ5GZmWlryUTkhtLT0xEXFwdPT08MHjwY586dw5EjR6zax/fff49WrVqhW7duNT7evXt3tGrVCrt377ZHyURE5GJ4CR451bhx4zBx4kQ89thjiIyMxP3334/evXujZ8+e8PDwMFt3z5496N27t5MqdZwbN27UmKtv375Yu3atEyoiInuyps8dP34ce/bsQdeuXbFq1Sqrhk83DRkyBCtWrMCyZcsQFxfHe0ERUb1+++03ZGdn4+9//zsA4P7770eLFi2Qnp6OyMhIi/ah1+uRl5eHhx56qM71IiIisGvXLhQVFcHPz6/BtRMRkevgAIqcKjo6Gps2bcJHH32EPXv24ODBg1izZg0CAwORkpJidhDTuXNnTJ48udo+Tp48iQULFjRi1fbl5eWFlStXVlvetGlTJ1RDRPZmTZ/TarWorKxEixYtbBo+AX+dBfXGG2/g22+/5c1+iahe6enpuOOOO0z3tBQEAQMHDsSWLVswffp0i74Ypbi4GADg6+tb53o3Hy8uLuYAiojIzXAARU4XGRmJpUuXory8HCdPnsS3336L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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "import math\n", + "\n", + "sns.set_context(\"paper\")\n", + "\n", + "def plot_all_datasets(histories, opacus_hist, legend, plot_cloud):\n", + " num_cols = 3\n", + " num_rows = math.ceil(len(sweeps) / num_cols)\n", + " unit_row = 3\n", + " unit_col = 3\n", + " sns.set(rc={'figure.figsize':((num_cols + 1) * unit_col, num_rows * unit_row)})\n", + " sns.set(font_scale=1.0)\n", + " plt.gcf().set_dpi(300)\n", + "\n", + " axes = plt.subplots(num_rows, num_cols, sharex=False, sharey=False)[1].flatten()\n", + "\n", + " for i, ax, dataset in zip(range(len(axes)), axes, sweeps):\n", + " delta = dataset_delta[dataset]\n", + " histories_ds = histories[histories['dataset_name'] == dataset]\n", + " pareto_front = histories_ds.set_index(\"epsilon\").sort_values(\"epsilon\")[\"val_auc\"].expanding().max()\n", + "\n", + " histories_ds_opacus = opacus_hist[opacus_hist['dataset_name'] == dataset]\n", + " pareto_front_opacus = histories_ds_opacus.set_index(\"epsilon\").sort_values(\"epsilon\")[\"val_auc\"].expanding().max()\n", + " \n", + " if plot_cloud:\n", + " sns.scatterplot(data=histories_ds, x=\"epsilon\", y=\"val_auc\",\n", + " alpha=0.01, c='mediumseagreen', zorder=1, edgecolors=None, ax=ax)\n", + "\n", + " last_ax = ax == axes[-1]\n", + " df_hist = pd.DataFrame.from_dict({\n", + " 'Algorithm': histories_ds['Algorithm'],\n", + " 'epsilon': pareto_front.index,\n", + " 'val_auc': pareto_front.values,\n", + " })\n", + " df_hist_opacus = pd.DataFrame.from_dict({\n", + " 'Algorithm': histories_ds_opacus['Algorithm'],\n", + " 'epsilon': pareto_front_opacus.index,\n", + " 'val_auc': pareto_front_opacus.values,\n", + " })\n", + " df = pd.concat([df_hist, df_hist_opacus], axis=0)\n", + " sns.lineplot(\n", + " data=df,\n", + " x='epsilon', y='val_auc',\n", + " hue='Algorithm',\n", + " alpha=0.8,\n", + " lw=3,\n", + " errorbar=None,\n", + " legend=(last_ax and legend) and \"auto\",\n", + " zorder=2,\n", + " ax=ax)\n", + "\n", + " ax.set(xlim=(0.15, 1.05), ylim=(0.05, 1.05))\n", + "\n", + " ticks = [0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]\n", + " labels = [str(v) for v in ticks]\n", + "\n", + " subsample = 2\n", + " if subsample:\n", + " ticks = ticks[::subsample]\n", + " labels = labels[::subsample]\n", + "\n", + " ax.set_xticks(ticks, labels=labels)\n", + " yticks = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]\n", + " ylabels = list(map(lambda v: f\"{v:.2f}\", yticks))\n", + " ax.set_yticks(yticks, labels=ylabels)\n", + "\n", + " ax.set_xlabel(f\"$\\epsilon$ at $\\delta=1e^{{{-delta}}}$\")\n", + " if i % num_cols == 0:\n", + " ax.set_ylabel(\"Validation AUROC\")\n", + " else:\n", + " ax.set_ylabel(\"\")\n", + " ax.set_title(f\"{''.join(dataset.split('_')[1:]).upper()}\", pad=8)\n", + "\n", + " # move legend to far right\n", + " if last_ax and legend:\n", + " handles, labels = ax.get_legend_handles_labels()\n", + " ax.legend(handles=handles, labels=labels, loc='center left', bbox_to_anchor=(1, 1.4), frameon=False)\n", + "\n", + " plt.tight_layout()\n", + " plt.subplots_adjust(hspace=0.5) # Adjust the width space between subplots\n", + " plt.savefig('tabular.png', dpi=300, bbox_inches='tight')\n", + "\n", + "plot_all_datasets(histories, opacus_hist, legend=True, plot_cloud=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
val_aucruntime
countmeanstdmin25%50%75%maxcountmeanstdmin25%50%75%max
dataset_nameAlgorithm
11_donors[Lipschitz] Clipless DP-SGD164400.096.4515789.11318517.63966899.46017499.99676699.999827100.000000164400.061407.73199565441.4611692482.98749920043.53702133832.47013174528.666520252637.987208
[Unconstrained] DP-SGD11500.099.7036312.32274178.02271499.99755999.99985899.999898100.00000011500.0155162.97058685635.5658085844.29976973720.919514146913.288975261562.642336261562.642336
1_ALOI[Lipschitz] Clipless DP-SGD23500.051.8236921.79894544.70983150.31393251.81366853.12481555.95424823500.01221.679546651.378530445.251513767.0021891106.2184571365.0525813481.084037
[Unconstrained] DP-SGD16000.051.1884021.93994147.02940049.95222751.20767852.22494256.53998516000.011183.5909066028.492954440.2578834164.99669615527.47504715914.12701615914.127016
22_magic.gamma[Lipschitz] Clipless DP-SGD1009500.082.8578225.86294836.68699381.58923484.79317486.41418889.6505771009500.05948.3053626491.375994409.8542452385.5443723471.1482055947.92108535086.627150
[Unconstrained] DP-SGD20800.085.9418955.49218045.32372782.02335886.32358289.94839590.56550220800.08358.1253991711.000937369.8229558354.2619418898.1330878989.7591839748.688793
32_shuttle[Lipschitz] Clipless DP-SGD173600.055.80004330.4005480.54193531.39139059.07899782.40600799.320984173600.02224.5512821375.473827449.4073631156.6890241783.0219273021.8268636199.828029
[Unconstrained] DP-SGD1500.089.33398322.8927547.46690094.07649394.71101997.71185498.2764751500.0992.853699435.060059411.808443594.4733381107.8266381511.6070031511.607003
33_skin[Lipschitz] Clipless DP-SGD774200.098.4290403.9572227.62967698.98016599.39034999.56726799.750799774100.010057.9893748105.187836776.9175534437.7670767315.36221512576.50382537232.936525
[Unconstrained] DP-SGD6700.088.94757822.66983821.91692198.23214498.59874698.90236399.9732056700.047952.59937027312.0047671309.6716179704.86605265604.45051265604.45051265604.450512
47_yeast[Lipschitz] Clipless DP-SGD437500.057.1976556.75384724.50348952.79475558.03543962.11348575.132811437000.0657.247671187.621443297.493792509.328812609.803009779.5242731614.569068
[Unconstrained] DP-SGD8000.060.1918329.06251242.87229759.08516965.02576365.74686866.8215808000.02082.814635912.533382324.902797782.1686272207.5341222846.8078612846.807861
5_campaign[Lipschitz] Clipless DP-SGD73400.073.5984457.48109335.36320070.98479076.56868178.68186882.16207073400.02223.2360041919.194831403.837204998.5169651371.0060362689.7497897941.281772
[Unconstrained] DP-SGD10200.083.0153175.38604860.43585577.88285584.26191687.79965189.99231210200.010891.4522336652.474763424.3176464314.65458915563.62834016885.35256416885.352564
8_celeba[Lipschitz] Clipless DP-SGD30600.072.49323414.87368729.98862064.96715870.64822081.51245396.49909730600.058119.98944652693.5212081133.57100513389.17464039128.973794135084.460163135084.460163
[Unconstrained] DP-SGD5300.087.7577969.01535760.55736478.14005592.81269694.04225596.6316135300.012716.7995409495.836684670.6518894107.23497911284.68577914371.91064428718.150520
9_census[Lipschitz] Clipless DP-SGD27600.082.78479413.85302250.00000084.12195690.31789091.37425392.49222327600.029663.31330536842.4423263082.3713308192.25690410982.62651026077.858949104678.196144
[Unconstrained] DP-SGD19200.088.0877185.20527667.56507685.68227889.45492591.74213593.26439019200.077589.14811431185.8880382298.38717068978.51417182004.33933784395.474815119632.448363
\n", + "
" + ], + "text/plain": [ + " val_auc \\\n", + " count mean std \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 164400.0 96.451578 9.113185 \n", + " [Unconstrained] DP-SGD 11500.0 99.703631 2.322741 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 23500.0 51.823692 1.798945 \n", + " [Unconstrained] DP-SGD 16000.0 51.188402 1.939941 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 1009500.0 82.857822 5.862948 \n", + " [Unconstrained] DP-SGD 20800.0 85.941895 5.492180 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 173600.0 55.800043 30.400548 \n", + " [Unconstrained] DP-SGD 1500.0 89.333983 22.892754 \n", + "33_skin [Lipschitz] Clipless DP-SGD 774200.0 98.429040 3.957222 \n", + " [Unconstrained] DP-SGD 6700.0 88.947578 22.669838 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 437500.0 57.197655 6.753847 \n", + " [Unconstrained] DP-SGD 8000.0 60.191832 9.062512 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 73400.0 73.598445 7.481093 \n", + " [Unconstrained] DP-SGD 10200.0 83.015317 5.386048 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 30600.0 72.493234 14.873687 \n", + " [Unconstrained] DP-SGD 5300.0 87.757796 9.015357 \n", + "9_census [Lipschitz] Clipless DP-SGD 27600.0 82.784794 13.853022 \n", + " [Unconstrained] DP-SGD 19200.0 88.087718 5.205276 \n", + "\n", + " \\\n", + " min 25% 50% \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 17.639668 99.460174 99.996766 \n", + " [Unconstrained] DP-SGD 78.022714 99.997559 99.999858 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 44.709831 50.313932 51.813668 \n", + " [Unconstrained] DP-SGD 47.029400 49.952227 51.207678 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 36.686993 81.589234 84.793174 \n", + " [Unconstrained] DP-SGD 45.323727 82.023358 86.323582 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 0.541935 31.391390 59.078997 \n", + " [Unconstrained] DP-SGD 7.466900 94.076493 94.711019 \n", + "33_skin [Lipschitz] Clipless DP-SGD 7.629676 98.980165 99.390349 \n", + " [Unconstrained] DP-SGD 21.916921 98.232144 98.598746 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 24.503489 52.794755 58.035439 \n", + " [Unconstrained] DP-SGD 42.872297 59.085169 65.025763 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 35.363200 70.984790 76.568681 \n", + " [Unconstrained] DP-SGD 60.435855 77.882855 84.261916 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 29.988620 64.967158 70.648220 \n", + " [Unconstrained] DP-SGD 60.557364 78.140055 92.812696 \n", + "9_census [Lipschitz] Clipless DP-SGD 50.000000 84.121956 90.317890 \n", + " [Unconstrained] DP-SGD 67.565076 85.682278 89.454925 \n", + "\n", + " runtime \\\n", + " 75% max count \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 99.999827 100.000000 164400.0 \n", + " [Unconstrained] DP-SGD 99.999898 100.000000 11500.0 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 53.124815 55.954248 23500.0 \n", + " [Unconstrained] DP-SGD 52.224942 56.539985 16000.0 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 86.414188 89.650577 1009500.0 \n", + " [Unconstrained] DP-SGD 89.948395 90.565502 20800.0 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 82.406007 99.320984 173600.0 \n", + " [Unconstrained] DP-SGD 97.711854 98.276475 1500.0 \n", + "33_skin [Lipschitz] Clipless DP-SGD 99.567267 99.750799 774100.0 \n", + " [Unconstrained] DP-SGD 98.902363 99.973205 6700.0 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 62.113485 75.132811 437000.0 \n", + " [Unconstrained] DP-SGD 65.746868 66.821580 8000.0 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 78.681868 82.162070 73400.0 \n", + " [Unconstrained] DP-SGD 87.799651 89.992312 10200.0 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 81.512453 96.499097 30600.0 \n", + " [Unconstrained] DP-SGD 94.042255 96.631613 5300.0 \n", + "9_census [Lipschitz] Clipless DP-SGD 91.374253 92.492223 27600.0 \n", + " [Unconstrained] DP-SGD 91.742135 93.264390 19200.0 \n", + "\n", + " \\\n", + " mean std \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 61407.731995 65441.461169 \n", + " [Unconstrained] DP-SGD 155162.970586 85635.565808 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 1221.679546 651.378530 \n", + " [Unconstrained] DP-SGD 11183.590906 6028.492954 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 5948.305362 6491.375994 \n", + " [Unconstrained] DP-SGD 8358.125399 1711.000937 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 2224.551282 1375.473827 \n", + " [Unconstrained] DP-SGD 992.853699 435.060059 \n", + "33_skin [Lipschitz] Clipless DP-SGD 10057.989374 8105.187836 \n", + " [Unconstrained] DP-SGD 47952.599370 27312.004767 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 657.247671 187.621443 \n", + " [Unconstrained] DP-SGD 2082.814635 912.533382 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 2223.236004 1919.194831 \n", + " [Unconstrained] DP-SGD 10891.452233 6652.474763 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 58119.989446 52693.521208 \n", + " [Unconstrained] DP-SGD 12716.799540 9495.836684 \n", + "9_census [Lipschitz] Clipless DP-SGD 29663.313305 36842.442326 \n", + " [Unconstrained] DP-SGD 77589.148114 31185.888038 \n", + "\n", + " \\\n", + " min 25% \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 2482.987499 20043.537021 \n", + " [Unconstrained] DP-SGD 5844.299769 73720.919514 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 445.251513 767.002189 \n", + " [Unconstrained] DP-SGD 440.257883 4164.996696 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 409.854245 2385.544372 \n", + " [Unconstrained] DP-SGD 369.822955 8354.261941 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 449.407363 1156.689024 \n", + " [Unconstrained] DP-SGD 411.808443 594.473338 \n", + "33_skin [Lipschitz] Clipless DP-SGD 776.917553 4437.767076 \n", + " [Unconstrained] DP-SGD 1309.671617 9704.866052 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 297.493792 509.328812 \n", + " [Unconstrained] DP-SGD 324.902797 782.168627 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 403.837204 998.516965 \n", + " [Unconstrained] DP-SGD 424.317646 4314.654589 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 1133.571005 13389.174640 \n", + " [Unconstrained] DP-SGD 670.651889 4107.234979 \n", + "9_census [Lipschitz] Clipless DP-SGD 3082.371330 8192.256904 \n", + " [Unconstrained] DP-SGD 2298.387170 68978.514171 \n", + "\n", + " \\\n", + " 50% 75% \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 33832.470131 74528.666520 \n", + " [Unconstrained] DP-SGD 146913.288975 261562.642336 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 1106.218457 1365.052581 \n", + " [Unconstrained] DP-SGD 15527.475047 15914.127016 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 3471.148205 5947.921085 \n", + " [Unconstrained] DP-SGD 8898.133087 8989.759183 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 1783.021927 3021.826863 \n", + " [Unconstrained] DP-SGD 1107.826638 1511.607003 \n", + "33_skin [Lipschitz] Clipless DP-SGD 7315.362215 12576.503825 \n", + " [Unconstrained] DP-SGD 65604.450512 65604.450512 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 609.803009 779.524273 \n", + " [Unconstrained] DP-SGD 2207.534122 2846.807861 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 1371.006036 2689.749789 \n", + " [Unconstrained] DP-SGD 15563.628340 16885.352564 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 39128.973794 135084.460163 \n", + " [Unconstrained] DP-SGD 11284.685779 14371.910644 \n", + "9_census [Lipschitz] Clipless DP-SGD 10982.626510 26077.858949 \n", + " [Unconstrained] DP-SGD 82004.339337 84395.474815 \n", + "\n", + " \n", + " max \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 252637.987208 \n", + " [Unconstrained] DP-SGD 261562.642336 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 3481.084037 \n", + " [Unconstrained] DP-SGD 15914.127016 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 35086.627150 \n", + " [Unconstrained] DP-SGD 9748.688793 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 6199.828029 \n", + " [Unconstrained] DP-SGD 1511.607003 \n", + "33_skin [Lipschitz] Clipless DP-SGD 37232.936525 \n", + " [Unconstrained] DP-SGD 65604.450512 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 1614.569068 \n", + " [Unconstrained] DP-SGD 2846.807861 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 7941.281772 \n", + " [Unconstrained] DP-SGD 16885.352564 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 135084.460163 \n", + " [Unconstrained] DP-SGD 28718.150520 \n", + "9_census [Lipschitz] Clipless DP-SGD 104678.196144 \n", + " [Unconstrained] DP-SGD 119632.448363 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "histories_merged = pd.concat([histories, opacus_hist], axis=0)\n", + "small_eps = histories_merged[(histories_merged[\"epsilon\"] <= 1.0) & (histories_merged[\"epsilon\"] >= 0.8)]\n", + "small_eps = small_eps[['dataset_name', 'val_auc', 'runtime', 'Algorithm']]\n", + "described = small_eps.groupby([\"dataset_name\", \"Algorithm\"]).describe()\n", + "described = described * 100\n", + "described" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
val_aucruntimeval_aucruntime
countmeanstdmin25%50%75%maxcountmeanstdmin25%50%75%maxiqriqr
dataset_nameAlgorithm
11_donors[Lipschitz] Clipless DP-SGD164400.096.4515789.11318517.63966899.46017499.99676699.999827100.000000164400.061407.73199565441.4611692482.98749920043.53702133832.47013174528.666520252637.9872080.53965354485.129499
[Unconstrained] DP-SGD11500.099.7036312.32274178.02271499.99755999.99985899.999898100.00000011500.0155162.97058685635.5658085844.29976973720.919514146913.288975261562.642336261562.6423360.002338187841.722822
1_ALOI[Lipschitz] Clipless DP-SGD23500.051.8236921.79894544.70983150.31393251.81366853.12481555.95424823500.01221.679546651.378530445.251513767.0021891106.2184571365.0525813481.0840372.810884598.050392
[Unconstrained] DP-SGD16000.051.1884021.93994147.02940049.95222751.20767852.22494256.53998516000.011183.5909066028.492954440.2578834164.99669615527.47504715914.12701615914.1270162.27271511749.130321
22_magic.gamma[Lipschitz] Clipless DP-SGD1009500.082.8578225.86294836.68699381.58923484.79317486.41418889.6505771009500.05948.3053626491.375994409.8542452385.5443723471.1482055947.92108535086.6271504.8249543562.376714
[Unconstrained] DP-SGD20800.085.9418955.49218045.32372782.02335886.32358289.94839590.56550220800.08358.1253991711.000937369.8229558354.2619418898.1330878989.7591839748.6887937.925038635.497242
32_shuttle[Lipschitz] Clipless DP-SGD173600.055.80004330.4005480.54193531.39139059.07899782.40600799.320984173600.02224.5512821375.473827449.4073631156.6890241783.0219273021.8268636199.82802951.0146161865.137839
[Unconstrained] DP-SGD1500.089.33398322.8927547.46690094.07649394.71101997.71185498.2764751500.0992.853699435.060059411.808443594.4733381107.8266381511.6070031511.6070033.635361917.133665
33_skin[Lipschitz] Clipless DP-SGD774200.098.4290403.9572227.62967698.98016599.39034999.56726799.750799774100.010057.9893748105.187836776.9175534437.7670767315.36221512576.50382537232.9365250.5871038138.736749
[Unconstrained] DP-SGD6700.088.94757822.66983821.91692198.23214498.59874698.90236399.9732056700.047952.59937027312.0047671309.6716179704.86605265604.45051265604.45051265604.4505120.67021855899.584460
47_yeast[Lipschitz] Clipless DP-SGD437500.057.1976556.75384724.50348952.79475558.03543962.11348575.132811437000.0657.247671187.621443297.493792509.328812609.803009779.5242731614.5690689.318730270.195460
[Unconstrained] DP-SGD8000.060.1918329.06251242.87229759.08516965.02576365.74686866.8215808000.02082.814635912.533382324.902797782.1686272207.5341222846.8078612846.8078616.6616992064.639235
5_campaign[Lipschitz] Clipless DP-SGD73400.073.5984457.48109335.36320070.98479076.56868178.68186882.16207073400.02223.2360041919.194831403.837204998.5169651371.0060362689.7497897941.2817727.6970791691.232824
[Unconstrained] DP-SGD10200.083.0153175.38604860.43585577.88285584.26191687.79965189.99231210200.010891.4522336652.474763424.3176464314.65458915563.62834016885.35256416885.3525649.91679712570.697975
8_celeba[Lipschitz] Clipless DP-SGD30600.072.49323414.87368729.98862064.96715870.64822081.51245396.49909730600.058119.98944652693.5212081133.57100513389.17464039128.973794135084.460163135084.46016316.545294121695.285523
[Unconstrained] DP-SGD5300.087.7577969.01535760.55736478.14005592.81269694.04225596.6316135300.012716.7995409495.836684670.6518894107.23497911284.68577914371.91064428718.15052015.90220010264.675665
9_census[Lipschitz] Clipless DP-SGD27600.082.78479413.85302250.00000084.12195690.31789091.37425392.49222327600.029663.31330536842.4423263082.3713308192.25690410982.62651026077.858949104678.1961447.25229717885.602045
[Unconstrained] DP-SGD19200.088.0877185.20527667.56507685.68227889.45492591.74213593.26439019200.077589.14811431185.8880382298.38717068978.51417182004.33933784395.474815119632.4483636.05985715416.960645
\n", + "
" + ], + "text/plain": [ + " val_auc \\\n", + " count mean std \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 164400.0 96.451578 9.113185 \n", + " [Unconstrained] DP-SGD 11500.0 99.703631 2.322741 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 23500.0 51.823692 1.798945 \n", + " [Unconstrained] DP-SGD 16000.0 51.188402 1.939941 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 1009500.0 82.857822 5.862948 \n", + " [Unconstrained] DP-SGD 20800.0 85.941895 5.492180 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 173600.0 55.800043 30.400548 \n", + " [Unconstrained] DP-SGD 1500.0 89.333983 22.892754 \n", + "33_skin [Lipschitz] Clipless DP-SGD 774200.0 98.429040 3.957222 \n", + " [Unconstrained] DP-SGD 6700.0 88.947578 22.669838 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 437500.0 57.197655 6.753847 \n", + " [Unconstrained] DP-SGD 8000.0 60.191832 9.062512 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 73400.0 73.598445 7.481093 \n", + " [Unconstrained] DP-SGD 10200.0 83.015317 5.386048 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 30600.0 72.493234 14.873687 \n", + " [Unconstrained] DP-SGD 5300.0 87.757796 9.015357 \n", + "9_census [Lipschitz] Clipless DP-SGD 27600.0 82.784794 13.853022 \n", + " [Unconstrained] DP-SGD 19200.0 88.087718 5.205276 \n", + "\n", + " \\\n", + " min 25% 50% \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 17.639668 99.460174 99.996766 \n", + " [Unconstrained] DP-SGD 78.022714 99.997559 99.999858 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 44.709831 50.313932 51.813668 \n", + " [Unconstrained] DP-SGD 47.029400 49.952227 51.207678 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 36.686993 81.589234 84.793174 \n", + " [Unconstrained] DP-SGD 45.323727 82.023358 86.323582 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 0.541935 31.391390 59.078997 \n", + " [Unconstrained] DP-SGD 7.466900 94.076493 94.711019 \n", + "33_skin [Lipschitz] Clipless DP-SGD 7.629676 98.980165 99.390349 \n", + " [Unconstrained] DP-SGD 21.916921 98.232144 98.598746 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 24.503489 52.794755 58.035439 \n", + " [Unconstrained] DP-SGD 42.872297 59.085169 65.025763 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 35.363200 70.984790 76.568681 \n", + " [Unconstrained] DP-SGD 60.435855 77.882855 84.261916 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 29.988620 64.967158 70.648220 \n", + " [Unconstrained] DP-SGD 60.557364 78.140055 92.812696 \n", + "9_census [Lipschitz] Clipless DP-SGD 50.000000 84.121956 90.317890 \n", + " [Unconstrained] DP-SGD 67.565076 85.682278 89.454925 \n", + "\n", + " runtime \\\n", + " 75% max count \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 99.999827 100.000000 164400.0 \n", + " [Unconstrained] DP-SGD 99.999898 100.000000 11500.0 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 53.124815 55.954248 23500.0 \n", + " [Unconstrained] DP-SGD 52.224942 56.539985 16000.0 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 86.414188 89.650577 1009500.0 \n", + " [Unconstrained] DP-SGD 89.948395 90.565502 20800.0 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 82.406007 99.320984 173600.0 \n", + " [Unconstrained] DP-SGD 97.711854 98.276475 1500.0 \n", + "33_skin [Lipschitz] Clipless DP-SGD 99.567267 99.750799 774100.0 \n", + " [Unconstrained] DP-SGD 98.902363 99.973205 6700.0 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 62.113485 75.132811 437000.0 \n", + " [Unconstrained] DP-SGD 65.746868 66.821580 8000.0 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 78.681868 82.162070 73400.0 \n", + " [Unconstrained] DP-SGD 87.799651 89.992312 10200.0 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 81.512453 96.499097 30600.0 \n", + " [Unconstrained] DP-SGD 94.042255 96.631613 5300.0 \n", + "9_census [Lipschitz] Clipless DP-SGD 91.374253 92.492223 27600.0 \n", + " [Unconstrained] DP-SGD 91.742135 93.264390 19200.0 \n", + "\n", + " \\\n", + " mean std \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 61407.731995 65441.461169 \n", + " [Unconstrained] DP-SGD 155162.970586 85635.565808 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 1221.679546 651.378530 \n", + " [Unconstrained] DP-SGD 11183.590906 6028.492954 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 5948.305362 6491.375994 \n", + " [Unconstrained] DP-SGD 8358.125399 1711.000937 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 2224.551282 1375.473827 \n", + " [Unconstrained] DP-SGD 992.853699 435.060059 \n", + "33_skin [Lipschitz] Clipless DP-SGD 10057.989374 8105.187836 \n", + " [Unconstrained] DP-SGD 47952.599370 27312.004767 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 657.247671 187.621443 \n", + " [Unconstrained] DP-SGD 2082.814635 912.533382 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 2223.236004 1919.194831 \n", + " [Unconstrained] DP-SGD 10891.452233 6652.474763 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 58119.989446 52693.521208 \n", + " [Unconstrained] DP-SGD 12716.799540 9495.836684 \n", + "9_census [Lipschitz] Clipless DP-SGD 29663.313305 36842.442326 \n", + " [Unconstrained] DP-SGD 77589.148114 31185.888038 \n", + "\n", + " \\\n", + " min 25% \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 2482.987499 20043.537021 \n", + " [Unconstrained] DP-SGD 5844.299769 73720.919514 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 445.251513 767.002189 \n", + " [Unconstrained] DP-SGD 440.257883 4164.996696 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 409.854245 2385.544372 \n", + " [Unconstrained] DP-SGD 369.822955 8354.261941 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 449.407363 1156.689024 \n", + " [Unconstrained] DP-SGD 411.808443 594.473338 \n", + "33_skin [Lipschitz] Clipless DP-SGD 776.917553 4437.767076 \n", + " [Unconstrained] DP-SGD 1309.671617 9704.866052 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 297.493792 509.328812 \n", + " [Unconstrained] DP-SGD 324.902797 782.168627 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 403.837204 998.516965 \n", + " [Unconstrained] DP-SGD 424.317646 4314.654589 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 1133.571005 13389.174640 \n", + " [Unconstrained] DP-SGD 670.651889 4107.234979 \n", + "9_census [Lipschitz] Clipless DP-SGD 3082.371330 8192.256904 \n", + " [Unconstrained] DP-SGD 2298.387170 68978.514171 \n", + "\n", + " \\\n", + " 50% 75% \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 33832.470131 74528.666520 \n", + " [Unconstrained] DP-SGD 146913.288975 261562.642336 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 1106.218457 1365.052581 \n", + " [Unconstrained] DP-SGD 15527.475047 15914.127016 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 3471.148205 5947.921085 \n", + " [Unconstrained] DP-SGD 8898.133087 8989.759183 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 1783.021927 3021.826863 \n", + " [Unconstrained] DP-SGD 1107.826638 1511.607003 \n", + "33_skin [Lipschitz] Clipless DP-SGD 7315.362215 12576.503825 \n", + " [Unconstrained] DP-SGD 65604.450512 65604.450512 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 609.803009 779.524273 \n", + " [Unconstrained] DP-SGD 2207.534122 2846.807861 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 1371.006036 2689.749789 \n", + " [Unconstrained] DP-SGD 15563.628340 16885.352564 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 39128.973794 135084.460163 \n", + " [Unconstrained] DP-SGD 11284.685779 14371.910644 \n", + "9_census [Lipschitz] Clipless DP-SGD 10982.626510 26077.858949 \n", + " [Unconstrained] DP-SGD 82004.339337 84395.474815 \n", + "\n", + " val_auc \\\n", + " max iqr \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 252637.987208 0.539653 \n", + " [Unconstrained] DP-SGD 261562.642336 0.002338 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 3481.084037 2.810884 \n", + " [Unconstrained] DP-SGD 15914.127016 2.272715 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 35086.627150 4.824954 \n", + " [Unconstrained] DP-SGD 9748.688793 7.925038 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 6199.828029 51.014616 \n", + " [Unconstrained] DP-SGD 1511.607003 3.635361 \n", + "33_skin [Lipschitz] Clipless DP-SGD 37232.936525 0.587103 \n", + " [Unconstrained] DP-SGD 65604.450512 0.670218 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 1614.569068 9.318730 \n", + " [Unconstrained] DP-SGD 2846.807861 6.661699 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 7941.281772 7.697079 \n", + " [Unconstrained] DP-SGD 16885.352564 9.916797 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 135084.460163 16.545294 \n", + " [Unconstrained] DP-SGD 28718.150520 15.902200 \n", + "9_census [Lipschitz] Clipless DP-SGD 104678.196144 7.252297 \n", + " [Unconstrained] DP-SGD 119632.448363 6.059857 \n", + "\n", + " runtime \n", + " iqr \n", + "dataset_name Algorithm \n", + "11_donors [Lipschitz] Clipless DP-SGD 54485.129499 \n", + " [Unconstrained] DP-SGD 187841.722822 \n", + "1_ALOI [Lipschitz] Clipless DP-SGD 598.050392 \n", + " [Unconstrained] DP-SGD 11749.130321 \n", + "22_magic.gamma [Lipschitz] Clipless DP-SGD 3562.376714 \n", + " [Unconstrained] DP-SGD 635.497242 \n", + "32_shuttle [Lipschitz] Clipless DP-SGD 1865.137839 \n", + " [Unconstrained] DP-SGD 917.133665 \n", + "33_skin [Lipschitz] Clipless DP-SGD 8138.736749 \n", + " [Unconstrained] DP-SGD 55899.584460 \n", + "47_yeast [Lipschitz] Clipless DP-SGD 270.195460 \n", + " [Unconstrained] DP-SGD 2064.639235 \n", + "5_campaign [Lipschitz] Clipless DP-SGD 1691.232824 \n", + " [Unconstrained] DP-SGD 12570.697975 \n", + "8_celeba [Lipschitz] Clipless DP-SGD 121695.285523 \n", + " [Unconstrained] DP-SGD 10264.675665 \n", + "9_census [Lipschitz] Clipless DP-SGD 17885.602045 \n", + " [Unconstrained] DP-SGD 15416.960645 " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "described[(\"val_auc\",\"iqr\")]=described[\"val_auc\"][\"75%\"]-described[\"val_auc\"][\"25%\"]\n", + "described[(\"runtime\",\"iqr\")]=described[\"runtime\"][\"75%\"]-described[\"runtime\"][\"25%\"]\n", + "described" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ALOI & 39,627 & 27 & $10^{-5}$ & 52.2~(2.3) & \\textbf{53.1~(2.8)} \\\\\n", + "campaign & 32,950 & 62 & $10^{-5}$ & \\textbf{87.8~(9.9)} & 78.7~(7.7) \\\\\n", + "celeba & 162,079 & 39 & $10^{-6}$ & \\textbf{94.0~(15.9)} & 81.5~(16.5) \\\\\n", + "census & 239,428 & 500 & $10^{-6}$ & \\textbf{91.7~(6.1)} & 91.4~(7.3) \\\\\n", + "donors & 495,460 & 10 & $10^{-6}$ & \\textbf{100.0~(0.0)} & 100.0~(0.5) \\\\\n", + "magic & 15,216 & 10 & $10^{-5}$ & \\textbf{89.9~(7.9)} & 86.4~(4.8) \\\\\n", + "shuttle & 39,277 & 9 & $10^{-5}$ & \\textbf{97.7~(3.6)} & 82.4~(51.0) \\\\\n", + "skin & 196,045 & 3 & $10^{-6}$ & 98.9~(0.7) & \\textbf{99.6~(0.6)} \\\\\n", + "yeast & 1,187 & 8 & $10^{-4}$ & \\textbf{65.7~(6.7)} & 62.1~(9.3) \\\\\n" + ] + } + ], + "source": [ + "def report_stats(with_runtime):\n", + " for ds in sorted(dataset_delta, key=lambda k: int(k.split('_')[0])):\n", + " delta = dataset_delta[ds]\n", + " ds_features = dataset_features[ds]\n", + " ds_size = dataset_size[ds]\n", + " ds_name = ''.join(ds.split('_')[1:]) if ds != \"22_magic.gamma\" else \"magic\"\n", + "\n", + " target = \"75%\"\n", + "\n", + " row = described.loc[(ds, \"[Lipschitz] Clipless DP-SGD\"), :]\n", + " median = float(row[\"val_auc\"][target])\n", + " iqr = float(row[\"val_auc\"][\"iqr\"])\n", + " result_str = f'{median:.1f}~({iqr:.1f})'\n", + " runtime = float(row[\"runtime\"][target])\n", + " runtime_std = float(row[\"runtime\"][\"iqr\"])\n", + "\n", + " row_opacus = described.loc[(ds, \"[Unconstrained] DP-SGD\"), :]\n", + " median_opacus = float(row_opacus[\"val_auc\"][target])\n", + " iqr_opacus = float(row_opacus[\"val_auc\"][\"iqr\"])\n", + " result_str_opacus = f'{median_opacus:.1f}~({iqr_opacus:.1f})'\n", + " runtime_opacus = float(row_opacus[\"runtime\"][target])\n", + " runtime_std_opacus = float(row_opacus[\"runtime\"][\"iqr\"])\n", + "\n", + " if median > median_opacus:\n", + " result_str = f\"\\\\textbf{{{result_str}}}\"\n", + " else:\n", + " result_str_opacus = f\"\\\\textbf{{{result_str_opacus}}}\"\n", + "\n", + " if runtime < runtime_opacus:\n", + " runtime = f\"\\\\textbf{{{runtime:.1f}}}\"\n", + " runtime_opacus = f\"{runtime_opacus:.1f}\"\n", + " else:\n", + " runtime = f\"{runtime:.1f}\"\n", + " runtime_opacus = f\"\\\\textbf{{{runtime_opacus:.1f}}}\"\n", + "\n", + " tokens = [f\"{ds_name}\", f\"{ds_size:,}\", f\"{ds_features:,}\", f\"$10^{{{-delta}}}$\",\n", + " f\"{result_str_opacus}\", f\"{result_str}\"]\n", + " \n", + " if with_runtime:\n", + " tokens += [f\"{runtime_opacus}~({runtime_std_opacus:.1f})\",\n", + " f\"{runtime}~({runtime_std:.1f})\"]\n", + "\n", + " print(f\"{' & '.join(tokens)} \\\\\\\\\")\n", + "report_stats(with_runtime=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ALOI & 39,627 & 27 & $10^{-5}$ & $\\textbf{56.5}$ & $56.2$\\\\\n", + "campaign & 32,950 & 62 & $10^{-5}$ & $\\textbf{90.0}$ & $82.2$\\\\\n", + "celeba & 162,079 & 39 & $10^{-6}$ & $\\textbf{96.6}$ & $96.5$\\\\\n", + "census & 239,428 & 500 & $10^{-6}$ & $\\textbf{93.3}$ & $92.5$\\\\\n", + "donors & 495,460 & 10 & $10^{-6}$ & $100.0$ & $\\textbf{100.0}$\\\\\n", + "magic & 15,216 & 10 & $10^{-5}$ & $\\textbf{90.7}$ & $89.7$\\\\\n", + "shuttle & 39,277 & 9 & $10^{-5}$ & $98.3$ & $\\textbf{99.4}$\\\\\n", + "skin & 196,045 & 3 & $10^{-6}$ & $\\textbf{100.0}$ & $99.8$\\\\\n", + "yeast & 1,187 & 8 & $10^{-4}$ & $66.8$ & $\\textbf{75.1}$\\\\\n" + ] + } + ], + "source": [ + "def report_best(with_runtime):\n", + " small_eps = histories_merged[(histories_merged[\"epsilon\"] <= 1.0)]\n", + " small_eps = small_eps[['dataset_name', 'val_auc', 'runtime', 'Algorithm']]\n", + " for ds in sorted(dataset_delta, key=lambda k: int(k.split('_')[0])):\n", + " ds_name = ''.join(ds.split('_')[1:]) if ds != \"22_magic.gamma\" else \"magic\"\n", + "\n", + " small_eps_ds = small_eps[(small_eps[\"dataset_name\"] == ds) & (small_eps[\"Algorithm\"] == \"[Lipschitz] Clipless DP-SGD\")]\n", + " idx = small_eps_ds['val_auc'].argmax()\n", + " row = small_eps_ds.iloc[idx]\n", + "\n", + " delta = dataset_delta[ds]\n", + " ds_features = dataset_features[ds]\n", + " ds_size = dataset_size[ds]\n", + "\n", + " max_auroc = float(row[\"val_auc\"])*100\n", + " runtime = float(row[\"runtime\"])\n", + " result_str = f'{max_auroc:.1f}'\n", + "\n", + " small_eps_ds_opacus = small_eps[(small_eps[\"dataset_name\"] == ds) & (small_eps[\"Algorithm\"] == \"[Unconstrained] DP-SGD\")]\n", + " idx = small_eps_ds_opacus['val_auc'].argmax()\n", + " row_opacus = small_eps_ds_opacus.iloc[idx]\n", + " max_auroc_opacus = float(row_opacus[\"val_auc\"])*100\n", + " runtime_opacus = float(row_opacus[\"runtime\"])\n", + " result_str_opacus = f'{max_auroc_opacus:.1f}'\n", + "\n", + " if max_auroc > max_auroc_opacus:\n", + " result_str = f\"\\\\textbf{{{result_str}}}\"\n", + " else:\n", + " result_str_opacus = f\"\\\\textbf{{{result_str_opacus}}}\"\n", + "\n", + " if runtime < runtime_opacus:\n", + " runtime = f\"\\\\textbf{{{runtime:.1f}}}\"\n", + " runtime_opacus = f\"{runtime_opacus:.1f}\"\n", + " else:\n", + " runtime = f\"{runtime:.1f}\"\n", + " runtime_opacus = f\"\\\\textbf{{{runtime_opacus:.1f}}}\"\n", + "\n", + " tokens = [f\"{ds_name}\", f\"{ds_size:,}\", f\"{ds_features:,}\", f\"$10^{{{-delta}}}$\",\n", + " f\"${result_str_opacus}$\", f\"${result_str}$\"]\n", + " \n", + " if with_runtime:\n", + " tokens += [f\"${runtime_opacus}$\", f\"${runtime}$\"]\n", + "\n", + " full_str = ' & '.join(tokens)\n", + " print(f\"{full_str}\\\\\\\\\")\n", + "report_best(with_runtime=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/experiments/tabular/main.py b/experiments/tabular/main.py new file mode 100644 index 0000000..b82bf76 --- /dev/null +++ b/experiments/tabular/main.py @@ -0,0 +1,249 @@ +# -*- coding: utf-8 -*- +# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All +# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, +# CRIAQ and ANITI - https://www.deel.ai/ +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +import random + +import numpy as np +import tensorflow as tf +from absl import app +from ml_collections import config_dict +from ml_collections import config_flags +from sklearn.model_selection import train_test_split + +import deel.lipdp.layers as DP_layers +from deel.lipdp import losses +from deel.lipdp.dynamic import AdaptiveQuantileClipping +from deel.lipdp.model import DP_Accountant +from deel.lipdp.model import DP_Model +from deel.lipdp.model import DPParameters +from deel.lipdp.pipeline import bound_clip_value +from deel.lipdp.pipeline import default_delta_value +from deel.lipdp.pipeline import load_adbench_data +from deel.lipdp.pipeline import prepare_tabular_data +from deel.lipdp.sensitivity import get_max_epochs +from deel.lipdp.utils import ScaledAUC +from experiments.wandb_utils import init_wandb +from experiments.wandb_utils import run_with_wandb +from wandb.keras import WandbCallback + + +def default_cfg_cifar10(): + cfg = config_dict.ConfigDict() + cfg.batch_size = 200 + cfg.clip_loss_gradient = None # not required for dynamic clipping. + cfg.depth = 2 + cfg.dataset_name = "1_ALOI" + cfg.dynamic_clipping = "quantiles" # can be "fixed", "laplace", "quantiles". "fixed" requires a clipping value. + cfg.dynamic_clipping_quantiles = 0.9 + cfg.delta = 1e-5 + cfg.epsilon_max = 1.5 # budget! + cfg.input_bound = None + cfg.learning_rate = 8e-2 # works well for vanilla SGD. + cfg.log_wandb = "disabled" + cfg.loss = "TauBCE" + cfg.multiplicity = 0 + cfg.noise_multiplier = 1.6 + cfg.noisify_strategy = "per-layer" + cfg.optimizer = "SGD" + cfg.sweep_id = "" # useful to resume a sweep. + cfg.sweep_yaml_config = "" # useful to load a sweep from a yaml file. + cfg.tau = 10.0 # temperature for the softmax. + cfg.width_multiplier = 1 + return cfg + + +project = "ICLR_Tabular" +cfg = default_cfg_cifar10() +_CONFIG = config_flags.DEFINE_config_dict( + "cfg", cfg +) # for FLAGS parsing in command line. + + +def create_MLP(dataset_metadata, dp_parameters): + layers = [ + DP_layers.DP_BoundedInput( + input_shape=dataset_metadata.input_shape, + upper_bound=dataset_metadata.max_norm, + ) + ] + + width = 64 * cfg.width_multiplier + for _ in range(cfg.depth): + layers += [ + DP_layers.DP_QuickSpectralDense( + units=width, use_bias=False, kernel_initializer="orthogonal" + ), + # DP_layers.DP_LayerCentering(), + DP_layers.DP_GroupSort(2), + ] + + layers.append( + DP_layers.DP_QuickSpectralDense( + units=1, use_bias=False, kernel_initializer="orthogonal" + ) + ) + + layers.append( + DP_layers.DP_ClipGradient( + clip_value=cfg.clip_loss_gradient, + mode="dynamic", + ) + ) + + model = DP_Model( + layers, + dp_parameters=dp_parameters, + dataset_metadata=dataset_metadata, + name="mlp", + ) + + model.build(input_shape=(None, *dataset_metadata.input_shape)) + + return model + + +def train(): + init_wandb(cfg=cfg, project=project) + + ########################## + #### Dataset loading ##### + ########################## + + x_data, y_data = load_adbench_data( + cfg.dataset_name, dataset_dir="/data/datasets/adbench", standardize=True + ) + + print(f"x_data.shape = {x_data.shape}") + print(f"y_data.shape = {y_data.shape} with labels {np.unique(y_data)}") + + # clipping preprocessing allows to control input bound + input_bound = cfg.input_bound + if input_bound is None: + norms = np.linalg.norm(x_data, axis=1) + input_bound = float(np.max(norms)) + bound_fct = bound_clip_value(input_bound) + + random_state = random.randint(0, 1000) + splits = train_test_split( + x_data, y_data, test_size=0.2, random_state=random_state, stratify=y_data + ) + + ds_train, ds_test, dataset_metadata = prepare_tabular_data( + *splits, + batch_size=cfg.batch_size, + drop_remainder=True, # required for correct sensitivity computation. + bound_fct=bound_fct, + ) + + ########################## + #### Model definition #### + ########################## + + # declare the privacy parameters + dp_parameters = DPParameters( + noisify_strategy=cfg.noisify_strategy, + noise_multiplier=cfg.noise_multiplier, + delta=default_delta_value(dataset_metadata), + ) + + model = create_MLP(dataset_metadata, dp_parameters) + + ########################## + ######## Loss setup ###### + ########################## + + if cfg.loss == "TauBCE": + loss = losses.DP_TauBCE(cfg.tau) + + ########################## + ##### Optimizer setup #### + ########################## + + if cfg.optimizer == "Adam": + optimizer = tf.keras.optimizers.Adam(learning_rate=cfg.learning_rate) + elif cfg.optimizer == "SGD": + # geometric sequence: memory length ~= 1 / (1 - momentum) + # memory length = nb_steps_per_epochs => momentum = 1 - (1./nb_steps_per_epochs) + momentum = 1 - 1.0 / dataset_metadata.nb_steps_per_epochs + momentum = max(0.5, min(0.99, momentum)) # reasonable range + optimizer = tf.keras.optimizers.SGD( + learning_rate=cfg.learning_rate, momentum=momentum + ) + else: + raise ValueError(f"Unknown optimizer {cfg.optimizer}") + + model.compile( + loss=loss, + optimizer=optimizer, + metrics=[ + "accuracy", + ScaledAUC(scale=cfg.tau), + ], # accuracy metric is necessary for dynamic loss gradient clipping with "laplace" + run_eagerly=False, + ) + + callbacks = [ + WandbCallback(save_model=False, monitor="val_auc"), + DP_Accountant(), + ] + + ######################## + ### Dynamic clipping ### + ######################## + + if cfg.dynamic_clipping == "quantiles": + adaptive = AdaptiveQuantileClipping( + ds_train=ds_train, + patience=1, + noise_multiplier=cfg.noise_multiplier * 5, # more noisy. + quantile=cfg.dynamic_clipping_quantiles, + learning_rate=1.0, + ) + adaptive.set_model(model) + callbacks.append(adaptive) + else: + raise ValueError(f"Unknown clipping strategy {cfg.dynamic_clipping}") + + ######################## + ### Training process ### + ######################## + + if cfg.epsilon_max is None: + num_epochs = 50 # useful for debugging. + else: + # compute the max number of epochs to reach the budget. + num_epochs = get_max_epochs(cfg.epsilon_max, model, safe=True) + + hist = model.fit( + ds_train, + epochs=num_epochs, + validation_data=ds_test, + callbacks=callbacks, + ) + + +def main(_): + run_with_wandb(cfg=cfg, train_function=train, project=project) + + +if __name__ == "__main__": + app.run(main) diff --git a/experiments/tabular/sweep_1.yaml b/experiments/tabular/sweep_1.yaml new file mode 100644 index 0000000..ddaaf78 --- /dev/null +++ b/experiments/tabular/sweep_1.yaml @@ -0,0 +1,29 @@ +method: bayes +metric: + name: val_auc + goal: maximize +parameters: + noise_multiplier: + min: 0.8 + max: 6.0 + distribution: uniform + learning_rate: + min: 0.00001 + max: 1.0 + distribution: log_uniform_values + batch_size: + values: [2000, 5000, 10000] + distribution: categorical + tau: + min: 0.01 + max: 100.0 + distribution: log_uniform_values + epsilon_max: + value: 1. + distribution: constant + width_multiplier: + values: [1, 2, 3] + distribution: categorical + depth: + values: [1, 2] + distribution: categorical diff --git a/wandb_sweeps/src_config/wandb_utils.py b/experiments/wandb_utils.py similarity index 87% rename from wandb_sweeps/src_config/wandb_utils.py rename to experiments/wandb_utils.py index 29d701a..0cc81d5 100644 --- a/wandb_sweeps/src_config/wandb_utils.py +++ b/experiments/wandb_utils.py @@ -42,7 +42,12 @@ def init_wandb(cfg: ConfigDict, project: str): cfg[key] = value -def run_with_wandb(cfg: ConfigDict, train_function: Callable, project: str): +def run_with_wandb( + cfg: ConfigDict, + train_function: Callable, + project: str, + allow_defaults: bool = False, +): """Run an individual run or a sweep.""" wandb.login() # indivudal run @@ -57,13 +62,23 @@ def run_with_wandb(cfg: ConfigDict, train_function: Callable, project: str): sweep_config = _get_sweep_config_from_yaml(cfg) else: # default sweep config + assert ( + allow_defaults + ), "No sweep config specified and allow_defaults is False" + print("No sweep config specified, using default config.") sweep_config = _get_default_sweep_config(cfg) sweep_id = wandb.sweep(sweep=sweep_config, project=project) else: + assert ( + cfg.sweep_yaml_config == "" + ), "Cannot specify both sweep_id and sweep_yaml_config" sweep_id = cfg.sweep_id - wandb.agent( - sweep_id, function=train_function, project=project, count=cfg.opt_iterations + count = ( + cfg.sweep_count if ("sweep_count" in cfg and cfg.sweep_count > 0) else None ) + wandb.agent(sweep_id, function=train_function, project=project, count=count) + else: + raise ValueError(f"Unknown log_wandb value {cfg.log_wandb}") def _sanitize_sweep_config_from_cfg(sweep_config: dict, cfg: ConfigDict) -> dict: @@ -138,7 +153,7 @@ def _get_default_sweep_config(cfg): }, } - if cfg.loss == "TauCategoricalCrossentropy": + if cfg.loss == "TauCategoricalCrossentropy" or cfg.loss == "TauBCE": parameters_loss = { "tau": {"max": 200.0, "min": 0.001, "distribution": "log_uniform_values"}, } diff --git a/mkdocs.yml b/mkdocs.yml index e625a8b..bca7e67 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,4 +1,4 @@ -site_name: lipdp +site_name: lip-dp # Set navigation here nav: @@ -9,14 +9,15 @@ nav: - deel.lipdp.model module: api/model.md - deel.lipdp.pipeline module: api/pipeline.md - deel.lipdp.sensitivity module: api/sensitivity.md -# - Tutorials: -# - "Demo 0: How to use notebook in documentation": notebooks/demo_fake.ipynb + - Tutorials: + - "Basic use on MNIST": notebooks/basic_mnist.ipynb + - "Residuals and dynamic clipping on CIFAR10": notebooks/advanced_cifar10.ipynb - Contributing: CONTRIBUTING.md theme: name: "material" - logo: assets/logo.png - favicon: assets/logo.png + logo: assets/lipdp_logo.png + favicon: assets/lipdp_logo.png palette: - scheme: default primary: dark @@ -65,5 +66,5 @@ extra_javascript: - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js - js/custom.js -repo_name: "deel-ai/" -repo_url: "https://github.com/deel-ai/" +repo_name: "Algue-Rythme/lip-dp" +repo_url: "https://github.com/Algue-Rythme/lip-dp" diff --git a/requirements.txt b/requirements.txt index cc787fe..fa3f748 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,11 @@ scipy<=1.9.3 autodp +absl-py numpy deel-lip matplotlib +ml_collections pandas -tensorflow +tensorflow<2.16 tensorflow-datasets +wandb \ No newline at end of file diff --git a/requirements_dev.txt b/requirements_dev.txt index 76797f8..614f9c8 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,7 +1,6 @@ setuptools pre-commit -ml_collections -absl-py +pytest tox black pytest @@ -10,5 +9,4 @@ mkdocs mkdocs-material mkdocstrings[python] mknotebooks -bump2version -wandb \ No newline at end of file +bump2version \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index 84a9214..78b97b1 100644 --- a/setup.cfg +++ b/setup.cfg @@ -27,9 +27,9 @@ ignore_missing_imports = True ignore_missing_imports = True [tox:tox] -envlist = py36,py37,py38,py36-lint +envlist = py310-lint -[testenv:py36-lint] +[testenv:py310-lint] deps = black flake8 diff --git a/setup.py b/setup.py index 05f1a58..8c7a8b7 100644 --- a/setup.py +++ b/setup.py @@ -27,27 +27,38 @@ from setuptools import find_packages from setuptools import setup -this_directory = os.path.dirname(__file__) -req_path = os.path.join(this_directory, "requirements.txt") -req_dev_path = os.path.join(this_directory, "requirements_dev.txt") +REQ_PATH = "requirements.txt" +REQ_DEV_PATH = "requirements_dev.txt" install_requires = [] -if os.path.exists(req_path): - with open(req_path) as fp: +if os.path.exists(REQ_PATH): + print("Loading requirements") + with open(REQ_PATH, encoding="utf-8") as fp: install_requires = [line.strip() for line in fp] -if os.path.exists(req_dev_path): - with open(req_dev_path) as fp: - install_dev_requires = [line.strip() for line in fp] +dev_requires = [ + "setuptools", + "pre-commit", + "pytest", + "tox", + "black", + "pytest", + "pylint", + "mkdocs", + "mkdocs-material", + "mkdocstrings[python]", + "mknotebooks", + "bump2version", +] -readme_path = os.path.join(this_directory, "README.md") +README_PATH = "README.md" readme_contents = "" -if os.path.exists(readme_path): - with open(readme_path, encoding="utf8") as fp: +if os.path.exists(README_PATH): + with open(README_PATH, encoding="utf8") as fp: readme_contents = fp.read().strip() -with open(os.path.join(this_directory, "deel/lipdp/VERSION"), encoding="utf8") as f: +with open("deel/lipdp/VERSION", encoding="utf8") as f: version = f.read().strip() setup( @@ -57,7 +68,7 @@ version=version, # Find the package automatically (include everything): packages=find_namespace_packages(include=["deel.*"]), - package_data={'': ['VERSION']}, + package_data={"": ["VERSION"]}, include_package_data=True, # Author information: # Author information: @@ -71,12 +82,13 @@ classifiers=[ "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", ], licence="MIT", install_requires=install_requires, extras_require={ - "dev": install_dev_requires, + "dev": dev_requires, }, ) diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..efc953c --- /dev/null +++ b/tests/README.md @@ -0,0 +1,19 @@ +# Tests + +To run all the tests, start from the root and simply type + +```bash +cd test/ +pytest . +``` + +To run a specific test , type + +```bash +cd test/ +python test_.py Test.test_ +``` + +where `, , ` are the names of the test file, the class and the test function, respectively. + +By default, tests are not run on GPU to enfore reproducibility. diff --git a/tests/losses_test.py b/tests/losses_test.py new file mode 100644 index 0000000..95682c0 --- /dev/null +++ b/tests/losses_test.py @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- +# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All +# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, +# CRIAQ and ANITI - https://www.deel.ai/ +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +import numpy as np +import tensorflow as tf +from absl.testing import absltest +from absl.testing import parameterized + +from deel.lipdp import losses + + +class LossesTest(parameterized.TestCase): + def _get_preds(self, bs: int, n_classes: int, seed: int): + y_true = np.eye(n_classes) + y_true = np.concatenate([y_true] * bs, axis=0) + np.random.seed(seed) + y_pred = np.random.uniform(size=(len(y_true), n_classes)) + return tf.constant(y_true), tf.constant(y_pred, dtype=tf.float32) + + def _test_grad_bounds(self, loss, y_true, y_pred): + with tf.GradientTape() as tape: + tape.watch(y_pred) + loss_value = loss(y_true, y_pred) + grad = tape.gradient(loss_value, y_pred) + grad_norms = tf.norm(grad, axis=-1) + + atol = 1e-7 + for grad_norm in grad_norms: + self.assertLessEqual(grad_norm, loss.get_L() + atol) + + @parameterized.parameters( + (0.1,), + (1.0,), + (10.0,), + ) + def test_tau_cce(self, tau: float): + loss = losses.DP_TauCategoricalCrossentropy(tau=tau) + y_true, y_pred = self._get_preds(bs=16, n_classes=10, seed=1337) + self._test_grad_bounds(loss, y_true, y_pred) + + @parameterized.parameters( + (0.1,), + (1.0,), + (10.0,), + ) + def test_k_cosine_similarity(self, K: float): + loss = losses.DP_KCosineSimilarity(K=K) + y_true, y_pred = self._get_preds(bs=16, n_classes=10, seed=896) + y_true = tf.cast(y_true, dtype=tf.float32) + self._test_grad_bounds(loss, y_true, y_pred) + + @parameterized.parameters( + (0.1,), + (1.0,), + (10.0,), + ) + def test_multiclass_hkr(self, alpha: float): + loss = losses.DP_MulticlassHKR(alpha=alpha) + y_true, y_pred = self._get_preds(bs=16, n_classes=10, seed=123) + self._test_grad_bounds(loss, y_true, y_pred) + + @parameterized.parameters( + (0.1,), + (1.0,), + (10.0,), + ) + def test_multiclass_hinge(self, margin: float): + loss = losses.DP_MulticlassHinge(min_margin=margin) + y_true, y_pred = self._get_preds(bs=16, n_classes=10, seed=123) + self._test_grad_bounds(loss, y_true, y_pred) + + +if __name__ == "__main__": + tf.config.set_visible_devices([], "GPU") + absltest.main() diff --git a/tests/model_test.py b/tests/model_test.py new file mode 100644 index 0000000..c9260a1 --- /dev/null +++ b/tests/model_test.py @@ -0,0 +1,148 @@ +# -*- coding: utf-8 -*- +# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All +# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, +# CRIAQ and ANITI - https://www.deel.ai/ +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +import tensorflow as tf +from absl.testing import absltest +from absl.testing import parameterized + +from deel.lipdp.dynamic import AdaptiveQuantileClipping +from deel.lipdp.layers import * +from deel.lipdp.losses import DP_TauCategoricalCrossentropy +from deel.lipdp.model import DP_Sequential +from deel.lipdp.model import DPParameters +from deel.lipdp.pipeline import bound_normalize +from deel.lipdp.pipeline import load_and_prepare_images_data + + +class ModelTest(parameterized.TestCase): + def _get_mnist_cnn(self): + ds_train, _, dataset_metadata = load_and_prepare_images_data( + "mnist", + batch_size=64, + colorspace="grayscale", + drop_remainder=True, + bound_fct=bound_normalize(), + ) + + norm_max = 1.0 + all_layers = [ + DP_BoundedInput(input_shape=(28, 28, 1), upper_bound=norm_max), + DP_SpectralConv2D( + filters=16, + kernel_size=3, + kernel_initializer="orthogonal", + strides=1, + use_bias=False, + ), + DP_AddBias(norm_max=norm_max), + DP_GroupSort(2), + DP_ScaledL2NormPooling2D(pool_size=2, strides=2), + DP_LayerCentering(), + DP_Flatten(), + DP_SpectralDense(1024, use_bias=False, kernel_initializer="orthogonal"), + DP_AddBias(norm_max=norm_max), + DP_SpectralDense(10, use_bias=False, kernel_initializer="orthogonal"), + DP_AddBias(norm_max=norm_max), + DP_ClipGradient( + clip_value=2.0**0.5, + mode="dynamic", + ), + ] + + dp_parameters = DPParameters( + noisify_strategy="per-layer", + noise_multiplier=2.2, + delta=1e-5, + ) + + model = DP_Sequential( + all_layers, + dp_parameters=dp_parameters, + dataset_metadata=dataset_metadata, + ) + + optimizer = tf.keras.optimizers.Adam(learning_rate=1e-3) + loss = DP_TauCategoricalCrossentropy( + tau=1.0, reduction=tf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE + ) + model.compile(optimizer=optimizer, loss=loss, metrics=["accuracy"]) + + return model, ds_train + + def test_forward_cnn(self): + model, ds_train = self._get_mnist_cnn() + batch_x, _ = ds_train.take(1).as_numpy_iterator().next() + logits = model(batch_x) + assert logits.shape == (len(batch_x), 10) + + def test_create_residuals(self): + input_shape = (32, 32, 3) + + patch_size = 4 + seq_len = (input_shape[0] // patch_size) * (input_shape[1] // patch_size) + multiplier = 1 + mlp_seq_dim = multiplier * seq_len + + to_add = [ + DP_Permute((2, 1)), + DP_QuickSpectralDense( + units=mlp_seq_dim, use_bias=False, kernel_initializer="orthogonal" + ), + ] + to_add.append(DP_GroupSort(2)) + to_add.append(DP_LayerCentering()) + to_add += [ + DP_QuickSpectralDense( + units=seq_len, use_bias=False, kernel_initializer="orthogonal" + ), + DP_Permute((2, 1)), + ] + + blocks = make_residuals("1-lip-add", to_add) + input_bound = 1.0 # placeholder + for layer in blocks[:-1]: + input_bound = layer.propagate_inputs(input_bound) + assert len(input_bound) == 2 + last = blocks[-1].propagate_inputs(input_bound) + assert isinstance(last, float) + + def test_adaptive_clipping(self): + num_steps_test_case = 3 + model, ds_train = self._get_mnist_cnn() + ds_train = ds_train.take(num_steps_test_case) + adaptive = AdaptiveQuantileClipping( + ds_train=ds_train, + patience=1, + noise_multiplier=2.2, + quantile=0.9, + learning_rate=1.0, + ) + adaptive.set_model(model) + callbacks = [adaptive] + model.fit( + ds_train, epochs=2, callbacks=callbacks, steps_per_epoch=num_steps_test_case + ) + + +if __name__ == "__main__": + tf.config.set_visible_devices([], "GPU") + absltest.main() diff --git a/tests/pipeline_test.py b/tests/pipeline_test.py new file mode 100644 index 0000000..d8cce1f --- /dev/null +++ b/tests/pipeline_test.py @@ -0,0 +1,154 @@ +# -*- coding: utf-8 -*- +# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All +# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, +# CRIAQ and ANITI - https://www.deel.ai/ +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +import tensorflow as tf +from absl.testing import absltest +from absl.testing import parameterized + +from deel.lipdp.pipeline import bound_clip_value +from deel.lipdp.pipeline import bound_normalize +from deel.lipdp.pipeline import load_and_prepare_images_data +from deel.lipdp.pipeline import default_delta_value + + +class PipelineTest(parameterized.TestCase): + + def test_cifar10_common(self): + batch_size = 64 + max_norm = 5e-2 + colorspace = "RGB" + + ds_train, ds_test, dataset_metadata = load_and_prepare_images_data( + "cifar10", + batch_size=batch_size, + colorspace=colorspace, + drop_remainder=True, # accounting assumes fixed batch size. + bound_fct=bound_clip_value(max_norm), + multiplicity=0, # no multiplicity for cifar10 + ) + + self.assertEqual(dataset_metadata.nb_classes, 10) + self.assertEqual(dataset_metadata.input_shape, (32, 32, 3)) + self.assertEqual(dataset_metadata.nb_samples_train, 50_000) + self.assertEqual(dataset_metadata.nb_samples_test, 10_000) + self.assertEqual(dataset_metadata.batch_size, batch_size) + self.assertEqual(dataset_metadata.max_norm, max_norm) + + atol = 1e-7 + batch_x, batch_y = next(iter(ds_train)) + for x in batch_x: + norm = tf.norm(x, axis=None) + self.assertLessEqual(norm, max_norm + atol) + self.assertEqual(batch_y.shape, (batch_size, 10)) + + batch_sizes = [len(batch_x) for batch_x, batch_y in ds_train] + self.assertEqual(batch_sizes[-1], batch_size) + self.assertEqual(len(batch_sizes), 50_000 // batch_size) + self.assertEqual(dataset_metadata.nb_steps_per_epochs, len(batch_sizes)) + delta_heuristic = default_delta_value(dataset_metadata) + self.assertLessEqual(dataset_metadata.nb_samples_train, 1./delta_heuristic) + + @parameterized.parameters(("RGB",), ("grayscale",), ("HSV",)) + def test_cifar10_colorspace(self, colorspace): + batch_size = 64 + max_norm = 5e-2 + + ds_train, ds_test, dataset_metadata = load_and_prepare_images_data( + "cifar10", + batch_size=batch_size, + colorspace=colorspace, + drop_remainder=True, # accounting assumes fixed batch size. + bound_fct=bound_clip_value(max_norm), + multiplicity=0, # no multiplicity for cifar10 + ) + + batch = next(iter(ds_test)) + if colorspace == "grayscale": + self.assertEqual(batch[0].shape[-1], 1) + else: + self.assertEqual(batch[0].shape[-1], 3) + + @parameterized.parameters( + (1,), + (4,), + ) + def test_cifar10_augmult(self, multiplicity: int): + batch_size = 64 + max_norm = 5e-2 + colorspace = "grayscale" + + ds_train, ds_test, dataset_metadata = load_and_prepare_images_data( + "cifar10", + batch_size=batch_size, + colorspace=colorspace, + drop_remainder=True, # accounting assumes fixed batch size. + bound_fct=bound_clip_value(max_norm), + multiplicity=multiplicity, + ) + + self.assertEqual(dataset_metadata.batch_size, batch_size) + # multiplicity is not accounted in logical batch size for accounting. + # Note: the DP_ClipGradient must reduce over the multiplicity for this to work. + + batch_sizes = [len(batch_x) for batch_x, batch_y in ds_train] + for physical_batch_x, _ in ds_train: + self.assertEqual(len(physical_batch_x), batch_size * multiplicity) + # multiplicity is accounted in physical batch size. + self.assertEqual(dataset_metadata.nb_samples_train, 50_000) + self.assertEqual(len(batch_sizes), 50_000 // batch_size) + self.assertEqual(dataset_metadata.nb_steps_per_epochs, len(batch_sizes)) + + def test_mnist_normalize(self): + batch_size = 64 + + ds_train, ds_test, dataset_metadata = load_and_prepare_images_data( + "mnist", + colorspace="grayscale", + batch_size=batch_size, + drop_remainder=True, # accounting assumes fixed batch size. + bound_fct=bound_normalize(), + multiplicity=0, # no multiplicity for mnist + ) + + self.assertEqual(dataset_metadata.nb_classes, 10) + self.assertEqual(dataset_metadata.input_shape, (28, 28, 1)) + self.assertEqual(dataset_metadata.nb_samples_train, 60_000) + self.assertEqual(dataset_metadata.nb_samples_test, 10_000) + self.assertEqual(dataset_metadata.batch_size, batch_size) + self.assertEqual(dataset_metadata.max_norm, 1.0) + + atol = 1e-5 + batch_x, batch_y = next(iter(ds_train)) + for x in batch_x: + norm = tf.norm(x, axis=None) + self.assertAlmostEqual(norm, 1.0, delta=atol) + self.assertEqual(batch_y.shape, (batch_size, 10)) + + batch_sizes = [len(batch_x) for batch_x, batch_y in ds_train] + self.assertEqual(batch_sizes[-1], batch_size) + self.assertEqual(len(batch_sizes), 60_000 // batch_size) + self.assertEqual(dataset_metadata.nb_steps_per_epochs, len(batch_sizes)) + + +if __name__ == "__main__": + tf.config.set_visible_devices([], "GPU") + absltest.main() diff --git a/tests/sensitivity_test.py b/tests/sensitivity_test.py new file mode 100644 index 0000000..d667009 --- /dev/null +++ b/tests/sensitivity_test.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All +# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, +# CRIAQ and ANITI - https://www.deel.ai/ +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +from absl.testing import absltest +from absl.testing import parameterized + +from deel.lipdp.dynamic import AdaptiveQuantileClipping +from deel.lipdp.layers import * +from deel.lipdp.losses import DP_TauCategoricalCrossentropy +from deel.lipdp.model import compute_gradient_bounds +from deel.lipdp.model import DP_Sequential +from deel.lipdp.model import DPParameters +from deel.lipdp.model import get_eps_delta +from deel.lipdp.pipeline import bound_normalize +from deel.lipdp.pipeline import load_and_prepare_images_data +from deel.lipdp.sensitivity import get_max_epochs + + +class SensitivityTest(parameterized.TestCase): + def _get_small_mnist_cnn(self, dp_parameters, batch_size): + ds_train, _, dataset_metadata = load_and_prepare_images_data( + "mnist", + batch_size=batch_size, + colorspace="grayscale", + drop_remainder=True, + bound_fct=bound_normalize(), + ) + + norm_max = 1.0 + all_layers = [ + DP_BoundedInput(input_shape=(28, 28, 1), upper_bound=norm_max), + DP_SpectralConv2D( + filters=6, + kernel_size=3, + kernel_initializer="orthogonal", + strides=1, + use_bias=False, + ), + DP_AddBias(norm_max=norm_max), + DP_GroupSort(2), + DP_ScaledL2NormPooling2D(pool_size=2, strides=2), + DP_LayerCentering(), + DP_Flatten(), + DP_SpectralDense(6, use_bias=False, kernel_initializer="orthogonal"), + DP_AddBias(norm_max=norm_max), + DP_SpectralDense(10, use_bias=False, kernel_initializer="orthogonal"), + DP_AddBias(norm_max=norm_max), + DP_ClipGradient( + clip_value=2.0**0.5, + mode="dynamic", + ), + ] + + model = DP_Sequential( + all_layers, + dp_parameters=dp_parameters, + dataset_metadata=dataset_metadata, + ) + + optimizer = tf.keras.optimizers.Adam(learning_rate=1e-3) + loss = DP_TauCategoricalCrossentropy( + tau=1.0, reduction=tf.keras.losses.Reduction.SUM_OVER_BATCH_SIZE + ) + model.compile(optimizer=optimizer, loss=loss, metrics=["accuracy"]) + + return model, ds_train + + @parameterized.parameters( + ("per-layer", 0.8, 1e-5, 22.0, True), + ("global", 1.2, 1e-6, 30.0, False), + ) + def test_get_max_epochs( + self, noisify_strategy, noise_multiplier, delta, epsilon_max, safe + ): + dp_parameters = DPParameters( + noisify_strategy=noisify_strategy, + noise_multiplier=noise_multiplier, + delta=delta, + ) + + model, _ = self._get_small_mnist_cnn(dp_parameters, batch_size=64) + + atol = 1e-2 + epochs = get_max_epochs( + epsilon_max, model, epochs_max=None, safe=safe, atol=atol + ) + + if not safe: + epochs += 1 + + cur_epsilon, cur_delta = get_eps_delta(model, epochs) + next_epsilon, _ = get_eps_delta(model, epochs + 1) + + self.assertLessEqual(cur_epsilon, epsilon_max + atol) + self.assertGreaterEqual(next_epsilon + atol, epsilon_max) + self.assertLessEqual(cur_delta, delta) + + def test_gradient_bounds(self): + dp_parameters = DPParameters( + noisify_strategy="per-layer", + noise_multiplier=2.2, + delta=1e-5, + ) + + batch_size = 16 + + model, ds_train = self._get_small_mnist_cnn( + dp_parameters, batch_size=batch_size + ) + x, y = iter(ds_train.take(1)).next() + + loss_fn = DP_TauCategoricalCrossentropy( + tau=1.0, reduction=tf.keras.losses.Reduction.NONE + ) + + with tf.GradientTape(persistent=True) as tape: + y_pred = model(x, training=True) + loss = loss_fn(y, y_pred) + loss = tf.reshape(loss, (batch_size, 1)) + + trainable_vars = model.trainable_variables + gradient_per_variable = tape.jacobian(loss, trainable_vars) + del tape + + gradient_bounds = compute_gradient_bounds(model) + + atol = 1e-5 + assert len(gradient_bounds) == len(gradient_per_variable) + print(list(gradient_bounds.values())) + for grad, bound in zip(gradient_per_variable, gradient_bounds.values()): + grad = tf.reshape(grad, (grad.shape[0], -1)) + norm2 = tf.reduce_sum(grad**2, axis=-1) ** 0.5 + norm2 = tf.reduce_max(norm2) + # correct for the batch size since reduction is None: + bound = bound * batch_size + self.assertLessEqual(norm2, bound + atol) + + +if __name__ == "__main__": + absltest.main() diff --git a/tests/test_losses.py b/tests/test_losses.py deleted file mode 100644 index 900ef72..0000000 --- a/tests/test_losses.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All -# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, -# CRIAQ and ANITI - https://www.deel.ai/ -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. diff --git a/tests/test_model.py b/tests/test_model.py deleted file mode 100644 index 900ef72..0000000 --- a/tests/test_model.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All -# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, -# CRIAQ and ANITI - https://www.deel.ai/ -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. diff --git a/tests/test_pipeline.py b/tests/test_pipeline.py deleted file mode 100644 index 900ef72..0000000 --- a/tests/test_pipeline.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All -# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, -# CRIAQ and ANITI - https://www.deel.ai/ -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. diff --git a/tests/test_sensitivity.py b/tests/test_sensitivity.py deleted file mode 100644 index 900ef72..0000000 --- a/tests/test_sensitivity.py +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All -# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, -# CRIAQ and ANITI - https://www.deel.ai/ -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. diff --git a/wandb_sweeps/__init__.py b/wandb_sweeps/__init__.py deleted file mode 100644 index d76bfe9..0000000 --- a/wandb_sweeps/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright IRT Antoine de Saint Exupéry et Université Paul Sabatier Toulouse III - All -# rights reserved. DEEL is a research program operated by IVADO, IRT Saint Exupéry, -# CRIAQ and ANITI - https://www.deel.ai/ -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in all -# copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -from wandb_sweeps.src_config import *