TensorFlow 2.0馬上要來(lái)了,還不速來(lái)了解下新架構(gòu)?
作為全球最受歡迎的機(jī)器學(xué)習(xí)開(kāi)源框架,在TensorFlow 發(fā)展的3年里,見(jiàn)證了機(jī)器學(xué)習(xí)和人工智能領(lǐng)域的快速發(fā)展和變化;與人類(lèi)的孩子一樣,不斷學(xué)習(xí),遭到批評(píng),遇到對(duì)手,走向更大、更廣闊的環(huán)境。
而TensorFlow 2.0作為一個(gè)重要的里程碑,將更加關(guān)注其“易用性”,更注重使用的低門(mén)檻,旨在讓每個(gè)人都能應(yīng)用機(jī)器學(xué)習(xí)技術(shù)。
那么在架構(gòu)方面,又會(huì)有何不同呢?話不多說(shuō),來(lái)看下新架構(gòu)圖:
在過(guò)去的幾年中,開(kāi)發(fā)團(tuán)隊(duì)為T(mén)ensorFlow添加了許多組件,而在2.0版本中,這些組件將被打包成一個(gè)綜合平臺(tái),可支持機(jī)器學(xué)習(xí)的工作流程(從訓(xùn)練到部署)。正如上圖所示。
盡管新架構(gòu)中的訓(xùn)練部分主要關(guān)注Python API,但是TensorFlow.js還支持訓(xùn)練模型。其他語(yǔ)言綁定(language binding)也有不同程度的支持,包括Swift、R和Julia等。
最近,官方宣布Keras作為一個(gè)用戶友好的機(jī)器學(xué)習(xí)API標(biāo)準(zhǔn),將成為用于構(gòu)建和訓(xùn)練模型的高級(jí)API。 Keras API讓用戶可以輕松開(kāi)始使用TensorFlow。尤其重要的是,Keras提供了幾個(gè)模型構(gòu)建API(順序,功能和子類(lèi)),因此您可以為項(xiàng)目選擇正確的抽象級(jí)別。
Keras API使得上手TensorFlow非常容易。重要的是,Keras提供了幾個(gè)模型構(gòu)建API(Sequential、Functional以及Subclassing),因此用戶可以選擇正確的抽象化(abstraction)級(jí)別,TensorFlow的實(shí)現(xiàn)包含增強(qiáng)功能,包括eager execution、立即迭代(immediate iteration)和直觀調(diào)試(intuitive debugging),以及tf.data,用于構(gòu)建可擴(kuò)展的輸入pipeline。
TensorFlow的實(shí)現(xiàn)包含增強(qiáng)功能,包括急切執(zhí)行,立即迭代和直觀調(diào)試,以及tf.data,用于構(gòu)建可擴(kuò)展的輸入管道。
以下是一個(gè)工作流程示例:
1、使用tf.data加載數(shù)據(jù)。使用輸入管道讀取訓(xùn)練數(shù)據(jù),輸入管道使用tf.data創(chuàng)建。利用tf.feature_column描述特征,如分段和特征交叉。此外還支持內(nèi)存數(shù)據(jù)的便捷輸入(如NumPy)。
2、使用tf.keras構(gòu)建、訓(xùn)練并驗(yàn)證模型,或者使用Premade Estimators。Keras與TensorFlow的其余部分緊密集成,因此用戶可以隨時(shí)訪問(wèn)TensorFlow的函數(shù)。如線性或邏輯回歸、梯度上升樹(shù)、隨機(jī)森林等也可以直接使用(使用tf.estimatorAPI實(shí)現(xiàn))。如果不想從頭開(kāi)始訓(xùn)練模型,用戶也可以很快利用遷移學(xué)習(xí)來(lái)訓(xùn)練使用TensorFlow Hub模塊的Keras或Estimator模型。
3、快速執(zhí)行運(yùn)行和調(diào)試過(guò)程,然后使用tf.function充分利用圖形的優(yōu)勢(shì)。在默認(rèn)情況下,TensorFlow 2.0按快速執(zhí)行方式運(yùn)行,以便于順利調(diào)試。此外,tf.function注釋可以方便地將Python程序轉(zhuǎn)換為T(mén)ensorFlow圖形。此過(guò)程保留了1.x TensorFlow基于圖形的執(zhí)行的所有優(yōu)點(diǎn):性能優(yōu)化,遠(yuǎn)程執(zhí)行以及方便序列化、導(dǎo)出和部署的能力,同時(shí)實(shí)現(xiàn)了在Python中表達(dá)程序的靈活性和易用性。
4、使用分布式策略進(jìn)行分布式訓(xùn)練。對(duì)于大型機(jī)器學(xué)習(xí)訓(xùn)練任務(wù),分布式策略API可以輕松地在不同硬件配置上分配和訓(xùn)練模型,無(wú)需更改模型的定義。由于TensorFlow支持各種硬件加速器,如CPU,GPU和TPU,因此用戶可以將訓(xùn)練負(fù)載分配到單節(jié)點(diǎn)/多加速器以及多節(jié)點(diǎn)/多加速器配置上(包括TPU Pod)。這個(gè)API支持多種群集化配置,也提供了在本地或云環(huán)境中部署Kubernetes群集訓(xùn)練的模板。
5、導(dǎo)出到Saved Model。TensorFlow將對(duì)Saved Model進(jìn)行標(biāo)準(zhǔn)化,作為T(mén)ensorFlow服務(wù)的一部分,他將成為T(mén)ensorFlow Lite、TensorFlow.js、TensorFlow Hub等格式的可互換格式。
構(gòu)建模型,如此簡(jiǎn)單!
TensorFlow始終為生產(chǎn)提供了直接部署方式。無(wú)論是部署在服務(wù)器、邊緣設(shè)備還是Web上,TensorFlow都可以讓用戶對(duì)模型實(shí)現(xiàn)輕松訓(xùn)練和部署。無(wú)論用戶使用何種語(yǔ)言或平臺(tái)。在TensorFlow 2.0中,我們通過(guò)標(biāo)準(zhǔn)化互換格式和API對(duì)齊來(lái)提高跨平臺(tái)和組件的兼容性。
訓(xùn)練并保存模型后,可以直接在應(yīng)用程序中執(zhí)行,也可以使用其中一個(gè)部署庫(kù)為其提供服務(wù):
TensorFlow服務(wù):TensorFlow庫(kù),允許通過(guò)HTTP / REST或gRPC /協(xié)議緩沖區(qū)提供模型。
TensorFlow Lite:TensorFlow針對(duì)移動(dòng)和嵌入式設(shè)備的輕量級(jí)解決方案提供了在Android,iOS和嵌入式系統(tǒng)(如Raspberry Pi和Edge TPU)上部署模型的功能。
TensorFlow.js:允許在JavaScript環(huán)境下部署模型,如在Web瀏覽器或服務(wù)器端通過(guò)Node.js實(shí)現(xiàn)部署。TensorFlow.js還支持使用類(lèi)似Keras的API在JavaScript中定義模型并直接在Web瀏覽器中進(jìn)行訓(xùn)練。
TensorFlow還支持其他語(yǔ)言,包括C,Java,Go,C#,Rust,Julia,R等。
功能強(qiáng)大的面向研究的實(shí)驗(yàn)環(huán)境
TensorFlow 2.0集成了許多功能,可以在不損失速度和性能的情況下定義和訓(xùn)練最先進(jìn)的模型:
Keras Functional API和Model Subclassing API:可以創(chuàng)建復(fù)雜的拓?fù)?,包括使用殘差層,自定義多輸入/輸出模型以及強(qiáng)制寫(xiě)入的前向傳遞。
自定義訓(xùn)練邏輯:使用tf.GradientTape和tf.custom_gradient對(duì)梯度計(jì)算進(jìn)行細(xì)粒度控制。
為了獲得更大的靈活性和可控性,低級(jí)的TensorFlowAPI是始終可用的,并可與更高級(jí)的抽象概念工具結(jié)合使用,以實(shí)現(xiàn)完全可定制的邏輯。
TensorFlow 2.0帶來(lái)了一些新增功能,允許研究人員和高級(jí)用戶進(jìn)行實(shí)驗(yàn),使用豐富的擴(kuò)展,如Ragged Tensors,TensorFlow Probability,Tensor2Tensor等。
除了這些功能外,TensorFlow還提供了易于執(zhí)行的簡(jiǎn)單原型設(shè)計(jì)和調(diào)試,分布式策略API和AutoGraph,可以進(jìn)行大規(guī)模訓(xùn)練,并支持TPU,這些都使TensorFlow 2.0成為一個(gè)易于使用、可定制且高度可擴(kuò)展的平臺(tái),可用于實(shí)現(xiàn)最先進(jìn)的技術(shù),進(jìn)行機(jī)器學(xué)習(xí)研究,并將研究轉(zhuǎn)化為生產(chǎn)流程。
TensorFlow 1.x和2.0之間的差異
自從首次開(kāi)源TensorFlow以來(lái),我們已經(jīng)發(fā)布了多個(gè)版本的API迭代。隨著機(jī)器學(xué)習(xí)的快速發(fā)展,現(xiàn)在TensorFlow已經(jīng)發(fā)展壯大,支持多樣化的用戶組合,可以滿足各種需求。使用TensorFlow 2.0,用戶有機(jī)會(huì)根據(jù)語(yǔ)義版本控制來(lái)實(shí)現(xiàn)平臺(tái)的清理和模塊化。
以下是一些較大的變化:
移除了隊(duì)列運(yùn)行器以支持tf.data。
移除了圖表集合。
變量處理方式的變化。
可對(duì)API符號(hào)進(jìn)行移動(dòng)和重命名
更高的兼容性和連續(xù)性
為了讓用戶向TensorFlow 2.0的遷移更加容易,我們將發(fā)布一個(gè)轉(zhuǎn)換工具,它可以對(duì)TensorFlow 1.x Python代碼進(jìn)行更新,以使用TensorFlow2.0兼容的API,或者對(duì)無(wú)法自動(dòng)轉(zhuǎn)換的代碼予以標(biāo)記。
當(dāng)然,并非所有的更改都可以完全自動(dòng)完成。比如,某些已被棄用的API沒(méi)有直接的可替代對(duì)象。所以我們引入了tensorflow.compat.v1兼容性模塊,該模塊保留了對(duì)完整TensorFlow 1.x API(不包括tf.contrib)的支持。該模塊將在整個(gè)TensorFlow 2.x的生命周期內(nèi)保持維護(hù),并允許使用TensorFlow 1.x編寫(xiě)的代碼維護(hù)功能。
此外,Saved Model或保存的GraphDefs將向后兼容。使用1.x版本保存的SavedModels將繼續(xù)能夠在2.x中加載和執(zhí)行。但是,2.0中的原始檢查點(diǎn)中的變量名稱可能會(huì)發(fā)生更改,因此,使用已轉(zhuǎn)換為2.0版本代碼中的2.0之前版本的檢查點(diǎn)可能無(wú)法正常工作。
我們相信,TensorFlow 2.0將為開(kāi)發(fā)者社區(qū)帶來(lái)巨大利益,為了讓這次版本轉(zhuǎn)換變得盡量簡(jiǎn)單方便,我們投入了大量精力。
但是,我們也認(rèn)識(shí)到,版本遷移需要時(shí)間,我們非常關(guān)心社區(qū)成員目前對(duì)學(xué)習(xí)和使用TensorFlow的投入。我們將在最后的1.x版本中提供12個(gè)月的安全補(bǔ)丁,以便為現(xiàn)有用戶提供充足的時(shí)間進(jìn)行過(guò)渡,并順利獲得TensorFlow2.0的所有優(yōu)勢(shì)。
-
加速器
+關(guān)注
關(guān)注
2文章
796瀏覽量
37838 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8406瀏覽量
132558 -
tensorflow
+關(guān)注
關(guān)注
13文章
329瀏覽量
60527
原文標(biāo)題:【官方發(fā)布】一圖看懂TensorFlow 2.0新架構(gòu)
文章出處:【微信號(hào):AI_era,微信公眾號(hào):新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論