首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >势头强劲: PyTorch周年大事记盘点

势头强劲: PyTorch周年大事记盘点

作者头像
WZEARW
发布2018-04-13 15:18:14
8850
发布2018-04-13 15:18:14
举报
文章被收录于专栏:专知专知

【导读】 1月19日,PyTorch团队对PyTorch发布一年来的成长轨迹做了总结。在过去一年里,PyTorch资源包的下载量超50万次、PyTorch频频出现在各种会议中。然后强调了,PyTorch社区的众多成员对PyTorch做了很多贡献,使其变得更好用、更强大。最后推荐了出官方文档之外,一些好用PyTorch教程和书籍。PyTorch作为当前python深度学习的流行框架,在过去一年了展现了强大的生命力和前景,本文对PyTorch做了很全面的总结,值得所有深度学习从业者和研究人员深入了解!

专知公众号以前推出PyTorch手把手系列教程:

  1. < 一文带你入门优雅的Pytorch >
  2. < 快速理解系列(一): 图文+代码, 让你快速理解CNN>
  3. < 快速理解系列(二): 图文+代码, 让你快速理解LSTM>
  4. < 快速理解系列(三): 图文+代码, 让你快速理解GAN >
  5. < 快速理解系列(四): 图文+代码, 让你快速理解Dropout >
  6. < NLP系列(一) 用Pytorch 实现 Word Embedding >
  7. < NLP系列(二) 基于字符级RNN的姓名分类 >
  8. < NLP系列(三) 基于字符级RNN的姓名生成 >

PyTorch的过往一年

到今天PyTorch公开发布已经有一年了。 这是一个疯狂的过程 ,我们一直在追求建立一个灵活的深度学习研究平台。 在过去的一年中,我们看到了一群非常棒的人使用,贡献和传播PyTorch - 感谢你的爱。

回首过去,我们从在过去一年里总结PyTorch:来自社区的进展,新闻和亮点。

  • 社区

我们给予这个强大社区中爱上pytorch的研究人员和工程师最好的祝福。 核心团队拥有来自多个国家,公司和大学的工程师和研究人员,如果没有他们的贡献,我们不可能使PyTorch成为事实。

  • 研究论文,软件包和Github

发布后的几天内,社区用户开始在PyTorch中实现他们最喜爱的研究论文,并且在Github上发布相关代码。 开源代码是目前研究人员使用的主要工具。

人们通过网络聚集在一起创造torchtext,torchvision和torchaudio包,从而帮助促进不同领域上的研究。

第一个基于PyTorch的社区软件包来自Brandon Amos,其标题为“块” (Block),这个软件包功能在于更容易地处理块矩阵(Block matrix)。 CMU的Locus实验室随后发布了PyTorch软件包,里面包含了他们大部分研究的实现。 Zagoruyko的Paying more attention to attention.是第一个研究论文代码。

Jun-Yan Zhu, Taesung Park, Phillip Isola, Alyosha Efros和来自伯克利的团队发布了非常受欢迎的Cycle-GAN和pix2pix,其功能在于对图像进行图像转换。

来自HarvardNLP和Systran的研究人员开始开发和改进PyTorch中的OpenNMT,来源于Facebook上重新实现了来自Adam Lerer的[Lua] Torch代码。

来自Twitter上的MagicPony团队基于PyTorch的例子中提供了他们超分辨率恢复的实现。

Salesforce Research发布了多个软件包,其中包括PyTorch-QRNN,这是一种RNN,比由CuDNN优化的标准LSTM快2到17倍。 詹姆斯·布拉德伯里(James Bradbury)和团队是PyTorch社区中最活跃和最有魅力的部队之一。

Uber,Northeastern和Stanford的研究人员聚集在一起,围绕着Pyro和ProbTorch建成了一个活跃的概率编程社区。 他们正在积极开发torch.distributions核心程序包。 这个社区十分活跃并且在快速发展,我们在NIPS 2017上与Fritz Obermeyer,Noah Goodman,Jan-Willem van de Meent,Brooks Paige,Dustin Tran以及另外22位与会者进行了第一次碰面,并且讨论如何让这个世界贝叶斯化。

NVIDIA研究人员发布了三个高质量的存储库,这些库实现了pix2pix-HD,Sentiment Neuron和FlowNet2论文。 他们的PyTorch中不同数据并行模型的可伸缩性的分析工作对于社区是有帮助的。

Allen Allen研究所发布了AllenNLP,其中包括NLP中的几种最先进的模型 - 参考实现和用于标准NLP任务易于使用的Web演示。

去年七月,Kaggle的获胜队grt123,他们在肺癌检测的工作赢得DataScience Bowl 2017,随后发布了他们的PyTorch实现。

在可视化领域,Tzu-Wei Huang实现了一个TensorBoard-PyTorch插件,并且Facebook AI Research发布了visdom可视化包PyTorch兼容版本。

最后,Facebook AI Research发布了几个项目,如ParlAI,fairseq-py,VoiceLoop和FaderNetworks,这些项目实现了多领域的顶尖模型和接口数据集。

我们也对那些在论坛上积极帮助别人的人们给予感谢,特别是ptrblck,jpeg729,QuantScientist,albanD,tom和chenyuntc。 您提供了非常宝贵的服务,非常感谢!

  • 数据

就纯粹的数字而言,

github上的87,769行Python代码导入了torch

