由 PyTorch 团队

摘要

我们正在将一系列改进引入当前的 PyTorch 库,同时发布 PyTorch 2.0 版本。这些更新展示了我们致力于开发跨所有领域的通用和可扩展的 API,以使我们的社区更容易在 PyTorch 上构建生态系统项目。

与 2.0 版本一同发布的还有 PyTorch 领域库的一系列 beta 更新,包括树内库以及独立的库,如 TorchAudio、TorchVision 和 TorchText。TorchX 的更新也在发布中,因为它将转向社区支持模式。以下是最新的稳定版本和更新的列表。

最新稳定库版本(完整列表)

TorchArrow 0.1.0 TorchRec 0.4.0 TorchVision 0.15
TorchAudio 2.0 TorchServe 0.7.1 TorchX 0.4.0
TorchData 0.6.0 TorchText 0.15.0 PyTorch on XLA Devices 1.14

*查看先前版本或(不稳定)夜间版本,请点击顶部左侧菜单中的“搜索文档”旁边的版本。

TorchAudio

[Beta] 数据增强算子

本版本在 torchaudio.functional 和 torchaudio.transforms 下添加了多个数据增强算子:

  • torchaudio.functional.add_noise
  • torchaudio.functional.convolve
  • torchaudio.functional.deemphasis
  • torchaudio.functional.fftconvolve
  • torchaudio.functional.preemphasis
  • torchaudio 功能速度
  • torchaudio 变换添加噪声
  • torchaudio 变换卷积
  • torchaudio 变换去加重
  • torchaudio.transforms.FFTConvolve
  • torchaudio.transforms.Preemphasis
  • torchaudio.transforms.Speed
  • torchaudio.transforms.SpeedPerturbation

操作符可用于合成多样化训练数据,以提高下游模型的泛化能力。

使用详情请参阅功能文档、转换文档和音频数据增强教程。

[Beta] WavLM 和 XLS-R 模型

本版本新增了两个用于语音和音频的自监督学习模型。

  • 具有抗噪声和混响能力的 WavLM。
  • 在跨语言数据集上训练的 XLS-R。

除了模型架构之外,torchaudio 还支持相应的预训练管道:

  • torchaudio.pipelines.WAVLM_BASE
  • torchaudio.pipelines.WAVLM_BASE_PLUS
  • torchaudio.pipelines.WAVLM_LARGE
  • torchaudio.pipelines.WAV2VEC_XLSR_300M
  • torchaudio.pipelines.WAV2VEC_XLSR_1B
  • torchaudio.pipelines.WAV2VEC_XLSR_2B

使用详情请参阅工厂函数和预训练管道文档。

TorchRL

torchrl 的初始版本包含跨越整个强化学习领域的多个功能。torchrl 已经可以用于在线、离线、多智能体、多任务和分布式强化学习设置等,具体请见下文:

[Beta] 环境包装和转换

torchrl.envs 包含了多个常见环境库的包装。这使得用户可以轻松地交换一个库与另一个库。这些包装在模拟器和 torchrl 之间建立了一个接口:

  • dm_control:
  • Gym
  • 布拉克斯
  • 环境池
  • 汉堡吉
  • 生态位

它还包含许多常用的转换和向量化的环境实用工具,可以在多个模拟库中快速执行。请参阅文档以获取更多详细信息。

[Beta] 数据收集器

在强化学习(RL)中,通过使用单进程或多进程/分布式数据收集器来简化数据收集,这些收集器在环境中执行策略,并在所需的时间内交付样本,以满足用户的需求。这些可以在 torchrl.collectors 中找到,并在此处有文档说明。

[Beta] 目标模块

torchrl.objectives 中包含多个目标函数,其中包含:

  • 一个通用的 PPOLoss 类及其派生类 ClipPPOLoss 和 KLPPOLoss
  • SACLoss 和 DiscreteSACLoss
  • DDPGLoss
  • DQNLoss
  • REDQLoss
  • A2CLoss
  • TD3Loss
  • 强化损失
  • 梦想家

向量化值函数算子也出现在库中。请在此处查看文档。

[测试版] 模型和探索策略

我们提供多种模型、模块和探索策略。在文档中获取详细描述。

[测试版] 可组合的重放缓冲区

提供了一个可组合的重放缓冲区类,可用于存储数据,包括单智能体和多智能体、在策略和离策略等多种上下文。组件包括:

  • 存储器(列表、物理或基于内存的连续存储器)
  • 样本器(优先级,无重复样本器)
  • 作者
  • 可添加转换功能

重放缓冲区和其他数据工具在此处文档化。

[Beta] 日志工具和训练器

我们支持多种日志工具,包括 tensorboard、wandb 和 mlflow。

我们提供了一个通用的训练器类,允许轻松代码复用和检查点。

这些功能在此处有文档说明。

TensorDict

TensorDict 是 PyTorch 的新数据载体。

[Beta] TensorDict:PyTorch 的专业化字典

TensorDict 允许您在单个容器承载的多个张量批次上执行许多常见操作。TensorDict 支持许多形状和设备或存储操作,并且可以方便地在分布式环境中使用。请查阅文档以获取更多信息。

[Beta] @tensorclass:PyTorch 的数据类

类似于 TensorDict,tensorclass 提供了编写具有内置 torch 功能(如形状或设备操作)的数据类的机会。

[Beta] tensordict.nn:针对 TensorDict 的专用模块

tensordict.nn 模块提供了专门的 nn.Module 子类,可以轻松构建任意复杂的图,并使用 TensorDict 输入执行。它与最新的 PyTorch 功能(如 functorch、torch.fx 和 torch.compile)兼容。

TorchRec

[Beta] KeyedJaggedTensor 全局重构及输入融合

我们观察到,由于多个大型 KJTs 重新分配时的稀疏数据分布瓶颈,性能出现了下降。

为了解决这个问题,我们改变了通信模式,以传输初始集体调用所需的最小数据量来支持实际的 KJT 张量数据集体调用。在初始集体中发送的数据,‘分割’意味着整体上通过通信流传输的数据量更多,但 CPU 阻塞的时间显著缩短,从而提高了整体 QPS。

此外,我们还修改了 TorchRec 训练管道,将分割的初始集体调用分组在一起,然后再启动更昂贵的 KJT 张量集体调用。这种融合最小化了 CPU 阻塞时间,因为启动每个后续输入分布不再依赖于前一个输入分布。

使用此功能,现在跨等级支持变量批处理大小。这些功能在此处有文档说明。

TorchVision

[Beta] 扩展 TorchVision 的变换以支持目标检测、分割和视频任务

TorchVision 正在扩展其 Transforms API!以下是新功能:

  • 您不仅可以用它们进行图像分类,还可以用于目标检测、实例和语义分割以及视频分类。
  • 您可以使用新的功能转换来转换视频、边界框和分割掩码。

在我们的文档中了解更多关于这些新变换的信息,并提交任何反馈到我们的专用问题区域。

TorchText

[Beta] 将可脚本化的 T5 和 Flan-T5 添加到 TorchText 库中,并支持增量解码!

TorchText 已添加 T5 模型架构,包括原始 T5 论文和 Flan-T5 的预训练权重。该模型完全支持 torchscript,并具有优化的多头注意力实现。我们包括如何利用该模型的几个示例,包括摘要、分类和翻译。

欲了解更多详情,请参阅我们的文档。

TorchX

TorchX 正在转向社区支持模式。更多详情将在稍后公布。