作者:PyTorch 团队

摘要

随 PyTorch 2.1 发布,我们对现有的 PyTorch 库进行了一系列改进。这些更新表明我们致力于在所有领域开发通用且可扩展的 API,以便社区更容易在 PyTorch 上构建生态系统项目。 

随 2.1 一同发布的还有 PyTorch 领域库(包括 TorchAudio 和 TorchVision)的一系列 Beta 更新。请在下方查找最新稳定版本和更新列表。

最新稳定库版本 (完整列表)*  
TorchArrow 0.1.0 TorchRec 0.5.0 TorchVision 0.16
TorchAudio 2.1 TorchServe 0.8.2 TorchX 0.5.0
TorchData 0.7.0 TorchText 0.16.0 PyTorch on XLA Devices 1.14

*要查看先前版本或(不稳定)每夜构建版本,请点击左上角“搜索文档”上方的版本菜单。

TorchAudio

TorchAudio v2.1 引入了以下新功能和向后不兼容的更改

[Beta] 用于应用滤波器、效果和编解码器的新 API

`torchaudio.io.AudioEffector` 可以在线/离线方式对波形应用滤波器、效果和编码。您可以将其用作一种数据增强形式。

有关用法和示例,请参阅https://pytorch.ac.cn/audio/2.1/tutorials/effector_tutorial.html

[Beta] 强制对齐工具

新增了强制对齐的新函数和一个预训练模型。`torchaudio.functional.forced_align` 从 emission 计算对齐,`torchaudio.pipelines.MMS_FA` 提供了在 MMS: Scaling Speech Technology to 1000+ languages 项目中用于多语言强制对齐的模型访问。

有关 `forced_align` 函数的用法,请参阅https://pytorch.ac.cn/audio/2.1/tutorials/ctc_forced_alignment_api_tutorial.html,以及如何使用 `MMS_FA` 对齐多种语言的文本,请参阅https://pytorch.ac.cn/audio/2.1/tutorials/forced_alignment_for_multilingual_data_tutorial.html

[Beta] TorchAudio-Squim:无参考语音评估模型

添加了论文 TorchAudio-Sequim: Reference-less Speech Quality and Intelligibility measures in TorchAudio 中的模型架构和预训练模型。

您可以使用预训练模型 `torchaudio.pipelines.SQUIM_SUBJECTIVE` 和 `torchaudio.pipelines.SQUIM_OBJECTIVE`。它们可以估计各种语音质量和可懂度指标(例如 STOI、宽带 PESQ、Si-SDR 和 MOS)。这对于评估语音生成模型(例如文本到语音 (TTS))的质量非常有用。

有关详情,请参阅https://pytorch.ac.cn/audio/2.1/tutorials/squim_tutorial.html

[Beta] 基于 CUDA 的 CTC 解码器

`torchaudio.models.decoder.CUCTCDecoder` 在 CUDA 设备中执行 CTC Beam Search。Beam Search 速度很快。它消除了在执行自动语音识别时将数据从 CUDA 设备移动到 CPU 的需要。借助 PyTorch 的 CUDA 支持,现在可以在 CUDA 中执行整个语音识别流水线。

有关详情,请参阅https://pytorch.ac.cn/audio/2.1/tutorials/asr_inference_with_cuda_ctc_decoder_tutorial.html

[原型] AI 音乐生成实用工具

我们正在努力添加与音乐 AI 相关的实用工具。自上次发布以来,已将以下 API 添加到原型中。

有关用法,请参阅相应的文档。

新的模型训练攻略

新增了用于音视频 ASR、多通道 DNN 波束成形和 TCPGen 上下文偏差的攻略。

请参阅攻略

更新 FFmpeg 支持

受支持的 FFmpeg 库版本已更新。TorchAudio v2.1 支持 FFmpeg 6、5 和 4.4。对 4.3、4.2 和 4.1 的支持已停止。

有关新的 FFmpeg 集成机制的详情,请参阅https://pytorch.ac.cn/audio/2.1/installation.html#optional-dependencies

更新 libsox 集成

TorchAudio 现在依赖于独立于 torchaudio 安装的 libsox。Sox I/O 后端不再支持类文件对象。(FFmpeg 后端和 soundfile 支持此功能。)

有关详情,请参阅https://pytorch.ac.cn/audio/2.1/installation.html#optional-dependencies

TorchRL

我们的 RLHF 组件使得即使 RL 知识有限,也可以轻松构建 RLHF 训练循环。TensorDict 实现了数据集(例如 HF 数据集)与 RL 模型之间的便捷交互。我们提供的新算法为离线 RL 训练提供了广泛的解决方案,这种训练方式的数据效率更高。

通过 RoboHive 和 IsaacGym,TorchRL 现在提供了与硬件(机器人)的内置接口,将大规模训练与设备上的策略部署联系起来。得益于 SMAC、VMAS 和 PettingZoo 以及相关的 MARL 相关损失函数,TorchRL 现在完全能够在多智能体环境中训练复杂的策略。

