PyTorch1.11发布:TorchData和functorch可用了!
点蓝色字关注“机器学习算法工程师”
设为星标,干货直达!
近日, PyTorch 1.11发布。此版本由 434 位贡献者自 1.10 以来的 3,300 多个提交组成。除了 1.11,我们还发布了 TorchData 和 functorch 的 beta 版本。
其中
TorchData 是一个用于通用模块化数据加载原语的新库,用于轻松构建灵活和高性能的数据管道。https://github.com/pytorch/data
functorch 是一个向 PyTorch 添加可组合函数转换的库,类比谷歌的JAX,现已推出 beta 版。https://github.com/pytorch/functorch
分布式数据并行 (DDP) 静态图优化在 stable 中可用。
TorchDataTorchData发布 Beta 版本。这是一个通用模块化数据加载原语库,用于轻松构建灵活且高性能的数据管道。根据社区反馈,我们发现现有的 DataLoader 将太多的功能捆绑在一起,难以扩展。此外,不同的用例通常必须一遍又一遍地重写相同的数据加载实用程序。这里的目标是通过称为“DataPipes”的 Iterable 样式和 Map 样式的构建块启用可组合的数据加载,这些构建块与 PyTorch 的 DataLoader 开箱即用。
DataPipe 在 Python 数据结构上接受一些访问函数,__iter__ 用于 IterDataPipe, __getitem__ 用于 MapDataPipe,并返回一个新的访问函数,并应用了轻微的转换。您可以将多个 DataPipes 链接在一起以形成执行所有必要数据转换的数据管道。
我们已经实现了 50 多个提供不同核心功能的 DataPipes,例如打开文件、解析文本、转换样本、缓存、混洗和批处理。对于有兴趣连接到云提供商(例如 Google Drive 或 AWS S3)的用户,fsspec 和 iopath DataPipes 将允许您这样做。该文档提供了每个 IterDataPipe 和 MapDataPipe 的详细解释和使用示例。
在此版本中,一些 PyTorch 域库已迁移其数据集以使用 DataPipes。在 TorchText 中,库提供的流行数据集是使用 DataPipes 实现的,其 SST-2 二进制文本分类教程的一部分演示了如何使用 DataPipes 为模型预处理数据。TorchVision(在夜间版本中提供)和 TorchRec 中还有其他使用 DataPipes 的数据集原型实现。您可以在此处找到更具体的示例。
TorchData 的文档现已上线。它包含一个教程,介绍如何使用 DataPipes、将它们与 DataLoader 一起使用以及实现自定义的。我们项目的 README 文件中描述了与 DataLoader 相关的常见问题解答和未来计划。
functorchfunctorch 发布第一个 beta 版本。受到 Google JAX 的极大启发,functorch 是一个向 PyTorch 添加可组合函数转换的库。它旨在提供可组合的 vmap(矢量化)和 autodiff 转换,可与 PyTorch 模块和 PyTorch autograd 一起使用,并具有良好的渴望模式性能。
可组合的函数转换可以帮助解决当今在 PyTorch 中难以实现的许多用例:
计算每样本梯度(或其他每样本数量)
在单台机器上运行模型集合
在 MAML 的内循环中有效地将任务批处理在一起
有效地计算雅可比矩阵和黑森矩阵以及批量矩阵
组合 vmap(矢量化)、vjp(反向模式 AD)和 jvp(正向模式 AD)转换使我们能够轻松地表达上述内容,而无需为每个转换设计单独的库。有关更多详细信息,请参阅我们的文档、教程和安装说明。
分布式训练:DDP静态图DDP 静态图假设您的模型在每次迭代中都使用相同的一组已使用/未使用的参数,因此它可以确定性地了解状态,例如哪些钩子将触发、钩子将触发多少次以及第一次迭代后的梯度计算就绪顺序。静态图在第一次迭代中缓存这些状态,因此它可以支持 DDP 在以前的版本中无法支持的功能,例如,支持在相同参数上的多个激活检查点,无论是否有未使用的参数。当存在未使用的参数时,静态图功能也会应用性能优化,例如,它避免遍历图以在每次迭代中搜索未使用的参数,并启用动态分桶顺序。DDP 静态图中的这些优化为一些推荐模型带来了 10% 的 QPS 增益。
要启用静态图,只需在 DDP API 中设置 static_graph=True ,如下所示:
ddp_model = DistributedDataParallel(model, static_graph=True)
更多内容参见文档(https://pytorch.org/docs/master/generated/torch.nn.parallel.DistributedDataParallel.html)和教程(https://pytorch.org/tutorials/intermediate/ddp_tutorial.html)。
这次跟随PyTorch1.11的发布,torchvision也发布了0.12版本:https://github.com/pytorch/vision/releases/tag/v0.12.0。新支持更多模型:
分类模型:Vision Transformer (ViT) and ConvNeXt.
检测模型:FCOS
光流模型:RAFT
Model | Acc@1 | Acc@5 |
vit_b_16 | 81.072 | 95.318 |
vit_b_32 | 75.912 | 92.466 |
vit_l_16 | 79.662 | 94.638 |
vit_l_32 | 76.972 | 93.07 |
convnext_tiny | 82.52 | 96.146 |
convnext_small | 83.616 | 96.65 |
convnext_base | 84.062 | 96.87 |
convnext_large | 84.414 | 96.976 |
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...