Comments (5)
Interesting results! I would be also interested in a benchmark of JAX gmres vs. SciPy gmres.
from jaxopt.
I don't really have anything useful to add, but I found that cg and bicg were superior wrt to stability & much better wrt runtime on large sparse and large sparse "slightly singular" systems- quadratics involving a graph Laplacian.
I didn't have much success preconditioning any of them.
from jaxopt.
Yeah, the reason I'm not using CG is because the EqQP is indefinite -- so I'd have to use CG on the normal system A.T A = A.T b
, which can have a really big condition number.
from jaxopt.
The restart parameter for GMRES is critical. Here's a new plot with restart=625
for this example.
LGMRES is an automated way of finding the restart
parameter, amongst other things).
Perf for GMRES is now on par with LGMRES.
from jaxopt.
@mblondel sorry I didn't get around to that benchmark. I recently found this JAX issue which says that GMRES is much slower on GPU than on CPU for Jax.
I'm now wondering how to wrap the GMRES to move things to CPU, including for the backward pass, if it's used as a submodule in a longer differentiable pipeline.
from jaxopt.
Related Issues (20)
- OSQP solvers with fun set and no init_params have misleading error message HOT 8
- BoxOSQP does not work without equality constraints HOT 5
- Type precision issue in BoxOSQP HOT 10
- Garbage collection issues HOT 1
- Wrong failure diagnostic print outs from `ZoomLineSearch` under `vmap` HOT 3
- Attempted boolean conversion of traced array - for hager-zhang HOT 2
- Expression tree API like CVXPY HOT 3
- Unnecessary recompilation of _while_loop_lax HOT 8
- Add type annotations
- Consider switching to pyproject.toml
- OSQP crashing on unexpected params HOT 3
- `verbose=False` is not working as expected for `NonlinearCG` HOT 1
- Stochastic L-BFGS algorithm implementation
- Stopping condition 'madsen-nielsen' incorrect
- unit test failures on aarch64 linux with scipy 1.12
- `LevenbergMarquardt` implementation does not accept PyTree parameters
- diag(JTJ) can be more efficient
- JAXOPT Projected Gradient
- "invalid escape sequence" warning in `BoxOSQP` docstring
- Error when taking gradient wrt parameters in BoxOSQP
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jaxopt.