论文:TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems
抽象
Computation Graph
整张图如同管道结构,数据流就是其中的水流。Control Dependency 描述了管道的有向结构,而反向传播可以通过增加新的管道节点来实现。
Operation
即计算操作的抽象,相当于映射、函数。
Kernel
执行计算的单元,CPU或GPU
Session
Client-Server结构,进行计算或者调整图结构则视为一次会话
Variables
特殊的Operation,返回一个句柄,指向持久化的张量,这些张量在整张图的计算中不会被释放。
Device
对Kernel的封装,包含类型属性,实行注册机制维护可供使用的Device列表。
多机实现
要考虑两个问题:
- 计算节点在Device间的分配问题
- Devices之间的通信
针对这两个问题,分别建立了两个抽象层。
计算节点分配的C/S机制
client提出计算请求,master负责切割计算图为子图,分配子图到Devices。分配时,会模拟执行子图,并采取贪心的策略分配。
不同Device之间的发送和接收节点
在每个Device上建立Receive和Send节点,负责与其他Device通信。
优化
数据化并行
上:单线程,同步数据并行
下:多线程,异步更新
拾遗
文章中很多内容并没涉及到(看不懂)。
小结
TensorFlow是个庞大的计算框架,不仅仅定位于深度网络。其对计算图的抽象和数据、计算资源的分配的处理是值得关注的。