Tensorflow White Paper(二)

来源:互联网 发布:淘宝刷销量多少钱 编辑:程序博客网 时间:2024/05/18 01:54

之前15发布的白皮书初步介绍了tensorflow的整体特性,而16发布的第二篇白皮书则侧重于介绍tensorflow的设计理念。


1. Introduction

略过

2. Background & motivation

Previous system: DistBelief ,前任的不足

之前就讲过, tensorflow的前任是distblief:Googlers吸取了distblief的开发和应用经验之后重新设计、开发和实现了tensorflow。Distbelief在完成如下几个任务时很麻烦(不了解distblief的没关系,可以用caffe对号入座):
* 定义新的layer, 例如新的loss layer
* 微调训练优化算法,例如将SGD变成xxxxGD
* 定义新的优化算法,例如GAN使用的算法
还有就是, Distbelief的设计目标是大规模集群训练。而在算法开发一般都是从小规模试验性训练开始。使用distblief时,从试验到训练到部署都需要高昂的切换代价(工作量)。

Design Principles, TF的设计原则

  • 细粒度的运算接口。计算图的节都是基本运算, 例如add/sub/mult等。用这些细粒度的运算可以组成更复杂的运算,如ConvRelu, Softmax等。这样可以更方便地定义新layer,而且不用自己求导数。
  • 图的定义与执行分离。实现一个tensorflow程序通常分为两步: 定义graph与run graph。将这两步分离的好处是,在run之前, tf编译器可以看到整个graph,进行全局性的优化。
  • 使用相同的接口操作不同的硬件。无论底层的运算硬件是CPU,GPU,TPU还是集群,使用的都是同一套graph接口(即Operation)。

从集群训练的角度介绍了三种不同的流派:

  • 单机框架,如theano,caffe
  • Batch flow systems, 如SparkNet
  • Parameter Servers, 如MXNet与Tensorflow

3. Tensorflow Execution Model

Dataflow graph elements

之前也介绍过, 这里的作为补充。

  • Node: 由Input, Operation, Output组成
  • Tensor
  • Operation: node上的操作 。根据是否变化(状态属性)分为:
    • 普通的Operation,如Const, Add等,一旦定义好,它的node输出只与输入有关
    • 可变的/有状态的Operation,主要有VariableQueue。它们的node输出是可变的,与当前程序状态有关。

Partial and Concurrent Execution

Partial Execution之前也讲过。
Concurrent Execution,不同子图并发执行,提高了并发程度。

Distributed execution

主要是device分配与通信,之前也讲过。

Dynamic control flow

Tensorflow支持类似于while, if, switch等动态语句, 之前也讲过。

4. Extensibility case studies, 可拓展性

  • 可自动求导,可便捷的定义新的优化算法
  • 可训练(超)大模型。一些大模型, 或者一些高维运算,可能大到一个device甚至一台机器都装不下, tensorflow提供了一些解决方案。
  • 通过checkpoint容错,支持恢复训练
  • 集群训练时提供了三种同步方式:

    • 完全异步:各自计算梯度,各自更新各自的参数
    • 完全同步:将所有梯度收集起来平均,统一更新
    • 忽略部分梯度:如果有些worker工作得很慢,Parameter Server不会等待下去,而是已经收集到的梯度计算平均值。以此来解决long tail问题,这应该也是Tensorflow比SparkNet快的主要原因。

    这里写图片描述

5. Implementation

这里写图片描述
* Distributed Master:用户通过session与这个master交互。它负责将运算任务分成一个个的子任务交给Executor执行,还负责收集梯度更新参数
* Dataflow executor: 执行具体运算的device或机器。
其余的就略过吧,大部分之前都或多或少的讲过。

6. Evaluation

对tensorflow的性能进行衡量。
就提提单机单卡吧,caffe最慢。。。
这里写图片描述

Reference

  • TensorFlow: A system for large-scale machine learning, 2016