TensorFlow架构学习

Posted czifan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TensorFlow架构学习相关的知识,希望对你有一定的参考价值。

0 - TensorFlow

  基于数据流图,节点表示某种抽象计算,边表示节点之间联系的张量。

  Tensorflow结构灵活,能够支持各种网络模型,有良好的通用性和扩展性。

            技术分享图片

1 - 系统概述

  TensorFlow以$C API$为界限,分为前端系统(提供编程模型,负责构造计算图)以及后端系统(提供运行时环境,负责执行计算图),如下图。

    技术分享图片

1.1 - 模块Client

  Client是一个支持多语言的编程环境,它提供基于计算图的编程模型,方便用户构造各种复杂的计算图,实现各种形式的模型设计和构建。Client通过Session连接后端系统,启动计算图的执行过程。

1.2 - 模块Distributed Master

  在分布式运行环境中,Distributed Master从计算图中反向遍历,找到所依赖的最小值图,然后将最小子图分裂成多个子图片段分布到不同的进程和设备上运行,然后将多个子图片段被分派给Work Service,随后Work Service启动子图片段执行过程。

1.3 - 模块Worker Service

  对于每一个任务,启动一个Worker Service,按照计算图中的节点依赖关系,根据当前的硬件环境(GPU or CPU),调用$OP$的$Kernel$实现完成$OP$的运算(一种典型的多态实现技术)。并且因为分布式的环境,Worker Service需要负责将$OP$运算的结果发送到其他的Work Service或者从其他的Work Service接受其$OP$运算的结果。

1.4 - Kernel Implements

  $Kernel$是$OP$在某种硬件设备的特定实现,其负责执行$OP$计算。TensorFlow运行时包含200多个标准的$OP$(包括数值计算、多维数组操作、控制流、状态管理等)。每一个$OP$都根据设备类型实现了一个优化的$Kernel$,运行时根据本地设备类型,为$OP$选择特定的$Kernel$实现。其中,大多数$Kernel$基于$Eigen::Tensor$实现(一个使用$C++$模板技术,为多核$CPU/GPU$生成高效的并发代码),但同时,TensorFlow也可以直接使用$cuDNN$实现更加高效的$Kernel$。

技术分享图片

 参考资料

https://www.jianshu.com/p/a5574ebcdeab

以上是关于TensorFlow架构学习的主要内容,如果未能解决你的问题,请参考以下文章

《深入理解TensorFlow架构设计与实现原理》_彭靖田学习材料整理

一图看懂TensorFlow 2.0新架构

快速开启你的第一个项目:TensorFlow项目架构模板

Tensorflow源码解析1 -- 内核架构和源码结构

感悟:微博深度学习平台架构和实践

老师木:有了Tensorflow,为什么我们还需要另外一个深度学习平台框架 | GIAC 访谈