Github上的3,983个资源库在它们的名字或者描述中提及到PyTorch

PyTorch二进制文件下载超过50万次,准确来说是 651,916次。

5,400名用户撰写了21,500篇文章,这些文章中涉及到5,200个话题:

自发布之日起,在Reddit的/ r / machinelearning上PyTorch被提及了131次。 在同一时期,TensorFlow被提及255次。

  • 研究数据

PyTorch是一个以研究为中心的框架。 所以感兴趣的指标之一就是在机器学习研究论文中PyTorch使用量。

在最近的ICLR2018会议上,PyTorch在87篇论文中被提到,而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在NLP上写了很棒的新教程,通过实例进行讲解。 Yunjey Choi写了一个漂亮的教程,大多数模型在30行以内实现。 每个新的教程采用不同的学习方法,最终帮助用户更快地找到方法。

Goku Mohandas和Delip Rao将他们正在编写的书的代码内容切换到PyTorch框架。

我们已经看到不少大学的机器学习课程被PyTorch教为主要工具,如哈佛大学的CS287。我们有三个在线课程弹出教导使用PyTorch。

Fast.ai的“Deep Learning for Coders”是一个流行的在线课程。 去年9月,Jeremy和Rachel宣布下一个fast.ai课程将几乎完全基于PyTorch。

新加坡国立大学和清华大学兼职研究员Ritchie Ng发布了一个名为PyTorch实用深度学习的Udemy课程。

中国香港科技大学的Sung Kim在Youtube上发布了一个针对普通观众的在线课程,名为“PyTorch Zero to All”。

  • 工程项目

在过去的一年里,我们实现了多种功能,全面提高了性能,并修复了大量的错误。 我们所做的工作的完整列表可以在我们的发行说明中找到。 以下是去年我们工作的重点:

  • 高阶梯度

随着一些采用梯度处罚的论文的发表以及二阶梯度方法的不断研究,这是一个重要且受欢迎的特征。 在8月份,我们实现了一个可以采用n阶导数的广义接口,并且随着时间的推移增加了支持高阶梯度的函数的覆盖范围,因此几乎所有的操作都支持这个接口。

  • 分布式PyTorch

8月份,我们发布了一个小型的分布式软件包,采用了非常受欢迎的MPI集体方法。 该软件包有多个后端,例如TCP,MPI,Gloo和NCCL2,从而支持各种类型的CPU / GPU集合操作和用例,并集成了Infiniband和RoCE等分布式技术。 分布式是很难的,我们在最初的迭代中有错误。 在随后的发布中,我们使这个软件包更加稳定,性能也得到了提升

  • 接近NumPy

用户最大的需求之一就是他们熟悉的NumPy功能。 诸如广播和高级索引之类的功能是方便的,并且为用户节省了大量的冗长。 我们实现了这些功能,并开始调整我们的API以更接近NumPy。 随着时间的推移,我们希望在适当的适当的地方能够采用越来越接近NumPy的API。

  • 稀疏张量

今年3月,我们发布了一个支持稀疏张量的小包,5月份我们发布了对这个稀疏包的CUDA支持。 该包体积小,功能有限,用于实现稀疏嵌入和深度学习中常用的稀疏范式。 这个软件包的规模还很小,并且需要扩展它 - 如果你有兴趣扩展这个稀疏软件包,请在讨论版上联系我们

  • 性能

性能始终是一场持续的战斗,对想将灵活性最大化的动态框架PyTorch来说更是如此。在过去的一年里,PyTorch改进了从核心的张量库到神经网络operator的性能,能在board上快速编写微优化。

我们为张量操作添加了专门的AVX和AVX2内在函数

为频繁的工作负载(如串联和Softmax)编写更快的GPU内核(包括许多其他功能)

重写了几个神经网络算子的代码,但值得注意的是nn.Embedding和组卷积。

  • 跨板减少10倍的框架开销

由于PyTorch是一个动态图形框架,我们在训练循环的每一次迭代中动态创建一个新图形。 因此,框架开销必须很低,或者工作负载必须足够大,以至于可以隐藏框架开销。 在八月份,DyNet(Graham Neubig和他的团队)的作者表示,它比PyTorch在小型NLP模型上快得多。 这是一个有趣的挑战,我们没有意识到这些尺寸的模型正在被训练。 在为期数月(持续)的努力中,我们着手对PyTorch内部进行重大改写,将每个运营商执行时间超过10微秒的框架开销降低到1微秒。

ATen

重新设计PyTorch内部时,我们构建了现在支持所有PyTorch后端的ATen C ++ 11库。 ATen拥有一个反映PyTorch Python API的API,这使得它成为一个便捷的用于张量计算的C ++库。 ATen可以独立于PyTorch来构建和使用。

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

将PyTorch模型导出到另一个框架是我们经常收到的一个请求。用户在PyTorch完成模型后,想将其搭载到更大项目,但有时会遇到只能使用C++的情况。

因此,PyTorch建立了一个tracer,可将PyTorch模型输出为中间表示,用户可将其转换为ONNX格式输出至Caffe2、MXNet、TensorFlow等其他框架中,或直接连接到 CoreML或TensorRT这样的硬件加速库。今年,我们将更多地利用 JIT 编译器提升性能。

原文链接:

http://pytorch.org/2018/01/19/a-year-in.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 专知 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档