您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>数值算法/人工智能>

TensorFlow架构分析探讨

大小:0.4 MB 人气: 2017-09-30 需要积分:1

  TensorFlow是什么?

  TensorFlow基于数据流图,用于大规模分布式数值计算的开源框架。节点表示某种抽象的计算,边表示节点之间相互联系的张量。

  TensorFlow架构分析探讨

  计算图实例

  TensorFlow支持各种异构的平台,支持多CPU/GPU,服务器,移动设备,具有良好的跨平台的特性;TensorFlow架构灵活,能够支持各种网络模型,具有良好的通用性;此外,TensorFlow架构具有良好的可扩展性,对OP的扩展支持,Kernel特化方面表现出众。

  TensorFlow最初由Google大脑的研究员和工程师开发出来,用于机器学习神经网络方面的研究,于2015.10宣布开源,在众多深度学习框架中脱颖而出,在Github上获得了最多的Star量。

  本文将阐述TensorFlow的系统架构,帮助读者加深理解TensorFlow的工作机理。

  本文假设读者已经了解TensorFlow的基本编程模型,包括计算图, OP, Tensor, Session等基本概念。

  系统概述 TensorFlow的系统结构以C API为界,将整个系统分为「前端」和「后端」两个子系统:

  前端系统:提供编程模型,负责构造计算图;

  后端系统:提供运行时环境,负责执行计算图。

  

  TensorFlow系统架构

  如上图所示,重点关注系统中如下4个基本组件,它们是系统分布式运行机制的核心。

  Client

  Client是前端系统的主要组成部分,它是一个支持多语言的编程环境。它提供基于计算图的编程模型,方便用户构造各种复杂的计算图,实现各种形式的模型设计。

  Client通过Session为桥梁,连接TensorFlow后端的「运行时」,并启动计算图的执行过程。

  Distributed Master

  在分布式的运行时环境中,Distributed Master根据Session.run的Fetching参数,从计算图中反向遍历,找到所依赖的「最小子图」。

  然后,Distributed Master负责将该「子图」再次分裂为多个「子图片段」,以便在不同的进程和设备上运行这些「子图片段」。

  最后,Distributed Master将这些「子图片段」派发给Work Service;随后Work Service启动「子图片段」的执行过程。

  Worker Service

  对于每以个任务,TensorFlow都将启动一个Worker Service。Worker Service将按照计算图中节点之间的依赖关系,根据当前的可用的硬件环境(GPU/CPU),调用OP的Kernel实现完成OP的运算(一种典型的多态实现技术)。

  另外,Worker Service还要负责将OP运算的结果发送到其他的Work Service;或者接受来自其他Worker Service发送给它的OP运算的结果。

  Kernel Implements

  Kernel是OP在某种硬件设备的特定实现,它负责执行OP的运算。

  组件交互

  TensorFlow架构分析探讨

  组件交互

  如上图所示,假设存在两个任务:

  /job:ps/task:0: 负责模型参数的存储和更新

  /job:worker/task:0: 负责模型的训练或推理

  接下来,我们将进一步抽丝剥茧,逐渐挖掘出TensorFlow计算图的运行机制。

  客户端 Client基于TensorFlow的编程接口,构造计算图。目前,TensorFlow主流支持PythonC++的编程接口,并对其他编程语言接口的支持日益完善。

  此时,TensorFlow并未执行任何计算。直至建立Session会话,并以Session为桥梁,建立Client与后端运行时的通道,将Protobuf格式的GraphDef发送至Distributed Master。

  也就是说,当Client对OP结果进行求值时,将触发Distributed Master的计算图的执行过程。

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

TensorFlow架构分析探讨下载

相关电子资料下载

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!