《TensorFlow自然语言处理》—2.1.3 TensorFlow架构:当你执行客户端时发生了什么

举报
华章计算机 发表于 2019/07/21 18:39:32 2019/07/21
【摘要】 本节书摘来自华章计算机《TensorFlow自然语言处理》一书中的第2章,第2.1.3节,[澳] 图珊·加内格达拉(Thushan Ganegedara) 著 马恩驰 陆 健 译。

2.1.3 TensorFlow架构:当你执行客户端时发生了什么

我们知道TensorFlow非常善于创建一个包含所有依赖关系和操作的计算图,它可以确切地知道数据是如何及什么时候在哪里流转。但是,应该有一个元素可以有效执行定义好的计算图,使TensorFlow变得更好,这个元素就是会话。现在让我们来看看会话的内部,了解图的执行方式。

首先,TensorFlow客户端包含图和会话。创建会话时,它会将计算图作为tf.GraphDef协议缓冲区发送到分布式主服务器,tf.GraphDef是图的标准化表示。分布式主服务器查看图中的所有计算,并将计算切割后分配给不同的设备(例如,不同的GPU和CPU)。我们的sigmoid示例中的图如图2.1所示,图的单个元素称为节点。

image.png

接下来,计算图将由分布式主服务器分解为子图,并进一步分解为更小的任务。虽然在我们的例子中分解计算图似乎很微不足道,但在实际应用中,有多层隐藏层的神经网络解决方案的计算图可能是指数级增长的。此外,将计算图分解为多个部分来并行执行(例如,多个设备)变得越来越重要。执行图(或由这个图划分的子图)称为单个任务,任务会分配给单个TensorFlow服务器。

但是,实际上,每个任务都会分解为两个部分来执行,其中每个部分由一个worker执行:

一个worker使用参数的当前值执行TensorFlow操作(称为操作执行器)

另一个worker存储参数并在执行操作后更新它们的值(称为参数服务器)

TensorFlow客户端的常规工作流程如图2.2所示。

 image.png

图2.2 TensorFlow客户端的执行过程

图2.3展示了图的分解过程。除了将图分解以外,TensorFlow还插入发送和接收节点,以帮助参数服务器和操作执行器相互通信。你可以把发送节点理解为一旦数据可用时发送数据,而接受节点在相应的发送节点发送数据时侦听和捕获数据。

最后,一旦计算完成,会话就会将更新的数据从参数服务器带回客户端。TensorFlow的体系结构如图2.4所示,这一解释基于https://www.tensorf?low.org/extend/architecture上的官方TensorFlow文档。

 image.png

图2.3 TensorFlow图分解过程

 image.png

图2.4 TensorFlow的体系结构


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。