摘要
我们正在将一系列改进引入当前的 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 正在转向社区支持模式。更多详情将在稍后公布。