位置:首页 > 新鲜 >

TensorFlow三岁了!

作者: | 发布时间:2019-07-07 00



  新智元报道  

编辑:肖琴,王楠

【新智元导读】TensorFlow今天3岁了。2015年的11月9日,谷歌开源TensorFlow,迅速成为最受欢迎的机器学习开源框架,构建起庞大的开发者生态。一路走来,TensorFlow收获众多辉煌,也有批评,遭遇强手劲敌,目前仍旧稳居处于开源框架王者之位。TensorFlow 2.0也已在研发中。谨以本文祝TensorFlow生日快乐,为TensorFlow发展做出贡献的开发者也辛苦了!

TensorFlow今天3岁了!


作为全球最受欢迎的机器学习开源框架,TensorFlow 发展的3年见证了机器学习和人工智能领域的快速发展和变化,与人类的孩子一样,不断学习,遭到批评,遇到对手,走向更大跟广阔的环境。


接下来,新智元带你简单回顾过去3年TensorFlow 的发展,以及关于TensorFlow的一些你或许不知道的小知识。


TensorFlow:面向公众的机器学习库


TensorFlow其实是谷歌自豪的研究级机器学习基础设施、第一代专有机器学习系统 DistBelief 的继承者,该系统负责DeepDream这一成就。


DeepDream生成的威廉王子一家画像


2009年,Hinton领导的研究小组大大减少使用DistBelief的神经网络的错误数量,通过Hinton在广义反向传播的科学突破。最值得注意的是,Hinton的突破直接使Google语音识别软件中的错误减少至少25%。


而后,谷歌指派计算机科学家,如Geoffrey Hinton和Jeff Dean,简化和重构DistBelief的代码库,使其变成一个更快、更健壮的应用级别代码库,形成了TensorFlow。

TensorFlow的计算使用有状态的数据流图表示。TensorFlow的名字来源于神经网络对多维数组执行的操作,这些多维数组被称为张量。


通过将TensorFlow的代码开源,谷歌为世界各地的公司和计算机科学家打开了在自己的产品和研究中实施尖端机器学习算法的大门。


初期爆发式发展被批垄断生态,用户说放下TensorFlow立地成佛?


虽然在短时间内迅速成长为Github最受欢迎的深度学习开源项目,并在全球范围内建立起了广泛的开发者社区,但一路走来,TensorFlow 也并非没有遭遇批评和对手。


2016年6月,Jeff Dean称在 GitHub 有1500个库提到了TensorFlow,其中只有5个来自谷歌。截止2017年3月,TensorFlow 得到14000+次commit,超过5500标题中出现过TensorFlow的Github project以及在Stack Overflow上有包括5000+个已被回答的问题,平均每周80+的issue提交。

初期爆发式的发展形成一家独大的态势,引起了业内人士对TensorFlow 所构成的潜在生态危害的担忧,这种趋势在2016年开始出现,比如地平线创始人余凯博士曾在微信朋友圈呼吁:

算是一个郑重的声明吧:一直以来我非常钦佩谷歌的Jeff Dean在MapReduce和谷歌大脑(TensorFlow)等项目上的杰出成就。但是,我必须指出,放任TensorFlow成为世界上占统治地位的人工智能开发平台对世界是危险的。尽管这个平台目前是开源的,但是随着时间的推移,人工智能变得越来越强大,这个系统会变得极端复杂到失去透明性,而且会很可怕的变成全世界数据,计算,硬件,编译器等的标准制定者。这样会导致一个不健康的生态,阻碍年轻人掌握技术的自由,让个人,公司甚至国家在人工智能领域的自主发展,最终被一家商业公司所控制。这不是危言耸听。可惜现在绝大部分人都还意识不到这点。尤其是在中国。我呼吁大家都来使用Caffe,Mxnet等更加开放中兴的开源系统,避免使用TensorFlow

后来,随着 PyTorch、MXNet、PaddlePaddle 等新框架的出现,开发者有了更多选择,生态进入良性竞争状态后,这样的担忧也开始褪去。

其次是 TensorFlow 本身使用性的问题。零星的“不好用”、“用不好”等抱怨之火,在2017 年下半年爆发,引爆点是一篇题为 “TensorFlow Sucks”的博文,作者Nicolas D. Jimenez 在肯定 TensorFlow 优点的同时,指出人们对 TensorFlow 有一种盲目崇拜,TensorFlow 缺乏灵活性,在设计思想和使用上不便于快速原型部署,而且相关的库太过高级无法轻松使用。


Quora 上开始出现“放弃使用 TensorFlow”的声音。在差不多的时间里,中国问答网站知乎上也出现了提问“TensorFlow 有哪些令人难以接受的地方?” 引发了众多的关注和讨论。正如问题描述中所说,“没有工具是完美的,TensorFlow 亦然,现在是时候来吐槽一下了”。


针对开发者提出的主要问题,谷歌后来都做了改进,比如推出动态图模型,能够保存和重用模型。

劲敌 PyTorch 出现

虽有 CNTK、Theano、MXNet、PaddlePaddle,如果说 TensorFlow 最强的对手,莫过于 2017年 3月 Facebook 开源的 PyTorch,以灵活轻便等优势迅速赢得了一大批开发者,其中不乏从 TensorFlow 社区转来的人。



今年5月,PyTorch 1.0 正式公开,新框架将 PyTorch 0.4与Caffe2合并,整合ONNX格式,让开发者可以无缝地将AI模型从研究转到生产;今年 10月,Facebook召开了首届 PyTorch开发者大会,其社区发展大有超越TensorFlow 之势。

