资讯专栏INFORMATION COLUMN

PyTorch一周年战绩总结:是否比TensorFlow来势凶猛?

ymyang / 3409人阅读

摘要:截止到今天,已公开发行一周年。一年以来,社区中的用户不断做出贡献和优化,在此深表感谢。所以与衡量它的指标包括在机器学习研究论文中的使用。来自香港科技大学的在上推出了面向普通观众的在线课程。

Yann LeCun Twitter

截止到今天,PyTorch 已公开发行一周年。一年以来,我们致力于打造一个灵活的深度学习研究平台。一年以来,PyTorch 社区中的用户不断做出贡献和优化,在此深表感谢。

通过此文,我们打算对 PyTorch 一年的发展历程做一个总结:PyTorch 的进展、新闻以及社区亮点。

社区

我们很幸运,PyTorch 团队有一批强大、饱含热情的研究者和工程师,核心团队的工程师和研究者来自不同的国家、公司和大学,没有他们的付出就不会有今天的 PyTorch。

研究论文、工具包、GitHub

PyTorch 才发行几天,社区用户已经开始借助 PyTorch 实现其最喜爱的研究论文,并把代码公布在 GitHub 上。开源代码对当今的研究者来说是一个主要而核心的工具。

人们一起创建了 torchtext、torchvision 和 torchaudio,以便利化平民化不同领域的研究。

较早的 PyTorch 社区工具包(被命名为 Block)来自 Brandon Amo,有助于更轻松地处理块矩阵(block matrix)。来自 CMU 的 Locus 实验室后来继续公布 PyTorch 工具包及其大部分研究的实现。较早的研究论文代码来自 Sergey Zagoruyko,论文名称为《Paying more attention to attention》。

来自 U.C.Berkeley 的 Jun-Yan Zhu、Taesung Park、Phillip Isola、Alyosha Efros 及团队发布了非常流行的 Cycle-GAN 和 pix2pix,用于图像转换。

参见论文:学界 | 让莫奈画作变成照片:伯克利图像到图像翻译新研究

HarvardNLP 和 Systran 的研究者开始使用 PyTorch 开发和提升 OpenNMT,它最初开始于 Facebook Adam Lerer 的 [Lua]Torch 代码最初的再实现。

参见:开源 | 哈佛大学 NLP 组开源神经机器翻译工具包 OpenNMT:已达到生产可用水平

来自 Twitter 的 MagicPony 团队贡献了其超分辨率研究示例的 PyTorch 实现。

Salesforce 发布了若干个工具包,包括其亮点成果 PyTorch-QRNN,这是一种新型 RNN,相比于 CuDNN 优化的标准 LSTM 可提速 2 到 17 倍。James Bradbury 及其团队是 PyTorch 社区中最活跃和最有吸引力的团队之一。

来自 Uber、Northeaster、Stanford 的研究者围绕着其工具包 Pyro 和 ProbTorch,形成了一个活跃的概率编程社区。他们正在积极开发 torch.distributions 核心工具包。该社区非常活跃,快速发展,我们联合 Fritz Obermeyer、Noah Goodman、Jan-Willem van de Meent、Brooks Paige、Dustin Tran 及其他 22 名参会者在 NIPS 2017 上举办了首次 PyTorch 概率编程会议,共同探讨如何使世界贝叶斯化。

参见:Uber 与斯坦福大学开源深度概率编程语言 Pyro:基于 PyTorch

英伟达研究者发布了三个高质量 repo,实现了 pix2pix-HD、Sentiment Neuron 和 FlowNet2。对 PyTorch 中不同数据并行模型的扩展性分析对整个社区都很有益。

艾伦人工智能研究所发布 AllenNLP,包括多个 NLP 先进模型:标准 NLP 任务的参考实现和易用 web demo。

六月份,我们还首次取得了 Kaggle 竞赛冠军(团队 grt123)。他们获得了 2017 数据科学杯(关于肺癌检测)的冠军,后来公开了其 PyTorch 实现。

在可视化方面,Tzu-Wei Huang 实现了 TensorBoard-PyTorch 插件,Facebook AI Research 发布了与 PyTorch 兼容的 visdom 可视化包。

最后,Facebook AI Research 发布了多个项目,如 ParlAI、fairseq-py、VoiceLoop 和 FaderNetworks,在多个领域中实现了先进的模型和接口数据集。由于空间有限,这里就不将优秀项目一一列出,详细列表可参阅:https://github.com/soumith?tab=stars。

我们还要感谢那些在论坛中积极帮助别人的用户。你们提供了无比珍贵的服务,非常感谢!

指标

从数字上来看:

在 Github 上有 87769 行代码引入 Torch。

