如何评价Google发布的第二代深度学习系统TensorFlow?

Google资深系统专家Jeff Dean在最近的湾区机器学习大会做了 Large-Scale Deep Learning for Inelligent Computer Systems 的演讲。
在大会上,Jeff Dean 解密了谷歌未曾在论文上发表过的第二代深度学习系统TensorFlow。

演讲slides:stanford.edu/~rezab/nip

谢澎涛CMU机器学习
黄睿昆、valyria、区展明 等人赞同

仔细研读了TensorFlow的开源代码文档和slides,总体感觉是:又一个单机深度学习工具包,并无明显的理论和系统创新,开源版本不支持分布式,所以对大规模深度学习没有用处。

1. 编程模式。采用了一种称作“computation graph”的编程模式,这种模式早在2007年已被微软提出(Dryad, [1]), 后来的Spark采用的也是这种数据流编程模式。这种模式已经在大量实验(如,[2,3])中证明并不非常适合于高效机器学习训练。
2. 数据表示。称作为”Tensor“,统一来表示向量、矩阵、三维及以上张量。这一点也并无新意。大部分机器学习操作的对象(数据或者参数)都是以向量、矩 阵的形式存在的,少部分是张量,这一点做机器学习的人人皆知。Google将它们统一表征成tensor没有问题,但是这里没有任何概念或理论创新。而且 类似的抽象在之前很多系统与工具中已经实现。
3. 开源版本不支持分布式。单机的深度学习工具已经有很多了,Google这次又增加一个。市面上真正缺乏的是能够支持大规模深度学习的分布式框架或系统,而TensorFlow并没有提供。

当然也有值得学习和借鉴的地方: 1)支持多种编程语言; 2)提供了很多深度学习模型库。

[1] Dryad: Distributed Data-Parallel Programs from Sequential Building Blocks
[2] A Comparison of Lasso-type Algorithms on Distributed Parallel Machine Learning Platforms
[3] Petuum: A New Platform for Distributed Machine Learning on Big Data

匿名用户
杜军、朱岩、乔海军 等人赞同
这个工作最大的价值不在于系统如何实现,而是在于一个机器学习的集群应该如何抽象,一个集群的机器学习流程应当作为一个数据流来实现。谷歌也相当于承认了 第一代系统里面提供的parameter server的抽象太局限了。PS不应作为系统的核心,而仅仅是一个模块化的数据流节点。

 

发布于 2015-11-07 添加评论 感谢

收藏 没有帮助

作者保留权利

 

匿名用户
敞安、知乎用户 赞同
这个系统是划时代的 而且马上要就要开源了

 

发布于 2015-11-07 5 条评论 感谢

收藏 没有帮助

作者保留权利

匿名用户
yvxiang lin、知乎用户、liuxinglanyue 等人赞同
说明内部已经在用第三代了。。。

 

发布于 06:30 添加评论 感谢

收藏 没有帮助

作者保留权利
王峰深度学习调参狗
徐振震、知乎用户、vczh 等人赞同
开源了,粗略一看,被那庞大的operator库给吓到了。
又看了看怎么实现的,看到一堆字符串,竟然是在用c++进行符号式编程。。给google的大神跪了。
———————————————————
昨晚一直奇怪,符号编程怎么能达到高效率呢?今天早上看微博上有人出了评测结果,速度比mxnet慢了1倍(cifar10,400/sec vs 800/sec),显存消耗也大很多。
竟然用的还是cudnn v2版本,安上最新版的cuda之后竟然无法安装tensorflow,这果然是google的上一代引擎么?
现在暂时持观望态度,先把mxnet学好再说,毕竟这个更加开放,以后不会有版权纠纷问题,而且几乎完全由国人开发,我们要多多支持自己人搞出来的东西。
相比tensorflow来说,mxnet只是少一些operator,在速度、显存消耗、兼容性等方面都完爆tensorflow。我们要多多贡献代码,尽快完善mxnet的operator呀。

 

编辑于 10:18 12 条评论 感谢

收藏 没有帮助

作者保留权利

 

知乎用户IT工程师
1. 个人感觉完全没有干货啊,不过确实对深度网络做了很好的抽象。个人意见依然是一个深度学习平台最重要的是平台的易用性;接口的设计,不同语言、不同数据类型的支持;需要保证每一个场景都能够有不错的model跑出来很重要。
2. 感觉另外一个点:提到算法可以运行在电话(手机),单机CPU上,这个是一个大的特点,应该是向轻量级应用blooming的转变的信号。

 

发布于 2015-11-07 添加评论 感谢

收藏 没有帮助

作者保留权利

 

刘东博苦逼科研民工还要兼职养狗←_←
huang david、逆旅、成宇 等人赞同
泻药。
总感觉没有太大的革新啊……虽然他的一代我都没用过,但是感觉二代也并没有很黑的科技。
反观微软,牛津计划(Project Oxford)能够帮助非机器学习领域的开发者解决人脸识别和自然语言解析等问题,开发者只需要玩好API即可。现在,这一系列免费开发工具已可以在GitHub上找到,语言理解智能服务(LUIS)也已开放,并提供中文支持
blogs.technet.com/b/mac这个感觉还有意思一点

 

发布于 2015-11-07 2 条评论 感谢

收藏 没有帮助

作者保留权利

 

匿名用户
gc ni 赞同
这个难道不就是几个月前开始的caffe2么?

 

发布于 2015-11-07 3 条评论 感谢

收藏 没有帮助

作者保留权利

 

梅洪源
这不是Google自家的Theano或Torch么?还是我理解的有问题。。。

 

发布于 2015-11-07 添加评论 感谢

收藏 没有帮助

作者保留权利

 

肖克利
强烈建议以后google每发一篇dl文章,就在tensorflow发布其实现代码,比如neural Turing machine

 

编辑于 昨天 16:32 添加评论 感谢

收藏 没有帮助

作者保留权利

 

匿名用户
Related Work:
Distributed System:
Dryad: Distributed Data-parallel Programs from Sequential Building Blocks
MadLINQ: large-scale distributed matrix computation for the cloud.HPC:
PLASMA: http://icl.cs.utk.edu/plasma
MAGMA: MAGMA
Supermatrix out-of-order scheduling of matrix operations for SMP and multi-core architectures
StarPU: a unified platform for task scheduling on heterogeneous multicore architectures

 

发布于 08:58 添加评论 感谢

收藏 没有帮助

作者保留权利

 

许丞软件工程师

目前google里面写分布式算法连mapreduce也不用了 大家用的都是flume

tensorflow跟distbelief 的区别在于 把所有的抽象层剥离出来 成为了一个接口 而具体的实现隐藏了。具体的实现用flume来写 flume还没有开源 代码怎么开? 开了能build吗?你有borg来run吗? 我认为google会把这个接口的实现 部署在gce上面 变成一个云服务 收费使用