Skip to content

Default chains backend #21

@penelopeysm

Description

@penelopeysm

As I mentioned in #16 (review), Turing's default chain backend is now FlexiChains.jl rather than MCMCChains.jl. There are many reasons for this -- I am biased because I wrote FlexiChains ;) but I do think it's better.

There is absolutely no obligation for you to follow suit of course. I think it would be good to ensure that the package does work with FlexiChains, but whether you want it to be a default or not is a stronger question, and that is completely up to you. I see three possible pathways that ParallelMCMC could take:

  1. Keep MCMCChains as the default, and make things work with FlexiChains. This would just entail adding a FlexiChainsExt, and probably also a DynamicPPLFlexiChainsExt. (We'd need two different extensions unfortunately to deal with the different cases where people sample either an arbitrary LogDensityProblems.jl-compatible model, or a DynamicPPL model.)

  2. Make FlexiChains the default, and move the MCMCChains code to an MCMCChainsExt + DynamicPPLMCMCChainsExt.

  3. Be completely agnostic, and have a zoo of extensions for each chains backend! This sounds silly, and it is probably a bit silly, but it does mean that your dependency chain will be slimmer. Both MCMCChains and FlexiChains will pull in some deps that you probably don't care about.

As mentioned I am biased and I would say my order of preference is (2) > (1) > (3), but it is very much up to you :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions