機器之心報道,做者:邱陸陸。python
8 月中旬,谷歌大腦成員 Martin Wicke 在一封公開郵件中宣佈,新版本開源框架——TensorFlow 2.0 預覽版將在年末以前正式發佈。今日,在上海谷歌開發者大會上,機器之心獨家瞭解到一個重大的改變將會把 Eager Execution 變爲 TensorFlow 默認的執行模式。這意味着 TensorFlow 如同 PyTorch 那樣,由編寫靜態計算圖全面轉向了動態計算圖。git
谷歌開發者大會github
在谷歌開發者大會的次日,主會場全天都將進行 TensorFlow 專場的演講。算法
來自 Google Brain 的軟件工程師馮亦菲在分享 TensorFlow 編程接口的新動態時着重介紹了 tf.keras,tf.data 等高層庫,總結了 TensorFlow 團隊對開發者使用 TensorFlow 的一系列建議,包括:編程
用 Eager 模式搭建原型網絡
用 Datasets 處理數據架構
用 Feature Columns 提取特徵框架
用 Keras 搭建模型機器學習
借用 Canned Estimators分佈式
用 SavedModel 打包模型
其中,在介紹 Eager 模式時,她提到,在 TensorFlow 2.0 版本中,Eager 模式會成爲默認執行模式,讓開發者更簡潔高效地搭建原型。
在演講結束後的交流中,馮亦菲提到 TensorFlow 2.0 beta 版將會在今年年末公開,而正式版預計於明年 Q1 或 Q2 問世。Eager 模式變爲默認設置以後,開發者能夠在原型搭建完成後,利用 AutoGraph 把在 Eager 模式下搭建的模型自動變成計算圖。開發者也能夠進一步對 AutoGraph 生成的計算圖進行優化,或者關掉 Eager 模式本身構建計算圖。
咱們注意到,在兩個月以前剛剛發佈的 AutoGraph 已經離開 tf.contrib 成爲了正式的 TF 庫的一部分,在設計文檔中,工程師提到,「爲了 TF 2.0 作準備,咱們將 AutoGraph 從 tensorflow / contrib / autograph 移動到了 tensorflow / python / autograph。AutoGraph 仍可在 tensorflow.contrib.autograph 下訪問,直到 tensorflow.contrib 被取消。」
谷歌開發者大會的「熟面孔」,Google AI 軟件工程師金安娜一樣出如今了今年的主題演講中,她提到 TensorFlow 工程師會將本身的最新的設計提議放在 TensorFlow Community 的 Request for Comments 中,她鼓勵開發者前往瀏覽,並針對工程師的最新設計思路給出本身的意見。
例如,Martin Wicke 關於 sunset tf.contrib 的提議就仍然在反饋階段,有諸多開發者在該條 pull request 下提出了本身的意見。
RFC 的地址以下:
在今天下午的演講中,會有更多來自谷歌的工程師分享與 Eager 模式相關的設計思路和設計細節。
TensorFlow 歷程
TensorFlow 是由 Google Brain 團隊在谷歌內部第一代 DL 系統 DistBelief 的基礎上改進而獲得的,這一通用計算框架目前已經成爲最流行的機器學習開源工具。
TensorFlow 的前身 DistBelief 是谷歌 2011 年開發的內部 DL 工具,基於 DistBelief 的 Inception 網絡得到了 2014 年的 ImageNet 挑戰賽冠軍。雖然 DistBelief 當時在谷歌內部已經應用於很是多的產品,但它過分依賴於谷歌內部的系統架構,所以很難對外開源。通過對 DistBelief 的改進與調整,谷歌於 2015 年 11 月正式發佈了開源計算框架 TensorFlow 0.5.0。相比於 DistBelief,TensorFlow 的計算框架更加通用、計算資源安排更加合理,同時支持更多的深度學習算法與平臺。
在 TensorFlow 開源後,基於 TF 的項目在第一年裏面層出不窮:超過 480 人爲 TF 作出了直接貢獻,其中包括谷歌開發者、外部研究者、獨立開發者、學生和其它公司的資深開發者。當時,TensorFlow 已經成爲了 GitHub 上最受歡迎的機器學習項目。
在開源的第一年中,TensorFlow 增長了對分佈式訓練、iOS、樹莓派開發板的支持,而且還與普遍使用的大數據架構相結合。此外,谷歌還發布了當時表現最好的圖像分類模型 Inception-ResNet-v2,而且還回答了 GitHub、StackOverflow 和 TensorFlow mailing list 上數以千計的問題。
去年 2 月份在首屆 TensorFlow 開發者大會中,谷歌正式發佈了 TensorFlow 1.0。在速度上,它在 64 個 GPU 上分佈式訓練 Inception v3 得到了 58 倍提速。在靈活性上,TensorFlow 1.0 引入了高層 API,例如 tf.layers、tf.metrics 和 tf.losses 等模塊,同時經過 tf.keras 將 Keras 庫正式整合進 TF 中。
此後,TensorFlow 發佈了很是多的重要更新,包括動態圖機制 Eager Execution、移動端深度學習框架 TensorFlow Lite、面向 JavaScript 開發者的機器學習框架 TensorFlow.js,以及自動將 Python 轉化爲 TF 計算圖的 AutoGraph 等。
在 TensorFlow 2.0 的規劃中,Eager Execution 變爲默認執行模式可能對開發者有比較大的影響,由於咱們再也不須要編寫完整的靜態計算圖,並打開會話(Session)運行它。相反,與 PyTorch 同樣,Eager Execution 是一個由運行定義的接口,這意味着咱們在 Python 上調用它進行計算能夠直接得出結果。這種方式很是符合人類直覺,所以能夠預想 TensorFlow 的入門在之後會簡單地多。
如下爲 8 月中旬谷歌大腦成員 Martin Wicke 在公開郵件中透露的 TensorFlow 2.0 的規劃:
TensorFlow 2.0 的規劃
自 2015 年開源發佈以來,TensorFlow 已經成爲世界上使用最普遍的機器學習框架,面向普遍的用戶和用例。此後,TensorFlow 隨着計算硬件、機器學習研究和商業部署的快速發展而不斷更新。
爲了反映這些快速變化,谷歌開發者已經開始研究下一個版本的 TensorFlow。TensorFlow 2.0 將是一個重要的里程碑,重點關注易用性。如下是用戶對 TensorFlow 2.0 的一些指望:
Eager execution 將是 2.0 的核心功能。它把用戶對編程模型的指望與 TensorFlow 實踐更好地結合起來,應該會使 TensorFlow 更容易學習和應用。
支持更多的平臺和語言,並經過交換格式的標準化和 API 的對齊來改善這些組件之間的兼容性和對等性。
將刪除過期的 API 並減小重複,以避免給用戶帶來困惑。
據郵件稱,谷歌計劃年末以前發佈 TensorFlow 2.0 的預覽版。
兼容性與連續性
TensorFlow 2.0 提供了一個糾錯並改正的機會,而這些改進在語義版本控制中是不容許的。
爲了簡化轉換,TensorFlow 團隊將建立一個轉換工具,該工具須要更新 Python 代碼以使用與 TensorFlow 2.0 兼容的 API,或者在沒法自動轉換時發出警告。在向 1.0 過渡的過程當中,相似的工具發揮了巨大的做用。
不是全部的改進都能自動進行。好比,TensorFlow 不同意使用一些沒有直接對接的 API。對於這種狀況,咱們將提供一個兼容模塊 (tensorflow.compat.v1),其中包含完整的 TensorFlow 1.x API,它會在 TensorFlow 2.x 的週期裏獲得維護。
磁盤兼容性
谷歌表示,他們不打算對 SavedModels 或 GraphDef 存儲進行重大更改,計劃 2.0 中能包含全部當前內核。然而,2.0 的變化意味着在與新模型兼容以前,原始 checkpoint 中的變量名必需要進行轉換。
tf.contrib
TensorFlow 的 contrib 模塊已經超出了單個存儲庫能夠維護和支持的範圍。較大的項目最好分開維護,咱們將把較小的擴展與 TensorFlow 主代碼一塊兒孵化。所以發佈 TensorFlow2.0 以後,咱們將中止發佈 tf.contrib。在接下來的幾個月裏,咱們將與 contrib 各自的全部者合做制定詳細的遷移計劃,包括如何在 TensorFlow 的社區頁面和文檔中宣傳你的 TensorFlow 擴展。對於每個 contrib 模塊,咱們有如下選擇:a)將項目整合到 TensorFlow 中;b)將其移動到一個單獨的存儲庫;c)將其完全移除。這確實意味着全部的 tf.contrib 將被棄用,今天,TensorFlow 將中止添加新的 tf.contrib 項目。