pymc-devs / pymc

Bayesian Modeling and Probabilistic Programming in Python
https://docs.pymc.io/
Other
8.7k stars 2.01k forks source link

Default target_accept not mentioned anywhere in the docs #7455

Open ricardoV94 opened 2 months ago

ricardoV94 commented 2 months ago

Description

...

kdotmanoj commented 2 months ago

can you provide more info about this?

ricardoV94 commented 2 months ago

can you provide more info about this?

I think it's pretty self explanatory.

ricardoV94 commented 2 months ago

It's a keyword argument to pm.sample

kdotmanoj commented 2 months ago

so the value is 0.8 right, found here:

image

i am finding it difficult to find where to edit as it is autogenerated from the code.

ricardoV94 commented 2 months ago

so the value is 0.8 right, found here:

image

i am finding it difficult to find where to edit as it is autogenerated from the code.

You're looking at nutpie sample function not pymc

cluhmann commented 2 months ago

Is target_accept a kwarg to pm.sample() or just another **kwargs? The argument isn't even included in the API docs, so if it's the former, there's a bigger problem.

I mean, it's detailed here, but I assumed that the sampling defaults would be specified deeper in the code, possibly allowing for different default for different sampling algorithms.

Armavica commented 2 months ago

There are at least a couple places where a default is provided deep in the code:

https://github.com/pymc-devs/pymc/blob/747fda3192a5df90cf76bbce641a9542559548c8/pymc/sampling/mcmc.py#L730

https://github.com/pymc-devs/pymc/blob/747fda3192a5df90cf76bbce641a9542559548c8/pymc/sampling/jax.py#L478

https://github.com/pymc-devs/pymc/blob/747fda3192a5df90cf76bbce641a9542559548c8/pymc/step_methods/hmc/hmc.py#L119

https://github.com/pymc-devs/pymc/blob/747fda3192a5df90cf76bbce641a9542559548c8/pymc/step_methods/hmc/base_hmc.py#L72

cluhmann commented 2 months ago

Exactly. But those are each specified separately and, it turns out, in a way that creates different defaults for different algorithms. So I'm not sure what's missing from the docs.

ricardoV94 commented 2 months ago

Exactly. But those are each specified separately and, it turns out, in a way that creates different defaults for different algorithms. So I'm not sure what's missing from the docs.

I couldn't figure out what the default is as an advanced user. Since it's common advice to increase it (even automatic in case of divergences) it should be easy to find what the default is.

cluhmann commented 2 months ago

This is caused by pm.sample() being a franken-wrapper that dispatches to a bunch of actual sampling methods, but seems like it does something useful all on its own. Where would you expect the default value to be documented?

ricardoV94 commented 2 months ago

pm.sample 🤷‍♂️🫠🥹? Or do you have a better idea?

cluhmann commented 2 months ago

But ... it's not an argument to pm.sample(). I do have a better idea, but you didn't like it (e.g., deprecate pm.sample). :joy:

ricardoV94 commented 2 months ago

But ... it's not an argument to pm.sample(). I do have a better idea, but you didn't like it (e.g., deprecate pm.sample). :joy:

It is, just hidden inside **kwargs.

It's actually a special kwarg, the only one we accept both directly and as usual step kwargs

ricardoV94 commented 2 months ago

See https://github.com/pymc-devs/pymc/pull/5622

kdotmanoj commented 2 months ago

@ricardoV94 do you suggest mentioning the default values of target_accept here ?