You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+9-11Lines changed: 9 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -40,37 +40,35 @@ See [License](LICENSE) in the project root for license information.
40
40
41
41
### Extreme Scale
42
42
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
44
44
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).
45
45
46
46
### 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.
48
48
49
49
### 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
51
51
for each of the component steps. This allows us to scale up 20x over a naive
52
52
implementation. Please see [Ramanath et. al. (2021)](https://arxiv.org/pdf/2103.05277.pdf) for a comparative study.
53
53
54
54
### Modular Design
55
55
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
*`projectionType`: We implement several very efficient projection algorithms to allow for a wide class of constraint
59
59
sets `C_i`.
60
60
61
61
Each of these components is highly flexible and can be easily customized to add new solvers, or new types of projections
62
62
for different constraints sets `C_i`. New formulations can also be added by appropriately stitching together these different components.
63
-
64
63
65
64
### 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.
67
66
68
67
### Extensive Logging
69
68
We have added extensive logging to help users understand whether the solver has converged to a good approximate solution.
70
69
71
70
### 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.
74
72
75
73
For more details of these features please see the full [wiki](https://linkedin.github.io/DuaLip/).
76
74
@@ -107,7 +105,7 @@ Implementations of some methods in DuaLip were inspired by other open-source lib
107
105
aspects of this library. A full list of acknowledgements can be found [here](acknowledgements.md).
108
106
109
107
## 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:
111
109
```
112
110
@inproceedings{ramanath:21,
113
111
author = {Ramanath, Rohan, and Keerthi, Sathiya S. and Basu, Kinjal and Salomatin, Konstantin and Yao, Pan},
Copy file name to clipboardExpand all lines: docs/index.rst
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,7 @@ This library was created by `Yao Pan
24
24
<https://www.linkedin.com/in/sathiya-keerthi-selvaraj-ba963414/>`_, and `Miao Cheng
25
25
<https://www.linkedin.com/in/miaoch/>`_ from LinkedIn.
26
26
27
-
**Code available on** `GitHub
27
+
**Code available on** `GitHub
28
28
<https://github.com/linkedin/DuaLip>`_.
29
29
30
30
Citing DuaLip
@@ -49,7 +49,7 @@ Features
49
49
.. glossary::
50
50
51
51
#. 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>`_.
53
53
54
54
#. Parallelism
55
55
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
94
94
95
95
Using the JAR File
96
96
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
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
98
98
upon to build jobs using its APIs, or added to the classpath of a Spark Jupyter notebook or a Spark Shell instance. For example:
99
99
100
100
.. code:: bash
@@ -157,7 +157,7 @@ DuaLip has been created on the basis of the following research papers. If you ci
0 commit comments