TensorFlow框架结构是指TensorFlow的系统设计和实现 ,它包括以下几个方面:
TensorFlow的后端系统遵循良好的分层架构,可以进一步分解为四层:
TensorFlow的模型构造和执行流程一般包括以下几个步骤:
- 图构建(Graph Construction):用户在客户端(Client)中基于TensorFlow的多语言编程接口,添加算子(OP),完成计算图的构造。
- 图传递(Graph Transfer):客户端开启会话(Session),通过它建立和主控节点(Master)之间的连接。执行Session.run()时,将构造好的Graph序列化为GraphDef后,以Protobuf的格式传递给Master。
- 图剪枝(Graph Pruning):Master根据Session.run()传递的Fetches和Feeds列表,反向遍历全图(Full Graph),实施剪枝,得到最小依赖子图(Minimal Dependent Subgraph)。
- 图分裂(Graph Partitioning):Master将最小子图分裂为多个图分片(Graph Partition),并注册到多个工作节点(Worker)上。一个Worker对应一个图分片。
- 图二次分裂(Graph Repartitioning):Worker根据当前可用硬件资源,如CPU、GPU等,将图分片按照OP算子设备约束规范(例如tf.device(‘/cpu:0’)),二次分裂到不同设备上。每个计算设备对应一个图分片。
- 图运行(Graph Execution):对于每一个计算设备,Worker依照OP在Kernel中的实现,完成OP的运算。设备间数据通信可以使用Send/Recv节点,而Worker间通信,则使用gRPC或RDMA协议。
-