由 PyTorch 团队

我们非常高兴地宣布 PyTorch 1.11(发布说明)的发布。这次发布自 1.10 以来包含了超过 3300 个提交,由 434 位贡献者完成。除了 1.11 版本,我们还发布了 TorchData 和 functorch 的 beta 版本。

摘要:

  • TorchData 是一个新的库,用于提供常见的模块化数据加载原语,以便轻松构建灵活且高效的数据管道。在 GitHub 上查看。
  • functorch,一个为 PyTorch 添加可组合函数转换的库,现在已提供 beta 版本。在 GitHub 上查看。
  • 分布式数据并行(DDP)静态图优化已稳定推出。

推出 TorchData。

我们很高兴地推出 TorchData 的 Beta 版本。这是一个用于轻松构建灵活且高效数据管道的常用模块化数据加载原语库。根据社区反馈,我们发现现有的 DataLoader 将太多功能捆绑在一起,难以扩展。此外,不同的用例通常需要反复重写相同的数据加载工具。我们的目标是通过名为“DataPipes”的迭代器和映射式构建块实现可组合的数据加载,这些构建块与 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 一起使用以及实现自定义的 DataPipes。项目 README 文件中描述了与 DataLoader 相关的常见问题解答和未来计划。

介绍 functorch

我们非常高兴地宣布 functorch 的第一个 beta 版本。functorch 深受 Google JAX 的启发,是一个为 PyTorch 添加可组合函数转换的库。它旨在提供与 PyTorch 模块和 PyTorch autograd 兼容的可组合 vmap(向量化)和自动微分转换,同时具有良好的 eager-mode 性能。

可组合函数转换可以帮助解决 PyTorch 当前难以处理的许多用例:

  • 计算每个样本的梯度(或其他每个样本的数量)
  • 在单台机器上运行模型集合
  • 在 MAML 的内循环中高效地批量处理任务
  • 高效地计算雅可比矩阵、海森矩阵以及批处理矩阵

通过组合 vmap(向量化)、vjp(反向模式自动微分)和 jvp(正向模式自动微分)转换,我们可以轻松地表达上述内容,无需为每个转换设计单独的库。

更多详情,请参阅我们的文档、教程和安装说明。

分布式训练

(稳定) DDP 静态图

DDP 静态图假设您的模型在每次迭代中都使用相同的参数集,因此可以确定性地知道状态,例如哪些钩子会触发、钩子将触发多少次以及梯度计算就绪的顺序。静态图在第一次迭代中缓存这些状态,因此它可以支持 DDP 在先前版本中无法支持的功能,例如,无论是否存在未使用的参数,都可以支持同一参数上的多个激活检查点。静态图功能在存在未使用参数时也应用性能优化,例如,它避免每次迭代都遍历图来搜索未使用的参数,并启用动态分桶顺序。这些 DDP 静态图中的优化为某些推荐模型带来了 10%的 QPS 提升。

要启用静态图,只需在 DDP API 中将 static_graph 设置为 True 即可,如下所示:

ddp_model = DistributedDataParallel(model, static_graph=True)

更多详情,请参阅我们的文档和教程。

感谢阅读,如果您对这些更新感兴趣并想加入 PyTorch 社区,我们鼓励您加入讨论论坛和 GitHub 问题。要获取 PyTorch 的最新消息,请关注我们的 Twitter、Medium、YouTube 和 LinkedIn。

喝彩!

PyTorch 团队