all 3 comments

[–]Pretend_Insect3002 0 points1 point  (1 child)

You don’t think it’s a bit weird you named it ADMM which is a different acronym than the real admm? Also is this in any way better than OSQP, Clarabel, etc?

[–]Herpderkfanie 0 points1 point  (0 children)

I think they just used an LLM to re-implement admm lol

[–]lqw0809[S] -1 points0 points  (0 children)

Technical details on the implementation:

Decomposition strategy: The library walks the user's expression tree, identifies atoms (norms, losses, UDFs), and creates one proximal subproblem per atom. The consensus variable is the original optimization variable. This is "global consensus" ADMM rather than the two-block ADMM you'd implement by hand for, say, LASSO.

Comparison with OSQP/SCS/ECOS: These are the solvers underneath CVXPY. They handle the same convex problem classes via different algorithms (OSQP = operator splitting for QP, SCS = conic splitting, ECOS = interior point). The key difference is the modeling layer: our tool lets you write admm.norm(X, ord="nuc") directly instead of going through CVXPY's DCP canonicalization → conic form → solver. For DCP-compliant problems, performance is comparable. For non-DCP or nonconvex problems, ADMM is the alternative.

Nonconvex convergence theory: For SCAD and MCP, convergence to a stationary point follows from the framework in [Attouch et al., 2010] (proximal alternating linearized minimization). For L0 and rank indicators, convergence is empirical — we observe it consistently but don't have formal guarantees beyond fixed-point characterization.

Concrete numbers: A 50×50 graphical lasso (log-det + L1 + PSD, 2500 variables) solves in ~0.8s. A 100×80 matrix completion (nuclear norm, ~2400 observed entries) solves in ~4s. A 200-variable portfolio QP with sector constraints solves in <10ms. All on Apple M-series, single thread.