aai-institute / pyDVL

pyDVL is a library of stable implementations of algorithms for data valuation and influence function computation
https://pydvl.org
GNU Lesser General Public License v3.0
89 stars 9 forks source link

Refactor `lc_solve_problem` #584

Open janosg opened 1 month ago

janosg commented 1 month ago

We should refactor pydvl.valuation.methods._solve_least_core_problems.lc_solve_problem

In the discussion of PR #580, @schroedk wrote:

This function is mixing two levels of abstraction, on the one hand it is doing a lot of low level stuff to construct the conditions for the optimization problem and on the other hand, it calls other more low-level functions (solve...). This mixing of levels of abstractions makes it harder to read. Even if a user would not call this function directly, for the developers it is a more difficult task to grasp what is happening (actually the comment helps a lot and in combination with the log messages it seems to me that the related code should be encapsulated in other low-level functions with only one purpose).

Another problem is that all low level functions that are called inside lc_solve_problem have many similar argument (e.g. A_eq, b_eq, A_lb, b_lb). We should bundle those arguments in a simple Object. That way we can pass them around more easily and do some simple compatibility checks during initialization.