本文是 Facebook AI 博客原文章的部分转载。完整内容可在此处查看
自几个月前发布以来,PyTorch 1.0 已迅速成为一个强大且灵活的深度学习平台,使工程师和研究人员能够从研究快速过渡到生产环境。我们在此重点介绍 AI 工程和研究社区使用 PyTorch 1.0 的一些方式。我们还将分享关于最新版本 PyTorch 1.1 的新细节,并展示社区创建的一些新开发工具。
在 2017 年 PyTorch 最初发布的基础上,我们与 AI 社区合作,于去年 12 月推出了 PyTorch 1.0 稳定版。除了增强面向生产的功能以及与主流云平台的深度集成外,PyTorch 1.0 还扩展了该开源库的核心功能,增加了 PyTorch JIT(即时编译),可在即时模式(eager mode)和图模式(graph mode)之间无缝切换,从而兼具灵活性和速度。
各行各业的领先企业正开始使用 PyTorch,既用于推动研究,也用于在大规模应用中进行部署,例如翻译、计算机视觉、对话界面、药物研究、工厂优化和自动驾驶研究。PyTorch 的社区采用率也持续增长。斯坦福大学、加州大学伯克利分校、加州理工学院以及其他大学正将 PyTorch 作为机器学习 (ML) 课程的基础工具;新的生态系统项目已启动以支持在 PyTorch 上进行开发;主要云平台也扩大了与 PyTorch 的集成。
跨行业使用 PyTorch
许多领先企业正在转向 PyTorch 1.0,以加速新 AI 系统的开发和部署。以下是一些示例:
- Airbnb 利用 PyTorch 丰富的库和 API 开发对话式 AI,并部署了“智能回复”(Smart Reply),以帮助公司服务代理更有效地响应客户。
- ATOM 正在构建一个平台,旨在比传统流程更快且更成功地生成和优化候选药物。通过使用 PyTorch 等机器学习框架,ATOM 能够设计出变分自编码器(variational autoencoder),用于表征多样化的化学结构并设计候选新药。
- Genentech 正在利用 PyTorch 的灵活控制结构和动态图来训练深度学习模型,这将有助于个性化癌症疗法的开发。
- 微软正在其整个组织内使用 PyTorch 开发大规模 ML 模型,并通过 ONNX Runtime 进行部署。利用 PyTorch,微软认知(Microsoft Cognition)构建了可扩展至数十亿单词的分布式语言模型,目前已应用于 Cognitive Services 等产品中。
- 丰田研究所 (TRI) 正在利用 Toyota Guardian 和 Toyota Chauffeur 技术,针对自动驾驶开发双管齐下的方法。TRI 的机器学习团队正在创建新的深度学习算法,以利用丰田每年 1000 万辆销售量带来的数据优势。PyTorch 的灵活性大大加快了他们的探索步伐,其新的生产特性将助力他们更快地向安全关键型应用进行部署。
继 2018 年 12 月发布 PyTorch 1.0 后,我们现在宣布 v1.1 版本正式可用。该版本提升了性能,增加了新的模型理解和可视化工具以改善易用性,并提供了新的 API。
PyTorch v1.1 的主要功能包括:
- TensorBoard:对 TensorBoard 提供原生的一流支持,用于可视化和模型调试。TensorBoard 是一个 Web 应用套件,用于检查和理解训练运行过程及图结构。PyTorch 现在通过简单的“from torch.utils.tensorboard import SummaryWriter”命令即可原生支持 TensorBoard。
- JIT 编译器:对即时 (JIT) 编译的改进。这包括各种错误修复以及 TorchScript 中功能的扩展,例如对字典、用户自定义类和属性的支持。
- 新 API:对布尔张量 (Boolean tensors) 的支持以及对自定义循环神经网络的更好支持。
- 分布式训练:提升了 CNN 等常见模型的性能;增加了对多设备模块的支持,包括在仍使用分布式数据并行 (DDP) 的同时跨 GPU 拆分模型的能力;以及对非每次迭代都会用到所有参数的模块(例如控制流,如自适应 Softmax 等)的支持。查看最新教程请点击此处。
我们还继续与社区合作,培育旨在支持 ML 工程师的项目和工具,需求涵盖从改进模型理解到使用 AutoML 方法进行自动调优。随着 Ax 和 BoTorch(见下文)的发布,我们将分享一些我们的核心算法,包括基于历史任务高效优化超参数的元学习(meta-learning)算法。我们很高兴看到这些成果开源,供社区在此基础上进行构建。
该生态系统包括已在生产规模部署的开源项目和工具,以及我们与行业领导者合作开发的产品和服务,他们与我们有着共同的愿景:建设一个开放且协作的 AI 社区。以下是一些最新工具:
- BoTorch:BoTorch 是一个构建在 PyTorch 之上的研究框架,旨在提供贝叶斯优化功能——这是一种用于对评估成本昂贵的黑盒函数进行序列优化的样本高效技术。
- Ax:Ax 是一个用于管理自适应实验的 ML 平台。它使研究人员和工程师能够系统地探索大型配置空间,从而优化机器学习模型、基础设施和产品。
- PyTorch-BigGraph:PBG 是一个分布式系统,用于创建具有数十亿实体和数万亿边的超大规模图的嵌入(embeddings)。它支持分片(sharding)和负采样(negative sampling),并提供了基于 Wikidata 嵌入的示例用例。
- Google AI Platform Notebooks:AI Platform Notebooks 是 Google Cloud Platform 提供的一项新的托管 JupyterLab 服务。数据科学家可以快速创建运行 JupyterLab 的虚拟机,其中预装了最新版本的 PyTorch。它还与 BigQuery、Cloud Dataproc、Cloud Dataflow 和 AI Factory 等 GCP 服务紧密集成,使得用户无需离开 JupyterLab 即可轻松执行完整的 ML 生命周期。
我们也很高兴看到来自更广泛的 PyTorch 社区的许多有趣的新项目。亮点包括:
- BigGAN-PyTorch:这是一个完整的 PyTorch 重构实现,它使用梯度累加(gradient accumulation),仅需四块 GPU 即可获得大批量处理带来的优势。
- GeomLoss:一个 Python API,定义了采样测度、图像和体积之间几何损失函数的 PyTorch 层。它包括 MMD、Wasserstein、Sinkhorn 等。

