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
### 附錄:版本歷史

