You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Originally posted by ricardoV94 February 28, 2024
Users are often mislead to believe that when defining models with MutableData, PyMC will avoid recompiling logp/prior/posterior predictive functions when only the MutableData has changed. This is not the case!
PyMC always recompiles functions when you call pm.sample or pm.sample_posterior_predictive. We used to cache some of the model methods but this was removed because models are not static objects and new variables can be added any time: 983d444#diff-f593a76ecc6f9a5c5abdd7bbd3e9de9add74a068e75e64f66b7b1424a279a0dd
There's a couple approaches we could take to give back to users the caching functionality:
Provide a function to "freeze" a PyMC model. Then the model, much like nutpie compiled_pymc can never be mutated and caching would be safe.
Provide a better low-level API for users to request model functions and use them in sampling routines
We may need to include the contents of pytensor.config as part of the caching / freezing so that users can request the same functions in different backends.
Discussed in #7177
Originally posted by ricardoV94 February 28, 2024
Users are often mislead to believe that when defining models with MutableData, PyMC will avoid recompiling logp/prior/posterior predictive functions when only the MutableData has changed. This is not the case!
PyMC always recompiles functions when you call
pm.sample
orpm.sample_posterior_predictive
. We used to cache some of the model methods but this was removed because models are not static objects and new variables can be added any time: 983d444#diff-f593a76ecc6f9a5c5abdd7bbd3e9de9add74a068e75e64f66b7b1424a279a0ddThere's a couple approaches we could take to give back to users the caching functionality:
model.register_rv
is called ormodel.rvs_to_transforms
is changed. We could easily forbid the latter now that we have https://www.pymc.io/projects/docs/en/v5.10.3/api/model/generated/pymc.model.transform.conditioning.change_value_transforms.htmlcompiled_pymc
can never be mutated and caching would be safe.We may need to include the contents of
pytensor.config
as part of the caching / freezing so that users can request the same functions in different backends.Linked issues:
pymc.compute_log_likelihood
#7073The text was updated successfully, but these errors were encountered: