TensorFlow 2.0正式版官宣!深度集成Keras

??新智元報道??
來源:medium、GitHub
編輯:小芹、大明
【新智元導(dǎo)讀】TensorFlow 2.0正式版終于發(fā)布了!深度集成Keras,更簡單、更易用,GPU訓(xùn)練性能提升。這是一個革命性的新版本,歡迎來到 TensorFlow 2.0!>>>?人工智能改變中國,我們還要跨越這三座大山 | 獻禮 70 周年
TensorFlow 2.0正式版終于發(fā)布了!
谷歌今天宣布,開源機器學(xué)習(xí)庫TensorFlow 2.0現(xiàn)在可供公眾使用。
TensorFlow 2.0的Alpha版本今年初在TensorFlow開發(fā)者大會上首次發(fā)布,經(jīng)過近7個月的不斷修改、更新,TensorFlow?2.0正式版可謂是千呼萬喚始出來。

作為最受歡迎的機器學(xué)習(xí)庫之一,自2015年谷歌大腦團隊發(fā)布TensorFlow以來,TensorFlow框架已被下載超過4000萬次。
為了提高易用性,TensorFlow 2.0進行了許多修改,如取消了一些被認(rèn)為是多余的API,并緊密集成和依賴tf.keras作為中央高級API。TensorFlow與Keras深度學(xué)習(xí)庫的集成化最初始于2017年2月發(fā)布的TensorFlow1.0,本次更新讓二者的集成程度進一步提高。
此外,當(dāng)在Nvidia的Volta和Turing GPU上運行時,新版本的性能表現(xiàn)可以提高三倍。
下面,我們帶來對TensorFlow 2.0?新特性的具體介紹。
TensorFlow 2.0專注于簡單性和易用性,主要更新如下:
?
可使用Keras輕松進行模型構(gòu)建,可立即執(zhí)行,直觀調(diào)試。
在任何平臺上的生產(chǎn)中都可以進行穩(wěn)健的模型部署。
提供強大的研究實驗支持。
減少了重復(fù),移除了不建議使用的端點,簡化了API。

TensorFlow 2.0使得機器學(xué)習(xí)應(yīng)用的開發(fā)更加容易。通過將Keras緊密集成到TensorFlow中、默認(rèn)eager execution,以及Python函數(shù)執(zhí)行,TensorFlow 2.0開發(fā)應(yīng)用程序的經(jīng)驗會讓Python開發(fā)者很熟悉。對于那些想要突破機器學(xué)習(xí)邊界的研究人員來說,我們在TensorFlow的底層API上投入了大量的精力:我們現(xiàn)在導(dǎo)出了所有內(nèi)部使用的操作,并且為諸如變量和checkpoint等關(guān)鍵概念提供了可繼承的接口。允許用戶構(gòu)建TensorFlow的內(nèi)部構(gòu)件,而無需重建TensorFlow。

