跳转到主要内容
博客

PyTorch 2.1 中的新库更新

作者: 2023 年 10 月 4 日2024 年 11 月 14 日暂无评论

摘要

我们将在 PyTorch 2.1 发布的同时,对现有 PyTorch 库进行多项改进。这些更新表明我们专注于开发所有领域的通用和可扩展 API,以便我们的社区更容易在 PyTorch 上构建生态系统项目。 

除了 2.1,我们还将发布一系列针对 PyTorch 领域库(包括 TorchAudio 和 TorchVision)的 Beta 版更新。请在下面找到最新稳定版本和更新的列表。

最新稳定库版本(完整列表)* 
TorchArrow 0.1.0TorchRec 0.5.0TorchVision 0.16
TorchAudio 2.1TorchServe 0.8.2TorchX 0.5.0
TorchData 0.7.0TorchText 0.16.0PyTorch 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` 从发射中计算对齐,`torchaudio.pipelines.MMS_FA` 提供访问 MMS: Scaling Speech Technology to 1000+ languages 项目中为多语言强制对齐训练的模型。

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

[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 波束搜索。波束搜索速度快。它消除了在执行自动语音识别时将数据从 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 的支持已取消。

请参阅 https://pytorch.ac.cn/audio/2.1/installation.html#optional-dependencies 了解新 FFmpeg 集成机制的详细信息。

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 修正)和训练脚本提供了构建块
  • [稳定] 新算法包括决策转换器、CQL、多智能体损失,例如 MAPPO 和 QMixer。新功能——[稳定] 新转换,例如视觉皮层 1 (VC1),一个 RL 的基础模型。 
  • 我们扩大了 TorchRL 涵盖的库范围
    • [Beta] IsaacGym,NVIDIA 强大的基于 GPU 的模拟器,可实现数千个向量化环境的交互和渲染。
    • [稳定] PettingZoo,Farama 基金会的多智能体库。
    • [稳定] 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_image decode_jpeg)的速度,并避免与 PIL 的兼容性问题。

CutMix 和 MixUp

期待已久的 CutMix 和 MixUp 增强支持现已到来!查看 我们的教程 了解如何使用它们。

迈向稳定的 V2 变换

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

我们出于预防考虑,将 torchvision.transforms.v2 和 torchvision.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 调度器:用于在多集群应用调度器 (MCAD) 上轻松调度作业的集成
  • AWS Batch
    • 添加特权选项以允许在启用 EFA 的实例上以提升的网络权限运行容器

TorchX 跟踪器

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

组件

  • dist.spmd 组件,支持单进程多数据 (Single-Process-Multiple-Data) 风格应用程序

工作区

  • 在构建 docker 工作区时,添加从 Dockerfile 访问图像和工作区路径的功能

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

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

TorchText 和 TorchData

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