Skip to content

Commit a7ef8f6

Browse files
authored
Update Github README to match wiki. (#35)
1 parent 3315fa2 commit a7ef8f6

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

README.md

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,37 +40,35 @@ See [License](LICENSE) in the project root for license information.
4040

4141
### Extreme Scale
4242
DuaLip is specifically developed to tackle problems arising in web applications that usually have hundreds of millions of users
43-
and millions of items, pushing the number of optimization variables into the trillions range (if not more). It uses a dual
43+
and millions of items, pushing the number of optimization variables in the trillions range (if not more). It uses a dual
4444
decomposition technique to be able to scale to such large problems. For details and a wide range of applications, see [Ramanath et. al. (2021)](https://arxiv.org/pdf/2103.05277.pdf) and [Basu et. al. (2020)](http://proceedings.mlr.press/v119/basu20a/basu20a.pdf).
4545

4646
### Parallelism
47-
We support extreme-scale parallelism in our DuaLip solver, which can solve tens of millions of small separate LPs simultaneously. There are arising applications like personalized constrained optimization in recommender systems, which require adding personalized constraints for each unique user. In this case, each LP is dedicated for each user and only contains a small number of decision variables at per user level. Our parallel version of DuaLip can enable solving tens of millions of separate small LPs for all different users in parallel.
47+
We support extreme-scale parallelism in our DuaLip solver, which can solve tens of millions of small separate LPs simultaneously. Such problems arise in applications like personalized constrained optimization in recommender systems which have personalized constraints for each unique user. In this case, each LP is dedicated to each user and only contains a small number of decision variables. Our parallel version of DuaLip can solve tens of millions of separate small LPs for all different users in parallel.
4848

4949
### Efficient
50-
Although we follow first-order gradient methods to solve the problem, we implement several highly efficient algorithms
50+
Although we use well-known first-order gradient methods to solve the problem, we implement several highly efficient algorithms
5151
for each of the component steps. This allows us to scale up 20x over a naive
5252
implementation. Please see [Ramanath et. al. (2021)](https://arxiv.org/pdf/2103.05277.pdf) for a comparative study.
5353

5454
### Modular Design
5555
In our implementation, any problem can be formulated through a highly modular approach.
56-
* `solver`: We begin by choosing a first-order optimization solver. We currently support [Proximal Gradient Ascent](https://en.wikipedia.org/wiki/Proximal_gradient_method),
57-
[Accelerated Gradient Ascent](https://www.ceremade.dauphine.fr/~carlier/FISTA), and [LBFGS-B](https://en.wikipedia.org/wiki/Limited-memory_BFGS).
58-
* `projectionType`: We implement several very efficient projection algorithms to allow for the wide class of constraint
56+
* `solver`: We begin by choosing a first-order optimization solver. We currently support
57+
[Accelerated Gradient Ascent](https://www.ceremade.dauphine.fr/~carlier/FISTA), [LBFGS](https://en.wikipedia.org/wiki/Limited-memory_BFGS) and [LBFGS-B](https://en.wikipedia.org/wiki/Limited-memory_BFGS).
58+
* `projectionType`: We implement several very efficient projection algorithms to allow for a wide class of constraint
5959
sets `C_i`.
6060

6161
Each of these components is highly flexible and can be easily customized to add new solvers, or new types of projections
6262
for different constraints sets `C_i`. New formulations can also be added by appropriately stitching together these different components.
63-
6463

6564
### Detects Infeasibility
66-
We have incorporated simple checks on infeasibility (see Appendix D of [our paper](https://arxiv.org/abs/2103.05277)). This helps the end user to appropriately tweak their problem space.
65+
We have incorporated simple checks on infeasibility. This helps the end user to appropriately tweak their problem space.
6766

6867
### Extensive Logging
6968
We have added extensive logging to help users understand whether the solver has converged to a good approximate solution.
7069

7170
### Warm start
72-
We allow the user to input an initial estimate of the dual solution, if she is familiar with the problem space. This
73-
allows for very efficient solving of the overall problem.
71+
We allow the user to input an initial estimate of the dual solution if they have one (e.g., if they have solved a highly related problem before). This can result in very efficient solving of the overall problem.
7472

7573
For more details of these features please see the full [wiki](https://linkedin.github.io/DuaLip/).
7674

@@ -107,7 +105,7 @@ Implementations of some methods in DuaLip were inspired by other open-source lib
107105
aspects of this library. A full list of acknowledgements can be found [here](acknowledgements.md).
108106

109107
## References
110-
DuaLip has been created on the basis of the following research paper. If you cite DuaLip, please use the following:
108+
DuaLip has been created on the basis of the following research papers. If you cite DuaLip, please use the following:
111109
```
112110
@inproceedings{ramanath:21,
113111
author = {Ramanath, Rohan, and Keerthi, Sathiya S. and Basu, Kinjal and Salomatin, Konstantin and Yao, Pan},

docs/index.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ This library was created by `Yao Pan
2424
<https://www.linkedin.com/in/sathiya-keerthi-selvaraj-ba963414/>`_, and `Miao Cheng
2525
<https://www.linkedin.com/in/miaoch/>`_ from LinkedIn.
2626

27-
**Code available on** `GitHub
27+
**Code available on** `GitHub
2828
<https://github.com/linkedin/DuaLip>`_.
2929

3030
Citing DuaLip
@@ -49,7 +49,7 @@ Features
4949
.. glossary::
5050

5151
#. Extreme Scale
52-
DuaLip is specifically developed to tackle problems arising in web-applications that usually have hundreds of millions of users and millions of items, pushing the number of optimization variables in the trillions range (if not more). It uses a dual decomposition technique to be able to scale to such large problems. For the :ref:`Problem Solution <probsolution>` section for details. For a wide range of applications, see `Ramanath et. al. (2021) <https://arxiv.org/abs/2103.05277>`_ and `Basu et. al (2020) <http://proceedings.mlr.press/v119/basu20a/basu20a.pdf>`_.
52+
DuaLip is specifically developed to tackle problems arising in web-applications that usually have hundreds of millions of users and millions of items, pushing the number of optimization variables in the trillions range (if not more). It uses a dual decomposition technique to be able to scale to such large problems. See the :ref:`Problem Solution <probsolution>` section for details. For a wide range of applications, see `Ramanath et. al. (2021) <https://arxiv.org/abs/2103.05277>`_ and `Basu et. al (2020) <http://proceedings.mlr.press/v119/basu20a/basu20a.pdf>`_.
5353

5454
#. Parallelism
5555
We support extreme-scale parallelism in our DuaLip solver, which can solve tens of millions of small separate LPs simultaneously. Such problems arise in applications like personalized constrained optimization in recommender systems which have personalized constraints for each unique user. In this case, each LP is dedicated to one user and only contains a small number of decision variables. Our parallel version of DuaLip can solve tens of millions of separate small LPs for all different users in parallel.
@@ -94,7 +94,7 @@ Tests typically run with the :code:`test` task. If you want to force-run all tes
9494
9595
Using the JAR File
9696
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
97-
Depending on the mode of usage, the built JAR can be deployed as part of an offline data pipeline, depended
97+
Depending on the mode of usage, the built JAR can be deployed as part of an offline data pipeline, depended
9898
upon to build jobs using its APIs, or added to the classpath of a Spark Jupyter notebook or a Spark Shell instance. For example:
9999

100100
.. code:: bash
@@ -157,7 +157,7 @@ DuaLip has been created on the basis of the following research papers. If you ci
157157
}
158158

159159

160-
160+
161161

162162
.. toctree::
163163
:hidden:

0 commit comments

Comments
 (0)