谷歌官方解讀:TensorFlow 2.0哪些新特性值得關注?

2018 年 11 月,TensorFlow 在慶祝 3 歲生日時回顧了其多年來增加的功能。 對於即將發佈的 TensorFlow 2.0,TensorFlow 團隊感到非常興奮。相比於舊版本,這個被團隊視爲另一重要里程碑的版本又新增了哪些功能呢?

TensorFlow 2.0 將專注於簡單性和易用性,具體更新包括:

  • 使用 Keras 和 eager execution 輕鬆建模。
  • 在任何平臺生產中部署強大的模型。
  • 強大的研究實驗。
  • 清理棄用的API,減少重複,簡化API。

在過去幾年中,我們爲 TensorFlow 添加了許多組件。TensorFlow 2.0 將這些組件打包成一個綜合平臺,支持從訓練到部署的整個機器學習工作流程。TensorFlow 2.0 新架構示意圖如下:

image

(注意:雖然此圖的訓練部分側重於Python API,但 TensorFlow.js 也支持訓練模型。TensorFlow 2.0 還對其他語言有不同程度的支持,包括Swift、R和Julia。)

更簡單地創建模型

在最近的博客文章中,我們宣佈 Keras 是一個用戶友好的機器學習 API 標準,並將成爲用於構建和訓練模型最重要的高級 API。Keras API 讓你可以輕鬆開始使用 TensorFlow。重要的是,Keras 提供了一些模型創建 API(順序、功能和子類),讓用戶可以爲項目選擇合適的抽象級別。TensorFlow 的實現增強包括eager execution、快速迭代和直接調試,以及用於構建可擴展輸入管道的 tf.data。

以下爲示例工作流程(在接下來的幾個月中,我們將努力更新鏈接的中指南):

  1. 使用 tf.data 加載數據;使用由 tf.data 創建的輸入管道讀取訓練數據;使用tf.feature_column 描述特徵特點,例如分段和特徵交叉;支持來自內存數據的便捷輸入(例如,NumPy)。
  2. 使用 tf.keras 或預先做好的評估器構建、訓練和驗證你的模型。 Keras 與 TensorFlow 的其餘部分緊密集成,因此可以隨時訪問 TensorFlow 的功能。還可以直接使用一組標準的打包模型(例如,線性或邏輯迴歸、梯度提升樹、隨機森林,用 tf.estimator API 實現)。如果你不想從頭開始訓練模型,不久之後你就可以用遷移學習來訓練使用 TensorFlow Hub 模塊的 Keras 或評估器模型。
  3. 運行 eager execution 和調試,然後使用 tf.function(圖形)。默認情況下,TensorFlow 2.0 以 eager execution 的方式運行,以便於使用和調試。此外,tf.function 註釋將你的 Python 程序完全透明地轉換爲 TensorFlow 圖形。此過程保留了1.x TensorFlow 基於圖形運行的所有優點:在性能優化、遠程運行和輕鬆序列化、導出和部署的同時,使用簡單的 Python 讓程序表達更加靈活易用。
  4. 使用分佈策略進行分佈式訓練。對於大型機器學習訓練任務,分佈式策略 API 可以輕鬆地在不同硬件配置上分發和訓練模型,而無需更改模型定義。由於 TensorFlow 支持各種硬件加速器,如 CPU、GPU 和 TPU,因此你可以將訓練工作負載分配到單節點/多加速器以及多節點/多加速器配置(包括 TPU Pod)。此 API 支持各種羣集配置,還提供在本地或雲環境中部署 Kubernetes 羣集訓練的模板。
  5. 導出到 SavedModel。 TensorFlow 將 SavedModel 標準化並作爲 TensorFlow Serving、TensorFlow Lite、TensorFlow.js、TensorFlow Hub等的交換格式。

在任何平臺生產中部署模型

TensorFlow 一直以來都可以直接用於生產。無論是在服務器、邊緣設備還是Web上,TensorFlow 都可以讓你輕鬆地訓練和部署模型,無論使用何種語言或平臺。在TensorFlow 2.0 中,我們通過標準化交換格式和對齊API來提高跨平臺和組件的兼容性和匹配性。

訓練並保存模型後,你可以直接在應用程序中運行,也可以使用以下任意一個部署庫爲其提供服務:

  • TensorFlow Serving:TensorFlow庫,可以通過 HTTP / REST 或 gRPC /協議緩衝區提供模型。
  • TensorFlow Lite:TensorFlow 針對移動和嵌入式設備的輕量級解決方案,提供了在Android、iOS 和嵌入式系統(如 Raspberry Pi 和 Edge TPU)上部署模型的功能。
  • TensorFlow.js:讓開發者可以在 JavaScript 環境中部署模型,例如通過 Node.js 在 Web 瀏覽器或服務器端部署模型。TensorFlow.js 還支持使用類似 Keras 的 API 在JavaScript 中定義模型並直接在 Web 瀏覽器中進行訓練。

