TensorFlow 1.0 变化
============
(cc) 开源研习社 CC共享协议下 版权所有

官网: http://tensorflow.org/
Github: https://github.com/tensorflow/tensorflow/

[TOC]
### 1. 更快的速度,引入了XLA,最高提升58倍训练速度
---------------------------------
XLA —— 全称 Accelerated Linear Algebra,意为加速线性代数,是一个针对 TensorFlow 中线性代数运算的试验性质编译器。它通过生成既能运行于 GPU、又能在 CPU 运行的机器代码,来加速数学计算。目前, XLA 只支持英伟达 GPU,但这与当下机器学习应用对 GPU 支持的现状是一致的。
TensorFlow 1.0 相比于 0.12版本:
运行 Inception v3模型,
8GPU硬件下,1.0版比0.12版本快7.3倍
分布式64GPU情况下,1.0版比0.12版本快58倍


详细情况: https://www.tensorflow.org/performance/xla
XLA主要包括两种使用方式:JIT(Just in time)能够自动将Graph中的部分子图通过XLA融合某些操作来减少内存需求提高执行速度;AOT(Ahead of time)可以提前将Graph转换为可以执行的源码,减少生成的可执行文件的大小,减少运行的时间消耗,一个很明显的应用场景是模型在移动设备上的Inference优化。
### 2. XLA使 TensorFlow 在移动设备上运行
----------------------------------------------
XLA 提升了 TensorFlow 的移动性。现有的、未经调整的 TensorFlow 程序只需创建一个后端即可在新硬件平台上运行。

这么做的意义非同寻常 ——此前, IBM 就为它的 PowerAI 机器学习硬件解决方案加入了对 TensorFlow 的支持,前者由 Power8 CPU 和 GPU 混合运行。

TensorFlow的工程师已经缩减了它的整体内存占用和 APP 的存储空间占用。这些优化对各类硬件运行环境都有好处,但对于移动平台尤其重要。此前的 TensorFlow 版本已经加入了对安卓、iOS 和 Raspberry Pi 硬件平台的支持,使得 TensorFlow 能在这类设备上处理诸如图像分类之类的任务。
创造出能在普通智能手机上运行的机器学习模型,而无需 24 小时每时每刻的云端支持,将会孵化出一系列新型应用。这是 TensorFlow 1.0 的野心之一。
TF1.0引入了新版的安卓Demo。包含物体识别、图像标记应用。
### 3. 引入更高级别API,增强灵活性和兼容性
-------------------------------------------------
引入了抽象性、封装性更高级别的API: tf.layers、tf.metrics 和 tf.losses 模块.
同时引入了 tf.keras 模块,加强与 Keras 的兼容性

### 4. 强化Python API,更适用于生产环境
-----------------------------------------------
加强Python API版本的稳定性,从0.1x升级后大部分代码兼容,更加适用于生产环境部署。
在Python API封装上, 抽象层更加接近 NumPy

TensorFlow在Google内部项目应用的增长也十分迅速:在Google多个产品都有应用如:Gmail,Google Play Recommendation, Search, Translate, Map等等;有将近100多project和paper使用TensorFlow做相关工作。
TF强化其最大的特点: 从 研究机构 到 工业应用 的全覆盖框架。研究机构和开发用的技术,同样可用于实际大规模服务器部署和移动端部署。

科学家 和 工程师 在同一平台下进行科学研究 和 实际工程应用。

### 5. 引入了TF调试器(TF Debuger)
-----------------------------------------
TensorFlow Debugger (tfdbg) 帮助开发者更好的调试
### 4. 加入实验性的Java API 、Go API
-----------------------------------------------
引入了对Java和Go语言的API,但支持不全,最全的还是Python API
### 5. 支持与 Python 3 兼容的 Docker 镜像,引入 TensorFlow Serving 服务
------------------------------------------------
完善的Docker支持

把训练好的模型提供生产环境可用的服务,通常有以下几个需求:
长期稳定服务,低时延
支持多个模型服务
支持同一模型多版本
保证计算时耗尽量小以保证一些实时性需求
mini-batching的支持,以提高效率
TensorFlow Serving的设计就是为了解决这些需求,而且TensorFlow基于gRPC,支持多种语言。
### 6. 生态融合
-----------------
TensorFlow支持以下多种技术的协作和底层存储



### 7. 升级到 1.0 版本
-----------------------
TF框架提供了 tf_upgrade.py 脚本来讲代码升级,但是并不完美。
建议手工调整或运行不同版本。
~~~
$ python tf_upgrade.py --infile InputFile --outfile OutputFile
~~~
详细指南: https://www.tensorflow.org/install/migration
### 8. 更多模型
----------------
TF 引入更多的模型,原来在主仓库的模型现在迁移到新的单独的仓库了: https://github.com/tensorflow/models
### 附录:版本历史

