@songying
2018-12-04T19:34:12.000000Z
字数 1405
阅读 1861
TensorFlow
视图层 | 功能 | 组件 |
---|---|---|
视图层 | 可视化 | TensorBoard |
工作流层 | 数据集准备,存储,加载 | keras |
计算图层 | 图构造,操作,优化,执行,前向计算, 后向传播 | TensorFlow Core |
数值计算层 | kernel 实现,矩阵乘法,卷积计算 | Eigen,cuBLAS,cuDNN |
网络层 | 通信 | gRPC, RDMA |
设备层 | 硬件 | CPU, GPU, ASIC |
Tensorflow 以C API为界,将整个系统分为前端和后端两个子系统:
其中,后端系统可以进一步分解为四层,从底到顶分别为:
其中,在运行时层中,包含了对计算图的创建,编排,优化,和执行等部分。
Client 是前端系统的主要组成部分,它是一个支持多语言的编程环境。Client 基于 TensorFlow 的编程接口,构造计算图。此时,TensorFlow 并未执行任何的图计算,直至与后台计算引擎建立 Session,并以Session 为桥梁,建立 Client 与 Master 之间的通道,并将 Protobuf 格式的 GraphDef 序列 化后传递给 Master,启动计算图的执行过程。
其中,Work 之间可能存在数据依赖关系,Master 并不参与两者之间的数据交换,它们两两之间互相通信,独立地完成交换数据,直至完成所有计算
对于每一个任务,TensorFlow 都将启动一个 Worker 实例。Worker做三件事:
- 处理来自 Master 的请求;
- 对注册的 Graph Partition 按照本地计算设备集实施二次分裂 ( SplitByDevice ) , 并通知各个计算设备并发执行各个 Graph Partition;
- 按照拓扑排序算法在某个计算设备上执行本地子图,并调度 OP 的 Kernel 实现;
- 协同任务之间的数据通信.