写在前面
最近在学习Tensorflow分布式运行机制的实现,因此,对Tensorflow的系统架构和源码有初步的了解。想把这个学习过程给记录一下,这篇博客就是整个学习过程记录的开端。后续会继续写新的博客,也请大家多多指教。
关于TF
TensorFlow™是一个基于数据流编程(dataflow programming)的符号数学系统,提供了丰富的深度学习相关的API,支持Python和C++接口,被广泛应用于各类机器学习(machine learning)算法的编程实现,其前身是谷歌的神经网络算法库DistBelief。
TensorFlow托管在GitHub平台,由谷歌人工智能团队谷歌大脑(Google Brain)开发,与contributors共同维护。自2015年11月9日起,TensorFlow依据阿帕奇授权协议(Apache 2.0 open source license)开放源代码。
Tensorflow提供了可视化分析工具Tensorboard,方便分析和调整模型,支持Linux平台、Windows平台、Mac平台,甚至是手机移动设备。其依赖视图如下所示。
系统架构
如下图所示,TensorFlow 的系统架构以C API 为界,将整个系统分为前端和后端两个子系统。
- 前端系统:提供编程模型,负责构造计算图;
- 后端系统:提供运行时环境,负责执行计算图。
TensorFlow 的系统设计遵循良好的分层架构,后端系统的设计和实现可以进一步分解为4 层。
- 运行层:分别提供本地模式和分布式模式,并共享大部分设计和实现;
- 计算层:由各个OP 的Kernel 实现组成;在运行时,Kernel