-
Notifications
You must be signed in to change notification settings - Fork 123
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Making Convex.jl DPP compliant #383
Comments
DPP compliance needs adding two more constraints apart from already existing ones. But firstly supporting a parameter type object is imperative 😅 |
Convex doesn’t have such a type yet though we could add one. One thing you can do now is If we added those, what next would we need to differentiate through programs? I haven’t read much about it yet, but it sounds cool. |
A distinction between parameters and variables will suffice, at least on the data structure level. Then we find the derivative in following steps
|
Interesting. To me it sounds like a lot of this will have to be on the MathOptInterface side of things, since that’s what does many of the transformations to result in the final model / problem data. But Convex definitely seems like the right place for the DPP guarantees. |
Is there any timetable to support this feature? :) EDIT: For me, it is a very attractive feature and now I consider that moving to Python for cvxpylayers. |
There is no timetable. @ericphanson has left academia, so Convex.jl is essentially in maintenance mode. Although we can still review and merge PRs if you're interested in contributing. |
Thank you :) |
This can also be closed since done in DiffOpt |
Just for my curiosity, could you refer to any PR, issue, or docs to check this? |
DiffOpt is here: https://github.com/jump-dev/DiffOpt.jl But it'd need some integration work with Convex before I'd close this issue (even if just an example or a blog post to demonstrate how to use it). |
Yeah, I believe this issue is about creating a tracking system to verify DPPness, just like we do for convexity (DCPness). I don’t think DiffOpt does this. (Similar in spirit to #138 (comment) which discusses extending the tracking system to operator convexity and operator concavity.) |
I looked into this a bit, I think there's a few things here:
|
Yes, this is highly non-trivial. I don't know if it is worth pursuing unless we have a serious use/application. In the near term, using cvxpy is probably a better choice. |
I'm not a developer of Convex.jl, but I'd like to share my experience for your information: During my PhD, I wandered around (DiffOpt.jl, Convex.jl, cvxpy) because I needed to use the differentiable optimization. Finally, I just settled down into this for Julia: https://github.com/JuliaDecisionFocusedLearning/ImplicitDifferentiation.jl If DPP is only for differentiable convex optimization, one can just be encouraged to use other tools such as ImplicitDifferentiation.jl. If DPP is for the full support like cvxpy, you guys can refer to cvxpy or develop such functionality here, which seems quite a lot of work. |
Hi Team
I read about the project to enable
JuMP.jl
differentiate solution of problem w.r.t. its parameters.CVXPY implemented this ability and the article accompanying this feature describes a new grammar named DPP, subset of the DCP system.
Does
Convex.jl
defines aparameter
class like a variable or constraint? (I didn't find any implementation like this one)The text was updated successfully, but these errors were encountered: