摘要
我们正在将一系列改进引入当前的 PyTorch 库,同时发布 PyTorch 2.1 版本。这些更新展示了我们致力于开发跨所有领域的通用和可扩展的 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 在 XLA 设备上 1.14 版本 |
要查看先前版本或(不稳定)夜间版本,请点击顶部左侧菜单中的“搜索文档”旁边的版本。
TorchAudio
TorchAudio v2.1 引入以下新功能和向后不兼容的更改:
[Beta] 新的 API,用于应用过滤器、效果和编解码器
`torchaudio.io.AudioEffector` 可在线/离线方式应用于波形,并可用于增强。
请参阅 https://maskerprc.github.io/audio/2.1/tutorials/effector_tutorial.html 了解用法和示例。
[Beta] 强制对齐工具
新增了新功能和预训练模型用于强制对齐。`torchaudio.functional.forced_align` 从发射计算对齐,`torchaudio.pipelines.MMS_FA` 提供了访问在 MMS:将语音技术扩展到 1000 多种语言的项目中训练的多语言强制对齐模型。
请参阅 https://maskerprc.github.io/audio/2.1/tutorials/ctc_forced_alignment_api_tutorial.html 了解 `forced_align` 函数的使用方法,以及 https://maskerprc.github.io/audio/2.1/tutorials/forced_alignment_for_multilingual_data_tutorial.html 了解如何使用 `MMS_FA` 对多语言转录进行对齐。
[测试版] TorchAudio-Squim:无参考语音评估模型
添加了来自论文 TorchAudio-Sequim:在 TorchAudio 中的无参考语音质量和可懂度度量的模型架构和预训练模型。
您可以使用预训练模型 `torchaudio.pipelines.SQUIM_SUBJECTIVE` 和 `torchaudio.pipelines.SQUIM_OBJECTIVE`。它们可以估计各种语音质量与可懂度指标(例如 STOI、宽带 PESQ、Si-SDR 和 MOS)。这在评估语音生成模型(如文本到语音 TTS)的质量时非常有用。
请参阅 https://maskerprc.github.io/audio/2.1/tutorials/squim_tutorial.html 获取详细信息。
[Beta] 基于 CUDA 的 CTC 解码器
`torchaudio.models.decoder.CUCTCDecoder` 在 CUDA 设备上执行 CTC 线束搜索。线束搜索速度快。它消除了在执行自动语音识别时需要将数据从 CUDA 设备移动到 CPU 的需求。借助 PyTorch 的 CUDA 支持,现在可以在 CUDA 中执行整个语音识别流程。
请参阅 https://maskerprc.github.io/audio/2.1/tutorials/asr_inference_with_cuda_ctc_decoder_tutorial.html 获取详细信息。
[原型] 人工智能音乐生成工具
我们正在努力添加与音乐 AI 相关的工具。自上次发布以来,原型中已添加以下 API。
请参阅相应文档了解使用方法。
- torchaudio.prototype.chroma_filterbank
- torchaudio.prototype.transforms.ChromaScale
- torchaudio.prototype.transforms.ChromaSpectrogram
- torchaudio.prototype.pipelines.VGGISH
模型训练的新食谱
添加了音频-视觉 ASR、多通道 DNN 波束成形和 TCPGen 上下文偏置的食谱。
请参阅食谱。
- https://github.com/pytorch/audio/tree/release/2.1/examples/avsr
- https://github.com/pytorch/audio/tree/release/2.1/examples/dnn_beamformer
- https://github.com/pytorch/audio/tree/release/2.1/examples/asr/librispeech_conformer_rnnt_biasing
更新 FFmpeg 支持。
支持的 FFmpeg 库版本已更新。TorchAudio v2.1 与 FFmpeg 6、5 和 4.4 兼容。对 4.3、4.2 和 4.1 的支持已取消。
请参阅 https://maskerprc.github.io/audio/2.1/installation.html#optional-dependencies 以获取新的 FFmpeg 集成机制的详细信息。
更新 libsox 集成
TorchAudio 现在依赖于独立于 torchaudio 安装的 libsox。Sox I/O 后端不再支持文件-like 对象。(这由 FFmpeg 后端和 soundfile 支持。)
请参阅 https://maskerprc.github.io/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,一款基于 GPU 的强大模拟器,允许通过 NVIDIA 交互和渲染数千个向量化环境。
- [Stable] PettingZoo,由 Farama 基金会开发的多智能体库。
- [Stable] SMAC-v2,新的星际争霸多智能体模拟器。
- [Stable] RoboHive,使用 MuJoCo 物理引擎模拟的环境/任务集合。
性能提升
我们通过重构和集成 SB3 和 Gym 异步环境执行,提供更快的数据收集。我们还使我们的价值函数执行速度更快。
TorchRec
[原型] 零碰撞/管理碰撞嵌入包
推荐系统中一个常见的约束是稀疏 ID 输入范围大于模型在给定参数大小下可以学习的嵌入数量。为了解决这个问题,传统的解决方案是将稀疏 ID 哈希到与嵌入表相同大小的范围。这最终会导致哈希冲突,多个稀疏 ID 共享相同的嵌入空间。我们开发了一种高效的替代算法,该算法试图通过跟踪 N 个最常见的稀疏 ID 并确保它们具有唯一的嵌入表示来解决此问题。该模块在此定义,示例可在此找到。
[原型] UVM 缓存 - 预取训练流水线
对于设备内存不足以容纳整个嵌入表的情况,通常会在设备上缓存嵌入表的一部分,而将整个嵌入表存储在主机内存(通常是 DDR SDRAM)中。然而,在实际应用中,缓存未命中很常见,由于访问主机内存的相对高延迟,这会损害性能。基于 TorchRec 现有的数据流水线,我们开发了一个新的预取训练流水线,通过从主机内存中预取即将到来的批次的相关嵌入,从而有效地消除正向路径中的缓存未命中。
TorchVision
转换和增强
主要速度提升
torchvision.transforms.v2
中的新变换现在比之前快 10%-40%!这主要得益于对 v2.Resize()
的 2X-4X 性能提升,现在它支持 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 转换”。
[测试版] MPS 支持
nms
和 roi-align 内核( roi_align
, roi_pool
, ps_roi_align
, ps_roi_pool
)现在支持 MPS。感谢 Li-Huai (Allan) Lin 为此贡献!
火炬 X
调度器
-
[原型] Kubernetes MCAD 调度器:为在多集群应用程序调度器(MCAD)上轻松调度作业的集成
-
AWS 批处理
- 为 EFA 启用实例添加特权选项,以启用具有提升网络权限的容器运行
火炬 X 追踪器
- [原型] TorchX 追踪器的 MLFlow 后端:除了基于 fsspec 的追踪器外,TorchX 还可以使用 MLFlow 实例来跟踪元数据/实验
组件
- 支持单进程多数据风格的 dist.spmd 组件
工作空间
- 在构建 Docker 工作空间时,添加从 Dockerfile 访问图像和工作空间路径的能力
本次发布还包括其他多个错误修复。
想了解更多关于 Torchx 的信息,请访问 https://maskerprc.github.io/torchx/latest/
TorchText 和 TorchData
截至 2023 年 9 月,我们已暂停 TorchText 和 TorchData 的积极开发,因为我们正在重新评估我们如何满足该领域社区的需求。