正文
PyTorch 自发布以来,由于调试、编译等多方面的优势,它成为 2017 年热度极高的框架之一。本文内容介绍了开源一周年以来,PyTorch 取得的成绩。在一些指标上,PyTorch 也与 TensorFlow 做了同期对比。PyTorch 是不是 2017 年的明星框架?
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 代码最初的再实现。
来自 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 概率编程会议,共同探讨如何使世界贝叶斯化。
英伟达研究者发布了三个高质量 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 是一个专注于研究的框架。所以与衡量它的指标包括 PyTorch 在机器学习研究论文中的使用。
课程、教程与书籍
我们在发布 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 实现了多个功能,包括 board 上的性能、修复大量 bug 等。去年完成的任务清单详见:https://github.com/pytorch/pytorch/releases。下面是其中的几个亮点:
高阶梯度
随着多篇关于实现梯度罚项的论文的发表,以及二阶梯度法的不断研究发展,高阶梯度成为必需的热门功能。去年 8 月,我们实现了一个通用接口,可使用 n 阶导数,加快支持高阶梯度函数的收敛,截至写作本文时,几乎所有 ops 都支持此界面。