在 Github 上有 3983 个 repository 在名字或者描述中提到了 PyTorch。

PyTorch binary 下载量超过 50 万,具体数字是 651916。

在论坛上,有 5400 名用户发表了 21500 条讨论,涉及 5200 个主题。

自发布以来,在 Reddit 上的/r/machinelearning 主题中有 131 条讨论提到了 PyTorch。同期,TensorFlow 被提及的次数为 255。

参见:

PyTorch 和 TensorFlow 到底哪个更好?看看一线开发者怎么说

TensorFlow 开源一周年:这可能是一份最完整的盘点

研究指标

PyTorch 是一个专注于研究的框架。所以与衡量它的指标包括 PyTorch 在机器学习研究论文中的使用。

在 ICLR 2018 学术会议提交的论文中,有 87 篇提到了 PyTorch,相比之下 TensorFlow 228 篇,Keras 42 篇,Theano 和 Matlab 是 32 篇。

按照月度来看,arXiv 论文提到 PyTorch 框架的有 72 篇,TensorFlow 是 273 篇,Keras 100 篇,Caffe 94 篇,Theano 53 篇。

课程、教程与书籍

我们在发布 PyTorch 的时候,已经准备了很好的 API 文档,但教程有限,只有几个 ipython notebook,虽然有用但还不够。

Sasank Chilamkurthy 承担了改进教程的任务,教程详见:http://pytorch.org/tutorials/。

Sean Robertson 和 Justin Johnson 编写了 NLP 领域的全新教程,还有通过示例学习的教程。Yunjey Choi 写了用 30 行或者更少的代码部署大多数模型的教程。每个新教程都帮助用户用不同的学习方法更快地找到适合自己的学习路径。

Goku Mohandas 和 Delip Rao 把正在写的书中的代码做了改变,使用了 PyTorch。

我们看到,一些大学的机器学习课程是使用 PyTorch 作为主要工具讲授的,例如哈佛 CS 287。为了更进一步方便大众学习,我们还看到三个在线课程使用 PyTorch 讲授。

Fast.ai 的「Deep Learning for Coders」是个流行的在线课程。9 月份,Jeremy 和 Rachel 宣布下一个 fast.ai 的课程将几乎全部基于 PyTorch。

Ritchie Ng,在清华、新加坡国立大学都学习过的研究者,推出了名为「Practical Deep Learning with PyTorch」的 Udemy 课程。

来自香港科技大学的 Sung Kim 在 Yotube 上推出了面向普通观众的在线课程「PyTorch Zero to All」。

参见:四天速成!香港科技大学 PyTorch 课件分享

工程

去年 PyTorch 实现了多个功能,包括 board 上的性能、修复大量 bug 等。去年完成的任务清单详见:https://github.com/pytorch/pytorch/releases。下面是其中的几个亮点:

高阶梯度

随着多篇关于实现梯度罚项的论文的发表,以及二阶梯度法的不断研究发展,高阶梯度成为必需的热门功能。去年 8 月,我们实现了一个通用接口,可使用 n 阶导数,加快支持高阶梯度函数的收敛,截至写作本文时,几乎所有 ops 都支持此界面。

分布式 PyTorch

去年 8 月,我们发布了一个小型分布式包,该包使用非常流行的 MPI 集合(MPI-collective)方法。它有多个后端,如 TCP、MPI、Gloo 和 NCCL2,以支持多种 CPU/GPU 集合操作和用例,这个包整合了 Infiniband 和 RoCE 等分布式技术。分布很难,我们在初始迭代时也有一些 bug。在后续版本中,我们作出了一些改进,使这个包更加稳定,性能也更强。

更接近 NumPy

用户较大的一个需求是他们熟悉的 NumPy 功能。Broadcasting 和 Advanced Indexing 等功能方便、简洁,节约用户的时间。我们实现了这些功能,开始使我们的 API 更接近 NumPy。随着时间的进展,我们希望在合适的地方越来越接近 NumPy 的 API。

性能

性能是一场仍在进行中的战斗,尤其对于想要较大化灵活性的动态框架 PyTorch 而言。去年,从核心 Tensor 库到神经网络算子,我们改善了 PyTorch 在 board 上的性能,能在 board 上更快的编写微优化。

我们添加了专门的 AVX 和 AVX2 内部函数,用于 Tensor 运算;

写更快的 GPU kernel,用于常用的工作负载,如级联和 Softmax;

为多个神经网络算子重写代码,如 nn.Embedding 和组卷积。

PyTorch 在 board 上的开销降低 10x