TensorFlow 還支持其他語言(其中一些由更廣泛的社區維護),包括C、Java、Go、C#、Rust、Julia、R等。

強大的研究實驗

TensorFlow 可以輕鬆地把新創意轉換爲代碼。TensorFlow 2.0 集成了許多功能,可以在不犧牲速度或性能的情況下定義和訓練最先進的模型:

  • Keras Functional API 和 Model Subclassing API:允許創建複雜的拓撲,包括使用殘差層、自定義多輸入/輸出模型以及命令式寫入的前向傳遞。
  • 自定義訓練邏輯:使用 tf.GradientTape 和 tf.custom_gradient 對梯度計算進行細粒度控制。
  • 爲了更靈活和易於控制,舊版本的 TensorFlow API 可以一直繼續使用,並與更高級別的抽象結合,以實現完全可定製的邏輯。

TensorFlow 2.0 新增了一些功能,讓研究人員和高級用戶可以進行實驗,使用豐富的擴展,如 Ragged Tensors、TensorFlow Probability、Tensor2Tensor 等。

除了這些功能外,TensorFlow 還提供了讓原型設計和調試更簡單的 eager execution,分發策略 API 和 AutoGraph,可以進行大規模訓練並支持TPU,使TensorFlow 2.0 成爲一個易於使用、可定製、高度可擴展,可以運行並將最先進機器學習研究轉化爲實際生產的平臺。

TensorFlow 1.x和2.0之間的差異

自從首次開源以來, TensorFlow 已經有許多版本和 API 迭代。TensorFlow 2.0 可以基於語義版本控制(semantic versioning)清理和模塊化平臺。

以下是一些較大的變化:

此外,tf.contrib 將從核心 TensorFlow 存儲庫和構建過程中刪除。TensorFlow 的 contrib 模塊不斷增長,單個存儲庫已經難以維護和支持。較大的項目可以更好地進行單獨維護,而較小的擴展將逐漸轉向核心 TensorFlow 代碼。我們還創建了一個特殊族羣(SIG,special interest group)來維護並進一步開發一些更重要的貢獻項目。如果你有興趣參與,請參與此RFC:https://github.com/tensorflow/community/pull/37

兼容性和連續性

爲了簡化 TensorFlow 2.0 遷移,我們提供了一個轉換工具,它可以更新 TensorFlow 1.x Python 代碼,以兼容 TensorFlow 2.0 API,或者標記代碼無法自動轉換的情況。

並非所有更改都可以完全自動完成。例如,某些已棄用的 API 沒有替換項。這就是我們引入 tensorflow.compat.v1 兼容性模塊的原因,該模塊保留了對完整 TensorFlow 1.x API(不包括 tf.contrib)的支持。該模塊將在 TensorFlow 2.x 的生命週期內運行,讓使用 TensorFlow 1.x 編寫的代碼繼續運作。

此外,SavedModels 或存儲的 GraphDefs 將向後兼容。使用1.x 版本保存的SavedModels 仍可以在 2.x 中加載和執行。但是,2.0 中的變更可能會導致原始檢查點中的變量名稱更改,因此,無法保證 2.0 之前版本的檢查點正常工作。有關詳細信息,請參閱 Effective TensorFlow 2.0 指南 https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/effective_tf2.md

我們相信,TensorFlow 2.0將爲社區帶來巨大的利益,並投入大量精力讓轉換變得儘可能簡單。但是,我們也認識到,遷移當前的管道需要時間。因此,我們將在最後的 1.x 版本中提供 12 個月的安全補丁,以便現有用戶有充足的時間進行過渡。

TensorFlow 2.0 時間表

TensorFlow 2.0 將於今年年初發布公開預覽版。但爲什麼要等呢?現在,你已經可以通過使用 tf.keras 和 eager execution,預打包模型和部署庫來開發 TensorFlow 2.0。分發策略 API 目前已部分可用。

我們對 TensorFlow 2.0 以及即將發生的變化感到非常興奮。TensorFlow 已經從一個深度學習軟件庫開發,成長爲適用於所有類型機器學習的整個生態系統。TensorFlow 2.0將變得簡單易用,適用於所有平臺上的所有用戶。

參考鏈接:
https://medium.com/tensorflow/whats-coming-in-tensorflow-2-0-d3663832e9b8

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章