关键元素定义

1) Graph 定义计算流,包括操作和值的具体类型
2) Operation 定义操作,包含一些属性,用于操作的变体。比如不同种类的数字相加
3) Kernel 定义操作的具体实现,区分平台,不同平台的kernel不同
4) Session 与tensorflow交互,扩展图和执行图的接口
5) Variables 包含状态的变量,持久化可变tensor 

TensorFlow实现

TensorFlow的实现包括前端和后端
前端主要是客户端定义图和执行图的计算,当前主要是python和C++的接口
后端实现包括后端进程,这些进程可以访问计算设备,比如CPU和GPU。
计算设备是TensorFlow计算的核心抽象,每个计算设备负责内存管理和组织具体内核的计算。
Tensor的实现是带有类型的多维数组,由对应的计算设备管理它的存储,通过引用计数的方式管理释放。
有两种模式,本地和分布式。

本地模式 单计算设备

最简单的场景。按照图的依赖计算各个节点,具体作法,将依赖计数为0的计算节点放进待计算的队列当中。每计算完一个节点,更新所有依赖它的节点的依赖计数。

本地模式 多计算设备

需要做两件事情

  1. 确定每个计算节点放到哪个设备上
  2. 设备间的通信

  3. 基于贪婪实验的方法,从源节点一直比较然后添加进device。
  4. 插入两个节点,发送和接受,完成跨设备间通信。并且,对于同一份数据会合并发送。

分布式模式

和多设备很相似,只是跨设备间通信采用TCP或者RDMA方式。
通过checkpoint进行容错,当错误发生,会从头开始训练。

扩展

自动梯度计算
反向传播,构造对应的图。

优化

  1. 自己定义好放置设备,控制数据交换和内存使用
  2. 异步内核,减少线程数
  3. 内核计算优化,采用对应的库完成
  4. 图优化:相同子计算合并
  5. 精度压缩

版权声明:本文为axder原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/axder/p/11417800.html