diff --git a/.nojekyll b/.nojekyll index 5f408b9..c614333 100644 --- a/.nojekyll +++ b/.nojekyll @@ -1 +1 @@ -70f1ff29 \ No newline at end of file +5f217a6a \ No newline at end of file diff --git a/index.html b/index.html index 6cd9b66..02f2666 100644 --- a/index.html +++ b/index.html @@ -172,7 +172,6 @@
See https://nsiccha.github.io/StanBlocks.jl/#overview-of-posteriors for an overview of (hopefully) correctly implemented models.
+See https://nsiccha.github.io/StanBlocks.jl/performance.html#tabular-data for an overview of (hopefully) correctly implemented models.
See test/runtests.jl
for a way to run and check the models. After importing PosteriorDB
, StanLogDensityProblems
and LogDensityProblems
, you should have access to reference Stan implementations of the log density and of its gradient, see the documentation of StanLogDensityProblems.jl
. The Stan log density can then be compared to the Julia log density as is, and after loading Julia’s AD packages, you can also compare the Stan log density gradient to the Julia log density gradient.
Check out https://nsiccha.github.io/StanBlocks.jl/performance.html for an overview of implemented posteriors and their relative performances.
The below plot shows the relative primitive runtime (x-axis, Julia vs Stan, left: Julia is faster) and the relative gradient runtime (y-axis, Julia+X vs Stan, bottom: Julia is faster) for the posteriordb
models for which the overview table has a value less than 1e-8
in the remaining relative lpdf error
column. The color of the points represents the Julia AD framework used, which currently includes Enzyme.jl and Mooncake.jl. Hovering over the data points will show the posterior name, its dimension, the allocations required by Julia during the primitive and gradient run and a short explanation, e.g. mesquite-logmesquite_logvash (D=7, #allocs=0->70) - Julia's primitive is ~4.5 times faster, but Enzyme's gradient is ~16.0 times slower.
Horizontal and vertical lines around scatter points represent the 90% central credible interval of the ratio of the runtime means, estimated using 200 iterations of Bayesian Bootstrap. As those intervals are sometimes quite wide, I’m planning to rerun some or all of the benchmarks.