I’ve been using RStan in Jupyter notebooks with IRKernel, and when everything works well, it works well.
However, when there is a sampling error (as opposed to a warning), and I am using parallelized sampling (mc.cores > 0
), the kernel dies and all error messages are swallowed (they do not appear in my notebook, or in the console output where I am running jupyter notebook
).
If I run the manual from a normal R session (e.g. by converting the notebook to a script and running it with Rscript
), I see the errors. Below is an example of the kind of error that causes this behavior:
Rejecting initial value:
Error evaluating the log probability at the initial value.
validate transformed params: nTheta[1] is 1.80545, but must be less than or equal to 1
Initialization between (-2, 2) failed after 100 attempts.
Try specifying initial values, reducing ranges of constrained values, or reparameterizing the model.
A few more notes:
- This is on Linux 64-bit.
- I do not see any progress output while a successful simulation is running. If it runs successfully, warnings appear in the notebook, but progress output does not appear anywhere.
- On Windows, I see progress output (and possibly error messages - I do not remember for sure) in the console where I run
jupyter notebook
. - The Stan error itself isn’t my problem - I know how to fix that. The problem is that when I have an error like this in my Stan code, the only way I find out is a dead kernel, and then I have to play games with script exports to see the real error message(s).
- When I run in single-process mode, I see the progress output in the notebook after the sampling has completed.
Is there any good workaround to get progress output & error messages to show up somewhere when using the Jupyter notebook? This issue makes the STAN debugging process significantly more tedious.
Operating System: Linux
Interface Version: RStan 2.16.2