Error using init='advi+adapt_diag_grad' update() missing 1 required positional argument

I am running the following model (first time Bayesian modelling/user of pymc). It estimates housing prices as a function of their attributes, spatially nested in ADA which are then spatially nested in a set of clusters. I’m using pymc 3.6 and theano 1.0.3.

with pm.Model() as contextual_effect:

        # Priors
        sigma_aC = pm.HalfNormal('sigma_aC', 16)
        sigma_aA = pm.HalfNormal('sigma_aA', 277)

        # Cluster branch model for slope
        gammaC = pm.Normal('gammaC', mu=0., sigma=1, shape=9)

        # Branch model for intercept
        mu_aC = pm.Deterministic('mu_aC', gammaC[0] + gammaC[1]*size2 + gammaC[2]*size3 + gammaC[3]*size4 + gammaC[4]*size5 +gammaC[5]*size6
                              + gammaC[6]*size7 + gammaC[7]*size8 + gammaC[8]*xbarC[clusterID])

        # Cluster variation not explained by branch model
        eps_aC = pm.Normal('eps_aC', mu=0, sigma=sigma_aC, shape=nclusters)
        aC = pm.Deterministic('aC', mu_aC + eps_aC[clusterID])

#         # ADA entropy model for slope
        gammaA = pm.Normal('gammaA', mu=0., sigma=1, shape=10)

        # Entropy model for intercept
        mu_aA = pm.Deterministic('mu_aA', gammaA[0] + gammaA[1]*BArea + gammaA[2]*CArea + gammaA[3]*DArea + gammaA[4]*EArea + gammaA[5]*FArea + gammaA[6]*GArea + gammaA[7]*HArea + gammaA[8]*IArea + gammaA[9]*xbarA[ADA])

        # # ADA variation not explained by entropy model
        eps_aA = pm.Normal('eps_aA', mu=0, sigma=sigma_aA, shape=nADA)
        aA = pm.Deterministic('aA', mu_aA + eps_aA[ADA])

#         # Common slopes
        b_cluster = pm.Normal('b_cluster', mu=0., sigma=10)
        b_ADA = pm.Normal('b_ADA', mu=0., sigma=10)

        # Model error
        sigma_y = pm.Uniform('sigma_y', lower=0, upper=100)

        # Individual level slopes
        b_area = pm.Normal('b_area', mu=0.004, sigma=0.000018)
        b_year = pm.Normal('b_year', mu=1.651504, sigma=0.03)
        b_house2 = pm.Normal('b_house2', mu=-2.378035, sigma=0.1)
        b_house3 = pm.Normal('b_house3', mu=-1.557363, sigma=0.1)
        b_house4 = pm.Normal('b_house4', mu=-1, sigma=0.1)

        # Expected value
        y_hat = aC + aA + b_cluster * branch_measure + b_ADA * entropy_measure + b_area * area \
                + b_year * year + b_house2 * house2 + b_house3 * house3 + b_house4 * house4

        # Data likelihood
        y_like = pm.Normal('y_like', mu=y_hat, sigma=sigma_y, observed=price)

I was having some issues with estimation of the model using NUTS (speed/convergence) so tried getting an initial estimate using ADVI. This seems to work (i.e. it converges and proceeds to using NUTS), but gives an error with the following

RemoteTraceback                           Traceback (most recent call last)
Traceback (most recent call last):
  File "C:\Users\ITSLab\Anaconda3\lib\site-packages\pymc3\", line 110, in run
  File "C:\Users\ITSLab\Anaconda3\lib\site-packages\pymc3\", line 160, in _start_loop
    point, stats = self._compute_point()
  File "C:\Users\ITSLab\Anaconda3\lib\site-packages\pymc3\", line 191, in _compute_point
    point, stats = self._step_method.step(self._point)
  File "C:\Users\ITSLab\Anaconda3\lib\site-packages\pymc3\step_methods\", line 247, in step
    apoint, stats = self.astep(array)
  File "C:\Users\ITSLab\Anaconda3\lib\site-packages\pymc3\step_methods\hmc\", line 156, in astep
    self.potential.update(hmc_step.end.q, hmc_step.end.q_grad, self.tune)
  File "C:\Users\ITSLab\Anaconda3\lib\site-packages\pymc3\step_methods\hmc\", line 278, in update
    super().update(sample, grad)
TypeError: update() missing 1 required positional argument: 'tune'

The above exception was the direct cause of the following exception:

TypeError                                 Traceback (most recent call last)
TypeError: update() missing 1 required positional argument: 'tune'

The above exception was the direct cause of the following exception:

RuntimeError                              Traceback (most recent call last)
<ipython-input-10-e3d5baf01b19> in <module>
      1 with contextual_effect:
----> 2     contextual_effect_trace = pm.sample(1000, tune=1000, max_treedepth=20, target_accept=0.85, init='advi+adapt_diag_grad')
      3 pm.summary(contextual_effect_trace, varnames=['gammaC', 'b_cluster', 'b_area', 'b_year', 'b_house2', 'b_house3', 'b_house4'])

~\Anaconda3\lib\site-packages\pymc3\ in sample(draws, step, init, n_init, start, trace, chain_idx, chains, cores, tune, progressbar, model, random_seed, discard_tuned_samples, compute_convergence_checks, **kwargs)
    435             _print_step_hierarchy(step)
    436             try:
--> 437                 trace = _mp_sample(**sample_args)
    438             except pickle.PickleError:
    439                 _log.warning("Could not pickle model, sampling singlethreaded.")

~\Anaconda3\lib\site-packages\pymc3\ in _mp_sample(draws, tune, step, chains, cores, chain, random_seed, start, progressbar, trace, model, **kwargs)
    967         try:
    968             with sampler:
--> 969                 for draw in sampler:
    970                     trace = traces[draw.chain - chain]
    971                     if (trace.supports_sampler_stats

~\Anaconda3\lib\site-packages\pymc3\ in __iter__(self)
    392         while self._active:
--> 393             draw = ProcessAdapter.recv_draw(self._active)
    394             proc, is_last, draw, tuning, stats, warns = draw
    395             if self._progress is not None:

~\Anaconda3\lib\site-packages\pymc3\ in recv_draw(processes, timeout)
    295             else:
    296                 error = RuntimeError("Chain %s failed." % proc.chain)
--> 297             raise error from old_error
    298         elif msg[0] == "writing_done":
    299             proc._readable = True

RuntimeError: Chain 1 failed.

I’m running with init=‘auto’ but this is very slow (estimated time 10 hours). I initially estimated the model with this method, but it took a couple days and did not converge. I switched halfCauchy() to halfNormal(), and added max_treedepth=20, target_accept=0.85 based on suggestions I found online. The mu/sigma are also updated from initial values of mu=0 and sigma=1e5 (which I used based on a pymc tutorial with a similar specification).

It seems I can use a snippet from this sample:

to give the results of ADVI as a starting point and step size.

When I was trying to print from my canon printer offline windows 10 was appearing every time and due to this I could not print at all and hence I have checked the cables which was connected properly.

Experiencing the same error (not the printer one…) running on pymc3 version 3.8 and theano version 1.04. This seems weird because in my case i define tune together with init

trace= pm.sample(4000,tune=1000,init='advi+adapt_diag',chains=2,cores=8)