正文
本文由 「AI前线」原创,原文链接:
PyTorch发布一年团队总结:运行资源降低至十分之一,单机王者
译者|核子可乐
AI 前线导读:”
The PyTorch Team 发布了一份年度盘点,同时为了纪念 PyTorch 发布满一周年。在老师木的《
深度学习框架技术剖析
》中我们提到过,TensorFlow 系统完整度最高,但是需要解决性能问题;PyThorch 是 NLP 应用首选、单机场景下的王者,但是缺点是难以支持大规模应用。我们可以再看看 PyTorch 团队的总结。”
原文翻译如下
:
今天是 PyTorch 项目公开发布的一周年节点。这是个疯狂的过程——我们希望打造一套灵活的深度学习研究平台。过去一年当中,我们亲眼见证了一群非常杰出的参与者如何积极使用、贡献并传播 PyTorch——在这里,我们感谢您的厚爱。回顾过去,我们希望对 PyTorch 的一年历程作出总结,包括来自社区的进展、最新消息以及要点。
社区
我们迎来了一个由深深热爱 PyTorch 的研究人员与工程师所共同构成的强大社区。核心团队包含来自多个国家、众多企业与高校的工程师及研究人员。可以说,如果没有每位参与者的积极贡献,我们绝不可能将 PyTorch 由思路转化为现实。
研究论文、软件包与 GitHub
在项目发布的几天之内,来自社区的用户就开始在 PyTorch 当中实现其感兴趣的研究论文内容,同时在 GitHub 上发布相关代码。开源代码已经成为目前研究人员所使用的主要工具。参与者们共同打造出 torchtext、torchvision 以及 torchaudio 软件包,旨在促进 PyTorch 项目在不同领域实现研究民主化。
第一款基于 PyTorch 的社区软件包来自 Brandon Amos,这款名为 Block 的软件包能够降低块矩阵的处理难度。卡耐基 - 梅隆大学的 Locus 实验室随后发布了与其研究成果紧密相关的多套 PyTorch 软件包及实现方案。第一份研究论文代码则来自 Sergey Zagoruyko,题为《关注‘关注机制’》。
来自加州大学伯克利分校的 Jun-Yan Zhu、Taesung Park、Phillip Isola、Alyosha Efros 及其团队发布了广受好评的 Cycle-GAN 与 pix2pix,后者负责实现图像到图像转换。
HarvardNLP 与 Systran 的研究人员们选择开发并改进 OpenNMT in PyTorch,其灵感源自对 Facebook 公司 Adam Lerer 编写的 [Lua]Torch 代码进行重现。Twitter 公司的 MagicPony 团队亦作出贡献,将其早期 Super-resolution 工作成果引入 PyTorch 示例当中。
Salesforce Research 发布了多款软件包,其中包括其引以为傲的 PyTorch-QNN——这是一种 RNN 类型,在 CuDNN 的优化之下可实现 2 倍至 17 倍于标准 LSTM 的速度表现。James Bradbury 及其团队目前已经成为 PyTorch 祢发中最活跃且最具吸引力的团队之一。
“我们发布的 @PyTorch-QRNN,拥有 2 倍到 17 倍于英伟达 cuDNN LSTM 的速度表现。这样的速度水平要归功于通过 CuPy 实现的 50 行代码。”
来自优步、Northeastern 以及斯坦福大学的研究人员们聚集在一起,围绕 Pyro 与 ProbTorch 组建起一个活跃的概率编程社区。该社区取得了活跃且快速的发展态势,我们在 NIPS 2017 的首届 pytorch-probabilistic-programming 会议上与 Fritz Obermeyer、Noah Goodman、Jan-Willem van de Meent、Brooks Paige、Dustin Tran 以及其他 22 名与会者共同讨论了如何构建世界贝叶斯网络。
英伟达公司研究人员发布了三套高质量库,旨在实现 pix2pix-HD、Sentiment Neuron 以及 FlowNet2 论文中的成果。他们对 PyTorch 当中不同数据并行模型的可扩展性分析工作给社区作出了巨大贡献。
Allen Institute for AI 发布了 AllenNLP,其中囊括多套业界领先的自然语言处理模型——包括面向标准自然语言处理任务的参考实现方案以及易于使用的 Web 演示素材。
2017 年 7 月,我们还迎来了首支 Kaggle 获胜队伍 grt123。他们拿下了 DataScience Bowl 2017 大赛的肺癌检测奖,并随后公布了相关 PyTorch 实现方案。
在虚拟化方面,Tzu-Wei Huang 开发出一款 TensorBoard-PyTorch 插件,而 Facebook AI Research 则面向其 visdom 虚拟化软件包实现 PyTorch 兼容性。
最后,Facebook AI Research 发布了包括 ParlAI、fairseeq-py、VoiceLoop 以及 FaderNetworks 在内的多个项目,旨在利用来自多个领域的前沿模型及接口数据集。
受篇幅所限,这里无法将所有卓越项目一一列出,感兴趣的朋友可以查看相关清单:
github.com/soumith?tab…
我们也要向大力支持论坛建议的朋友们表示感谢,特别是 ptrblck、jpeg729、QuantScientist、albanD、tom 以及 chenyun tc。各位给予我们非常宝贵的支持,再次感谢!
数字指标
下面让我们立足数字了解更多情况:
-
在 GitHub 上,有 87769 行用于导入 torch 的 Python 代码。
-
GitHub 上拥有 3983 个在名称或描述当 提到 PyTorch 项目的库。
-
PyTorch 二进制资源下载超过 50 万次,更具体地讲,应为 65 万 1916 次。
-
5400 位用户在我们的论坛
discuss.pytorch.org
(
discuss.pytorch.org/
) 上围绕 5200 个主题发布了 2 万 1500 篇讨论文章。
-
自发布以来,Reddit 的 /r/machinelearning 上共提到 PyTorch 131 次。与此同时,TensorFlow 被提及的数量为 255 次。
研究指标
PyTorch 是一套以研究为核心的框架。因此,我们所关注的一大指标在于从机器学习研究论文当中发现学术人士对 PyTorch 的使用。
-
在最近的 ICLR2018 会议上,有 87 篇论文提到 PyTorch,提到 TensorFlow 的论文数量为 228 篇,提到 Keras 的有 42 篇,Theano 与 Matlab 分别被 32 篇论文所提及。
-
Arxiv.org
每月提及 PyTorch 项目 72 次,TensorFlow 提及次数为 273 次,Keras 为 100 次,Caffe 为 94 次,而 Theano 则为 53 次。
课程、教程与书籍
当初刚刚发布 PyTorch 时,我们虽然拥有良好的 API 文档,但教程资料却还仅限于几份 ipython 笔记——有帮助,但还不够理想。
Sasank Chilamkurthy 揽下这项重任,并把教程内容转化为如今美观的网站形式。
Sean Robertson 与 Justin Johnson 编写出了大量出色的新教程——例如自然语言处理方向等等。Yunjey Choi 则通过一篇堪称惊艳的教程,帮助学习者了解如何使用 30 行甚至更少代码实现大部分模型。每一份新教程的诞生都能帮助用户更好更快地找到适合自己的学习途径。Goku Mohandas 与 Delip Rao 正调整其所编写论著中的代码内容,旨在使用 PyTorch 项目。
另外,我们发现不少大学的机器学习课程都将 PyTorch 作为主要教学工具,其中包括哈佛大学的 CS287。为了进一步推进学习民主化,我们在这里推荐与 PyTorch 紧密相关的三大在线课程。
-
Fast.ai 的”面向程序员的深度学习”是一项高人气在线课程 2017 年 9 月,Jeremy 与 Rachel 宣布未来的 fast.ai 课程将几乎完全基于 PyTorch 进行设计。
-
与新加坡国立大学与清华大学关系密切的研究人员 Ritchie Ng 发布了一项名为“利用 PyTorch 践行深度学习”的 Udemy 课程。
-
来自香港科技大学的 Sung Kim 在 YouTube 上发布了一项题为“从零开始学 PyTorch”的在线课程,专门面向普通观众。
工程技术
过去一年以来,我们实现了多项功能、全面提升性能表现,同时修复了大量错误。我们所做工作的完整列表可在我们的发布说明中找到。以下为去年我们的核心工作重点:
高阶梯度
随着一系列关于梯度惩罚以及二阶梯度方法相关研究论文的陆续发表,这已经成为一项重要且受到高度关注的功能。2017 年 8 月,我们实现了一个可以使用 n 阶导数的广义接口,并随时间推移而逐步增加所支持高阶梯度函数的覆盖范围。截至发稿之时,其几乎已经能够支持所有运算。
分布式 PyTorch
2017 年 8 月,我们发布了一套小型分布式软件包,其中采用了极受欢迎的 MPI 共同方法。该软件包拥有多种后端,例如 TCP、MMPI、Gloo 以及 NCCL2 等,可支持多种不同 CPU/GPU 共同运算及用例,并可整合 Infiniband 以及 RoCE 等分布式技术。分布式绝非易事,我们的最初迭代版本中也存在一些错误。但在随后的发行版本中,我们提升了该软件包的稳定度,其性能也得到了提升。
走近 NumPy
用户提出的最为迫切的需求之一,在于他们希望获得自己所熟知的 NumPy 功能。这类功能包括便捷的广播与高级索引等功能,其确实能够为用户节约时间与精力。我们实现了这些功能,但开始调整自身 API 以进一步走近 NumPy。随着时间的推移,我们希望能够在适当的时候提供与 NumPy 全面契合的 API。