去年雅虎结合了大数据和机器学习领域的两大明星,将内存数据处理框架Spark与深度学习框架Caffe集成。在Spark中编写的应用程序将使用Caffe的训练功能,或者使用经过训练的模型来进行Spark本地机器学习无法实现的预测。
今年,雅虎又发了一波大招,最新的Yahoo开源项目TensorFlowOnSpark(TFoS)(Github地址:https://github.com/yahoo/TensorFlowOnSpark)再次融合了深度学习和大数据框架,据说能够更有效地大规模运行,并且几乎没有改变现有的Spark应用程序。
在一篇博客文章中,雅虎的Big ML工程师团队描述了为什么要实现深层思维和大数据的混合,这是为了让TensorFlow更易分布式部署在现有集群上。Databricks的TensorFrames,它同时使用了GPU加速和SparkNet项目,正好与Spark在同一个伯克利实验室创建的。雅虎说:“虽然这些方法是正确的,但在检查完代码后,发现无法使TensorFlow进程直接进行通信,无法实现异步分布式学习 ,我们将不得不花费大量精力来迁移现有的TensorFlow程序。TFoS就是为了应对这类项目中的不足。
TFoS被设计为在现有的Spark和Hadoop集群上运行,并使用现有的Spark库,如SparkSQL或Spark的MLlib机器学习库。雅虎声称现有的TensorFlow程序不需要大量修改就可以使用TFoS。通常,这种改变少于10行Python代码,TensorFlow的并行实例可以直接相互通信,而无需通过Spark本身。数据可以从TensorFlow的本地设备中获取,以便从HDFS或通过Spark读取。
当使用远程直接内存访问(RDMA)时,集群机器学习框架运行速度更快。原来的TensorFlow项目不支持RDMA作为核心功能,雅虎选择创建自己的RDMA支持,并将其添加到TensorFlow的C ++层。
即使没有雅虎的贡献,TensorFlow也取得了飞跃式的进步。第一个完整的1.0版本的框架也引入了优化,使其可以部署在智能手机级硬件上,IBM选择TensorFlow作为其自定义机器学习硬件的深度学习系统。
当涉及到大规模运行时,TensorFlow最直接的竞争对手就是MXNet,亚马逊推出的一款深度学习系统。亚马逊声称MXNet在跨越多节点上更有竞争优势,所以如果你的问题处理过程需要投入硬件,MxNet训练模型速度会更快。这将是值得与TensorFlowOnSpark比较的地方——在大集群上的运行情况和工作便利度。
本文转自d1net(转载)>