Attribute error with nuts_sampler='nutpie'

Hi. I get an error when I try to use Nutpie 0.9.0 with PyMC 5.8.0 via Miniconda on Windows.
I also got this error with slightly older packages via Pip on Linux.
Am I doing something wrong?

(pymc_env2) C:\Users\foo>python
Python 3.11.5 | packaged by conda-forge | (main, Aug 27 2023, 03:23:48) [MSC v.1936 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymc as pm
WARNING (pytensor.tensor.blas): Using NumPy C-API based implementation for BLAS functions.
>>> trials = 10
>>> successes = 5
>>> with pm.Model() as coin_flip_model:
...     p = pm.Beta("p", alpha=1, beta=1)
...     obs = pm.Binomial("obs", p=p, n=trials,
...         observed=successes,
...     )
...     idata = pm.sample(nuts_sampler='nutpie')
...
Traceback (most recent call last):
  File "<stdin>", line 6, in <module>
  File "C:\Users\foo\AppData\Local\miniconda3\envs\pymc_env2\Lib\site-packages\pymc\sampling\mcmc.py", line 658, in sample
    return _sample_external_nuts(
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\foo\AppData\Local\miniconda3\envs\pymc_env2\Lib\site-packages\pymc\sampling\mcmc.py", line 297, in _sample_external_nuts
    compiled_model = nutpie.compile_pymc_model(model)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\foo\AppData\Local\miniconda3\envs\pymc_env2\Lib\site-packages\nutpie\compile_pymc.py", line 170, in compile_pymc_model
    ) = _make_functions(model)
        ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\foo\AppData\Local\miniconda3\envs\pymc_env2\Lib\site-packages\nutpie\compile_pymc.py", line 248, in _make_functions
    shapes = _compute_shapes(model)
             ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\foo\AppData\Local\miniconda3\envs\pymc_env2\Lib\site-packages\nutpie\compile_pymc.py", line 222, in _compute_shapes
    point = pm.model.make_initial_point_fn(model=model, return_transformed=True)(0)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'pymc.model' has no attribute 'make_initial_point_fn'

Thanks,
Ivar

That should be fixed in the next release of nutpie. For now you can either install an older version of nutpie or of pymc.

1 Like

Thanks. Switching to PyMC 5.5.0, I got the example to work. It also worked doing this to 5.8.0:

import pymc as pm
pm.model.make_initial_point_fn = pm.initial_point.make_initial_point_fn

In another model I also had to change

m.add_coord('transaction', mutable=True, length=n)

to

m.add_coord('transaction', mutable=True, values=np.arange(n))

Regards,
Ivar

6 Likes