能夠在各種runtimes(包括云、web、瀏覽器和Node.js,移動和嵌入式系統(tǒng))上運行模型,我們對SavedModel文件格式進行了標(biāo)準(zhǔn)化。這允許用戶使用TensorFlow運行模型,使用TensorFlow服務(wù)部署模型,使用TensorFlow Lite在移動和嵌入式系統(tǒng)上使用模型,使用TensorFlow.js在瀏覽器或Node.js上訓(xùn)練和運行模型。
對于高性能的訓(xùn)練場景,你可以使用 Distribution Strategy API以最小的代碼更改來分布訓(xùn)練,并獲得出色的開箱即用性能。它通過 Keras 的 Model.fit 支持分布式訓(xùn)練,還支持自定義訓(xùn)練循環(huán)。此外,現(xiàn)在可以使用多GPU支持,Cloud TPU支持將在未來發(fā)布。
查看分布式訓(xùn)練指南了解更多:
https://www.tensorflow.org/guide/distributed_training
TensorFlow 2.0在GPU上提供了許多性能改進。TensorFlow 2.0通過在Volta和Turing GPU上使用混合精度和幾行代碼(例如在ResNet-50和BERT中使用的),將訓(xùn)練性能提高了 3 倍。TensorFlow 2.0與TensorRT緊密集成,并使用改進的API在谷歌云上的NVIDIA T4 Cloud GPU上進行推理時提供更好的可用性和高性能。
在TensorFlow中構(gòu)建模型時,對訓(xùn)練和驗證數(shù)據(jù)的有效訪問是至關(guān)重要的。我們引入了TensorFlow Datasets,為包含各種數(shù)據(jù)類型(如圖像、文本、視頻等)的大量數(shù)據(jù)集提供了一個標(biāo)準(zhǔn)接口。
雖然仍然保留了傳統(tǒng)的基于會話的編程模型,但我們建議使用常規(guī)的Python開發(fā)和eager execution。tf.function可用于將代碼轉(zhuǎn)換成可遠(yuǎn)程執(zhí)行的、序列化和性能優(yōu)化的圖形。此外,Autograph還可以將常規(guī)的Python控制流直接轉(zhuǎn)換為TensorFlow控制流。
如果你使用過TensorFlow 1.x,這里有一個遷移到2.0的官方指南:
https://www.tensorflow.org/guide/migrate
TensorFlow 2.0也包括一個自動轉(zhuǎn)換腳本。
我們已經(jīng)與谷歌內(nèi)部和TensorFlow社區(qū)的許多用戶合作,測試了TensorFlow 2.0的功能,并對反饋感到非常興奮。例如,谷歌新聞團隊在TensorFlow 2.0中啟用了基于BERT的語言理解模型,從而極大地改進了新聞報道的覆蓋率。TensorFlow 2.0提供易于使用的API和快速實現(xiàn)新想法的靈活性,模型訓(xùn)練和服務(wù)被無縫地集成到現(xiàn)有的基礎(chǔ)架構(gòu)中。
而且,ML不僅是Python開發(fā)者專屬—JavaScript開發(fā)者可以使用TensorFlow.js進行訓(xùn)練和推理。Swift語言的支持也正在進行中。
?主要特點和功能改進
?
將Keras作為構(gòu)建和訓(xùn)練模型的中央高級API。?Keras提供了一些模型構(gòu)建API,如順序列化、函數(shù)化、子類化以及立即執(zhí)行(用于立即迭代和直觀調(diào)試)、tf.data(用于構(gòu)建可擴展的輸入pipeline)等。
?
更靈活的資源分配策略:TF 2.0用戶將可以使用tf.distribute.StrategyAPI,通過最少的代碼修正來分配訓(xùn)練策略,從而獲得出色的現(xiàn)成性能。TF 2.0支持Keras model.fit以及自定義訓(xùn)練循環(huán)的分布式訓(xùn)練,還提供多GPU支持,以及對多工作人員和Cloud TPU的實驗性支持。
?
建議使用函數(shù),而不是會話。TF 2.0不鼓勵使用傳統(tǒng)的聲明式編程模型來構(gòu)建圖形,再通過tf.Session執(zhí)行,而是建議編寫常規(guī)Python函數(shù)來代替這一過程。使用tf.function裝飾器,可以將這些函數(shù)轉(zhuǎn)換為圖形,這些圖形可以遠(yuǎn)程執(zhí)行,序列化并針對性能進行優(yōu)化。
?
實現(xiàn)tf.train.Optimizers和tf.keras.Optimizers的統(tǒng)一。對TF2.0使用tf.keras.Optimizers。作為公共API刪除了compute_gradients,使用GradientTape計算梯度。
?
AutoGraph將Python控制流轉(zhuǎn)換為TensorFlow表達式,允許用戶在有tf.function的函數(shù)中編寫常規(guī)Python語句。AutoGraph也適用于與tf.data,tf.distribute和tf.keras API一起使用的函數(shù)。
?
將交換格式統(tǒng)一為SavedModel。所有TensorFlow生態(tài)系統(tǒng)項目(TensorFlow Lite,TensorFlow JS,TensorFlow Serving,TensorFlow Hub)都接受SavedModels。模型狀態(tài)應(yīng)保存到SavedModels或從SavedModels恢復(fù)。
?
一些API的更改:部分API符號被重命名或刪除,參數(shù)名稱也已更改。許多更改都是出于提高一致性和清晰性的考慮。TF 1.x版本API在compat.v1模塊中仍然可用。
?
清理了一些API:移除了tf.app,tf.flags和tf.logging以支持absl-py。不再使用如tf.global_variables_initializer和tf.get_global_step之類的輔助方法的全局變量。
?
自動混合精度圖形優(yōu)化器簡化了將模型轉(zhuǎn)換為float 16的過程,更便于在Volta和Turing張量核心上進行加速。可以使用tf.train.experimental.enable_mixed_precision_graph_rewrite()包裝優(yōu)化器類來啟用此功能。
?
添加環(huán)境變量TF_CUDNN_DETERMINISTIC。設(shè)置為TRUE或“ 1”將強制選擇確定性cuDNN卷積和最大池算法。啟用此功能后,算法選擇過程本身也是確定性的。
這里有一個方便的指南,了解如何有效使用TensorFlow 2.0中的所有新功能:
https://www.tensorflow.org/guide/effective_tf2
此外,為了簡化TensorFlow 2.0的入門工作,官方發(fā)布了幾個使用2.0 API的常用ML模型的參考實現(xiàn):
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
GitHub:
https://github.com/tensorflow/tensorflow/releases/tag/v2.0.0
更多閱讀:
TensorFlow 2.0 ?新鮮出爐!新版本,新架構(gòu),新特性
GitHub 12萬星!TensorFlow 2.0 Beta新鮮出爐,最終API已定

