diff --git a/docs/release-notes/v2.1.0.md b/docs/release-notes/v2.1.0.md index f73782e58989995dac4765892d7b61fe7c8ed2dc..c520454c6bd8f8cb2d40829392b5ccebd451f866 100644 --- a/docs/release-notes/v2.1.0.md +++ b/docs/release-notes/v2.1.0.md @@ -4,65 +4,65 @@ Released: 02/03/2023 ### New features * Add proper GPU support and device-placement policy utils. - - Add device-placement policy utils: `declearn.utils.DevicePolicy`, - `declearn.utils.get_policy` and `declearn.utils.set_policy`. - - Implement device-placement support in `TorchModel`, `TorchVector`, - `TensorflowModel` and `TensorflowVector`, according to shared API - principles (some of which are abstracted into `Model`). - - Add tests for these features, and automatic running of unit tests - on both CPU and GPU when possible (otherwise, run on CPU only). + - Add device-placement policy utils: `declearn.utils.DevicePolicy`, + `declearn.utils.get_policy` and `declearn.utils.set_policy`. + - Implement device-placement support in `TorchModel`, `TorchVector`, + `TensorflowModel` and `TensorflowVector`, according to shared API + principles (some of which are abstracted into `Model`). + - Add tests for these features, and automatic running of unit tests + on both CPU and GPU when possible (otherwise, run on CPU only). * Add framework-specific `TensorflowOptiModule` and `TorchOptiModule`. - - Enable wrapping framework-specific optimizer objects into a plug-in - that may be used within a declearn `Optimizer` and jointly with any - combination of framework-agnostic plug-ins. - - Add functional tests that verify our implementations of the `Adam`, - `Adagrad` and `RMSprop` optimizers are equivalent to these of the - Tensorflow and Torch frameworks. + - Enable wrapping framework-specific optimizer objects into a plug-in + that may be used within a declearn `Optimizer` and jointly with any + combination of framework-agnostic plug-ins. + - Add functional tests that verify our implementations of the `Adam`, + `Adagrad` and `RMSprop` optimizers are equivalent to these of the + Tensorflow and Torch frameworks. * Add `declearn.metrics.RSquared` metric to compute a regression's R^2. * Fix handling of frozen weights in `TensorflowModel` and `TorchModel`. - - Add `trainable: bool=False` parameter to `Model.get_weights` and - `Model.set_weights` to enable excluding frozen weights from I/O. - - Use `Model.get_weights(trainable=True)` in `Optimizer` methods, - enabling to use loss-regularization `Regularizer` plug-ins and - weight decay with models that have some frozen weights. - - Use `Model.set_weights(trainable=True)` and its counterpart to - remove some unrequired communications and server-side aggregator - and optimizer computations. + - Add `trainable: bool=False` parameter to `Model.get_weights` and + `Model.set_weights` to enable excluding frozen weights from I/O. + - Use `Model.get_weights(trainable=True)` in `Optimizer` methods, + enabling to use loss-regularization `Regularizer` plug-ins and + weight decay with models that have some frozen weights. + - Use `Model.set_weights(trainable=True)` and its counterpart to + remove some unrequired communications and server-side aggregator + and optimizer computations. * Fix handling of `tf.IndexedSlices` structures in `TensorflowVector`. - - Avoid the (mostly silent, depending on tensorflow version) conversion - of `tf.IndexedSlices` row-sparse gradients to a dense tensor every - time it can be avoided. - - Warn about that conversion when it happens (unless the contexts is - known to require it, e.g. as part of noise-addition optimodules). + - Avoid the (mostly silent, depending on tensorflow version) conversion + of `tf.IndexedSlices` row-sparse gradients to a dense tensor every + time it can be avoided. + - Warn about that conversion when it happens (unless the contexts is + known to require it, e.g. as part of noise-addition optimodules). ### Other changes * Change `Scaffold.collect_aux_var` behavior on unused optimodule. - - Previously, the method would raise an error if `run` had not been called. - - Now, a warning is emitted, but a scalar value is returned, that the server- - side plugin processed into ignoring that client. + - Previously, the method would raise an error if `run` had not been called. + - Now, a warning is emitted, but a scalar value is returned, that the server- + side plugin processed into ignoring that client. * Add SAN capabilities to `declearn.test_utils.generate_ssl_certificates`. - - Subject Alternative Names (SAN) enable having an SSL certificate cover - the various IPs and/or domain names of a server. - - The declearn interface requires OpenSSL >=3.0 to use the new parameters. + - Subject Alternative Names (SAN) enable having an SSL certificate cover + the various IPs and/or domain names of a server. + - The declearn interface requires OpenSSL >=3.0 to use the new parameters. * Add a functional convergence test on a toy regression problem. - - Generate a toy regression problem, that requires regularization. - - Run a scikit-learn baseline and a declearn centralized-case one. - - Run a declearn federated learning pipeline, for all frameworks. - - Verify that in all cases, the model converges to a R^2 >= 0.999. + - Generate a toy regression problem, that requires regularization. + - Run a scikit-learn baseline and a declearn centralized-case one. + - Run a declearn federated learning pipeline, for all frameworks. + - Verify that in all cases, the model converges to a R^2 >= 0.999. * Add some assertion utils under `declearn.test_utils` to refactor or enhance some existing and newly-introduced unit and functional tests. ### Other fixes * Fix some newly-identified backend-based issues in `Vector`: - - Enable `NumpyVector + <Tensor>Vector` (previously, only `<Tensor>Vector + - NumpyVector` would work), for all base operations (`+ - / *`). - - Fix scalar tensors' unpacking from serialized `TensorflowVector` and - `TorchVector`. - - Fix `NumpyVector.sum()` resulting in scalars rather than 0-d numpy arrays. - - Improve the documentation of `Vector` and its subclasses. + - Enable `NumpyVector + <Tensor>Vector` (previously, only `<Tensor>Vector + + NumpyVector` would work), for all base operations (`+ - / *`). + - Fix scalar tensors' unpacking from serialized `TensorflowVector` and + `TorchVector`. + - Fix `NumpyVector.sum()` resulting in scalars rather than 0-d numpy arrays. + - Improve the documentation of `Vector` and its subclasses. * Fix optimizer plug-ins' framework-equivalence test. * Fix `pip install declearn` installing network communication third-party dependencies in spite of their being documented (and supported) as optional. - - This fix was backported to release `declearn-2.0.2`. + - This fix was backported to release `declearn-2.0.2`. * Fix the labeling of output gradients in `TensorflowModel`. - - This fix was backported to release `declearn-2.0.1`. + - This fix was backported to release `declearn-2.0.1`. diff --git a/docs/release-notes/v2.2.0.md b/docs/release-notes/v2.2.0.md index 034ef94edc19f35c40fc5c32db00ab9b92ca7595..2aed06515deff9709402468c0677cbbdba8fea70 100644 --- a/docs/release-notes/v2.2.0.md +++ b/docs/release-notes/v2.2.0.md @@ -17,11 +17,13 @@ communications, and any model, dataset and optimization / training / evaluation configuration. `declearn-quickrun` relies on: + - a python code file to specify the model; - a standard (but partly modular) data storage structure; - a TOML config file to specify everything else. It is thought of as: + - a simple entry-point to newcomers, demonstrating what declearn can do with zero to minimal knowledge of the actual Python API; - a nice way to run experiments for research purposes, with minimal setup