Hi all,
@AlexAndorra Thanks for connecting these two branches of work.
@ivan Amazing work, I think this is super useful and can help a lot of people!
I am part of the team that is working on a PR to add the MLDA sampler to PyMC3. Some of the main use cases for this sampler are inverse problems which require complex PDE solves when calculating the forward model. We are particularly interested in high dimensional, computationally intensive models. For those reasons, FEniCS is something we believe a lot of potential users will want to combine with MLDA and we have been using it in some of our examples.
We think we could use your library in the examples to make them cleaner and easier to read. We plan to try this when we have finished with the PR and the other features we are working on at the moment.
Moreover, one of the ways we want to evolve MLDA is to allow it to correct biased coarse models using information from the fine model. In order to do that, we need users to write their custom theano ops so that it sets a pymc3 model variable within the perform method, using info from the forward model. Do you think automating something like this could be a possible extension in your library for use within MLDA?
Finally, it would be interesting to combine MLDA with gradient-based samplers like NUTS by taking advantage of your library. Currently MLDA uses a base sampler in the bottom level of the chains hierarchy. This is a Metropolis method but it would be very cool to try a gradient based sampler as it is probably going to help a lot with difficult multidimensional posteriors. This is a longer term thing though as we are currently working on the basic features of the implementation. It would be good to connect and discuss more on this one.