Pyro:基于 PyTorch 的深度通用概率编程库——设计理念、安装配置与源码结构解析
人工智能机器学习深度学习概率编程【免费下载链接】pyroDeep universal probabilistic programming with Python and PyTorch项目地址https://gitcode.com/gh_mirrors/py/pyro点击查看免费下载Pyro 是一个构建于 PyTorch 之上的灵活、可扩展的深度概率编程库Deep Universal Probabilistic Programming。本文将围绕仓库根目录 README.md 展开系统讲解 Pyro 的设计理念Universal / Scalable / Minimal / Flexible、从稳定版到开发版的完整安装方案、Docker 容器化运行方式并借助仓库源码setup.py、pyro/init.py、docker/Dockerfile深入剖析其包结构、依赖矩阵与核心 API帮助读者完成从环境搭建到深入源码的第一步。一、Pyro 是什么设计哲学与项目背景Pyro 的核心定位是基于 PyTorch 的通用概率编程库。所谓通用概率编程Universal Probabilistic Programming是指程序语言本身可以表达任意可计算的概率分布。README 将 Pyro 的设计原则概括为四条这四条原则也直接决定了后续安装、使用与源码阅读的方式Universal通用Pyro 是一个通用 PPL能够表达任何可计算的概率分布Scalable可扩展相比手写代码Pyro 在扩展到大规模数据集时仅有很小的额外开销Minimal极简Pyro 以少量强大、可组合的抽象为核心实现保持敏捷与可维护性Flexible灵活在需要时自动化、在必要时可完全控制——通过高层抽象表达生成模型与推断模型同时为专家提供自定义推断的便捷入口。从项目背景看Pyro 最初由 Uber AI 开发2019 年成为 Linux Foundation 项目如今由社区贡献者与 Broad Institute 的专门团队共同维护。这一点在 pyro/init.py 的版权头2017–2019 Uber Technologies与 setup.py 的authorUber AI Labs字段中均可得到印证。二、版本与包结构速览在安装之前先理解 Pyro 的版本机制与顶层结构会很有帮助。2.1 版本号生成机制Pyro 的版本信息采用静态前缀 动态构建策略pyro/init.py 中定义version_prefix 1.9.1setup.py 在安装时会读取该前缀并检查当前 HEAD 是否指向 release tag若否则追加short commit sha形成形如1.9.1abc1234的版本号并写入自动生成的pyro/_version.py运行时优先导入_version.py的__version__导入失败则回退到version_prefix。因此同一仓库代码在不同 git 提交下构建出的版本号会带上提交哈希这有助于精确定位复现问题的代码版本。2.2 顶层包结构Pyro 的顶层命名空间由 pyro/init.py 导出主要包括类别导出项随机变量原语sample、deterministic、factor、module、random_module参数与状态param、get_param_store、clear_param_store、set_rng_seed批量/并行plate、iarange、irange、plate_stack、subsamplePPL 效应处理poutine、condition、do、markov验证与渲染enable_validation、validation_enabled、render_model、log、barrier其中sample、param、plate等原语均在 pyro/primitives.py 中实现例如param()会将变量存入全局参数存储区ParamStoreDict见 pyro/primitives.py支持惰性初始化传lambda以避免大型张量在首次访问前被求值以及约束声明。从 docs/source/index.rst 可以看到Pyro 文档体系分为Pyro Coregetting_started、primitives、inference、distributions、parameters、nn、optimization、poutine、ops、settings、testing与Contributed Codeautoname、bnn、epidemiology、forecast、funsor、gp、oed、timeseries、tracking 等两大部分与仓库pyro/contrib/目录一一对应。三、安装从稳定版到开发版README 提供了三档安装路径稳定版PyPI wheel / 源码、开发分支、以及带 extras 的完整依赖安装。3.1 安装稳定版pippip install pyro-ppl这是官方推荐的标准方式PyPI 上发布的pyro-ppl包即对应稳定 release。3.2 从源码安装稳定版git clone gitgithub.com:pyro-ppl/pyro.git cd pyro git checkout master # master 分支锁定到最新 release pip install .README 特别强调master分支被固定指向最新发布版本因此从源码安装时先checkout master可保证拿到的是稳定代码而非开发中的提交。3.3 安装带 extras 的完整依赖pip install pyro-ppl[extras]extras是运行examples/与tutorials/中概率模型所需的附加依赖。查看 setup.py 的EXTRAS_REQUIRE列表其具体内容为notebook、ipywidgets运行 Jupyter 教程tutorial 目录下大量.ipynb依赖graphviz0.8模型渲染render_model与结构可视化matplotlib1.3、seaborn0.11.0、pandas、pillow8.3.1、scikit-learn、wget、scipy1.1数据加载、绘图与后处理torchvision0.15.0MNIST 等图像数据集如 examples/vae 与 examples/cvae 使用。README 同时给出一个重要提醒请确保所运行的模型来自与你已安装版本一致的 Pyro 源码 release避免 extras 与核心库版本错位。3.4 安装 dev 分支开发分支对应master之外的最新特性README 给出三种方式# 方式一直接用 pip 从 git 安装 pip install githttps://github.com/pyro-ppl/pyro.git # 方式二带 extras pip install githttps://github.com/pyro-ppl/pyro.git#eggproject[extras] # 方式三clone 后本地安装 git clone https://github.com/pyro-ppl/pyro cd pyro pip install . # 如需运行 examples/tutorials 中的模型pip install .[extras]3.5 依赖矩阵与 Python 版本要求从 setup.py 的install_requires可确认 Pyro 的核心运行时依赖依赖版本要求用途torch2.0深度学习后端与张量计算numpy1.7部分 PyTorch 功能所需的基础数值库opt_einsum2.3.2高效张量缩并einsum运算服务于 ops/einsum 模块pyro-api0.1.1Pyro 与 Funsor 等外部库的 API 约定层tqdm4.36训练/采样过程进度条同时python_requires3.8classifiers 声明支持 Python 3.83.11POSIX Linux 与 macOS。此外 setup.py 还定义了若干可选 extras 组testpytest、black、ruff 等 CI 相关、devsphinx 文档、nbval 笔记本校验、mypy 等、profile基准测试与可视化、horovodexamples/svi_horovod.py 依赖、lightningexamples/svi_lightning.py 依赖以及funsor指向 pyro-ppl/funsor 指定 commit 的 Git 依赖。四、使用 Docker 容器运行 PyroREADME 将 Docker 运行指引指向 docker/README.md。结合该文档与 docker/Dockerfile、docker/Makefile 与 docker/install.sh可以还原完整的容器化工作流。4.1 构建前置条件docker 17.05支持多阶段构建与 ARG 特性nvidia-docker仅构建/运行 GPU 镜像时需要对应make build-gpu、make run-gpu、make notebook-gpu。4.2 构建 CPU / GPU 镜像docker目录下的 Makefile 封装了常用命令关键构建参数如下参数默认值含义python_version3.12容器内 Python 版本pyro_branchrelease使用 PyPI wheelrelease或指定 git 分支如devpytorch_branchrelease使用预编译 PyTorch 或从源码构建指定分支pytorch_whlcpu/cu126PyTorch wheel 类型CPU 或 CUDA 12.6例如要构建一个运行在 GPU 上、Pyro 使用dev分支、PyTorch 使用master分支、Python 3.6 的镜像make build-gpu pyro_branchdev pytorch_branchmaster python_version3.6该命令会生成名为pyro-gpu-dev-master-3.6的镜像镜像命名规则为pyro-cpu|gpu-pyro_branch-pytorch_branch-python_version。CPU 版本使用make build。从 docker/Dockerfile 可以看到镜像的完整构建链路以ubuntu:24.04为基底GPU 版为nvidia/cuda:12.6.3-cudnn-runtime-ubuntu24.04见 docker/Makefile安装build-essential cmake git wget ca-certificates等工具链 → 创建非 root 用户pyromancer→ 安装 Miniconda → 执行 docker/install.sh 安装 PyTorch 与 Pyro。默认工作目录为/home/pyromancer/workspace容器启动后直接运行 Jupyter notebookEXPOSE 8888。docker/install.sh 中的安装逻辑值得注意PyTorch 默认从https://download.pytorch.org/whl/${pytorch_whl}安装 wheel若pytorch_branch非release则 clone PyTorch 源码、checkout 指定分支并pip install -e .从源码构建GPU 场景还需conda install -c pytorch magma-cuda*Pyro 默认pip install pyro-ppl若pyro_branch非release则 clone 后 checkout 对应分支并执行pip install -e .[dev]。4.3 启动容器与 Notebook镜像构建完成后# 以 bash 进入 CPU 容器默认行为 make run # 以 ipython 进入 make run cmdipython # 以 bash 进入 GPU 容器 make run-gpu # 启动 Jupyter notebookCPU/GPU make notebook make notebook-gpu其中make notebook-gpu imgpyro-gpu-dev-master-3.6可用于指定自定义镜像名。Notebook 服务器监听 8888 端口-p 8888:8888终端会打印访问链接。容器与宿主机之间通过$HOST_WORK_DIR默认~/pyro_docker见 docker/Makefile与容器内$DOCKER_WORK_DIR/home/pyromancer/workspace/shared建立共享卷方便代码与数据互传。make help可查看全部可用命令。Mac 用户注意请在 Docker 的Preferences → Advanced中把内存从默认 2GB 至少提升到 4GB尤其是从源码构建 PyTorch 时。五、安装后的快速验证与深入阅读路径安装完成后可通过以下方式验证环境并继续深入检查版本python -c import pyro; print(pyro.__version__)应输出如1.9.1或带sha后缀的 dev 版本。运行官方示例仓库examples/目录提供了大量可运行的模型。以 examples/hmm.py 为例它演示了通过TraceEnum_ELBO在 SVI 中精确边缘化离散隐变量的折叠 SVIcollapsed SVI方法涉及pyro.infer.SVI、pyro.infer.autoguide.AutoDelta、pyro.ops.indexing.Vindex等核心 API。可参考 examples/baseball.pyHMC 后验推断或 examples/dmm.py深度马尔可夫模型 SVI作为起点。查看模型测试基准tests/test_examples.py 中列出了全部示例的运行命令与最小参数规模如baseball.py --num-samples200 --warmup-steps100 --num-chains2可直接对照运行以快速验证安装。阅读文档源码docs/source/下的 RST 文档getting_started.rst、primitives.rst、inference.rst 等与tutorial/目录中的交互式教程如 tutorial/source/intro_part_i.ipynb、tutorial/source/bayesian_regression.ipynb是官方推荐的入门路径。六、引用规范如果学术或技术文章中使用了 PyroREADME 提供了官方推荐引用格式对应 2019 年发表于 J. Mach. Learn. Res. 的《Pyro: Deep Universal Probabilistic Programming》一文article{bingham2019pyro, author {Eli Bingham and Jonathan P. Chen and Martin Jankowiak and Fritz Obermeyer and Neeraj Pradhan and Theofanis Karaletsos and Rohit Singh and Paul A. Szerlip and Paul Horsfall and Noah D. Goodman}, title {Pyro: Deep Universal Probabilistic Programming}, journal {J. Mach. Learn. Res.}, volume {20}, pages {28:1--28:6}, year {2019}, url {http://jmlr.org/papers/v20/18-403.html} }小结Pyro 以通用、可扩展、极简、灵活为设计准则将概率编程的抽象能力建立在 PyTorch 的高性能张量计算之上。通过 README 与仓库源码的对照可以看到稳定版安装pip install pyro-ppl与 extras 依赖矩阵由 setup.py 完整定义dev 分支与源码构建流程清晰Docker 工作流由 docker/Dockerfile、docker/Makefile 与 docker/install.sh 三件套支撑覆盖 CPU/GPU、多 Python 版本与自定义分支组合。无论你是初次接触概率编程的新手还是希望深度定制推断流程的专家都可以从上述安装路径出发再经由 examples 与 tests/test_examples.py 中的可运行示例进入 Pyro 的世界。赞分享人工智能机器学习深度学习概率编程【免费下载链接】pyroDeep universal probabilistic programming with Python and PyTorch项目地址https://gitcode.com/gh_mirrors/py/pyro点击查看免费下载相关推荐【亲测免费】 Pyro 深度通用概率编程库安装与使用教程Pyro 深度通用概率编程库安装与使用教程 1. 项目目录结构及介绍 Pyro 的源代码仓库在 GitHub https://github.com/pyro p人工智能机器学习深度学习概率编程Pyro深度概率编程入门指南与核心概念解析Pyro深度概率编程入门指南与核心概念解析 Pyro是一个基于PyTorch构建的深度概率编程库代表了概率编程语言PPL领域的重要创新。本文将全面介绍P人工智能机器学习深度学习概率编程OpenAEV终极指南如何构建企业级安全验证平台的完整教程OpenAEV终极指南如何构建企业级安全验证平台的完整教程 OpenAEVOpen Adversarial Exposure Validation Plat上一篇攻克 Rust Toolchain GitHub Action 十大痛点从安装到优化的完整指南下一篇Mortar架构设计微服务通信模式与最佳实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

