核心概念
TensorFlow 中的计算可以表示为一个有向图(directedgraph),或称计算图(computation graph),其中每一个运算操作(operation)将作为一个节点(node),节点与节点之间的连接称为边(edge)。这个计算图描述了数据的计算流程,它也负责维护和更新状态,用户可以对计算图的分支进行条件空值或循环操作。
实现原理
TensonFlow 有一个重要的组件client,客户端,它通过Session的接口与master及多个worker相连。
worker : 每个worker可以与多个硬件设备(device)相连。比如:CPU或GPU,并负责管理这些硬件
master :负责指导所有的worker按流程执行计算图。
反向传播算法
当TensorFlow计算一个tensor C关于tensor I的梯度时,会先寻找从I到C的正向路径,然后从C回溯到I,对这条回溯路径上的每一个节点增加一个对应求解梯度节点,并根据链式法则(chain rule)计算总梯度。
TensorFlow 并行计算模式
数据并行:通过将一个mini-batch的数据放在不同设备上计算,实现梯度计算的并行化。
模型并行:将计算图的不同部分放在不同的设备上运算,可以实现简单的模型并行,其目标在于减少每一轮训迭代的时间,不同于数据并行同时进行多份数据的训练。
流水线并行:和异步的数据并行很像,只不过是在同一个硬件设备上实现并行。