PyTorch 团队发表周年感言:感谢日益壮大的社群,这一年迎来六大核心突破

2018 年 1 月 21 日 AI研习社 思颖

2017 年 1 月,Facebook 开源 PyTorch,短短一年时间,PyTorch 便发展成一线开发者争相使用的工具。这一年间,有哪些研究人员对 PyTorch 的发展做出了贡献?关于 PyTorch 的经典课程有哪些?它经历了什么样的改变?研究人员又带来了哪些创新?(原文:http://pytorch.org/2018/01/19/a-year-in.html

在 PyTorch 开源一周年纪念日,其开发团队在官方 Blog 上发表《PyTorch, a year in....》一文,为我们解答了上述问题。雷锋网 AI 研习社将原文编译整理如下:

距离我们开源 PyTorch 已经有一年时间。在这一年时间里,我们寻求建立一个灵活的深度学习研究平台,这是一段极棒的旅程。感谢所有使用 PyTorch,为 PyTorch 的发展做出贡献,并不断传播 PyTorch 的人,是你们一步一步建立了这样一个充满惊喜的社群。

下文中,我们总结了 PyTorch 在这一年间取得的进展、相关新闻和亮点。

  社群

PyTorch 社群是一个强健的有机体,感谢社群里喜爱 PyTorch 的研究人员和工程师。我们的社群构成多种多样,核心团队中有来自于多个国家、公司和大学的工程师和研究人员,如果没有他们的点滴贡献,PyTorch 不可能发展得像现在这么好。

论文、工具包和 Github

PyTorch 发布之后,一些用户很快就利用 PyTorch 实现了他们喜欢的论文,并在 Github 上发布代码。现阶段,开源代码是研究人员的重要工具。

大家在一起,创造出了 torchtext(https://github.com/pytorch/text ),torchvision(https://github.com/pytorch/vision ) 和 torchaudio(https://github.com/pytorch/audio ) 工具包,帮助加快 PyTorch 在不同领域的发展。

Brandon Amos 发布了第一个基于 PyTorch 的工具包——Block,使得操作分块矩阵更加容易。随后,CMU 的 Locus Lab 实验室发布了一系列关于 PyTorch 的工具包(https://github.com/locuslab ),实现了他们大部分的研究成果。首篇利用 PyTorch 实现的论文是 Sergey Zagoruyko 的 Paying more attention to attention。

Jun-Yan Zhu, Taesung Park, Phillip Isola, Alyosha Efros 和来自加州大学伯克利分校的团队发布了 Cycle-GAN and pix2pix(http://t.cn/RXJHrUV ),这个工具包极受欢迎,能实现图像转换。

HarvardNLP 和 Systran 的研究人员开始利用 PyTorch 开发和改进 OpenNMT(http://t.cn/R6gvXcg ),这最初是由 Adam Lerer 利用 [Lua]Torch 重实现的。

Twitter 的 MagicPony 团队也很早就将他们超分辨率的工作用 PyTorch 实现了。

Salesforce Research 也发布了几个工具包,其中就包括最广为人知的 PyTorch-QRNN(http://t.cn/RQjJRh1 ),这比用 CuDNN 优化的标准 LSTM 的速度快了 2-17 倍。James Bradbury 和他的团队是 PyTorch 社群中最活跃、最吸引人的力量之一。

来自 Uber, Northeastern 和 Stanford 的研究人员聚于一起,围绕 Pyro(http://pyro.ai/ ) 和 ProbTorch(http://t.cn/RYHezjv ),组成了一个活跃的概率编程社区。他们正积极开发 torch.distributions 核心包。这个社区非常活跃,正在快速发展,在 NIPS2017 上,我们第一次开展了 PyTorch 概率编程见面会,会上,我们同 Fritz Obermeyer, Noah Goodman, Jan-Willem van de Meent, Brooks Paige, Dustin Tran 和其他 22 位与会者讨论了如何让世界变得更贝叶斯。

英伟达的研究人员发布了三个高质量的 PyTorch 库,分别实现了 pix2pix-HD(http://t.cn/RY08qpM )、Sentiment Neuron(http://t.cn/RQjidCx ) 和 FlowNet2(http://t.cn/RQj67tK )。他们基于 PyTorch 对数据并行模型的可伸缩性分析(https://github.com/NVIDIA/sentiment-discovery/blob/master/analysis/scale.md )极有帮助。

艾伦人工智能研究院发布 AllenNLP (http://allennlp.org/ ,其中包含一些针对标准 NLP 任务的最先进模型,也有参考样例和一些易于使用的 web demo(http://t.cn/RQj6Cku )。

7 月,grt123 团队在 Kaggle DataScience Bowl 2017 中的肺癌预测项目上取得胜利,随后公布代码(http://t.cn/RQj6Q5j )。他们是第一支利用 PyTorch 取得胜利的团队。

在可视化方面,Tzu-Wei Huang 发布 TensorBoard-PyTorch(http://t.cn/RKaVnUz ) 插件,Facebook 人工智能研究院也发布了能与 PyTorch 兼容的 visdom(http://t.cn/RiFtnWE ) 可视化包。

随后,Facebook 人工智能研究院开源 ParlAI、fairseq-py、VoiceLoop 和 FaderNetworks 等工具包,能在多个领域实现先进的模型。

这里还有很多好的项目,我们就不一一说明,大家可以点击如下链接:https://github.com/soumith?tab=stars 

我们也想对 Forum 上那些积极帮助他人的人,特别是 ptrblck, jpeg729, QuantScientist, albanD, tom 和 chenyuntc 表示强烈感谢,你们为他人提供的帮助是无价的。

数据对比

  • Github 上共有 87769 行 Python 代码引入 torch;

  • Github 共有 3983 个库的名称或描述中提及 PyTorch;

  • PyTorch 文件的下载量超过 50 万次,精确来说,数量是 651916 次;

  • 在关于 PyTorch 的这个论坛 (http://discuss.pytorch.org/) 上,共有 5400 名用户写下 21500 篇文章,讨论了 5200 个不同主题;

  • 在 Reddit 上的 r/machinelearning 这个版块,PyTorch 被提及 131 次,同样的时间段内,TensorFlow 被提及 255 次。

PyTorch 是一个以研究为中心的框架,因此,论文(与机器学习相关)中 PyTorch 的使用率也是我们关注的一点。

论文中被提及次数:

  • 在 ICLR2018 提交的论文中,有 87 篇论文提及 PyTorch,对比起来,TensorFlow 被 228 篇论文提及,Keras 是 42 篇,Theano 和 Matlab 是 32 篇。

  • 按月来看,在 arxiv 上,PyTorch 每月平均被提及 72 次,TensorFlow 平均被提及 273 次, Keras,Caffe 和 Theano 被提及的次数分别是 100 、94、53。

课程与书籍

发布 PyTorch 时,我们已经准备了优良的 API 文档,但是仅限于一些 ipython notebook 教程,虽然有用,但远远不够。

Sasank Chilamkurthy 亲自修改了这些教程,整理在 pytorch.org/tutorials/ 页面上,非常清楚和明晰。

Sean Robertson 和 Justin Johnson 基于 PyTorch 写了很棒的 NLP 教程,他们还举了很多例子。Yunjey Choi 的教程非常优美,大多数模型的实现只需要 30 行或更少的代码。每个教程都提供新的方法,帮助用户更快地上手。

Delip Rao 和 Goku Mohandas 修改了他们正在写的书中的代码内容——改为用 PyTorch 实现。

我们也看到,很多大学的机器学习课程中把 PyTorch 作为重要工具,比如哈佛的 CS287。另外,如下三个在线课程均使用 PyTorch 来教学:

  • Fast.ai 的「Deep Learning for Coders」是一门很受欢迎的在线课程。9 月,Jeremy 和 Rachel 宣布,在下一阶段,Fast.ai 的课程将几乎全都基于 PyTorch。

  • 在新加坡国立大学和清华大学任教的 Ritchie Ng 研究员发布了名为「Practical Deep Learning with PyTorch」的 Udemy 课程。

  • 香港科技大学的 Sung Kim 在 Youtube 上发布「PyTorch Zero to All」在线课程,旨在向大众普及 PyTorch。

  工程化

过去一年间,我们完善了 PyTorch 的多项功能,改进其性能,并修复了大量 bug。大家可以在发布说明(http://t.cn/RazYAPn )中看到我们做的所有更新和改进。以下是过去一年间一些瞩目的改进:

1、高阶梯度

随着梯度惩罚在多篇论文中的实现,以及随之而来的对二阶梯度法的研究,在 PyTorch 中实现高阶梯度必不可少。8 月,我们实现了一个通用接口,支持 n 阶导数,同时增加了支持高阶梯度函数的量。

2、分布式 PyTorch

8 月,我们发布了一个小的分布式工具包,集合了许多流行的 MPI 方法。这个工具包覆盖 TCP、MPI、Gloo 和 NCCL2 等很多后端,支持多种类型的 CPU/GPU 集合操作和用例,并集成了 Infiniband 和 RoCE 等分布式技术。想要做到分布式比较困难,在最初的迭代中我们经常碰到 bug。在随后的版本中,我们提供的包更加稳定、性能更好。

3、与 NumPy 联系更紧

用户最大的需求之一是他们熟悉的 NumPy 功能。这些功能中,Broadcasting 和 Advanced Indexing 都很方便,可以帮助用户减少冗余。PyTorch 目前支持这些特性,它的 API 逐渐向 NumPy 靠拢。

4、稀疏张量

3 月,我们发布了一个支持稀疏张量的小工具包,基于这个工具包,我们在 5 月发布了带有 CUDA 支持的工具包。这个工具包很小,功能有限,用于实现 Sparse Embedding 以及深度学习中常用的稀疏范例。目前这个工具包仍很小,需要继续扩展——如果你想贡献自己的一份力,可以与我们联系。

5、性能

性能的提升是一场持久战,对 PyTorch 这样一个动态框架来说尤甚。在过去的一年里,我们极力提升其灵活性,从核心张量库到神经网络运算,PyTorch 的性能得到了极大提升。

  • 针对张量操作增加了 AVX 和 AVX2

  • 针对 concatenation 和 Softmax 等较为常见的工作负荷,编写了更快的 GPU kernel

  • 重写了若干神经网络运算的代码

将框架的开销降低十倍

由于 PyTorch 是动态图框架,训练中,每次迭代时都必须创建一个新的图表,因此,框架开销必须很低,或者工作负载必须足够大。今年 8 月,DyNet 的作者(Graham Neubig 等)展示了 DyNet 在一些小的 NLP 模型上速度比 PyTorch 快得多。

于是我们开始重写 PyTorch 的内部结构,这是一次大的调整,调整之后,每个算子的执行时间从十多微秒降低到一微秒。

ATen

当重新设计 PyTorch 内部结构时,我们构建了 ATen C++11 库(http://t.cn/RQjaAJA ),这个库现在控制所有的 PyTorch 后端。ATen 中有一个 API 能反映 PyTorch 的 Python API,这使得它非常适合用于张量计算——变得更加方便。

6、从模型输出到生产——支持 ONNX 和 JIT 编译器

大家经常对我们提出这样的请求——希望将 PyTorch 模型导出到另一个框架中。基于 PyTorch,开发者能进行快速的研究,一旦研究做完,他们想将得到的模型导入更大的项目。

考虑到用户的需求,我们在 PyTorch 中构建了一个 tracer,它能将 PyTorch 模型输出为中间表示。大家可以利用随后的 trace 高效执行当前的 PyTorch 模型,或者将其转换成 ONNX 格式,加载至 Caffe2, MXNet, TensorFlow 等框架中,还可以直接加载至 CoreML 或 TensorRT 等硬件加速库。

接下来一段时间,大家会听到更多关于 JIT 编译器的消息,它能改善 PyTorch 的性能。

NLP工程师入门实践班:基于深度学习的自然语言处理

三大模块,五大应用,手把手快速入门NLP

海外博士讲师,丰富项目经验

算法+实践,搭配典型行业应用

随到随学,专业社群,讲师在线答疑

▼▼▼




新人福利




关注 AI 研习社(okweiwu),回复  1  领取

【超过 1000G 神经网络 / AI / 大数据,教程,论文】



PyTorch 到底好用在哪里?

登录查看更多
3

相关内容

【陈天奇】TVM:端到端自动深度学习编译器,244页ppt
专知会员服务
86+阅读 · 2020年5月11日
【微众银行】联邦学习白皮书_v2.0,48页pdf,
专知会员服务
165+阅读 · 2020年4月26日
机器学习速查手册,135页pdf
专知会员服务
338+阅读 · 2020年3月15日
机器翻译深度学习最新综述
专知会员服务
98+阅读 · 2020年2月20日
2019必读的十大深度强化学习论文
专知会员服务
57+阅读 · 2020年1月16日
一网打尽!100+深度学习模型TensorFlow与Pytorch代码实现集合
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
【开源书】PyTorch深度学习起步,零基础入门(附pdf下载)
专知会员服务
110+阅读 · 2019年10月26日
学界 | 2018年下半年,别错过这些深度学习项目!
大数据文摘
6+阅读 · 2018年12月13日
PyTorch 重大更新,0.4.0 版本支持 Windows 系统
AI研习社
3+阅读 · 2018年4月25日
势头强劲: PyTorch周年大事记盘点
专知
4+阅读 · 2018年1月20日
深度 | 致开发者:2018 AI发展趋势
机器之心
4+阅读 · 2018年1月11日
2017年十大最受欢迎机器学习Python库
全球人工智能
3+阅读 · 2017年12月29日
【课件分享】四天速成!香港科技大学 PyTorch 课件分享
深度学习世界
4+阅读 · 2017年10月9日
PyTorch 合辑 | 国庆特辑
AI研习社
21+阅读 · 2017年10月6日
Arxiv
3+阅读 · 2018年4月18日
Arxiv
7+阅读 · 2018年1月30日
VIP会员
相关VIP内容
【陈天奇】TVM:端到端自动深度学习编译器,244页ppt
专知会员服务
86+阅读 · 2020年5月11日
【微众银行】联邦学习白皮书_v2.0,48页pdf,
专知会员服务
165+阅读 · 2020年4月26日
机器学习速查手册,135页pdf
专知会员服务
338+阅读 · 2020年3月15日
机器翻译深度学习最新综述
专知会员服务
98+阅读 · 2020年2月20日
2019必读的十大深度强化学习论文
专知会员服务
57+阅读 · 2020年1月16日
一网打尽!100+深度学习模型TensorFlow与Pytorch代码实现集合
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
【开源书】PyTorch深度学习起步,零基础入门(附pdf下载)
专知会员服务
110+阅读 · 2019年10月26日
相关资讯
学界 | 2018年下半年,别错过这些深度学习项目!
大数据文摘
6+阅读 · 2018年12月13日
PyTorch 重大更新,0.4.0 版本支持 Windows 系统
AI研习社
3+阅读 · 2018年4月25日
势头强劲: PyTorch周年大事记盘点
专知
4+阅读 · 2018年1月20日
深度 | 致开发者:2018 AI发展趋势
机器之心
4+阅读 · 2018年1月11日
2017年十大最受欢迎机器学习Python库
全球人工智能
3+阅读 · 2017年12月29日
【课件分享】四天速成!香港科技大学 PyTorch 课件分享
深度学习世界
4+阅读 · 2017年10月9日
PyTorch 合辑 | 国庆特辑
AI研习社
21+阅读 · 2017年10月6日
Top
微信扫码咨询专知VIP会员