第18章 TensorFlowOnSpark
在第14章我们讲了TensorFlow的分布式运行,在第17章又介绍了使用Kubernetes集群对TensorFlow节点进行调度、监控和失败重启等功能。我们知道,Hadoop生态的大数据系统一般可以分为Yarn、HDFS和MapReduce计算框架,TensorFlow本身的分布式就相当于MapReduce计算框架部分,而Kubernetes就相当于Yarn调度系统。本章要讲的TensorFlowOnSpark是利用远程直接内存访问(Remote Direct Memory Access,RDMA)解决了存储功能和调度,实现了深度学习和大数据的融合。
TensorFlowOnSpark(TFoS)是雅虎推出的开源项目[1],支持使用Apache Spark集群进行分布式TensorFlow训练和预测。其实,TensorFlow的程序并不能直接作为Spark的程序运行,TensorFlowOnSpark提供了一个程序来进行桥接,本质上是每个Spark Executor启动一个对应的TensorFlow进程,然后通过远程进程通信(RPC)进行交互。
18.1 TensorFlowOnSpark的架构[2]
要把一个训练程序改到使用Spark