From ffe817542e7f035c8fa70eef064b9a869d018cea Mon Sep 17 00:00:00 2001 From: rosalub <rosalie.dauchez.etu@univ-lille.fr> Date: Wed, 3 Apr 2024 14:29:08 +0200 Subject: [PATCH] Adapt FederatedServer to use the new version of FLRunConfig --- declearn/main/_server.py | 15 +- quit | 7089 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 7097 insertions(+), 7 deletions(-) create mode 100644 quit diff --git a/declearn/main/_server.py b/declearn/main/_server.py index 494bc3f7..7d921fed 100644 --- a/declearn/main/_server.py +++ b/declearn/main/_server.py @@ -205,9 +205,10 @@ class FederatedServer: round_i = 0 while True: round_i += 1 - await self.training_round(round_i, config.training) - await self.evaluation_round(round_i, config.evaluate) - if not self._keep_training(round_i, config.rounds, early_stop): + await self.training_round(round_i, config.get_next_train_config) + if config.get_next_valid_config is not None: + await self.evaluation_round(round_i, config.get_next_valid_config) + if not self._keep_training(round_i, early_stop, config): break # Interrupt training when time comes. self.logger.info("Stopping training.") @@ -387,10 +388,10 @@ class FederatedServer: self.logger.info("Sending privacy requests to all clients.") assert config.privacy is not None # else this method is not called params = { - "rounds": config.rounds, - "batches": config.training.batch_cfg, - "n_epoch": config.training.n_epoch, - "n_steps": config.training.n_steps, + "rounds": config.n_rounds, + "batches": config.train_cfg.batch_cfg, + "n_epoch": config.train_cfg.n_epoch, + "n_steps": config.train_cfg.n_steps, **dataclasses.asdict(config.privacy), } # type: Dict[str, Any] message = messaging.PrivacyRequest(**params) diff --git a/quit b/quit new file mode 100644 index 00000000..f3f031cc --- /dev/null +++ b/quit @@ -0,0 +1,7089 @@ +[33mcommit 39bd3b932b3926093f8786491391b2b2c48653ef[m[33m ([m[1;36mHEAD -> [m[1;32mfedalgo[m[33m)[m +Author: rosalub <rosalie.dauchez.etu@univ-lille.fr> +Date: Mon Apr 1 13:07:27 2024 +0200 + + Incorporate a keep_training method in FLRunConfig and its child class, adapt it for FederatedServer + +[33mcommit 6f973ecfda2b80a943af9971bb5ef4138cd9369a[m[33m ([m[1;31morigin/fedalgo[m[33m)[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 29 16:16:13 2024 +0100 + + Start ammending new FLRunConfig API. + +[33mcommit 606833e385bee9338447f42316d8f65875d31bc9[m +Author: rosalub <rosalie.dauchez.etu@univ-lille.fr> +Date: Thu Mar 28 16:18:35 2024 +0100 + + Created concrete class for the basic federated learning approach which heritates from FLRunConfig + +[33mcommit aeb8e7a7bfc01479a95520470d31923d1e12723f[m +Author: rosalub <rosalie.dauchez.etu@univ-lille.fr> +Date: Wed Mar 27 16:25:35 2024 +0100 + + Abstraction of FLRunConfig + +[33mcommit 5881c22a437fb8c6f15751d058d1a7937d8d1d3b[m[33m ([m[1;32mdevelop[m[33m)[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Mar 18 15:07:39 2024 +0100 + + Fix typos in release notes. + +[33mcommit c13246c293753c92f22de2bca30043f46d32fee4[m[33m ([m[1;33mtag: v2.4.0[m[33m)[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Mar 18 15:02:02 2024 +0100 + + Release DecLearn v2.4.0. + +[33mcommit ff404f9f6ff1d85da3b3c19199a7987d27f72178[m +Merge: 18a459f ffe6a30 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Mar 18 14:16:44 2024 +0100 + + Merge branch 'prerelease-2.4' into 'develop' + + Finalize DecLearn v2.4.0. + + See merge request magnet/declearn/declearn2!63 + +[33mcommit ffe6a302a70c6dade9200e2c678a30c30756a6f8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 15 13:58:21 2024 +0100 + + Fix Torch 1.13 unit tests launch. + +[33mcommit aff0ff3185113a97b6603092b79ba9d30659541c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 15 11:29:16 2024 +0100 + + Add support for TensorFlow 2.16 / Keras 3. + + - Apply some minor backward changes (and, when required, branches) to + support breaking changes in Keras 3 (the default for TensorFlow 2.16 + and onwards), while preserving support for older versions. + - On the side, split a test about 'Model' serialization in two tests, + one for config serializability, the other for instantiation from a + non-serialized config dict. + - The current code has been tested (by running all unit tests) with + both TensorFlow 2.11 and 2.16, in a Python 3.10 environment. + +[33mcommit dce82854b3304a9a51a7332fbc24dfe9a27cefd0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 13 16:21:13 2024 +0100 + + Deprecate 'declearn.dataset.load_from_json'. + +[33mcommit 113f68df6245a7146677879ae061a7a46476228f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 13 16:02:38 2024 +0100 + + Update website documentation and enhance that of new Aggregate ABCs. + +[33mcommit 8318d23e4e211aff29f36b1d1bbf62d63577a0fc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Mar 12 16:07:19 2024 +0100 + + Add and deploy new utils for messages' type-checking. + + - Add new 'declearn.communication.utils' submodule. + - Move existing utils there, but keep re-exporting them from the + parent level to avoid breaking existing code. + - Refactor some backend code used to verify exchanged messages' + type as part of federated learning processes into two new utils. + +[33mcommit 0b9edf38d8edaad0ada4351a05e5c031c1405272[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Mar 12 12:27:31 2024 +0100 + + Fix legacy 'Error' sending in edge case by 'GrpcServer'. + +[33mcommit 08b53632a288cf48a8d8553fc10570a0fbd524b0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 1 15:19:15 2024 +0100 + + Update release notes for '2.4.0'. + +[33mcommit d0b8eb2c7ec889db136ae097b7c757c72f6f5f2d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 1 15:08:39 2024 +0100 + + Fix redundant model weights sharing with clients. + + - Until now, in the main FL process, clients would always receive + global model weights twice, due to their being shared both with + training and evaluation requests. + - This commit fixes that via the introduction of backend mechanisms + to keep track of which clients hold the latest model weights, and + sparingly attach them to requests based on this. + - As a side effect, `TrainRequest` and `EvaluationRequest` messages + now specify `weights` to be an `Optional[Vector]` field. + +[33mcommit 7704c46254eec0eaf5dcdf4ce1f8586cd7a893c2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 29 18:03:07 2024 +0100 + + Hack around PyLint not detecting 'tensorflow.keras' anymore. + + This commit introduces imports of 'tf.keras' as 'tf_keras' so that + false-positive pylint errors can be silenced in one place per file + rather than on each and every call. + This remains tiresome, but might in fact be useful to switch to the + newer TensorFlow versions in the future. + +[33mcommit 196cef332de90fc8e0a41145e2d0539c9f425ac3[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 29 17:30:18 2024 +0100 + + Update TensorFlow (optional) dependency version specification. + + Set minimal version to 2.11.0 (rather than 2.5.0): + - 'TensorflowOptiModule' adapter is based on the "new" Optimizer API + introduced with TensorFlow/Keras v2.11, but the required dependency + version had not been updated until now. + + Set maximal version to 2.15.X: + - TensorFlow 2.16 (the first release candidate of which was added to + PyPI three days ago) is switching to Keras 3 by default, which is + bound to introduce breaking changes (current unit tests fail with + 'tensorflow==2.16.0rc0'). + - For now, the maximal version is thus set to 2.15.X. This may change + in the near future when some time and effort is put in understanding + changes and/or configuring dependencies to keep using Keras 2 rather + than Keras 3 in TensorFlow's backend. + +[33mcommit 921d17585deee665a82dbe853db336cace3bc2f9[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 19 15:14:42 2024 +0100 + + Fix exceptions reporting in Heart UCI example. + +[33mcommit 7a8563a585af26dc2d4df3e9c456b7aa9887a4dc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 19 15:12:31 2024 +0100 + + Improve 'run_as_processes' backend to avoid specific kwargs loss. + + - The previous implementation would result in dropping some kwargs + (namely, 'name' and 'queue') when running a function as process. + - The new backend implementation prevents this using a wrapped + instead of a partial function (still relying on 'functools'). + +[33mcommit 7715ab915b04bfb468f2a49348cab255522ccfbf[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 19 11:49:39 2024 +0100 + + Write up release notes for 'v2.4.0'. + +[33mcommit e7fae4b5f9c39d7cdd4fc18dcb06e2ee80918e55[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 19 10:54:56 2024 +0100 + + Update online documentation to reflect API changes. + + - Document changes in the registration and initialization processes. + - Document changes of the Optimizer AuxVar API. + - Document requirement for peers using the same DecLearn version. + +[33mcommit 542f5ad8dfaf990d244fc66f7c2a81e3d876fc7f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 19 10:14:10 2024 +0100 + + Fix docs' automated rendering. + +[33mcommit 6300a10e6c439874caf6373fd0f79924059cb66b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 16 17:54:02 2024 +0100 + + Remove deprecated features as planned since v2.2. + +[33mcommit e90280981de288587ee6c19506bc819d623e3e83[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 16 17:47:39 2024 +0100 + + Bump version to '2.4.0'. + +[33mcommit fc20c9ddf9765ef7f652fff654be4f6e37cd4b0c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 16 17:45:39 2024 +0100 + + Update 'black' version to '2.4.*'. + +[33mcommit 0d78e2c91fab00eabca798fbfa84e977d336ed76[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 16 17:37:03 2024 +0100 + + Quit using a scikit-learn deprecated attribute. + +[33mcommit 18a459fe653dfc2da507a09f6d5eeea1b576760a[m +Merge: 7c65a28 f770f37 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Fri Feb 16 17:52:31 2024 +0100 + + Merge branch 'revise-messaging' into 'develop' + + Revise network communication backend and message-parsing logic. + + See merge request magnet/declearn/declearn2!62 + +[33mcommit f770f37037ba593dd4ccf121c3ea651e9eee6088[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 16 15:25:19 2024 +0100 + + Add 'heartbeat' parameter to 'NetworkServer' and speed up tests. + + Set up a low heartbeat for localhost-running tests, resulting in + drastic runtime gains (notably due to time gains during the join + and initialization phase for functional tests). + +[33mcommit 07ed21db1f83cbf31d3b39ce4f291c8076696cc0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 16 15:01:39 2024 +0100 + + Add unit tests for 'declearn.communication.api.backend' code. + +[33mcommit 395436597f5a50b2e65c0d4e1aa5d45a00b501fc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 16 15:01:01 2024 +0100 + + Turn version-based rejection into a (version-based) constant flag. + +[33mcommit 7937bee773c9765a559568e0f661a0e46de5510a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 16 14:58:35 2024 +0100 + + Enable specifying message-related timeouts as floats. + +[33mcommit bbe43fba4e8c61a59057e8d518143b7f56453b9c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 15 17:52:46 2024 +0100 + + Update unit tests for 'communication' module. + +[33mcommit 1f554f141566574d9bacc8c03ed98a59a329f84c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 15 15:29:53 2024 +0100 + + Fix detection and rejection of legacy clients' messages. + +[33mcommit 3b8703f2cb18850d9ebcf9be37e38afe8fa0c845[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 15 12:09:06 2024 +0100 + + Adjust 'FederatedClient' and 'FederatedServer' to new messaging API. + + - Update the way received messages are type-checked and have them + be deserialized after type-checking only. + - Move up metadata collection and use to a new optional and sparse + step during the initialization phase. + - Implement new message subtypes for metadata query and reply, and + for signalling that initializations steps went well. + +[33mcommit 125e2708881f527dd6a3a2301687f29f5aa7421f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 15 12:03:58 2024 +0100 + + Integrate new Message API with communication endpoints. + + - Revert some changes from a previous commit, that may be envisioned + again when revising APIs in-depth for DecLearn 3.0. + - Stitch back the 'communication' and 'messaging' submodules together, + having 'NetworkClient' and 'NetworkServer' send 'Message' instances + (that are merely serialized to string prior to being exchanged) and + parse received strings into 'SerializedMessage' instances. + - This change is a compromise between keeping things as before (which + would not benefit from the introduced delayed-parsing capability of + 'SerializedMessage'), and changing them so deeply that current code + making use of communication endpoint would require heavy revisions. + +[33mcommit 4215381049c3d61de518a5c8f77099ec7839b2be[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Feb 13 17:23:55 2024 +0100 + + Revise 'Message' API, make it extendable and move it around. + + * Introduce new 'declearn.messaging' submodule, that is meant to + replace the now-deprecated 'declearn.communication.messaging'. + * Make 'Message' extendable via subclassing and type-registration + (which is automatically performed by default). + * Introduce 'SerializedMessage' as a wrapper for received messages, + that parses the exact message subtype (enabling logic tests and + message filtering) but delays actual content deserialization and + Message object recovery (enabling to prevent undue resources use + for unwanted messages that end up being discarded). + * Deprecate some old 'Message' classes, that are still exported by + the deprecated submodule but not by the new one. + +[33mcommit 7b6233170727d89d10ff2a3b426b7085cdc6624a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Feb 13 15:15:20 2024 +0100 + + Revise network communication backend and message-parsing logic. + + - Introduce a new 'declearn.communication.api.backend' submodule: + - Introduce a new 'ActionMessage' minimal backend API, that defines + hard-coded, lightweight and easily-parsed data structures designed + to convey information and content across network communications + agnostic to the content's nature. + - Move 'declearn.communication.messaging.flags' submodule to + 'declearn.communication.api.backend.flags'. + - Move 'MessagesHandler' semi-private class to the 'backend' + submodule, where it is now properly exposed. + + - Revise 'MessagesHandler': + - Have it use the new 'ActionMessage's to wrap up messages, and + delay their content's parsing to other times and parts of the + code. + - Quit sending information together with registration requests. + In the future, we may want to introduce some callback system to + validate or complete a registration request's processing. + - Turn 'heartbeat' into an instantiation parameter. + + - Revise 'NetworkClient' and 'NetworkServer': + - Quit passing of 'data_info' with registration requests. + - Have message-sending and message-receiving methods expect str + inputs and return str outputs: the actual parsing into objects + is therefore delayed and left to be defined elsewhere. + - Rename 'NetworkClient.check_message' into 'recv_message' (keep + the former as an alias, with a DeprecationWarning). + - Improve the use of (optional) timeouts when sending or expecting + messages and overall exceptions handling: + - 'NetworkClient.recv_message' may either raise a TimeoutError + (in case of timeout) or RuntimeError (in case of rejection). + - 'NeworkServer.send_messages' and 'broadcast_message' quietly + stops waiting for clients to collect messages after the (opt.) + timeout delay has passed. Messages may still be collected. + - 'NetworkServer.wait_for_messages' no longer accepts a timeout. + - 'NetworkServer.wait_for_messages_with_timeout' implements the + possibility to setup a timeout. It returns both received client + replies and a list of clients that failed to answer. + +[33mcommit 7c65a28361af1e2c31fcf1d2d32fac471c6207da[m +Merge: d240079 03efb10 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Fri Feb 9 13:04:01 2024 +0000 + + Merge branch 'revise-aggregator-api' into 'develop' + + Introduce and deploy `Aggregate` API + + See merge request magnet/declearn/declearn2!61 + +[33mcommit 03efb109e6035c786d682a4d7fca6496ac8f1514[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 9 12:06:23 2024 +0100 + + Add 'declearn.version' namespace to avoid circular imports of '__version__'. + +[33mcommit 47cc28436188e1f62cd6c5279c13636b68783d8f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 25 15:14:30 2024 +0100 + + Add unit tests for all 'Aggregate.prepare_for_secagg' methods. + +[33mcommit 71d1e62407fd4544e501dc825f61eedf8ebf7d12[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 25 11:00:02 2024 +0100 + + Expand 'Aggregate' API to specify how to use SecAgg on top of it. + +[33mcommit fd01dfd784c69f41e177a29a685156311563ddbd[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 25 10:53:06 2024 +0100 + + Make 'VectorSpec' JSON-serializable. + +[33mcommit b12c8d8a1cfe06ebb73a5031bf216978c669ddc0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Oct 19 17:50:44 2023 +0200 + + Expand 'Vector' API to enable (un)flattening to/from list of floats. + + - Add `VectorSpec` dataclass to store metadata about a Vector. + - Add `Vector.get_vector_specs` to access the metadata of an instance. + - Add `Vector.flatten` and `Vector.unflatten` to convert to and from + a list of floats and a VectorSpec instance. + - Add `Vector.build_from_specs` static method as a generic entrypoint + to unflatten any Vector instance from its list of float values and + VectorSpec instance, provided it was properly type-registered. + - Implement these new methods for each and every `Vector` subclass + currently shipped with declearn. + - Add unit tests for these features as part of the standard test suite + applied to each and every type-registered `Vector` subclass. + - All of these new features are designed to enable SecAgg of Vector- + wrapped values, which requires operating on (very) big integers + that would result in overflows in most backend data frameworks, + starting with numpy. + +[33mcommit d40233861a1eb3ece19ca32e0c9309caedc9ab65[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 23 16:10:26 2024 +0100 + + Update 'BinaryRocAUC' to better handle boundedness of thresholds. + +[33mcommit 389d58ba6b088f660b4d6d998c6adc4763d618ec[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jan 22 13:22:55 2024 +0100 + + Update unit tests for 'Metrics' and revise/fix associated code. + +[33mcommit 9141b0403e2d49e3bccd2d0e8d5fe96966ff68d6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 19 16:08:07 2024 +0100 + + Revise 'Metric' API introducing 'MetricState' aggregates. + +[33mcommit bc74f367609a680232b366caccc15286087277ac[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 19 17:37:01 2024 +0100 + + Update 'declearn.optimizer' unit tests. + +[33mcommit 3ee402cb960a9133f63255820718cf1947dc2a97[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 23 12:06:30 2024 +0100 + + Implement declearn version verification when registering clients. + + * Clients now send their local declearn version string as part of + their registration request to the server. + * Server now rejects requests that have unmatching 'major.minor' + version string. + * This may be revised in the future to implement an asymmetric + requirement where clients may have more recent minor versions + than the server. For now, this will however lessen the burden + of having to deal with complicated retro-compatibility issues. + +[33mcommit 4262f78840710d87fe5b39d85461a363f6d2fd38[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 19 12:11:07 2024 +0100 + + Abstract new 'Aggregate' ABC from 'AuxVar' and 'ModelUpdates' + +[33mcommit 7c1baf4f2c36b94ebab2ce7342d2b935b349c7d4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 19 11:29:53 2024 +0100 + + Preserve 'AuxVar' and 'ModelUpdates' types across network messaging. + + * Automate the extension of JSON support to 'AuxVar' and 'ModelUpdates' + (sub)classes. + * Revise 'TrainReply' and 'TrainRequest' to pass objects directly rather + than their dict representation. + * Overload these messages' 'to_kwargs' methods to avoid recursive dict + conversion of dataclasses, hence ensuring that types are preserved + and rebuilt upon messages' deserialization. + +[33mcommit 1c977320d574945648f2fe12fd8a60d33907c50c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 19 10:41:48 2024 +0100 + + Refactor 'Message.to_string', adding 'Message.to_kwargs'. + + - Refactor 'Message.to_string' into a pair of methods: + - 'to_kwargs' to produce a JSON-serializable dict of kwargs + - 'to_string' that calls the former, dumps to JSON and adds + the message's typekey. + - Note: in the future we may change things to have the typekey + parsable without deserializing the rest of the message, and + then add some intermediate structure where deserialization + is yet to occur, so that message validity can be checked prior + to deserialization of its content. + +[33mcommit 80865e116dbe297740b9f5f08cb9fdf58c04206b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 18 10:49:53 2024 +0100 + + Deploy new 'AuxVar' to the federated learning process. + + * Have 'FederatedServer' and 'FederatedClient' (via 'TrainingManager') + convert emitted auxiliary variables to dict representations. + * Also have them reconstruct 'AuxVar' structures upon reception, + using the newly-introduced 'Optimizer.unpack_aux_var' method. + * Rewrite the aggregation of clients' auxiliary variables, taking + advantage of the new 'AuxVar' structure, and pass the resulting + one-object-per-module to the server's 'Optimizer'. + + Notes: + * The all 'unpack_aux_var' may be dropped in favor of preserving + 'AuxVar' types across serialization (and thus across network), + using the usual type-registration and JSON-extending systems. + +[33mcommit bd97e31427f32949571b65387111af856f818362[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 17 16:55:03 2024 +0100 + + Revise OptiModule Auxiliary Variables, and Scaffold implementation. + + - Replace dictionaries with dataclass structures that may implement + aggregation rules (with a default of sum-aggregation). + - Drop support for client-wise values emission from the server, and + move aggregation outside of the 'Optimizer' class. + - Rewrite Scaffold to make it more efficient, and SecAgg-compatible + (with clients sending Vector information that are to be summed). + + Notes: + - Actual aggregation of new-type auxiliary variables is yet to be + implemented. The same design questions arise as with 'Aggregator', + and the final answers should be the same for tidyness purposes. + - Tests are yet to be revised and run for debugging purposes. + - 'AuxVar' code is largely redundant with 'ModelUpdates' and should + be abstracted into some common ancestor for maintainability. + - At first, some retro-compatibility was considered: newer Scaffold + clients would be able to communicate with older servers. However, + the opposite seems not to be (easily) achievable. In the end, this + was dropped, as it would cause maintenance costs and hurt code + readability for no practical benefit given the current user-base. + +[33mcommit cc8a19ef921a1eeaed083685bb0ec667a96d9c77[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 17 11:09:25 2024 +0100 + + Update unit tests for 'Aggregator' to cover new API methods. + +[33mcommit 3428ab41b2a0b840185383431233b265117a8e5c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 17 10:31:45 2024 +0100 + + Deploy new 'Aggregator' API to the main federated learning process. + + * Add 'Aggregator' to objects shared with clients in 'InitRequest'. + * Add 'Aggregator' to the 'TrainingManager' and make use of it to + prepare and package shared model updates. + * Use 'Aggregator.updates_cls' to recover 'ModelUpdates' objects + from client-emitted dict representations, sum-aggregate them + and finalize them using 'Aggregator.finalize_updates' on the + server side. + * Fix/update 'TrainingManager' unit tests based on changes. + + Notes: + * 'TrainingManager' is due for a revision, that will probably + result in splitting the training loop away from results' + packaging for sharing. + * 'ModelUpdates' may be updated with type-registration tools, + so that its type is recovered upon deserialization rather + than through an explicit call to 'Aggregator.updates_cls'. + +[33mcommit 137f02308634021a62cbded3f4b95b7211397756[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 16 16:28:25 2024 +0100 + + Revise 'Aggregator' API, replacing 'aggregate' with new methods. + + * Revise 'Aggregator' API entirely: + - Define 'ModelUpdates', a dataclass holding (partial) aggregates + for their sharing and aggregation across peers. + - Add 'Aggregator.prepare_for_sharing' to the API, that is bound + to prepare and package local updates for their sum-aggregation. + - Add 'Aggregator.finalize_aggregates' to the API, that is bound + to compute a 'Vector' of global model updates from a single + 'ModelUpdates' instance (holding pre-aggregated values). + - Deprecate 'Aggregator.aggregate' API method, but make it work + in legacy mode using new methods as core backend. + * Rewrite 'AveragingAggregator' and 'GradientsMaskAveraging'. + - 'AveragingAggregator' no longer supports using client weights, + save when using the deprecated (legacy) 'aggregate' method. + - 'GradientsMaskAveraging' no longer inherits 'AveragingAggregator', + but uses it by composition instead, notably to avoid type-hinting + issues. + - 'GradientsMaskAveraging' is designed to compute updates' sign with + parsimony, to avoid information duplication across network in the + non-secagg federated setting. + + * Notes for the future: + - 'ModelUpdates' could be made to inherit from a much more generic ABC, + that would enable writing aggregation rules for many data containers. + - It is yet unsure how/whether the 'aggregates_cls' class attribute is + going to be used; it may be removed during development. + - SecAgg is yet to be plugged into this code. The current rationale is + to write dedicated code at the level of 'ModelUpdates' to encrypt or + decrypt content - and it might require some dedicated wrapper type. + +[33mcommit d24007973b7df864f4b2bf3d3a1ea6fe9cd237fa[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 30 15:59:51 2024 +0100 + + Marginally improve 'run_tests.sh' commandline outputs. + +[33mcommit 7649b725519742d344b5c60ceabe06e07b068f91[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jan 29 16:14:45 2024 +0100 + + Sort internal imports under 'declearn.utils'. + +[33mcommit c450f6af5cf059c2376b68169d07b76766121e1d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 26 11:04:22 2024 +0100 + + Add a shared '.gitignore' file. + +[33mcommit 428cf933ab9310c02820faee3523095b3c42f1fe[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 11 16:59:58 2024 +0100 + + Fix 'BinaryAccuracyPrecisionRecall' computations without true positives. + +[33mcommit 6497f761e111959ed3aa4ec86c089d8723d6fd8e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Dec 14 11:56:11 2023 +0100 + + Fix some 'pragma: no cover' comments for typos. + +[33mcommit daef0c0a4b2ff10aed2ae3e543d8eee67a485704[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Dec 14 11:28:04 2023 +0100 + + Remove pylint-false-positive-silencing comments regarding torch. + + False-positives on many `torch.<something>` symbols appear to have + been fixed. Whether this comes from a Pylint and/or Torch update + is unclear, but as developers are expected to work with up-to-date + installations (and so does the CI), we can safely remove silencing + comments. + +[33mcommit 73a8f80afcc9beeef39ba12c3303cc6a09bd8377[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Dec 14 11:26:39 2023 +0100 + + Fix 'TorchVector.(min|max)imum' failing on GPU with float input. + +[33mcommit 33dca7cd0b00ed8befd108f24169274938a0b64c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Dec 4 13:47:13 2023 +0100 + + Change pandas version specifier to re-enable v2.x. + +[33mcommit 5c1fe0fd056a96fe2d3b63ba21a6e7b7178c77e7[m +Merge: 6226ba3 1931b16 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Dec 4 12:44:18 2023 +0000 + + Merge branch 'fix-ci-gpu' into 'develop' + + Enable GPU use on our CI runner and garden around 'pyproject.toml'. + + See merge request magnet/declearn/declearn2!60 + +[33mcommit 1931b166a705255d4fd21748340fc510d32f1890[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 23 15:06:35 2023 +0100 + + Add support for recent versions of websockets. + + - The 'websockets' dependency has been known to introduce breaking + changes with its major version, hence our sticking with v10 since + DecLearn was first implemented. + - However, the two latest major version releases are documented and + have been tested not to break compatibility with our code; hence + we now explicitly support them as compatible dependencies. + +[33mcommit df0829b3bcd440135309e66171ec5425de141ce8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 23 15:00:50 2023 +0100 + + Enable using the more recent versions of dm-haiku. + + - Haiku is still at the early stages of its developments, hence + we are being somewhat conservative in its version specifier. + - However, the latest versions prove not to break compatibility + with Python >=3.9, hence we now explicitly support them. + - For Python 3.8, the latest is no longer compatible, due to the + use of some newer type-hint syntax. We hence use version-based + specifiers. + +[33mcommit 07ea0a24f371f22aeac8abbcae870eb90b0bc9ea[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 23 15:00:16 2023 +0100 + + Improve dependencies version specifiers, using '~=' in most places. + +[33mcommit 549b77667c5d1c0169c32000f460a138d45012a7[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 22 10:21:19 2023 +0100 + + Update 'tox.ini' to improve GPU usage. + + - Add environment variables to prevent over-allocation of GPU VRAM + by TensorFlow and/or Jax. + - Add 'py{3x}-ci' test environments that are tweaked specifically + for our CI runner, adding instructions that offer as much support + for GPU as possible given our runner host's configuration. + - At the moment, an update of the host to the latest CUDA version + enables native support for Torch, and TensorFlow with Python>=3.9 + (but not 3.8), plus Jax with some extra installation command. + +[33mcommit 2743d0d24409e112e4cc481704c1ceade66a2847[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 23 14:43:02 2023 +0100 + + Stop forcing '--full-trace' mode of pytest. + +[33mcommit d50bc747e403ee62e189cd5f52531b8059f19d3e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 23 14:15:14 2023 +0100 + + Fix some minor linter warnings on unit tests' code. + +[33mcommit 4a21f58712399e2063c00341a8d5267f31a1faf6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 23 11:49:32 2023 +0100 + + Fix the way GPU-use is disabled for some unit tests. + +[33mcommit e84c69c3fea72f8eefd3bdafcb380ecdadf89a1e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 23 11:42:54 2023 +0100 + + Fix tests' automated type-checking. + +[33mcommit 48711aa9eb119fa64b051832ae86aeb6518ed0d5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 23 11:42:24 2023 +0100 + + Complete docs and type-hints of 'test_multiprocessing'. + +[33mcommit 7adbbebfd6881ba7b29299b2c029acad9da8ce86[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 23 10:59:12 2023 +0100 + + Fix 'JaxNumpyVector' equality operator on distinct-device inputs. + +[33mcommit afbae61520ae2e2e0a1e8d0ea8ba697338cb095c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 22 12:33:29 2023 +0100 + + Ensure GPU is unused in toy-regression functional tests. + +[33mcommit eabba124d56a1f78b6eb605b8c5cd9d1059d9f3c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 22 11:39:50 2023 +0100 + + Fix TensorFlow Adam optimizer unit test. + +[33mcommit 6226ba34f82422754acc57423b8bf37ea89952dc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 7 11:42:52 2023 +0200 + + Add a guide about the Optimizer API to the docs. + +[33mcommit ef7f4bcbbe955d179d7c89093c374f99054e8de9[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 7 10:52:24 2023 +0200 + + Improve website code blocks' rendering. + +[33mcommit 6d935012c5302188623b34d91f0f0a965032fa11[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 29 14:06:12 2023 +0100 + + Improve a docstring of ScaffoldClientModule. + +[33mcommit f2c14debfe028624e5fecb4c574602b1e0816a0e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 22 10:20:36 2023 +0100 + + Fix device-placement of jax-numpy stub data by 'GradientsTestCase'. + +[33mcommit c148e388dd99d58499b11386d750e23a1158204a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 22 10:18:12 2023 +0100 + + Improve torch dependencies management in the tests-running script. + +[33mcommit d99c74908a86ecc04f4a3efc1857f7a530e56c9b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 22 10:16:10 2023 +0100 + + Update 'opacus' dependency required version to '~=1.4'. + + Former versions of opacus require functorch, which is eager to + cause some conflicts with recent torch versions. + +[33mcommit 83ada7a5b1f8e92e46b00bedfb5f7d31db3453e1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 22 10:08:24 2023 +0100 + + Correct syntax and comment 'jax.config' calls in tests. + +[33mcommit f48cec58de25ae091d481fb82a9702327c0e3586[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 22 10:05:42 2023 +0100 + + Minor mypy-based type-check correction. + +[33mcommit 583e2fc785520c202b25a53c65aaa02e5d2b53ad[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Oct 30 16:16:11 2023 +0100 + + Fix coherence of torch dependencies specification. + +[33mcommit 6c36112f4a8fda32285d623f27251ce6583e7ec1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Oct 10 16:30:35 2023 +0200 + + Upgrade Pylint requirement to version 3. + +[33mcommit cf016b5f28f761536dc87ce3cc9bf88f662caa16[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Oct 10 16:02:17 2023 +0200 + + Improve 'mnist_quickrun' example documentation and add torch variant. + +[33mcommit 7166e0a6194f41c9ed1cfa27d78b3c47aef82021[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Oct 10 16:01:24 2023 +0200 + + Revise 'declearn-quickrun' backend to use asyncio. + +[33mcommit 9ca2167727ae1a44d55fd867460ffccbb7df483d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Oct 5 11:48:50 2023 +0200 + + Add release notes for v2.3.2. + +[33mcommit cfbf09d9a0653d1731a5035517471bfb13373a23[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Oct 5 11:24:10 2023 +0200 + + Update 'torch' extra dependency specifiers. + + - Drop support for Torch 1.10-1.12, which complexify rules for functorch. + - Make "torch", "torch1" and "torch2" specifiers deal merely with Torch, + leaving Opacus to the "dp" specifier, as should be. + - Have functorch be installed together with torch, removing some burden + from our specifier, and enabling support for the new Torch 2.1. + +[33mcommit edd2d777ff8e68f74afdab0cdc7ab480fb9ea258[m +Merge: ad09f31 c379c5f +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Tue Sep 26 13:53:04 2023 +0000 + + Merge branch 'display-progress-bars' into 'develop' + + Add 'verbose' argument to 'FederatedClient' and 'TrainingManager' + + See merge request magnet/declearn/declearn2!59 + +[33mcommit ad09f3116a3accb2258d00f62287c17fffce705b[m +Merge: a7e1b27 4067160 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Tue Sep 26 13:36:08 2023 +0000 + + Merge branch 'record-training-losses' into 'develop' + + Enable recording training loss values + + See merge request magnet/declearn/declearn2!58 + +[33mcommit 40671604c3f219f622f513fcb4edd776391443b8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 21 17:33:27 2023 +0200 + + Add (optional) training losses export to 'FederatedClient'. + +[33mcommit 753b43f693b583bc97f63547b1d824a18052c66a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 21 17:32:54 2023 +0200 + + Minor backend changes to 'Checkpointer'. + +[33mcommit 23726d573eeb503f1881f0eafccea627684ccd4a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 21 16:49:33 2023 +0200 + + Add 'TrainingManager.(train|evaluate)_under_constraints' to the API. + + - Until now, the public methods for training and evaluation using + the `declearn.main.utils.TrainingManager` class (and its DP-SGD + counterpart) required message-wrapped inputs and emitted similar + outputs. + - With this commit, the previously-private `train_under_constraints` + and `evaluate_under_constraints` routines are made public and thus + part of the declearn API, with some minor refactoring to make them + more user-friendly. + - The rationale of this change is to enable using `TrainingManager` + outside of our `FederatedClient`/`FederatedServer` orchestration, + notably when simulating FL training or testing client-side code. + It may also be helpful to end-users that would like to build on + declearn but implement their own orchestration tools or algorithm + loops. + - In the future (declearn >=3.0), we may go one step further and + take all the messaging-related instructions out of the current + class. The class may also be moved to a different namespace, e.g. + a new 'declearn.train' module; but this is entirely out of scope + for now. + +[33mcommit c379c5fc187d2eaa5f3347e71a6a13dab01b77bb[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 21 12:01:11 2023 +0200 + + Add 'verbose' argument to 'FederatedClient'. + +[33mcommit 03151d4938f3cdad974e2f00cd3a335b1f4f03d4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 21 11:59:55 2023 +0200 + + Add optional progress bars to 'TrainingManager'. + +[33mcommit 9a3cd4c78ec9004a254ee5c0de4b82f02936f745[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 21 11:51:50 2023 +0200 + + Add unit tests for 'run_as_processes'. + +[33mcommit 7ff01bc20465d534665d99749e9f983196141820[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 21 11:51:35 2023 +0200 + + Modularize 'run_as_processes' input specs. + +[33mcommit e820470ce966f9f2c80d8505ccde297c07603a0a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 20 14:46:51 2023 +0200 + + Implement training losses' recording in 'Model'. + +[33mcommit a7e1b273843919ed50636286e40bb70079ee7e18[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 6 13:50:28 2023 +0200 + + Update website index of release notes. + +[33mcommit 34ee4bfbd757f297086df6ece3e1bcfdc30e31d8[m[33m ([m[1;33mtag: v2.3.1[m[33m)[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 6 11:26:29 2023 +0200 + + Update 'tox.ini' as openssl is no longer called directly. + +[33mcommit 905dcc022d1eb442254766679e45497121ea1442[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 6 11:06:33 2023 +0200 + + Add release notes for v2.3.1 and v2.2.2. + +[33mcommit 911c67a9b89c05924800eb49566867d13b16246f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 6 11:05:47 2023 +0200 + + Bump version to '2.3.1'. + +[33mcommit 4de359e9734cc4cc372a2351d8e0ff2d29a0fa3d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 6 10:49:35 2023 +0200 + + Drop 'functorch.compile' use. + + - The use of 'functorch.compile' over a function that takes variable-size + batch inputs proves impossible, as the tracing on first call creates a + computation graph with fixed dimensions. + - As a result, the tentative compilation of per-sample clipped gradients + computation prevents the proper use of DP-SGD with the functorch backend. + - An alternative attempt was to compile the sample-wise function and vmap + it afterwards, but this is currently unsupported (and unlikely to be as + part of functorch, as development efforts have moved to 'torch.func'). + - This commit therefore drops the use of 'functorch.compile'. + +[33mcommit c65d0b4ca18039ec873f315a08d74afa7371acb6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Sep 1 11:57:00 2023 +0200 + + Improve release notes formatting. + +[33mcommit 783869c2e96794124e97d1d485b8488ac94cd024[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Sep 1 11:26:18 2023 +0200 + + Fix self-signed CA generation. + +[33mcommit eed7b8868f69694e615f3e15dc18e94378e9b3f7[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 31 17:39:17 2023 +0200 + + Add a 'duration' parameter to 'generate_ssl_certificates'. + +[33mcommit 8f8199db154bac9939772ce07fc345ec23a4e119[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 9 16:34:05 2023 +0200 + + Rewrite 'generate_ssl_certificates' backend using 'cryptography'. + +[33mcommit 7cb704dc89c07ad726223d685a3ad763bb3299fc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 31 15:37:59 2023 +0200 + + Patch website docs. + +[33mcommit cba2534d450e0e29ad6ea97b426a63b0298334f4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 31 15:30:51 2023 +0200 + + Fix some internal documentation links. + +[33mcommit ad56d1e175e8e0a17a20ebdfdf66b9cf8f5b3e95[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 31 15:30:27 2023 +0200 + + Fix 'L2GlobalClipping' not being properly exported. + +[33mcommit 2a85461eade1bf7a87e6e68d998ad86b580c0a05[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 31 15:29:35 2023 +0200 + + Add release notes to the website docs. + +[33mcommit 8a0c4c8542612a0b44649a86b3882ecffeb79cb1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 31 15:29:08 2023 +0200 + + Document GitLab/GitHub repositories use. + +[33mcommit 03e7b1f8fbef914177bdea505b4a13a17ba662e7[m[33m ([m[1;33mtag: v2.3.0[m[33m)[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 31 09:28:50 2023 +0200 + + Bump version to 2.3.0 and update authors info. + +[33mcommit ad4814320883006f09615529eeb7a0f94f811c6b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 31 09:29:45 2023 +0200 + + Add a missing file license header. + +[33mcommit 094ab9eb2e7205b141f168e79c006eb2b4eb6a14[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 31 09:26:46 2023 +0200 + + Correct the docs of 'EvaluateConfig'. + +[33mcommit 899be96ea22f270c891b18d7bdcd8453122ece7d[m +Merge: 3d39a2d ec75ca3 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Aug 30 14:24:38 2023 +0000 + + Merge branch 'gardening' into 'develop' + + Improve tests coverage and fix test-digged bugs + + See merge request magnet/declearn/declearn2!57 + +[33mcommit ec75ca3239617a4f8993495ca64cd87cbacbbd53[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 30 16:10:52 2023 +0200 + + Rename same-name test files. + +[33mcommit 878057dae292e146e998eb927b2709a198c56089[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 30 15:46:01 2023 +0200 + + Update unit tests to use optimizer plug-in listing utils. + +[33mcommit b5121d0fc9b641a85cac63714ded88d86a1ae8cb[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 30 15:43:25 2023 +0200 + + Add unit tests for 'aggregate_clients_data_info'. + +[33mcommit 6c9b983d49b6b5ea76a4cf53b6ce6df7671765fd[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 30 15:02:13 2023 +0200 + + Fix EarlyStopping for exact repeated inputs. + +[33mcommit 480a5995f21651c7e4b1f7bc5cd00696c7160e82[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 30 15:01:11 2023 +0200 + + Add unit tests for 'EarlyStopping'. + +[33mcommit 730db92c34a57d19fe9c1fa3ba73142c120a45fc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jun 8 11:35:44 2023 +0200 + + Add tests for 'declearn.quickrun.parse_data_folder'. + +[33mcommit 89c807bb916107f6ee0f113edf698f74b52c3cec[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jun 8 10:53:54 2023 +0200 + + Add unit tests for some quickrun backend utils. + +[33mcommit 474f544771669b045660e3ef12192905a789dd65[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 30 12:21:50 2023 +0200 + + Expand 'InMemoryDataset' unit tests. + +[33mcommit d8d078ee8b8076ed4e175bebf9485681894eeedf[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 30 12:21:46 2023 +0200 + + Adjust 'pragma: no cover' for 'InMemoryDataset'. + +[33mcommit 0c13373b9167d62bddd8672a3cc837da98b884b8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 30 12:20:55 2023 +0200 + + Deprecate 'InMemoryDataset' JSON-dump (private) type-key use. + +[33mcommit 87eada196f528d93620b2b0dcd8aebf4e611e752[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 30 12:20:24 2023 +0200 + + Fix 'InMemoryDataset.data_type'. + +[33mcommit 4d0226f3636f536a089e1ae6c2a50d19fc51bffa[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 30 12:19:37 2023 +0200 + + Fix 'InMemoryDataset' single-column target loading from csv. + +[33mcommit beae850833f658adeb2269d7e0615942e624e3a9[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 30 10:29:51 2023 +0200 + + Add unit tests for high-level data info utils. + +[33mcommit 2a9a53134e91ead0dad7e097598b59c275437f2f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 25 16:23:42 2023 +0200 + + Rewrite toy regression integration tests. + +[33mcommit 811699cac6565e912c6abbb12935fd70c80fd082[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 25 10:27:03 2023 +0200 + + Fix expanded-dim inputs handling in MAE, MSE and R2 metrics. + + Until now, when provided with y_true:<shape>, y_pred:(<shape>, 1) + inputs, the MAE, MSE and R2 metrics would be entirely wrong, due + to the way numpy casts operations between such inputs. This patch + adds some shape-verification and squeezing operations that fix the + computations. Unit tests were added to cover this case. + +[33mcommit cfb294ea8fd59de112fec0e7688d5120baa453af[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 24 14:21:44 2023 +0200 + + Update Jax / Haiku dependency specifications. + +[33mcommit d10a42e2de75a854882f941aa5d4d840e098eb83[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 24 13:54:23 2023 +0200 + + Deploy 'TensorflowDataset' in toy-regression integration test. + +[33mcommit 0a242469fa58273743a357f4d4107373dceaef2e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 24 11:27:56 2023 +0200 + + Fix 'DataTypeField.is_valid' and update deprecated fields' doc. + +[33mcommit 044466096d7d7b5ebd8dff2153d992c1f4a73e20[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 24 11:28:16 2023 +0200 + + Add unit tests for 'DataInfoField' subclasses. + +[33mcommit 44dbcd1c6def023fcb9ae893b41f940b1b676434[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 24 10:47:58 2023 +0200 + + Clean up some Websockets backend code. + +[33mcommit 91adc4077ca2bfc54429c5c4c1ee6ea053e5b579[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 24 10:47:26 2023 +0200 + + Add unit tests for large (chunked) messages exchange. + +[33mcommit 48d18343bf39746d2687bb8c017fe5ce20a28d06[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 9 17:04:18 2023 +0200 + + Add some 'pragma: no cover' for deprecated functions and edge-case exception handling. + +[33mcommit 6a18057ca219eb565c2f2e4d72396da24282ce4e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 9 17:03:52 2023 +0200 + + Correct v2.3-introduced deprecations' planned removal. + +[33mcommit 3d39a2d051e58eb7b482f301eeb5184635664700[m +Merge: 62cc5a6 2795507 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Aug 9 12:36:38 2023 +0000 + + Merge branch 'global-clipping' into 'develop' + + Implement 'L2GlobalClipping' OptiModule. + + See merge request magnet/declearn/declearn2!56 + +[33mcommit 2795507c8b9ad5a13ef84d4af876ce3096f5602f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 3 17:49:02 2023 +0200 + + Implement 'L2GlobalClipping' OptiModule. + +[33mcommit 62cc5a69d18169a74affbaf1b61aa175e900918f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 7 16:06:31 2023 +0200 + + Add missing seed to Torch and TensorFlow Dataset tests. + +[33mcommit 459545757cbfdd6af031143c67a618335ba9f43b[m +Merge: 72e8738 d6552ab +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Aug 7 13:35:59 2023 +0000 + + Merge branch 'vector-unit-tests' into 'develop' + + Add proper unit tests for 'Vector' and its subclasses + + See merge request magnet/declearn/declearn2!55 + +[33mcommit d6552ab77140ad0a089d7fa58fa014f43d693e7a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 7 13:53:26 2023 +0200 + + Rename 'Model' unit tests files. + +[33mcommit 730beced4d9ee93d11ad73b7ae467fb29e88f200[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 7 13:52:38 2023 +0200 + + Rename 'Vector' unit tests files. + +[33mcommit 7c5990c200508444575d406de205617d0e9d1dd0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 7 12:57:59 2023 +0200 + + Remove old 'Vector' unit tests. + +[33mcommit f5067bdb60cd650ffaad0e9e65852a2b536a2269[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 7 12:56:45 2023 +0200 + + Add some generic and error-cases unit tests for 'Vector'. + +[33mcommit 34037cbc1a63d2a23774839db4b7df01b99b50ed[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 7 12:36:50 2023 +0200 + + Add unit tests on (Other)-NumpyVector compatibility. + +[33mcommit bcc6903453309b7a85608b207b4145bf013b8d96[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 7 12:32:54 2023 +0200 + + Fix 'Vector.minimum' and '.maximum' type annotations. + +[33mcommit 5ccad9c2e09b7827dd24a0e3083c77a3792a2db3[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 7 12:24:11 2023 +0200 + + Deprecate 'axis' and 'keepdims' kwargs of 'Vector.sum'. + + These arguments have never been used, are defined at the level of + subclasses rather than that of the 'Vector' ABC, and are bound to + create some issues if mis-used. + + They are being deprecated, and will be considered for re-instatement + with proper ABC definition and documentation if and only if they are + required to implement some given algorithm in the future. + +[33mcommit 6f811fc00d771fe3d9f8ac4c9d0ed62544cf592d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 7 11:13:37 2023 +0200 + + Fix an error message in 'Vector.build'. + +[33mcommit 4395571e90a4ad1d321eae43acb8800ca6d53691[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 7 11:12:51 2023 +0200 + + Add unit tests for 'Vector.build'. + +[33mcommit ce6cd7925fe1dbe69a3cd3a11d2a7a9464269d7b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 7 11:00:32 2023 +0200 + + Fix type-association for 'JaxNumpyVector'. + +[33mcommit de262d7bc515ef8795939f050c8e7a8bcc423a7e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 4 17:08:06 2023 +0200 + + Test 'tf.IndexedSlices' support in 'TensorflowVector' unit tests. + +[33mcommit 5c21f8596469bef5e913f963669d93eba266f1cb[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 4 17:00:26 2023 +0200 + + Add square and sqrt Vector unit tests. + +[33mcommit 6e1c1bfa92f331fd4ea4047ad6a1865b7abdb704[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 4 15:59:28 2023 +0200 + + Fix 'TensorflowVector.shapes' output type. + +[33mcommit 6826cfeafd153debf5a30f4a072ba9936aa4f8a6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 4 15:44:20 2023 +0200 + + Implement a new unit tests suite for 'Vector' classes. + +[33mcommit 72e8738aae686779d945d28dd06252a349558c51[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 4 10:06:05 2023 +0200 + + Fix 'SklearnSGDModel' cross-version compatibility. + +[33mcommit fadcdc44e66dc74304624cc0ae7d9f944fe30bc3[m +Merge: 47381cb 14bdb42 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Fri Aug 4 07:28:17 2023 +0000 + + Merge branch 'hotfix-truediv' into 'develop' + + Hotfix: 'Vector.__rtruediv__' and 'L2Clipping' + + See merge request magnet/declearn/declearn2!54 + +[33mcommit 14bdb425f1ac93d3115ffe08c596befa0e73c514[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 3 18:59:36 2023 +0200 + + Disable GPU use in 'test_regression' integration test. + +[33mcommit ca3dafb7f10e27899e22418073e1a73afe30c92d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 3 18:40:01 2023 +0200 + + Deploy '--cpu-only' test option to optimizer tests. + +[33mcommit 047d9b64adb16c3e7b84e7252f296914dc71c796[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 3 17:46:41 2023 +0200 + + Fix 'L2Clipping' algorithm. + +[33mcommit 3a53dfa4e91efc5cf36b44a905be1ab6bcdb55ec[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 3 17:45:39 2023 +0200 + + Fix 'Vector.__rtruediv__'. + +[33mcommit 47381cb90595b95712aa4aeb538cc1ae1aa10c1f[m +Merge: 6bb9d42 62669f6 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Tue Aug 1 13:05:04 2023 +0000 + + Merge branch 'enhance-datasets' into 'develop' + + Enhance `declearn.dataset`: implement `TensorflowDataset` and improve `TorchDataset` and `InMemoryDataset`. + + Closes #21 + + See merge request magnet/declearn/declearn2!53 + +[33mcommit 62669f67ea457689a25daa44292ac813361bb15c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jul 31 16:34:06 2023 +0200 + + Implement and test 'collate_with_padding' util for 'TorchDataset'. + +[33mcommit 6c24ad11bdb4baacc33431f80360558c6d78abe4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jul 31 16:33:35 2023 +0200 + + Add 'collate_fn' parameter to 'TorchDataset'. + +[33mcommit 2581aca71b84b49dec82a9c3572c25108661a53c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jul 31 13:26:24 2023 +0200 + + Add support for padded and ragged batching to 'TensorflowDataset'. + +[33mcommit aab0c4f82911a3a7dd3a1848b1a69cc4231dac88[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jul 31 10:48:09 2023 +0200 + + Implement custom 'PoissonSampler' for 'TorchDataset'. + + Previously, poisson sampling was delegated to a sampler implemented + as part of the third-party 'opacus' library. However, the latter is + not mandatory for end-users, and its implementation does not prevent + empty batches from being yielded (which break our collate function). + + Therefore, this commit implements our own sampler, as it is a very + straightforward process. + +[33mcommit 9a85bab03b8e6707c85110d9962663a0af0261c6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jul 31 10:47:05 2023 +0200 + + Add unit tests for batch-generation with replacement. + +[33mcommit 742c8d8763facc6a95188042cb0bf249e16c480f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jul 31 10:13:07 2023 +0200 + + Add base unit tests for 'TensorflowDataset'. + +[33mcommit 4fc12a667ff2d12ce1c949a137ca40c9e0034881[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 28 18:22:29 2023 +0200 + + Implement 'replacement' parameter use for 'InMemoryDataset.generate_batches'. + +[33mcommit 09c5fb27f78dd3ec02ce8f77ed332f0b9d750e8b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 28 16:35:00 2023 +0200 + + Implement 'TensorflowDataset' interface to 'tf.data.Dataset'. + +[33mcommit 6bb9d428c7ba52444f50fa02f82e83e46f739a30[m +Merge: 1bf2d69 114ecf3 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Fri Jul 28 09:37:57 2023 +0000 + + Merge branch '24-declearn-text' into 'develop' + + Implement 'TorchDataset' to support an example on language models + + Closes #24 + + See merge request magnet/declearn/declearn2!47 + +[33mcommit 114ecf35ee075ceb82eb03fdc1990ebe1a5d23c7[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 26 23:10:43 2023 +0200 + + Fix 'to_numpy' test util. + +[33mcommit e7e2880b622fc26fd1b32fb98a30100a016b8a22[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 26 17:40:07 2023 +0200 + + Improve 'TorchDataset' setup in 'test_regression'. + +[33mcommit c1dbe133c15ff17951a971c667e863e0623b9a8f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 26 17:18:54 2023 +0200 + + Use 'make_importable' to perform local imports in tests' code. + +[33mcommit db97bed55c473991faf675470443b46d9e43e11b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 26 16:10:55 2023 +0200 + + Move 'TorchDataset' to 'declearn.dataset.torch' manual-import submodule. + +[33mcommit be4c9f220537b5529b6648d6b42868455608600d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 26 15:57:59 2023 +0200 + + Correct 'TorchModel._unpack_batch' output signature. + +[33mcommit 67a9a0177598227a76bddd95ccaa4031e22f57b5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 26 15:44:24 2023 +0200 + + Fix 'TorchDataset' custom collate fn and its tests. + + - The previous 'transform_batch' function was rewritten into the + 'TorchDataset.collate_to_batch' static method. Its dependency + util (and a number of 'TorchDataset' attributes) were removed. + - The function was revised into yielding expected results so as + to collate lists of sample data (formatted as tuples) into a + declearn-compatible batch. Its tests were updated and expanded + to match real-life requirements. + +[33mcommit d94bb87e607147115cf7752436efaa8e5838c448[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 26 15:43:41 2023 +0200 + + Remove deprecated '_type_key' attribute from 'Dataset' API. + +[33mcommit 6ae7dd7b01b3163fdd231b7fce3047a778da5fe8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 26 15:38:35 2023 +0200 + + Marginally improve 'TorchDataset' backend code. + + - Wrap up 'opacus' conditional import to raise proper warnings. + - Favor 'torch.utils.data.X' calls rather than calling 'X' after using + 'from torch.utils.data import X'. + - Catch exceptions (and silence mypy warnings) due to possibly-unsized + torch Dataset inputs. + - Clean up a few minor development artifacts in the backend code. + +[33mcommit f8c33496fd63752e3ae8a3387d3e8b8f53286a03[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Jul 7 11:32:23 2023 +0200 + + Making data_item_info an attirbute of TorchDataset + +[33mcommit ced87128aa33b61d06fdd98e06c38ee684e2f9da[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue Jul 4 18:19:47 2023 +0200 + + Centralize all versions of the "to_numpy" function in a single test_util + +[33mcommit 768c79d78f45957280839a7c92bd5124f3c7b41d[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Jun 29 17:31:32 2023 +0200 + + Apply linter-based and typo-resolving corrections. + +[33mcommit 33a2224bb1a6d2288b4c1a3b26235ef1cc7b997d[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Jun 29 17:01:07 2023 +0200 + + Add unit tests for 'InMemoryDataset'. + +[33mcommit 8d236abd94d7a609ac424e7280586e09994f541f[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Jun 29 16:19:13 2023 +0200 + + Finalizing Torch Dataset testsc, and moving key fucntions to test_utils + +[33mcommit 18db2fbe22ef3757428f251f9e037ca56b26e423[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue Jun 27 17:35:18 2023 +0200 + + Basic test suite + application to torchdataset + +[33mcommit 4286453bdce50a8dedf5a60ee2aaf0059e9a3318[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Jun 23 13:36:07 2023 +0200 + + Revise 'TorchDataset', and use it in 'test_regression'. + +[33mcommit cbd665b4ae74491e5be2406f3d3ecb22761d16d1[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Jun 22 18:56:29 2023 +0200 + + Updating torch dataset v1 - validate method broken + +[33mcommit 90119d689038c1d6f35d0d4417bc6e92893057d5[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Jun 21 16:59:51 2023 +0200 + + Adding torch dataset v0 and moving TorchBatch from model to dataset folder + +[33mcommit c2f3e875d2e04499e7eac8fb367c79f310987067[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Jun 19 20:36:46 2023 +0200 + + Trim 'Dataset' ABC, removing load/save method from the API. + + Also add 'replacement' argument to the 'generate_batches' method. + +[33mcommit 1bf2d691b0793502509264cfb40a560d8c1db92b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jul 25 11:37:05 2023 +0200 + + Update the website docs on tests and ways to run them. + +[33mcommit 1943a468524d998342484f800cb6a16b779b5cdf[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jul 25 11:02:22 2023 +0200 + + Add documentation for developers to 'run_tests.sh' script. + +[33mcommit 31a69ce46b7f4eee7328ff15ba1ee95244607b11[m +Merge: 50255e3 67ef8f4 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Jul 24 14:43:18 2023 +0000 + + Merge branch 'test-magnet-runner' into 'develop' + + Switch to a Magnet-hosted CI runner + + See merge request magnet/declearn/declearn2!45 + +[33mcommit 67ef8f4c49e51bdef4d2705bd7f90f315c5afc73[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jul 24 16:30:24 2023 +0200 + + Force CI tox env recreation on merge commits to a main branch. + +[33mcommit 451cde2da441df6ed9e6142a3d9f4d7ee97a745e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 21 13:26:11 2023 +0200 + + Enable torch dynamo error fallback in 'Model' unit tests. + +[33mcommit 59f8779d9e8f31cf20f30cabfae6f2c2c1309dbb[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 20 16:27:40 2023 +0200 + + Change CI/CD runner and execution rules. + + - Move from shared inria CI/CD runners to a Magnet-hosted one, that + enables re-using the same docker volume across jobs. + - Ensure the venv, pip and tox cache folders are preserved across jobs. + - Ensure the tox venvs differ between branches, preserving isolation. + - Ensure merged branches' tox venv is garbage-collected. + - Enable removing the current branch's cached tox venv. + - Enable removing the entire tox cache directory. + +[33mcommit b099959bd8e88bb6f7f070d8227e055719d6b008[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu May 4 11:42:14 2023 +0200 + + Switch to a Magnet-hosted CI runner. + + - This commit squashes (effectively dropping most of) a number of + attempts at tweaking the CI/CD config so as to run on a custom, + self-hosted, gpu-enabled CI runner and make an efficient use of + caching capabilities in order to reduce CI pipelines' runtime. + - Although the finalized commit barely comprises any change it is + meant to record that Nathan was the one to first set up our new + CI runner and tackle GPU-access issues, and put some effort in + attempting to tackle caching issues that would later be handled + by Paul. + +[33mcommit 50255e378fecb2dc28ff5dc3d164cc3ebc7c3b1f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jul 17 11:27:58 2023 +0200 + + Increase CI/CD coverage statistic precision. + +[33mcommit 571ff5007911c7dabb23795f9e0c15c44ad6a9c5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri May 26 10:58:59 2023 +0200 + + Refactor 'gen_docs.py' code. + +[33mcommit 4cff0d377a246bb06fa186a7905692d0aa84980d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 24 13:35:04 2023 +0200 + + Refactor 'run_as_processes' backend code. + +[33mcommit 861d559b520f8761f1811ad68106633ed08f856c[m +Merge: 9f0035d 6d3695f +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Thu Jul 13 07:54:27 2023 +0000 + + Merge branch '27-add-support-for-torch-2-0' into 'develop' + + Add support for Torch 2.0 + + Closes #27 + + See merge request magnet/declearn/declearn2!49 + +[33mcommit 6d3695fdd1e4ad162440ca99179743fc1caa856e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 7 12:05:50 2023 +0200 + + Add a couple of 'no cover' pragmas. + +[33mcommit fdb8167fc5ecc4c3a68b7564ed43577a9c59ff73[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 13 08:41:09 2023 +0200 + + Have some unit tests re-run using Torch-1.13 in the CI. + +[33mcommit 7468f705fb2dd4d020daf0586f85f09d3443582c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri May 26 10:44:55 2023 +0200 + + Add and document 'torch.compile' support. + + - Torch 2.0 introduced `torch.compile`, a novel utilty to optimize + computations via their JIT-compiling into optimized kernels. At + the moment, compiled modules cannot be saved (but their states, + which are shared with the underlying original module, can), and + are not compatible with `torch.func` functional execution either. + - As declearn vows to support Torch 2.0, it seems crucial that end- + users may use `torch.compile`. However, as long as Torch 1.10-13 + versions (and previous versions of DecLearn 2.X) are supported, + this handling should not break backward compatibility. + - An initial approach was to enable compiling the handled module as + part of `TorchModel.__init__`. However, this proves impractical, + as it takes away the assumption that end-users should be able to + use their customly-prepared module as-is - including pre-compiled + ones. This is all the more true as their are many options to the + `torch.compile` function, that DecLearn has no purpose handling. + - Therefore, the approach implemented here is to detect and handle + models that were compiled prior to being input into `TorchModel`. + + - Here are a few notes and caveats regarding the current implementation: + - Some impractical steps were taken to ensure weights and gradients + have the same name regardless of whether the module was compiled + or not, _and regardless of the specific 2.x version of declearn_. + When we move to declearn 3, it will be worth revising. + - A positive consequence of the previous note is that the compilation + of the module should not impair cases where some clients are using + torch 1 and/or an older 2.x version of declearn. + - The will to retain user-defined compilation option is mostly lost + due to the current lack of recording of these info by torch. This + is however expected to evolve in the future, which should enable + sharing instructions with clients. See issue 101107 of pytorch: + https://github.com/pytorch/pytorch/issues/101107 + - A clumsy bugfix was introduced to avoid an issue where the wrapped + compiled model would not take weights updates into account when + running in evaluation mode. The status of this hack should be kept + under close look as the issue I opened to report the bug is treated: + https://github.com/pytorch/pytorch/issues/104984 + +[33mcommit ef8b5662e43533cd59f439f467b1ac08e7a419e3[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jul 4 13:43:23 2023 +0200 + + Add support for torch model buffers in clipped gradients computation. + +[33mcommit 4202d5624820e1a57931757b44bbe546a0653db3[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jul 4 17:10:31 2023 +0200 + + Update 'pyproject.toml' to support both Torch 1.1X and 2.X. + + - Turn "all" and "torch" extras more loose, enabling (thus, in most cases, + resulting in) installing torch >=2.0 rather than 1.1[0-3]. + - Add "torch1" and "torch2" extras to specify explicitly whether the user + would rather use Torch 1.13 or >=2.0. Opacus is made part of these two + extras, as its version is also co-dependent with Torch/Functorch. + - Document this change as part of the package installation guide. + +[33mcommit accb07d1ba8815c3b6fbe659330cb740238dda84[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 24 16:48:21 2023 +0200 + + Revise TorchModel to support Torch 2.0. + + - Torch 2.0 was released in march 2023, introducing a number of + new features to the torch ecosystem, while being non-breaking + wrt past versions on most points. + - One of the salient changes is the introduction of `torch.func`, + that integrates features previously introduced as part of the + `functorch` package, which we have been relying upon in order + to efficiently compute and clip sample-wise gradients. + - This commit therefore introduces a new backend code branch so + as to make use of `torch.func` when `torch~=2.0` is used, and + retain the existing `functorch`-based branch when older torch + versions are used. + - As part of this effort, some of the `TorchModel` backend code + was refactored, notably deferring the functional transform of + the input `torch.nn.Module` to the first call for sample-wise + gradients computation. This has the nice side effect of fixing + cases when users want to train a non-functorch-compatible model + without DP-SGD. + +[33mcommit 9f0035d7d7a80b8a28181c2386154e700681cc27[m +Merge: 8843e07 4efde98 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Jul 12 13:25:58 2023 +0000 + + Merge branch 'revise-ci-and-tests' into 'develop' + + Refactor tests pipeline, introducing 'scripts/run_tests.sh'. + + See merge request magnet/declearn/declearn2!52 + +[33mcommit 4efde9876c7762d72b67bd7415e3db2315b25dea[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jul 10 13:23:45 2023 +0200 + + Adjust the CI/CD configuration to 'tox.ini' evolution. + +[33mcommit 31d3fb67f1b254797d48d985326e5fdb7b374120[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 7 12:05:08 2023 +0200 + + Refactor tests pipeline, introducing 'scripts/run_tests.sh'. + + - Add the 'scripts/run_tests.sh' bash script, which enables running + various blocks of tests. This mostly refactors instructions that + used to be part of 'tox.ini', in a more convenient way: + - some tests are grouped (commands in a group _all_ run, but the + group fails if any has failed once all are done); + - instructions are (hopefully) easier to read through and should + be easier to maintain in the future; + - it should be easier to decline more groups in the future (e.g. + to have a routine with only unit tests); + - groups of tests can be run easily, including without using tox. + - Have the 'tox.ini' file trigger some groups of tests by calling + the new bash script. This makes the tox file easier to read and + parse through, and merely oriented at providing run isolation. + - Split test groups into various envs in tox, which may be slightly + more costly to run, but enables writing simpler CI/CD pipelines + that merely pass arguments to the tox command. + - Make it explicit in 'tox.ini' that tests can be run with python + 3.8 and onwards. + - Keep a "main" job that groups all others. This is useful in the + Inria shared Gitlab Runner, as caching is disabled, so that the + use of distinct jobs would result in redundant costful package + installations. + +[33mcommit 8843e075e5b75e52f03ab0cc35aa961e14936f49[m +Merge: c9f5245 6b7a3d6 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Jul 12 13:00:15 2023 +0000 + + Merge branch 'mnist-example' into 'develop' + + Revise the MNIST example, cleaning up the code and documentation. + + See merge request magnet/declearn/declearn2!51 + +[33mcommit 6b7a3d618cc67d957d8702672e86c6acd727b38b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jul 11 15:08:00 2023 +0200 + + Revise the MNIST example, cleaning up the code and documentation. + +[33mcommit c9f52458b8cdc3eab7e89eb57d42faa6b5e4cc3c[m +Merge: 3b687a3 38accb6 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Thu Jul 6 16:52:11 2023 +0000 + + Merge branch 'sklearn-13-dtype-fix' into 'develop' + + Fix compatibility issues with scikit-learn 1.3.0 and tensorflow 2.13.0 + + Closes #28 and #29 + + See merge request magnet/declearn/declearn2!50 + +[33mcommit 38accb6466e94f2b68955dfa7692a5511c53fa6d[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Jul 6 17:12:05 2023 +0200 + + Refactor 'SklearnSGModel' dtype choice code into a private function. + + Co-authored-by: Paul ANDREY <paul.andrey@inria.fr> + +[33mcommit c4fe82b50fcddfed71c6701db8c6c8c69570a748[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 6 14:13:16 2023 +0200 + + Prune 'test_main.py' pytest-collected test scenarios. + + The legacy 'test_main.py' integration tests are now mostly redundant + with other integration tests, adding little marginal value to the CI/CD + tests pipeline. From a Coverage POV, the only thing that is not already + tested elsewhere is the actual use of Scaffold. + + Hence the test scenarios collected during PyTest runs are restricted to: + - FedAvg and Scaffold variants of Optimization strategies. + (prior: FedAvg + FedAvgM + Scaffold) + - In non-fulltest, only the Scaffold strategy is used. + (prior: FedAvg + Scaffold) + + This results in testing 3 scenarios in the limited pipeline and 18 in the + "fulltest" one, when there previously would be 6 or 27 scenarios. + +[33mcommit 29ecf47396bccd1baf1363d1f3806bfa083d1c61[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 6 14:11:37 2023 +0200 + + Add 'dtype' use to 'SklearnSGDModel' unit tests. + +[33mcommit 95cfa2b9069472f2867120d099d330a88e6d166f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 6 14:09:39 2023 +0200 + + Refactor and fix 'build_keras_loss' util; add unit tests for it. + +[33mcommit 808cd5fd0a9a0dc3a25fc8b6d6f10b34341520dc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 6 11:56:48 2023 +0200 + + Fix 'build_keras_loss' for TensorFlow 2.13. + +[33mcommit 02afef6ec467896cc9fdcdaab8df238860e40ef1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 5 18:07:21 2023 +0200 + + Improve dtype handling in 'SklearnSGDModel'. + + - Scikit-Learn 1.3.0 introduced the possibility to use any dtype for + SGD-based models' weights. + - As a consequence, this commit introduces the optional 'dtype' argument + to 'SklearnSGDModel.__init__' and '.from_parameters' methods, which is + only used with `sickit-learn >=1.3` and an un-initialized model. + - Coherently (and for all scikit-learn versions), additional type/dtype + verification has been implemented under the hood of `_unpack_batch`. + +[33mcommit 3b687a3a249c7f33711da02f4ab575ff151869ff[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jun 8 14:23:35 2023 +0200 + + Fix Heart Disease UCI Dataset loaded due to website change. + +[33mcommit afc295100261d5a19b278363e73763eafc2022ba[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 31 11:57:23 2023 +0200 + + Replace deprecated 'pkg_resources' with 'importlib.metadata'. + +[33mcommit a8cfa7cc9fa9045d13466527793f8baf706a817c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue May 23 16:22:15 2023 +0200 + + Remove unused line in 'tox.ini'. + +[33mcommit f7a13dff9ce3de674ac263628ae8dc98153b2335[m[33m ([m[1;33mtag: v2.2.0[m[33m)[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu May 11 15:58:17 2023 +0200 + + Fix Jax dependency specification. + +[33mcommit 9113e8adfca5678b20e33f8eb6b58f8135c14125[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu May 11 15:53:42 2023 +0200 + + Document known issues with GPU support. + +[33mcommit 88a990ec327925d7194c283169f7e054af92c80b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu May 11 10:39:47 2023 +0200 + + Turn device-selection 'UserWarning' into 'RuntimeWarning'. + +[33mcommit 9d1b25cb591e4713f303b6441892eff5faf1f8bd[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu May 11 10:39:10 2023 +0200 + + Fix device selection for Jax and add '--cpu-only' to its tests. + + - Fix device-selection utils for Jax/Haiku. + - Ensure any GPU is left untouched when the device policy specifies + that the CPU must be used. + - Fix instructions in both HaikuModel and its tests' setup code to + achieve the former. + - Note: `jax.jit(..., device=<D>)` is used to prevent Haiku from + using another device than the desired one; however this argument + is being deprecated, making this solution short-lived. Since the + supported Jax version is hard-coded however, we keep this patch + for now, in wait of future framework evolutions. + - Add the use of the optional, custom `--cpu-only` flag in Haiku + unit tests. This enabled testing the former changes in an env + that has a detectable GPU, but an unproper driver version (so + that any undesired use of that GPU would make the tests fail). + +[33mcommit 28e881522f3f4da1d4ff7542065f6063893fb3c2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 10 15:10:30 2023 +0200 + + Bump version number to 2.2.0. + +[33mcommit 1eae849db8486fef14b5fb7304d2bea8b71e9a3b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 10 15:05:22 2023 +0200 + + Improve some documentation formatting. + +[33mcommit 164ddb3b4b827c2fbd3ed047be4fee339adcdcbe[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 10 15:03:18 2023 +0200 + + Improve 'HaikuModel.set_trainable_weights' docs. + +[33mcommit dd2eef5029ab0a75785372326d5e3fe472c72799[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 10 14:49:12 2023 +0200 + + Fix jax dependency specification. + +[33mcommit e95ece2ee68e98a570539c1f3eac4d68d83e571e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 10 14:48:56 2023 +0200 + + Fix 'declearn.model' main module docstring. + +[33mcommit 38dbe123376bc69097098fc7406e5f1f5ab69860[m +Merge: a748ae7 eef2033 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed May 10 09:30:49 2023 +0000 + + Merge branch 'gardening' into 'develop' + + Minor gardening around the package + + See merge request magnet/declearn/declearn2!44 + +[33mcommit eef2033fc3d4ceda652cdccf863738312a434b85[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 10 09:53:43 2023 +0200 + + Enhance type hints for Jax/Haiku classes. + +[33mcommit ba2caa2f9b694283f1283266ce4a386885310af1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 3 16:40:38 2023 +0200 + + Revise test suite's ordering. + + - First run unit tests (which are the more problematic). + - Then run code quality verifications (pylint / mypy / black). + - Finally run integration tests. + + The rationale to inverting the last two items relative to what was + done prior to this update is to keep the longest-running tests for + the end (rather than re-play a long pipeline due to late-detected + formatting issues). + +[33mcommit 9e6f9a8c6ad0e6472fa450cd29c2a5279063e7ed[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 3 16:40:12 2023 +0200 + + Patch 'TomlConfig' unit tests for PyLint. + +[33mcommit fd8abbd3f7b27cba1087f441f32fd734dc8ef836[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 3 15:57:10 2023 +0200 + + Add the 'list_aggregators' util function. + +[33mcommit c3a6186149d09fc0d3d1c0ec74058f109cedf375[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 3 10:57:10 2023 +0200 + + Add some 'pragma: no cover' comments. + +[33mcommit d37d8ed21548984bdfb9112d676d8bb469cc8ab5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 3 10:46:17 2023 +0200 + + Lift 'run_as_processes' backend code. + +[33mcommit 93f13d536ed0dd919be456f0a3adf0380eefb088[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 3 10:40:42 2023 +0200 + + Add basic unit tests for 'Aggregator' classes. + +[33mcommit 29c6fb3a0cfc7f73e528d4db1a57dd9d01c6f2d8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed May 3 10:40:07 2023 +0200 + + Marginally improve some 'Aggregator' code and docs. + +[33mcommit f9ee9b9a3c19829970dca24d8e3856f699856bb2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Apr 28 11:48:30 2023 +0200 + + Add minimal functional test for quickrun mode. + +[33mcommit 163acc1f64e462f56d06abc1c704ab2baae311ec[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Apr 28 11:47:16 2023 +0200 + + Make quickrun mode compatible with gRPC. + +[33mcommit fd7d8c2a56609babd92ff5c93c228cdeddfd93e4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Apr 28 11:46:52 2023 +0200 + + Fix default aggregator in `FLOptimConfig`. + +[33mcommit dd17cd64d10bae0c6a75a49c698c7a3e1eba0d43[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Apr 27 16:38:31 2023 +0200 + + Add unit tests for 'TomlConfig' and revise its backend. + +[33mcommit 2b020369a21697513204a312a1d4dc7a7c53220d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Apr 27 10:42:40 2023 +0200 + + Extend unit tests for type-registration utils. + +[33mcommit 6630eb915dfd8c59304f466fde9f01efd5250574[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 26 17:14:46 2023 +0200 + + Add utils to list available optimizer plug-ins. + +[33mcommit 13b5c75792879db557e45e23900624c5ce6e17eb[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 26 16:45:56 2023 +0200 + + Add 'Model.get_wrapped_model' to the API. + +[33mcommit 7d440b0cf60b28cb5875b20ec6a1ab2ffd0c8cf3[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 26 16:25:16 2023 +0200 + + Correct a comment in 'NoiseModule' code. + +[33mcommit 7f3327b1bc94309fc4babc06ef7c6a5027986be6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 26 16:18:50 2023 +0200 + + Enhance typing of 'Model' and 'Vector' using 'typing.Generic'. + + - Make `Vector` a `Generic[T]` to indicate that stored data arrays + should have coherent types. + - Make `Model` a `Generic[VectorT]` to indicate that a given model + class is associated with a unique vector class. + - In `Optimizer` and plug-ins ABCs, specify that inputs and outputs + should be coherent using `Vector[T]` and `Model[Vector[T]]` type- + hints. + - In concrete plug-in classes, leave the existing code as-is so as + not to make it harder to read. + +[33mcommit a748ae7131fbd0be50aa947f146e78e44b66da95[m +Merge: 2258d64 11274f4 +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue May 9 19:16:39 2023 +0000 + + Merge branch 'haiku-jax' into 'develop' + + Add support for Jax / Haiku + + See merge request magnet/declearn/declearn2!32 + +[33mcommit 11274f419a6b35b9cedfc4f9f0833da6c39f9729[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue May 9 14:40:27 2023 +0200 + + Removing unused typing import + +[33mcommit 6653b3dc55959414ce800e3281f9476d9c7e2653[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue May 9 12:55:47 2023 +0200 + + Avoid re-implementing haiku model traverse. + +[33mcommit 5f33eef6bd3ffd819a713c6e7d99110d6eeb26c0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri May 5 12:16:33 2023 +0200 + + Revise 'HaikuModel' backend. + + * Add proper weights and gradients naming. + * Store the model's nested dict of parameters rather than its + flattened counterpart. + * Refactor some backend code to improve readability of gradients + computation. + * Add a public getter to access weights' names, opt. restricted + to trainable ones. + * Revise `set_trainable_weights` to received lists of names rather + than indices. Keep support for predicates and PyTree inputs. + +[33mcommit d02b880ed7c59aab0ffda0519f1cef2440103da5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri May 5 10:20:55 2023 +0200 + + Minor formatting revisions to 'HaikuModel'. + +[33mcommit defe9ba664f9c0e4ea4de5ca37bd1701c1f255e3[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed May 3 17:53:04 2023 +0200 + + post rebase corrections + +[33mcommit 692a4054753c0deaab7ef406d1b20e96a3fc102a[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Apr 24 19:30:03 2023 +0200 + + linting + +[33mcommit eb441268a48f093bfb489050de12984494c2a7a5[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Apr 24 19:24:30 2023 +0200 + + Adding list inputs to model and automatic unpacking + +[33mcommit d35056847ba5d3e7324da6556f9470f43b36163b[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Apr 24 18:06:12 2023 +0200 + + Changign test model to use last LSTM hidden state + +[33mcommit a55f6417aa56f5fd027fdd4fdbfd1e335964507b[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Apr 24 17:49:46 2023 +0200 + + Fixing `_compute_batched_gradients_clipped` test and typos + +[33mcommit 98090019afb4ce68cc131c4383ca538513a4b845[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Apr 24 13:18:36 2023 +0200 + + Fixing Jax RNN `_compute_batch_gradient` testing - with open questions on the internal logic of the model + +[33mcommit 4bea61f0b1be169c49937100b09ea5db71f99db9[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Apr 19 18:26:27 2023 +0200 + + Running gradient only on trainable parameters + +[33mcommit c948f95a5f99a2ded442972db280a44b88565a40[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Apr 19 17:20:24 2023 +0200 + + Refining haiku model frozen weights methods + +[33mcommit fb6cc0b42e5eef3843f142bcb8d2f248646afd37[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Apr 19 17:19:19 2023 +0200 + + Adding frozen weights tests + +[33mcommit bac15a39e34c7a2d79fd21b6a7c3935b10944315[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue Apr 18 19:14:49 2023 +0200 + + v0 of adding support for frozen_weights. Main ideas: + * Store the index of trainable weights under `self._trainable` + * Create a `set_trainable` method to allow to define trainable weights by using either a list of param leaves index, an existing pytree or dictionnary, or a boolean function checking for conditions on the param pytree + * Only update what the weights needed + +[33mcommit 1d43c0ddff3cd6283400f1ba76d5604bf760bb6b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 17 10:04:54 2023 +0100 + + Marginal 'HaikuModel' changes after review. + +[33mcommit 28a34851693f5a2cb220acd1c8eea4240624d434[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 17:46:49 2023 +0100 + + Silence duplicate-code issue and minify haiku test code. + +[33mcommit e1031b5ede39043471dd5ef54960008eb5c6e3a2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 17:15:49 2023 +0100 + + Add missing license headers to haiku-related files. + +[33mcommit 56971bd5932d0c3cb972757e2417b8d0bcddacfe[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 17:03:00 2023 +0100 + + Improve some Haiku/Jax related documentation and imports. + +[33mcommit 569106f8b29db6064a804b0dce5f49f5223cae27[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 17:02:17 2023 +0100 + + Remove redundant jax config call. + +[33mcommit 8bcbc9d59de34b7ddf4ce24a9c316665f81bb819[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 16:30:29 2023 +0100 + + Clean up 'JaxNumpyVector' backend code. + +[33mcommit 0c43b027a5ce89fd0fca0645639871ff18fe7026[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 16:27:56 2023 +0100 + + Capture expected warnings in 'HaikuModel' tests. + +[33mcommit 1ede1179fae64ef67673be4b22d7ff18c121e549[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 16:12:19 2023 +0100 + + Correct Haiku test CNN parameters. + +[33mcommit 8dfc07d04be402a05501e8cb85aac62c86727e0d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 15:49:07 2023 +0100 + + Correct gradient-clipping with 'HaikuModel'. + +[33mcommit 274ae23f6d2eea5c0dfe186dbe55630ee80b58de[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 15:20:12 2023 +0100 + + Optimize `HaikuModel` backend. + + Avoid building the gradient-computing jax functions every time they + are to be used. On the `test_regression.py` functional test, this + results in halving the execution time (which contains that of the + sklearn benchmark; hence the actual haiku gain is even higher). + +[33mcommit f8330bcefb2256525c7c47975c949e33ed09d44d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 13:10:32 2023 +0100 + + Improve 'HaikuModel' backend code readability. + + * Remove some targetted imports to make jax functions' origin + clearer when used in the declearn code. + * Use `haiku.Params` type-hint to annotate parameters. + * Rename the parameters-holding private attributes to make them + shorter. + * Improve the type-hinting of the parameters-holding attributes. + * Add some assertions to silent mypy. These seem un-hurtful as to + code runtime and may be skipped with the proper python flag, but + may be removed in favor of restoring `type: ignore` comments if + they turn out to be costly. + +[33mcommit c859b4d7b13d0d60527350973c17dd8f8b6fd609[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 12:30:58 2023 +0100 + + Fix and silent pylint warnings. + +[33mcommit 1fddb802e3a6a9a018311993cf4f60afc148a2d3[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Mar 15 14:41:56 2023 +0100 + + Adding cpu flag in jax install - to be revised when adding gpu support in ci/cf + +[33mcommit 5158a84ed9e058ed2c517ebef15b6335772495c1[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue Mar 14 17:57:47 2023 +0100 + + Make imports conditional on framework availability in test_regression + +[33mcommit 0b7f98c7301289895fc42cf92c9338a8b582231a[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue Mar 14 17:46:59 2023 +0100 + + Adding dependencies in toml, updating jax and haiku version, implementing new typing using jax latest features + +[33mcommit b26e1b0cb7e885d393fec13f99a8e8c99b1e6cd6[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 13 19:11:13 2023 +0100 + + Adding doc + +[33mcommit 2bef2b8146255845390756a1fc64bab2d8faf25f[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 13 18:16:28 2023 +0100 + + Removing temp test file + +[33mcommit 7d70503ea46d08d008f1d4eb547cf2ba9029f996[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 13 18:15:23 2023 +0100 + + jax functional testing + +[33mcommit f53e80c77006618caceeeef417223d9e80227df2[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 13 12:39:02 2023 +0100 + + Adding vector doc and applying left-most device placement rules + +[33mcommit a7d9b3c039302f95236b8656bbe46cb4714c3eb3[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 13 12:16:00 2023 +0100 + + Correcting test model shape + +[33mcommit f9daded96d9925d064f885382c2a23fb02d4042c[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 13 12:09:44 2023 +0100 + + Correcting tf file typos + +[33mcommit 6227db0af4d1fd6eff869a608bb59c9471bf5de7[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Mar 10 18:14:44 2023 +0100 + + HaikuModel Unit testing + +[33mcommit 10399088fb3c2ec341dd610d6fdd80f845123901[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 9 15:30:30 2023 +0100 + + Adding jax to testing and correcting JaxNumpyVector for tests + +[33mcommit 00e8763b7077ec0e66ae8f578dcb5fdfa59311c1[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 9 14:27:41 2023 +0100 + + Adding data_info attribute to HaikuModel + +[33mcommit 83ff7106655a82cde4afbdc955b8ce9e936ffe86[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Mar 8 19:42:39 2023 +0100 + + Adding feature_shape (WIP) + +[33mcommit a709875bbfe2cafd7792eaddc12c96b0589a97a1[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Mar 8 16:42:07 2023 +0100 + + linting code + +[33mcommit 4fbf74fe8ea023355540f94629f03fd71bbfd186[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue Mar 7 20:18:51 2023 +0100 + + Adding first simple typing + +[33mcommit 9c9943d9fefae86c8342d78ac78748bd20958222[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue Mar 7 19:06:43 2023 +0100 + + Correcting rnadom generation + +[33mcommit d55ec54ad6e401f408d05cf5b647895914a5488f[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 6 10:21:00 2023 +0100 + + quick and dirty functional test + +[33mcommit deba84259380474ea5ae19c20f3f50c9be0cec88[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 6 10:20:39 2023 +0100 + + temp data info unpacking + +[33mcommit 89196050dba0e8477b6a3be4c48bfaafd2ee58c7[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 2 19:16:46 2023 +0100 + + v0 of GPU support for HaikuModel - untested + +[33mcommit 2af9a079c7bc0ea5d014b3f69ceab1d0658d70f6[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue Feb 28 18:32:57 2023 +0100 + + Adding @jit for grad and vmap operations + +[33mcommit 90da8fb30c383de616b8153aa37e0246a232d5a1[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Feb 27 19:25:48 2023 +0100 + + Adding functional clipping + +[33mcommit 2788d8e686c88b58acf28117349bb21a734d76bb[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Feb 16 18:35:07 2023 +0100 + + First functional HaikuModel + +[33mcommit 60eaa705e7c783109ebf286e2ab8ff4e04a44283[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Feb 15 14:01:06 2023 +0100 + + __init__ files + +[33mcommit c1f7b1610546a1843622469107de43719acb927a[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Feb 15 14:00:47 2023 +0100 + + Minimal, untested jax numpy vector + +[33mcommit 2258d64f3b79136e39785fea75b4973fcedb751e[m +Merge: 16ec423 365c980 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Apr 26 10:02:18 2023 +0000 + + Merge branch 'experimental' into 'develop' + + Quickrun mode + + See merge request magnet/declearn/declearn2!41 + +[33mcommit 365c9808534be602c724039f4b791ff469da86b5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 26 11:02:58 2023 +0200 + + Fix formatting and links of 'quickstart.md'. + +[33mcommit f263e015766bba519de07ee748d91c32b8b7928c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 26 11:02:44 2023 +0200 + + Minor addition to 'setup.md' docs. + +[33mcommit 5c2b28a188a844b1ab6ccc99a8945ba4d4cde8e8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 26 11:02:12 2023 +0200 + + Enhance the in-code docs of quickrun. + +[33mcommit dba91294fc7ca8b3aebfda79a310913b120fc913[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 26 10:47:36 2023 +0200 + + Expose quickrun building bricks, to render their docs. + +[33mcommit 21bcd2f63ca288225398be6a3b7fba1fe3375647[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 26 10:47:11 2023 +0200 + + Fix some docs under 'declearn/dataset/'. + +[33mcommit 82174e1eed2766f3530ba9b89df8f1393094e48e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 26 09:35:52 2023 +0200 + + Update mnist-quickrun example and add a readme file. + +[33mcommit 30549fa951edda572ccd135cb834385a07418978[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Apr 25 18:04:25 2023 +0200 + + Change default model name in quickrun mode. + + Rationale: the model must be an instance, while "MyModel" has the + naming convention for a class. + +[33mcommit 63218f595d18c78a5bb664fb0f2dc766c667fecb[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Apr 25 18:03:36 2023 +0200 + + Lift the MNIST example files. + +[33mcommit a9dd17ded42d465a7e65cabe8daeaf5d15cc3d72[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Apr 25 17:48:52 2023 +0200 + + Lift the backend of 'declearn-quickrun'. + +[33mcommit c187016b160f8c185566ba055d84aa4d120a5743[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Apr 25 16:27:58 2023 +0200 + + Lift up `declearn-split` backend code. + + - Add support for sparse data arrays (as inputs and outputs). + - Add support for column name targets when using a csv file. + - Make 'split_data.py' file private and expand its documentation + as part of `declearn/dataset/__init__.py`. + +[33mcommit 648b3fd92f5bb4bb60a3448c838917236464b371[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Apr 25 11:31:05 2023 +0200 + + Add support for sparse inputs in 'split_multi_classif_dataset'. + +[33mcommit ab6d9c2bb3817dc26a03a8d5e81eef8cb4ef746e[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Apr 21 12:06:14 2023 +0200 + + Small formatting changes to quickstart doc + +[33mcommit fec24b2c1abdadfa4e080fc0d432435b203d4da1[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Apr 17 17:29:45 2023 +0200 + + Minor mypy changes in 'datasets.examples'. + +[33mcommit 7f51399d43d05ed966b2e7e160ec128a4bcc60fb[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Apr 14 12:30:56 2023 +0200 + + Infering client names form folder names + +[33mcommit 8ac8411a47e97e72c9a639747a8af5e6bec62c1c[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Apr 14 11:38:06 2023 +0200 + + Local MNIST example + +[33mcommit 75c1ec354a78932857aa25e652d0b063d198633f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Apr 13 12:07:35 2023 +0200 + + Add unit tests for sparse-data utils. + +[33mcommit 69c99d2e7ff3cab402d974345a652fe96296dd5f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 12 16:15:17 2023 +0200 + + Add unit tests for data save/load utils. + +[33mcommit ab42d2225d3fe25c8819dcb281676d073ac4b0b9[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 12 16:13:38 2023 +0200 + + Fix bug in 'declearn.dataset.utils.sparse_from_file'. + +[33mcommit fc311fd2739236bf4a9458d64fb1db60e0ddfbb8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 12 14:37:33 2023 +0200 + + Implement tests for example dataset loaders. + +[33mcommit c4b4f80ebeaa89d958fd4e435b82faebab173c8f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Apr 12 14:09:56 2023 +0200 + + Remove inadvertantly restored 'test_routines.py' + +[33mcommit fe3f18a731d60cfa58e01126af046c2a420d3a58[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Apr 12 12:37:52 2023 +0200 + + Linting + +[33mcommit 07942a1160400cf5664fb216a2d25ab23db3a0a3[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Mar 31 18:19:02 2023 +0200 + + Integrating feedback from Magnet au Lac. + + * Separating `split_data` and `quickrun` + * Improving doc and leveraging better existing doc + * Using fire for parsing + +[33mcommit 3ba1c1aaa476ff07b4064da7dd2943910b35ee31[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 31 16:20:05 2023 +0200 + + Fix logger use in quickrun mode. + +[33mcommit f398148d6c29cf544a3c562fea7531eb339e8599[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 31 16:16:58 2023 +0200 + + Disable GPU use in quickrun mode. + +[33mcommit 17d11a023da6f707257aa1cfc9206dbdf7ec3933[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 31 16:16:40 2023 +0200 + + Improve file paths handling in quickrun script. + +[33mcommit 303b90581c1db988ef15724a4382bd5d846abf13[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Mar 31 12:36:13 2023 +0200 + + Heavily simplifying model + +[33mcommit 68d3c24285c921ff7f0fc9698c2eee92755defbc[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Mar 31 12:35:57 2023 +0200 + + Adding datime to result folder by default + +[33mcommit b62f7ed6fbd50dba4d0813e35e9a801d21a8adbb[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 31 15:42:17 2023 +0200 + + Add a custom logging level to filter multiprocessing outputs. + +[33mcommit 041588db2052b60c8c461699a133183b50f56247[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 31 11:44:30 2023 +0200 + + Add 'requests' dependency to 'pyproject.toml'. + +[33mcommit 838111469023f67519d2b9174499605c10bf38d1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 31 11:31:28 2023 +0200 + + Add 'declearn.dataset.utils.split_multi_classif_dataset'. + +[33mcommit 8b38b10f0dc536217ef7239788cdaf370998e0f2[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Mar 31 11:29:21 2023 +0200 + + Documenting in detail the quickrun mode, later overridden + +[33mcommit 4d713710961db07ead1e8db4da6e675a6cca7f64[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 31 10:54:20 2023 +0200 + + Moving data_split utils to `declearn.dataset`. + + - Move functional data loading/saving utils to it. + - Properly deprecate `InMemoryDataset.(load|save)_data_array`. + - Improve docstrings formatting and exhaustiveness. + +[33mcommit deb44655135a51c48dec56e3b2adee34a32f8b7a[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 30 21:00:11 2023 +0200 + + Small quickrun back end changes + +[33mcommit 69699d65e34cc1098e8bb3e67db41bd262a69f82[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 30 20:59:24 2023 +0200 + + Simplyfing defualt config and model + +[33mcommit 35b5a3af45d71174c26f58c7092c4cf9e1550df9[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 30 20:58:40 2023 +0200 + + Adding quicklearn readme + +[33mcommit 4206cca1a7011512f84fe8e83c11069de51d6b29[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 30 15:31:31 2023 +0200 + + Improve quickrun metrics parsing. + +[33mcommit 0296417ea65ad49f9c19757b505fe77859d2f000[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 30 10:29:22 2023 +0200 + + Update 'utils.__init__' to document 'run_as_processes'. + +[33mcommit 8ddc1bb97015718c5a7d1b344fe0263bb16cab96[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 30 10:27:36 2023 +0200 + + Enhance refactored 'run_as_processes' code. + +[33mcommit 1c26f2c201bf62a60902cfa9dc74b0c290982911[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 30 09:26:31 2023 +0200 + + Adding checkpointer and metrics, re-shuffling data in labels split + +[33mcommit 98027bc4ff4ed17e9206c00e97953ebe0218b825[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Mar 29 16:01:08 2023 +0200 + + In depth review of TOML parsing, first pass : + * Creating "ModelConfig","DataSplitConfig", and "ExperimentConfig" + * Relocating and updating parser to accept toml file as input + * Update split data to use config input + * Modularization and updating of run.py + * Small changes to MNIST toml example + +[33mcommit ca9f503e8517a5eaac3601342db4939cdf2994ec[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 27 22:55:56 2023 +0200 + + Making the MNIST example work + +[33mcommit dce90357596c12fb70f9105fadf27ac2d0d491e4[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 27 11:20:58 2023 +0200 + + Updating multiprocessing to run on all systems + +[33mcommit 22b0af35b38700fcbc5a5a3945d4ba5e2323c207[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Mar 24 12:12:38 2023 +0100 + + Debugging and documenting + +[33mcommit 0969d20bdbe2ed120be77f53f989bc42d3a71d9a[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Mar 24 11:03:39 2023 +0100 + + Adding quickrun cli script + +[33mcommit 38f46c0715836c1e37b831cea74f08a6a5b157cb[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 23 12:28:37 2023 +0100 + + removing csv export in split data + +[33mcommit 8f2be5b7c608efcd570efc9a310bfb4ae21ca9e2[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Mar 22 16:10:45 2023 +0100 + + Removing data.py from the example folder + +[33mcommit 0341551755bda4e4e11b63c7a5d5434808c3c15b[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Mar 22 16:10:08 2023 +0100 + + Adding optional behavior on loading config from toml + +[33mcommit 6525cf7663490f040fdf927095d7c033a68efb0c[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 16 09:51:35 2023 +0100 + + v0 of quickrun + +[33mcommit 16ec423645eae786022598ff43eb8fef3d484be8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Apr 24 15:42:15 2023 +0200 + + Silence mypy false-positives on pandas. + +[33mcommit 3f6ed06df031255d3699c8d85835af0eb0990ac1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Apr 24 15:17:48 2023 +0200 + + Correct RNN test case for Torch. + + - Previously, the predictions would come from the final hidden state + of the trained LSTM, rather than the output representation of the + final sequence element. + - This barely has any consequence given the nature of the unit tests, + but improves readability when used as a template for RNN models or + similar tests with other model frameworks. + +[33mcommit b8222c84df9615dd19220f7a21f11895414ec49c[m +Merge: 594dfac be449f9 +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Apr 17 13:18:49 2023 +0000 + + Merge branch 'functorch' into 'develop' + + Refactor 'TorchModel' backend code to compute sample-wise gradients. + + See merge request magnet/declearn/declearn2!42 + +[33mcommit 594dfacb20e4eca7bbb11c02684241bf1dd0bf5d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Apr 6 11:04:32 2023 +0200 + + Minor optimization to 'SklearnSGDModel' backend. + +[33mcommit be449f942e0869c899e5fa345d4e522e9d1cb4a6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 17 13:12:56 2023 +0100 + + Refactor 'TorchModel' backend code to compute sample-wise gradients. + + * Cache the functorch-built vmapped functions that compute (and opt. + clip) sample-wise gradients. + * When available, use `functorch.compile` to try and optimize these + functions (resulting in lower execution runtimes on repeated calls + thanks to their caching). + * Note: with the release of torch-2.0, the `functorch.compile` API, + which is experimental as of torch-1.13, is already deprecated. + Hence this patch is going to be short-lived - but it may in turn + pave the way to the future backend changes to add support for and + take advantage of new torch-2.0 features. + +[33mcommit 46d7492c720ae40c45b6ecbf576fcca4c8208a8f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 29 16:21:38 2023 +0200 + + Fix link to API reference page in README file. + +[33mcommit a918f2a44db1c1e6017ba73f932306a91d63e9b7[m +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Mar 29 09:08:16 2023 +0000 + + Add coverage statistic capture to CI/CD config. + +[33mcommit fe92463734bfa05e9d79a3d272a64758cd9ae3a7[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 29 09:49:23 2023 +0200 + + Make CI/CD optional 'test-full' non-blocking on main branches. + +[33mcommit 1bf6a11bd60f5e0b8c79d98238be4500a4ae86f1[m +Merge: 34779af d6fe02b +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Tue Mar 28 13:16:43 2023 +0000 + + Merge branch 'coverage' into 'develop' + + Compute coverage as part of CI/CD. + + See merge request magnet/declearn/declearn2!38 + +[33mcommit d6fe02b426ec8e4cf4699692080c278d2a111ea9[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 3 12:48:15 2023 +0100 + + Add coverage collection to GitLab CI/CD. + +[33mcommit a5eedd4ab2afba621f124b95c1d694948aa4326c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 3 12:43:59 2023 +0100 + + Add coverage computation to 'tox.ini'. + +[33mcommit c8e04ad0981d7a70c82626c89cad74c31c878886[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 2 17:02:08 2023 +0100 + + Configure coverage tool with 'pyproject.toml'. + + * Add 'pytest-cov' (hence, indirectly, 'coverage') to third-party + dependencies of test environments. + * Add configuration of 'coverage' to properly target declearn code + (excluding auto-generated protobuf code as well as `test_utils` + submodule) and be compatible with the use of multiprocessing in + some functional~integration tests. + +[33mcommit 34779af93b74e73a964c251ab5bee7d6552ae951[m +Merge: b744ca4 7d08a3c +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Tue Mar 28 12:34:04 2023 +0000 + + Merge branch 'tests-gardening' into 'develop' + + Improve the test suite + + See merge request magnet/declearn/declearn2!39 + +[33mcommit b744ca4527c14af2bd5355851fd58aa404b29100[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Mar 27 12:03:22 2023 +0200 + + Improve API reference navigation in online docs. + +[33mcommit 08aea92bccb33b066eb555ac8546543017bbba58[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Mar 27 12:02:52 2023 +0200 + + Update gitlab-exported 'docs/index.md' file. + +[33mcommit e2643ad1fb6d621bc9954efb89aad02ea947c33d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Mar 27 08:01:32 2023 +0200 + + Fix formatting of 'Optimizer' main docstring. + +[33mcommit fec1780b3323ad915dbd72dcffb157dc3952788f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 24 21:26:29 2023 +0100 + + Update links to the public website. + +[33mcommit ae6ec5cd24030b1ec593bb0b35ec3bf65b72131c[m +Merge: 0664076 cec394f +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Fri Mar 24 14:47:48 2023 +0000 + + Merge branch 'docs' into 'develop' + + Restructure the documentation and render docstrings + + See merge request magnet/declearn/declearn2!40 + +[33mcommit cec394fba05294564a9be273b506dc587571a34d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 24 15:30:54 2023 +0100 + + Fix Quickstart docs formatting. + +[33mcommit bd89ba1763a8ee8bb009abc6e50ae4785166be00[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 24 15:25:16 2023 +0100 + + Remove non-existent website link. + +[33mcommit 76a08a32e5b601aba109781c16e176d48e2fbf06[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 24 12:02:38 2023 +0100 + + Add docs versioning tools. + +[33mcommit 23c4a34b397e325da3e54d8ebd3ebd9dd4751b4b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 24 11:59:36 2023 +0100 + + Add missing license header. + +[33mcommit efe77f4260b560243ba300472064dfcb5c347a72[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 24 09:52:33 2023 +0100 + + Add "docs" extra deps and remove "all" from "tests". + +[33mcommit a038bd9fdf199bab560e46e244a0be0423f30742[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 24 09:39:07 2023 +0100 + + Move 'gen_docs.py' to the 'scripts' folder. + +[33mcommit 4f7f292ece6cd5b1d4c8ea5e1b130d5866ccdf87[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 23 12:57:08 2023 +0100 + + Refactor developers guide into multiple files. + +[33mcommit 2a13933e27ebe4050715a158df6033be464a6b38[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 23 12:18:26 2023 +0100 + + Add docstrings style-guide to the developers guide. + +[33mcommit 44b688d709cd8a1002e2725b93c79df58eec9914[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 23 10:08:43 2023 +0100 + + Fix "Raises" and "Warns" sections' formatting. + +[33mcommit 1faf2a2433d3b5790bbd9301ab30cd35a571ce91[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 23 09:50:12 2023 +0100 + + Fix multi-references rendering. + +[33mcommit 131eb4e512053e7ef7fcd5de597fced7c0d79e23[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 22 18:13:57 2023 +0100 + + Add LaTeX rendering to the mkdocs config. + +[33mcommit de829563723257e2bc690b8774fcf1ce513712fc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 22 18:13:29 2023 +0100 + + Improve docstrings' formatting based on mkdocs rendering. + +[33mcommit fa55e88cb5c3e2a455c5c9473aa9f065c53b6d86[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 22 14:51:44 2023 +0100 + + Revise formatting of module docstrings for mkdocs parsing. + +[33mcommit c1eecc64221dfe44ff5e068cedc031121970d3c4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 22 14:48:37 2023 +0100 + + Update the API reference docs generation policy. + +[33mcommit 35b5fa4660d92181d3c361d238332d02807e1a06[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 16 11:38:19 2023 +0100 + + Add information on building the docs. + +[33mcommit 9723f8e2c1299adea076e7c93e84a4e848042708[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 15 13:21:23 2023 +0100 + + Add website- and API-Reference-generation tools. + + * Write a `gen_docs.py` script that automatically updates the + `docs/index.md` file based on the `README.md` one, and more + importantly creates the `docs/api-reference/` markdown files + by parsing through the declearn source code. + * Set up a `mkdocs.yml` file to render the documentation (both + static and dynamically-generated) into a website. + * Add `SUMMARY.md` files and enhance `index.md` ones to benefit + from the mkdocs-literate-nav plugin when building the website. + +[33mcommit b980c9330a9fb93201407ccebfb7de561bdd5863[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 15 13:20:50 2023 +0100 + + Add "docs" folder and distribute README content within it. + + * Split the increasingly-long README content into multiple files + and structure them under the new "docs" folder. + * Improve the formatting of some of the files, notably based on + their rendering by the mkdocs website-generation tool. + * Write a placeholder file for the API reference. + +[33mcommit 066407647c1f1a126e48b17121160a95efbc5a8c[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Mar 15 09:30:00 2023 +0100 + + Checking process is alive before closing in multiprocessing + +[33mcommit 7d08a3c506cecf97ed990d9b74e23d9bebaa47eb[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Mar 14 18:03:20 2023 +0100 + + Fix 'localhost' specification in tests for the CI. + +[33mcommit 9951b76ecd7febfac2f4dc7e225b7f2a702c95e0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Mar 13 17:28:07 2023 +0100 + + Re-implement unit tests for communication routines. + +[33mcommit ccaf21daced87ccb702fcad454d5343f4a75d98e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Mar 6 16:39:03 2023 +0100 + + Fix 'WebsocketServer.stop'. + +[33mcommit 957d40d7652902dc9e6c3595d06cd94dd44cd90d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Mar 6 16:38:35 2023 +0100 + + Minor docstring formatting fix. + +[33mcommit e71cabba642688c1ff82cb7090a0353a7d025c57[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Mar 3 18:23:48 2023 +0100 + + Implement generic unit tests for 'NetworkServer'. + + Note: these tests somewhat fall into the issue of being redundant + with the souce code, especially as they do not really test that + communications really work. + + The next effort will therefore be to try and rewrite client-server + routines unit tests, after which the present tests will be skimmed. + +[33mcommit 5fe5ed7ca8af9c86c726878df9337feef79f95cc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Mar 14 16:44:15 2023 +0100 + + Add a '--cpu-only' mode for unit tests. + +[33mcommit 45def4ed8707d80e50f412397749a781c258069e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Mar 14 16:43:39 2023 +0100 + + Ensure multiprocessed functional tests run on CPU. + +[33mcommit fce0bb75d2da36b87234ed55c470e5f1997ca395[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Mar 14 16:43:14 2023 +0100 + + Enable running `test_regression.py` with missing frameworks. + +[33mcommit 9ce1ef7d827323767c56d05104533e067af25e3b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Mar 13 17:48:35 2023 +0100 + + Add missing license header to 'test_regression.py'. + +[33mcommit 9229751096aeb9acbfba777ee0dc0df42766c4d6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Mar 13 15:33:04 2023 +0100 + + Fix some docstring typos and errors. + +[33mcommit e2b855e4838b1435e79113bbb9a29f7f49fa2000[m +Merge: fb86f06 9dd5fcc +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Mar 13 14:10:47 2023 +0000 + + Merge branch 'improve-multiprocessing' into 'develop' + + Improve `run_as_processes` to capture exceptions and outputs. + + See merge request magnet/declearn/declearn2!37 + +[33mcommit 9dd5fcc4712b72631129cf4577a4350b57c58f74[m +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Mar 13 14:10:47 2023 +0000 + + Improve `run_as_processes` to capture exceptions and outputs. + + * Add exceptions and outputs catching to multiprocessed routines. + * Change the output signature of `run_as_processes` to return a bool + flag indicating success, and a list of routine-wise output value or + RuntimeError (that may either result from an actual failure or from + the process having been interrupted due to another one's failure). + * Add `auto_stop` parameter to enable disabling the default automated + interruption of processes once any of them has failed. + +[33mcommit fb86f06661014bf2f90a910d2b767f1b58929835[m +Merge: 35ec6c7 afaee4f +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Mar 8 15:01:57 2023 +0000 + + Merge branch 'jax-dataset' into 'develop' + + Adding data_type to DataSpecs + + See merge request magnet/declearn/declearn2!36 + +[33mcommit afaee4f028bb1c742660d92165ce2e83bb46ea0e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 8 14:47:54 2023 +0100 + + Mitigate and document 'DataSpecs' API changes. + +[33mcommit 5864510d39aa11954cbe99feb0b894efe9c57f2f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 8 12:48:39 2023 +0100 + + Polish up data-info fields' revision. + + Data-info fields: + * Rename "single_input_shape" to "features_shape". + * Move deprecation warnings to `combine` classmethod as the data- + info fields are never instantiated. + * Make these deprecation warnings more verbose. + * On the side, remove some redundant-with-parent type hints. + + Models: + * Have "features_shape" verification happen for both regression + and classification variants of `SklearnSGDModel`. + * Remove requirement for "n_samples" in `TensorflowModel`. + +[33mcommit 0f4eced5d78b8da09c0db2db8e8cf4ced1a68f0c[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue Mar 7 12:15:10 2023 +0100 + + Applying corrections after MR review: + * Re-introducing deprecated `DataField` subclasses with a warning + * Other minor changes, to `sklearn` and `tf` models, and `DataTypeField` + +[33mcommit 83204307d99a0e72631572f835e5267a0e7c79a9[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 6 18:19:06 2023 +0100 + + Replacing `n_features` by `single_input_shape` and propagating changes in relevant files + +[33mcommit a4da6fdbb9a3251b3df4fd9406d377fcedde5ed7[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Mar 6 16:24:48 2023 +0100 + + Correcting tf code (in part) to not use data_shape, for reference purposes + +[33mcommit 38cf844fa8c0642c2304d13d3b0db12558d91edd[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 2 14:26:44 2023 +0100 + + V0 of adding data_type to DataSpecs + +[33mcommit 35ec6c7275b061dce44dbeabce05c23f1d4a509c[m +Merge: 1d6f499 c6447a5 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Thu Mar 2 14:47:04 2023 +0000 + + Merge branch 'modularize-heart-example' into 'develop' + + Modularize "heart-uci" example for its real-life deployment. + + See merge request magnet/declearn/declearn2!34 + +[33mcommit c6447a5d176a29fe6fbe61b37e56581629f1d713[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 2 14:56:19 2023 +0100 + + Minor typos + +[33mcommit 1d6f4992211a346b0549c20dda420a8449ffff91[m[33m ([m[1;33mtag: v2.1.0[m[33m)[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Mar 2 09:46:36 2023 +0100 + + Bump version to 2.1.0. + +[33mcommit be743fe9466a98d99102af35517c02df0b55526b[m +Merge: 2babbf1 300a1a8 +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Mar 2 08:36:07 2023 +0000 + + Merge branch 'toy-regression' into 'develop' + + Functional test of regression + + See merge request magnet/declearn/declearn2!28 + +[33mcommit 300a1a81f881750bf50937a79e298c6186e0b923[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Feb 21 10:51:43 2023 +0100 + + Document 'penalty="none"' option for 'SklearnSGDModel'. + +[33mcommit 478d8c4e5bb0e7008daf57183d152ce70f0e6d2b[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Feb 13 10:32:13 2023 +0100 + + Add a toy regression functional test, checking convergence on simple data + +[33mcommit 2babbf18b13e894b87ce6217966c338811b104d1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 1 16:15:26 2023 +0100 + + Fix 'TensorflowModel.apply_updates'. + +[33mcommit 62683d6336dc7f9af767e30addb85e775fd73800[m +Merge: fec1fa0 0585e4c +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Mar 1 14:08:39 2023 +0000 + + Merge branch 'branching' into 'develop' + + Revise git branching strategy. + + See merge request magnet/declearn/declearn2!35 + +[33mcommit 0585e4ca3c63468cb4a03b457a23a0c7dbd6f9c0[m +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Mar 1 14:08:39 2023 +0000 + + Revise git branching strategy. + + * Keep "develop" as principal (~main) branch where to push new features, + hence acting as a nightly stable version. + * Drop "main" branch from the strategy as its name was misleading. + * Introduce "rX.Y" release branches, that need protection and CI/CD. + +[33mcommit fec1fa06192ce64d173ea3394bb0800451cb05db[m +Merge: 89f940c ec4f3e1 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Mar 1 13:36:06 2023 +0000 + + Merge branch 'indexed-slices' into 'develop' + + Enhance support for 'tf.IndexedSlices' in 'TensorflowVector'. + + Closes #17 + + See merge request magnet/declearn/declearn2!33 + +[33mcommit ec4f3e17b80d6df6945e8ea3990fda11b468b6b0[m +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Mar 1 13:36:06 2023 +0000 + + Enhance support for 'tf.IndexedSlices' in 'TensorflowVector'. + + * Implement a public util to wrap tensorflow operations in order to preserve + `tf.IndexedSlices` structures and run appropriate computations with them. + * Deploy the former wrapper to cover all usual operations in the backend of + `TensorflowVector`. + * Refactor the use of the device-placement-handling wrapper in the backend of + `TensorflowVector` to reduce runtime overheads and factor it with the new + indexed-slices-handling wrapper. + +[33mcommit 89f940cedd00b353155de9d31fa57d8f76eaf85f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Mar 1 14:17:28 2023 +0100 + + Add a seed to 'test_rsquared.py' to avoid random failures due to numerical precision. + +[33mcommit 13459d5981739e70b8cb6d0a578fac6f6988d3d8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 4 16:25:34 2023 +0100 + + Deploy `make_importable` to the Heart-UCI example scripts. + +[33mcommit b7f2f1f7e9637a82f4da27a6faa4d05b09aafd5e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 4 16:24:56 2023 +0100 + + Implement the `make_importable` test-util context manager. + +[33mcommit 7a37aa52cb5b78d34800551b29cc5d8381487885[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Nov 25 16:28:07 2022 +0100 + + Refactor argparse code from the heart-uci example. + +[33mcommit d73f2331de5fd590aeca9c40c4db18381aa6f820[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 24 17:16:19 2022 +0100 + + Modularize "heart-uci" example for its real-life deployment. + + * Add optional parameters to the Python functions and the argparser + so as to enable running the UCI-Heart-Dataset examples over an + actual network. + * Make the documentation more verbose about these options, and the + difference between localhost-based simulations and real-network + use. + * Rationale: having a minimal example to run is a valuable feature + when deploying declearn to a new machines~network setting, so as + to quickly assess (and/or debug) the framework's usability. + +[33mcommit 71debe68a72e4a067e8d09d4080c04e96ff7c6f6[m +Merge: 10d8a40 622d241 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Tue Feb 28 15:48:00 2023 +0000 + + Merge branch 'scaffold-update' into 'develop' + + Change 'ScaffoldClient.collect_aux_var' behavior on unused module. + + See merge request magnet/declearn/declearn2!31 + +[33mcommit 10d8a40db4fa67967d388fcce5f7a1d249c073a1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 27 17:11:41 2023 +0100 + + Optimize 'TensorflowModel.apply_updates'. + +[33mcommit 915bd4280766009b0b383c321674e77292529378[m +Merge: 3c82f5c 76ed2a4 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Thu Feb 23 17:13:14 2023 +0000 + + Merge branch 'hacky-optim' into 'develop' + + Implement framework-specific OptiModule subclasses. + + See merge request magnet/declearn/declearn2!15 + +[33mcommit 76ed2a406f4aeefc46fc2bdee5fb1303c33e0b93[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 23 16:43:27 2023 +0100 + + Improve 'declearn.model' docstring and add some missing '__all__'. + +[33mcommit 3d63f26d89446b3008f7038cef0f06738c2625b8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 23 16:39:01 2023 +0100 + + Implement 'TensorflowOptiModule' optimizer plug-in. + +[33mcommit 16511fc8bddbf99ba62c7423c85e532157c83c72[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 23 16:35:54 2023 +0100 + + Implement 'TorchOptiModule' optimizer plug-in. + +[33mcommit 206302d06e855426311abee14f2454b961141038[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 23 16:34:56 2023 +0100 + + Refactor 'TestOptiModule' to enable subclassing. + +[33mcommit 861447a25dd0edcab55208d278d70a62d4ff0c69[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 23 16:27:19 2023 +0100 + + Fix optimizer plug-ins' framework-equivalence test. + +[33mcommit 2a61cd47923c381e4c85bcc42222cfd866e526bf[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 23 15:25:17 2023 +0100 + + Fix the (un)packing of scalar tensors in 'Vector' subclasses. + +[33mcommit a6fc24859a565ec5c3ab39b4fcbb64d7b559193c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 23 16:19:09 2023 +0100 + + Use new assertion utils in existing unit tests. + +[33mcommit 0420531a9e50b28d1d6214e4da53ef60ada29cd7[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 23 15:24:09 2023 +0100 + + Implement assertion functions that complexify 'a == b'. + + The implemented functions are a convenience to reduce boilerplate + code in unit tests, and improve the existing JSON-serializability + check. + They notably support comparing numpy arrays (optionally tolerating + small absolute discrepancies), and ignoring tuple-list type change + that typically result from JSON-serialization. + +[33mcommit 1fbecfacfed035d64d6fb316a9c8a62fc9553094[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 23 15:23:49 2023 +0100 + + Add a generic functional test for `OptiModule.set_state`. + + * Add `test_set_state_results` to verify that resetting a modules' state + enables running the same computation twice. This should enable detecting + cases when information is missing from the returned state dict. + + * Note that at the moment noise-addition modules are ignored. We could look + into a way to access and restore RNG states (when CSPRNG is not used). + +[33mcommit 74d6808f29b56987fc93149f59bee33c38ff27d7[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 12 17:48:42 2023 +0100 + + Adjust TensorflowVector square and square root computations. + + For some reason, `tf.square(x)` and `tf.pow(x, 2)` can result in + distinct values for small-enough values of x. The same is true of + `tf.sqrt(x)` and `tf.pow(x, 0.5)`. + + This commit ensures the `tf.sqrt` and `tf.square` functions are + used in these two edge cases for the `vector ** p` syntax. This + choice is motivated by the fact that these functions are used + in most official tensorflow / keras code, and seem to be closer + to their torch counterparts (which are equivalent to `vec ** p`) + than `tf.pow` - based on a few local tests. + +[33mcommit 3c82f5ce719668a64d0af4ccce6fd7b9c6c0187a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Feb 22 18:35:53 2023 +0100 + + Make network communication dependencies optional. + + This removal was supposed to be part of a past commit + (cd1d0cb137b74c6baec397c703f4d1c8830427c4) but had in + fact not been properly finished. + + With this commit, install declearn no longer results + in the automatic installation of gRPC and websockets, + which are properly relegated to being optional, user- + triggered-installation, dependencies. + +[33mcommit dba20501715e4498b9f58dbb0f02d67d4407586e[m +Merge: ae0c079 28865db +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Feb 22 14:53:56 2023 +0000 + + Merge branch 'handle-frozen-weights' into 'develop' + + Enable skipping frozen weights when using `Model.get_weights` and `Model.set_weights` + + Closes #15 + + See merge request magnet/declearn/declearn2!29 + +[33mcommit 28865db8e5b7a6209e8951ea5982a3301d8ca772[m +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Feb 22 14:53:55 2023 +0000 + + Add 'trainable' argument to 'Model.get_weights' and 'Model.set_weights'. + + This commit squashes the following modifications: + + * Add `trainable` argument to `Model.get_weights`: + - Add `trainable: bool = False` argument to `Model.get_weights`, + enabling accessing only trainable weights of a neural network + (or any model that supports using frozen weights). + - Use the former to fix support for models with frozen weights by + the `Optimizer`'s weight-decay and loss-regularization plug-ins. + - Add unit tests for `get_weights(trainable=True)` to the Torch + and Tensorflow Model tests. + + * Add `trainable` argument to `Model.set_weights`: + - Add `trainable: bool = False` argument to `Model.set_weights`, enabling + to update model weights with the exclusion of frozen ones. + - Improve the documentation and exception-raising of `Model.set_weights`. + Notably refactor some code into a private util used by tensorflow and + torch models' backend code. + - Add some related tests to the tensorflow and torch Model test suites. + Note that there is redundancy that could be tackled later, as part of + an effort to improve the `Model` test suite template. + + * Restrict round-wise weights sharing to trainable weights: + - Update `FederatedClient`, `FederatedServer` and `TrainingManager` + so that only the trainable model weights' values and updates are + communicated during training and evaluation rounds. + - This reduces communication costs when some weights are frozen. + - This also avoids including non-trainable weights in server-side + optimization computations (which should have resulted in zero at + any rate, properly leaving these weights unaltered -- but may not + have done so in the rare case when weight decay or regularization + was used on the server side). + + * Add 'MLP-tune' test case for 'TorchModel' and 'TensorflowModel': + - This case is the same as the base MLP, but with a frozen first layer. + - This case would fail if the `get_weights(trainable=False)` was badly + implemented (or used), since the gradients-and-weights comparison in + the `Model.apply_updates` test would raise an error. + + * Improve unit test for 'Optimizer.compute_updates_from_gradients': + - Ensure the pipelined plug-ins were called in proper order and + with proper input values. In other words, test the formula. + - Ensure the model weights are only accessed once, and with the + proper restriction to trainable weights. + +[33mcommit ae0c0796531b468b101a82bcfa10371316d51019[m +Merge: 73f4d1e f370dad +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Feb 22 14:27:37 2023 +0000 + + Merge branch 'gpu-support' into 'develop' + + Improve GPU support for TensorFlow and Torch + + Closes #11 + + See merge request magnet/declearn/declearn2!24 + +[33mcommit f370dadcf03d709574170ea1c2eef9286398b07a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Feb 22 14:23:14 2023 +0100 + + Fix 'Vector' backend to enable 'numpy + tensor' operations. + +[33mcommit 5c1dc54af469202de6917846aa3e9398632a2f6f[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Tue Feb 21 17:13:29 2023 +0100 + + Improve the documentation of GPU support and of 'Vector' subclasses. + + Co-authored-by: Paul Andrey <paul.andrey@inria.fr> + +[33mcommit cce29e1ac2facef777d457f1e9339f1adea520b7[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 16 13:17:13 2023 +0100 + + Document GPU support in the README. + +[33mcommit 996b22a636da5de015c645bce2b6c1038727beb3[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 16 12:34:44 2023 +0100 + + Enhance unit tests to take device-placement policy into account. + + Core changes to the global test suite: + * Add some device-placement verifications to the generic Model test + suite. This should be refactored into more unitary tests as part + of a distinct effort to revise and improve this test suite. + * For TensorFlow and Torch, parametrize the whole test suite to run + either on CPU and GPU, and run it once per available device type. + * Ensure Vector and OptiModule unit tests run on CPU. + + Changes to some 'Model' tests to run on GPU: + * `test_compute_batch_gradients_np`: allow for small numerical + discrepancies that may result from running the test on GPU. + * `test_apply_updates`: correct the test, that had not been + updated since `Model.get_weights` stopped to systematically + use `NumpyVector` as return type. + + Changes to 'TorchModel' tests to run on GPU: + * Override `test_serialization` due to torch-serialization relying + on pickle. Replace pickles' comparison with a more shallow (but + less susceptible to fail for unknown reasons) test that ensures + a reloaded model shares the same structure of modules. + +[33mcommit 098c26e6b6f2a8fc1c26c0658be8e84c5b5f50af[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 16 11:04:29 2023 +0100 + + Abstract GPU-related methods into the Model API. + +[33mcommit c8a3dbb64e0fa75db51e4a50b6e53edbdbfb0b42[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 10 17:09:36 2023 +0100 + + Add GPU support for TensorFlow. + + * Add `declearn.model.tensorflow.utils` submodule. Move existing `build_keras_loss` + function into it, and implement the following new utils: + - move_layer_to_device: + Create a copy of an input keras layer placed on a given device. + - preserve_tensor_device: + Wrap a tensor-processing function to have it run on its inputs' device. + - select_device: + Select a backing device to use based on inputs and availability. + * Add device-management to `TensorflowModel`: + - Copy the input model to (or deserialize reloaded one onto) a device selected + based on the global device-placement policy. + - Add `with tf.context(device)` instructions in public methods that require it. + - Add the `TorchModel.update_device_policy` method to enable changing the backing + device for computations (following what was done for `TorchModel`). + * Add device-management to `TensorflowVector`: + - Ensure all operations applied to the wrapped tensors occur on the device backing + these tensors (which may vary from tensor to tensor). + - Overall, ensure the specification as to tensors' device-placement are the same + as those of the current `TorchVector`, and document them. + +[33mcommit c768efed918c70ad1fd8980ecdb78dbf4c7e420d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Feb 9 14:19:45 2023 +0100 + + Add GPU support for torch. + + * Add `declearn.model.torch.utils` submodule, that currently provides with: + - AutoDeviceModule: + Wrapper for a `torch.nn.Module` automating device-management. + - select_device: + Select a backing device to use based on inputs and availability. + * Add device-management to `TorchModel`: + - Wrap the model and loss function modules using `AutoDeviceModule`. + - Add `tensor.to(device)` instructions in places that require it. + - Consult the global `DevicePolicy` as part of `TorchModel.__init__` + so as to automatically place the wrapped model and computations. + - Add the `TorchModel.update_device_policy` method to enable changing + the device policy to an input one or to the global one (that may have + changed since the model was first instantiated). + * Add device-management to `TorchVector`: + - Ensure `TorchVector.__eq__` transcends device-placement. + - Ensure combining with a `NumpyVector` works regardless of device-placement. + - Implement a device-placement rules when combining two `TorchVector`: move + tensors from the right-hand vector to the device backing the left-hand one. + - Document the former rule, as well as the current limitation that device- + placement information is lost through serialization, resulting in reloaded + vectors being placed entirely on CPU. + - Ensure unpacking a `TorchVector` from a serialized dump results in placing + it on a device that abides by the global `DevicePolicy`. + + Note on the consequence to support GPU-backed training and evaluation: + * A `TorchModel` placed on GPU will handle moving its input data there, so that + output gradients are backed on GPU (but output numpy predictions are moved to + CPU). + * The processing of gradients into updates will be kept on GPU as long as there + is no `output = operation(cpu_vector, gpu_gradients)` operation in that flow. + The latter could for example happen as part of an optimizer plug-in that uses + deserialized state (or auxiliary variable) vectors, in the rare case when the + global device policy is not in line with that of the model. + * Input updates to a `TorchModel` may be placed on any device, and will preserve + its initial placement (whether via `apply_updates` or `set_weights`). + +[33mcommit dd029d78e4bbb763c5c6710ee1b545365ba08904[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 10 12:12:55 2023 +0100 + + Add device-placement policy utils. + +[33mcommit 73f4d1eb361f56da01b445bf10faee5322f11583[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 20 14:34:19 2023 +0100 + + Add SAN capabilities to 'generate_ssl_certificates'. + + * Add the `alt_ips` and `alt_dns` optional parameters to the + `declearn.test_utils.generate_ssl_certificates` function, + that enable configuring the created server certificate to + cover alternative IP addresses or DNS names, using Subject + Alternative Name (SAN) extensions. + * Refactor the entire function to ease the readability and + maintainance of the backend code. + * Improve the function's documentation. + +[33mcommit de0bbbc5cbf095b029ea570a07c817069114c2d1[m +Merge: 30f1230 cdd004f +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 20 09:49:21 2023 +0100 + + Merge branch 'main' into develop + +[33mcommit 30f1230f2fee1ff364ddb9bffb8708039aeb5418[m +Merge: 430be0f 9a9ffe7 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Fri Feb 17 12:08:30 2023 +0000 + + Merge branch 'r2' into 'develop' + + Implement the 'RSquared' metric + + See merge request magnet/declearn/declearn2!30 + +[33mcommit 9a9ffe7d769a4f17ba95231cb7d78c0f9a45d3e1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 17 12:15:10 2023 +0100 + + Deprecate 'Metrics.normalize_weights'. + +[33mcommit 647a59b07e317d3d9c900749a5c0cc26710106a7[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 17 12:01:11 2023 +0100 + + Fix formatting of Metric test files. + +[33mcommit 062f55840faae0f1290d57642a9c03df2885ad0b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 17 11:57:12 2023 +0100 + + Finalize RSquared Metric implementation and unit tests. + + * Rename R2 to RSquared out of compliance with PEP-8. + * Improve states' naming and documentation to improve readability. + * Rename backend files out of clarity. + * Add RSquared to the `declearn.metrics` module docstring. + * Refactor copy/pasted code from MeanMetric to RSquared. + * Improve unit tests: + - use regression-like data and actual sample weights + - use scikit-learn to compute the reference score (test our maths) + - remove redundant or useless code to set up the test suite + +[33mcommit ab1320f1f20073a1475fa6422e500116826f23ee[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Feb 13 15:17:07 2023 +0100 + + First implementation of R2 Metric. + + * This squashed commit comprises the result from an iterative effort + to implement the R-squared evaluation metric for regression tasks. + * It comprises a working implementation of the metric, as well as + associated unit tests. + * It does not pass linter tests. + +[33mcommit 622d24169613f9af9a98f9e3b15412e0e0b95368[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 17 12:24:04 2023 +0100 + + Change 'ScaffoldClient.collect_aux_var' behavior on unused module. + + * Until now, calling the `collect_aux_var` method of a `ScaffoldClient` + module that had not processed any gradients raised a RuntimeError. + * This commit changes that behavior for something less stringent: + warn a RuntimeWarning that such a call is unexpected, but return + a conventional, zero-valued scalar state. + * Conversely, upon receiving such states, `ScaffoldServer` ignores the + client (i.e. it is not part of the global state's update calculation). + * The rationale behind this change is that it may happen that a client + does not perform any optimization step, e.g. due to their DP budget + having been saturated. In that case, we do not want the FL process + to crash, but rather the client to be ignored as part of the update + process. + +[33mcommit cdd004f7e053f4887feb8dda67e1a731c00fb835[m +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Tue Feb 14 10:17:24 2023 +0000 + + Fix the main docstring of 'BinaryRocAUC'. + +[33mcommit 430be0f9cdde30b065523eeb5b7aea6933b45ce1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 13 15:34:50 2023 +0100 + + Add 'develop' branch to our git branching strategy. + +[33mcommit efbd18d0dc86530f22455d0fab25edad96af3fe1[m[33m ([m[1;33mtag: v2.0.1[m[33m)[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 13 10:30:41 2023 +0100 + + Update version to 2.0.1 + +[33mcommit 18238f188200a52aebd570f1b9c73518933082e8[m +Merge: e8afbe1 1e388de +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Feb 13 09:15:10 2023 +0000 + + Merge branch 'hotfix-warn-frozen-weights' into 'main' + + Warn about frozen weights use in `TensorflowModel` and `TorchModel`. + + See merge request magnet/declearn/declearn2!27 + +[33mcommit 1e388de1aeae7a0c730858e946b911f9d36cffbf[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 10 19:01:14 2023 +0100 + + Warn about limited support for frozen neural network weights. + +[33mcommit e8afbe1b6d8471d8efb33ad94da89318579a95bb[m +Merge: 7155419 261ab37 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Fri Feb 10 17:51:20 2023 +0000 + + Merge branch 'hotfix-tf-gradient-names' into 'main' + + Fix `TensorflowModel` gradients' labeling. + + Closes #14 + + See merge request magnet/declearn/declearn2!26 + +[33mcommit 261ab37917e4f164e3f1d1f3ca996ece3f953c71[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 10 18:17:58 2023 +0100 + + Add gradients-labeling check to the Model test suite. + +[33mcommit c55a3265bfcc4bd5a86a965d18bd342e99ea6b98[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 10 18:09:44 2023 +0100 + + Fix the labeling of output gradients in `TensorflowModel`. + +[33mcommit 715541977806752e6b14570fbc54000acf524fda[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Feb 8 10:18:14 2023 +0100 + + Add license header to 'test_vector.py'. + +[33mcommit 108463839e8abac16427991a7d59a35a93edfbe9[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Feb 7 12:07:52 2023 +0100 + + Garbage-collect unused 'type: ignore' comments. + +[33mcommit cd8e394fe8b1dfa4c6965bae86e7a2a268d636d0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Feb 7 11:40:59 2023 +0100 + + Update mypy to version 1.0 and deploy Self type-hint. + +[33mcommit 203dce04c946fc8c082b7478995a8fd92ed1f3d9[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Feb 7 11:09:22 2023 +0100 + + Correct some docstrings to comply with PEP 257. + +[33mcommit 111339961f23183112d3bbc95a37d1794ddef808[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Feb 7 10:11:43 2023 +0100 + + Update installation instructions. + +[33mcommit 22f6b996cec4cab51fee1a0783d2965530cdafdb[m[33m ([m[1;33mtag: v2.0.0[m[33m)[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 6 17:26:05 2023 +0100 + + Fix pypi classifiers. + +[33mcommit 0237f15137a6cf8ab0b5721c73ea1cf1ed14b227[m +Merge: ddc0402 8b08248 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Feb 6 16:06:13 2023 +0000 + + Merge branch 'release-todo' into 'main' + + Release version 2.0 + + See merge request magnet/declearn/declearn2!23 + +[33mcommit 8b0824831546d2e1cf94f9d7051b838b1a8526b2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 6 16:46:49 2023 +0100 + + Update pyproject.toml metadata. + +[33mcommit 90a6f0ee7aa64488d25f0959e5d2491f677c68f8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 6 16:45:26 2023 +0100 + + Add a missing 'type: ignore' comment. + +[33mcommit 57419237345991b3d5a68cab6601db192f315dc8[m +Merge: 92e82db 9ee99bc +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Feb 6 15:40:43 2023 +0000 + + Merge branch 'test-vector' into 'release-todo' + + Adding unit tests for vectors + + See merge request magnet/declearn/declearn2!22 + +[33mcommit 9ee99bc8c4db1292f5d80d72040df6fc07dd26fe[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Feb 6 15:40:43 2023 +0000 + + Adding unit tests for vectors + +[33mcommit 92e82dbff6c02542ce39281bb8f8322f3d34098c[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Feb 6 15:23:40 2023 +0100 + + Reviewing doc + +[33mcommit 0077dde9db8aa515c3631c2d19743eeb13b3541d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 6 15:07:51 2023 +0100 + + Add AUTHORS file. + +[33mcommit d91a42565d18ea2467f916331bb194a0a7bd584e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 6 15:01:37 2023 +0100 + + Update package version and classifiers. + +[33mcommit b72856ac795927f95e57784f7cab4d837e3c99a6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 6 14:58:17 2023 +0100 + + Enhance some `Vector` docstrings. + +[33mcommit 95c4191e3f8e43164e94c020dbd76682ea36c4aa[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 6 12:05:32 2023 +0100 + + Add Apache-2.0 license file, headers and information. + +[33mcommit 6360878f27a504818ca1a5429ce5ec4a42a1fb05[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 6 11:12:10 2023 +0100 + + Modularize tests' execution based on frameworks' availability. + +[33mcommit d846802c5a809b6b0bf2cd69c6f085ae8999e403[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 6 10:00:11 2023 +0100 + + Drop support for Python 3.7. + + Support for Python 3.7 had been envisioned and partially documented, + but had not been tested for a while. As it turns out, some of the + `typing` functionalities the generic TOML-parsing system relies upon + were only introduced in Python 3.8. Since rewriting this code would + be tedious without these utils, and since official support for py37 + ends in less than six months, it was decided not to support it for + declearn. + +[33mcommit 5c8c649917aad05eb4dd3b4cf80d53d8a26c5d41[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Feb 6 09:51:42 2023 +0100 + + Add some missing 'type: ignore' comments. + +[33mcommit b3b75a7aa970c15a383ccdf306676e23f492db16[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 3 17:38:39 2023 +0100 + + Update black to version 23. + +[33mcommit b752723ceadf984335d7fdd8506af0155defc691[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Feb 3 15:14:08 2023 +0100 + + Fix some errors in `NumpyVector.sum` and `TorchVector.maximum`. + +[33mcommit a8fa357c19248119cb91f62c475a59f738f4c864[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 3 15:12:35 2023 +0100 + + Collect some unused statements. + +[33mcommit 06f0092b4eeebcc0d4a7f8f9f49aeba22d8c7156[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Feb 3 15:02:22 2023 +0100 + + Remove deprecated `Model.compute_loss` method. + +[33mcommit 464e1c416c91a3aadea2ab48ac365ac6d83f9c93[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jan 16 17:41:57 2023 +0100 + + Fix some docstring and code typos. + + * Fix FLRunConfig handling of `register=<int>` inputs. + * Fix docstring typo in `OptiModule`. + * Fix typos in server-side code sample in README file. + +[33mcommit 7bd717fd3040f021b5963e9a432f3839f65a857a[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Feb 2 16:12:15 2023 +0100 + + Remove superflous `return NotImplemented` and `return None` in abstract methods. + + Note: kept the `raise NotImplementedError` statements. + +[33mcommit 2db25bbe33fc9249d70b647da025be96f282f7f4[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Feb 2 15:54:44 2023 +0100 + + Rename some unexposed functions to make them private. + + Reviewed all 58 `__all__`, found no error, renamed some methods + as private since they were not used outside of the file. + +[33mcommit 87cc9d7a9972b5514ea5bffc4495ff6f785999d7[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Feb 2 15:34:36 2023 +0100 + + Add `super().__init_subclass__()` calls. + + This commit implements minor changes to stick to the python doc + (https://docs.python.org/3/reference/datamodel.html?highlight=__init_subclass__#object.__init_subclass__). + + Co-authored-by: Paul Andrey <paul.andrey@inria.fr> + +[33mcommit aee79fc11ae62af7dc936d203af5bc7d9015b015[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Thu Feb 2 13:49:12 2023 +0100 + + Add NoReturn type-hints + + NoReturn type is only meant for functions that never return normally, so + quite a rare occurence (https://peps.python.org/pep-0484/#the-noreturn-type). + + Manually scanned the 250 raise statements. Only changed two `_raise_...` methods + in `main/utils/data_info.py`. + Other places were it could be relevant: + * `message_pb2_grpc.py` > big ' DO NOT EDIT" in there so did not touch + * `api/_vector.py` > abstract methods raising a `NotImplementedError`, + the current convention seems to be using the expected implementation + type, so I did not change + +[33mcommit 21f9b0d96efcfa2f0286bc96db56aeb61bf93d80[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Wed Feb 1 17:29:25 2023 +0100 + + Add ClassVar type-hints. + + Details : + * In `/optimizer`, `/metrics`, and `/aggregator` :`name` and `aux_name` + * In `/communications` : `protocol` + * In `/dataset` : `_type_key` + * In `/data_info` : `field`, `type`, and `doc` + + Excluding all classes decorated with `@dataclasses.dataclass`, + see https://stackoverflow.com/a/52099457 + +[33mcommit ddc04028c8424d4e45ebb2950b0bd521c3ea6bac[m +Merge: 5f23f93 4cf8b54 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Thu Feb 2 14:26:19 2023 +0000 + + Merge branch 'revise-checkpointer' into 'main' + + Revise `Checkpointer`. + + See merge request magnet/declearn/declearn2!21 + +[33mcommit 4cf8b5496b9437c575b31eee5b85a04995a3f590[m +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Thu Feb 2 14:26:18 2023 +0000 + + Revise `Checkpointer`. + + * Rewrite the `declearn.main.utils.Checkpointer` util. + - Implement Model, Optimizer and Metric-output results saving and loading methods. + - Add a `max_history` parameter to garbage-collect past files. + - Revise the labeling of output files to ease collection and re-use. + * Revise the use of `Checkpointer` in `FederatedClient` and `FederatedServer`. + - Have both entities checkpoint at the end of evaluation rounds. + - For now, clients save the global model (not local one), local optimizer and metrics. + - For now, server saves the global model (not local ones), server optimizer and all + metrics: aggregated ones and client-wise ones (in separate files). + - Move lowest-loss-yielding weights tracking and restoring to the private backend + of `FederatedServer`, and ensure they are still saved and sent to clients at the + end of the federated learning process. + * Add unit tests for the `Checkpointer` class. + +[33mcommit 5f23f9351af634c7a0a5493afc7081bb0f02ad8d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Feb 1 14:50:57 2023 +0100 + + Minor pylint-based syntax fix. + +[33mcommit b302cd2f4403490f00c72a30bcb57b16f1d2b664[m +Merge: bd45c0a 8b40601 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Feb 1 13:40:36 2023 +0000 + + Merge branch 'metrics' into 'main' + + Implement Metric API. + + See merge request magnet/declearn/declearn2!20 + +[33mcommit bd45c0ad95a4bf5a9b937ab35a5d3f01d20ca2df[m +Merge: 7c0dca2 d933ac7 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Feb 1 13:36:43 2023 +0000 + + Merge branch 'stateful-optimizer' into 'main' + + Revise `Optimizer` and add state-access methods. + + See merge request magnet/declearn/declearn2!19 + +[33mcommit 7c0dca2daa4f5fc1fc9390a39379e753388a0649[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 31 12:33:10 2023 +0100 + + Fix side effect in `SklearnSGDModel.set_weights`. + +[33mcommit 8b406014de19394bb59b4e2fcecba153b92bfc97[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Jan 27 16:30:37 2023 +0100 + + Implement `Metric.normalize_weights` util. + +[33mcommit d933ac706883cce4d1e9ea7ab423c4d8f0fee5fe[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 12:13:40 2023 +0100 + + Patch `test_train_manager.py` to avoid failure on slower machines. + +[33mcommit 8a528ae09953fc7f13bd41ed3a0a22be63a04a9e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 12:13:40 2023 +0100 + + Patch `test_train_manager.py` to avoid failure on slower machines. + +[33mcommit 2bca6bdbe71d8c123eb0ab940075479a94e76b28[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 12:40:36 2023 +0100 + + Update the RMSProp-implementation example. + +[33mcommit 35cde15994c358d6535c0b20620bf554cbbfc8b3[m +Merge: c9be886 1bd8a5f +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 12:02:14 2023 +0100 + + Merge branch 'main' into metrics + +[33mcommit c9be88624636360c3644cb84f8a03d5e9587c827[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 11:48:08 2023 +0100 + + Add metrics computation to the Heart UCI example. + +[33mcommit 8ac4aec99b95a9ec3989e0c1251892304ecbb89d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 11:43:33 2023 +0100 + + Update README to document the Metric API. + +[33mcommit 358872bfea68a23ec10e2b3258f08200b3e2b08c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 11:21:09 2023 +0100 + + Add `share_metrics` bool parameter to `FederatedClient`. + + * Enable clients to prevent sharing evaluation metrics (and their + intermediate states for federative aggregation) with the server. + * Enable server to handle clients' replies when metrics are lacking. + +[33mcommit 90ad4c574e6abfb39201c49fabc986e0e950306e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 11:21:05 2023 +0100 + + Update unit tests for `TrainingManager`. + +[33mcommit 41cf12874986fd2979ef94a9e72da72d5a34a318[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 10:51:29 2023 +0100 + + Minor docstring and code-order revisions to `FederatedServer`. + +[33mcommit 892a68b26bdbb0d073783e2e607847089de4b765[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 10:46:10 2023 +0100 + + Enable server-driven computation of federative evaluation metrics. + + * This commit adds an optional `metrics` parameter to `FederatedServer` + that enables specifying evaluation metrics that are to be computed by + each and every client during evaluation rounds. + * The resulting metric states are then shared by clients with the + server, that procedes to their exact aggregation thanks to the + `Metric.agg_states` method. + * Note that this commit does not (yet) implement: + - proper saving of the computed metrics, which for now are merely + and clumsily logged to the console + - privacy safeguards enabling clients to control which metrics are + computed and shared with the server (as intermediate metric states + might in some cases leak information, e.g. as to the distribution + of target labels or values) + +[33mcommit e2018f8e5dd8503ba4338c3578695e7dbc198b27[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 10:43:31 2023 +0100 + + Refactor some code into `MetricSet.from_specs`. + +[33mcommit 5df95e7592b08aa628d5b4462895092b794e7fa0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 27 09:59:50 2023 +0100 + + Patch `test_optimizer.py` to silence pylint. + +[33mcommit 7e059884d9fc1b3c97be86c405aad3103e3a3229[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 26 17:55:48 2023 +0100 + + Clean up `OptiModule` code by removing unused statements. + +[33mcommit 9c3267f5e692dbc2cade02a901cbafb93200b898[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 26 17:48:22 2023 +0100 + + Remove out-of-use OptiModule (de)serialization methods. + +[33mcommit 13f6304dd799e0c6ae7ccb90c7c93a11718576db[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 26 17:25:24 2023 +0100 + + Add `Optimizer.start_round` method to trigger `Regularizer.on_round_start`. + +[33mcommit 47ae6cc4fdf488edc0c0ef6fac609004badf7616[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 26 17:09:15 2023 +0100 + + Implement unit tests for `Optimizer`. + +[33mcommit ab7e2559a3b26842e6b12611d6c1b9d78c3b42ec[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 26 14:47:34 2023 +0100 + + Add `assert_json_serializable_dict` to `declearn.test_utils`. + +[33mcommit ed342b82f1130651ee7a339cd47020f0712136cb[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 26 14:41:40 2023 +0100 + + Deploy `access_types_mapping` to unit test code. + +[33mcommit 162f80525f6f3221af36a546cc1f6d8c31227cbe[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 26 10:39:24 2023 +0100 + + Revise the format of `Optimizer`'s config and states. + + * The udpate to the config format enables including multiple instances + of a plug-in in the Optimizer pipeline (which is unlikely to happen, + but was a limitation neither documented nor motivated). + * It also removes some redundant code in `Optimizer.from_config`. + * The update to the states format covers the same concern, but goes + along an extension of the verifications and error-handling of the + `set_state` method. + +[33mcommit a6d7d03d05f8dd163ab2bb3b8308836b2161e3c5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 25 18:18:14 2023 +0100 + + Fix YogiModule algorithm. + +[33mcommit 4d6c65942e2027e63235ad02c945300b52c2318f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 25 18:22:56 2023 +0100 + + Improve some `OptiModule` docstrings. + + * Improve the docstrings of `get_config`, `from_config` and `run`. + * Remove overriding docstring from subclasses, to ease code readability + and maintenance. + +[33mcommit 44f834343546e032e93ad0a02633f94ccb5252c2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 25 18:28:13 2023 +0100 + + Add unit tests for `OptiModule.(get|set)_state` methods. + +[33mcommit 993d8eef8bc8a54d4865b1ad2dc826e9928d4064[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Jan 16 18:11:20 2023 +0100 + + Add `Optimizer.get_state` and `set_state` methods to the API. + + * Add `get_state` and `set_state` to the `OptiModule` API. + * Add the same methods to `Optimizer`, that collects and propagates + information from and to its plug-in modules. + * These methods, which are unused for now, enable saving the state + of the optimizer between rounds, which can be useful to repeat + or resume training from a given point when running experiments. + + Co-authored-by: Paul Andrey <paul.andrey@inria.fr> + + Authorship: + * Nathan Bigaud wrote the first version of this commit. + * Paul Andrey cleaned it up and applied fixes for missing variables. + +[33mcommit 2c424b35fcc5e1430db5e42f3669ac375ea27497[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 25 15:53:43 2023 +0100 + + Handle division-by-zero errors in metrics and add associated tests. + +[33mcommit 522bfd3344201a58da18605d4cdc86f076cffc3b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 25 11:36:54 2023 +0100 + + Add F1-Score to classification metrics. + +[33mcommit 1bd8a5ff9cbf8b229214025a5bd88600da200fc4[m +Merge: feac22d f880486 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Jan 25 08:06:15 2023 +0000 + + Merge branch 'revise-network-api' into 'main' + + Revise some front-end aspects of network endpoints + + See merge request magnet/declearn/declearn2!18 + +[33mcommit 374324182408352130194de977cb15c7484d82dc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 24 15:34:57 2023 +0100 + + Patch Metric tests to comply with linters. + +[33mcommit 9f68f9cda43b289d99eb5dcecb2968c5408d6563[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 24 09:52:52 2023 +0100 + + Minimally deploy the Metrics API to `TrainingManager`. + + * This commit adds a `metrics` attribute (and instantiation parameter) + to `TrainingManager`, that enables defining evaluation metrics, in + addition to the model's loss. + * The backend of `TrainingManager.evaluation_round` is also updated to + make use of this `MetricSet` and of the newly-introduced inference + methods of `Model`. + * At the moment, the `EvaluationReply` message does not support adding + computed metrics beyond the loss. + * Similarly, the "main" centralized FL process does not yet provide + with the possibility to specify metrics to be computed. + * Hence, this commit: + - adds the potentiality and some core API modifications to compute + evaluation metrics modularly + - revises the way the model's loss is computed, without altering its + logic nor the way the results are handled in the FL process + +[33mcommit bef9ef8be0cb43d72a7dc13e5806adaa63785cac[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 24 12:19:51 2023 +0100 + + Update Model API for better articulation with the Metric API. + + * Add `Model.compute_batch_predictions`, interfacing the wrapped model + in inference mode. + - This method outputs numpy arrays so as to enable passing its output + to a `Metric` or `MetricSet` instance. + - It may also be overridden by end-users to alter the flow between + inputs and outputs, e.g. for self-supervised learning models. + * Add `Model.loss_function` to finalize sample-wise loss computation. + * Abstract `Model.compute_loss` into the base class using the previous + two methods. Deprecate it, in favor of out-of-Model orchestration. + * Expand Model unit tests to cover these new functions. + +[33mcommit 6fc008960a5a46936dbda41c2e7f419e02d2eeac[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 18 13:41:42 2023 +0100 + + Implement `MetricSet` wrapper for `Metric` instances. + + * Implement `MetricSet`, a wrapper for an ensemble of `Metric` instances. + * Design `MetricSet` to mimic the `Metric` API, similar to the way how an + `Optimizer` wraps a pipeline of `OptiModule` plug-ins. + * Design `MetricSet` to be instantiable from a human-editable and JSON- + serializable config, similar to the way an `Optimizer` can be. + * Expose a `MetricInputType` type-alias for the variety of input formats + enabling to specify the individual wrapped metrics, to ease source code + readability. + * Implement unit tests for `MetricSet`. + +[33mcommit f20c14f6591c7340da1bc1deed016e78d09d4262[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 24 11:05:47 2023 +0100 + + Implement standard classification and regression metrics. + + * Implement accuracy, precision and recall metrics for classification, + covering both the binary and multi-class classification cases. + * Implement binary roc-auc metric, with modular precision on thresholds + used for fpr/tpr estimation, including privacy-oriented restrictions. + * Implement abstract `MeanMetric` template for averaged scalars. + * Implement `MeanAbsoluteError` and `MeanSquaredError` metrics. + * Implement associated unit and functional tests, including a shared + test suite that may be re-used for future `Metric` subclasses. + +[33mcommit 4ebb627852f3981ca4fafc27576c4b8f496268dc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 24 10:59:03 2023 +0100 + + Implement Metric API. + + * Add `declearn.metrics` submodule. + * Implement `Metric` abstract base class, that defines an API for + the iterative and federative computation of evaluation metrics. + * This commit is the result from an iterative process: + - Implement a first draft of the Metric API, with some subclasses. + - Marginally revise the API based on subclasses' implementation + and test-driven debugging. + - Harmonize the Metric API with the type-registration and name-based + specification practices used in the Regularizer and OptiModule APIs. + +[33mcommit feac22d72b62788a53af5352ee418995f3c69f40[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jan 23 09:34:15 2023 +0100 + + Add 'tomli' dependency for Python <3.11. + +[33mcommit f880486463a771f1efee3e69dd2dd080c7167b1b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jan 16 09:50:35 2023 +0100 + + Add TOML-parsing to network endpoints' build-config dataclasses. + + * Use dataclass-generation utils to replace the hand-written + `NetworkClientConfig` / `NetworkServerConfig` dataclasses. + * Use inheritance from `TomlConfig` to add TOML-parsing. + * Update `FederatedClient` and `FederatedServer` to use the + revised classes' features (including TOML parsing). + +[33mcommit cd1d0cb137b74c6baec397c703f4d1c8830427c4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 11 14:34:11 2023 +0100 + + Made gRPC and websockets network communication backends optional. + +[33mcommit 54b3f2ee7d883bbc48f43dbbfde6bbfa4231ae07[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 11 14:24:49 2023 +0100 + + Add `declearn.communication.list_available_protocols`. + +[33mcommit b0f880a6eaedc1fb27820990b71e6793681b71a5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 11 13:53:59 2023 +0100 + + Add `access_types_mapping` util to access registered type mappings. + +[33mcommit f64067e079f84eaeaf514fb038de653129dfe59a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 11 13:11:47 2023 +0100 + + Rename `Client` and `Server` to `NetworkClient` and `NetworkServer`. + + On the side, slightly update the API of these classes, in a similar + fashion as what was recently done for `OptiModule` and `Regularizer`: + * Automate type-registration of child classes. + * Add a `protocol` str class attribute, used by the automated type + registration. + +[33mcommit c841bfcb66587d1f9adbbd4b105d9eb7da9f7f2f[m +Merge: d2ef427 d4cd449 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Tue Jan 17 08:35:14 2023 +0000 + + Merge branch 'revise-strategy-api' into 'main' + + Revise strategy api + + See merge request magnet/declearn/declearn2!16 + +[33mcommit d4cd449fa240124032a2b6884b63d18f00e2249d[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Jan 16 19:25:02 2023 +0100 + + minor name chnages and typo + +[33mcommit d2ef427e3e8518559818e05af71d5f8e965147de[m +Merge: 8824105 29043ba +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Jan 16 18:20:25 2023 +0000 + + Merge branch 'hotfix-examples' into 'main' + + Hotfix examples + + See merge request magnet/declearn/declearn2!17 + +[33mcommit 34c6e4ec573c358f1b2bbe6c5dded0171c5b5d0e[m +Merge: 973167f 8824105 +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jan 16 11:33:27 2023 +0100 + + Merge branch 'main' into revise-strategy-api + +[33mcommit 8824105071787c74f38cc8ed3aba51714a98e92f[m +Merge: 168781e 37cfaf4 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Jan 16 09:13:06 2023 +0000 + + Merge branch 'dp-sgd' into 'main' + + Add local DP to declearn + + See merge request magnet/declearn/declearn2!11 + +[33mcommit 29043ba4d34d5bc663f393c593e42d4f84392504[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 12 15:59:49 2023 +0100 + + Fix an argparse bug in the Heart-UCI server script. + +[33mcommit 9571ad560cde8fc76ebc37661c9ef5b1c6c82734[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 12 15:59:09 2023 +0100 + + Update RMSprop-addition example. + +[33mcommit 37cfaf4a4aeaca1f4be0ba3644a31a63e244109d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jan 11 11:08:47 2023 +0100 + + Fix mypy error due to untyped opacus imports. + + Note: depending on the opacus (and, seemingly, python) version used, + opacus's type hints are available to mypy or not. This commit hence + takes a conservative approach at silencing errors that mypy might in + some contexts not raise. + +[33mcommit 168781e2cbe1cfe0b68913818aaa187271312a47[m +Merge: b796921 b8c969c +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Jan 9 16:14:58 2023 +0000 + + Merge branch 'refactor-main' into 'main' + + Refactor `FederatedServer` and `FederatedClient` code. + + See merge request magnet/declearn/declearn2!14 + +[33mcommit fc50779e2f71462320a2a360bff141e00aecd42a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jan 9 10:00:48 2023 +0100 + + Increment version number and add Nathan to authors. + +[33mcommit 973167fd04e09aaf86eb9df40b4b7e499a0d75b4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Jan 9 09:54:52 2023 +0100 + + Enable specifying `FLOptimConfig` optimizers as single floats (lrate). + +[33mcommit 1a6e937e57b786d92f7a95ac04725cb56c0aa179[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 6 18:10:55 2023 +0100 + + Remove `declearn.strategy` in favor of using `FLOptimConfig`. + +[33mcommit e4d28bee6a9526a1c21a3c233e91045bfd42e9cd[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 6 18:05:59 2023 +0100 + + Implement `FLOptimConfig` as an alternative to the Strategy API. + +[33mcommit f4d19036113ec32ee67954e6ed94eada15f07d52[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jan 6 12:03:31 2023 +0100 + + Move Aggregator API and subclasses to the new `aggregator` module. + +[33mcommit d27fcaf9de61276d5803dd8c060056b439ed8dda[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 5 17:04:49 2023 +0100 + + Marginally improve TomlConfig docs and type-hints parsing. + +[33mcommit 81e530ed354f2cbafee9aad98e306098b38babb0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jan 5 15:10:20 2023 +0100 + + Implement unit tests for `declearn.main.privacy.DPTrainingManager`. + +[33mcommit 8b5e8cd4c92f2122fc096edce85c563164ea63b2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 3 15:49:06 2023 +0100 + + Implement DP-budget-based training interruption in `DPTrainingManager`. + + * `DPTrainingManager`'s (private) training step method now implements + the verification of the DP budget that would be spent as a result + of the step, and effectively prevents the step from being taken if + needed. + * To achieve the former, `TrainingManager._train_under_constraints` + now catches any built-in `StopIteration` errors raised when calling + `_run_traing_step`, and interprets it as a signal to exit the loop. + * The latter behaviour is now documented at the base class level. + * Note: in case the train step is authorized but fails, the accountant's + history will be wrong - but so may be the optimizer's plug-ins' states + etc. hence this is not tackled as of now. + +[33mcommit d5170c9d16fc6c2fc45ba61fa466cc45f4e91fe6[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Dec 12 15:04:50 2022 +0100 + + Add documentation on local DP, including warnings and limits. + + Co-authored-by: Paul Andrey <paul.andrey@inria.fr> + +[33mcommit 46981363dff0967dc3d13b072603348fef22381f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 3 11:39:27 2023 +0100 + + Document local DP setup in the README. + +[33mcommit 6a39d72a0ff5321e1d36afab1c1304b54873255f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Jan 3 10:14:30 2023 +0100 + + Modularize available frameworks' listing and use in optimizer tests. + + * Replace the hard-coded `Frameworks` tuple with a `list_available_frameworks` + function that checks third-party dependencies' availability. + * Avoid importing all frameworks when importing `declearn.test_utils`, which + resulted in slow start-up (and unrequired warnings) of examples code. + * Adjust the optimizer tests based on available frameworks. + + Notes: + * Additional work is required to deploy this function to other tests. + * It may be useful to move `list_available_frameworks` to `declearn.model` + (or `declearn.utils`?). + +[33mcommit 26bebdc1ba45400b85f50473d8969813656040a9[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Dec 5 14:55:50 2022 +0100 + + Fix `TorchVector` compatibility with `NumpyVector`. + +[33mcommit 3e1a2ae1b9539a731ba84fbc8589c19b17da5064[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Dec 23 17:27:13 2022 +0100 + + Enable DP-SGD setup in `FederatedClient` and `FederatedServer`. + + * Add an optional secondary initialization phase to set DP-SGD up + based on the presence of a "privacy" field in the `FLRunConfig`. + * Have the server package and send information required to set up + the local DP. + * Have the client replace its `TrainingManager` with the DP-SGD + subclass `DPTrainingManager` and call its `make_private` method. + + Co-authored-by: BIGAUD Nathan <nathan.bigaud@inria.fr> + + Authors: + * Nathan Bigaud first implemented the setup and use of DP-SGD by + subclassing `FederatedClient` and `FederatedServer`. + * Paul Andrey made use of the revisions inspired by Nathan's work + to come up with this final implementation. + +[33mcommit 4738265c3a897b7c2e202fc9c78366d0b6488a41[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Dec 23 17:14:07 2022 +0100 + + Implement `DPTrainingManager` to enable DP-SGD use. + + * Implement `DPTrainingManager`, a subclass of `TrainingManager` that adds + DP-SGD tools and enables setting them up through a `make_private` method. + * Expose it under a dedicated `declearn.main.privacy` submodule so as to + lazy-import 'opacus'. Also implement informative warnings when opacus is + missing. + * NOTE: some "# REVISE" comments should be tackled before this commit hits + the main branch. + + Co-authored-by: Paul Andrey <paul.andrey@inria.fr> + + Authors: + * Nathan Bigaud wrote a first version of DP-SGD-enabling code, using the + opacus dependency and its `make_private` naming logic. + * Paul Andrey re-implemented from this code using the newly-introduced + `TrainingManager` and `sclip` parameter to `Optimizer.run_train_step`. + +[33mcommit c97a6510359cca626dfdc062defba4c66e659151[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Dec 23 16:58:33 2022 +0100 + + Add a PrivacyRequest message and marginally modify InitRequest. + + * PrivacyRequest is a new message designed to wrap up hyper-parameters + required to set up local differential privacy (using DP-SGD). + * InitRequest has been provided with a 'dpsgd' bool field (default=False) + that will serve in the future to indicate that initialization should + be pursued by a local-DP-setup phase (using a secondary PrivacyRequest). + + Co-authored-by: Paul Andrey <paul.andrey@inria.fr> + + Authors: + * Nathan Bigaud first implemented PrivacyRequest. + * Paul Andrey polished it and made the change to InitRequest. + +[33mcommit 3cb81145cb24eb177d3772ee0044949b088ac941[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Dec 23 16:55:36 2022 +0100 + + Add `PrivacyConfig` dataclass and make it an optional section of `FLRunConfig`. + + Co-authored-by: BIGAUD Nathan <nathan.bigaud@inria.fr> + + Authors: + * Nathan Bigaud wrote the first implementation of PrivacyConfig. + * Paul Andrey polished it and articulated it with FLRunConfig. + +[33mcommit 05c9c6195319a29dc41672b8e8dcddb219171213[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Dec 23 11:32:15 2022 +0100 + + Minor type-hinting fix in Model tests code. + +[33mcommit 3b2cfdbd72b32094b608323f65ad8b860594aa76[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Dec 23 11:28:57 2022 +0100 + + Refactor some optimizer unit test code, moving some to `declearn.test_utils`. + + * Move up the listing of frameworks and the mock-gradient-vectors-generating + util class to a new private submodule of `declearn.test_utils`. + * Add a shared framework-providing fixture to the optimizer tests' module. + * Harmonize relative imports' code (preserving the `sys.path` trick). + + Co-authored-by: Paul Andrey <paul.andrey@inria.fr> + +[33mcommit 7faf34ea8fc926e1d8a02da82a9f53dcbb22674e[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Dec 23 11:26:56 2022 +0100 + + Implement functional tests for `NoiseModule` subclasses. + +[33mcommit a50b810f72d04701b55ac8d19ab2c854d01ff039[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Dec 23 11:22:28 2022 +0100 + + Implement abstract and gaussian noise-addition optimizer modules. + + * Implement `GaussianNoiseModule`, to enable adding gaussian noise + to step-wise batch-averaged gradients as part of local DP-SGD or + to clients-averaged updates as part of central DP-SGD. + * Implement an abstract `NoiseModule` layer, paving the way for + other noise-addition mechanisms. + + This commit squashes some incremental work by multiple authors: + * Nathan Bigaud implemented `GaussianNoiseModule` after doing the + scientific and technical review of requirements, notably as to + the use of a cryptographically-safe RNG. + * Paul Andrey abstracted part of the code into the `NoiseModule` + class, fixed some pending todos, and adjusted unit tests. + + Co-authored-by: Paul Andrey <paul.andrey@inria.fr> + +[33mcommit b978cfaa15dd1a4cc7e3b186e99071cd37ddbece[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Fri Nov 25 19:10:17 2022 +0100 + + Add Poisson sampling option to `Dataset.generate_batches`. + + * Add `poisson` argument (bool, default=False) to `Dataset.generate_batches`. + * Implement Poisson sampling for `InMemoryDataset`. + * Add `poisson` parameter to the `TrainRequest` dataclass, enabling instructing + clients to use Poisson sampling rather than default batching in a FL process. + + Co-authored-by: Paul Andrey <paul.andrey@inria.fr> + +[33mcommit b8c969c1a9202c1894110b92bb398f18d7e8b7d0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Dec 22 16:13:59 2022 +0100 + + Patch backend code for Python <3.9 compatibility. + +[33mcommit 04360a84c079867c5b911d399d0185f343329c21[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Dec 22 13:59:32 2022 +0100 + + Implement unit tests for `declearn.main.utils.TrainingManager`. + +[33mcommit a84f40aa0981bc414a0c24541a1eab7350912d35[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Dec 22 13:58:59 2022 +0100 + + Fix bug: infinite training round loop when `epochs=None`. + +[33mcommit 53cd2d775444710b8f86c001dcfe71f207e614c5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Dec 13 16:38:13 2022 +0100 + + Refactor `FederatedClient`, splitting out training and evaluation loops. + + * Move local training and evaluation routine under a new class, + `TrainingManager`, that retains objects expected to have been + created based on server-issued instructions. + * Have `FederatedClient` use the former class, using an attribute + set during the initialization phase. + * As a result, this commit splits the client-side code between: + - training and evaluation orchestration, as synchronous methods + that may be used and tested locally (even outside of FL, even + though the signatures currently retain messaging features). + - initialization and message-based-processing orchestration, + that sets up the former and makes use of it based on server + instructions, and transmits replies over the network. + +[33mcommit bb133eb45b01b1af0b2f8877514a3db808fb4369[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Dec 21 16:03:54 2022 +0100 + + Clean up some FederatedServer backend code. + +[33mcommit 171b691b592cee1dea250332bc4e1ee2a1c063cc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Dec 21 15:35:57 2022 +0100 + + Refactor `FederatedServer` by introducing `FLRunConfig`. + + * Add `declearn.main.config` submodule: + - Move dataclasses (`TrainingConfig`, `EvaluateConfig` + and `RegisterConfig`) to this new submodule. + - Implement `FLRunConfig`, that binds together all arguments and + hyper-parameters used by the `FederatedServer.run` method, and + provides with the possibility to write them up as a TOML config + file (by inheriting `declearn.utils.TomlConfig`). + * Deploy `FLRunConfig` to `FederatedServer`: + - Replace the argument to `run` and `async_run` by `FLRunConfig`, + adding the possibility to either provide (legacy-style) kwargs + or the path to a TOML file to the `run` one. + - Replace the argument to `initialize` by the full `FLRunConfig`, + to facilitate overriding by subclasses that may need to send or + use information on the process in addition to conducting client + registration. + - Preserve the use of targetted fields of hyper-parameters in the + `training_round` and `evaluation_round` methods. + +[33mcommit e85d1184104a5541698d14801c4e6183a4e2358e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Dec 12 16:36:03 2022 +0100 + + Simplify server-side hyperparameters' collection into messages. + +[33mcommit f814d6c720dced91c99b3f970a3454e0928f9424[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Dec 12 11:18:10 2022 +0100 + + Use `dataclass_from_init` to implement `EarlyStopConfig`. + +[33mcommit ede01beb8a4b7e86ba57005abd6234ffdc1a5814[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Dec 9 17:26:00 2022 +0100 + + Implement dataclass-generation tools. + +[33mcommit c1e0bf9d13f69280413d47bb39ff754f1434da89[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Dec 21 15:01:39 2022 +0100 + + Implement `TomlConfig` util to define TOML-parsable configuration containers. + +[33mcommit b7969219953d453a3baf032acea51698f247489a[m +Merge: d153178 c0340d9 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Dec 21 09:28:19 2022 +0000 + + Merge branch 'clip-gradients' into 'main' + + Add sample-wise gradients clipping to the Model API + + See merge request magnet/declearn/declearn2!13 + +[33mcommit c0340d910f92622d37d8b758f83e28c94b73a44d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Dec 21 09:44:17 2022 +0100 + + Implement (batch-averaged) gradient clipping module. + +[33mcommit 8a5602de4c1e8f8f1088505955ea616cfb3777bb[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Dec 21 09:42:56 2022 +0100 + + Add and implement to the API. + +[33mcommit 0db226a6070a1c017a1af7ddfb64cd95d3a923e6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Dec 20 13:03:54 2022 +0100 + + Add `compute_updates_from_gradients` method to the `Optimizer` API. + +[33mcommit c9224fff362e025d0a62fb8751dfd593892b549a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Dec 20 12:52:38 2022 +0100 + + Add `sclip` sample-wise clipping parameter to `Optimizer.run_train_step`. + +[33mcommit c51ae84d3f85601d38a18e0ebbaa2eb2de84506d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Oct 5 12:30:57 2022 +0200 + + Implement unit tests for sample-wise gradients clipping. + +[33mcommit 35bdadd501f52692c188b417833ff491b59f7aa7[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Oct 5 12:30:39 2022 +0200 + + Add sample-wise gradients clipping to the Model API. + +[33mcommit 44accf61c16bfec1c46ec2ea3f937fe760435ee9[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Oct 5 12:30:26 2022 +0200 + + Add sample-wise gradients clipping to `TorchModel`. + + Note: to efficiently compute (and clip) sample-wise gradients + in Torch, the additional dependency `functorch` is used. This + poses a risk as to the maintainance of `declearn[torch]` due + to `functorch` still being presented as experimental by Meta; + however it is the best available solution to limit overheads, + and will probably become an important component of the torch + ecosystem in the future. + +[33mcommit 8528f8e200aedf896d2dcb8148deb5155b8b87b6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Oct 5 12:27:29 2022 +0200 + + Add sample-wise gradients clipping to `TensorflowModel`. + +[33mcommit 56bb8da128856fe1d28e616f6b121a478d91d16a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Oct 5 12:27:16 2022 +0200 + + Add sample-wise gradients clipping to `SklearnSGDModel`. + +[33mcommit d1531784155a2128265784f1215f8c74d682689d[m +Merge: fa2adab dd4e4f6 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Dec 14 08:54:14 2022 +0000 + + Merge branch 'gradient-masked-averaging' into 'main' + + Gradient Masked Averaging + + See merge request magnet/declearn/declearn2!12 + +[33mcommit fa2adab3d86b96ca658ca636948450d090d40b46[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Dec 8 08:36:25 2022 +0100 + + Reformat extra dependencies' specifications. + + The previous version specified some recursive dependencies, to avoid + writing redundant dependency specifications. This is convenient, and + supported (as of versions 19.0 to 22.3) by pip. However, this is no + longer working with tox v4.0.2 (as opposed to v3.27), that was just + released. + + As a consequence, and since self-dependency is not part of PEP 631, + this commit removes it, and introduces some (documented) redundancy + in extra dependencies - which as of now make for a couple of lines + only. + +[33mcommit f42f7ed7b634b0ae94bc82dc90752415d76c26e0[m +Merge: 01ead20 f2a2116 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Fri Dec 9 08:53:30 2022 +0000 + + Merge branch '12-chunk-large-messages-to-avoid-size-limitations' into 'main' + + Chunk large messages to avoid size limitations + + Closes #12 + + See merge request magnet/declearn/declearn2!10 + +[33mcommit f2a21161061885e66558349417eb7ee9d276b51b[m +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Fri Dec 9 08:53:30 2022 +0000 + + Chunk large messages to avoid size limitations + + This commit implements message-chunking in cases when large (usually, >1MiB) + messages are being exchanged via one of the current network communication + protocols (WebSockets or gRPC). The code additions are framework-dependent, + but are implemented in coherence, following these common specs: + + * When a (string-serialized) message reaches a size that exceeds the + communication protocol's (default) message-size limitation, it is sent + as a stream of ordered chunks, obtained by merely splitting the string + into fixed-size chunks. + * This may be used either on the client or server side, and should be + invisible to the user (including developers): chunking is automated as + part of the backend of public message-sending methods. + * When an unregistered client attempts to send a chunked message to the + server, its message should be refused, without collection nor parsing + of the actual message contents. + + The practical implementations are the following: + * WebSockets: + * When chunking, send a conventional flag as first message; expect an + acceptance (or denial) flag; sequentially send chunks; send a closing + flag. + * When receiving, check for the "stream start" flag; decide whether to + accept (based on registration status) and send a flag; receive and + assemble chunks until the ending flag is received. + * In practice, util functions have been implemented, that are shared by + the Client and Server classes (but not made available to the end-users). + * gRPC: + * Turn `send` into a server streaming RPC, enabling the server to send + replies as an ordered sequence of message chunks. + * Add the `send_large` bidirectional-streaming RPC, that is similar to + `send` but is used when the client performs message-chunking. + * Refuse `send_large` requests from unregistered clients (send back an + `Error` message). + * Automate the choice of `send_large` over `send` in the client backend. + +[33mcommit dd4e4f6622355aa8c2f3cadedc58415c7a1d81a4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Dec 8 08:36:25 2022 +0100 + + Reformat extra dependencies' specifications. + + The previous version specified some recursive dependencies, to avoid + writing redundant dependency specifications. This is convenient, and + supported (as of versions 19.0 to 22.3) by pip. However, this is no + longer working with tox v4.0.2 (as opposed to v3.27), that was just + released. + + As a consequence, and since self-dependency is not part of PEP 631, + this commit removes it, and introduces some (documented) redundancy + in extra dependencies - which as of now make for a couple of lines + only. + +[33mcommit af10d54b5395858657d0def1c61385cb2c5bc08f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Dec 7 17:57:11 2022 +0100 + + Fix `Vector.__rsub__` method. + +[33mcommit 0513abdd246377db96afd6ee8e8f1d2107ee71c4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Dec 7 17:28:46 2022 +0100 + + Implement GradientMaskedAveraging aggregator. + +[33mcommit 01ead2049a8dffe005b59168d1d5067505fb1ece[m +Merge: 750df01 8bee8cd +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Fri Dec 2 11:20:17 2022 +0000 + + Merge branch 'regularizers' into 'main' + + Implement loss regularizers & revise Optimizer API. + + See merge request magnet/declearn/declearn2!9 + +[33mcommit 8bee8cd53cb45dcc630c83b3a5aa47b06f962ba5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Dec 1 16:19:26 2022 +0100 + + Fix Lasso and Ridge regularizers. + +[33mcommit a46dc0ed8c152e914f1b0579fc856c6c23329547[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Nov 22 11:04:40 2022 +0100 + + Update CI/CD configuration. + + * Prevent automatic testing on Draft MRs. + * Prevent automatic testing on merge commits to main. + * Enable manual launch of "fulltest" case on Draft MRs and commits to + main. + +[33mcommit 57c30306ee2d8d613b445fb5e10fe726a1fab7dd[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Nov 21 17:19:20 2022 +0100 + + Increment version to "2.0.0.beta2". + +[33mcommit 5e2cda593aa10b63e33eee3872f3676c8001d254[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Nov 21 17:18:52 2022 +0100 + + Update Heart-UCI example using new `Optimizer` config syntax. + +[33mcommit c8c8a85d8962350c00d0ecca9985425f17dfd490[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Nov 21 17:16:43 2022 +0100 + + Document `Regularizer` API in the README file. + +[33mcommit 2beb9f2eb1614a8d3ae593b51f2d0c3ddd1ff921[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Nov 21 16:57:33 2022 +0100 + + Move `NumpyVector` from `model.api` to `model.sklearn` submodule. + +[33mcommit 750df01736bef60e6309958e295b43891a4c4881[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Nov 18 17:48:05 2022 +0100 + + Fix `InitRequest.to_string` with tensorflow 2.11. + +[33mcommit a63c27b41876c5f2f9bb65ce6b3388ac6cabfa94[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Nov 21 16:41:53 2022 +0100 + + Refactor `OptiModule` unit tests and implement `Regularizer` ones. + +[33mcommit c88c122bdd1a73cdae7ce476a35deb5e174a9c19[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Nov 21 12:09:42 2022 +0100 + + Apply minor docstring and type-hint corrections. + +[33mcommit 2ed8e450b1811f66dc2f5c087da20ed52b6ace95[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Nov 21 13:22:15 2022 +0100 + + Modularize `regularizers` and `modules` input types for `Optimizer`. + +[33mcommit 0887fdd36c49d15ec43040cee5b14bce755d9967[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Nov 21 13:13:56 2022 +0100 + + Revise `OptiModule` API. + + * Add `aux_name` class attribute, to distinguish between unique module + `name` and auxiliary-variables-tagging name that may be used to pair + up a couple of server/client modules (an example being Scaffold). + * Revise `Optimizer.process_aux_var` and `Optimizer.collect_aux_var`'s + backend in accordance with the addition of `aux_name`. + * Revise the (de)serialization of `OptiModule` by adding `from_specs`, + similarly to `Regularizers`. Previous (de)serialization methods may + be garbage-collected in the near future. + * Implement the automatic type-registration of `OptiModule` subclasses + using `__init_subclass__`, as was done with `Regularizer`. + +[33mcommit 04bf1448b054d190e7e29f14fc83b8c710d01854[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Nov 18 17:48:05 2022 +0100 + + Fix `InitRequest.to_string` with tensorflow 2.11. + +[33mcommit 53b27196686d21676b42ead5176050166d5b2efe[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Nov 18 15:56:50 2022 +0100 + + Use framework-specific Vector type as `Model` weights. + + * Prior to this commit, the API had `Model` subclasses + use `NumpyVector` as model weights' container. This + felt convenient as few computations were expected to + make use of these weights directly. + * However, this caused an asymmetry between calls to + the server-side and client-side optimizers, and was + the cause of implicit (or boilerplate-code-demanding) + explicit casting between frameworks as part of the + `apply_updates` method. + * With this commt, model weights are now wrapped in a + framework-dependent container, as are model gradients. + +[33mcommit fd1c012d2f937a5717aabbe5757cd07e714b5860[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 17 17:52:34 2022 +0100 + + Added loss regularizers to `Optimizer`. + +[33mcommit e1479287cd60514d528fbe2d580b716896cbd533[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 17 17:50:00 2022 +0100 + + Implement FedProx, Lasso and Ridge loss regularizers. + + On the side, alter `Regularizer` API: move name class attribute definition. + +[33mcommit 53dd9eafd8b1469bb1aa1f151deb3843d89ef84b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 17 17:49:30 2022 +0100 + + Implement `Regularizer` optimizer plug-ins API. + +[33mcommit bde421d1f4aa11dfb3e2d229e2f08d25d278ac67[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 17 17:46:10 2022 +0100 + + Rename private `optimizer.modules._base` to `_api` for readability. + +[33mcommit 0a1d967f54af1cef402874bbdeabc5d3373b6771[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Nov 17 17:16:40 2022 +0100 + + Revise `create_types_registry`. + + * Invert the order of arguments `base` and `name`. + * Enable not specifying `name`. + * Enable class-decoraotr syntax use of the function. + * Propagate these changes throughout `declearn`. + +[33mcommit f07d18c209292aebe84ef40e6bd1666fb9e3955a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 16 11:13:33 2022 +0100 + + Marginally revise `generate_ssl_certificates`. + +[33mcommit f8663243956832fcd285ab9bb5192d4bc8fc62a5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 16 11:12:41 2022 +0100 + + Add logging to `WebsocketsClient` failed connection attempts. + +[33mcommit b1cd7907ac55d35dca84fa847c908193de3adb10[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Nov 14 17:23:09 2022 +0100 + + Fix `TorchModel` gradients' naming. + + Note: unproper naming had a potential nasty side-effect + of disabling model update on the server side due to key + mismatch between coefficients' names. + +[33mcommit cbc02c70e9aa97ad4331b74b6403cb9e6453e2b6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Nov 9 18:58:50 2022 +0100 + + Implement and deploy `json_load` and `json_dump` utils. + +[33mcommit c3a20cbd80048537a2aadc702986ef5a55cb5646[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Nov 7 12:09:44 2022 +0100 + + Correct `Scaffold` client-state update computation. + +[33mcommit 41f937ab01962f9c3b907f49c08ef1e636683bb4[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Nov 7 11:01:21 2022 +0000 + + Fix Momentum formulation and add Nesterov variant. + +[33mcommit 7fd99b75e11ae781c5569c5a85bbc729c97bcfec[m +Author: BIGAUD Nathan <nathan.bigaud@inria.fr> +Date: Mon Oct 24 15:23:29 2022 +0000 + + Add tutorial on RMSProp implementation. + +[33mcommit aeba86495d1f198a493ff656805b371c2083b76c[m +Merge: 6882651 144c0c3 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Mon Oct 24 15:22:31 2022 +0000 + + Merge branch 'use-mypy' into 'main' + + Automate code type-checking using mypy. + + See merge request magnet/declearn/declearn2!6 + +[33mcommit 144c0c39b9a061dc747864d34d9bc0ebf750a4dc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Oct 24 10:32:23 2022 +0200 + + Add some type checks and hints to model subclasses. + +[33mcommit 6882651c21a7297be01c6501e9a4b60f1ae099c8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Oct 19 16:08:44 2022 +0200 + + Prevent the absence of effort constraints on training and validation. + +[33mcommit 537a326928febd8febfd3b8d7f462b9a210dbf26[m +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Tue Oct 18 08:08:42 2022 +0000 + + Update the README file. + +[33mcommit 03ec2cb658797018b07f73b11ade48715701c51f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Oct 17 11:50:04 2022 +0200 + + Minor formatting fixes. + +[33mcommit 2e670270f0f8afb339804fe2ad34a96ed0dd67d1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Oct 17 10:04:55 2022 +0200 + + Turn `Vector` operator class attributes into properties. + + The rationale behind this change is that assigning a function + to a class attribute results in it being bound as a method as + per the Python data model. + However, for unclear reasons that may have to do with the way + they are built, `operator.[op]`, `numpy.[op]` and `torch.[op]` + are not affected by this binding, which is not desirable in + the context of `Vector`. + Yet, to prevent this issue in future framework-specific classes + (which was hackily dealt with for tensorflow), and to improve + their documentation, these base operator attributes were turned + into properties. + Additionally, this commit extends the docstring of `Vector` to + provide developers with indications as to what should or may be + implemented, extended or overridden by concrete subclasses. + +[33mcommit ea984108719b2217cc3d9a6c0cf631e2e2924a3e[m +Merge: 2e1c1d2 ae5b064 +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Oct 14 19:12:00 2022 +0200 + + Merge branch 'main' into use-mypy + +[33mcommit ae5b064bf7b21959d5d5d041d9024965d8da14f2[m +Merge: b2a4423 9e9efb3 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Fri Oct 14 16:45:52 2022 +0000 + + Merge branch 'heart-demo' into 'main' + + Add examples folder + + See merge request magnet/declearn/declearn2!5 + +[33mcommit 9e9efb35120bd91c63cd44870c7edb0569d37865[m +Author: Nathan Bigaud <nathan.bigaud@inria.fr> +Date: Fri Oct 14 18:31:24 2022 +0200 + + Implement UCI heart disease dataset example. + + Co-authored-by: Paul Andrey <paul.andrey@inria.fr> + +[33mcommit 06250995407784193c711b8e3055b21166827845[m +Author: Nathan Bigaud <nathan.bigaud@inria.fr> +Date: Fri Oct 14 18:28:43 2022 +0200 + + Reformat README file. + +[33mcommit 4091c5405064c2f7bd6e2356c297c9417eff05b1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Oct 14 18:01:20 2022 +0200 + + Implement and deploy `declearn.test_utils.run_as_processes`. + +[33mcommit c08c741f13d3e4d7ce813963433c678e391d2136[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Oct 14 18:00:49 2022 +0200 + + Add `declearn.test_utils` and move `generate_ssl_certificates` into it. + +[33mcommit 2e1c1d2aeeca23adf706ff6f81affa0a9d2df02e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Oct 13 13:59:37 2022 +0200 + + Automate code type-checking using mypy. + +[33mcommit b2a44235ec0743d240504beaa0bf316b1f0d0ffe[m +Merge: eeae8c6 6c33d9f +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Oct 12 13:18:06 2022 +0000 + + Merge branch 'gardening' into 'main' + + Code Cleaning & Automation + + See merge request magnet/declearn/declearn2!3 + +[33mcommit 6c33d9f5f80dfc3d4aed373f8be90e3b88b37375[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Oct 12 12:11:33 2022 +0200 + + Document `Vector.coefs` attribute in (sub)classes' main docstring. + +[33mcommit aebb9c3f98f7d937622a711fd8facec49f54cd4b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Oct 12 12:07:01 2022 +0200 + + Revise rng seeding to generate data batches. + +[33mcommit 0fcedf3946c27196bfcfb0e20e3544ace803d71c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Oct 12 11:48:43 2022 +0200 + + Raise if `InMemoryDataset.generate_batches` returns an empty iterator. + +[33mcommit b20071abc7daffee44c01f8d133c975b36cf5c65[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Oct 12 11:40:57 2022 +0200 + + Add `dtypes` and `shapes` methods to `Vector` and refactor `__repr__`. + +[33mcommit 27b0aa013bfcc7588784a1a1e9854e1bff32a81b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Oct 12 10:18:27 2022 +0200 + + Extend README as to black, pylint and conda. + +[33mcommit 587c8c23546ddf98c713d7a115e30f8592f48971[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Oct 11 13:02:49 2022 +0200 + + Automate code verification using tox and CI/CD. + + * Add `black --check` and `pylint` code verification commands to the `tox.ini` file. + * Add the associated tools as extra dependencies for `declearn[tests]`. + +[33mcommit 4d793ac2768aed9f59a6d5641d59e6178fbe57a8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Oct 11 14:43:24 2022 +0200 + + Add `Vector.compatible_vector_types` property and remove redundant code. + +[33mcommit cf2b41dc28184c6a812e71c80ec8d1031e24bf10[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Oct 11 14:22:53 2022 +0200 + + Refactor some redundant code in communication Server classes. + +[33mcommit 2af0234062ef55d81615b301935269a2e7c07f4f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Oct 11 13:02:00 2022 +0200 + + Reformat code files using black. + + * Run [black](https://github.com/psf/black/) to reformat the existing codebase. + * Add a limited amount of `# fmt: off` comments to protect some code blocks that + are believed to achieve better readability in their previous form. + * Add (limited) black configuration parameters to `pyproject.toml` for their use + by any contributor to declearn. + +[33mcommit 995499c7abc5a901144ea75bd5d83633affd633d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Oct 10 16:51:23 2022 +0200 + + Fix `pyproject.toml` installation and drop `setup.cfg`. + + * Fix setuptools instructions as part of `pyproject.toml`. + * Drop now-useless `setup.cfg` file. + * Add a missing dependency (installed by tensorflow, hence + unseen when running unit tests): `protobufs`. + +[33mcommit fb6d2109378287a63329e15df957c05ac1e3b7d0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Oct 10 14:18:27 2022 +0200 + + Add `logger` argument to communication and orchestrating classes. + + * Remove former `logger` class attributes. + * Add `logger` optional argument to `Client`, `Server`, their subclasses and + the associated build tools. + * Add `logger` optional argument to `FederatedClient` and `FederatedServer`. + * The new `logger` argument enables passing an existing logger, or the name + of a logger to create or re-use. When left to None, a name is automatically + generated, which differs from client to client based on their name. + * As a consequence: + - Client loggers are now instance-specific by default, to ease debugging. + - End-users and developers can now configure logging as they wish, notably + to write down results to files. + +[33mcommit fda19ea5d986b8c97ae8b48ada3881387df60095[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Oct 10 12:08:43 2022 +0200 + + Disable time-out on websockets keep-alive pings. + + * Websockets (optionnally, by default) uses keep-alive ping/pong + messages to prevent connections from being deemed idle and thus + closed e.g. by network proxies. + * Previously, declearn had been written in the intention not to + use this feature, however it was indeed active, and made open + connections to shut down under a (short) timeout due to ping/ + pong apparently not working properly, even on the localhost. + * This commit revises the code to enable keep-alive ping/pong, + but disable timeout associated with them (hence the requests + are attempted, can hopefully bring stability to connections, + but will not disrupt declearn in case they fail in spite of + the connection still being active). + * Note: the actual future solution will be to implement proper + authentication and therefore reconnection mechanisms. + +[33mcommit eeae8c670d9dd91e5b65288311bff6471c0711ee[m +Merge: 435c2c5 049ddb3 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Oct 5 10:07:23 2022 +0000 + + Merge branch 'optimize-model' into 'main' + + Improve Model and its subclasses. + + See merge request magnet/declearn/declearn2!2 + +[33mcommit 049ddb32ef761fa5c742c488992c2c630b6fb266[m +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Wed Oct 5 10:07:22 2022 +0000 + + Improve Model and its subclasses. + + Clean-up Model and its subclasses: + * Improve documentation of Model methods. + * Harmonize `_unpack_batch` method name for the current Model subclasses. + * Harmonize loss-averaging behavior of the current Model subclasses. + + Improve TensorflowModel: + * Optimize gradients computation in `TensorflowModel` using `tf.function`. + * Improve the management and serialization of `loss` in `TensorflowModel`. + * Implement utilities to build keras Loss objects from strings or functions. + +[33mcommit 435c2c5326144d2913ecd344f34e3b129270ae92[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Oct 4 12:15:06 2022 +0200 + + Remove useless caching instructions from CI/CD config. + +[33mcommit 697dc900a7888344a5f287fab961741ae3b91c2b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Oct 4 12:09:38 2022 +0200 + + Add some metadata to installation files. + +[33mcommit 8877b95c16d7f84c5d01452a057bafad9049d473[m +Merge: 376c878 b004fc8 +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Tue Oct 4 10:06:59 2022 +0000 + + Merge branch 'refactor-effort-constraints' into 'main'. + + See merge request magnet/declearn/declearn2!1 + +[33mcommit b004fc823bfadc98de1b508ae4388210596261cd[m +Author: ANDREY Paul <paul.andrey@inria.fr> +Date: Tue Oct 4 10:06:59 2022 +0000 + + Refactor and improve effort constraints applicable to clients. + +[33mcommit 376c8785b3a1ff4c157511ed95840182bbf75ff0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 29 17:15:47 2022 +0200 + + Minor docstring fix. + +[33mcommit 2f3c16a0a0df6ceab02ecdbbf68783a20dd1ec3e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 26 11:10:02 2022 +0200 + + Protect `TorchModel.compute_batch_gradients` outputs from side effects. + +[33mcommit 1726bae1b9199c6729131e026773e1c560b3f3fa[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 26 11:09:08 2022 +0200 + + Refactor `TorchModel` backend loss computation. + +[33mcommit 7ff16191ef4ba432022fa6a9c7651f644b6bb595[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 22 11:38:54 2022 +0200 + + Specify 'localhost' as '127.0.0.1' in tests to avoid CI failure. + +[33mcommit 2cd6995fdd85d8b445978e2e80e6bdd93f000394[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 17:01:52 2022 +0200 + + Avoid `test_torch[RNN]` failure in py38. + +[33mcommit c7a431e1688b16da681eee7e0d25656969ec8f11[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 15:33:43 2022 +0200 + + Add CI/CD tags to use shared inria runners. + +[33mcommit 7a1bca48345ffce294d6226b4dca82c07e070c89[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 15:07:51 2022 +0200 + + Revise CI/CD configuration. + + Changes: + * Add some setup instructions, that should enable caching + installed packages rather than downloading them on each + and every pipeline call. + * Configure tests to run without '--fulltest' and on the + main branch only. + * Configure tests to run with '--fulltest' when a merge + request is created. + + Rationale: + * Avoid wasting resources on CI/CD jobs on _every_ commit: + trust developers to test their code when relevant. + * Ensure tests are run on the main branch as it is somewhat + more critical than development ones. + * Automate tests in the context of MR, which is nice. + +[33mcommit 1bf8fc837e5545e85f5d3434d2225567e45b4554[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 14:56:33 2022 +0200 + + Add `--fulltest` commandline option and skip some tests by default. + +[33mcommit 6688db7e5934e9a0430c06f7d4eb3a0894ed50ed[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 14:29:28 2022 +0200 + + Use validation datasets in `test_main.py`. + +[33mcommit f1106ec2e477b64e5a5af82a4b94193a26093fa0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 14:14:42 2022 +0200 + + Fix registration timeout use in tests. + +[33mcommit d5f6200b76f18e2c95d360b8e7f0bfadac18a849[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 14:13:06 2022 +0200 + + Add default value for `RegisterConfig.min_clients`. + +[33mcommit 844b74100cd31436b7e0d96fb7ca972456dfeb5e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 12:56:28 2022 +0200 + + Add GitLab CI configuration file. + +[33mcommit 84aef330fdaa0f69c5962916fd29110128e4a433[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 12:55:31 2022 +0200 + + Add some internal cross-references to README. + +[33mcommit 14881b9dc7a33e1ceb8005aa359b7917205b93a6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 12:51:02 2022 +0200 + + Add `tox.ini` configuration file. + +[33mcommit bcef11d9edf2c6a6decbf273c780feb9620a8a30[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 12:50:38 2022 +0200 + + Update `pyproject.toml` file. + +[33mcommit 296f8045fa1f1ff28104d0b92f4442e761d4087e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 11:45:10 2022 +0200 + + Silence tensorflow-raised deprecation warnings. + +[33mcommit e77f9a352d2577984253aff61cdf912a1f121481[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 11:05:59 2022 +0200 + + Improve GrpcServer-GrpcClient non-xfail unit tests. + +[33mcommit 7ef961cc76c593a0ac8a851b953c2fc3913dcc55[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 11:05:10 2022 +0200 + + Add timeout for clients registration in tests. + +[33mcommit 21b1b48bc4f4c3ccb795dd27d98389e43972f2ce[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 21 10:03:01 2022 +0200 + + Fix and document optional dependencies' installation. + +[33mcommit 628c7142cb8f3bc75a7444699fcb3da1fea1b173[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 17:58:53 2022 +0200 + + Add a README file. + +[33mcommit ff4979a79db406c7298360629d2e12c4e0f3b0f5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 14:30:02 2022 +0200 + + Fix declearn imports in tests. + +[33mcommit a722a3cf59ec379275c5bc638101c37f2609e66b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 12:01:17 2022 +0200 + + Rename package to 'declearn'. + +[33mcommit c9068d1a63ceff853cc15afe32f3edb7f3ec4306[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 11:56:27 2022 +0200 + + Rename 'test' folder. + +[33mcommit 47dd4c968674594e945e962de9851bc467b89834[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 11:40:43 2022 +0200 + + Improve `test_routines.py` failure detection. + +[33mcommit e46b4f4307a1d3d2b6ee23b12737a87e9cd20490[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 11:31:42 2022 +0200 + + Fix `grpc.protobufs` submodule import. + +[33mcommit ac4f533b697f077c632bb219c8ae0a8e5fd2e753[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 10:49:00 2022 +0200 + + Update description and version in installation files. + +[33mcommit 916494342ec55341922eee14e7b0cde77dc19d63[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 10:46:25 2022 +0200 + + Add main package docstring. + +[33mcommit 31a97c920da5d139342fc15a3cd378a6af731234[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 10:26:55 2022 +0200 + + Fix a docstring typo. + +[33mcommit ab67e177f9b47cbfde26a9dcd3a410f9eedc3cfd[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 10:26:47 2022 +0200 + + Modularize and document `FederatedClient`'s init parameters. + +[33mcommit 302e0588468ba898a1bae42f0e59054d1ef55d9e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 10:06:49 2022 +0200 + + Implement generic `load_dataset_from_json`. + +[33mcommit 118ea9536275fa655019014bde163c7f0cebb9b0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 19 17:12:07 2022 +0200 + + Improve code readability of batch-generation kwargs' handling. + +[33mcommit 18c1ebc31d158b356667dbe752ef223e6cb7b511[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 19 17:10:26 2022 +0200 + + Deploy `Checkpointer` use in `FederatedClient`. + +[33mcommit a8d68bac42e8f495ca32a50b7bd2a9ecd0e9d4be[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 19 16:36:25 2022 +0200 + + Fix `FederatedServer._keep_training`. + +[33mcommit dcb53b431131c949f4da66702c00b4e1699208bf[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 19 16:15:07 2022 +0200 + + Ensure checkpoint folder is created. + +[33mcommit a947855196ece3dc12a28ef9e2564b705d350284[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 19 16:14:42 2022 +0200 + + Redistribute `FederatedServer` parameters between init and `run`. + + Deploy `RegisterConfig` as part of this code refactoring. + +[33mcommit 212514e3ddfc400c6fdd6831051d648626b78b72[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 19 16:12:50 2022 +0200 + + Add `RegisterConfig` dataclass. + +[33mcommit a1d350c2a38649c28702d8d2c28e1ac964c8ebd6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 19 14:22:43 2022 +0200 + + Modularize FL training and evaluation parameterization. + + * Implement dataclasses utils to wrap and parse training + and evaluation hyper-parameters. + * Expose and use these as part the `FederatedServer` API. + * Adjust information passed through messages. + * Adjust `FederatedClient` code to make use of the former. + +[33mcommit d73b65aa77b54179b6fed2b9ae4f1b44e1967ff8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 19 14:17:46 2022 +0200 + + Modularize and document `Server` init parameters. + +[33mcommit d1a6f9fc30830e28af0d4a943b01754badfe5291[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 19 14:01:26 2022 +0200 + + Rename `EarlyStoppingCriterion` to `EarlyStopping`. + +[33mcommit 702801013f381a2f06d9381e10cc283e5a2ceebc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 19 11:42:44 2022 +0200 + + Add dataclasses to wrap and parse communication endpoint config dicts. + +[33mcommit 657306bb3167f6e8c90b543a5f0446be1bb7ee8d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Sep 16 15:31:20 2022 +0200 + + Add checkpointing to "main" functional tests. + +[33mcommit 2753b2810a797e1329c66e28deedcc505445ef9c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Sep 16 15:22:18 2022 +0200 + + Implement server-side model and loss checkpointing. + +[33mcommit 019608b0e5c4c518aef26376d88c00bdba4b0832[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 15 10:53:15 2022 +0200 + + Fix `SklearnSGDModel` loss computation. + +[33mcommit dd288a0896a79cb3b74177f2182a9fe4162e19e5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 14 17:27:42 2022 +0200 + + Correct loss aggregation in `FederatedServer`. + +[33mcommit e3dc7bc36e3a0a1f0b1df035c68aeaacf1edfb7c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 14 17:20:32 2022 +0200 + + Correct `SklearnSGDModel` loss computation. + +[33mcommit 32bfca67a1a6e76435ba02a5186d3d213623c13f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 14 16:42:50 2022 +0200 + + Add `declearn.main` to load-time imports. + +[33mcommit b7200729a8b0404bd99e5133d4dd7cacdac5a2e1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 14 16:41:50 2022 +0200 + + Add optional validation data to `FederatedClient`. + +[33mcommit 10b401b2b1a16d3009aec264c9d8a6ef4b01af67[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 14 14:27:31 2022 +0200 + + Fix `SklearnSGDModel` initialization. + +[33mcommit 0a7d455013982963b35137fa4c63b8c2e3c4867f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 14 13:33:17 2022 +0200 + + Fix various bugs in `InMemoryDataset`. + +[33mcommit 4efea666431cbf5c891b7b6f1f42e9f4629731b8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 14 13:32:43 2022 +0200 + + Fix Yogi optimization module's formula. + +[33mcommit ad5c4e0fd61e2871a5a50c42b5e8502378556f51[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 13 15:27:58 2022 +0200 + + Extend documentation of communication `Client` and `Server`. + +[33mcommit adc08808cd7ff22951427a2e4ea16e76baf807d3[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 13 12:38:11 2022 +0200 + + Remove unrequired `time.sleep` safeguards from `test_main.py`. + +[33mcommit 2b37a4b706ee5616ee617758cfcb2e9cc0396028[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 13 12:30:23 2022 +0200 + + Fix `test_grpc.py` unit tests. + +[33mcommit 4353965a324b65ecc52edbc529a5ab9ca3603d57[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 13 12:14:03 2022 +0200 + + Fix `GrpcClient.register` to catch connection failures. + +[33mcommit 03eb72398ea6794ab0e497fecdf32e35a092f200[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 13 12:13:18 2022 +0200 + + Add `WebsocketsClient` reconnection upon registration failure. + +[33mcommit c81105fb664f696f816bca8844942ef7ba1b80b4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 13 12:12:39 2022 +0200 + + Add 10-seconds reconnect attempts to `WebsocketsClient.start`. + +[33mcommit 104ac195518d98c73eb8f52dff3ee0a6defef6aa[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 13 12:11:18 2022 +0200 + + Expand `Client` start/stop methods' specifications. + +[33mcommit 94db32c6af190255b1584f55644a3111479eb5cd[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 17:12:21 2022 +0200 + + Implement functional tests for declearn's main classes. + +[33mcommit 5c55524e3bad42e69eba642163b6346e8c74e0e5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 16:38:17 2022 +0200 + + Fix `aggregate_data_info` edge case `required_fields=set()`. + +[33mcommit 0ab4c461a33b9be9739b1f55ce6b16023c39c7a5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 13:55:59 2022 +0200 + + Add JSON support for built-in set objects. + +[33mcommit 217553f0600d354687fb5098b56b9a92743d41d3[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 13:51:28 2022 +0200 + + Prevent `InMemoryDataset.classes` from storing `numpy.generic` objects. + +[33mcommit e85d6ba8de6159be7ece5c239bf80a707a795428[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 13:40:09 2022 +0200 + + Remove port shifting from `communication/test_routines.py`. + +[33mcommit 42d1de49be9a131c7dfd841047fac03bf2c7293c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 13:34:11 2022 +0200 + + Improve auxiliary variables' specs in messaging. + +[33mcommit 32f367b0e436fc743c82f04be71c7179186d852d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 13:33:42 2022 +0200 + + Fix auxiliary variables' passing. + +[33mcommit 521faea4bbbfa73acc6411e8ec3bcaf66edcace2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 13:18:03 2022 +0200 + + Fix `FederatedClient.stop_training`. + +[33mcommit 89888ed3884c8cfaf6a8e4713d200e8dfe05237e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 12:57:30 2022 +0200 + + Deploy `EarlyStoppingCriterion` to `FederatedServer`. + +[33mcommit c88577bdf88d9d21ce4e5b6f2d701dc219eb5f4b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 12:33:46 2022 +0200 + + Implement `EarlyStoppingCriterion`. + +[33mcommit fadb322a178e944ff514753f02b2e7aed96aeab5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 12:33:01 2022 +0200 + + Refactor some code into `declearn2.main.utils` submodule. + +[33mcommit 68b1e50bd23d65f6bcd5c3a006cfc6071a4c160b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 12 12:30:44 2022 +0200 + + Improve documentation of FederatedServer data-info parsing code. + +[33mcommit 2ea3dccfdbfa167141b3e305398c12a43af50bb9[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Sep 9 15:32:09 2022 +0200 + + Implement `stop_training` routines in main classes. + +[33mcommit 6b1be7544fbba7c2b3364365af7df2b2af51975d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Sep 9 14:02:08 2022 +0200 + + Fix type-hinting of exchanged model weights. + +[33mcommit f9317e55c67a904bf8145cdc2a9a4043cbf7eee8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Sep 9 13:35:32 2022 +0200 + + Implement functional tests for communication Client/Server use. + +[33mcommit caccedddc3249b7535b3aba03e52db8b0b85e7f4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Sep 9 11:31:23 2022 +0200 + + Implement loss evaluation rounds in main classes. + +[33mcommit 8b8e2ccb574c20abcba9d355a4ff1223d7c76d10[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 8 17:27:18 2022 +0200 + + Fix optimizer auxiliary variables' parsing on server side. + +[33mcommit ac9883e498a2bfb4f74a0ee1dff88452e78cc478[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 8 16:39:13 2022 +0200 + + Improved verbosity of main classes during initialization. + +[33mcommit 7d4c3f25dde6e02f03c91354d8a95ad8fac2a59d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 8 16:38:43 2022 +0200 + + Add `wait_for_clients` arguments to `FederatedServer.run`. + +[33mcommit 516428bb75732aaaa87961089185e658cd6bb306[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 8 16:37:03 2022 +0200 + + Fix `FederatedClient` initialization success reporting. + +[33mcommit 71a85279078d24f839f57896f205c1a1d5642758[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 8 16:36:28 2022 +0200 + + Fix communication messages' de-serialization. + +[33mcommit 6d1200865d7b9431f865376c9b1fe4f7b4da40dc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 8 15:43:32 2022 +0200 + + Add `expose_classes` parameter and attribute to `InMemoryDataset`. + +[33mcommit 762f9fe8c9669e2f116b95f6e6c9b70c36badc6d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Sep 8 15:43:04 2022 +0200 + + Fix `SklearnSGDModel.from_parameters`. + +[33mcommit e3a4954b294cfc0009cf2649f26a1c3d6acae2ac[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 16:47:36 2022 +0200 + + Deploy `Client` revision to `FederatedClient`. + +[33mcommit 12879d84e71f2e8dc5c863bcf80c57bfb9924527[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 16:45:34 2022 +0200 + + Revise and improve communications `Client` API. + + * Modify `Client` in a similar way as `Server`: + - turn into an asynchronous context manager + - make `start` and `stop` methods asynchronous + - get rid of `loop` parameter and attribute + - add `_setup_ssl_context` abstract method to have + the parent class handle children' shared arguments + +[33mcommit 19efade6c6922ce2b9011d33cc5c8b2fb4486625[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 16:29:22 2022 +0200 + + Deploy API revisions to fix `FederatedServer`. + +[33mcommit fae428cd95fff501935bd5985a0ee11aa28cd860[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 16:28:48 2022 +0200 + + Revise and improve communication `Server` API and subclasses. + + [API] + * Make `start` and `stop` methods asynchronous, enabling to get + rid of `self.loop.run_until_complete(...)` calls. + * Turn `Server` classes into asynchronous context-managers, so as to + automate `await server.start()` and `await server.stop()` calls. + * Remove `loop` argument and parameter completely from `Server`. + * Add `_setup_ssl_context` abstract method to `Server` in order to + delegate all shared arguments' processing to super in children + classes. + + [GrpcServer] + * Refactor `MessageBoardServicer` subclass to ease readability. + * Delegate gRPC server creation to `start` method out of API + consistency, and to enable re-using the same `GrpcServer` + object multiple times. + * Make '8765' the default port (as with `WebsocketsServer`), + so that the runtime port-selection becomes a documented but + non-default feature (as it is unpractical for URI sharing). + +[33mcommit b44b1acdbd15bdfc45cce2bcce723a508c9b7b8a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 15:06:15 2022 +0200 + + Fix `declearn.communication.build_server`. + +[33mcommit 5b9ab599363a38376f61089d11b21ac74f69774a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 14:57:18 2022 +0200 + + Implement TorchModel (de)serialization. + + Note: unfortunately, this relies on pickling the model, + which is unsatisfactory from a security perspective but + is the simplest practical way available at the moment. + +[33mcommit 10f9195b27a92c1b76c3629da0c53e1792c2111e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 13:17:07 2022 +0200 + + Avoid `asyncio.get_event_loop()` DeprecationWarning (Py>=3.10). + +[33mcommit 2daf688e90f7c0e981421587b63ceb6c088c8364[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 13:08:31 2022 +0200 + + Fix OptiModule unit tests. + +[33mcommit 305c7c09a0363d057e4918843db33ab754b12ff5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 12:05:03 2022 +0200 + + Add `compute_loss` method to the `Model` API. + +[33mcommit 8a9808949ef9b619f93c5dbbf2951ca7fd09c253[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 11:59:30 2022 +0200 + + Implement `TorchModel.compute_loss`. + +[33mcommit c12b25fa57b124bcc25e0c28ee441355ff64a505[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 11:59:12 2022 +0200 + + Implement `TensorflowModel.evaluate`. + +[33mcommit ebcd160616a02680c2d441c87b3e10c2c8762b00[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Sep 7 11:58:45 2022 +0200 + + Ensure proper training/evaluation behaviour is used with TensorFlow. + +[33mcommit 926255830a2b193b6bfa13014974703978c9e4ed[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 6 15:10:05 2022 +0200 + + Improve documentation of FederatedClient. + +[33mcommit cbe33f1f0ae062839ebe028fbb6b0753c47f5a73[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 6 12:50:11 2022 +0200 + + Update dependencies in declearn2 installation files. + +[33mcommit bd3130f831329cb5f0a4e20a0246a779d4d8ed96[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 6 12:20:44 2022 +0200 + + Improve documentation of FederatedServer. + +[33mcommit 4110d2bb7607572de2ea3e13665d2b83a3ddf701[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 6 12:20:23 2022 +0200 + + Enable partial clients' participation in training rounds. + +[33mcommit 406a1cdda8336178ce996e8de72c80c44da53b34[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 5 17:17:49 2022 +0200 + + Modularize clients' training round effort. + +[33mcommit 2e597c4f5b92df67aea0cef669eec638d041a8bb[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 5 16:41:12 2022 +0200 + + [WIP] Revise "main" classes' current rewrite. + +[33mcommit 98bde8718381d7c4cfc6a081df83d06d15215530[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 5 16:40:40 2022 +0200 + + Add `CancelTraining` message class. + +[33mcommit 58c172543b7ba0a61d8bf303d7a7a315ae508db5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 5 15:46:13 2022 +0200 + + Rewrite communication submodule. + +[33mcommit 5dd1883078685d9f6debb37ee429bbd3dd0c5acf[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Sep 5 15:32:56 2022 +0200 + + Fix internal imports in `strategy` submodule. + +[33mcommit 3185243b179677b32dc9c173aaad7de2f55ff15a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 17 18:47:52 2022 +0200 + + [WIP] Start integrating "main" classes. + +[33mcommit 62bb504349f45949443c938b1aecbc1dba58e5e0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 16 18:48:43 2022 +0200 + + Implement (scratched) new `Strategy` API and subclasses. + + Notes: + * This commit has *not* been properly tested yet and will + most likely be patched soon. + * The current API is not to be considered stable~definitive + (although it may be kept for a while in order to finalize + the base re-integration of the main FL classes). + +[33mcommit c3575ab8b4e864d59369f81518d267e6ab284618[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 12 17:42:34 2022 +0200 + + Improve OptiModule documentation. + +[33mcommit b96bba042b816254b48e71ba4e6f972c47b5a33b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 12 17:25:00 2022 +0200 + + Correct Scaffold algorithm correctness. + + * Rewrite local states' update: + - Simplify the formula to remove unrequired terms. + (previous version was correct but less effective) + - Raise in case state is set to be collected while + no optimization steps have been taken (otherwise + aggregation becomes wrong on the server side). + * Correct server-side behaviour: remove undue operation. + - No correction is to be applied on the server side to + the global updates; previous version was wrong. + - Thus the server-side module merely aggregates local + states and sends back information to all clients. + * Correct associated unit tests. + +[33mcommit a8f6e149106ec5ed7071260f5d016149713b65d6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 12 15:27:04 2022 +0200 + + Add `__repr__` methods to Vector subclasses. + +[33mcommit a59fcf1aa349fe3daf21a5d419a4f08a0234dc16[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 12 15:10:17 2022 +0200 + + Added type-registration to Model classes. + +[33mcommit d4a27aaef3eb46e28c01e35af7a268b0b49edd72[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 12 11:48:29 2022 +0200 + + Implemented 'data_info' requirements and initialization in Model API. + + Note: such a mechanism exists in declearn1, which is thereof restored + and expanded thanks to the new `declearn.data_info` module. + +[33mcommit 052acf5b607a2f323b42fc83b669cd2b35859dec[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 12 11:26:46 2022 +0200 + + Add `InputShapeField` data_info specification. + +[33mcommit ee951ec80f0b8cc804d1ec0be9e6a628aa633fda[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 12 09:48:38 2022 +0200 + + Patch some docstrings in `data_info`. + +[33mcommit eb57526f3afe59d784a40900fe78d87b65164d54[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 11 18:17:49 2022 +0200 + + Implement `data_info` module to specify metadata fields. + +[33mcommit adb42ab76cd44bc7d0af1282887edddfc99326fc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 11 15:27:31 2022 +0200 + + Remove unrequired pylint comments. + +[33mcommit 4286a758a2204076da2a6b1f5ed1cf7cd612047a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 11 10:03:36 2022 +0200 + + Fix docstring typos. + +[33mcommit 885a479aef0c40c3e04a2efc6592f6b65cd0c3c5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 11 10:03:10 2022 +0200 + + Split some `test_grpc.py` code into `conftest.py` for re-use. + +[33mcommit 3685f242c3b0dcc29207de19529bcd8a4e0d2f54[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 11 10:02:16 2022 +0200 + + Fix type-registration of communication subclasses. + +[33mcommit 6cef948fd47e6baf1af681c6c2359822cf0a4db2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 10 17:22:58 2022 +0200 + + Add exception in `GrpcClient.ping` when client is stopped. + +[33mcommit 027ee266bbc5ac937b124e8a2194ca64a6414a9a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 10 17:22:22 2022 +0200 + + Add revised tests for low-level gRPC communications. + +[33mcommit cf7333efc2a4dd18c6eaa31eb40e41ee5733a5b3[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 10 13:33:59 2022 +0200 + + Fix SSL setup of `GrpcServer`. + +[33mcommit b9470bd58742982919c3bbff3b7644cd537922f8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 10 11:30:56 2022 +0200 + + Restore `GrpcClient.ping` method. + +[33mcommit 05467ab1a9bac217bbc951c9fd83db13e59e542f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 10 10:51:15 2022 +0200 + + Add `client_names` property to `Server` classes. + +[33mcommit af3a5020882ad35e8daa52b0c415817a6188c1e2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 10 10:39:35 2022 +0200 + + Add client name de-duplication in `WebsocketsServer`. + +[33mcommit d41806daf03bb4507d152dd07cd45ff747f257a6[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 10 10:11:48 2022 +0200 + + Correct `GrpcServer.wait_for_clients`. + + The method previously returned the full `{ip: client_dict}` dict + stored by the dependent service, while the API specifies that it + should return `{name: data_info}`. This commit enforces that. + +[33mcommit 5ef8b9ddd5153f538aa7864be8b733ca81caa03b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 10 10:08:38 2022 +0200 + + Add `send_message` async method to `Server` classes. + + Rationale: the current `broadcast_message` method only enables + sending the _same_ message to all clients, whereas it is often + required to send distinct messages, be it to limit participants + to a training round, or to pass individual auxiliary variables. + +[33mcommit 68dcfa3c7af681aa8084290fa56f249e8d6fa67c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 18:40:27 2022 +0200 + + Enhance communications submodule's docstrings. + +[33mcommit 8affb88adad835f4fc4ff289679dc51e314f5bd0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 18:31:33 2022 +0200 + + Implement `build_client` and `build_server` utils. + +[33mcommit 2eb9d0062915c45c6562e25c035b6cac59ffa3cf[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 18:28:30 2022 +0200 + + Split `communication.api._base.py` into client and server files. + + Note: this does not change _anything_ from the user's perspective + or to imports outside the submodule, as the classes are still + re-exposed at the `api` submodule level. + +[33mcommit e0049dcf73c457766ad2d9593bb00810f1d7f9b2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 17:56:12 2022 +0200 + + Revise gRPC backend code to improve clients' identification. + + * Add client names' aliasing in Service class, enabling client + names' de-duplication (while preserving the initial info). + * Use requests' provenance to identify clients, and retrieve + their associated alias on the server side. + * Remove newly-unrequired 'name' attribute in some messages. + * Note: this is probably not a definitive design, as we might + want to enable clients' address to change and prefer a token- + or key-based authentication and identification method. + +[33mcommit 1e5354e66dfcb58d7b093166bbaa05021be3c857[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 16:52:58 2022 +0200 + + Patch some logger-related code in communication classes. + +[33mcommit 84fa86973022724419b096bfdfb474a1d4a43a09[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 16:51:30 2022 +0200 + + Add `uri` parameter to communication `Server` classes. + +[33mcommit 3bc1252b7ae3e3df38a56c40cfc78af6b0c01433[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 16:39:04 2022 +0200 + + Revise gRPC server-side backend code. + +[33mcommit 3b237e1011695a2df0df351c3486973eb398934a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 16:38:46 2022 +0200 + + Fix `GrpcServer.wait_for_clients` logging. + +[33mcommit 50e1e0f9536c4dae9614e243b302e1cf065dce51[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 16:02:06 2022 +0200 + + Abstract some code into base communication `Client`. + +[33mcommit f5bd3628549449c4e37b4073268aea3b013c5b41[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 15:57:53 2022 +0200 + + Integrate revised `GrpcClient`. + +[33mcommit ae972360094e8dd63644b9644edf128a9cd7ae0e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 15:53:13 2022 +0200 + + Patch gRPC server-side code on minor points. + +[33mcommit 723ebb2f18cfce83de6e934894c97fcd38c89444[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 15:21:30 2022 +0200 + + Integrate revised `WebsocketsClient`. + +[33mcommit 38058ac28b3d480208f8f01c11d11a312f8816f2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 15:20:55 2022 +0200 + + Revise communication `Client` API. + +[33mcommit 0d7554289a9d8a5c7be41a42fc485d01d618ddab[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 15:18:48 2022 +0200 + + Deploy `get_logger` to communication classes. + +[33mcommit 7ebb4201500fe08fa55c2d8239c91d794d16768a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 15:18:11 2022 +0200 + + Implement `get_logger` under `declearn.utils`. + +[33mcommit f65da040b8e46b933eb11924c0d95689f3c90a1b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 12:00:00 2022 +0200 + + Abstract some code into `Server` and harmonize children classes. + +[33mcommit 3c74516e2a082e6819dd0764801c7753ce790273[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 11:58:55 2022 +0200 + + Fix websockets imports tracking and rename WebsocketsServer class. + +[33mcommit 5ba88238bb6efae796af30549dbb650d79a65447[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 9 10:47:21 2022 +0200 + + Improve and harmonize password support in Server classes. + +[33mcommit 6fcccbe2cbcc36145bfb3e65c729d42efa217656[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 5 21:01:50 2022 +0200 + + Integrate revised gRPC server-side code. + +[33mcommit 314418a7ce007554bffa84560b799fa6fd131330[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 5 21:00:15 2022 +0200 + + Revise marginally the previous commit. + +[33mcommit 67ed275de0f2f7bcb4607bcda0953ddb5b611f92[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 5 16:52:56 2022 +0200 + + Start integrating revised communication into declearn2. + +[33mcommit 5fd46ded5c205c5c96de3378acaa23d6bf9deca8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Aug 5 11:25:22 2022 +0200 + + Revise docstring sections' formatting. + +[33mcommit 77ca114359a85dd38fe1b058d5455e333df797c3[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 11:02:32 2022 +0200 + + Add `from_parameters` class constructor to `SklearnSGDModel`. + +[33mcommit c0565275250e536ef3e13a8f6d6d98779b1140ce[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 4 14:58:14 2022 +0200 + + Refactor Model subclasses' test code. + +[33mcommit b7692f960634e0edc7ef0612c0c11cde30ea916b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 4 13:43:05 2022 +0200 + + Temporarily replace 'Self' type annotations in Vector. + + * Self should be the proper way to annotate return types + for Vector that are in fact subclass-dependent so that + they are properly type-checked by static linters. + * However, as of the current (0.971) version of mypy, it + is not yet well-linted, causing a lot of "type: ignore" + comments in code. + * For the moment, we therefore drop Self from Vector base + code (but preserve it in concrete implementations). As + soon as mypy supports Self, this will be changed back. + +[33mcommit 5faabbfddbf939130c69efc0df8205f1caa477cc[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 4 13:22:49 2022 +0200 + + Fix some type annotations in `NumpyVector`. + +[33mcommit 29dabfdc86c438f46634b461f0c6057e5069cdaa[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 4 11:46:24 2022 +0200 + + Fix unit tests' linting issues (code-only changes). + +[33mcommit fb86fdf5bbe34e5bb5251a9242a7c9252946fdbf[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Aug 4 11:30:54 2022 +0200 + + Revise Vector building and serialization API. + + * Replace `Vector.__new__` type-inference trick with `Vector.build` + staticmethod to ease code readability (as well as type checking). + * Extend the behaviour of `register_vector_type`: in addition to the + backing of `Vector.build`, this decorator now registers decorated + classes under the 'Vector' group name, and most importantly adds + JSON (de)serialization support based on the object's `pack` and + `unpack` methods. + * Note: among the three actions taken by `register_vector_type`, + the last one (JSON support) is probably the most desirable. + * Modify models' unit tests to take these changes into account; + the gain in concision in gradients' (de)serialization tests' + code is a direct result from those changes. + +[33mcommit fc7f91334a541c67e2ad9ea3b21591c52ae1ebad[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 19:58:01 2022 +0200 + + Implement unit tests for Scaffold optimization modules. + +[33mcommit 91b916b49ff043e7d77fb866bdb4a95c470a1506[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 19:56:45 2022 +0200 + + Remove Vector serialization from Scaffold modules. + +[33mcommit 99c607df414b7b365aff5efb747aefd59e137142[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 19:31:38 2022 +0200 + + Fix `ScaffoldClientModule` state-update computation. + +[33mcommit 36a154ad5b317e31d610de7f5ad7a75e09ee02ec[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 19:30:09 2022 +0200 + + Fix `ScaffoldServerModule.collect_aux_var`. + +[33mcommit 403a7a848f33ea99c00c5ceb2149133b94f5ac8e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 19:28:34 2022 +0200 + + Fix un-optimized equality checks in Vector subclasses. + +[33mcommit 56b94b231e73f323395d13254607ecaaddc6d644[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 18:32:51 2022 +0200 + + Replace `Vector` (de)serialize methods with (un)pack ones. + + * The rationale behind this change is to delegate serialization + to classes that handle Vector instances while providing a way + to define Vector-subclass-specific conversion to/from a JSON- + serializable format (e.g. numpy thanks to declearn utils). + * This is not entirely satisfactory though and will probably be + further modified soon (before integration in declearn). + * Another point to alter is the "register_vector_type" function, + which could be removed in favor of "register_type" (in which + case (un)pack might become (get|from)_config, unless overall + serialization utils get revised as well). + +[33mcommit ab26a1ec368c215039a177528561ce21b508c47f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 18:10:19 2022 +0200 + + Refactor and correct Vector backend code. + + * Expose additionnal public and private methods at Vector + base class level. + * Add private-attributes-based operator overriding, using + stdlib `operator` to provide working dunders at Vector. + * Use Self type-hint and `type(self)` statements to make + code both abstract and applicable. Note: mypy does not + properly type-check 'Self' yet but should do so in the + upcoming months as it is integrated into Python 3.11. + * Remove a lot of redundant code in children classes. + +[33mcommit e03047ea437304a01e95d2fc7fa59141b99bd1d8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 14:37:19 2022 +0200 + + Implement generic unit tests for `OptiModule` subclasses. + +[33mcommit 53e52b5738b3a4c31549a1b85ed7fdcff2a69011[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 14:28:15 2022 +0200 + + Correct `ScaffoldClientModule.collect_aux_var` behaviour. + +[33mcommit 33dcd88a907f77e98c7eaba533cadea2e03cec85[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 11:33:58 2022 +0200 + + Implement unit tests for `utils._serialize` submodule. + +[33mcommit 8b3d45cc9e22d42a5833df8eab6562810efdce0d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 10:22:07 2022 +0200 + + Add `get_config` / `from_config` methods to `Optimizer`. + +[33mcommit 8292dcd44458c6615b5416789d54d7ce03c7937b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 10:21:39 2022 +0200 + + Improve `declearn.utils._serialize` tools' documentation. + +[33mcommit 371a566ee6c1e2ad977a6be9edb2fa0ded8fea5f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Aug 3 10:21:16 2022 +0200 + + Add support for dict inputs to `deserialize_object`. + +[33mcommit cb8a55210f41c6c4f87eef52f37b3b848b51ae73[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 17:58:30 2022 +0200 + + Deployed config-based (de)serialization to `OptiModule` classes. + +[33mcommit f6bb094b7820a367eadc7ddcc47dffe3da76e88e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 17:40:39 2022 +0200 + + Silenced tensorflow-import warnings in unit tests. + +[33mcommit 75e09c3364846e8ea03de86e8c52d28793cb29de[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 17:37:13 2022 +0200 + + Implement unit tests for `utils._json` submodule. + +[33mcommit ccaf835d9feca2e14a05e2e6155608e1e289ee30[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 16:39:49 2022 +0200 + + Implement unit tests for `utils._register` submodule. + +[33mcommit fdea21267e0de114032f7f998efcc598fbd90d00[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 16:00:43 2022 +0200 + + Implement (de)serialization tools for `SupportsConfig` objects. + +[33mcommit 24eafb34b5f70ed0ff4f7b7b2998bcdde6f429e4[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 15:59:32 2022 +0200 + + Repackage and register numpy-arrays-(un)packing utils. + + * Changes to the private import structure do not alter + users' access to the implemented functions. + * numpy arrays are now supported in JSON dump/load calls + provided the proper functions are used a object hooks. + +[33mcommit 76a9d49b1cf55eee17327633b73bc79bac07eae2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 15:55:33 2022 +0200 + + Implement JSON (un)packing utils. + + * Define and make public `add_json_support` to enable adding support + for arbitrary types' (un)packing in JSON load/dump calls. + * Define and make public `json_pack` and `json_unpack` functions, + which are to be deployed in declearn's backend JSON load/dump + calls and ensure registered (un)packing protocols are used. + +[33mcommit ad6c650ebc15b3b0c8fb8ecf8d2ba7e59ac7954b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 12:02:15 2022 +0200 + + Reorder `from typing_extensions import ...` statements. + + Although it provides with 'future' elements from the `typing` standard + library, `typing_extensions` is a third-party package. Statements were + therefore re-ordered to abide by PEP-8. + +[33mcommit 202b4f6e535176281884dbb19e592330160d739c[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 11:56:44 2022 +0200 + + Implement `SupportsConfig` Protocol-type. + +[33mcommit ba7c798d91b4f9abf4a6074acf6953835a4d3290[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 11:45:16 2022 +0200 + + Update installation files. + + * pyproject.toml is now compatible with setuptools' + toml-only installation; in the future, setup.cfg + (and legacy setup.py) may therefore be removed. + * toml-only install with setuptools does not (yet) + support editable install though, hence setup.cfg + is preserved for now (for declearn2 installation) + * At the moment, installing declearn2 without the + installation file for declearn interferring is + somewhat difficult; this will be resolved when + declearn2 revisions are integrated into the main + package. + +[33mcommit 0347605a7ce07002684265d4df83aac587738bfe[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 10:49:28 2022 +0200 + + Fix tests' compatibility with Python 3.7. + +[33mcommit 2a0c5167c6aa5f674940cd6a1f8325eed1285d08[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Aug 2 10:48:56 2022 +0200 + + Correct setup.cfg + +[33mcommit 1c8d1129afe7ccb0f27a1b91e4a7572186f07e19[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 1 18:03:47 2022 +0200 + + Implement reverse-lookup types-registration utils. + +[33mcommit 7b7e8ced71643ec5755206d7d7fbce04eb362b95[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 1 17:14:11 2022 +0200 + + Deploy types-registration to OptiModule classes. + +[33mcommit 8e980649ea1b68fa6bfa78ff5f20fb5639d80682[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 1 17:10:36 2022 +0200 + + Implement types-registration utils. + +[33mcommit a29a7053a5250629a381eb27b2e26ac7dabdae8a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 1 16:59:56 2022 +0200 + + Refactor `utils` submodule into a folder structure. + +[33mcommit 0a675009fc8ed0f675748ac960217e55de046c5b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 1 16:45:42 2022 +0200 + + Improve docstring formatting of some optimizer modules. + +[33mcommit 09020dc64fd1b5c7a9182ba5bcaf2709c046ad3d[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 1 16:42:54 2022 +0200 + + Update main submodules' import rules. + +[33mcommit 2dfba8e9aceca550c6f0e6bcb61248a75fd4a9b5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 1 16:41:34 2022 +0200 + + Implement `Optimizer` API and base class. + +[33mcommit 40aea29075e41b1612f2806efe8668ab49935e2e[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 1 16:41:14 2022 +0200 + + Improve and document `OptiModule` API. + +[33mcommit 03e3cc76706e2fd0f22496abc6b10ada3f28e495[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 1 14:39:14 2022 +0200 + + Implement SCAFFOLD as a pair of `OptiModule` classes. + + Note: OptiModule and overall Optimizer APIs + need further consolidation for SCAFFOLD to + be effectively working, but the core of the + algorithm and its documentation are here. + +[33mcommit 8cfda044ad6ea5c590d46758d35526e96d647a28[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Mon Aug 1 14:34:53 2022 +0200 + + Trivial changes to backend optimizer modules' files. + +[33mcommit f3b475b156c3ba365d8fdc655a3543ca91e0d5ef[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 17:30:09 2022 +0200 + + Repackage some code into `declearn.optimizer.modules`. + +[33mcommit cac92d9ae2df1c4676868408f64686984df46c4f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 16:37:00 2022 +0200 + + Implement PyTorch unit tests. + + Note: the tested neural network architectures + and declearn functionalities are the same for + PyTorch and TensorFlow save for features that + are still being implemented. + +[33mcommit 587cbc0010966b059fc2893b7ab9b50d8ae94d06[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 16:35:36 2022 +0200 + + Alter TensorFlow unit tests marginally. + +[33mcommit c9be2facea395d3351249c47eb2e7e7274b77b65[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 16:35:17 2022 +0200 + + Fix `TorchModel`'s handling of numpy inputs. + +[33mcommit b62af968dd520e77e517112f4ab0e3ba708856ff[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 16:34:52 2022 +0200 + + Fix `TorchModel.apply_updates`. + +[33mcommit afd659a3fff476b251d0716f05d951ebb8d189f2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 16:34:33 2022 +0200 + + Fix `TorchModel` get/set weights. + +[33mcommit dc84469ecb33d5b90d3003c3c0bd8a9ca34bc8b7[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 16:34:00 2022 +0200 + + Fix `TorchVector.deserialize` warning. + +[33mcommit eec7f413317dd1fef0fb6b3b61f6d2efcf784877[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 14:41:04 2022 +0200 + + Add NumpyVector gradients (de)serialization unit test. + +[33mcommit ff28fd40dfe694bfc91a13c7e724eaa89b06fcf0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 14:40:45 2022 +0200 + + Add `TensorflowModel.compute_loss`. + +[33mcommit a764735f86d8b5b3542d1fbd64b9ae33ec7b8a00[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 13:29:26 2022 +0200 + + Implement unit tests for TensorflowModel (and thus TensorflowVector). + +[33mcommit 9ded427582535aa2853645cc6128befb820114d8[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 13:28:40 2022 +0200 + + Harmonize `apply_updates` formula between SklearnSGD and Tensorflow. + +[33mcommit da39226f7461983172f31967eb4c395ae965b5c5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 13:28:08 2022 +0200 + + Add numpy-inputs support for `TensorflowModel`. + +[33mcommit f46c16259389c0edf2014db867ec9ea05b5e8d32[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 13:27:04 2022 +0200 + + Add full support for `tf.IndexedSlices` in `TensorflowVector`. + +[33mcommit d2f0754ad2c54e27bd58b0c09fc2030a34f9d4d9[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 10:57:23 2022 +0200 + + Improved SklearnSGD tests' documentation. + +[33mcommit 9bb0ef2a1c0deaa22e0d841ed8f4ddacf580f1d3[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 10:26:59 2022 +0200 + + Refactored SklearnSGD tests to make them unitary. + +[33mcommit fa22131ee2bede0391410a1de257df01c165faab[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Fri Jul 29 10:26:14 2022 +0200 + + Improved SklearnSGD test parametrization. + +[33mcommit e3f530f130518fe3c4d4607436acc794e9976810[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 28 16:52:10 2022 +0200 + + Lighten optimization algorithms' documentation. + +[33mcommit 5d354188be017148beb87c72e88f1222c77335c1[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 28 16:51:15 2022 +0200 + + Turn off the automatic import of `tensorflow` and `torch` submodules. + +[33mcommit 44b6215f059a562624b5ed5903e88a2e4ffcf511[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 28 16:50:59 2022 +0200 + + Rename `SklearnDataset` to `InMemoryDataset`. + +[33mcommit 2bb61b785373e1001ea3ec36d4c8b80daf668171[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 28 16:50:49 2022 +0200 + + Implement unit tests for `SklearnSGDModel`. + +[33mcommit e1bbe5050b3091bff0c192c06b1ef755a326fbf2[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 28 14:35:02 2022 +0200 + + Fix `SklearnSGD` (de)serialization and classifier initialization. + +[33mcommit 9b867d01c6f521d324dfeb0e4cc7e3844cd6d1a7[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 28 11:31:28 2022 +0200 + + Add updated installation files for declearn2. + + * Use pyproject.toml / setup.cfg files, as `python setup.py install` + has been deprecated for some time now. + * For now, install `declearn2` rather than `declearn` for revised API + testing purposes. + * Note that as `setup.py` exists, it will have side effects on the + installation. This will be resolved once revisions are merged into + the actual library. + +[33mcommit 337dc951d885d8c4f94c5deaeffc4423354781e0[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 28 11:26:05 2022 +0200 + + Revise data batch specification and deploy new `Batch` type-hint alias. + + * Change the specification of data batches in the `Dataset` and `Model` + APIs: a batch is now a (x, y, w) tuple, where y and w may be None. + * As a side-effect, remove some boilerplate code and set `unpack_batch` + util for future garbage collection as it should now be useless. + * Implement a `Batch` type-hinting alias to ease code readability. + * Place the latter in a new `typing` submodule (as is done in numpy). + +[33mcommit bf6bbef2ba15f323d3410858f6e6c75743c4444b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Thu Jul 28 11:16:23 2022 +0200 + + Add sample_weights support to `SklearnDataset`. + +[33mcommit d992051b35634d3ca6960c0f2ace40750b667965[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 27 17:54:40 2022 +0200 + + Implement `SklearnSGDModel.compute_loss`. + +[33mcommit d3ba4c56e8d0ebed91366eb7d5eba16577c4f086[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 27 17:53:57 2022 +0200 + + Fix SklearnSGDModel for regression models. + +[33mcommit 8f55af2913ba7776b6e94b87de8f078b36601b35[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 27 16:13:00 2022 +0200 + + Fix SklearnSGDModel for classifier models. + +[33mcommit 1b30b51c7eb7561701534b2b856fb0e041a8406f[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 27 15:00:20 2022 +0200 + + Correct TorchVector deserialization. + +[33mcommit e4c6ecc1de23abeb89d2b414a22bb82eb3169548[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 27 15:00:02 2022 +0200 + + Improve Vector subclasses' minimum and maximum methods. + +[33mcommit 454f93268c308b124bcceb6824374f390c37133b[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 27 13:46:27 2022 +0200 + + [WIP] Scratch optimizers' modular implementation. + +[33mcommit 6ed543704a8d9fc7a55930fae02b399a3bfb1f4a[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 27 13:29:36 2022 +0200 + + Scratch the implementation of Dataset API. + +[33mcommit fbd3d397604f8b5079780803b48389496ed78332[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 27 13:27:58 2022 +0200 + + Implement PyTorch Model and Vector interfaces. + +[33mcommit 6e3230a6cb9618cd7c0b3e3a4ff89ab97c44feee[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 27 13:27:40 2022 +0200 + + Implement Tensorflow Model and Vector interfaces. + +[33mcommit c581633fc83732010ef82534d9dc8b221e646cd5[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Wed Jul 27 13:27:11 2022 +0200 + + Rewrite SklearnSGDModel. + + * Made a single class to wrap either a classifier + or regressor model. + * Abided by the design implemented at Model level. + * Note: classifier might need additional work for + proper initialization. + +[33mcommit d4f10c0c5a1b90d559fb480a6a45f66a214b1cad[m +Author: Paul Andrey <paul.andrey@inria.fr> +Date: Tue Sep 20 10:58:45 2022 +0200 + + Rewrite Model and Vector API code. + + * Changed Vector to be a container for multiple + data structures by design. + * Skimmed and type-hinted Model API. + * Implemented generic NumpyVector container. + * Added (de)serialization functionalities to + the Vector API and its numpy implementation. -- GitLab