关于本章
本章探讨tensorflow的实现,主要参考的有:
TensorFlow is a parallel numeric processing system
本节标题的含义是: TensorFlow是一个parallel numeric processing system,关于parallel numeric processing system,参见工程parallel computing的Application\Parallel-numeric-processing-system
章节。
关于这一点,在haosdent TensorFlow for Googlers中有这样的介绍:
TensorFlow™ is an open source software library for numerical computation using data flow graphs.
TensorFlow VS compiler
从某种程度上来说,TensorFlow和compiler是有些类似之处的,可以进行比较:
Front end/Interface
让programmer使用**symbol expression**来描述computation(symbolic programming),TensorFlow的front end使用computation graph的来进行**结构化表示**。如果使用compiler来进行类比的话,computation graph其实和AST非常类似,如果从结构化表示的角度来看: 两者本质上是相同的,都是对symbol expression的**结构化表示**。但是,由于两者是不同领域的,所以需要考虑各自领域中的特定 问题,在下面的章节中会讨论TensorFlow computation graph需要考虑的问题。
Back end/Computation engine/Core
Back end实现computation graph表示的computation。与compiler中,将AST转换为三地址码、然后转换为instruction进而实现语义理解不同的是,TensorFlow back end并不会将computation graph转换为instruction的方式,TensorFlow back end会将computation graph完整地保存,然后基于computation graph来安排计算,TensorFlow back end:
1) dataflow programming paradigm
2) node对应operator
3) distributed: TensorFlow允许用户将node指定到不同的computer,这些computer之间通过network来进行communicate,显然整体来看,它们还是对应的用户定义的computation graph
4) abstraction: heterogeneous机器的抽象
5) 借鉴了microsoft Naiad
NOTE: 关于上述讨论,在infogalactic Dataflow programming#Properties of dataflow programming languages中也进行了讨论。