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

栏目: Python · 发布时间: 8年前

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

雷锋网 (公众号:雷锋网) AI 研习社按,2017 年 1 月,Facebook 开源 PyTorch,短短一年时间,PyTorch 便发展成一线开发者争相使用的工具。这一年间,有哪些研究人员对 PyTorch 的发展做出了贡献?关于 PyTorch 的经典课程有哪些?它经历了什么样的改变?研究人员又带来了哪些创新?

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

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

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

社群

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

论文、 工具 包和 Github

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

大家在一起,创造出了 torchtexttorchvisiontorchaudio 工具包,帮助加快 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 ,这个工具包极受欢迎,能实现图像转换。

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

HarvardNLP 和 Systran 的研究人员开始利用 PyTorch 开发和改进 OpenNMT ,这最初是由 Adam Lerer 利用 [Lua]Torch 重实现的。

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

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

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

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

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

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

艾伦人工智能研究院发布 AllenNLP ,其中包含一些针对标准 NLP 任务的最先进模型,也有参考样例和一些易于使用的 web demo

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

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

在可视化方面,Tzu-Wei Huang 发布 TensorBoard-PyTorch 插件,Facebook 人工智能研究院也发布了能与 PyTorch 兼容的 visdom 可视化包。

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

随后,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/ 页面上,非常清楚和明晰。

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

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。大家可以在 发布说明 中看到我们做的所有更新和改进。以下是过去一年间一些瞩目的改进:

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 库 ,这个库现在控制所有的 PyTorch 后端。ATen 中有一个 API 能反映 PyTorch 的 Python API,这使得它非常适合用于张量计算——变得更加方便。

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

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

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

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

via: pytorch.org

雷锋网 AI 研习社编译整理。

雷锋网版权文章,未经授权禁止转载。详情见 转载须知

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

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Linux Command Line

The Linux Command Line

William E. Shotts Jr. / No Starch Press, Incorporated / 2012-1-17 / USD 39.95

You've experienced the shiny, point-and-click surface of your Linux computer-now dive below and explore its depths with the power of the command line. The Linux Command Line takes you from your very ......一起来看看 《The Linux Command Line》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换