Google官方解讀 TensorFlow 2.0 所有新特性

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

轉自:機器之心(ID:almosthuman2014 )

最近,TensorFlow 2.0 預覽版終於上線了,看來穩定版距離我們也不會太遠——按照官方說法會是今年的第一個季度。最近,TensorFlow 官方博客全面介紹了 2.0 版的所有新特性。為了讓開發者們簡單高效地搭建模型,2.0 版本經過了大幅度重建。

作為最流行的深度學習框架,TensorFlow 已經成長為全球使用最廣泛的機器學習平台。目前,TensorFlow 的開發者社區包括研究者、開發者和企業等。

去年 11 月,TensorFlow 慶祝了自己的三歲生日。不久之後,也將迎來另一個重要里程碑——TensorFlow 2.0。

TensorFlow 2.0 將專注於簡潔性和易用性,主要升級方向包括:

  • 使用 Keras 和 eager execution 輕鬆構建模型。
  • 在任意平台上做到穩健的生產環境模型部署。
  • 為研究提供強大的實驗工具。
  • 通過清理廢棄的 API 和減少重復來簡化 API。

Google表示,在過去幾年里,TensorFlow 增加了很多組件。通過 TensorFlow 2.0 版本的大幅度重建,這些功能將被打包成為一個綜合平台,支持從訓練到部署的整個機器學習工作流程。下圖簡要展示了 TensorFlow 2.0 的新架構:

谷歌官方解讀 TensorFlow 2.0 所有新特性

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

輕鬆構建模型

TensorFlow 團隊近期宣布 Keras API 將成為 TensorFlow 中構建和訓練模型的核心高級 API。Keras API 使得使用 TensorFlow 開啟項目變得簡單。重要的是,Keras 提供多個模型構建 API(Sequential、Functional 和 Subclassing),這樣你可以選擇適合自己項目的抽象級別。TensorFlow 的做到有多項增強,包括可直接迭代和直觀調試的 eager execution,以及用於構建可擴展輸入流程的 tf.data。

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

  1. 用 tf.data 加載數據。用 tf.data 創建的輸入線程讀取訓練數據。使用 tf.feature_column 描述特徵特性,例如分段和特徵交叉。還支持從內存數據(例如 NumPy)中方便地輸入。
  2. 使用 tf.keras、Premade Estimators 構建、訓練和驗證模型。Keras 與 TensorFlow 的其餘部分緊密集成,因此你可以隨時訪問 TensorFlow 的功能。一組標準的打包模型(例如,線性或邏輯回歸、梯度增強樹、隨機森林)也可以直接使用(使用 tf.estimator API 做到)。如果你不想從頭開始訓練一個模型,你很快就能通過 TensorFlow Hub 的模塊利用遷移學習來訓練 Keras 或 Estimator 模型。
  3. 用 eager execution 運行和調試,然後在圖形上使用 tf.function。TensorFlow 2.0 默認用 eager execution 運行,以便於輕鬆使用和順利調試。此外,tf.function 註釋透明地將 Python 程序轉換成 TensorFlow 圖。這個過程保留了 TensorFlow1.x 基於圖形執行的所有優點:性能優化、遠程執行,以及序列化、導出和部署的能力,同時增加了用簡單 Python 表達程序的靈活性和易用性。
  4. 使用分布式策略進行分布式訓練。對於大部分 ML 訓練任務來說,Distribution Strategy API 使得在不同的硬件配置上分布和訓練模型變得很容易,而無需改變模型定義。由於 TensorFlow 為一系列硬件加速器(如 CPU、GPU、TPU)提供支持,你可以將訓練工作負載分配給單節點/多加速器以及多節點/多加速器配置,包括 TPU Pods。盡管這個 API 支持多種群集配置,但提供了在本地或雲環境中的 Kubernete 集群上部署訓練的模板。
  5. 導出至 SavedModel。TensorFlow 將在 SavedModel 上標準化,來作為 TentsorFlow Serving、TensorFlow Lite、TensorFlow.js、TentsorFlow Hub 等的交換格式。

在任意平台上做到穩健的生產環境模型部署

TensorFlow 總是會提供直接的產品化路徑。不論是在服務器、邊緣設備還是網頁上,也不論你使用的是什麼語言或平台,TensorFlow 總能讓你輕易訓練和部署模型。在 TensorFlow 2.0 中,我們正在通過標準化交換格式和調整 API 來改進跨平台和組件的兼容性和奇偶性(parity)。

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

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,可以大規模訓練的 Distribution Strategy API 和 AutoGraph,以及對 TPU 的支持,使 TensorFlow 2.0 成為一個易於使用、可定制和高度可擴展的平台,用於展開最先進的 ML 研究並將該研究轉化為生產流水線。

TensorFlow 1.x 和 2.0 的區別

自我們開源 TensorFlow 以來,到現在已經發展出很多個版本和 API 迭代。隨著 ML 的快速發展,這個平台也有了巨大的進展,現在支持很多具有不同需求的不同用戶。有了 TensorFlow 2.0,我們有機會基於語義版本控制來清理和模塊化平台。

此次的重大改變包括:

  • 刪除 queue runner 以支持 tf.data。
  • 刪除圖形集合。
  • 變量處理方式的變化。
  • API 符號的移動和重命名。

此外,tf.contrib 將從核心 TensorFlow 存儲庫和構建過程中移除。TensorFlow 的 contrib 模塊已經超出了單個存儲庫可以維護和支持的範圍。較大的項目最好單獨維護,而較小的擴展將逐漸移至核心 TensorFlow 代碼。一個特別興趣小組(SIG)已經成立,以維持和進一步發展一些更重要的未來 contrib 項目。如果你有興趣貢獻,請聯繫以下 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 將向後兼容。用 TensorFlow 1.x 保存的 SavedModels 將繼續在 2.x 中加載和執行。然而,2.0 中的更改意味著原始檢查點中的變量名可能會更改,所以使用 2.0 之前的檢查點而代碼已轉化為 2.0 時,可能無法保證有效。詳情可參閱 TensorFlow 2.0 指南:

https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/effective_tf2.md

我們相信,TensorFlow 2.0 將為社區帶來巨大的利益,我們也盡了最大的努力來讓轉化變得簡單。但是,我們也發現遷移現在的線程需要時間,我們非常重視社區當下在學習和使用 TensorFlow 方面的投入。我們將在最近的 1.x 版本中提供 12 個月的安全補丁,以為現有的用戶提供足夠的時間來過渡和利用 TensorFlow 2.0。

TensorFlow 2.0 時間線

TensorFlow 2.0 於今年年初發布預覽版。你現在已經可以通過使用 tf.keras 、eager execution、預打包模型和部署庫來開發 TensorFlow 2.0 了。Distribution Strategy API 也已經部分可用。

英文原文鏈接:https://medium.com/tensorflow/whats-coming-in-tensorflow-2-0-d3663832e9b8?linkId=62351082

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!