SciML / AutoOptimize.jl

Automatic optimization and parallelization for Scientific Machine Learning (SciML)
https://benchmarks.sciml.ai/
MIT License
78 stars 6 forks source link

Hyper AutoOptimize #12

Open kanav99 opened 4 years ago

kanav99 commented 4 years ago

What would be the best strategy for finding the right estimate of time to Hyper AutoOptimize? Should we perform a single step and benchmark the time taken and use it as a quantity for what is best? Also would the greedy approach do? For eg we optimize weather we want to use autodiff or not and weather we want to use GPU or not. We can find this out in 2 ways -

  1. Check if it is faster with AD or not with GPU turned off. Then if it is faster with AD, we try GPU with AD. For n parameters, we try 2n configurations
  2. We check every configuration i.e. 2^n
ChrisRackauckas commented 4 years ago

What would be the best strategy for finding the right estimate of time to Hyper AutoOptimize? Should we perform a single step and benchmark the time taken and use it as a quantity for what is best?

Hyper auto-optimize should be concerned about algorithm, while auto-optimize can only be concerned about implementation. Things that are essentially algorithmically equivalent (in the mathematical sense) are things like:

With some quick calls to f those can be determined, so those can be useful even if you're just trying to solve the ODE one time. That's auto_optimize.

hyper_auto_optimize is: I am going to solve this thing 100,000 times, what else should I be doing? At this higher level, this is where we can explore algorithmic details. In order to reduce the computational complexity of this determination, it should be structured at a high level via a decision tree.

Kick out a _prob,_alg pair that is likely to be the fastest.