根据 Reddit上一位博主贴出的统计,2018年至2019年,ICRL论文中所涉及到的主流框架工具TensorFlow、PyTorch和Keras的搜索结果数,仅在一年时间内,PyTorch 数据增长近3倍:


TensorFlow:228→266

Keras:42→56

PyTorch:87→252

更早一些,今年3月,手握 ArXiv Sanity 大数据、现在主管特斯拉人工智能部门的 Andrej Karpathy,也给出了精确的排名结果(过去一个月内)。



各个框架在论文中被提到(单次计算)的比例分别是:

  • TensorFlow 14.3%

  • PyTorch 4.7%

  • Keras 4.0%

  • Caffe 3.8%

  • Theano 2.3%

  • Torch 1.5%

  • MXNet、Chainer 和 CNTK 均小于 1%

  • TensorFlow 2.0 要来了!

    虽有种种问题,但TensorFlow 在机器学习开源框架中的王者地位是毋庸置疑的。

    今年8 月,TensorFlow 2.0 预览版即将发布的消息传出,TensorFlow 开发者团队表示,为了适应计算硬件、机器学习研究和商业部署这三年的快速发展,更好地满足广大用户的需求,TensorFlow 2.0 已在研究之中。

    用户对TensorFlow 2.0的期望包括:

  • Eager execution应当是2.0的核心功能。它将用户对编程模型的期望与TensorFlow更好地结合起来,并且应该使TensorFlow更易于学习和应用。

  • 通过交换格式的标准化和API的一致性,支持更多平台和语言,并改善这些组件之间的兼容性和奇偶性。

  • 将删除已弃用的API并减少重复数量,否则会给用户造成混淆。


  • TensorFlow 三年发展里程碑

  • TensorFlow是谷歌大脑的第二代机器学习系统。

  • 从0.8.0版本(发布于2016年4月)开始本地的支持分布式运行。

  • 从0.9.0版本(发布于2016年6月)开始支持iOS。

  • 从0.12.0版本(发布于2016年12月)开始支持Windows系统。该移植代码主要由微软贡献。

  • 1.0.0版本发布于2017年2月11日。虽然参考实现运行在单台设备,TensorFlow可以运行在多个CPU和GPU(和可选的CUDA扩展和图形处理器通用计算的SYCL扩展)。


  • 2015年11月9日

    宣布TensorFlow开源,根据 Apache 2.0 许可并以开放源代码软件包的形式发布了 TensorFlow API 和一个参考实现。


    2015年12月

    发布v0.6,支持GPU,Python 3.3


    2016年4月

    发布v0.8,分布式TensorFlow


    2016年11月

    发布v0.11,支持Windows


    2017年2月

    在首届TensorFlow开发者峰会上,正式发布TensorFlow 1.0。v1.0的性能得到改进,API变得稳定。TensorFlow1.0主要改进了机器学习功能,发布了XLA的实验版本,对Python和Java用户开放,提升了debugging,并且加入和改进了一些高级API,其中包括Keras。


    2017年4月

    发布v1.1,增加针对tf.keras的特性


    2017年8月

    发布v1.3,增加高级API,canned estimators,更多模型,原始TPU支持


    2017年11月

    发布v1.5,增加动态图机制Eager Execution 和用于移动端的轻量级TensorFlow Lite版本


    2018年3月

    发布TF Hub, TensorFlow.js, 和TensorFlow Extended (TFX)


    2018年5月

    发布v1.6,增加支持Cloud TPU,模型和pipeline


    2018年6月

    发布v1.8,Distribution Strategy API, TensorFlow Probability


    2018年8月

    发布v1.10,整合Cloud Bigtable


    2018年10月

    发布v1.12,大量API改进,包括改进XLA稳定性和性能,改进Keras模型支持


    2019年

    即将发布TensorFlow 2.0

    结语

    支持深度学习和机器学习研究的软件生态系统一直在快速发展,开源软件已经是常态;有各种各样的框架可用,满足从探索新想法到将它们部署到生产中的需求;而大型企业在激烈竞争中支持不同的软件栈。

    在众多新工具涌现的同时,也有功成名退的老将,比如Theano,但这些年来 Theano 开发者团队所提出的大多数创新,现在已经被其他框架采用和完善。例如,将模型表达为数学表达式,重写计算图以获得更好的性能和内存使用,GPU上的透明执行,更高阶的自动微分等,都成为了主流想法。


    微软和 Facebook 发起了开源人工智能项目ONNX(Open Neural Network Exchange),不久后亚马逊AWS 也宣布加入并推出ONNX-MXNet 开源Python 软件包。除了亚马逊,AMD、ARM、华为、IBM、英特尔、高通都宣布将支持ONNX,形成强大的深度学习开源联盟。


    有人说控制了开源工具,就控制了整个生态;但同时,这些巨头也在去中心化,打通全球数据连接。开放生态系统的基础,使 AI 更容易获取并富有价值。开发人员可以为其任务选择合适的框架,框架作者可以专注于创新,硬件供应商可以简化优化流程。


    感谢所有帮助开发这些工具,并通过贡献bug报告、配置文件、用例、文档和支持来改进它们的人。



    【加入社群】

    新智元 AI 技术 + 产业社群招募中,欢迎对 AI 技术 + 产业落地感兴趣的同学,加小助手微信号:aiera2015_3  入群;通过审核后我们将邀请进群,加入社群后务必修改群备注(姓名 - 公司 - 职位;专业群审核较严,敬请谅解)。