當前位置:
首頁 > 科技 > TensorFlow 2.0 新功能 官方詳解

TensorFlow 2.0 新功能 官方詳解

Google TensorFlow 團隊 出品

量子位 授權轉載 | 公眾號 QbitAI

TensorFlow 已經發展為世界上最受歡迎和被廣泛採用的機器學習平台之一,我們衷心感謝一直以來支持我們的各界的開發者和他們的貢獻:

研究人員:(預測地震餘震、檢測乳腺癌…… )

開發人員:(識別患病植物、幫助人們減肥的應用 …… )

還有很多 ……

2018 年 11 月,TensorFlow 迎來了它的3 歲生日,我們回顧了幾年來它增加的功能,進而對另一個重要里程碑 TensorFlow 2.0 感到興奮 !

TensorFlow 2.0 將專註於 簡單性 和 易用性,具有以下更新:

使用 Keras 和 eager execution,輕鬆構建模型

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

為研究提供強大的實驗工具

通過清理廢棄的 API 和減少重複來簡化 API

在過去的幾年裡,我們為 TensorFlow 添加了許多組件。在 TensorFlow 2.0 中,它們將被打包成一個全面的平台,支持從訓練到部署的機器學習工作流程。

讓我們使用如下所示的簡化概念圖來了解 TensorFlow 2.0 的新架構:

圖註:上圖的訓練部分雖然側重於 Python API,但 TensorFlow.js 也支持訓練模型。也支持其他語言,包括 Swift,R 和 Julia

簡單的模型構建

在最近的文章中,我們宣布 Keras API 將成為 TensorFlow 中構建和訓練模型的核心高級 API。Keras API 使得使用 TensorFlow 開啟項目變得簡單。

重要的是,Keras 提供了幾個模型構建 API ( Sequential, Functional, 和 Subclassing ),因此您可以選擇適合的抽象級別。

TensorFlow 的實現包含多項增強功能,包括即時迭代和直觀調試,以及 tf.data,用於構建可擴展的輸入管道。

下面是一個工作流程示例 ( 在接下來的幾個月里,我們將更新下面所述內容的指南 ):

使用 tf.data 載入數據。使用輸入管道讀取訓練數據,用 tf.data 創建的輸入線程讀取訓練數據。

使用 tf.feature_column 描述特徵,例如嵌套和特徵交叉。還支持從內存數據(例如 NumPy)中方便地輸入

使用 tf. Keras 或 Premade Estimators 構建、訓練和驗證模型。Keras 與 TensorFlow 的其餘部分緊密集成,因此您可以隨時訪問 TensorFlow 的功能。

一組標準的打包模型 ( 例如,線性或邏輯回歸、梯度增強樹、隨機森林 ) 也可以直接使用 ( 利用 tf.estimator API 實現 )。

如果你不想從頭開始訓練一個模型,你很快就能通過 TensorFlow Hub 的模塊利用遷移學習來訓練 Keras 或 Estimator 模型

使用 eager execution 運行和調試,然後在圖形上使用 tf.function。TensorFlow 2.0 在默認情況下以 eager execution 方式運行,以便於使用和順利調試。

此外,tf.functionannotation 透明地將 Python 程序轉換成 TensorFlow 圖。

這個過程保留了 1.x TensorFlow 基於圖形執行的所有優點:性能優化、遠程執行以及輕鬆序列化、導出和部署的能力,同時增加了使用簡單的 Python 表達程序的靈活性和易用性

使用分布策略進行分散式訓練。對於大型機器學習訓練任務來講,Distribution Strategy API 使得在不更改模型定義的情況下,在不同硬體配置上分布和訓練模型變得很容易。

由於 TensorFlow 提供了對 CPU、GPU 和 TPU 等一系列硬體加速器的支持,因此可以將訓練工作負載分布到單節點 / 多加速器以及多節點 / 多加速器配置,包括 TPU Pods。

