ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Pyro:基于 PyTorch 的深度通用概率编程库——设计理念、安装配置与源码结构解析

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),仅供参考
返回列表