ChatGPT-Shortcut 同步更新指南:让 Vercel 部署的 Fork 自动跟随上游

ChatGPT-Shortcut 同步更新指南:让 Vercel 部署的 Fork 自动跟随上游

AI 应用提示工程人工智能前端 【免费下载链接】ChatGPT-Shortcut Stop writing prompts from scratch — a searchable prompt library for ChatGPT, Claude, Gemini and Cursor Русский 한국어 العربية हिन्दी ไทย | 别再从头写提示词&…

2026/9/25 2:34:10 阅读更多 →
Pikachu靶场SQL注入通关笔记:从环境搭建到手工注入与sqlmap验证

Pikachu靶场SQL注入通关笔记:从环境搭建到手工注入与sqlmap验证

手边正好在整理靶场笔记,看到Pikachu的SQL注入模块,索性把从环境搭建到数字型、字符型、搜索型这几个题目的通关思路完整写下来。对刚开始刷靶场的朋友来说,这套题算是性价比很高的一课,因为注入的每种形态都有,搞懂它…

2026/9/25 2:34:10 阅读更多 →
html-ppt-skill 的 tech-sharing 全 deck 模板:拆解一套 GitHub 暗色技术分享幻灯片的结构与落地方式

html-ppt-skill 的 tech-sharing 全 deck 模板:拆解一套 GitHub 暗色技术分享幻灯片的结构与落地方式

