{"library":"pyro-ppl","title":"Pyro: A Python library for probabilistic modeling and inference","description":"Pyro is a flexible, scalable deep probabilistic programming library built on PyTorch. It enables expressive deep probabilistic modeling, unifying modern deep learning and Bayesian inference. Maintained by community contributors, including a team at the Broad Institute, Pyro is under active development with frequent releases.","language":"python","status":"active","last_verified":"Fri May 15","install":{"commands":["pip install torch\npip install pyro-ppl"],"cli":null},"imports":["import pyro","import pyro.distributions as dist","from pyro.infer import SVI, Trace_ELBO, MCMC, NUTS","from pyro.optim import Adam"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import torch\nimport pyro\nimport pyro.distributions as dist\nfrom pyro.infer import SVI, Trace_ELBO\nfrom pyro.optim import Adam\n\n# Configure PyTorch for deterministic results (optional)\ntorch.manual_seed(1);\n\n# 1. Define a probabilistic model\ndef model(data):\n    # Global parameter: probability of success 'theta' for a Bernoulli distribution\n    theta = pyro.sample(\"theta\", dist.Beta(1.0, 1.0)) # Prior for theta\n    # Observe data using pyro.plate for vectorized computation\n    with pyro.plate(\"data_loop\", len(data)):\n        pyro.sample(\"obs\", dist.Bernoulli(theta), obs=data)\n\n# 2. Define a guide (variational distribution)\ndef guide(data):\n    # Learnable parameters for the Beta distribution approximating theta\n    alpha_q = pyro.param(\"alpha_q\", torch.tensor(1.0), constraint=dist.constraints.positive)\n    beta_q = pyro.param(\"beta_q\", torch.tensor(1.0), constraint=dist.constraints.positive)\n    pyro.sample(\"theta\", dist.Beta(alpha_q, beta_q))\n\n# 3. Generate synthetic data (e.g., 8 heads, 2 tails)\ndata = torch.tensor([1.0]*8 + [0.0]*2)\n\n# 4. Set up an optimizer and SVI\noptimizer = Adam({\"lr\": 0.01})\nsvi = SVI(model, guide, optimizer, loss=Trace_ELBO())\n\n# 5. Run inference\nn_steps = 1000\nfor step in range(n_steps):\n    loss = svi.step(data)\n    if step % 100 == 0:\n        print(f\"Step {step}: Loss = {loss:.4f}\")\n\n# 6. Extract learned parameters\nalpha_q_learned = pyro.param(\"alpha_q\").item()\nbeta_q_learned = pyro.param(\"beta_q\").item()\nprint(f\"\\nLearned parameters for theta (Beta distribution): alpha_q={alpha_q_learned:.2f}, beta_q={beta_q_learned:.2f}\")\n\n# Example: Sample from the inferred posterior\nposterior_theta_samples = [guide(data).item() for _ in range(1000)]\nprint(f\"\\nMean of posterior theta samples: {torch.tensor(posterior_theta_samples).mean():.2f}\")","lang":"python","description":"This quickstart demonstrates a simple Bayesian coin-tossing model using Stochastic Variational Inference (SVI). It defines a probabilistic `model`, a variational `guide`, uses synthetic data, performs inference, and extracts the learned posterior parameters for the coin's bias.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-15","installed_version":"1.9.1","pypi_latest":"1.9.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":40,"avg_install_s":67.5,"avg_import_s":7.1,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"torch","exit_code":1,"wheel_type":null,"failure_reason":"no_wheel","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"torch","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":76.2,"import_time_s":4.95,"mem_mb":69.5,"disk_size":"4.7G"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"torch","exit_code":1,"wheel_type":null,"failure_reason":"no_wheel","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"torch","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":71.2,"import_time_s":7.95,"mem_mb":75.4,"disk_size":"4.8G"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"torch","exit_code":1,"wheel_type":null,"failure_reason":"no_wheel","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"torch","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":62.2,"import_time_s":9.09,"mem_mb":74.2,"disk_size":"4.7G"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"torch","exit_code":1,"wheel_type":null,"failure_reason":"no_wheel","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"torch","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":60.2,"import_time_s":6.41,"mem_mb":74.5,"disk_size":"4.7G"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"torch","exit_code":1,"wheel_type":null,"failure_reason":"no_wheel","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"torch","exit_code":1,"wheel_type":null,"failure_reason":"timeout","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}