天天看点

Tensorflow系统架构1 TF依赖视图2 TF系统架构3 TF代码目录组织

1 TF依赖视图

    TF的依赖视图如图1所示,描述了TF的上下游关系链。

Tensorflow系统架构1 TF依赖视图2 TF系统架构3 TF代码目录组织

TF托管在github平台,有google groups和contributors共同维护。

TF提供了丰富的深度学习相关的API,支持Python和C/C++接口。

TF提供了可视化分析工具Tensorboard,方便分析和调整模型。

TF支持Linux平台,Windows平台,Mac平台,甚至手机移动设备等各种平台。

2 TF系统架构

    图2是TF的系统架构,从底向上分为设备管理和通信层、数据操作层、图计算层、API接口层、应用层。其中设备管理和通信层、数据操作层、图计算层是TF的核心层。

Tensorflow系统架构1 TF依赖视图2 TF系统架构3 TF代码目录组织

底层设备通信层负责网络通信和设备管理。设备管理可以实现TF设备异构的特性,支持CPU、GPU、Mobile等不同设备。网络通信依赖gRPC通信协议实现不同设备间的数据传输和更新。

第二层是Tensor的OpKernels实现。这些OpKernels以Tensor为处理对象,依赖网络通信和设备内存分配,实现了各种Tensor操作或计算。Opkernels不仅包含MatMul等计算操作,还包含Queue等非计算操作。Kernel层可以跑在cpu上也可以跑在gpu上。

第三层是图计算层(Graph),包含本地计算流图和分布式计算流图的实现。Graph模块包含Graph的创建、编译、优化和执行等部分,Graph中每个节点都是OpKernels类型表示。

第四层是API接口层。Tensor C API是对TF功能模块的接口封装,便于其他语言平台调用。

第四层以上是应用层。不同编程语言在应用层通过API接口层调用TF核心功能实现相关实验和应用。

3 TF代码目录组织

    图3是TF的代码结构视图,下面将简单介绍TF的目录组织结构。

Tensorflow系统架构1 TF依赖视图2 TF系统架构3 TF代码目录组织

Tensorflow/core目录包含了TF核心模块代码,后台c++实现部分。

- client: API接口实现文件目录。

- common_runtime: 公共运行库,包含session, executor, threadpool, rendezvous, memory管理, 设备分配算法等。

- distributed_runtime: 分布式执行模块,如rpc session, rpc master, rpc worker, graph manager。

- framework: 包含基础功能模块,如log, memory, tensor

- graph: 计算流图相关操作,如construct, partition, optimize, execute等

- kernels: 核心Op,如matmul, conv2d, argmax, batch_norm等

- lib: 公共基础库,如gif、gtl(google模板库)、hash、histogram等

- ops: 基本ops运算,ops梯度运算,io相关的ops,控制流和数据流操作

- platform: OS系统相关接口文件,如file system, env等

- protobuf: 均为.proto文件,用于数据传输时的结构序列化

- public: API接口头文件目录,用于外部接口调用的API定义,主要是session.h 和tensor_c_api.h。

Tensorflow/stream_executor目录是并行计算框架,由google stream executor团队开发。

Tensorflow/contrib目录存放有其他项目贡献者添加的相关贡献代码。

Tensroflow/python目录是python API客户端脚本。

  • 前台Python接口。 该目录下存放了tensorflow使用python编写的相关代码,是和 Tensorflow/core对应的python实现目录。
  • 使用python封装了Tensorflow/core 中实现的相关的机器学习算法的调用。
  • python方便的编程特性和C++高效的执行效率。

Tensorflow/tensorboard目录是可视化分析工具,不仅可以模型可视化,还可以监控模型参数变化。

third_party目录是TF第三方依赖库。

eigen3: eigen矩阵运算库,TF基础ops调用

gpus: 封装了cuda/cudnn编程库

继续阅读