PyTorch 因其专注于满足研究人员的需求、简化生产流程以及最重要的是得到 AI 社区的积极支持而持续获得动力。据 O'Reilly 指出,仅在 2019 年上半年,ArXiv 上关于 PyTorch 的论文引用量增长了 194%,而且过去一年中该平台贡献者数量增长了超过 50%,达到近 1200 人。Facebook、Microsoft、Uber 等跨行业组织越来越多地将其作为其最重要的机器学习(ML)研究和生产工作负载的基础。
我们现在通过发布 PyTorch 1.3 进一步推进平台的发展,该版本包括对无缝模型部署到移动设备、模型量化以在推理时获得更好的性能以及前端改进等实验性支持,例如能够命名张量以及用更少的内联注释创建更清晰的代码。我们还推出了一系列额外的工具和库,以支持模型可解释性和将多模态研究带入生产。
此外,我们与谷歌和 Salesforce 合作,增加了对云张量处理单元的广泛支持,为大规模深度神经网络训练提供了显著加速的选项。阿里云也加入了 Amazon Web Services、Microsoft Azure 和 Google Cloud,成为 PyTorch 用户的支持云平台。您现在就可以在 pytorch.org 上开始使用。
PyTorch 1.3
PyTorch 1.3 版本带来了显著的新功能,包括对移动设备部署的实验性支持、8 位整数量化以及命名张量的能力。随着这些增强功能的推出,我们期待 PyTorch 社区做出更多贡献和改进。
命名张量(实验性)
康奈尔大学的沙莎·拉什曾提出,尽管张量在深度学习中无处不在,但传统张量的实现存在重大缺陷,例如暴露私有维度、基于绝对位置进行广播以及将类型信息保留在文档中。他提出了命名张量作为替代方法。
现在,我们通过注释来命名和访问维度:
# Tensor[N, C, H, W]
images = torch.randn(32, 3, 56, 56)
images.sum(dim=1)
images.select(dim=1, index=0)
但显式命名可以使代码更易读、更易于维护:
NCHW = [‘N’, ‘C’, ‘H’, ‘W’]
images = torch.randn(32, 3, 56, 56, names=NCHW)
images.sum('C')
images.select('C', index=0)
量化(实验性)
在开发机器学习应用时,高效利用服务器端和设备端的计算资源非常重要。为了支持在服务器和边缘设备上更高效的部署,PyTorch 1.3 现在支持使用熟悉的即时模式 Python API 进行 8 位模型量化。量化是指用于在降低精度下进行计算和存储的技术,例如 8 位整数。此目前实验性功能包括支持训练后量化、动态量化和量化感知训练。它利用了 FBGEMM 和 QNNPACK 最先进的量化内核后端,分别针对 x86 和 ARM CPU,现在已集成到 PyTorch 中,并共享一个公共 API。
想了解更多关于设计和架构的信息,请查看此处 API 文档,并使用此处提供的教程开始使用任何支持的技巧。
PyTorch 移动(实验性)
在应用持续要求更低延迟的同时,在边缘设备上运行机器学习变得越来越重要。它也是联邦学习等隐私保护技术的基石。为了实现更高效的设备上机器学习,PyTorch 1.3 现在支持从 Python 到 iOS 和 Android 部署的端到端工作流程。
这是一个早期、实验性的版本,针对端到端开发进行了优化。未来的版本将重点关注:
- 尺寸优化:根据用户应用所需的算子进行构建级别的优化和选择性编译(即,您只为所需的算子支付二进制大小)
- 性能:在移动 CPU 和 GPU 上的性能和覆盖范围进一步改进
- 高级 API:扩展移动原生 API 以涵盖将机器学习融入移动应用所需的常见预处理和集成任务。例如,计算机视觉和自然语言处理
在此处了解更多或开始使用 Android 或 iOS。
新工具用于模型可解释性和隐私
Captum
随着模型变得越来越复杂,开发新的模型可解释性方法变得越来越重要。为了满足这一需求,我们推出了 Captum,这是一个帮助 PyTorch 开发者理解其模型为何产生特定输出的工具。Captum 提供最先进的工具来理解特定神经元和层的重要性如何影响模型的预测。Captum 的算法包括集成梯度、导通率、SmoothGrad 和 VarGrad 以及 DeepLift。
下面这个例子展示了如何将模型可解释性算法应用于预训练的 ResNet 模型,并通过将归因叠加到图像上来可视化每个像素的归因。
noise_tunnel = NoiseTunnel(integrated_gradients)
attributions_ig_nt, delta = noise_tunnel.attribute(input, n_samples=10, nt_type='smoothgrad_sq', target=pred_label_idx)
_ = viz.visualize_image_attr_multiple(["original_image", "heat_map"],
["all", "positive"],
np.transpose(attributions_ig_nt.squeeze().cpu().detach().numpy(), (1,2,0)),
np.transpose(transformed_img.squeeze().cpu().detach().numpy(), (1,2,0)),
cmap=default_cmap,
show_colorbar=True)


