谷歌第一次向全世界介紹TPU(Tensor Processing Unit)時,其背后的戰(zhàn)略方向已經(jīng)很清楚了:通過設(shè)計(jì)并使用專用的硬件來提高機(jī)器學(xué)習(xí)的速度。使用商品化的GPU來訓(xùn)練機(jī)器學(xué)習(xí)模型,使用定制的TPU來部署那些經(jīng)過定制的模型。
新一代谷歌TPU的設(shè)計(jì)旨在處理這兩項(xiàng)任務(wù):訓(xùn)練和部署——在同一個芯片上。無論其獨(dú)立運(yùn)行還是與其他TPU向外擴(kuò)展構(gòu)成一個名為“TPU pod”的小型集群時,新一代TPU的速度也更快。
但是,使機(jī)器學(xué)習(xí)更快速并不是這種設(shè)計(jì)的唯一好處。TPU,尤其是這種新形式,構(gòu)成了另一項(xiàng)內(nèi)容,即谷歌構(gòu)建端對端機(jī)器學(xué)習(xí)流程,涵蓋從數(shù)據(jù)輸入到部署訓(xùn)練模型的所有內(nèi)容。
機(jī)器學(xué)習(xí):一條流程貫穿其中
目前,機(jī)器學(xué)習(xí)的最大障礙之一是,為數(shù)據(jù)輸入、規(guī)范化、模型訓(xùn)練、模型和部署提供一個完整的流程是非常困難的。這些碎片化的流程仍然高度分散,不協(xié)調(diào)。像百度這樣的公司已經(jīng)暗示過想要建立一個簡單的、統(tǒng)一的、無需包裝的的解決方案,但是到目前為止,這只是一個概念。
這種解決方案最有可能出現(xiàn)在云計(jì)算中。隨著時間的推移,越來越多的機(jī)器學(xué)習(xí)數(shù)據(jù)(以及其他相關(guān)的東西)將會默認(rèn)被保存在云上。而且硬件也需要產(chǎn)生一個可操作的結(jié)果。給人們一個端對端的、在云上的機(jī)器學(xué)習(xí)工作流,默認(rèn)情況下只有幾個按鈕的話,人們會很樂意在上面構(gòu)建機(jī)器學(xué)習(xí)應(yīng)用的。
這樣的方式已經(jīng)快要實(shí)現(xiàn)了,谷歌的愿景是每一個階段都能夠以盡可能快的速度在云中執(zhí)行,以盡可能快的速度接近數(shù)據(jù)。通過TPU,谷歌還試圖提供多階段的定制硬件加速,可以按需擴(kuò)展。
新的TPU旨在以多種方式促進(jìn)流程加速,一種加速來自于將多個TPU組合起來的能力,另一種方式是能夠在同一塊硅片上訓(xùn)練和部署模型。對于后一種情況,隨著新數(shù)據(jù)的出現(xiàn),對模型進(jìn)行增量再培訓(xùn)會變得更加容易,因?yàn)閿?shù)據(jù)不需要移動太多。
這種優(yōu)化——在數(shù)據(jù)上運(yùn)行以便加快操作速度——與其他機(jī)器學(xué)習(xí)性能的改進(jìn)是一致的,比如一些推薦的Linux內(nèi)核補(bǔ)丁和用于機(jī)器學(xué)習(xí)數(shù)據(jù)訪問的通用API。
你是否愿意將自己捆綁在Tensor Flow?
谷歌的計(jì)劃可能會有一個缺點(diǎn):只有當(dāng)你使用正確的機(jī)器學(xué)習(xí)框架時,TPU所提供的性能提升才會產(chǎn)生作用,也就是谷歌自己的Tensor Flow。
這并不是說Tensor Flow是一個糟糕的框架,事實(shí)上,它是相當(dāng)不錯的。但它只是眾多框架中的一個,而每個框架適合不同的需求和用例。因此,TPU只支持Tensor Flow的限制意味著如果你想從谷歌的機(jī)器學(xué)習(xí)云中獲得最大的性能,你就必須使用它,無論它是否合適。其他的框架對于特定的工作來說可能更方便,但它可能不會很快的對預(yù)測進(jìn)行訓(xùn)練和服務(wù),因?yàn)樗荒茉贕PU上運(yùn)行。
這并沒有排除谷歌引入其他硬件的可能——如客戶可重新編程的FPGA,會使不直接由谷歌發(fā)起的框架同樣具有優(yōu)勢。
但對于大多數(shù)人來說,擁有一個可管理的、基于云的“一站式”機(jī)器學(xué)習(xí)工作流程所帶來的便利,遠(yuǎn)遠(yuǎn)超過TPU所帶來的一些不便之處。所以,Tensor Flow的優(yōu)勢仍然是顯而易見的。