TensorFlow 2.0正式版終於發布了!
谷歌今天宣布,開源機器學習庫TensorFlow 2.0現在可供公眾使用。
TensorFlow 2.0的Alpha版本今年初在TensorFlow開發者大會上首次發布,經過近7個月的不斷修改、更新,TensorFlow 2.0正式版可謂是千呼萬喚始出來。
作為最受歡迎的機器學習庫之一,自2015年穀歌大腦團隊發布TensorFlow以來,TensorFlow框架已被下載超過4000萬次。
為了提高易用性,TensorFlow 2.0進行了許多修改,如取消了一些被認為是多餘的API,並緊密集成和依賴tf.keras作為中央高級API。TensorFlow與Keras深度學習庫的集成化最初始於2017年2月發布的TensorFlow1.0,本次更新讓二者的集成程度進一步提高。
此外,當在Nvidia的Volta和Turing GPU上運行時,新版本的性能表現可以提高三倍。
下面,我們帶來對TensorFlow 2.0 新特性的具體介紹。
TensorFlow 2.0專注於簡單性和易用性,主要更新如下:
TensorFlow 2.0使得機器學習應用的開發更加容易。通過將Keras緊密集成到TensorFlow中、默認eager execution,以及Python函數執行,TensorFlow 2.0開發應用程式的經驗會讓Python開發者很熟悉。對於那些想要突破機器學習邊界的研究人員來說,我們在TensorFlow的底層API上投入了大量的精力:我們現在導出了所有內部使用的操作,並且為諸如變量和checkpoint等關鍵概念提供了可繼承的接口。允許用戶構建TensorFlow的內部構件,而無需重建TensorFlow。
能夠在各種runtimes(包括雲、web、瀏覽器和Node.js,移動和嵌入式系統)上運行模型,我們對SavedModel文件格式進行了標準化。這允許用戶使用TensorFlow運行模型,使用TensorFlow服務部署模型,使用TensorFlow Lite在移動和嵌入式系統上使用模型,使用TensorFlow.js在瀏覽器或Node.js上訓練和運行模型。
對於高性能的訓練場景,你可以使用 Distribution Strategy API以最小的代碼更改來分布訓練,並獲得出色的開箱即用性能。它通過 Keras 的 Model.fit 支持分布式訓練,還支持自定義訓練循環。此外,現在可以使用多GPU支持,Cloud TPU支持將在未來發布。
查看分布式訓練指南了解更多:
https://www.tensorflow.org/guide/distributed_training
TensorFlow 2.0在GPU上提供了許多性能改進。TensorFlow 2.0通過在Volta和Turing GPU上使用混合精度和幾行代碼(例如在ResNet-50和BERT中使用的),將訓練性能提高了 3 倍。TensorFlow 2.0與TensorRT緊密集成,並使用改進的API在谷歌雲上的NVIDIA T4 Cloud GPU上進行推理時提供更好的可用性和高性能。
在TensorFlow中構建模型時,對訓練和驗證數據的有效訪問是至關重要的。我們引入了TensorFlow Datasets,為包含各種數據類型(如圖像、文本、視頻等)的大量數據集提供了一個標準接口。
雖然仍然保留了傳統的基於會話的編程模型,但我們建議使用常規的Python開發和eager execution。tf.function可用於將代碼轉換成可遠程執行的、序列化和性能優化的圖形。此外,Autograph還可以將常規的Python控制流直接轉換為TensorFlow控制流。
如果你使用過TensorFlow 1.x,這裡有一個遷移到2.0的官方指南:
https://www.tensorflow.org/guide/migrate
TensorFlow 2.0也包括一個自動轉換腳本。
我們已經與谷歌內部和TensorFlow社區的許多用戶合作,測試了TensorFlow 2.0的功能,並對反饋感到非常興奮。例如,谷歌新聞團隊在TensorFlow 2.0中啟用了基於BERT的語言理解模型,從而極大地改進了新聞報導的覆蓋率。TensorFlow 2.0提供易於使用的API和快速實現新想法的靈活性,模型訓練和服務被無縫地集成到現有的基礎架構中。
而且,ML不僅是Python開發者專屬—JavaScript開發者可以使用TensorFlow.js進行訓練和推理。Swift語言的支持也正在進行中。
將Keras作為構建和訓練模型的中央高級API。 Keras提供了一些模型構建API,如順序列化、函數化、子類化以及立即執行(用於立即迭代和直觀調試)、tf.data(用於構建可擴展的輸入pipeline)等。
更靈活的資源分配策略:TF 2.0用戶將可以使用tf.distribute.StrategyAPI,通過最少的代碼修正來分配訓練策略,從而獲得出色的現成性能。TF 2.0支持Keras model.fit以及自定義訓練循環的分布式訓練,還提供多GPU支持,以及對多工作人員和Cloud TPU的實驗性支持。
建議使用函數,而不是會話。TF 2.0不鼓勵使用傳統的聲明式編程模型來構建圖形,再通過tf.Session執行,而是建議編寫常規Python函數來代替這一過程。使用tf.function裝飾器,可以將這些函數轉換為圖形,這些圖形可以遠程執行,序列化並針對性能進行優化。
實現tf.train.Optimizers和tf.keras.Optimizers的統一。對TF2.0使用tf.keras.Optimizers。作為公共API刪除了compute_gradients,使用GradientTape計算梯度。
AutoGraph將Python控制流轉換為TensorFlow表達式,允許用戶在有tf.function的函數中編寫常規Python語句。AutoGraph也適用於與tf.data,tf.distribute和tf.keras API一起使用的函數。
將交換格式統一為SavedModel。所有TensorFlow生態系統項目(TensorFlow Lite,TensorFlow JS,TensorFlow Serving,TensorFlow Hub)都接受SavedModels。模型狀態應保存到SavedModels或從SavedModels恢復。
一些API的更改:部分API符號被重命名或刪除,參數名稱也已更改。許多更改都是出於提高一致性和清晰性的考慮。TF 1.x版本API在compat.v1模塊中仍然可用。
清理了一些API:移除了tf.app,tf.flags和tf.logging以支持absl-py。不再使用如tf.global_variables_initializer和tf.get_global_step之類的輔助方法的全局變量。
自動混合精度圖形優化器簡化了將模型轉換為float 16的過程,更便於在Volta和Turing張量核心上進行加速。可以使用tf.train.experimental.enable_mixed_precision_graph_rewrite()包裝優化器類來啟用此功能。
添加環境變量TF_CUDNN_DETERMINISTIC。設置為TRUE或「 1」將強制選擇確定性cuDNN卷積和最大池算法。啟用此功能後,算法選擇過程本身也是確定性的。
這裡有一個方便的指南,了解如何有效使用TensorFlow 2.0中的所有新功能:
https://www.tensorflow.org/guide/effective_tf2
此外,為了簡化TensorFlow 2.0的入門工作,官方發布了幾個使用2.0 API的常用ML模型的參考實現:
https://www.tensorflow.org/resources/models-datasets
最後,兩個免費在線課程不容錯過:
https://www.coursera.org/learn/introduction-tensorflow
https://www.udacity.com/course/intro-to-tensorflow-for-deep-learning--ud187
https://medium.com/tensorflow/tensorflow-2-0-is-now-available-57d706c2a9abGitHub:
https://github.com/tensorflow/tensorflow/releases/tag/v2.0.0
更多閱讀:
TensorFlow 2.0 新鮮出爐!新版本,新架構,新特性
GitHub 12萬星!TensorFlow 2.0 Beta新鮮出爐,最終API已定
TensorFlow已死,TensorFlow萬歲!