前言
从2007年Theano发布,深度学习框架已经度过了15年的时间,这15年的时间里,人才辈出,风起云涌。
15年的时间发生了太多的事情,昔日的王者 TensorFlow 已经坠落神坛,新王者 Pytorch 已经站稳脚跟并在可预见的未来依旧占据绝对的王位。
本文以年为时间线,带读者一览深度学习曾经的风起云涌。考虑到读者的精力有限,本文集中在曾经主流或者现在主流的框架中,一直边缘的框架如 Deeplearning4J 等就不做介绍了。
蛰伏:等风来 - 2007-2012
2007年,Theano发布,开启了深度学习框架时代。那时,深度学习还处于蛰伏期,各大排行榜以及实验室还沉浸在 SVM 的昔日荣光中,直到2011年。
2011年,微软研究院和 Google 的研究人员将 DNN 应用在语音识别中,并获得了突破性的进展。
2012年,Hinton 实验室 将 CNN 被应用在图像识别领域,发布了 AlexNet 神经网络,在ImageNet数据集上将错误率大幅下降,远超SVM,至此,深度学习时代正式来临。
此时,Theano 已经发布 5年,而在明年的2013年 Caffe 才闪亮登场,此时的 TensorFlow 还在 Google 内部孵化中。
受益于发布时间,Theano 成为深度学习早期最有影响力的框架之一,但它的缺陷也很明显,由于出自学界,其工程设计上有很大的缺陷,最终在各大后起之秀的围攻下,使用的开发者越来越少,直到 2017年9月停止了维护。
源起:风起于青萍之末 - 2013-2015
2013年,Word2Vec 发布,NLP 奠定了之后的语言表示理论基础。自此之后,深度学习在语音,图像,语言三大领域实现了全面突破,正式进入大爆发时代。
同年的2013年9月,Caffe发布,其全称为 Convolitional Architecture for Fast Feature Embedding,意为:用于特征提取的卷积架构,看名字就知道,这款框架专为 CV 领域而生。其作者贾扬清,是之后深度学习浪潮的弄潮儿之一,现在已经成为一方大佬。
Caffe 是一个非常优秀的框架,有着易于扩展,运行速度快的优点,在之后的很长一段时间内,都是 CV 算法工程师的主要研究框架,直到在2018年,Caffe2 与 Pytorch 合二为一,成为新版本的 Pytorch。
混战:随风起 - 2015-2017
2015年,何凯明发布了 ResNet,在 CV 的各大数据集上获得进一步提升,其所提出的残差思想,现在依旧遍布各大前沿模型中。其本人成为 AI 时代的弄潮儿之一。
2015年3月,Keras 发布,Keras并不是独立框架,其本质上是针对底层深度学习框架的上层封装API,用于提升易用性。其支持 TensorFlow,Theano 或 CNTK 为底层引擎。在之后的几年里,Keras 发展迅猛,Keras + TensorFlow 一度成为开发者的首选框架。而在之后, Keras 被引入到 TensorFlow 的官方API中,随着 TensorFlow 一同衰落。
2015年11月,Googe 正式开源 TensorFlow 0.1,TensorFlow一经发布就进入了快速发展期,并在接下来的几年中逐渐走向王位。
次年的2016年3月,AlphaGo 击败李世石,成为了AI历史上的标志事件之一。自此,深度学习正式进入大众视野,人们都在为 Google 的强大惊叹不已。
2016年5月,MXNet开源,并在2017年被亚马逊选为官方开源平台。MXNet虽然是一个非常好的框架,但是由于背景不够,开发人员忙于版本迭代却忽视了文档的重要性,导致新用户难以上手,导致 MXNet 的用户群体一直无法扩大,错过了关键的竞争窗口,在与 TensorFlow,Pytorch 的竞争中一直处于绝对下风。
2016年年底,FaceBook 开源 Pytorch,估计 FaceBook 自己也没想到 Pytorch 居然能在后续的竞争中胜出。
逐鹿:登顶王位 - 2017-2018
2017年,Google 发布 TensorFlow 1.0,这标志着 TensorFlow 正式进入稳定期,同时也意味着,群雄逐鹿的大幕拉开,而 TensorFlow 将在群雄中逐渐走向王位。
得益于 Google 强大的 AI 实力以及发布时间优势,使得 TensorFlow 逐渐成为 Github 最受欢迎的深度学习框架。2018年,KDnuggets 网站对深度学习框架进行了一个统计,其统计结果如下图所示:
考虑到,Keras 本质上还是对 TensorFlow 的上层封装,因此我们看到,TensorFlow 已经占据绝对的优势,登顶王位。
2017年,Google 发布 Transformer 模型,该模型逐渐取代 CNN,RNN, 成为后面CV,NLP,语音的基本神经网络。
2018年,Google 发布 BERT 模型,并在之后一年横扫 NLP 各大领域。此时的 Google 如日中天,估计它自己也想不到,后面怎么就能输给了小小的 Pytorch呢,而此时的 Pytorch 使用率连 10% 都没到。
陨落:盛极而衰 - 2019-2020
2019年,Pytorch 开始迅速崛起,二者之间的差距开始迅速拉近。Pytorch 的优势非常突出,其基于动态图的开发模式,统一化的模块命名,以及更加平滑的学习曲线,刀刀插入 TensorFlow 的痛点,威胁 TensorFlow 的霸主地位。
很快,Google 也认识到 TensorFlow 的重大问题,于是在 2019年做了两个重大的动作:
- 集成 Keras 到 TensorFlow 中
- 发布 TensorFlow 2.0,引入动态图机制
然而,这依旧没有解决掉 TensorFlow 的几大核心痛点:
- 学习曲线:初学者是学习 Kearas 还是学习 Eager Execution呢
- 庞大复杂的API设计:Google 野心太大,想做一个大而全的工具,这导致 API 越来越多,越来越复杂。
- API 不稳定:由于历史遗留原因,TensorFlow 的 API 不断变化,Github上的 TensorFlow 经常换个版本就不能用了。
虽然 Google 也对 TensorFlow 做出了重大的改变,但这依旧难以阻挡 TensorFlow 的颓势,TensorFlow 逐渐走向没落,可谓是盛极而衰。
新生:新王登基 - 2020-2023
在 2020 年之后, Pytorch 就已经在 TensorFlow 的竞争中占据了上风,并在学术界完全击败 TensorFlow。
TensorFlow 最后剩余的优势在于工业界的部署阶段,而这一优势也在慢慢失去,现在TensorRT 对于 Pytorch 的支持也已经完善。
在可预见的未来,无论是学术界还是工业界,我认为 TensorFlow 的使用率会越来越低,直到成为历史,Pytorch 已经成为最终的王者。
国内的风起云涌
国外风起云涌,国内也没闲着,百度在2016年9月发布了 PaddlePaddle,目前依旧是国内最好的框架之一。华为在 2020 年开源了 MindSpore,华为的 MindSpore 的发展趋势很好,叠加大模型时代华为昇腾系列显卡以及中美关系恶化,华为有望超过百度的 PaddlePaddle 成为国内框架的首选。
其余的还有旷视科技的 MegEngine,一流科技 OneFlow。值得一提的是,ChatGPT 出来后,王慧文创业之初收购了 OneFlow,这波操作属实没搞懂,有这钱买显卡不好吗,买个框架,是Nvidia 不香了还是 Pytorch 不能打了呢?
最后
这篇文章是对历史上风云变化的深度学习框架进行一个综述,我等算法工程师有幸生在这个时代,争做弄潮儿,诸位同学一起加油。