新算法

  • [BETA] 我们集成了一些 RLHF 组件和示例:我们提供了 RL 框架中的数据格式化构建模块、奖励模型设计、实现高效学习的特定转换(例如 KL 校正)以及训练脚本。
  • [稳定] 新算法包括 Decision transformers、CQL、以及 MAPPO 和 QMixer 等多智能体损失函数。新特性- [稳定] 新转换,例如 Visual Cortex 1 (VC1),这是一个用于 RL 的基础模型。 
  • 我们扩大了 TorchRL 支持的库范围: 
    • [Beta] IsaacGym,一个功能强大的基于 GPU 的模拟器,由 NVIDIA 提供,允许与数千个矢量化环境进行交互和渲染。
    • [稳定] PettingZoo,由 Farama Foundation 提供的一个多智能体库。
    • [稳定] SMAC-v2,新的星际争霸多智能体模拟器
    • [稳定] RoboHive,一个使用 MuJoCo 物理引擎模拟的环境/任务集合。

性能改进

通过重构和集成 SB3 和 Gym 异步环境执行,我们提供了更快的数据收集速度。我们还加快了价值函数的执行速度。

TorchRec

[原型] 零冲突 / 管理冲突嵌入包

推荐系统中常见的约束是稀疏 ID 输入范围大于模型在给定参数大小时可以学习的嵌入数量。  为了解决这个问题,传统解决方案是将稀疏 ID 哈希到与嵌入表相同的尺寸范围。  这最终会导致哈希冲突,多个稀疏 ID 共享同一嵌入空间。  我们开发了一种高性能的替代算法,通过跟踪最常见的 N 个稀疏 ID 并确保它们具有唯一的嵌入表示来尝试解决此问题。该模块定义在此处,示例可在此处找到。

[原型] UVM 缓存 - 预取训练流水线

对于设备内存不足以容纳整个嵌入表的表,通常会利用缓存架构,其中一部分嵌入表缓存在设备上,而完整的嵌入表则在主机内存中(通常是 DDR SDRAM)。  然而,在实践中,缓存未命中很常见,并且由于访问主机内存的延迟相对较高而损害性能。  基于 TorchRec 现有的数据流水线,我们开发了一个新的预取训练流水线,通过从主机内存预取即将到来的批次的相关嵌入来避免这些缓存未命中,从而有效消除前向路径中的缓存未命中。

TorchVision 

转换和数据增强

显著提速

torchvision.transforms.v2 中的新转换现在比以前快 10%-40%!这主要得益于对 v2.Resize() 进行了 2-4 倍的改进,该方法现在支持 Bilinear 和 Bicubic 模式下的原生 uint8 张量。输出结果现在也更接近 PIL 的结果了!请查看我们的性能建议以了解更多信息。

此外,torchvision 现在随附 libjpeg-turbo 而不是 libjpeg,这应该会显著加快 jpeg 解码实用工具(read_imagedecode_jpeg)的速度,并避免与 PIL 的兼容性问题。

CutMix 和 MixUp

期待已久的对 CutMixMixUp 数据增强的支持现已到来!请查看我们的教程,了解如何使用它们。

迈向稳定的 V2 转换

之前的 0.15 版本中,我们 Beta 发布了 torchvision.transforms.v2 中的一组新转换,原生支持分割、检测或视频等任务。我们现在已经稳定了这些转换的设计决策,并在速度、可用性、新转换支持等方面做了进一步改进。

出于谨慎考虑,我们将 torchvision.transforms.v2torchvision.tv_tensors 命名空间保留为 BETA 状态直到 0.17 版本,但未来预计不会有破坏性的 API 更改。

无论您是 Torchvision 转换的新手,还是已经有经验,我们都鼓励您从转换 v2 入门开始,以便了解新的 v2 转换可以实现哪些功能。

请浏览我们的主要文档,了解一般信息和性能技巧。可用的转换和函数列在API 参考中。您还可以在我们的示例画廊中找到更多信息和教程,例如转换 v2:端到端对象检测/分割示例如何编写您自己的 v2 转换

[BETA] MPS 支持

nms 和 roi-align 内核(roi_alignroi_poolps_roi_alignps_roi_pool)现在支持 MPS。感谢Li-Huai (Allan) Lin 的贡献!

TorchX

调度器

  • [原型] Kubernetes MCAD 调度器:轻松在 Multi-Cluster-Application-Dispatcher (MCAD) 上调度作业的集成

  • AWS Batch 

    • 添加 privileged 选项,以在启用了 EFA 的实例上运行具有更高网络权限的容器

TorchX Tracker

  • [原型] TorchX Tracker 的 MLFlow 后端:除了基于 fsspec 的跟踪器外,TorchX 可以使用 MLFlow 实例来跟踪元数据/实验。 

组件

  • dist.spmd 组件以支持单进程多数据风格的应用

工作空间

  • 在构建 Docker 工作空间时,添加从 Dockerfile 访问镜像和工作空间路径的功能

此版本包含许多其他错误修复。

要了解更多关于 Torchx 的信息,请访问https://pytorch.ac.cn/torchx/latest/

TorchText 和 TorchData

截至 2023 年 9 月,我们已暂停 TorchText 和 TorchData 的积极开发,因为我们正在重新评估如何满足社区在这一领域的需求。