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
的运算。
原文链接:
http://www.jianshu.com/p/a5574ebcdeab