Differentiable Optimization API
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- julia
- Lĩnh vực
- backend-api-design
Hướng nghiên cứu
Bắt đầu với phần thảo luận ban đầu trong DiffOpt.jl PR #344 và so sánh các triển khai DiffOpt lpbasis, MadDiff và Moreau được tham chiếu. Xem xét cách chúng xử lý các thuộc tính độ nhạy, các hàm vi phân, reset, tham số, các hàm hệ số, lazy getter và các helper ở cấp JuMP; được xem là hoàn thành khi có một API tối thiểu đã được thống nhất, vì không có tệp đích hoặc test nào được nêu tên.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
What is the minimal API for differentiable optimization?
- Attributes to pass input forward and reverse sensitivities.
- forward inputs sensitivities: are numbers associated with the coefficients of the problem or parameters
- reverse inputs sensitivities: are numbers associated with variables
- functions to perform the diff (analogous to optimize!)
- Attributes to query output forward and reverse sensitivities.
- forward outputs sensitivities: are numbers associated with variables
- reverse outputs sensitivities: are numbers associated with the coefficients of the problem or parameters
Important aspects:
a. A function to reset all input sensitivities is extremely important in practice, as resetting manually is very inefficient.
b. Parameters are extremely useful here. Having used DiffOpt and talking to users it is clear that it is very error-prone to touch coefficients directly (also see: https://arxiv.org/abs/2510.25986). POI is almost essential here.
c. Passing coefficients individually is suboptimal because it does not play well with bridges. Passing coefficient sensitivities as functions is key to making it work smoothly. For getters, Lazy operations are importants as we are usually no interested in absolutely every single coefficient
d. In practice, helper methods for objective sensitivity are a lifesaver.
e. Having a JuMP level API is much more ergonomic than having MOI.set and get all around.
We already have use case for existing solvers:
- https://github.com/jump-dev/DiffOpt.jl/tree/jg/lpbasis (HiGHS, Gurobi, Xpress)
- MadNLP (https://github.com/MadNLP/MadDiff.jl/tree/main/ext/MathOptInterfaceExt)
There is a new solver that proposes to do it as well: - Moreau (https://github.com/jump-dev/DiffOpt.jl/pull/344)
Additional points:
- In DiffOpt, we did not put much effort into sensitivities associated with duals. Attribute-wise, there is nothing special here, but we never have a concrete use case, so we did not venture into it.
Initial discussion in: https://github.com/jump-dev/DiffOpt.jl/pull/344
- Ngôn ngữ chính
- Julia
- Star
- 506
- Fork
- 103
- Merge trung bình
- 1 ngày 1 giờ
- Pull request đã merge (30 ngày)
- 9
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của jump-dev/MathOptInterface.jl
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
jump-dev/MathOptInterface.jl#3113 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bridges] MultirowChange in set_map.jl drops zero coefficientsCó thể đã có người làm @odow đã nhận 7 ngày trước. Đang mở
jump-dev/MathOptInterface.jl#3106 · 2 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Precision loss in Hessian computationCó thể đã có người làm @blegat đã nhận 7 ngày trước. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
jump-dev/MathOptInterface.jl#3104 · 11 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Layer instantiatorĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
jump-dev/MathOptInterface.jl#2986 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Add Batched{S} setĐang mởType: Set Request
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
jump-dev/MathOptInterface.jl#2904 · 15 bình luận · 7 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của jump-dev/MathOptInterface.jl
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 76/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
SciML/OrdinaryDiffEq.jl#4907 ·
Maintainer thường phản hồi trong vòng 4 ngày
-
documentation model-weights
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
FluxML/Metalhead.jl#311 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 83/100
JuliaMath/Polynomials.jl#647 ·