尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

PyTorch 仓库中的 functorch 安装指南:从独立包到内置模块的完整演进与实战

PyTorch 仓库中的 functorch 安装指南:从独立包到内置模块的完整演进与实战 PyTorch 仓库中的 functorch 安装指南从独立包到内置模块的完整演进与实战【免费下载链接】pytorchTensors and Dynamic neural networks in Python with strong GPU acceleration项目地址: https://gitcode.com/GitHub_Trending/py/pytorchfunctorch 是 PyTorch 生态中提供 JAX 风格可组合函数变换vmap、grad、vjp、jvp、jacrev、jacfwd、hessian等的核心库。本文以 functorch/docs/source/install.rst 为骨架完整讲解 functorch 的安装方式、版本演进、与 PyTorch 二进制的关系并结合当前仓库源码给出验证、运行与迁移建议。读完本文你将掌握如何在新老 PyTorch 版本上正确安装与使用 functorch、如何从旧版独立包平滑升级、如何用官方测试与最小示例验证安装是否成功以及 functorch API 在当前仓库中的实际实现位置。核心结论functorch 已并入 PyTorch无需单独安装install.rst开门见山给出了一个关键事实自 PyTorch 1.13 起functorch 已直接包含在 PyTorch 二进制中不再需要单独安装独立的 functorch 包。也就是说只要你按官方流程安装好 PyTorch就可以直接在程序中执行import functorch这一点在当前仓库的源码中得到了充分印证仓库根目录下的 functorch/init.py 不再定义任何独立实现而是通过薄封装把能力转发到torch._functorch子模块详见下文源码印证一节。functorch 已经从独立第三方库正式演变为 PyTorch 核心组件。从旧版升级先卸载旧版独立包如果你的环境里安装的是早期版本的独立 functorch 包functorch 0.1.x 或 0.2.x在升级到 PyTorch 1.13 之前可能需要先将其卸载以避免两个版本的 functorch 并存导致符号冲突或版本混乱pip uninstall functorch卸载完成后再安装新版 PyTorch即可使用随 PyTorch 自带的 functorch。保持向后兼容pip install functorch依然可用官方明确承诺维持向后兼容性pip install functorch这条命令在 PyTorch 1.13 及之后的相当一段时间内依然可用直到官方正式宣布弃用。这一设计主要照顾的是维护同时支持多个 PyTorch 与 functorch 版本库的开发者——他们可以继续用pip install functorch来锁定特定版本组合而不必立刻改写依赖声明。需要注意的是这条兼容路径是渐进式弃用策略的一部分。从当前仓库 torch/_functorch/deprecated.py 的源码可以看到functorch.*顶层 API 自 PyTorch 2.0 起已标记为弃用deprecated官方建议迁移到torch.func.*或torch.vmap等新入口并计划在 PyTorch 2.3 的某个未来版本中删除。因此新项目请优先使用torch.func/torch.vmap命名空间老项目应规划迁移。Colab 环境零安装快速体验install.rst专门为 Google Colab 用户提供了快速上手路径官方维护了一个包含完整安装与体验说明的 Colab Notebook你只需在 Colab 中打开该 Notebook按步骤安装 PyTorch 并导入 functorch即可在云端免费环境里体验全部变换功能无需配置本地 GPU 环境。这是评估 functorch 能力最快、门槛最低的方式。Nightly 版本抢先体验最新特性如果你需要 functorch 的最前沿功能官方建议直接安装 PyTorchnightly每夜构建二进制。根据install.rst的说明自 2022 年 09 月 21 日起import functorch已包含在 nightly PyTorch 二进制中也就是说你不再需要为 nightly 单独拼装 functorch 包。nightly 构建可通过 PyTorch 官网的安装指引获取。这一点与 functorch/README.md 中的从源码安装章节相互呼应README 同样注明截至 2022/09/21functorch 随 nightly PyTorch 二进制一起安装并给出了开发环境下的验证方式详见下文验证安装。历史版本PyTorch 1.11.x / 1.12.x使用独立包对于仍停留在 PyTorch 1.11.x 或 1.12.x 的用户functorch 尚未并入主二进制需要按以下两步操作首先安装对应版本的 PyTorch然后执行pip install functorch该命令会拉取与目标 PyTorch 版本配套的独立 functorch 包。这是唯一需要显式单独安装 functorch的场景。验证安装官方最小示例与测试命令无论通过哪种方式安装安装完成后都建议立即运行验证。这里给出两个层面的验证手段。最小 Python 冒烟测试来自 functorch/README.md 的官方冒烟测试适用于所有安装方式import torch from functorch import vmap x torch.randn(3) y vmap(torch.sin)(x) assert torch.allclose(y, x.sin())这段代码验证了核心变换vmap是否可用vmap(torch.sin)将sin沿 batch 维度向量化其结果应与逐元素x.sin()完全一致。官方单元测试在从源码安装functorch 开发环境的场景下README 建议运行以下测试确认一切正常pytest test/test_vmap.py -v pytest test/test_eager_transforms.py -v此外还有两项依赖补充说明AOTAutograd 有额外的可选依赖可通过pip install networkx安装运行 functorch 测试前需要安装测试依赖expecttest与pyyaml。当前仓库中对应的测试文件位于 test 目录下包括test/test_vmap.py、test/test_eager_transforms.py等测试覆盖了各变换的正确性、组合性与异常路径。源码印证functorch 在当前仓库中的真实结构深入仓库源码可以更清楚地理解并入 PyTorch的具体形态。当前仓库对 functorch 采用了分层封装的架构顶层命名空间functorch/init.py 负责导出vmap、grad、hessian、jacfwd、jacrev、jvp、vjp、make_functional、make_functional_with_buffers、combine_state_for_ensemble、functionalize等 API其__version__直接取torch.__version__进一步证明 functorch 与 PyTorch 版本完全绑定。弃用适配层torch/_functorch/deprecated.py 是functorch.*API 的薄封装每个函数都通过warn_deprecated(...)发出FutureWarning并转发到对应的新实现vmap→torch.vmap/torch.func.vmap见 torch/_functorch/apis.pygrad、grad_and_value→torch.func.gradvjp、jvp、jacrev、jacfwd、hessian、functionalize→torch.func.*对应实现make_functional、make_functional_with_buffers→torch.func.functional_callcombine_state_for_ensemble→torch.func.stack_module_state核心实现层vmap的完整语义、参数解析与批处理规则定义在 torch/_functorch/vmap.py 与 torch/_functorch/apis.pygrad、vjp、jvp、jacrev、jacfwd、hessian的 eager 模式实现在 torch/_functorch/eager_transforms.pymake_functional、make_functional_with_buffers、combine_state_for_ensemble的模块处理逻辑在 torch/_functorch/make_functional.py。从 torch/_functorch/apis.py 的vmap文档字符串可以提炼出vmap各参数的实际语义方便你按需使用参数含义默认值func被向量化的 Python 函数接收一个或多个 Tensor 参数返回一个或多个 Tensor必填in_dims指定每个输入沿哪个维度被映射可为 int 或与输入同构的嵌套结构None表示该输入没有映射维度0out_dims指定映射维度出现在输出的哪个位置为元组时逐个输出指定0randomness控制各 batch 间的随机性different各 batch 随机数不同、same各 batch 随机数相同、error调用随机函数直接报错。注意仅对 PyTorch 随机算子生效不影响 Pythonrandom与 numpy 随机性errorchunk_size若为None则一次性对整个输入做 vmap否则按每chunk_size个样本分块计算chunk_size1等价于 for 循环可用于缓解显存/内存压力None同理grad(func, argnums0, has_auxFalse)假设func返回单元素 Tensor计算输出关于第argnums个输入的梯度jacrev/jacfwd分别用反向与正向自动微分计算雅可比矩阵可相互嵌套或自嵌套生成 Hessian。迁移路线与使用建议综合install.rst的安装语义与当前仓库的源码状态可以给出如下落地建议新项目直接安装 PyTorch 1.13推荐使用最新稳定版或 nightly使用torch.func.vmap、torch.func.grad等新命名空间避免依赖functorch.*的弃用警告。老项目 / 多版本库维护者可继续使用pip install functorch的兼容路径但应尽快规划迁移迁移目标 API 对照表见上文弃用适配层一节。PyTorch 1.11/1.12 用户先装 PyTorch再pip install functorch升级到 1.13 前先pip uninstall functorch。尝鲜最新特性安装 nightly 构建的 PyTorchfunctorch 随附其中无需单独安装。云端快速体验优先使用官方 Colab Notebook零配置即可完整体验。安装后必做验证运行上述冒烟测试若为源码开发环境再运行pytest test/test_vmap.py -v与pytest test/test_eager_transforms.py -v。总结functorch 的安装史本质上就是它与 PyTorch 逐步深度融合的历史从 PyTorch 1.13 起并入主二进制到 nightly 随附、pip install functorch保持兼容再到 PyTorch 2.0 起以torch.func为最终形态。无论你处于哪个版本阶段只要遵循 install.rst 的安装路径并对照本文的源码与验证指引就能快速、正确地搭建起可组合函数变换的完整工作环境。【免费下载链接】pytorchTensors and Dynamic neural networks in Python with strong GPU acceleration项目地址: https://gitcode.com/GitHub_Trending/py/pytorch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表