AI 技能/插件前端 【免费下载链接】html-ppt-skill HTML PPT Studio — AgentSkill with 24 themes, 31 layouts, 20 animations for building professional HTML presentations 项目地址: https://gitcode.com/gh_mirrors/ht/html-ppt-skill 点击查看 免费下载 本…

2026/9/25 2:33:10 阅读更多 →

最新新闻

ng-zorro-antd Cascader 搜索功能实战:从 nzShowSearch 到自定义 filter/sorter

ng-zorro-antd Cascader 搜索功能实战:从 nzShowSearch 到自定义 filter/sorter

UI组件前端 【免费下载链接】ng-zorro-antd Angular UI Component Library based on Ant Design 项目地址: https://gitcode.com/gh_mirrors/ng/ng-zorro-antd 点击查看 免费下载 导读 本文围绕 ng-zorro-antd 级联选择组件(Cascader)的搜索…

2026/9/25 3:53:03 阅读更多 →
用 acbuild 构建 ACI 并在单 Pod 中运行:rkt 的 PostgreSQL + Play Framework 组合镜像示例深度解析

用 acbuild 构建 ACI 并在单 Pod 中运行:rkt 的 PostgreSQL + Play Framework 组合镜像示例深度解析

容器运行时云原生网络 【免费下载链接】rkt [Project ended] rkt is a pod-native container engine for Linux. It is composable, secure, and built on standards. 项目地址: https://gitcode.com/gh_mirrors/rk/rkt 点击查看 免费下载 本指南基于 rkt 仓库 Doc…

