Google资深系统专家Jeff Dean在最近的湾区机器学习大会做了 Large-Scale Deep Learning for Inelligent Computer Systems 的演讲。
在大会上,Jeff Dean 解密了谷歌未曾在论文上发表过的第二代深度学习系统TensorFlow。
演讲slides:http://stanford.edu/~rezab/nips2014workshop/slides/jeff.pdf
仔细研读了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
收藏 • 没有帮助 •
收藏 • 没有帮助 •
收藏 • 没有帮助 •
又看了看怎么实现的,看到一堆字符串,竟然是在用c++进行符号式编程。。给google的大神跪了。
———————————————————
昨晚一直奇怪,符号编程怎么能达到高效率呢?今天早上看微博上有人出了评测结果,速度比mxnet慢了1倍(cifar10,400/sec vs 800/sec),显存消耗也大很多。
竟然用的还是cudnn v2版本,安上最新版的cuda之后竟然无法安装tensorflow,这果然是google的上一代引擎么?
现在暂时持观望态度,先把mxnet学好再说,毕竟这个更加开放,以后不会有版权纠纷问题,而且几乎完全由国人开发,我们要多多支持自己人搞出来的东西。
相比tensorflow来说,mxnet只是少一些operator,在速度、显存消耗、兼容性等方面都完爆tensorflow。我们要多多贡献代码,尽快完善mxnet的operator呀。
收藏 • 没有帮助 •
2. 感觉另外一个点:提到算法可以运行在电话(手机),单机CPU上,这个是一个大的特点,应该是向轻量级应用blooming的转变的信号。
收藏 • 没有帮助 •
总感觉没有太大的革新啊……虽然他的一代我都没用过,但是感觉二代也并没有很黑的科技。
反观微软,牛津计划(Project Oxford)能够帮助非机器学习领域的开发者解决人脸识别和自然语言解析等问题,开发者只需要玩好API即可。现在,这一系列免费开发工具已可以在GitHub上找到,语言理解智能服务(LUIS)也已开放,并提供中文支持
http://blogs.technet.com/b/machinelearning/archive/2015/10/26/microsoft-expands-availability-of-project-oxford-intelligent-services.aspx这个感觉还有意思一点
收藏 • 没有帮助 •
收藏 • 没有帮助 •
收藏 • 没有帮助 •
收藏 • 没有帮助 •
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
收藏 • 没有帮助 •
目前google里面写分布式算法连mapreduce也不用了 大家用的都是flume
tensorflow跟distbelief 的区别在于 把所有的抽象层剥离出来 成为了一个接口 而具体的实现隐藏了。具体的实现用flume来写 flume还没有开源 代码怎么开? 开了能build吗?你有borg来run吗? 我认为google会把这个接口的实现 部署在gce上面 变成一个云服务 收费使用