伴随 PyTorch 1.5 的发布,我们正在推出新的库,用于高性能的 PyTorch 模型服务,并与 TorchElastic 和 Kubernetes 紧密集成。此外,我们正在发布 torch_xla (Google Cloud TPUs)、torchaudio、torchvision 和 torchtext 的更新包。所有这些新库和增强功能均已可用,并伴随 PyTorch 1.5 中发布的所有核心功能。
TorchServe(实验性)
TorchServe 是一个灵活易用的库,用于在生产环境中以高性能规模服务 PyTorch 模型。它与云和环境无关,支持多模型服务、日志记录、指标以及为应用程序集成创建 RESTful 端点等功能。TorchServe 由 Facebook 和 AWS 的工程师联合开发,并得到了更广泛的 PyTorch 社区的反馈和参与。TorchServe 的实验版本现已发布。一些亮点包括:
- 支持基于 Python 和基于 TorchScript 的模型
- 针对常见用例(例如,图像分割、文本分类)的默认处理程序,以及为其他用例编写自定义处理程序的能力
- 模型版本控制,能够同时运行多个模型版本,以及回滚到早期版本的能力
- 能够将模型、学习权重和支持文件(例如,类映射、词汇表)打包成一个单一的、持久的工件(又称“模型存档”)
- 强大的管理能力,允许通过命令行、配置文件或运行时 API 对模型、版本和单个工作线程进行全面配置
- 通过 HTTP 请求自动批量处理单个推理
- 日志记录,包括常见指标,以及纳入自定义指标的能力
- 现成的 Dockerfile,便于部署
- 支持 HTTPS,实现安全部署
要了解有关 API 和此功能设计的更多信息,请参阅以下链接
- 请参阅以获取完整的多节点部署参考架构。
- 完整文档可在此处 找到。
TorchElastic 与 Kubernetes 集成(实验性)
TorchElastic 是一个经过验证的库,用于在 Facebook 等公司内大规模训练大型深度神经网络,其中动态适应服务器可用性并随着新计算资源的上线而扩展的能力至关重要。Kubernetes 使使用 PyTorch 等机器学习框架的客户能够将训练作业分布到 Amazon EC2 P3 等强大的 GPU 实例群集上运行。然而,分布式训练作业不具备容错能力,如果节点故障或回收中断训练,作业就无法继续。此外,作业在未获取所有所需资源之前无法启动,也无法在不重新启动的情况下进行扩缩。这种缺乏弹性和灵活性的情况导致训练时间增加和空闲资源造成的成本增加。TorchElastic 通过使分布式训练作业能够以容错和弹性方式执行来解决这些限制。直到今天,Kubernetes 用户需要手动管理 TorchElastic 训练作业所需的 Pod 和服务。
通过 Facebook 和 AWS 工程师的联合协作,TorchElastic,增加了弹性和容错性,现在支持使用原生 Kubernetes 和 AWS 提供的托管 EKS 服务。
要了解更多信息,请参阅 TorchElastic 仓库,获取控制器实现和有关如何使用它的文档。
torch_xla 1.5 现已可用
torch_xla 是一个 Python 包,它使用 XLA 线性代数编译器 在 Cloud TPUs 和 Cloud TPU Pods 上加速 PyTorch 深度学习框架。torch_xla 旨在让 PyTorch 用户能够像在 GPU 上一样在 Cloud TPUs 上完成所有工作,同时最大限度地减少用户体验的变化。该项目始于 NeurIPS 2017 的一次对话,并在 2018 年 Facebook 和 Google 的团队共同创建概念验证时获得了动力。我们在 PTDC 2018 上宣布了这项合作,并在 PTDC 2019 上广泛提供了 PyTorch/XLA 集成。该项目已经有 28 位贡献者,近 2k 次提交,以及一个被 fork 超过 100 次的仓库。
此版本的 torch_xla 与 PyTorch 1.5 对齐并经过测试,以减少开发人员的摩擦,并为使用 Cloud TPU 硬件训练模型提供稳定且成熟的 PyTorch/XLA 堆栈。您可以使用 Google Colab 在浏览器中 免费试用 8 核 Cloud TPU 设备,并且可以在 Google Cloud 上以更大的规模使用它。
请在此处 查看完整的 torch_xla 发布说明。完整文档和教程可在此处 找到,以及此处 找到。
PyTorch 领域库
torchaudio、torchvision 和 torchtext 通过每个领域中的常见数据集、模型和转换来补充 PyTorch。我们很高兴能与 PyTorch 1.5 和其余库更新一同分享所有三个领域库的新版本。在此版本中,所有三个领域库都将移除对 Python2 的支持,并且将只支持 Python3。
torchaudio 0.5
torchaudio 0.5 版本包括新的转换、函数式和数据集。此版本的亮点包括:
- 添加了 Griffin-Lim 函数式和转换,
InverseMelScale
和Vol
转换,以及DB_to_amplitude
。 - 增加了对
allpass
、fade
、bandpass
、bandreject
、band
、treble
、deemph
和riaa
滤波器和转换的支持。 - 新增了数据集,包括
LJSpeech
和SpeechCommands
数据集。
torchvision 0.6
torchvision 0.6 版本包括数据集更新、模型更新和大量错误修复。亮点包括:
- Faster R-CNN 现在支持负样本,这允许在训练时输入没有注释的图像。
- 向
RoIAlign
添加了aligned
标志,以匹配 Detectron2。 - C++ 视频解码器的抽象重构
torchtext 0.6
torchtext 0.6 版本包括一些错误修复和文档改进。根据用户的反馈,数据集抽象目前也正在重新设计中。此版本的亮点包括:
- 修复了 conda 包中与 SentencePiece 依赖项相关的问题。
- 增加了对实验性 IMDB 数据集的支持,以允许自定义词汇表。
- 一些文档更新,包括添加行为准则和去重 torchtext 网站上的文档。
欢迎您对实验性数据集 API 的反馈和讨论。您可以将它们发送到 issue #664。我们还想强调 此处 的拉取请求,其中最新的数据集抽象已应用于文本分类数据集。反馈可能有助于最终确定此抽象。
我们要感谢整个 PyTorch 团队、Amazon 团队和社区为这项工作做出的所有贡献。
干杯!
PyTorch 团队