在 captum.ai 上了解更多关于 Captum 的信息。
CrypTen
通过基于云或机器学习即服务(MLaaS)平台的应用机器学习(ML)具有一系列安全和隐私挑战。特别是,这些平台的使用者可能不愿意或无法共享未加密的数据,这阻碍了他们充分利用 ML 工具。为了解决这些挑战,机器学习社区正在探索各种成熟度各异的多种技术方法。这包括同态加密、安全多方计算、可信执行环境、设备端计算和差分隐私。
为了更好地理解这些技术如何应用,我们发布了 CrypTen,这是一个新的基于社区的科研平台,旨在推动隐私保护机器学习领域的发展。在这里了解更多关于 CrypTen 的信息。它可在 GitHub 上找到。
多模态人工智能系统工具
数字内容通常由多种模态组成,如文本、图像、音频和视频。例如,一个单独的公开帖子可能包含图像、正文文本、标题、视频和着陆页。甚至一个特定的组件也可能包含多个模态,例如包含视觉和音频信号的视频,或者由图像、文本和 HTML 源组成的着陆页。
与 PyTorch 协同工作的工具和库生态系统为构建多模态机器学习系统提供了更有效的解决方案。以下是今天发布的最新库:
Detectron2
目标检测和分割被用于从自动驾驶汽车到平台完整性内容理解等众多任务。为了推进这项工作,Facebook AI Research(FAIR)发布了 Detectron2,这是一个现在用 PyTorch 实现的物体检测库。Detectron2 提供了对最新模型和任务的支撑,增加了灵活性以帮助计算机视觉研究,并在可维护性和可扩展性方面进行了改进,以支持生产用例。
Detectron2 可在以下链接获取,更多学习信息请点击这里。
fairseq 的语音扩展
语言翻译和音频处理是搜索、翻译、语音和助手等系统和应用中的关键组件。近年来,得益于新架构如 Transformer 以及大规模预训练方法的发展,这些领域取得了巨大进步。我们已经将 fairseq 框架扩展到支持语音和音频识别任务的端到端学习,该框架是用于语言翻译等序列到序列应用的框架。这些对 fairseq 的扩展使得探索和原型设计新的语音研究想法更加快速,同时也为生产提供了清晰的路径。
在这里开始使用 fairseq。
云服务提供商和硬件生态系统支持
亚马逊云服务、微软 Azure 和谷歌云等云服务提供商为希望使用 PyTorch 开发机器学习并在生产中部署的人提供了广泛的支持。我们很高兴地宣布谷歌云 TPU 支持的通用可用性和与阿里云的新推出的集成。我们还在扩展硬件生态系统支持。
- 谷歌云 TPU 支持现已全面可用。为了加速今天部署的最大规模机器学习(ML)应用,并使明天 ML 应用的快速开发成为可能,谷歌创建了名为张量处理单元(TPU)的定制硅芯片。当组装成多机架的 ML 超级计算机,即云 TPU Pod 时,这些 TPU 可以在几分钟或几小时内完成其他系统上需要几天或几周才能完成的 ML 工作负载。来自 Facebook、谷歌和 Salesforce 的工程师们共同合作,使 PyTorch 支持云 TPU,包括对云 TPU Pod 的实验性支持。Colab 上也提供了对云 TPU 的 PyTorch 支持。在此了解如何在云 TPU 上开始使用 PyTorch。
- 阿里云新增对 PyTorch 的支持。初始集成包括 PyTorch 1.x 的一键解决方案、数据科学研讨会笔记本服务、Gloo/NCCL 的分布式训练,以及与阿里云 IaaS 如 OSS、ODPS 和 NAS 的无缝集成。与阿里云提供的工具链相结合,我们期待显著降低采用所需的额外开销,同时帮助阿里云全球客户利用 PyTorch 开发新的 AI 应用。
- 机器学习硬件生态系统扩展。除了关键的 GPU 和 CPU 合作伙伴外,PyTorch 生态系统还支持专用机器学习加速器。英特尔和 Habana 的最新更新展示了 PyTorch 如何通过 Glow 优化编译器连接到这些市场特定解决方案,使开发者能够利用这些解决方案。
PyTorch 社区增长
作为开源、社区驱动的项目,PyTorch 受益于广泛的贡献者带来新的功能到生态系统中。以下是一些最近的例子:
- Mila SpeechBrain 旨在提供一个基于 PyTorch 的开源、一站式语音工具包。目标是开发一个单一、灵活、用户友好的工具包,可以轻松开发最先进的语音识别(包括端到端和 HMM-DNN)、说话人识别、语音分离、多麦克风信号处理(例如,波束成形)、自监督学习等系统。了解更多
- SpaCy 是一个新的包装库,具有一致且易于使用的接口,可以用于提取特征以支持 NLP 管道。通过 spaCy 的标准训练 API 提供支持。该库还计算了一个对齐,以便可以将 transformer 特征与实际单词相关联,而不仅仅是词片段。了解更多
- HuggingFace PyTorch-Transformers(之前称为 pytorch-pretrained-bert)是一个包含最先进预训练模型的自然语言处理(NLP)库。该库目前包含 PyTorch 实现、预训练模型权重、使用脚本以及 BERT、GPT-2、RoBERTa 和 DistilBERT 等模型的转换工具。它也迅速发展,拥有超过 13,000 个 GitHub 星标和广泛的用户群体。了解更多
- PyTorch Lightning 是一个类似于 Keras 的 PyTorch 机器学习库。它将核心训练和验证逻辑留给你,并自动处理其他部分。可复现性对于许多研究领域至关重要,包括基于机器学习技术的领域。随着提交到 arXiv 和会议的研究论文数量激增至数以万计,可复现性的扩展变得困难。了解更多。
我们最近举办了首届在线全球 PyTorch 夏季黑客马拉松,邀请全球的研究人员和开发者使用 PyTorch 构建创新的新项目。近 1500 名开发者参与,提交的项目从牲畜疾病检测到 AI 驱动的金融助手不等。获奖项目包括:
- Torchmeta,为 PyTorch 提供扩展,简化了在 PyTorch 中开发元学习算法。它具有统一的接口,灵感来自 TorchVision,适用于少量样本分类和回归问题,便于在多个数据集上进行基准测试,以帮助提高可重复性。
- Open-Unmix,一个使用 PyTorch 进行端到端音乐去混响的系统。去混响可以将单独的乐器或人声轨道从任何立体声录音中分离出来。
- 无尽 AI 生成 T 恤,一家展示 AI 生成 T 恤设计的商店,这些设计可以购买并全球配送。该系统使用最先进的生成模型(StyleGAN),该模型是用 PyTorch 构建的,并在现代艺术上进行了训练。
访问 pytorch.org 了解更多信息,并开始使用 PyTorch 1.3 以及最新的库和生态系统项目。我们期待社区使用 PyTorch 构建的贡献、激动人心的研究进步和实际应用。
我们想感谢整个 PyTorch 团队和社区对这项工作的所有贡献。