Troubleshooting

This page collects a number of common error messages observed when using Turing, along with suggestions on how to fix them.

If the suggestions here do not resolve your problem, please do feel free to open an issue.

using Turing

Initial parameters

failed to find valid initial parameters in {N} tries. This may indicate an error with the model or AD backend…

This error is seen when a Hamiltonian Monte Carlo sampler is unable to determine a valid set of initial parameters for the sampling. Here, ‘valid’ means that the log probability density of the model, as well as its gradient with respect to each parameter, is finite and not NaN.

NaN gradient

One of the most common causes of this error is having a NaN gradient. To find out whether this is happening, you can evaluate the gradient manually. Here is an example with a model that is known to be problematic:

using Turing
using DynamicPPL.TestUtils.AD: run_ad

@model function initial_bad()
    a ~ Normal()
    x ~ truncated(Normal(a), 0, Inf)
end

model = initial_bad()
adtype = AutoForwardDiff()
result = run_ad(model, adtype; test=false, benchmark=false)
result.grad_actual
[ Info: Running AD on initial_bad with ADTypes.AutoForwardDiff()
       params : [-0.1664880872217592, -0.1831616247756507]
       actual : (-1.6990474121943835, [NaN, NaN])
2-element Vector{Float64}:
 NaN
 NaN

(See the DynamicPPL docs for more details on the run_ad function and its return type.)

In this case, the NaN gradient is caused by the Inf argument to truncated. (See, e.g., this issue on Distributions.jl.) Here, the upper bound of Inf is not needed, so it can be removed:

@model function initial_good()
    a ~ Normal()
    x ~ truncated(Normal(a); lower=0)
end

model = initial_good()
adtype = AutoForwardDiff()
run_ad(model, adtype; test=false, benchmark=false).grad_actual
[ Info: Running AD on initial_good with ADTypes.AutoForwardDiff()
       params : [-1.0518029136620572, -2.5257858378423768]
       actual : (-3.636185919033443, [0.6168218262636673, 0.9094613113108507])
2-element Vector{Float64}:
 0.6168218262636673
 0.9094613113108507

More generally, you could try using a different AD backend; if you don’t know why a model is returning NaN gradients, feel free to open an issue.

-Inf log density

Another cause of this error is having models with very extreme parameters. This example is taken from this Turing.jl issue:

@model function initial_bad2()
      x ~ Exponential(100)
      y ~ Uniform(0, x)
end
model = initial_bad2() | (y = 50.0,)

@model function initial_bad3()
    x_trf ~ Uniform(0, 1)
    x := -log(x_trf) / 100
    @show x
      y ~ Uniform(0, x)
end
model3 = initial_bad3() | (y = 50.0,)
DynamicPPL.Model{typeof(initial_bad3), (), (), (), Tuple{}, Tuple{}, DynamicPPL.ConditionContext{@NamedTuple{y::Float64}, DynamicPPL.DefaultContext}}(initial_bad3, NamedTuple(), NamedTuple(), ConditionContext((y = 50.0,), DynamicPPL.DefaultContext()))

The problem here is that HMC attempts to find initial values for parameters inside the region of [-2, 2], after the parameters have been transformed to unconstrained space. For a distribution of Exponential(100), the appropriate transformation is log(x) (see the variable transformation docs for more info).

Thus, HMC attempts to find initial values of log(x) in the region of [-2, 2], which corresponds to x in the region of [exp(-2), exp(2)] = [0.135, 7.39]. However, all of these values of x will give rise to a zero probability density for y because the value of y = 50.0 is outside the support of Uniform(0, x). Thus, the log density of the model is -Inf, as can be seen with logjoint:

logjoint(model, (x = exp(-2),))
-Inf
logjoint(model, (x = exp(2),))
-Inf

The most direct way of fixing this is to manually provide a set of initial parameters that are valid. For example, you can obtain a set of initial parameters with rand(Vector, model), and then pass this as the initial_params keyword argument to sample:

sample(model, NUTS(), 1000; initial_params=rand(Vector, model))
Sampling   0%|                                          |  ETA: N/A
Info: Found initial step size
  ϵ = 0.8
Sampling   0%|▎                                         |  ETA: 0:17:51
Sampling   1%|▍                                         |  ETA: 0:08:55
Sampling   1%|▋                                         |  ETA: 0:05:55
Sampling   2%|▊                                         |  ETA: 0:04:25
Sampling   2%|█                                         |  ETA: 0:03:31
Sampling   3%|█▏                                        |  ETA: 0:02:55
Sampling   3%|█▍                                        |  ETA: 0:02:29
Sampling   4%|█▋                                        |  ETA: 0:02:10
Sampling   4%|█▊                                        |  ETA: 0:01:55
Sampling   5%|██                                        |  ETA: 0:01:43
Sampling   5%|██▏                                       |  ETA: 0:01:33
Sampling   6%|██▍                                       |  ETA: 0:01:25
Sampling   6%|██▌                                       |  ETA: 0:01:18
Sampling   7%|██▊                                       |  ETA: 0:01:12
Sampling   7%|███                                       |  ETA: 0:01:07
Sampling   7%|███▏                                      |  ETA: 0:01:03
Sampling   8%|███▍                                      |  ETA: 0:00:59
Sampling   8%|███▌                                      |  ETA: 0:00:55
Sampling   9%|███▊                                      |  ETA: 0:00:52
Sampling   9%|███▉                                      |  ETA: 0:00:49
Sampling  10%|████▏                                     |  ETA: 0:00:46
Sampling  10%|████▎                                     |  ETA: 0:00:44
Sampling  11%|████▌                                     |  ETA: 0:00:42
Sampling  11%|████▊                                     |  ETA: 0:00:40
Sampling  12%|████▉                                     |  ETA: 0:00:38
Sampling  12%|█████▏                                    |  ETA: 0:00:37
Sampling  13%|█████▎                                    |  ETA: 0:00:35
Sampling  13%|█████▌                                    |  ETA: 0:00:34
Sampling  14%|█████▋                                    |  ETA: 0:00:32
Sampling  14%|█████▉                                    |  ETA: 0:00:31
Sampling  14%|██████▏                                   |  ETA: 0:00:30
Sampling  15%|██████▎                                   |  ETA: 0:00:29
Sampling  15%|██████▌                                   |  ETA: 0:00:28
Sampling  16%|██████▋                                   |  ETA: 0:00:27
Sampling  16%|██████▉                                   |  ETA: 0:00:26
Sampling  17%|███████                                   |  ETA: 0:00:25
Sampling  17%|███████▎                                  |  ETA: 0:00:24
Sampling  18%|███████▌                                  |  ETA: 0:00:23
Sampling  18%|███████▋                                  |  ETA: 0:00:23
Sampling  19%|███████▉                                  |  ETA: 0:00:22
Sampling  19%|████████                                  |  ETA: 0:00:21
Sampling  20%|████████▎                                 |  ETA: 0:00:21
Sampling  20%|████████▍                                 |  ETA: 0:00:20
Sampling  21%|████████▋                                 |  ETA: 0:00:20
Sampling  21%|████████▉                                 |  ETA: 0:00:19
Sampling  21%|█████████                                 |  ETA: 0:00:19
Sampling  22%|█████████▎                                |  ETA: 0:00:18
Sampling  22%|█████████▍                                |  ETA: 0:00:18
Sampling  23%|█████████▋                                |  ETA: 0:00:17
Sampling  23%|█████████▊                                |  ETA: 0:00:17
Sampling  24%|██████████                                |  ETA: 0:00:16
Sampling  24%|██████████▎                               |  ETA: 0:00:16
Sampling  25%|██████████▍                               |  ETA: 0:00:15
Sampling  25%|██████████▋                               |  ETA: 0:00:15
Sampling  26%|██████████▊                               |  ETA: 0:00:15
Sampling  26%|███████████                               |  ETA: 0:00:14
Sampling  27%|███████████▏                              |  ETA: 0:00:14
Sampling  27%|███████████▍                              |  ETA: 0:00:14
Sampling  28%|███████████▋                              |  ETA: 0:00:13
Sampling  28%|███████████▊                              |  ETA: 0:00:13
Sampling  28%|████████████                              |  ETA: 0:00:13
Sampling  29%|████████████▏                             |  ETA: 0:00:12
Sampling  29%|████████████▍                             |  ETA: 0:00:12
Sampling  30%|████████████▌                             |  ETA: 0:00:12
Sampling  30%|████████████▊                             |  ETA: 0:00:12
Sampling  31%|████████████▉                             |  ETA: 0:00:11
Sampling  31%|█████████████▏                            |  ETA: 0:00:11
Sampling  32%|█████████████▍                            |  ETA: 0:00:11
Sampling  32%|█████████████▌                            |  ETA: 0:00:11
Sampling  33%|█████████████▊                            |  ETA: 0:00:10
Sampling  33%|█████████████▉                            |  ETA: 0:00:10
Sampling  34%|██████████████▏                           |  ETA: 0:00:10
Sampling  34%|██████████████▎                           |  ETA: 0:00:10
Sampling  35%|██████████████▌                           |  ETA: 0:00:10
Sampling  35%|██████████████▊                           |  ETA: 0:00:10
Sampling  35%|██████████████▉                           |  ETA: 0:00:09
Sampling  36%|███████████████▏                          |  ETA: 0:00:09
Sampling  36%|███████████████▎                          |  ETA: 0:00:09
Sampling  37%|███████████████▌                          |  ETA: 0:00:09
Sampling  37%|███████████████▋                          |  ETA: 0:00:09
Sampling  38%|███████████████▉                          |  ETA: 0:00:09
Sampling  38%|████████████████▏                         |  ETA: 0:00:08
Sampling  39%|████████████████▎                         |  ETA: 0:00:08
Sampling  39%|████████████████▌                         |  ETA: 0:00:08
Sampling  40%|████████████████▋                         |  ETA: 0:00:08
Sampling  40%|████████████████▉                         |  ETA: 0:00:08
Sampling  41%|█████████████████                         |  ETA: 0:00:08
Sampling  41%|█████████████████▎                        |  ETA: 0:00:07
Sampling  42%|█████████████████▌                        |  ETA: 0:00:07
Sampling  42%|█████████████████▋                        |  ETA: 0:00:07
Sampling  42%|█████████████████▉                        |  ETA: 0:00:07
Sampling  43%|██████████████████                        |  ETA: 0:00:07
Sampling  43%|██████████████████▎                       |  ETA: 0:00:07
Sampling  44%|██████████████████▍                       |  ETA: 0:00:07
Sampling  44%|██████████████████▋                       |  ETA: 0:00:07
Sampling  45%|██████████████████▉                       |  ETA: 0:00:06
Sampling  45%|███████████████████                       |  ETA: 0:00:06
Sampling  46%|███████████████████▎                      |  ETA: 0:00:06
Sampling  46%|███████████████████▍                      |  ETA: 0:00:06
Sampling  47%|███████████████████▋                      |  ETA: 0:00:06
Sampling  47%|███████████████████▊                      |  ETA: 0:00:06
Sampling  48%|████████████████████                      |  ETA: 0:00:06
Sampling  48%|████████████████████▎                     |  ETA: 0:00:06
Sampling  49%|████████████████████▍                     |  ETA: 0:00:06
Sampling  49%|████████████████████▋                     |  ETA: 0:00:05
Sampling  49%|████████████████████▊                     |  ETA: 0:00:05
Sampling  50%|█████████████████████                     |  ETA: 0:00:05
Sampling  50%|█████████████████████▏                    |  ETA: 0:00:05
Sampling  51%|█████████████████████▍                    |  ETA: 0:00:05
Sampling  51%|█████████████████████▌                    |  ETA: 0:00:05
Sampling  52%|█████████████████████▊                    |  ETA: 0:00:05
Sampling  52%|██████████████████████                    |  ETA: 0:00:05
Sampling  53%|██████████████████████▏                   |  ETA: 0:00:05
Sampling  53%|██████████████████████▍                   |  ETA: 0:00:05
Sampling  54%|██████████████████████▌                   |  ETA: 0:00:05
Sampling  54%|██████████████████████▊                   |  ETA: 0:00:04
Sampling  55%|██████████████████████▉                   |  ETA: 0:00:04
Sampling  55%|███████████████████████▏                  |  ETA: 0:00:04
Sampling  56%|███████████████████████▍                  |  ETA: 0:00:04
Sampling  56%|███████████████████████▌                  |  ETA: 0:00:04
Sampling  56%|███████████████████████▊                  |  ETA: 0:00:04
Sampling  57%|███████████████████████▉                  |  ETA: 0:00:04
Sampling  57%|████████████████████████▏                 |  ETA: 0:00:04
Sampling  58%|████████████████████████▎                 |  ETA: 0:00:04
Sampling  58%|████████████████████████▌                 |  ETA: 0:00:04
Sampling  59%|████████████████████████▊                 |  ETA: 0:00:04
Sampling  59%|████████████████████████▉                 |  ETA: 0:00:04
Sampling  60%|█████████████████████████▏                |  ETA: 0:00:04
Sampling  60%|█████████████████████████▎                |  ETA: 0:00:03
Sampling  61%|█████████████████████████▌                |  ETA: 0:00:03
Sampling  61%|█████████████████████████▋                |  ETA: 0:00:03
Sampling  62%|█████████████████████████▉                |  ETA: 0:00:03
Sampling  62%|██████████████████████████▏               |  ETA: 0:00:03
Sampling  63%|██████████████████████████▎               |  ETA: 0:00:03
Sampling  63%|██████████████████████████▌               |  ETA: 0:00:03
Sampling  63%|██████████████████████████▋               |  ETA: 0:00:03
Sampling  64%|██████████████████████████▉               |  ETA: 0:00:03
Sampling  64%|███████████████████████████               |  ETA: 0:00:03
Sampling  65%|███████████████████████████▎              |  ETA: 0:00:03
Sampling  65%|███████████████████████████▌              |  ETA: 0:00:03
Sampling  66%|███████████████████████████▋              |  ETA: 0:00:03
Sampling  66%|███████████████████████████▉              |  ETA: 0:00:03
Sampling  67%|████████████████████████████              |  ETA: 0:00:03
Sampling  67%|████████████████████████████▎             |  ETA: 0:00:03
Sampling  68%|████████████████████████████▍             |  ETA: 0:00:03
Sampling  68%|████████████████████████████▋             |  ETA: 0:00:02
Sampling  69%|████████████████████████████▊             |  ETA: 0:00:02
Sampling  69%|█████████████████████████████             |  ETA: 0:00:02
Sampling  70%|█████████████████████████████▎            |  ETA: 0:00:02
Sampling  70%|█████████████████████████████▍            |  ETA: 0:00:02
Sampling  70%|█████████████████████████████▋            |  ETA: 0:00:02
Sampling  71%|█████████████████████████████▊            |  ETA: 0:00:02
Sampling  71%|██████████████████████████████            |  ETA: 0:00:02
Sampling  72%|██████████████████████████████▏           |  ETA: 0:00:02
Sampling  72%|██████████████████████████████▍           |  ETA: 0:00:02
Sampling  73%|██████████████████████████████▋           |  ETA: 0:00:02
Sampling  73%|██████████████████████████████▊           |  ETA: 0:00:02
Sampling  74%|███████████████████████████████           |  ETA: 0:00:02
Sampling  74%|███████████████████████████████▏          |  ETA: 0:00:02
Sampling  75%|███████████████████████████████▍          |  ETA: 0:00:02
Sampling  75%|███████████████████████████████▌          |  ETA: 0:00:02
Sampling  76%|███████████████████████████████▊          |  ETA: 0:00:02
Sampling  76%|████████████████████████████████          |  ETA: 0:00:02
Sampling  77%|████████████████████████████████▏         |  ETA: 0:00:02
Sampling  77%|████████████████████████████████▍         |  ETA: 0:00:02
Sampling  77%|████████████████████████████████▌         |  ETA: 0:00:02
Sampling  78%|████████████████████████████████▊         |  ETA: 0:00:01
Sampling  78%|████████████████████████████████▉         |  ETA: 0:00:01
Sampling  79%|█████████████████████████████████▏        |  ETA: 0:00:01
Sampling  79%|█████████████████████████████████▍        |  ETA: 0:00:01
Sampling  80%|█████████████████████████████████▌        |  ETA: 0:00:01
Sampling  80%|█████████████████████████████████▊        |  ETA: 0:00:01
Sampling  81%|█████████████████████████████████▉        |  ETA: 0:00:01
Sampling  81%|██████████████████████████████████▏       |  ETA: 0:00:01
Sampling  82%|██████████████████████████████████▎       |  ETA: 0:00:01
Sampling  82%|██████████████████████████████████▌       |  ETA: 0:00:01
Sampling  83%|██████████████████████████████████▊       |  ETA: 0:00:01
Sampling  83%|██████████████████████████████████▉       |  ETA: 0:00:01
Sampling  84%|███████████████████████████████████▏      |  ETA: 0:00:01
Sampling  84%|███████████████████████████████████▎      |  ETA: 0:00:01
Sampling  84%|███████████████████████████████████▌      |  ETA: 0:00:01
Sampling  85%|███████████████████████████████████▋      |  ETA: 0:00:01
Sampling  85%|███████████████████████████████████▉      |  ETA: 0:00:01
Sampling  86%|████████████████████████████████████▏     |  ETA: 0:00:01
Sampling  86%|████████████████████████████████████▎     |  ETA: 0:00:01
Sampling  87%|████████████████████████████████████▌     |  ETA: 0:00:01
Sampling  87%|████████████████████████████████████▋     |  ETA: 0:00:01
Sampling  88%|████████████████████████████████████▉     |  ETA: 0:00:01
Sampling  88%|█████████████████████████████████████     |  ETA: 0:00:01
Sampling  89%|█████████████████████████████████████▎    |  ETA: 0:00:01
Sampling  89%|█████████████████████████████████████▍    |  ETA: 0:00:01
Sampling  90%|█████████████████████████████████████▋    |  ETA: 0:00:01
Sampling  90%|█████████████████████████████████████▉    |  ETA: 0:00:01
Sampling  91%|██████████████████████████████████████    |  ETA: 0:00:01
Sampling  91%|██████████████████████████████████████▎   |  ETA: 0:00:01
Sampling  91%|██████████████████████████████████████▍   |  ETA: 0:00:00
Sampling  92%|██████████████████████████████████████▋   |  ETA: 0:00:00
Sampling  92%|██████████████████████████████████████▊   |  ETA: 0:00:00
Sampling  93%|███████████████████████████████████████   |  ETA: 0:00:00
Sampling  93%|███████████████████████████████████████▎  |  ETA: 0:00:00
Sampling  94%|███████████████████████████████████████▍  |  ETA: 0:00:00
Sampling  94%|███████████████████████████████████████▋  |  ETA: 0:00:00
Sampling  95%|███████████████████████████████████████▊  |  ETA: 0:00:00
Sampling  95%|████████████████████████████████████████  |  ETA: 0:00:00
Sampling  96%|████████████████████████████████████████▏ |  ETA: 0:00:00
Sampling  96%|████████████████████████████████████████▍ |  ETA: 0:00:00
Sampling  97%|████████████████████████████████████████▋ |  ETA: 0:00:00
Sampling  97%|████████████████████████████████████████▊ |  ETA: 0:00:00
Sampling  98%|█████████████████████████████████████████ |  ETA: 0:00:00
Sampling  98%|█████████████████████████████████████████▏|  ETA: 0:00:00
Sampling  98%|█████████████████████████████████████████▍|  ETA: 0:00:00
Sampling  99%|█████████████████████████████████████████▌|  ETA: 0:00:00
Sampling  99%|█████████████████████████████████████████▊|  ETA: 0:00:00
Sampling 100%|██████████████████████████████████████████|  ETA: 0:00:00
Sampling 100%|██████████████████████████████████████████| Time: 0:00:05
Chains MCMC chain (1000×13×1 Array{Float64, 3}):

Iterations        = 501:1:1500
Number of chains  = 1
Samples per chain = 1000
Wall duration     = 7.0 seconds
Compute duration  = 7.0 seconds
parameters        = x
internals         = lp, n_steps, is_accept, acceptance_rate, log_density, hamiltonian_energy, hamiltonian_energy_error, max_hamiltonian_energy_error, tree_depth, numerical_error, step_size, nom_step_size

Summary Statistics
  parameters       mean       std      mcse   ess_bulk   ess_tail      rhat       Symbol    Float64   Float64   Float64    Float64    Float64   Float64    ⋯

           x   119.7803   79.5890    6.9786   137.3057   184.7574    1.0059    ⋯
                                                                1 column omitted

Quantiles
  parameters      2.5%     25.0%     50.0%      75.0%      97.5%
      Symbol   Float64   Float64   Float64    Float64    Float64

           x   51.0960   68.5561   95.4065   143.7126   331.3144

More generally, you may also consider reparameterising the model to avoid such issues.

Back to top