Skip to content

Commit 5c075a8

Browse files
authored
Merge pull request #9 from fabinsch/qplayer
add qplayer page
2 parents d9b2834 + 301779f commit 5c075a8

20 files changed

+3330
-0
lines changed

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
Meanwhile, you can still follow us on <a href="https://github.com/Simple-Robotics"> GitHub</a>, <a href="https://www.youtube.com/@SimpleRoboticsOrg"> YouTube</a>, or read some cool papers from the Simple Robotics team:
1010
<ul>
11+
<li><a href="publications/qplayer"> Differentiable QP Solver.</a></li>
1112
<li><a href="publications/differentiable-soft-robotics"> Differentiable Simulator for Soft Robotics.</a></li>
1213
<li><a href="publications/simple-contact-solver"> Contact solver of the Simple simulator.</a></li>
1314
<li><a href="publications/simple-gradients"> Gradients of the Simple simulator.</a></li>

publications/qplayer/index.html

Lines changed: 232 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,232 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8">
5+
<meta name="description" content="Differentiable QP Solver">
6+
<meta name="keywords" content="Augmented Lagrangian, Quadratic Programming, Machine Learning, Optimization Layers, Differentiable Optimization">
7+
<meta name="viewport" content="width=device-width, initial-scale=1">
8+
<title>QPLayer</title>
9+
10+
<link href="https://fonts.googleapis.com/css?family=Google+Sans|Noto+Sans|Castoro" rel="stylesheet">
11+
12+
<link rel="stylesheet" href="./static/css/bulma.min.css">
13+
<link rel="stylesheet" href="./static/css/bulma-carousel.min.css">
14+
<link rel="stylesheet" href="./static/css/bulma-slider.min.css">
15+
<link rel="stylesheet" href="./static/css/fontawesome.all.min.css">
16+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css">
17+
<link rel="stylesheet" href="./static/css/index.css">
18+
<link rel="icon" href="./static/images/favicon.svg">
19+
20+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
21+
<script defer src="./static/js/fontawesome.all.min.js"></script>
22+
<script src="./static/js/bulma-carousel.min.js"></script>
23+
<script src="./static/js/bulma-slider.min.js"></script>
24+
<script src="./static/js/index.js"></script>
25+
</head>
26+
<body>
27+
28+
<nav class="navbar" role="navigation" aria-label="main navigation">
29+
<div class="navbar-brand">
30+
<a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false">
31+
<span aria-hidden="true"></span>
32+
<span aria-hidden="true"></span>
33+
<span aria-hidden="true"></span>
34+
</a>
35+
</div>
36+
<div class="navbar-menu">
37+
<div class="navbar-start" style="flex-grow: 1; justify-content: center;">
38+
<a class="navbar-item" href="https://simple-robotics.github.io">
39+
<span class="icon">
40+
<i class="fas fa-home"></i>
41+
</span>
42+
</a>
43+
44+
</div>
45+
</nav>
46+
47+
<section class="hero">
48+
<div class="hero-body">
49+
<div class="container is-max-desktop">
50+
<div class="columns is-centered">
51+
<div class="column has-text-centered">
52+
<h1 class="title is-1 publication-title">Leveraging Augmented-Lagrangian Techniques for Differentiating Over Infeasible Quadratic Programs in Machine Learning</h1>
53+
<div class="is-size-5 publication-authors">
54+
<span class="author-block">
55+
<a href="https://bambade.github.io">Antoine Bambade</a><sup>*</sup>,</span>
56+
<span class="author-block">
57+
<a href="https://fabinsch.github.io/">Fabian Schramm</a>,</span>
58+
<span class="author-block">
59+
<a href="https://adrientaylor.github.io">Adrien Taylor</a>,</span>
60+
<span class="author-block">
61+
<a href="https://jcarpent.github.io">Justin Carpentier</a></span>
62+
</div>
63+
64+
<div class="is-size-5 publication-authors">
65+
<span class="author-block"><sup>*</sup>Inria - Département d’Informatique de l'École normale supérieure, PSL Research University, France.</span>
66+
</div>
67+
68+
<div class="column has-text-centered">
69+
<div class="publication-links">
70+
<!-- PDF Link. -->
71+
<span class="link-block">
72+
<a href="./static/paper/qplayer.pdf"
73+
class="external-link button is-normal is-rounded is-dark">
74+
<span class="icon">
75+
<i class="fas fa-file-pdf"></i>
76+
</span>
77+
<span>Paper</span>
78+
</a>
79+
</span>
80+
<span class="link-block">
81+
<a href="https://hal.science/hal-04133055"
82+
class="external-link button is-normal is-rounded is-dark">
83+
<span class="icon">
84+
<i class="fas fa-globe-europe"></i>
85+
</span>
86+
<span>HAL</span>
87+
</a>
88+
</span>
89+
90+
<!-- Code Link. -->
91+
<span class="link-block">
92+
<a href="https://github.com/simple-robotics/proxsuite"
93+
class="external-link button is-normal is-rounded is-dark">
94+
<span class="icon">
95+
<i class="fab fa-github"></i>
96+
</span>
97+
<span>Code</span>
98+
</a>
99+
</span>
100+
</div>
101+
</div>
102+
</div>
103+
</div>
104+
</div>
105+
</div>
106+
</section>
107+
108+
<section class="section">
109+
<div class="container is-max-desktop">
110+
<!-- Abstract. -->
111+
<div class="columns is-centered has-text-centered">
112+
<div class="column is-four-fifths">
113+
<h2 class="title is-3">Abstract</h2>
114+
<div class="content has-text-justified">
115+
Optimization layers within neural network architectures have become increasingly popular for their ability to solve a wide range of machine learning tasks and to model domain-specific knowledge. However, designing optimization layers requires careful consideration as the underlying optimization problems might be infeasible during training. Motivated by applications in learning, control and robotics, this work focuses on convex quadratic programming (QP) layers. The specific structure of this type of optimization layer can be efficiently exploited for faster computations while still allowing rich modeling capabilities. We leverage primal-dual augmented Lagrangian techniques for computing derivatives of both feasible and infeasible QP solutions. More precisely, we propose a unified approach that tackles the differentiability of the closest feasible QP solutions in a classical ℓ2 sense. We then harness this approach to enrich the expressive capabilities of existing QP layers. More precisely, we show how differentiating through infeasible QPs during training enables to drive towards feasibility at test time a new range of QP layers. These layers notably demonstrate superior predictive performance in some conventional learning tasks. Additionally, we present alternative formulations that enhance numerical robustness, speed, and accuracy for training such layers. Along with these contributions, we provide an open-source C++ software package called QPLayer for differentiating feasible and infeasible convex QPs and which can be interfaced with modern learning frameworks.
116+
117+
<div class="publication-image">
118+
<img src="./static/images/qplayer-model.png" alt="QPLayer" style="width:100%">
119+
</div>
120+
121+
</div>
122+
</div>
123+
</div>
124+
<!--/ Abstract. -->
125+
126+
<!-- Results. -->
127+
<div class="columns is-centered has-text-centered">
128+
<div class="column is-max-desktop">
129+
<h2 class="title is-3">Results</h2>
130+
<div class="content">
131+
<p>
132+
Our backward mode differentiation of convex QP layers has been implemented in C++. We refer to
133+
it as QPLayer in what follows. Our code leverages the primal-dual augmented Lagrangian solver
134+
ProxQP (Bambade et al., 2022), also written in C++ as its internal QP solver. This section illustrates
135+
through a classic Sudoku learning task that QPLayer allows relaxing primal feasibility constraints,
136+
thereby enabling the training of simplified layers.
137+
</p>
138+
</div>
139+
<div class="columns is-centered">
140+
<div class="column">
141+
<div class="content">
142+
<img src="./static/images/dl-optlayer.png" alt="Sudoku Plot" style="width:100%">
143+
<p>Figure 1: Deep learning paradigm for Sudoku solving task.</p>
144+
</div>
145+
</div>
146+
</div>
147+
<div class="columns is-centered">
148+
<div class="column">
149+
<div class="content">
150+
<img src="./static/images/loss-plot.png" alt="Loss Plot" style="width:100%">
151+
<p>Figure 2: Test MSE loss of QPLayer, OptNet, QPLayer-learn A, and OptNet-learn A specialized for learning A. It includes Sudoku Ax = 1 violation.</p>
152+
</div>
153+
</div>
154+
</div>
155+
<div class="columns is-centered">
156+
<div class="column">
157+
<div class="content">
158+
<img src="./static/images/err-plot.png" alt="Error Plot" style="width:100%">
159+
<p>Figure 3: Test prediction errors over 1000 puzzles of OptNet, QPLayer, QPLayer-learn A and OptNet-learn A specialized for learning A.</p>
160+
</div>
161+
</div>
162+
</div>
163+
</div>
164+
</div>
165+
<!--/ Results. -->
166+
</section>
167+
168+
169+
<section class="section">
170+
<div class="container is-max-desktop">
171+
172+
<!-- Concurrent Work. -->
173+
<div class="columns is-centered">
174+
<div class="column is-full-width">
175+
<h2 class="title is-3">Related Links</h2>
176+
177+
<div class="content has-text-justified">
178+
This work relies on <a
179+
href="https://github.com/simple-robotics/proxsuite">Proxsuite</a> and has been integrated as PyTorch Module with Proxsuite.
180+
</div>
181+
<div class="publication-image">
182+
<p>Here is a code example showing how to easily use QPLayer in PyTorch:</p>
183+
<img src="./static/images/code-example.png" alt="QPLayer" style="width:100%">
184+
</div>
185+
186+
</div>
187+
</div>
188+
<!--/ Concurrent Work. -->
189+
190+
</div>
191+
</section>
192+
193+
194+
<section class="section" id="BibTeX">
195+
<div class="container is-max-desktop content">
196+
<h2 class="title">BibTeX</h2>
197+
<pre><code>@article{bambade2024augmented,
198+
author = {Bambade, Antoine and Schramm, Fabian and Taylor, Adrien and Carpentier, Justin},
199+
title = {Leveraging Augmented-Lagrangian Techniques for Differentiating Over Infeasible Quadratic Programs in Machine Learning},
200+
journal = {Twelfth International Conference on Learning Representations (ICLR)},
201+
year = {2024},
202+
}</code></pre>
203+
</div>
204+
</section>
205+
206+
<footer class="footer">
207+
<div class="container">
208+
<div class="content has-text-centered">
209+
<a class="icon-link" href="./static/paper/qplayer.pdf">
210+
<i class="fas fa-file-pdf"></i>
211+
</a>
212+
<a class="icon-link" href="https://github.com/simple-robotics/proxsuite" class="external-link" disabled>
213+
<i class="fab fa-github"></i>
214+
</a>
215+
</div>
216+
<div class="columns is-centered">
217+
<div class="column is-8">
218+
<div class="content">
219+
<p>
220+
This website is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
221+
</p>
222+
<p>
223+
We thank <a href="https://github.com/nerfies/nerfies.github.io">Nerfies</a> for creating the template of this webpage. You are free to borrow the <a href="https://github.com/simple-robotics.github.io/publications/simple-gradients">source code</a>, we just ask that you link back to the <a href="https://github.com/nerfies/nerfies.github.io">Nerfies</a> page in the footer.
224+
</p>
225+
</div>
226+
</div>
227+
</div>
228+
</div>
229+
</footer>
230+
231+
</body>
232+
</html>

publications/qplayer/static/css/bulma-carousel.min.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)