PyTorch 1.11 发布,带来 TorchData 和 functorch 两个新库

开发 后端
PyTorch 1.11 于 2022 年 3 月 10 日发布。最新的迭代包括来自 434 位贡献者的 3,300 多个新提交。PyTorch 还发布了两个新库 TorchData 和 functorch 的 beta 版本。

现在,您可以在Python API中干净地复制 Tensor 对象上的所有属性,而不仅仅是简单的 Tensor 属性。在 torch.linspace 和 torch.logspace 中,Steps 参数不再是可选的。在 PyTorch 1.10.2 中该参数默认为 100。现在,它不再是一种选择。PyTorch 还删除了错误公开的 torch.hub.import_module 函数。不推荐在具有不同维数的张量上调用 xT。现在,它只接受 0 或 2 维的张量。

C++前端标头现在减少为仅包含使用的 aten 运算符的子集。现在,如果用户包含来自 C++ 前端的标头,则可能不会传递包含 aten 运算符。但是,用户可以直接在他们的文件中添加#include <ATen/ATen.h> 以保持包含每个aten 运算符的旧行为。PyTorch 1.11 还删除了 c10::List 和 c10::Dict 移动构造函数的自定义实现。语义已从“make the moved-from List/Dict empty”变为“keep the moved-from List/Dict unchanged”。

对于CUDA,THCeilDiv 函数和相应的 THC/THCDeviceUtils.cuh 头文件、THCudaCheck 和 THCudaMalloc()、THCudaFree()、THCThrustAllocator.cuh 已被删除。

新特性

对于 Python API,PyTorch 1.11 添加了 set_deterministic_debug_mode 和 get_deterministic_debug_mode,n 维 Hermitian FFT:torch.fft.ifftn 和 torch.fft.hfftn,Wishart 分布到 torch.distributions。PyTorch 为 torch 和 torch.linalg 模块添加了对 Python Array API 标准的初步支持。它实现了 Python Array API 定义的 90% 以上的运算符,包括用于改进 DLPack 支持的 torch.from_dlpack 操作。他们还将 torch.testing 从原型转移到了测试版。

对于Autograd,PyTorch 1.11 有一个新的 torch.utils.checkpoint 实现,它不使用可重入 autograd。转发模式 AD 现在支持大多数操作,并包括 ctx.save_for_forward 函数到 autograd.Function。autograd.forward_ad.unpack_dual 现在将返回一个命名元组而不是普通元组。

线性代数运算支持包括对 torch.linalg.{eig, inverse, houseer_product, qr} 和 torch.*_solve 的正向 AD 支持。他们还为 torch.linalg.lstsq 添加了前向和后向 AD 支持,并为 linalg.pinv 添加了更广泛的输入。

对于ONNX,Pytorch 1.11 支持 opset 版本 15,将 nn.Module 调用导出为 ONNX 本地函数,导出 tanhshrink、hardshrink、softshrink、__xor__、isfinite log10 和对角线等新操作。它还支持使用 Apex O2 导出。

对于 Infra (Releng),Pytorch 1.11 增加了对 ROCm 4.3.1、ROCm 4.5.2、CUDA 11.5、CUDA 启用 Bazel 构建、Python 3.10 的支持。

Pytorch 1.11 现在引入了 FlexiBLAS 构建支持、用于 cpp 扩展构建的 IS_LINUX 和 IS_MACOS 全局变量、用于 iOS CMake 构建的 ARC 以及对 IBM z14/15 SIMD 的支持。

新的更新还包括一个实验标志,允许用户指定首选的线性代数库。添加了 linalg.matrix_exp、linalg.cross 和 linalg.diagonal(torch.diagonal 的别名)等操作。

对于 CUDA,新的更新引入了 Jiterator,使用户能够在运行时编译很少使用的 CUDA 内核。cuSPARSE 描述符和更新的 CSR addmm、addmv_out、nvidia-smi 内存和作为本机 Python API 的利用率也已添加。

对于 Vulkan,Pytorch 1.11 增加了对几个 Torch 运算符的支持,例如 torch.cat、torch.nn “.ConvTranspose2d 、torch.permute 、张量索引(at::slice)和torch.clone。新的 Pytorch 迭代还包括基于跟踪的选择性构建功能,通过包含模型使用的运算符来减少移动模型的二进制大小。

点击这里(https://github.com/pytorch/pytorch/releases/tag/v1.11.0)阅读更多。

TorchData

Pytorch 还发布了TorchData,这是一个通用模块化数据加载原语库,用于轻松构建灵活且高性能的数据管道。

该产品通过称为“DataPipes”的 Iterable 样式和 Map 样式的构建块实现了可组合的数据加载,这些构建块与 PyTorch 的DataLoader开箱即用。

用户可以连接多个DataPipes,形成一个数据管道,执行所有数据转换。

TorchData 已经为文件打开、文本解析、样本转换、缓存、混洗和批处理等核心功能实现了 50 多个 DataPipes。想要连接到云提供商(例如 Google Drive 或 AWS S3)的用户可以使用 fsspec 和 iopath DataPipes 来实现。每个 IterDataPipe 和 MapDataPipe 在文档中都有详细的解释和使用示例。

在此版本中,一些 PyTorch 域库已将其数据集迁移到 DataPipes。TorchText 的流行数据集是使用 DataPipes 实现的,其 SST-2 二进制文本分类教程的一部分展示了如何使用 DataPipes 为模型预处理数据。

functorch

Functorch受到Google JAX的启发,旨在提供可组合的 vmap(矢量化)和 autodiff 转换,这些转换可以很好地与 PyTorch 模块和 PyTorch autograd 配合使用。

该库可以帮助用户计算每个样本的梯度,在单台机器上运行模型集合,在 MAML 的内循环中将任务批处理在一起,以及计算 Jacobians 和 Hessians 以及批处理。

责任编辑:庞桂玉 来源: Linux公社
相关推荐

2012-02-16 13:36:39

JavaJavaFX

2021-03-18 08:59:14

框架pytorchtensorflow

2021-12-03 17:26:12

iOS苹果系统

2009-05-08 09:08:12

2022-07-21 12:53:43

Qt Creator开源

2017-12-02 21:08:00

AWS容器

2010-03-30 10:18:45

Oracle数据库

2019-07-31 08:03:45

Oracle数据库巡检脚本

2022-06-17 09:46:51

Chrome 102Chrome浏览器

2021-03-26 09:12:10

2010-04-06 18:04:09

Oracle数据库

2013-12-16 09:32:21

未来网络ICNSDN

2011-04-15 10:21:07

Oracle数据库运算

2011-04-19 16:06:57

typedef

2010-06-23 20:21:42

微软Windows 7补丁

2020-11-13 07:16:09

线程互斥锁死循环

2015-05-06 10:28:32

移动应用谷歌

2024-02-28 08:10:15

Linux静态库动态库

2023-05-26 15:38:40

2023-07-28 07:11:04

漏洞内核版本
点赞
收藏

51CTO技术栈公众号