Tensor Flow 深度框架的学习(第三天)

第三天的学习内容(6-9):

       1.Tensor Flow 通过组件client(客户端)->与master和多个worker相连,而每个worker可以和多个硬件设备相连(如CPU和GPU)并负责管理硬件,同时master负责指导所有的worker按流程执行计算图。

       2、TensorFlow有单机模式和分布式模式,单机是指client、master、worker都在一台机器上的同一个进程当中,而分布式的版本允许client、master、worker在不同机器的不同进程中,由集群调度系统统一管理各项任务。

      3.TensorFlow中的一个worker可以管理多个设备,每一个设备的name包括硬件类别、编号、任务号(单机版本没有)

例如:单机:/job:localhost/device:cpu:0

          分布式模式:/job:worker/task:17/device:gpu:3

      4.Tensor Flow为CPU和GPU提供了管理设备的对象接口,每一个对象负责分配、释放设备的内存,以及执行节点的运算核(

       5.Tensor Flow中的tensor是多位数组,支持8-64位的int,IEEE标准的float、double和复数型,以及任意的字符串

       6.每一个设备有单独的allocator负责存储各种类型的tensor,同时记录tensor的引用次数,引用数为0时,内存将被释放。

       7.只有一个硬件设备时,计算图按照依赖关系被顺序执行,当一个节点的上游依赖都被执行完后,节点被加入ready queue以等待执行,同时,节点下游的所有节点的依赖数见一。

       当有多个硬件设备是,采用简单的贪婪策略,不确定找到全局最优解,但是可以用较快的速度找到一个不错的节点运算分配方案(具体的算法还在不断的研究更新中)。

      8.TensorFlow允许用户对节点的分配设置限制条件,Tensor Flow会先计算每个节点可以使用的设备,再使用并查集(union-find)算法找到必须使用同一个设备的节点。

      9.当节点的分配设备的方案被确定,整个计算图就会被划分为多个子图,使用同一个设备并且相邻的节点划分为同一个子图。则之后两个点之间的边,可以被发送端的发送节点、接收端的接收节点以及从发送节点到接收节点的边取代。

      10、由上->数据通信问题转化为发送节点和接收节点之间的实现问题。两个子图之间若有多个接收节点接收同一个tensor则所有的接收节点自动合并为同一个->同一套代码,自动扩展到不同硬件环境并处理复杂的通信流程。同时,从单机单设备改造为单机多设备的版本会变得非常容易。

猜你喜欢

转载自blog.csdn.net/weixin_42554580/article/details/80892497