5.3.3 TensorFlow架构
TensorFlow内核采用C/C++开发,并提供了C++、Python、Java、Go语言的Client API。其架构灵活,能够支持各种网络模型,具有良好的通用性和可扩展性。TensorFlow.js支持在Web端使用webGL运行GPU训练深度学习模型,支持在iOS、Android系统中加载运行机器学习模型。它试图能够支持任何机器学习、建模算法。TensorFlow最大的亮点之一是它的抽象编程模型。它使用的数据流图计算框架是其他机器学习框架中很少见的。因而,执行模型、优化方式等都和其他框架有所不同。
TensorFlow是一种利用数据流图进行数值计算的过程,整个框架分为两部分:
①构建阶段:创建图,用来训练神经网络。
②执行阶段:利用Session来执行图中的节点的计算,需要重复执行一系列训练操作。
1)TensorFlow系统架构
TensorFlow的系统结构以C API为界,如图5⁃15所示。TensorFlow将整个系统分为前端和后端两个子系统:
①前端系统:提供编程模型,负责构造数据流计算图。
②后端系统:提供运行时环境,负责执行数据流计算图。

图5⁃20 TensorFlow系统结构
从图5⁃20可以看出:
①TensorFlow支持多语言的客户端,方便用户构造各种复杂的计算图,实现所需的模型设计。客户端以会话为桥梁连接后端系统,并启动计算图的执行过程。
②TensorFlow支持分布式计算,可以将计算图拆分为多个子图,以便在不同的进程和设备上并行执行。
③后端负责在硬件环境(如CPU或GPU)上调用OP的Kernel实现图的计算,并通过网络从其他后端接收计算结果或将计算结果发送给其他后端系统。
④数据操作层是OP在硬件设备上的特定实现,负责执行OP运算,如数值计算、多维数组操作、控制流、状态管理等,每一个OP根据设备类型都会存在一个优化了的Kernel实现。运行时将根据本地设备的类型,为OP选择特定的Kernel实现,完成该OP的计算。
TensorFlow数据流图的执行如图5⁃21所示,当编写TensorFlow程序在一个Session中运行一个数据流图时,Tensorflow执行模型是:从客户端client发一个run的请求给master端,master端发送给相应的worker,worker启动对应的CPU和GPU进行计算。这里,client、master、worker都是软件层面的组件;CPU、GPU是硬件层面的组件。(https://www.daowen.com)

图5⁃21 TensorFlow数据流图执行模型
2)TensorFlow技术栈
按照TensorFlow的软件层次,TensorFlow的技术栈如图5⁃22所示。

图5⁃22 TensorFlow技术栈
整个系统从底层到上层可分为七层:
①最底层是硬件计算资源,支持CPU、GPU。
②网络层,支持两种通信协议。
③数值计算层提供最基础的计算,有矩阵计算、卷积计算。
④数据的计算都是以数组的形式参与计算。
⑤计算图层用来设计神经网络的结构。
⑥工作流层提供轻量级的框架调用。
⑦最后构造的深度学习网络可以通过TensorBoard服务端可视化。