《TensorFlow自然语言处理》—2.1.3 TensorFlow架构:当你执行客户端时发生了什么
2.1.3 TensorFlow架构:当你执行客户端时发生了什么
我们知道TensorFlow非常善于创建一个包含所有依赖关系和操作的计算图,它可以确切地知道数据是如何及什么时候在哪里流转。但是,应该有一个元素可以有效执行定义好的计算图,使TensorFlow变得更好,这个元素就是会话。现在让我们来看看会话的内部,了解图的执行方式。
首先,TensorFlow客户端包含图和会话。创建会话时,它会将计算图作为tf.GraphDef协议缓冲区发送到分布式主服务器,tf.GraphDef是图的标准化表示。分布式主服务器查看图中的所有计算,并将计算切割后分配给不同的设备(例如,不同的GPU和CPU)。我们的sigmoid示例中的图如图2.1所示,图的单个元素称为节点。
接下来,计算图将由分布式主服务器分解为子图,并进一步分解为更小的任务。虽然在我们的例子中分解计算图似乎很微不足道,但在实际应用中,有多层隐藏层的神经网络解决方案的计算图可能是指数级增长的。此外,将计算图分解为多个部分来并行执行(例如,多个设备)变得越来越重要。执行图(或由这个图划分的子图)称为单个任务,任务会分配给单个TensorFlow服务器。
但是,实际上,每个任务都会分解为两个部分来执行,其中每个部分由一个worker执行:
一个worker使用参数的当前值执行TensorFlow操作(称为操作执行器)
另一个worker存储参数并在执行操作后更新它们的值(称为参数服务器)
TensorFlow客户端的常规工作流程如图2.2所示。
图2.2 TensorFlow客户端的执行过程
图2.3展示了图的分解过程。除了将图分解以外,TensorFlow还插入发送和接收节点,以帮助参数服务器和操作执行器相互通信。你可以把发送节点理解为一旦数据可用时发送数据,而接受节点在相应的发送节点发送数据时侦听和捕获数据。
最后,一旦计算完成,会话就会将更新的数据从参数服务器带回客户端。TensorFlow的体系结构如图2.4所示,这一解释基于https://www.tensorf?low.org/extend/architecture上的官方TensorFlow文档。
图2.3 TensorFlow图分解过程
图2.4 TensorFlow的体系结构
- 点赞
- 收藏
- 关注作者
评论(0)