From cec41d3817067a2eb3031092735347efe4184237 Mon Sep 17 00:00:00 2001 From: Rémi Flamary Date: Fri, 5 Nov 2021 17:13:14 +0100 Subject: [MRG] Release 0.8 (#289) * working on release * test circleci * try again * cleanup circle ci run * add all PR and releant Issues * update doc * thanks idris * update version + add pyproject.toml * test pyproject.toml * revert tests * build wheels * use windows-latest for tests * add tests python 3.10 * build all whels * all versions * build all wheels * build all wheels * cleanup pep8 and minimal acions * forst shot text release * bettr text * stuff * release text updated * update manifest to allow build from source * update doc again * update release --- docs/source/readme.rst | 28 ++++++++-- docs/source/releases.rst | 134 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 156 insertions(+), 6 deletions(-) (limited to 'docs') diff --git a/docs/source/readme.rst b/docs/source/readme.rst index ee32e2b..a8f1bc0 100644 --- a/docs/source/readme.rst +++ b/docs/source/readme.rst @@ -34,6 +34,9 @@ POT provides the following generic OT solvers (links to examples): [21] and unmixing [4]. - Sinkhorn divergence [23] and entropic regularization OT from empirical data. +- Debiased Sinkhorn barycenters `Sinkhorn divergence + barycenter `__ + [37] - `Smooth optimal transport solvers `__ (dual and semi-dual) for KL and squared L2 regularizations [17]. @@ -44,7 +47,8 @@ POT provides the following generic OT solvers (links to examples): distances `__ and `GW barycenters `__ - (exact [13] and regularized [12]) + (exact [13] and regularized [12]), differentiable using gradients + from - `Fused-Gromov-Wasserstein distances solver `__ and `FGW @@ -70,7 +74,8 @@ POT provides the following generic OT solvers (links to examples): (exact [29] and entropic [3] formulations). - `Sliced Wasserstein `__ - [31, 32]. + [31, 32] and Max-sliced Wasserstein [35] that can be used for + gradient flows [36]. - `Several backends `__ for easy use of POT with @@ -278,7 +283,8 @@ The contributors to this library are Rakotomamonjy `__ - `Vayer Titouan `__ (Gromov-Wasserstein -, Fused-Gromov-Wasserstein) -- `Hicham Janati `__ (Unbalanced OT) +- `Hicham Janati `__ (Unbalanced OT, + Debiased barycenters) - `Romain Tavenard `__ (1d Wasserstein) - `Mokhtar Z. Alaya `__ (Screenkhorn) - `Ievgen Redko `__ (Laplacian DA, JCPOT) @@ -501,6 +507,22 @@ gans `__. +In International Conference on Machine Learning (pp. 4104-4113). PMLR. + +[37] Janati, H., Cuturi, M., Gramfort, A. `Debiased sinkhorn +barycenters `__ +Proceedings of the 37th International Conference on Machine Learning, +PMLR 119:4692-4701, 2020 + +[38] C. Vincent-Cuaz, T. Vayer, R. Flamary, M. Corneli, N. Courty, +`Online Graph Dictionary +Learning `__, International +Conference on Machine Learning (ICML), 2021. + .. |PyPI version| image:: https://badge.fury.io/py/POT.svg :target: https://badge.fury.io/py/POT .. |Anaconda Cloud| image:: https://anaconda.org/conda-forge/pot/badges/version.svg diff --git a/docs/source/releases.rst b/docs/source/releases.rst index 5a357f3..aa06105 100644 --- a/docs/source/releases.rst +++ b/docs/source/releases.rst @@ -1,6 +1,132 @@ Releases ======== +0.8.0 +----- + +*November 2021* + +This new stable release introduces several important features. + +First we now have an OpenMP compatible exact ot solver in ``ot.emd``. +The OpenMP version is used when the parameter ``numThreads`` is greater +than one and can lead to nice speedups on multi-core machines. + +| Second we have introduced a backend mechanism that allows to use + standard POT function seamlessly on Numpy, Pytorch and Jax arrays. + Other backends are coming but right now POT can be used seamlessly for + training neural networks in Pytorch. Notably we propose the first + differentiable computation of the exact OT loss with ``ot.emd2`` (can + be differentiated w.r.t. both cost matrix and sample weights), but + also for the classical Sinkhorn loss with ``ot.sinkhorn2``, the + Wasserstein distance in 1D with ``ot.wasserstein_1d``, sliced + Wasserstein with ``ot.sliced_wasserstein_distance`` and + Gromov-Wasserstein with ``ot.gromov_wasserstein2``. Examples of how + this new feature can be used are now available in the documentation + where the Pytorch backend is used to estimate a `minimal Wasserstein + estimator `__, + a `Generative Network + (GAN) `__, + for a `sliced Wasserstein gradient + flow `__ + and `optimizing the Gromov-Wassersein + distance `__. + Note that the Jax backend is still in early development and quite slow + at the moment, we strongly recommend for Jax users to use the `OTT + toolbox `__ when possible. +| As a result of this new feature, the old ``ot.gpu`` submodule is now + deprecated since GPU implementations can be done using GPU arrays on + the torch backends. + +Other novel features include implementation for `Sampled Gromov +Wasserstein and Pointwise Gromov +Wasserstein `__, +Sinkhorn in log space with ``method='sinkhorn_log'``, `Projection Robust +Wasserstein `__, +ans `deviased Sinkorn +barycenters `__. + +This release will also simplify the installation process. We have now a +``pyproject.toml`` that defines the build dependency and POT should now +build even when cython is not installed yet. Also we now provide +pe-compiled wheels for linux ``aarch64`` that is used on Raspberry PI +and android phones and for MacOS on ARM processors. + +Finally POT was accepted for publication in the Journal of Machine +Learning Research (JMLR) open source software track and we ask the POT +users to cite `this +paper `__ from now on. The +documentation has been improved in particular by adding a "Why OT?" +section to the quick start guide and several new examples illustrating +the new features. The documentation now has two version : the stable +version https://pythonot.github.io/ corresponding to the last release +and the master version https://pythonot.github.io/master that +corresponds to the current master branch on GitHub. + +As usual, we want to thank all the POT contributors (now 37 people have +contributed to the toolbox). But for this release we thank in particular +Nathan Cassereau and Kamel Guerda from the AI support team at +`IDRIS `__ for their support to the development of +the backend and OpenMP implementations. + +New features +^^^^^^^^^^^^ + +- OpenMP support for exact OT solvers (PR #260) +- Backend for running POT in numpy/torch + exact solver (PR #249) +- Backend implementation of most functions in ``ot.bregman`` (PR #280) +- Backend implementation of most functions in ``ot.optim`` (PR #282) +- Backend implementation of most functions in ``ot.gromov`` (PR #294, + PR #302) +- Test for arrays of different type and device (CPU/GPU) (PR #304, + #303) +- Implementation of Sinkhorn in log space with + ``method='sinkhorn_log'`` (PR #290) +- Implementation of regularization path for L2 Unbalanced OT (PR #274) +- Implementation of Projection Robust Wasserstein (PR #267) +- Implementation of Debiased Sinkhorn Barycenters (PR #291) +- Implementation of Sampled Gromov Wasserstein and Pointwise Gromov + Wasserstein (PR #275) +- Add ``pyproject.toml`` and build POT without installing cython first + (PR #293) +- Lazy implementation in log space for sinkhorn on samples (PR #259) +- Documentation cleanup (PR #298) +- Two up-to-date documentations `for stable + release `__ and for `master + branch `__. +- Building wheels on ARM for Raspberry PI and smartphones (PR #238) +- Update build wheels to new version and new pythons (PR #236, #253) +- Implementation of sliced Wasserstein distance (Issue #202, PR #203) +- Add minimal build to CI and perform pep8 test separately (PR #210) +- Speedup of tests and return run time (PR #262) +- Add "Why OT" discussion to the documentation (PR #220) +- New introductory example to discrete OT in the documentation (PR + #191) +- Add templates for Issues/PR on Github (PR#181) + +Closed issues +^^^^^^^^^^^^^ + +- Debug Memory leak in GAN example (#254) +- DEbug GPU bug (Issue #284, #287, PR #288) +- set\_gradients method for JAX backend (PR #278) +- Quicker GAN example for CircleCI build (PR #258) +- Better formatting in Readme (PR #234) +- Debug CI tests (PR #240, #241, #242) +- Bug in Partial OT solver dummy points (PR #215) +- Bug when Armijo linesearch (Issue #184, #198, #281, PR #189, #199, + #286) +- Bug Barycenter Sinkhorn (Issue 134, PR #195) +- Infeasible solution in exact OT (Issues #126,#93, PR #217) +- Doc for SUpport Barycenters (Issue #200, PR #201) +- Fix labels transport in BaseTransport (Issue #207, PR #208) +- Bug in ``emd_1d``, non respected bounds (Issue #169, PR #170) +- Removed Python 2.7 support and update codecov file (PR #178) +- Add normalization for WDA and test it (PR #172, #296) +- Cleanup code for new version of ``flake8`` (PR #176) +- Fixed requirements in ``setup.py`` (PR #174) +- Removed specific MacOS flags (PR #175) + 0.7.0 ----- @@ -50,7 +176,7 @@ problems. This release is also the moment to thank all the POT contributors (old and new) for helping making POT such a nice toolbox. A lot of changes -(also in the API) are comming for the next versions. +(also in the API) are coming for the next versions. Features ^^^^^^^^ @@ -72,6 +198,8 @@ Features Closed issues ^^^^^^^^^^^^^ +- Add JMLR paper to teh readme ad Mathieu Blondel to the Acknoledgments + (PR #231, #232) - Bug in Unbalanced OT example (Issue #127) - Clean Cython output when calling setup.py clean (Issue #122) - Various Macosx compilation problems (Issue #113, Issue #118, PR#130) @@ -103,8 +231,8 @@ mathematical problems and research but with the new contributions we now implement algorithms and solvers from 24 scientific papers (listed in the README.md file). New features include a direct implementation of the `empirical Sinkhorn -divergence `__ -, a new efficient (Cython implementation) solver for `EMD in +divergence `__, +a new efficient (Cython implementation) solver for `EMD in 1D `__ and corresponding `Wasserstein 1D `__. -- cgit v1.2.3