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)。
Related Work
从集群训练的角度介绍了三种不同的流派:
- 单机框架,如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,主要有
Variable
与Queue
。它们的node输出是可变的,与当前程序状态有关。
- 普通的Operation,如
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
- Tensorflow White Paper(二)
- Tensorflow White Paper(一)
- MySQL Injection White Paper
- NTP white paper
- VLAN Security White Paper
- auto qos white paper
- WSUS pentest white paper
- USB RNDIS/CDC White Paper
- 关于SafeMove White Paper功能
- White Paper: Interrupts and USB
- H.264/MPEG-4 Part 10 White Paper 译(二) Intra prediction
- H.264/MPEG-4 Part 10 White Paper 译 (一 H.264概览、二 Intra Prediction)
- H.264/MPEG-4 Part 10 White Paper 译(二) Intra Prediction
- White(二)
- H.264/MPEG-4 Part 10 White Paper 翻译(1)--概述
- Debugger Services Framework (DSF) White Paper
- CSS friendly adapters: The White Paper
- white paper ____ sun cloud(1)
- 使用OpenCV FeatureDetector报错的问题
- 导入google的patch的一般方法
- Nodejs基础:stream模块入门介绍与使用
- Ubuntu安装MariaDB
- struts2-045漏洞poc调试
- Tensorflow White Paper(二)
- HTML5的页面资源预加载技术(Link prefetch)加速页面加载
- tomcat使用spring-loaded实现应用热部署
- 一个程序员的自白:我为什么写博客
- 2-Python字符串和列表
- 关于SE54视图簇的创建和维护
- 欢迎使用CSDN-markdown编辑器
- 25款实用的桌面版博客编辑器
- C#知识点总结、异常处理总结、类型转换的异常处理