当前位置: 首页 > 科技观察

PyTorch1.11发布,带来了两个新库,TorchData和functorch

时间:2023-03-13 00:58:38 科技观察

您现在可以在PythonAPI中干净地复制Tensor对象的所有属性,而不仅仅是简单的Tensor属性。在torch.linspace和torch.logspace中,Steps参数不再是可选的。在PyTorch1.10.2中,此参数默认为100。现在,它不再是一种选择。PyTorch还删除了错误暴露的torch.hub.import_module函数。已弃用对具有不同维度的张量调用xT。现在,它只接受0或2维的张量。C++前端标头现在减少为仅包含使用的aten运算符的子集。如果用户包含来自C++前端的标头,则现在可能不会传递includeaten运算符。但是,用户可以直接在他们的文件中添加#include以保持包含每个aten运算符的旧行为。PyTorch1.11还删除了c10::List和c10::Dict移动构造函数的自定义实现。语义已从“使移出的List/Dict为空”变为“保持移出的List/Dict不变”。对于CUDA,THCeilDiv函数和相应的THC/THCDeviceUtils.cuh头文件、THCudaCheck和THCudaMalloc()、THCudaFree()、THCThrustAllocator.cuh已被删除。新特性对于PythonAPI,PyTorch1.11添加了set_deterministic_debug_mode和get_deterministic_debug_mode,n维HermitianFFT:torch.fft.ifftn和torch.fft.hfftn,Wishart分布到torch.distributions。PyTorch为torch和torch.linalg模块添加了对PythonArrayAPI标准的初步支持。它实现了90%以上由PythonArrayAPI定义的运算符,包括用于改进DLPack支持的torch.from_dlpack操作。他们还将torch.testing从原型转移到测试版。对于Autograd,PyTorch1.11有一个新的torch.utils.checkpoint实现,它不使用可重入的autograd。正向模式AD现在支持大多数操作,并将ctx.save_for_forward函数包含到autograd.Function。autograd.forward_ad.unpack_dual现在将返回命名元组而不是普通元组。线性代数运算支持包括对torch.linalg.{eig,inverse,houser_product,qr}和torch.*_solve的正向AD支持。他们还为torch.linalg.lstsq添加了前向和后向AD支持,并为linalg.pinv添加了更广泛的输入。对于ONNX,Pytorch1.11支持opset版本15,将nn.Module调用导出为ONNX本机函数,导出新操作,如tanhshrink、hardshrink、softshrink、__xor__、isfinitelog10和对角线。它还支持使用ApexO2导出。对于Infra(Releng),Pytorch1.11添加了对ROCm4.3.1、ROCm4.5.2、CUDA11.5、支持CUDA的Bazel构建、Python3.10的支持。Pytorch1.11现在引入了FlexiBLAS构建支持、用于cpp扩展构建的IS_LINUX和IS_MACOS全局变量、用于iOSCMake构建的ARC,以及对IBMz14/15SIMD的支持。新的更新还包括一个实验性的标志,允许用户指定一个首选的线性代数库。添加了linalg.matrix_exp、linalg.cross和linalg.diagonal(torch.diagonal的别名)等操作。对于CUDA,新的更新引入了Jiterator,它使用户能够在运行时编译很少使用的CUDA内核。还添加了cuSPARSE描述符和更新的CSRaddmm、addmv_out、nvidia-smi内存和作为本机PythonAPI的利用率。对于Vulkan,Pytorch1.11添加了对torch.cat、torch.nn".ConvTranspose2d、torch.permute、张量索引(at::slice)和torch.clone等多个Torch运算符的支持。新的Pytorch迭代还包括基于跟踪的选择性构建功能,通过包含模型使用的运算符来减少移动模型的二进制大小。单击此处(https://github.com/pytorch/pytorch/releases/tag/v1.11.0)阅读更多内容。TorchDataPytorch还发布TorchData,一个通用模块化数据加载原语库,用于轻松构建灵活和高性能的数据管道。该产品通过称为“DataPipes”的Iterable样式和Map样式构建块实现。对于可组合的数据加载,这些构建块工作开箱即用的PyTorch的DataLoader,用户可以连接多个DataPipes,形成一个执行所有数据转换的数据管道,TorchData内置支持文件打开,文本解析,样本转换,缓存,超过50个DataPipes用于核心功能,例如洗牌和批处理。想要连接到GoogleDrive或AWSS3等云提供商的用户可以使用fsspec和iopathDataPipes来实现。IterDataPipe和MapDataPipe中的每一个都有详细的解释和使用示例。在此版本中,多个PyTorch域库已将其数据集迁移到DataPipes。TorchText流行的数据集是使用DataPipes实现的,他们的SST-2二进制文本分类教程的一部分展示了如何使用DataPipes为模型预处理数据。functorchFunctorch的灵感来自于GoogleJAX,旨在提供可组合的vmap(矢量化)和autodiff转换,可以很好地与PyTorch模块和PyTorchautograd配合使用。该库可帮助用户计算每个样本的梯度,在单台机器上运行模型集合,在MAML的内部循环中一起批处理任务,并计算Jacobians和Hessians以及批处理。