- PyTorch Geometric:一个 PyTorch 深度学习扩展库,提供了多种用于图和其他不规则结构上进行深度学习的方法(也称为几何深度学习),这些方法源自各种已发表的论文。
- Curve-GCN:一种实时交互式图像标注方法,使用端到端训练的图卷积网络 (GCN)。它支持通过多边形或样条曲线进行对象标注,从而提高了线性和曲线对象的标注效率。Curve-GCN 的运行速度比 Polygon-RNN++ 等传统方法快 10 倍。
Udacity、fast.ai 等机构开发新的 PyTorch 资源
PyTorch 非常适合教授 ML 开发,因为它通过灵活、动态的编程环境和用户友好的 Pythonic 接口实现了快速实验。此外,Google Colab 现在提供了一个原生支持 PyTorch 的交互式 Jupyter Notebook 环境,允许开发人员利用免费的 CPU 和 GPU 资源立即运行任何 PyTorch 教程。
大学级别的课程——包括斯坦福大学 NLP、加州大学伯克利分校计算机视觉和加州理工学院机器人课程——现在都在使用 PyTorch 进行教学。此外,大规模开放在线课程 (MOOCs) 正在培训成千上万名新的 PyTorch 开发人员。
今天,我们宣布推出一门新的 Udacity 课程,这是在去年推出的“深度学习入门”课程基础上的进一步扩展。这门新课程由牛津大学的 Andrew Trask 和 OpenMined 领导,涵盖了 AI 隐私方面的关键概念,包括差分隐私和联邦学习等方法。Facebook 还将提供奖学金,以支持学生在 Udacity 的全栈纳米学位项目中继续他们的 ML 教育。
fast.ai 社区也在继续在 PyTorch 上投入精力和资源。6 月,fast.ai 将启动一门名为“从基础开始的深度学习”(Deep Learning from the Foundations)的新课程,它将向开发人员展示如何从零开始编写矩阵乘法,一直到如何训练和实现最先进的 ImageNet 模型。该课程将深入探讨 PyTorch 和 fast.ai 库中方法的底层实现,并将使用代码来解释和说明这些方法所基于的学术论文。
作为课程的一部分,fast.ai 还将发布新的软件模块,包括 fastai.audio,它将 fast.ai 的深度抽象和精选算法引入了新的 PyTorch.audio 模块;并展示如何使用 fastai.vision 通过与索尔克研究所 (Salk Institute) 的合作,从老经典电影等素材以及尖端的显微镜序列中制作出令人惊叹的高分辨率视频。此外,fast.ai 正在贡献其新的 X-ResNet 模块,包括一套在 ImageNet 上预训练的模型。
PyTorch 入门
AI 社区中的每个人——包括刚接触 ML 开发的人员,以及希望寻找加速其端到端工作流方法的研究人员和工程师——都可以通过访问 pytorch.org 并在 Colab 中启动教程来即时尝试 PyTorch。无论是在本地还是在主流云平台上,都有许多简单的方式可以开始使用 PyTorch。