PyTorch发布一周年:盘点社区和工程大事件,后来者居上态势已显?

时间:2022-04-24
本文章向大家介绍PyTorch发布一周年:盘点社区和工程大事件,后来者居上态势已显?,主要内容包括社区大事件、工程大事件、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

安妮 编译自 PyTorch官网

今天,PyTorch公开发布一周年了。

这个自诞生之日起就火热的深度学习框架,这一年是怎样的成长轨迹?刚刚,PyTorch团队在官网上发文,盘点了PyTorch上一年的进展、大事件和社区情况,并和其他框架进行了对比。

总体来说战绩是这样的——

  • GitHub上有87769行Python代码导入了torch
  • GitHub上3983个资源库在命名或描述中提到了PyTorch
  • PyTorch文件的下载量超50万次,具体说达到了651916次
  • 5400个用户写了21500篇帖子,在论坛上讨论过5200个话题
  • 在Reedit机器学习版块被被提及达131次,而TensorFlow在这段时间仅被提及255次

PyTorch也频频出现在各种会议中——

  • 在最近的ICLR2018中提交的论文中,有87篇提到PyTorch。同时有228篇提到TensorFlow,42篇提到Keras,32篇提到Theano和Matlab
  • arXiv每月平均提到PyTorch 72次,TensorFlow 273次,Keras 100次,Caffe 94次,Theano 53次

这些对比数据之外,PyTorch团队还整理了这一年社区的大事件和突破性进展。量子位则其重点,编译整理如下:

社区大事件

第一个现身社区的PyTorch程序包来自CMU博士Brandon Amos,他帮助简化了矩阵块的操作。

Jun-Yan Zhu, Taesung Park, Phillip Isola, Alyosha Efros和UC伯克利的团队发布了人气很高的Cycle-GAN and pix2pix,实现了图像到图像的转换。

项目地址: https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

哈佛大学自然语言研究组(HarvardNLP)和Systran团队构建并改善PyTorch中OpenNMT系统。

项目地址: https://github.com/OpenNMT/OpenNMT-py

推特上的MagicPony团队贡献了超分辨率工作的进展。

介绍地址: https://twitter.com/Rob_Bishop/status/821793080877588480

Salesforce 研究院发布了一些程序包,包括PyTorch-QRNN。这是一种RNN,比CuDNN优化的标准LSTM快2倍到17倍,James Bradbury和他的团队也因此成为PyTorch社区中最活跃和最引人注目的力量之一。

PyTorch-QRNN项目地址: https://twitter.com/Smerity/status/917472260851560448

Uber、美国东北大学和斯坦福的研究团队围绕Pyro和ProbTorch组了一个概率编程社区,积极开发torch分布的核心程序包。

英伟达的研究人员发布了三个高质量的库,可以实现pix2pix-HD、Sentiment Neuron和FlowNet2的相关论文,他们还分析了PyTorch中不同数据并行模型的可扩展性。

相关项目地址: https://github.com/NVIDIA/sentiment-discovery https://github.com/NVIDIA/flownet2-pytorch https://github.com/NVIDIA/sentiment-discovery/blob/master/analysis/scale.md

艾伦研究院(Allen Institute for AI)发布了AllenNLP,里面包括先进的NLP模型参考实现,易于将web demo用于标准的NLP任务。

项目地址: http://demo.allennlp.org/machine-comprehension

去年7月,Kaggle团队grt123夺冠关于肺癌检测的DataScience Bowl 2017,随后发布了他们的PyTorch实现。

项目地址: https://twitter.com/PyTorch/status/881573658166267904

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

相关项目地址: https://github.com/lanpa/tensorboard-pytorch https://github.com/facebookresearch/visdom

此外,Facebook AI研究院还发布了一些其他的项目,比如ParlAI、fairseq-py、VoiceLoop and FaderNetwork等,在多个领域实现了先进的模型和接口数据集。

工程大事件

在过去一年,PyTorch团队实现了多个功能,提高了性能。我们一起回顾一下:

高阶梯度

去年8月,PyTorch实现了一个可以接收n阶导数的通用接口,并增加了支持高阶梯度函数的范围。

分布式PyTorch

还是去年8月,PyTorch发布了小型分布式软件包,它用到了流行的MPI集合(MPI-collective)方法。该软件包有多个后端,如TCP、MPI、Gloo和NCCL2等,来支持各种类型的CPU/GPU集成操作和用例,并包含Infiniband和RoCE等分布式技术。

更接近NumPy

用户最大的需求之一是他们熟悉的NumPy特性。broadcasting和高级索引等功能很方便,为用户节省了大量时间。PyTorch实现了这些特性,并让API更接近NumPy。

稀疏张量

去年三月,PyTorch发布了一个支持稀疏张量的小程序包,五月发布了CUDA支持的稀疏包。该程序包可以实现深度学习中常用的稀疏范例的稀疏嵌入。

性能

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

PyTorch为张量操作添加了专门的AVX和AVX2内联函数

编写了更快的GPU内核,用于常用的工作负载中

重写了几个神经网络operator的代码,如nn.Embedding等

此外,PyTorch将框架的开销减小了10倍

这事源于去年8月,DyNet的作者Graham Neubig等人展示了DyNet在小型NLP模型上的速度比PyTorch要快得多。之后,PyTorch重写了内部架构,将每个operator执行框架的开销从10微秒减少到1微秒。

ATen

重新设计PyTorch内部架构时,PyTorch团队还建造了ATen C++11库,现在所有的PyTorch后端都可以使用它。

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

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

因此,PyTorch建立了一个tracer,可将PyTorch模型输出为中间表示,用户可将其转换为ONNX格式输出至Caffe2、MXNet、TensorFlow等其他框架中,或直接连接到 CoreML或TensorRT这样的硬件加速库。

祝PyTorch一周岁生日快乐。

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