1. 什么是TensorFlow
- TensorFlow框架是Google公司于2015年11月开源的深度学习框架。Tensor 也就是张量的意思,Flow 也就是流的意思,它是基于数据流图计算。因此TensorFlow 意味着张量从流图的一段流动到另一段的计算过程。也就是TensorFlow 是个数据流图。数据流图是是一个有向图,使用节点(一般用圆形或者方形描述,表示一个数学操作或者数据输入的起点和数据输出的终点)和线(表示数字、矩阵或者 Tensor 张量)来描述数学计算。数据流图可以方便的将各个节点分配到不同的计算设备上完成异步并行计算。
2. 系统结构
- TensorFlow 的系统结构以C API为界,将整个系统分为前端和后端两个子系统。
- 前端系统:提供编程模型,负责构造计算图和管理Session周期;
-
后端系统:提供运行时环境,负责执行计算图。
2019070401.png
- 如上图所示,一层C的api接口将底层的核运行时部分与顶层的多语言接口分离开。
3. 工作流程
-
根据整个的工作流程,又可以分为:
2019070402.png
-
根据工作流程,我们来了解一下,TensorFlow如何工作的。
3.1 Client
- Client是我们编程的接口,主要是设计我们的模型的转化为数据流 graph。一般我们编辑好的代码,需要调用 session,来建立client与后端系统的运行通道。这时,会触发Distribution Master,也就是clirent传递到distribution master。
3.2 Distribution Master
- Distribution Master 顾名思义是分布式操作。clirent传递到distribution master后,distribution master是如何工作的呢?他主要是根据session.run()方法的fetch参数,从计算图中反向遍历,找到所依赖的最小的subgraph,将subgraph切分成更小的片段,再利用分布式的技术,将这些更小的片段分配到不同的process(进程)和devices(设备)上也就是分布到worker services上。最后distribution master 将这些小片段缓存起来,以避免重复操作。
- distribution master 在执行 subgraph时,先进行一些列的优化操作(公共表达式消除,常量折叠),让子计算图更符合我们的设计要求。
3.3 Worker Service
- Worker Service 是一个工作节点的服务。也就是一个执行 subgraph内容的 RPC服务(一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议)。
- 它主要负责如下3个方面的职责:
- 处理来自Master的请求;
- 调度OP的Kernel实现,执行本地子图;
- 协同任务之间的数据通信
3.4 Kernel Implementations
- Kernel Implementations 顾名思义就是内核实现。其中包含200多个标准的OP,包括数值计算,多维数组操作,控制流,状态管理等。每一个OP根据设备类型都会存在一个优化了的Kernel实现。在运行时,运行时根据本地设备的类型,为OP选择特定的Kernel实现,完成该OP的计算.
网友评论