雖然此 API 支持各種集群配置,但還提供了在本地或雲環境中部署 Kubernetes 集群訓練的模板

導出到 SavedModel。TensorFlow 將在 SavedModel 上標準化,作為 TensorFlowServing、TensorFlow Lite、TensorFlow.js、TensorFlow Hub 等的交換格式

想要了解 TensorFlow 指南詳細信息,請參閱:

https://tensorflow.google.cn/guide/?hl=zh-CN

在任何平台上的生產環境中進行穩健的模型部署

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 還支持用 JavaScript 定義模型,並使用類似於 keras 的 API 直接在 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 excution,便於原型製作和調試,Distribution Strategy API 和 AutoGraph進行規模化訓練, 以及對 TPU 的支持, 使 TensorFlow 2.0 成為一個易於使用、可定製和高度可擴展的平台,用於進行最先進的機器學習研究並將研究轉化為生產流水線。

TensorFlow 1.x 和 2.0 的區別

自從我們最初開源 TensorFlow 以來,已經有了許多版本和 API 迭代。隨著機器學習的快速發展,該平台得到了極大的發展,現在支持具有不同需求的不同用戶組合。

使用 TensorFlow 2.0,我們有機會清理和模塊化基於語義版本控制的平台。

以下是一些較大的變化:

刪除 queue runner 以支持 tf.data

刪除圖形集合

改變變數的處理方式

符號的移動和重命名

此外,tf_contrib 將從 TensorFlow 核心存儲庫和構建流程中刪除。TensorFlow 的 contrib 模塊已經超出了單個存儲庫所能維護和支持的範圍。

較大的項目最好單獨維護,而較小的擴展將逐步過渡到核心 TensorFlow 代碼。

一個特別興趣小組 ( SIG ) 已經成立,以維持和進一步發展未來一些更重要的 contrib 項目。

如果您有興趣貢獻,請回復此貼:

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 之前的檢查點而具有已轉換為 2.0 的代碼時可能無法保證正常工作。

有關詳細信息,請參閱 TensorFlow 2.0 指南:

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

但是,我們也認識到遷過渡當前的線程需要時間,我們非常關心社區目前對學習和使用 TensorFlow 的投資。

我們將在最後的 1.x 版本中提供 12 個月的安全補丁,以便為現有用戶提供充足的時間進行過渡並獲得 TensorFlow 2.0 的所有優勢。

TensorFlow 2.0 的時間表

TensorFlow 2.0 預覽版將於今年年初發布。

何必要等? 您已經可以通過使用 tf.keras 和 eager execution,預打包模型和部署庫來開發 TensorFlow 2.0 了。Distribution Strategy API 目前已部分可用。

我們對 TensorFlow 2.0 以及即將到來的變化感到非常興奮。TensorFlow 已經從一個用於深度學習的軟體庫成長為一個適用於所有機器學習類型的完整生態系統。

TensorFlow 2.0 將簡單易用,適用於所有平台上的所有用戶。

歡迎加入 TensorFlow 社區,它不僅幫您了解最新內容,還幫助每個人都可以使用機器學習 !

傳送門

加入社群

量子位AI社群開始招募啦,歡迎對AI感興趣的同學,在量子位公眾號(QbitAI)對話界面回復關鍵字「交流群」,獲取入群方式;

此外,量子位專業細分群(自動駕駛、CV、NLP、機器學習等)正在招募,面向正在從事相關領域的工程師及研究人員。

進專業群請在量子位公眾號(QbitAI)對話界面回復關鍵字「專業群」,獲取入群方式。(專業群審核較嚴,敬請諒解)

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復「招聘」兩個字。

喜歡就點「好看」吧 !


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 量子位 的精彩文章:

讓AI觸類旁通93種語言:Facebook最新多語種句嵌入來了
星際2新智能體開源:單機並行能力強,適應環境廣,個人可訓練

TAG:量子位 |