首页 > 常用平台 > 正文

pytorch一周年

标签:pytorch


目录

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

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

Community

Research papers, packages and Github

人们一起创建了 torchtexttorchvisiontorchaudio,以便利化平民化不同领域的研究。

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

cycle-GAN

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

torch版:https://github.com/junyanz/CycleGAN

pytorch版:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

论文链接:https://arxiv.org/abs/1703.10593

介绍:让莫奈画作变成照片:伯克利图像到图像翻译新研究

opennmt

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

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

项目主页:http://opennmt.net/

pytorch版:https://github.com/OpenNMT/OpenNMT-py

tf版: https://github.com/OpenNMT/OpenNMT-tf

超分辨率

来自 Twitter 的 MagicPony 团队贡献了其超分辨率研究示例的 PyTorch 实现【直接集成进pytorch的examples中】https://github.com/pytorch/examples/tree/master/super_resolution

PyTorch-QRNN

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

pytorch:https://github.com/salesforce/pytorch-qrnn

Pyro & ProbTorch

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

pyro:

http://pyro.ai/

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

probtorch:

https://github.com/probtorch/probtorch

pix2pixHD, sentiment neuron & flownet2

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

pix2pix-HD:

https://github.com/NVIDIA/pix2pixHD

sentiment neuron: https://github.com/NVIDIA/sentiment-discovery

flownet2: https://github.com/NVIDIA/flownet2-pytorch

allenNLP

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

代码:https://github.com/allenai/allennlp

allenNLP: http://allennlp.org/

demo[包括machine-comprehension/textuale-ntailment/semantic-role-labeling/coreference-resolution/named-entity-recognitio]:http://demo.allennlp.org/machine-comprehension

DSB2017冠军

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

https://github.com/lfz/DSB2017

可视化

在可视化方面,Tzu-Wei Huang 实现了 TensorBoard-PyTorch 插件 https://github.com/lanpa/tensorboard-pytorch

Facebook AI Research 发布了与 PyTorch 兼容的 visdom 可视化包。

https://github.com/facebookresearch/visdom

Facebook AI Research

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

ParlAI:

https://github.com/facebookresearch/ParlAI

fairseq-py: https://github.com/facebookresearch/fairseq-py

VoiceLoop:

https://github.com/facebookresearch/loop

FaderNetworks:

https://github.com/facebookresearch/FaderNetworks

Metrics

  • 在 Github 上有 87769 行代码引入 Torch。
  • 在 Github 上有 3983 个 repository 在名字或者描述中提到了 PyTorch。
  • PyTorch binary 下载量超过 50 万,具体数字是 651916。
  • 在论坛上,有 5400 名用户发表了 21500 条讨论,涉及 5200 个主题。
  • 自发布以来,在 Reddit 上的/r/machinelearning 主题中有 131 条讨论提到了 PyTorch。同期,TensorFlow 被提及的次数为 255。

pytorch v.s. tensorflow: PyTorch和TensorFlow到底哪个更好?看看一线开发者怎么说

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

Research Metrics

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

  • 在 ICLR 2018 学术会议提交的论文中,有 87 篇提到了 PyTorch,相比之下 TensorFlow 228 篇,Keras 42 篇,Theano 和 Matlab 是 32 篇。
  • 按照月度来看,arXiv 论文提到 PyTorch 框架的有 72 篇,TensorFlow 是 273 篇,Keras 100 篇,Caffe 94 篇,Theano 53 篇。

Courses, Tutorials and Books

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」。

Engineering

Higher-order gradients

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

Distributed PyTorch

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

Closer to NumPy

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

Sparse Tensors

In March, we released a small package supporting sparse Tensors and in May we released CUDA support for the sparse package. The package is small and limited in functionality, and is used for implementing Sparse Embeddings and commonly used sparse paradigms in deep learning. This package is still small in scope and there’s demand to expand it — if you are interested in working on expanding the sparse package, reach out to us on our Discussion Boards

Performance

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

  • 我们添加了专门的 AVX 和 AVX2 内部函数,用于 Tensor 运算
  • 更快的 GPU kernel,用于常用的工作负载,如级联和 Softmax;
  • 为多个神经网络算子重写代码,如 nn.Embedding 和组卷积。

Reducing framework overhead by 10x across board

由于 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 独立构建和使用。

https://github.com/pytorch/pytorch/tree/master/aten

Exporting models to production — ONNX Support and the JIT compiler

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

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


原创文章,转载请注明出处!
本文链接:http://hxhlwf.github.io/posts/platform-pytorch-anniversary.html
上篇: SQuAD比赛算法综述
下篇: 2017年度10大值得读的nlp方面的paper

comment here..