作者:TensorFlow
編譯:ronghuaiyang
導讀
TensorFlow2.0將聚焦於易用性,Keras成為了推薦的模型構建API,還有大家可能更加關心的1.x到2.0的遷移的問題,這裡給你個完整的解答。
多虧了一個令人難以置信的、多樣化的社區,TensorFlow已經成長為世界上最受歡迎的ML平台之一,這個社區包括:
- 研究人員(例如,預測地震餘震和檢測乳腺癌)。
- 開發人員(例如,開發應用程式來識別患病植物和幫助人們減肥)。
- 公司(例如,通過eBay、Dropbox和AirBnB來改善客戶體驗)。
- 還有很多其他的。
去年11月,TensorFlow慶祝了它的3歲生日回顧了多年來添加的特性。我們對另一個重要里程碑TensorFlow 2.0感到興奮。
TensorFlow 2.0將專注於簡單易用,並提供如下更新:
- 使用Keras進行簡單的模型建立和即時執行。
- 在任何平台上進行生產中的健壯模型部署。
- 強有力的研究實驗。
- 清理廢棄的API,減少重複,從而簡化API。
在過去的幾年裡,我們向TensorFlow添加了許多組件。使用TensorFlow 2.0,這些將打包到一個全面的平台中,支持從訓練到部署的機器學習工作流。讓我們用一個簡化的概念圖來看看TensorFlow 2.0的新架構,如下圖所示:
簡單的模型構建
在最近的一篇博客文章中,我們宣布Keras,一個用戶友好的機器學習API標準,將成為用於構建和訓練模型的核心高級API。Keras API使開始使用TensorFlow變得很容易。重要的是,Keras提供了幾個模型構建api(順序的、功能的和子類化的),因此你可以為你的項目選擇正確的抽象級別。TensorFlow的實現包含增強功能,包括快速執行、即時疊代和直觀調試,以及tf.data,用於構建可擴展的輸入pipelines。
下面是一個工作流程示例(在接下來的幾個月里,我們將更新下面連結的指南):
- 使用tf.data加載數據。使用使用tf.data創建的輸入管道讀取訓練數據。使用tf.feature_column來描述特徵,例如bucketing和Feature cross。還支持從內存數據(例如NumPy)方便地輸入。
- 使用tf.keras構建、訓練和驗證你的模型。或使用Premade Estimators。Keras與TensorFlow的其餘部分緊密集成,因此你可以隨時訪問TensorFlow的特性。還可以直接使用一組標準的打包模型(例如,線性或邏輯回歸、梯度增強樹、隨機森林)(使用tf.estimator API實現)。如果你不想從頭開始訓練模型,那麼你很快就可以使用transfer learning來使用TensorFlow Hub中的模塊來訓練Keras或Estimator模型。
- 運行並調試 eager execution,然後使用 tf.function來利用圖的優點。 TensorFlow 2.0在默認情況下運行時執行速度快,便於使用和調試。此外,tf.function注釋透明地將Python程序轉換為張量流圖。這個過程保留了1.x的所有優點。基於TensorFlow圖形的執行:性能優化、遠程執行以及輕鬆序列化、導出和部署的能力,同時增加了用簡單Python表示程序的靈活性和易用性。
- 使用分布策略進行分布式培訓。對於大型ML培訓任務,Distribution Strategy API使得在不更改模型定義的情況下,在不同的硬體配置上分發和訓練模型變得很容易。由於TensorFlow提供了對一系列硬體加速器(如cpu、gpu和TPUs)的支持,因此可以將訓練工作負載分布到單節點/多加速器以及多節點/多加速器配置,包括TPU Pods。雖然這個API支持多種集群配置,但是提供了在on-prem或雲環境中的Kubernetes clusters上部署訓練的模板。
- SavedModel導出 TensorFlow將基於SavedModel標準化,作為TensorFlow service、TensorFlow Lite和TensorFlow.js、TensorFlow Hub等的交換格式。
在任何平台上進行生產中的健壯模型部署
TensorFlow一直為生產提供直接的途徑。無論是在伺服器、邊緣設備還是web上,TensorFlow都允許你輕鬆地訓練和部署模型,無論使用何種語言或平台。在TensorFlow 2.0中,通過標準化交換格式和對齊的api,我們正在改進跨平台和組件之間的兼容性和對稱性。
一旦你訓練並保存了你的模型,你就可以直接在你的應用程式中執行它,或者使用其中一個部署庫來提供服務:
- TensorFlow service :一個TensorFlow庫,允許模型通過HTTP/REST或gRPC/協議緩衝區提供服務。
- TensorFlow Lite: TensorFlow針對移動和嵌入式設備的輕量級解決方案提供了在Android、iOS和嵌入式系統(如Raspberry Pi和Edge TPUs)上部署模型的能力。
- TensorFlow.js:支持通過Node.js在JavaScript環境中部署模型,例如在web瀏覽器或伺服器端。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提供執行簡單的原型設計與調試,分布式策略API和自動圖,並支持tpu ,使TensorFlow 2.0一個易於使用的,可定製的,高度可擴展的平台,以及進行先進的ML研究和翻譯研究生產pipelines。
TensorFlow1.x和2.0之間的差異
自從我們第一次開源TensorFlow以來,已經有了許多版本和API疊代。隨著ML的快速發展,該平台已經得到了極大的發展,現在支持不同需求的不同用戶組合。使用TensorFlow 2.0,我們有機會基於語義版本控制清理和模塊化平台。
以下是一些更大的變化:
- 刪除隊列運行器以支持tf.data。
- 刪除圖集合。
- 改變變量的處理方式。
- API符號的移動和重命名。
此外,將從核心TensorFlow存儲庫和構建流程中刪除tf.contrib。TensorFlow的contrib模塊已經超出了單個存儲庫中可以維護和支持的範圍。較大的項目最好單獨維護,而較小的擴展將逐步擴展到核心TensorFlow代碼。已經成立了一個特別興趣小組(SIG)來維持和進一步發展一些更重要的計劃項目。如果您有興趣投稿,請參與這個RFC。
兼容性和連續性
為了簡化到TensorFlow 2.0的遷移,將有一個更新TensorFlow 1的轉換工具。使用TensorFlow 2.0兼容api的Python代碼,或者標記代碼不能自動轉換的情況。
並不是所有的更改都可以完全自動完成。例如,一些不推薦的api沒有直接對應的api。這就是為什麼我們引入了TensorFlow .compat.v1兼容模塊,它保留了對完整TensorFlow 1的支持。(不包括tf.contrib)。此模塊將在TensorFlow 2的生命周期內進行維護。並將允許使用TensorFlow 1編寫代碼。保持功能。
此外,SavedModels或已存儲的GraphDefs將向後兼容。SavedModels用1.x保存。將繼續加載並在2.x中執行。但是,2.0中的更改將意味著原始檢查點中的變量名可能會更改,因此使用包含已轉換為2.0的代碼的2.0前檢查點並不保證能夠工作。有關詳細信息,請參閱Effective TensorFlow 2.0指南。
我們相信TensorFlow 2.0將給社區帶來巨大的好處,並且我們已經投入了大量的努力使轉換儘可能容易。然而,我們也認識到遷移當前的pipeline需要時間,並且我們非常關心社區在學習和使用TensorFlow方面的當前投資。我們將提供12個月的安全補丁到最後一個1.x。為了給我們現有的用戶足夠的時間進行轉換,並獲得TensorFlow 2.0的所有好處。
TensorFlow 2.0的時間軸
TensorFlow 2.0將在今年年初作為公眾預覽版發布。但是為什麼要等呢?你已經可以使用 tf.keras以TensorFlow 2.0的方式進行開發了。keras和即時執行,預打包的模型和部署庫,分布式策略API今天也已經部分可用。
我們對TensorFlow 2.0和即將到來的變化非常興奮。TensorFlow已經從一個用於深度學習的軟體庫成長為一個適用於所有類型ML的完整生態系統。
英文原文:https://medium.com/tensorflow/whats-coming-in-tensorflow-2-0-d3663832e9b8
請長按或掃描二維碼關注本公眾號