由于 PyTorch 是动态图框架,我们在训练循环的每次迭代时都要创建一个新图。因此,框架开销必须很低,或者工作负载必须足够大来隐藏框架开销。去年 8 月,DyNet 的作者(Graham Neubig 及其团队)展示了 DyNet 在一些小型 NLP 模型上的速度快于 PyTorch。这是很有意思的一个挑战,我们开始重写 PyTorch 内部构件,将框架开销从 10 微妙/算子降低到 1 微妙。

ATen

重新设计 PyTorch 内部构件的同时,我们也构建了 ATen C++11 库,该库现在主导 PyTorch 所有后端。ATen 具备一个类似 PyTorch Python API 的 API,使之成为便于 Tensor 计算的 C++库。ATen 可由 PyTorch 独立构建和使用。

输出模型用于生产:支持 ONNX 和 JIT 编译器

我们收到的一个普遍请求是将 PyTorch 模型输出到另一个框架。用户使用 PyTorch 进行快速研究,模型完成后,他们想将模型搭载到更大的项目中,而该项目只要求使用 C++。

因此我们构建了 tracer,可将 PyTorch 模型输出为中间表示。用户可使用后续的 tracer 更高效地运行当前的 PyTorch 模型,或将其转换成 ONNX 格式以输出至 Caffe2、MXNet、TensorFlow 等其他框架,或直接搭载至硬件加速库,如 CoreML 或 TensorRT。今年,我们将更多地利用 JIT 编译器提升性能。

原文链接:http://pytorch.org/2018/01/19/a-year-in.html

欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:81035754

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/4717.html

相关文章

  • Keras vs PyTorch:谁是「第」深度学习框架?

    摘要:第一个深度学习框架该怎么选对于初学者而言一直是个头疼的问题。简介和是颇受数据科学家欢迎的深度学习开源框架。就训练速度而言,胜过对比总结和都是深度学习框架初学者非常棒的选择。 「第一个深度学习框架该怎么选」对于初学者而言一直是个头疼的问题。本文中,来自 deepsense.ai 的研究员给出了他们在高级框架上的答案。在 Keras 与 PyTorch 的对比中,作者还给出了相同神经网络在不同框...

    _DangJin 评论0 收藏0
  • 亚马逊加入全球芯片大战,推出首款云端AI芯片

    摘要:终于,亚马逊也加入了全球芯片大战。今天凌晨,亚马逊在拉斯维加斯召开的大会上,亚马逊发布了一系列新产品,其中包括针对机器学习定制设计的云端芯片。此次,亚马逊的加入势必会让云服务市场竞争更为激烈。终于,亚马逊也加入了全球AI芯片大战。今天凌晨,亚马逊在拉斯维加斯召开的AWS re:Invent大会上,亚马逊AWS CEO Andy Jassy发布了一系列新产品,其中包括针对机器学习定制设计的云端...

    MyFaith 评论0 收藏0
  • 从硬件配置到框架选择,请以这种姿势入坑深度学习

    摘要:幸运的是,这些正是深度学习所需的计算类型。几乎可以肯定,英伟达是目前执行深度学习任务较好的选择。今年夏天,发布了平台提供深度学习支持。该工具适用于主流深度学习库如和。因为的简洁和强大的软件包扩展体系,它目前是深度学习中最常见的语言。 深度学习初学者经常会问到这些问题:开发深度学习系统,我们需要什么样的计算机?为什么绝大多数人会推荐英伟达 GPU?对于初学者而言哪种深度学习框架是较好的?如何将...

    marek 评论0 收藏0
  • tensorflowpytorch的区别

    TensorFlow和PyTorch是两个最流行的深度学习框架之一。虽然这两个框架都可以完成大多数深度学习任务,但它们之间仍有很多区别。本文将探讨TensorFlow和PyTorch之间的一些区别。 1. 静态图和动态图 TensorFlow使用静态图,它需要先定义计算图,然后再执行计算。这使得TensorFlow在执行大规模计算时非常高效。PyTorch使用动态图,它允许用户在执行计算时动态...

    lidashuang 评论0 收藏1671
  • PyTorchTensorFlow到底哪个更好?看看线开发者怎么说

    摘要:我认为对机器学习开发者来说,是一个了不起的工具集。这个帖子发出后得到了很多机器学习研究者和开发者的关注,他们纷纷跟贴谈论自己的想法和经验不只是关于和,讨论中还涉及到更多工具。 Theano、TensorFlow、Torch、MXNet 再到近日比较热门的 PyTorch 等等,深度学习框架之间的比较一直以来都是非常受人关注的热点话题。机器之心也曾发表过多篇相关的介绍和对比文章,如《主流深度学...

    coordinate35 评论0 收藏0

发表评论

0条评论

ymyang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<