TensorFlow架构系统理解

来源:互联网 发布:张逗张花 知乎 编辑:程序博客网 时间:2024/06/06 02:26

TensorFlow简述:

  1. TensorFlow可以用于表达各种各样的算法,包括深层神经网络模型的训练和推理算法,并且已被用于进行研究和将机器学习系统部署到十多个领域计算机科学等领域,包括语音识别,计算机视觉,机器人,信息检索,自然语言处理。TensorFlow支持各种异构的平台,支持多CPU/GPU,服务器,移动设备,具有良好的跨平台的特性;TensorFlow架构灵活,能够支持各种网络模型,通用性强;TensorFlow架构具有良好的可扩展性,对OP的扩展支持,Kernel特化方面表现出众。
  2. tensorflowAPI即支持单机也支持分布式的训练,单机的数据和工业界数据的区别在于训练量级,工业界数据训练在 TB-PB 级数据量,单机无法处理GB量级以上的数据。如果要处理大量数据的话,需要掌握tensorflow的API对数据预处理,前提是对他的架构要一定的了解。
  3. TensorFlow内核采用C/C++开发,并提供了C++,Python,Java,Go语言的Client API。特别是Python API,是目前主流的TensorFlow模型开发接口。API为界,将整个系统分为前端和后端两个子系统,TensorFlow内核采用C/C++开发,当采用Python API去训练模型的时候,需要不断地用Python调用C/C++底层接口。在GPU上训练模型的时候需要大量的内存交换;如果采用C++ API去训练模型,可提供更好的运算性能及更好地控制GPU内存的分配。

  4. tensorflow基于数据流图,用于大规模分布式数值计算的开源框架。节点表示某种抽象的计算,边表示节点之间相互联系的张量。直观来看,就是张量的流动。张量其实就是多维数据,张量从代数的角度讲,是向量的推广,向量也可以理解为n阶张量。就是所谓的n维的“表格”。张量的严格定义是利用线性映射来描述的。与矢量相类似,定义由若干坐标系改变时满足一定坐标转化关系的有序数组成的集合为张量。从几何角度讲, 它是一个真正的几何量,也就是说,它是一个不随参照系的坐标变换而变化的东西。向量也具有这种特性。标量可以看作是0阶张量,矢量可以看作1阶张量。张量中有许多特殊的形式, 比如对称张量、反对称张量等等。矩阵和向量的关系 ,我觉得就是就是两种不同的空间表示形式。矩阵在运算后得到,就是向量空间一个n×1的矩阵对应一个n维的向量。

TensorFlow系统结构

有四个概念graph,session,runtime,device。

  1. 前端系统:提供编程模型,负责构造计算图,支持多语言,其中Python提供的 API最为成熟。
  2. 后端系统:负责计算图的执行,使用C++实现,直接操作分布式的CPU/GPU环境,提供运行时环境,负责执行计算图。

这里写图片描述

系统中的4个基本组件,它们是系统分布式运行机制的核心
1. Client:Client是前端系统的主要组成部分,它是一个支持多语言的编程环境。它提供基于计算图的编程模型,方便用户构造各种复杂的计算图,实现各种形式的模型设计。Client组件会创建Session,并通过序列化技术,发送图定义到Distributed Master组件。当Client触发Session运算的时候,Maser构建将要运行的子图。并根据设备情况,切割子图为多个分片。
2. Distributed Master:Distributed Master用于构建子图;切割子图为多个分片,不同的子图分片运行在不同的设备上;Master还负责分发子图分片到Executor/Work端。Executor/Work在设备(CPUs,GPUs,etc.)上,调度执行子图操作,并负责向其它Worker发送和接收图操作的运行结果。在分布式的运行时环境中,Distributed Master根据Session.run的Fetching参数,从计算图中反向遍历,找到所依赖的最小子图。切割子图,把模型参数分组在参数服务器上,图计算操作分组在运算Worker上。Distributed Master会根据模型参数的分区情况进行切割边,在Task间插入发送和接收Tensor信息的通信节点。Distributed Master通过RegisterGraph方法发送子图分片给Task。Master通过RunGraph触发子图运算,Worker会使用GPU/CPU运算设备执行TensorFlow Kernel运算。在本节点的CPU和GPU之间,使用cudaMemcpyAsync传输数据;在本节点GPU和GPU之间,使用peer-to-peer DMA传输数据,避免通过CPU复制数据。TensorFlow使用gRPC(TCP)和RDMA (Converged Ethernet)技术
3. Worker Service:Distributed Master和Worker Service只存在于分布式TensorFlow中。
4. Kernel Implement:Kernel为TensorFlow中算法操作的具体实现,如卷积操作,激活操作等。

Reference:

TensorFlow:Large-Scale Machine Learning on Heterogeneous Distributed Systems

原创粉丝点击