2026/9/25 3:53:03 阅读更多 →
4PAM通信仿真:MATLAB代码到Simulink模型迁移调试全记录

4PAM通信仿真:MATLAB代码到Simulink模型迁移调试全记录

做通信仿真这几年,我一直有个习惯:先拿MATLAB脚本把算法跑通,再挪到Simulink里搭模型。这次手搓4PAM的发射接收链路,本来以为就是个“搬砖活”,结果硬是从代码到模型折腾了一整天,编译报错、波形不显示、误…

2026/9/25 3:53:03 阅读更多 →
医疗器械包装验证方案全解析:密封强度、微生物屏障与加速老化避坑指南

医疗器械包装验证方案全解析:密封强度、微生物屏障与加速老化避坑指南

简介:一份面向医疗器械研发、注册与质量控制人员的包装完整性验证方案文档,对应 YY/T0681.1、YY/T0313 等标准要求,可直接用于包装系统符合性评价与试验记录整理。文档共 1 个 doc 文件,压缩包大小约 80KB,虽体量不大&…

2026/9/25 3:53:03 阅读更多 →
2026低空经济风口已至!襄阳想学无人机怎么选?星辰航空真实学员案例告诉你答案

2026低空经济风口已至!襄阳想学无人机怎么选?星辰航空真实学员案例告诉你答案

最近低空经济热度持续走高,无人机测绘、电力巡检、商业航拍、农田植保等岗位需求不断增加,不少襄阳本地朋友都在问:襄阳无人机培训哪家好?襄阳无人机培训哪家靠谱?襄阳无人机培训哪家专业?襄阳无人机培训哪…

2026/9/25 3:53:03 阅读更多 →
新疆价钱合理的石墨水泥基改性聚氨酯复合防火保温板厂家避坑挑选指南

新疆价钱合理的石墨水泥基改性聚氨酯复合防火保温板厂家避坑挑选指南

在新疆做外墙保温、墙体保温工程,挑选石墨水泥基改性聚氨酯复合防火保温板厂家,最怕遇到价格虚高、质量不稳、交付延期、检测不合格这些问题,不少施工方都踩过小厂家的坑:要么报价看着低,实际拿到的产品偷工减料厚度不…

2026/9/25 3:52:02 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →