TuringLang / MCMCTempering.jl

Implementations of parallel tempering algorithms to augment samplers with tempering capabilities
https://turinglang.org/MCMCTempering.jl/
MIT License
29 stars 3 forks source link

Non-reversible parallel tempering and optimal ladders #130

Open ptiede opened 3 years ago

ptiede commented 3 years ago

Hi,

This package looks great. I wonder if you have considered using the adaptation schemes from Syed 2019 and Syed 2021.

I have implemented the first of those parallel tempering schemes in C++ and interfaced it with Stan to do some high-dimensional sampling for the EHT and found orders of magnitude improvements over other adaptation schemes. There are also many improvements in the second reference that should drastically increase the round-trip rate of the sampler.

@s-syed and I were actually planning on implementing a generic parallel tempering algorithm for Julia, but it looks like you have a great package here. Did you want to join forces? Having a state-of-the-art PT package in Julia that works with most of AbstractMCMC.jl would be pretty cool.

HarrisonWilde commented 3 years ago

This sounds great, I had not actually seen the 2021 Syed paper, and I just finished implementing adaptation based on the Adaptive Parallel Tempering Algorithm from Miasojedow in 2013, I would be more than happy to talk and collaborate on this. Can you drop me an email at h.wilde@warwick.ac.uk ?

sethaxen commented 3 years ago

Came here to suggest this. The Syed 2019 paper is great!

s-syed commented 3 years ago

Hi @sethaxen thank you for the kind words, the papers were just accepted to JRSS-B and ICML respectively last month. I think it could be really fruitful to join forces as @ptiede suggested. I would love to meet you guys and have a chat to discuss further!

sethaxen commented 3 years ago

Congrats, @s-syed! And that would be great.

@ptiede I was wondering how you handled metric/step-size adaptation when using parallel tempering. Did the temperature levels each have their own adapted metric/step size, or was there one global metric/step size?

ptiede commented 3 years ago

@sethaxen I set it up to use a separate step size and mass matrix for each tempering level. Using a global adaptation would probably increase the communication overhead and we wanted to limit this since our use case usually involves distributed computing.

Looking forward to working with everyone!

HarrisonWilde commented 3 years ago

Good stuff, have emailed out to everyone to try and organise a meeting

ParadaCarleton commented 2 years ago

This sounds great, I had not actually seen the 2021 Syed paper, and I just finished implementing adaptation based on the Adaptive Parallel Tempering Algorithm from Miasojedow in 2013, I would be more than happy to talk and collaborate on this. Can you drop me an email at h.wilde@warwick.ac.uk?

Have you written anything on how to use the adaptive tempering in MCMCTempering? When I went through the readme it only mentioned a way to call it with a specified number of steps, and didn't mention anything about adaptive tempering.

nikola-sur commented 2 years ago

Hi All, I wanted to contribute to this repo by adding non-reversible parallel tempering functionality and just accidentally came across this thread right now! @s-syed and I are working on some more non-reversible PT methods right now, actually. Has there been any progress on implementing this and could I try to contribute?

nikola-sur commented 2 years ago

I see that the pull request has implemented a bunch of these features, so I guess I will step back. Great to see that people are interested in the method!

ParadaCarleton commented 2 years ago

I see that the pull request has implemented a bunch of these features, so I guess I will step back. Great to see that people are interested in the method!

Actually, I don't think any of these methods have been implemented yet. We'd definitely love some help with getting them up and running!

nikola-sur commented 2 years ago

Sounds good! It will take me some time to get familiar with the existing code, but I am looking forward to contributing.