对tensorflow的dataflow进行了了解,节点:代表各类操作(operation),具体包括数学运算、数据填充、结果输出和变量读写等。有向边:描述节点间的输入、输出关系,而张量(Tensor)则在边上流动。Tensoflow中的数据流图是有向图,不能连成为环。
Tensorflow实现的dataflow的过程是:
Client设定计算图,通过session发送给master。Master对图进行执行的过程。这个设计用dataflow替代了具体执行指令,当有新的想法时,可以高效的完成。不必修改大量的底层代码。
其中涉及到的有节点置放方法,对这块理解是根据数据流图使用贪心算法选择节点需要执行的设备。这个过程涉及代价估计。这个过程是全自动完成的。不用指定设备地址,对用户很友好。
当节点置放好后,会将图分为几个小的子图的集合。设置了send和receive两种机制。这两种机制能够实现子图之间通信。
对于分布式机制:需要一个控制流进行调度,该过程发生在在图的划分中,自动地增加控制节点到每个子图上。这些节点实现了一个小的状态机,来管理每次迭代的开始和终止,确定整个循环的终止。
Tensorflow这个流程,设计了一个checkpoint操作,有点类似中断的过程。可以恢复计算图出现的错误。
思考:Tensorflow中dataflow方法用的很巧,在分布式中,如何能将数据流图进一步优化,会成为一种分布式提速的一种方式。