{ "cells": [ { "cell_type": "markdown", "id": "5be5c73d", "metadata": {}, "source": [ "(pathfinder)=\n", "\n", "# Pathfinder Variational Inference\n", "\n", ":::{post} Feb 5, 2023 \n", ":tags: variational inference, JAX\n", ":category: advanced, how-to\n", ":author: Thomas Wiecki\n", ":::" ] }, { "cell_type": "markdown", "id": "8c09866a", "metadata": {}, "source": [ "Pathfinder {cite:p}`zhang2021pathfinder` is a variational inference algorithm that produces samples from the posterior of a Bayesian model. It compares favorably to the widely used ADVI algorithm. On large problems, it should scale better than most MCMC algorithms, including dynamic HMC (i.e. NUTS), at the cost of a more biased estimate of the posterior. For details on the algorithm, see the [arxiv preprint](https://arxiv.org/abs/2108.03782).\n", "\n", "PyMC's implementation of Pathfinder is now natively integrated using PyTensor. The Pathfinder implementation can be accessed through [pymc-extras](https://github.com/pymc-devs/pymc-extras/), which can be installed via:\n", "\n", "`pip install git+https://github.com/pymc-devs/pymc-extras`" ] }, { "cell_type": "code", "execution_count": 1, "id": "b956d9c7", "metadata": { "execution": { "iopub.execute_input": "2024-07-18T02:13:22.046136Z", "iopub.status.busy": "2024-07-18T02:13:22.046035Z", "iopub.status.idle": "2024-07-18T02:13:23.486585Z", "shell.execute_reply": "2024-07-18T02:13:23.486062Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running on PyMC v5.20.1\n" ] } ], "source": [ "import arviz as az\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pymc as pm\n", "import pymc_extras as pmx\n", "\n", "print(f\"Running on PyMC v{pm.__version__}\")" ] }, { "cell_type": "markdown", "id": "d1e3e470", "metadata": {}, "source": [ "First, define your PyMC model. Here, we use the 8-schools model." ] }, { "cell_type": "code", "execution_count": 2, "id": "e33b0d7f", "metadata": { "execution": { "iopub.execute_input": "2024-07-18T02:13:23.488416Z", "iopub.status.busy": "2024-07-18T02:13:23.488193Z", "iopub.status.idle": "2024-07-18T02:13:23.500577Z", "shell.execute_reply": "2024-07-18T02:13:23.500038Z" } }, "outputs": [], "source": [ "# Data of the Eight Schools Model\n", "J = 8\n", "y = np.array([28.0, 8.0, -3.0, 7.0, -1.0, 1.0, 18.0, 12.0])\n", "sigma = np.array([15.0, 10.0, 16.0, 11.0, 9.0, 11.0, 10.0, 18.0])\n", "\n", "with pm.Model() as model:\n", " mu = pm.Normal(\"mu\", mu=0.0, sigma=10.0)\n", " tau = pm.HalfCauchy(\"tau\", 5.0)\n", "\n", " z = pm.Normal(\"z\", mu=0, sigma=1, shape=J)\n", " theta = pm.Deterministic(\"theta\", mu + tau * z)\n", " obs = pm.Normal(\"obs\", mu=theta, sigma=sigma, shape=J, observed=y)" ] }, { "cell_type": "markdown", "id": "1d8bf2fe", "metadata": {}, "source": [ "Next, we call `pmx.fit()` and pass in the algorithm we want it to use." ] }, { "cell_type": "code", "execution_count": 3, "id": "22d7745d", "metadata": { "execution": { "iopub.execute_input": "2024-07-18T02:13:23.502587Z", "iopub.status.busy": "2024-07-18T02:13:23.502487Z", "iopub.status.idle": "2024-07-18T02:13:28.385826Z", "shell.execute_reply": "2024-07-18T02:13:28.385293Z" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Initializing NUTS using jitter+adapt_diag...\n", "Multiprocess sampling (4 chains in 4 jobs)\n", "NUTS: [mu, tau, z]\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d976fb250c644aae99d1a5f19aff2a19", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "Sampling 4 chains for 1_000 tune and 1_000 draw iterations (4_000 + 4_000 draws total) took 1 seconds.\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "00d078cc49e54224a63244a708fa7065", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Output()" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n" ], "text/plain": [] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "Pathfinder Results \n", " \n", " No. model parameters 10 \n", " \n", " Configuration: \n", " num_draws_per_path 1000 \n", " history size (maxcor) 7 \n", " max iterations 1000 \n", " ftol 1.00e-05 \n", " gtol 1.00e-08 \n", " max line search 1000 \n", " jitter 12 \n", " epsilon 1.00e-08 \n", " ELBO draws 10 \n", " \n", " LBFGS Status: \n", " CONVERGED 4 \n", " L-BFGS iterations mean 22 ± std 6 \n", " \n", " Path Status: \n", " SUCCESS 4 \n", " ELBO argmax mean 8 ± std 9 \n", " \n", " Importance Sampling: \n", " Method psis \n", " Pareto k 0.75 \n", " \n", " Timing (seconds): \n", " Compile 4.53 \n", " Compute 0.09 \n", " Total 4.62 \n", "\n" ], "text/plain": [ "Pathfinder Results \n", " \n", " No. model parameters 10 \n", " \n", " Configuration: \n", " num_draws_per_path 1000 \n", " history size (maxcor) 7 \n", " max iterations 1000 \n", " ftol 1.00e-05 \n", " gtol 1.00e-08 \n", " max line search 1000 \n", " jitter 12 \n", " epsilon 1.00e-08 \n", " ELBO draws 10 \n", " \n", " LBFGS Status: \n", " CONVERGED 4 \n", " L-BFGS iterations mean 22 ± std 6 \n", " \n", " Path Status: \n", " SUCCESS 4 \n", " ELBO argmax mean 8 ± std 9 \n", " \n", " Importance Sampling: \n", " Method psis \n", " Pareto k 0.75 \n", " \n", " Timing (seconds): \n", " Compile 4.53 \n", " Compute 0.09 \n", " Total 4.62 \n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "rng = np.random.default_rng(123)\n", "with model:\n", " idata_ref = pm.sample(target_accept=0.9, random_seed=rng)\n", " idata_path = pmx.fit(\n", " method=\"pathfinder\",\n", " jitter=12,\n", " num_draws=1000,\n", " random_seed=123,\n", " )" ] }, { "cell_type": "markdown", "id": "d35bebf2", "metadata": {}, "source": [ "Just like `pymc.sample()`, this returns an idata with samples from the posterior. Note that because these samples do not come from an MCMC chain, convergence can not be assessed in the regular way." ] }, { "cell_type": "code", "execution_count": 4, "id": "08ebf220", "metadata": {}, "outputs": [ { "data": { "image/png": "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dEjS4Qm+vzd06FANHTq00vqHH35YW7Zs0ZtvvqmgoCA99NBDeuSRR3ThhRfqsssu09tvv61HH31UTZs21d///vca516yZEm1j2VnZysxMbHG+/y9/fv3S5KaN29e530BgYo5PQDqrH///lq1apWuv/56tWnTxjMh+KabbtLXX3/tOU26TZs2nq/529/+pj179uipp56qUIbq4uhDWr8/lPb79dUd/vq9n3/+WU8++aTGjBmj008/XcXFxXryySfVsWNHzZs3T9ddd53eeecddezYUU8++aRKSkrq/o3Ug5ycHEmHL2QI2IqRHgA+0bFjR02fPr3S+pKSEq1Zs0aS1LNnT8/68gvljR8/XuPHj6/wNeWjEq+99prmz58v6fBtLo4nISFBbrdbxcXF2rRpk+cw29E2bdokSerUqZM335Zuu+02hYeHe64qvX79euXl5enKK69UUNDh/zcGBQVp8ODBeuGFF/Tjjz+qS5cuXu27IZWPJvXp08dwEsAcSg+AerVw4ULt379fbdu2VY8ePSo9XtUtIcoVFBRUmntzLCEhIerRo4eWL1+upUuXVjlXpvy6Qqeffvpx9zd//nwtWLBA06ZN84yQlBey31+JuXy5unt7mfTLL794bqdRl6tdA4GOw1sA6k1RUZHnNg4333xzhYsFfvvtt3Icp8o/5XN8yicNH+uGmb93ySWXSJIyMjIqXX04JydHmZmZko5cNLE6hw4d0oQJE9S1a1fdcsstnvXlZ0H9/PPPFbYvX27VqpXXWRtCQUGBrrnmGh06dEidO3c+7vcNNGaUHgB19sEHH1S42J8kbdmyRSNGjNCqVat06qmn1vpu5FWZM2eOEhISPNeeOdpNN92kVq1aad26dZo4caLnuj27d+/WlVdeqZKSEp1//vkVDrVV5bHHHtPPP/+s5557TiEhRwbF27Vrpw4dOuj999/Xd999J+nwbSzef/99tWnTxuvDZvWtoKBA77zzjk4//XR9+umnatq0qd58881KV6kGbMLhLQB19vHHH2vatGmKjo5WQkKCCgsLtX79ejmOo1NPPVUff/yx51RxX9i/f782b95c5WPNmzfX7NmzdeGFF+qZZ57R66+/rri4OK1bt04HDx5UQkKC/vWvfx1z/zk5OZo6dapGjx6tAQMGVHjM5XIpPT1dY8eOVe/evfWHP/xBGzZs0KFDh5SW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Ky4uTqGhoWrTpo0uvfRSLV++vMqvaej3IldkRo3ddtttatGiRYV1rVq1MhPGTy1evFhDhgxRaGioRo8eraioKL399tu66qqrlJ2drUmTJpmOGBCioqI0YcKESut79erV8GH82H333afNmzerVatWio2N1ebNm6vd9sCBAxowYIC+/fZbDRo0SH/605+0Zs0aPfXUU1q0aJGWLFmipk2bNmB6/1CT17Dcddddp4SEhArrQkLs/bX67LPP6n/+53900kknadCgQWrdurU2btyod999V++++65ef/11XXHFFZ7tjbwXHcBL1113nSPJycrKMh3FrxUXFzsnnXSSExYW5qxatcqzft++fU6XLl2ckJAQZ8OGDQYTBob4+HgnPj7edIyA8MknnzjZ2dmO4zjOo48+6khyZsyYUeW2kydPdiQ5f/vb36pcP3ny5PqO65dq8hqmpaU5kpxFixY1XMAAMHfuXOeLL76otP6LL75w3G63ExMT4xQWFnrWm3gvcngL8LHPPvtMP//8s6688kp1797dsz4yMlL333+/SkpKNGPGDIMJ0dicd955io+PP+52juPo5ZdfVrNmzTR58uQKj917772Kjo7W9OnT5Vh4+TZvX0NU75JLLtFZZ51Vaf1ZZ52lgQMHas+ePVq7dq0kc+9Fe8fhUGsLFixQfn6+wsLC1K1bN6WkpCg4ONh0LL+xePFiSdLgwYMrPVa+7vPPP2/ISAHr0KFDmjlzprZt26bo6Gj17dtXf/zjH03HClgbN27U9u3bNWTIkEqHDcLDw3X22Wdr3rx5+umnn9SpUydDKQPHl19+qRUrVig4OFgnn3yyzjvvPK7UXA232y3pyOE/U+9FSg9qbPz48RWWO3furNdff109evQwlMi/bNy4UZKq/KBGR0erVatWnm1wbDt27NCYMWMqrBs6dKhmzZrFPLJaONZ78+j1GzdupPR44fcjFLGxsZo5c6YGDRpkKJF/ysnJUWZmptq0aaPTTjtNkrn3Ioe34LUBAwZo7ty52rJliwoKCrRu3TpNmDBBP//8swYPHqzt27ebjugX9u7dK+nwJNyqNG/e3LMNqnf99ddr8eLF+u2337Rv3z599dVXOv/88/XRRx/p4osvtvIQTF158948ejtULTk5WTNnzlR2drYKCgq0ceNGPfjgg8rLy9PFF1+sNWvWmI7oN4qLi3XNNdfo0KFDeuyxxzxHBUy9Fyk9lmnVqlW1p1pW9af8UI0kpaam6pJLLlH79u0VHh6uk08+WU899ZTuvvtu7d69W0899ZS5bwyNzuTJkzVgwAC1atVKkZGROv300zV//nz1799f//73v/XBBx+YjghLjRgxQtdee63i4+MVHh6ujh076r777tO0adNUWFiohx56yHREv1BWVqbrr79eX3zxhf785z/rmmuuMR2Jw1u2+dOf/qT8/Hyvt2/Tps1xtxk7dqweeeQRLV26tC7RGo3y/7lU9z+Uffv2Vfu/GxxbUFCQUlNTtWTJEi1dulTDhg0zHSmgePPePHo71Mx1112nW265hZ+FOjxR+c9//rNeeeUVXX311XrppZcqPG7qvUjpscyzzz7r832Wz604ePCgz/cdiI4+Ft2zZ88Kj+Xm5mrXrl3q27eviWiNAu+32jv6vVmV482zwLGFhoYqMjLS+vdmWVmZxo0bpxkzZuhPf/qTMjIyFBRU8cCSqfcih7dQZ+VX2vz9RbpsNWDAAEnSxx9/XOmx8nXl26DmeL/VXqdOndS2bVstXbpUBw4cqPBYYWGhvvjiC7Vt21YdO3Y0lDCwbdy4Ubm5uVa/N48uPKNGjdKsWbOqPLvX1HuR0gOv7NixQz///HOl9du2bdOtt94q6fChM0jnnnuukpKS9Nprr+nbb7/1rM/Pz9eDDz6okJCQSmckoaIffvhBeXl5ldYvWbJE//jHPxQWFqZLLrmk4YMFOJfLpXHjxmn//v164IEHKjz26KOPKjc3V+PGjZPL5TKU0P/l5+fru+++q7Q+NzdXY8eOlWTvz8KysjKNHTtWM2bM0OWXX65XXnml2suZmHovuhxOgYAXFi9erHPOOUf9+/fXySefrJiYGGVnZ2v+/Pk6cOCArrvuOs2YMYMflv+1aNEiDRkyRGFhYfrTn/6k5s2b6+2331ZWVpYeeugh/f3vfzcd0a+lp6frscce07nnnquEhASFhYXp+++/18cff6ygoCC99NJLGjdunOmYfuPll1/WkiVLJElr167VqlWr1K9fP8//kkeMGKERI0ZIOnzp//79+3su/d+zZ0+tWbNGH374oZKTk629DYW3r2F2drYSExPVq1cvnXbaaWrdurW2bdumDz/8ULt379agQYM0f/58hYaGmvx2jEhPT9eUKVPUrFkz3XbbbVXekmPEiBFKTk6WZOi96PNrPKNRysnJccaNG+d069bNiY6OdkJCQpyWLVs6gwYNcmbPnm06nl9avny5M3ToUCcqKsqJiIhwevXq5bzyyiumYwWExYsXO1dccYXTsWNHJzIy0nG73U779u2d0aNHO8uXLzcdz++U3yKmuj9paWkVts/Ly3Nuv/12p0OHDo7b7XY6dOjg3H777U5eXp6Zb8APePsa7t271/nLX/7i9OzZ02nVqpUTEhLiREVFOf3793deeuklp6SkxOw3YtDxXkNVcWuPhn4vMtIDAACswJweAABgBUoPAACwAqUHAABYgdIDAACsQOkBAABWoPQAAAArUHoAAIAVKD0AAMAKlB4AAGAFSg8AALACpQcAAFiB0gMAAKxA6QEAAFb4/7kBDfNj9pD1AAAAAElFTkSuQmCC", "text/plain": [ "