It's time we teach our models to be differentiable. For this we should leverage DifferentiationInterface.jl where possible.
This should work very well for the following models:
Model
ParallelModel
- Probably all surrogate models
where we can default to AutoMooncake() because of the way we use DataFrames. When the gradient can not be prepared we can likely fall back to AutoFiniteDifferences().
The ExternalModel is a very different case. We should allow the possibility for extracting gradients if solvers provide them and alternatively use AutoFiniteDifferences().
It's time we teach our models to be differentiable. For this we should leverage
DifferentiationInterface.jlwhere possible.This should work very well for the following models:
ModelParallelModelwhere we can default to
AutoMooncake()because of the way we useDataFrames. When the gradient can not be prepared we can likely fall back toAutoFiniteDifferences().The
ExternalModelis a very different case. We should allow the possibility for extracting gradients if solvers provide them and alternatively useAutoFiniteDifferences().