在昨天凌晨舉行的谷歌I/O 2017大會(huì)上,谷歌除了宣傳了安卓8.0之外,更為重要的是著重談到了人工智能,于是第二代TPU也就應(yīng)運(yùn)而生。TPU是谷歌自主研發(fā)的一種轉(zhuǎn)為AI運(yùn)算服務(wù)的高性能處理器,其第一代產(chǎn)品已經(jīng)在AlphaGo這樣的人工智能當(dāng)中使用,主攻運(yùn)算性能。
第二代TPU相比較于初代主要是加深了人工智能在學(xué)習(xí)和推理方面的能力,至于性能的話,全新的谷歌TPU可以達(dá)到180 TFLOPs的浮點(diǎn)性能,和傳統(tǒng)的GPU相比提升15倍,更是CPU浮點(diǎn)性能的30倍。
另外谷歌還推出了一款叫做TPU pod的運(yùn)算陣列,最多可以包含64顆二代TPU,也就是說浮點(diǎn)性能可以達(dá)到驚人的11.5 PFLOPS。
從名字上我們可以看出,TPU的靈感來源于Google開源深度學(xué)習(xí)框架Tensor Flow,所以目前TPU還是只在Google內(nèi)部使用的一種芯片。
TPU 誕生
2011年,Google 意識(shí)到他們遇到了問題。他們開始認(rèn)真考慮使用深度學(xué)習(xí)網(wǎng)絡(luò)了,這些網(wǎng)絡(luò)運(yùn)算需求高,令他們的計(jì)算資源變得緊張。Google 做了一筆計(jì)算,如果每位用戶每天使用3分鐘他們提供的基于深度學(xué)習(xí)語音識(shí)別模型的語音搜索服務(wù),他們就必須把現(xiàn)有的數(shù)據(jù)中心擴(kuò)大兩倍。他們需要更強(qiáng)大、更高效的處理芯片。
他們需要什么樣的芯片呢?中央處理器(CPU)能夠非常高效地處理各種計(jì)算任務(wù)。但 CPU 的局限是一次只能處理相對來說很少量的任務(wù)。另一方面,圖像處理單元(GPU)在執(zhí)行單個(gè)任務(wù)時(shí)效率較低,而且所能處理的任務(wù)范圍更小。不過,GPU 的強(qiáng)大之處在于它們能夠同時(shí)執(zhí)行許多任務(wù)。例如,如果你需要乘3個(gè)浮點(diǎn)數(shù),CPU 會(huì)強(qiáng)過 GPU;但如果你需要做100萬次3個(gè)浮點(diǎn)數(shù)的乘法,那么 GPU 會(huì)碾壓 CPU。
GPU 是理想的深度學(xué)習(xí)芯片,因?yàn)閺?fù)雜的深度學(xué)習(xí)網(wǎng)絡(luò)需要同時(shí)進(jìn)行數(shù)百萬次計(jì)算。Google 使用 Nvidia GPU,但這還不夠,他們想要更快的速度。他們需要更高效的芯片。單個(gè) GPU 耗能不會(huì)很大,但是如果 Google 的數(shù)百萬臺(tái)服務(wù)器日夜不停地運(yùn)行,那么耗能會(huì)變成一個(gè)嚴(yán)重問題。
谷歌決定自己造更高效的芯片。
2016年5月,谷歌在I/O大會(huì)上首次公布了TPU(張量處理單元),并且稱這款芯片已經(jīng)在谷歌數(shù)據(jù)中心使用了一年之久,李世石大戰(zhàn) AlphaGo 時(shí),TPU 也在應(yīng)用之中,并且谷歌將 TPU 稱之為 AlphaGo 擊敗李世石的“秘密武器”。
第一代TPU內(nèi)部架構(gòu)
該圖顯示了TPU上的內(nèi)部結(jié)構(gòu),除了外掛的DDR3內(nèi)存,左側(cè)是主機(jī)界面。指令從主機(jī)發(fā)送到隊(duì)列中(沒有循環(huán))。這些激活控制邏輯可以根據(jù)指令多次運(yùn)行相同的指令。
TPU并非一款復(fù)雜的硬件,它看起來像是雷達(dá)應(yīng)用的信號(hào)處理引擎,而不是標(biāo)準(zhǔn)的X86衍生架構(gòu)。Jouppi說,盡管它有眾多的矩陣乘法單元,但是它GPU更精于浮點(diǎn)單元的協(xié)處理。另外,需要注意的是,TPU沒有任何存儲(chǔ)的程序,它可以直接從主機(jī)發(fā)送指令。
TPU上的DRAM作為一個(gè)單元并行運(yùn)行,因?yàn)樾枰@取更多的權(quán)重以饋送到矩陣乘法單元(算下來,吞吐量達(dá)到了64,000)。Jouppi并沒有提到是他們是如何縮放(systolic)數(shù)據(jù)流的,但他表示,使用主機(jī)軟件加速器都將成為瓶頸。
256×256陣列縮放數(shù)據(jù)流引擎,經(jīng)過矩陣乘法積累后實(shí)現(xiàn)非線性輸出
從第二張圖片可以看出,TPU有兩個(gè)內(nèi)存單元,以及一個(gè)用于模型中參數(shù)的外部DDR3 DRAM。參數(shù)進(jìn)來后,可從頂部加載到矩陣乘法單元中。同時(shí),可以從左邊加載激活(或從“神經(jīng)元”輸出)。那些以收縮的方式進(jìn)入矩陣單元以產(chǎn)生矩陣乘法,它可以在每個(gè)周期中進(jìn)行64,000次累加。
毋庸置疑,谷歌可能使用了一些新的技巧和技術(shù)來加快TPU的性能和效率。例如,使用高帶寬內(nèi)存或混合3D內(nèi)存。然而,谷歌的問題在于保持分布式硬件的一致性。
能夠進(jìn)行數(shù)據(jù)推理的第二代TPU
第一代的TPU只能用于深度學(xué)習(xí)的第一階段,而新版則能讓神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)做出推論。谷歌大腦研究團(tuán)隊(duì)主管Jeff Dean表示:“我預(yù)計(jì)我們將更多的使用這些TPU來進(jìn)行人工智能培訓(xùn),讓我們的實(shí)驗(yàn)周期變得更加快速?!?/p>
“在設(shè)計(jì)第一代TPU產(chǎn)品的時(shí)候,我們已經(jīng)建立了一個(gè)相對完善和出色的研發(fā)團(tuán)隊(duì)進(jìn)行芯片的設(shè)計(jì)研發(fā),這些研發(fā)人員也基本上都參與到了第二代TPU的研發(fā)工程中去。從研發(fā)的角度來看,第二代TPU相對于第一代來說,主要是從整體系統(tǒng)的角度,提升單芯片的性能,這比從無到有的設(shè)計(jì)第一代TPU芯片來說要簡單許多。所以我們才能有更多的精力去思考如何提升芯片的性能,如何將芯片更好的整合到系統(tǒng)中去,使芯片發(fā)揮更大的作用。”Dean在演講中表示。
未來,我們將繼續(xù)跟進(jìn)谷歌的進(jìn)度,以進(jìn)一步了解這一網(wǎng)絡(luò)架構(gòu)。但是在此之前,我們應(yīng)當(dāng)了解新一代TPU的架構(gòu)、性能以及工作方式,明白TPU是如何進(jìn)行超高性能計(jì)算的。在此次發(fā)布會(huì)上,谷歌并沒有展示新一代TPU的芯片樣片或者是更加詳細(xì)的技術(shù)規(guī)格,但是我們依舊能夠從目前所知的信息中對新一代TPU做出一些推測。
從此次公布的TPU圖片來看,第二代TPU看上去有點(diǎn)像Cray XT或者是XC開發(fā)板。從圖片上,我們不難發(fā)現(xiàn),相互連接的幾個(gè)芯片被焊接到了開發(fā)板上,同時(shí)保持了芯片之間以及芯片與外部的連接功能。整個(gè)板子上共有四個(gè)TPU芯片,正如我們之前所說,每一個(gè)單獨(dú)的芯片都可以達(dá)到180TFLOPs的浮點(diǎn)性能。
在開發(fā)板的左右兩側(cè)各有四個(gè)對外的接口,但是在板子的左側(cè)額外增加了兩個(gè)接口,這一形式使得整個(gè)板子看上去略顯突兀。如果未來每一個(gè)TPU芯片都能夠直接連接到存儲(chǔ)器上,就如同AMD即將推出的“Vega”處理器可以直接連接GPU一樣,這一布局就顯得非常有趣。左側(cè)多出的這兩個(gè)接口在未來可以允許TPU芯片直接連接存儲(chǔ)器,或者是直接連接到上行的高速網(wǎng)絡(luò)上以進(jìn)行更加復(fù)雜的運(yùn)算。
以上這些都是我們基于圖片的猜測,除非谷歌能夠透露更多的芯片信息。每一個(gè)TPU芯片都有兩個(gè)接口可以與外部的設(shè)備進(jìn)行連接,左側(cè)有兩個(gè)額外的接口對外開發(fā),可以允許開發(fā)者在此基礎(chǔ)上設(shè)計(jì)更多的功能,添加更多的擴(kuò)展,無論是連接本地存儲(chǔ)設(shè)備還是連接網(wǎng)絡(luò),這些功能在理論上都是可行的。(實(shí)現(xiàn)這些功能,谷歌只需要在這些接口之間建立相對松散可行的內(nèi)存共享協(xié)議即可。)
下圖展示了多個(gè)TPU板一種可能的連接形式,谷歌表示,這一模型可以實(shí)現(xiàn)高達(dá)11.5千萬億次的機(jī)器學(xué)習(xí)計(jì)算能力。
這一結(jié)果是如何得出的呢。上面這種連接方式,從外形上來看,非常像開放的計(jì)算機(jī)架構(gòu),或者是其他的一些東西??v向上來看,疊加了8個(gè)TPU板,橫向上看,并列了4個(gè)TPU板。目前我們無法斷定每一個(gè)開發(fā)板都是完整的TPU板或者是半個(gè)開發(fā)板,我們只能看到板子的一側(cè)有6個(gè)接口,另一側(cè)有2個(gè)接口。
值得注意的是,板子的中間采用了4個(gè)接口,而左右兩側(cè)采用了2個(gè)接口,并且在左右兩側(cè)也沒有見到與TPU開發(fā)板類似的外殼。對此,一個(gè)比較合理的解釋就是,左右兩側(cè)連接的是本地存儲(chǔ)器接口,而不是TPU芯片接口。
即便如此,我們依舊能看到至少32個(gè)TPU二代母板在運(yùn)行,這也意味著,有128個(gè)TPU芯片在同時(shí)運(yùn)行。經(jīng)過粗略的計(jì)算,整套系統(tǒng)的計(jì)算能力大概在11.5千萬億次。
舉個(gè)例子來說,如果這一運(yùn)算能力在未來能夠運(yùn)用到商業(yè)領(lǐng)域,谷歌現(xiàn)在進(jìn)行的大規(guī)模翻譯工作所采用的32個(gè)目前最先進(jìn)的GPU,在未來就可以縮減為4個(gè)TPU板,并能夠極大的縮減翻譯所需要的時(shí)間。
值得注意的是,上文所提到的TPU芯片不僅僅適用于浮點(diǎn)運(yùn)算,也同樣適用于高性能計(jì)算。
TPU的訓(xùn)練與學(xué)習(xí)
與第一代TPU相比,第二代TPU除了提高了計(jì)算能力之外,增加的最大的功能就是數(shù)據(jù)推理能力,不過這一推理模型必須先在GPU上進(jìn)行訓(xùn)練才可以。這一訓(xùn)練模式使得谷歌等開發(fā)廠商必須降低實(shí)驗(yàn)的速度,重塑訓(xùn)練模型,這將耗費(fèi)更長的時(shí)間,才能使機(jī)器獲得一定的數(shù)據(jù)推理能力。
正是因?yàn)槿绱?,在相對簡單和單一的設(shè)備上先進(jìn)行訓(xùn)練,然后將結(jié)果帶入帶更為復(fù)雜的環(huán)境中去,從而獲得更高層次的數(shù)據(jù)推理能力,這一迭代工程是必不可少的。未來,英特爾推出的用于人工智能的GPU也將會(huì)采用這一迭代模式。英偉達(dá)的Volta GPU也是如此。
擁有“tensor core”的英偉達(dá)Volta GPU擁有超高速的機(jī)器學(xué)習(xí)與訓(xùn)練能力,未來可能達(dá)到120萬億次的單設(shè)備計(jì)算能力,這一運(yùn)算能力與去年上市的Pascal GPU相比,在計(jì)算能力上提升了大約40%。但是像谷歌推出的TPU這種超高速的計(jì)算能力所帶來的影響,我們即便很難在生活中切身的體會(huì)到,但是GPU越來越快的計(jì)算能力依舊令人印象深刻,也離我們更近。
Dean表示,英偉達(dá)Volta所采用的架構(gòu)是非常有趣的,這一架構(gòu)使得通過核心矩陣來加速應(yīng)用的目的成為可能。從一定程度上來說,谷歌推出的第一代TPU也采用了類似的想法,實(shí)際上,這些技術(shù)現(xiàn)在依然在機(jī)器學(xué)習(xí)的流程中被采用?!澳軌蚣涌炀€性計(jì)算能力總是非常有用的?!盌ean強(qiáng)調(diào)。
姑且不考慮硬件方面的影響,依然存在著許多能夠吸引用戶的地方。與那些始終保持機(jī)密的項(xiàng)目不同,未來,谷歌將會(huì)將TPU技術(shù)運(yùn)用到谷歌云平臺(tái)。谷歌的高級(jí)研究員Jeff Dean表示,他們不希望通過各種手段來限制競爭,希望能夠?yàn)門PU提供更多的可能與空間,這樣在未來才能夠與Volta GPU以及Skylake Xeons競爭。
Dean認(rèn)為,平臺(tái)也應(yīng)當(dāng)為開發(fā)者提供更多能夠建立和執(zhí)行各自特有模型的機(jī)會(huì),而不是限制開發(fā)者的思維。未來,谷歌將會(huì)在云平臺(tái)上為那些對開放的科研項(xiàng)目感興趣并不斷推進(jìn)機(jī)器學(xué)習(xí)的研究團(tuán)隊(duì)提供超過1000個(gè)TPU。
Dean表示,現(xiàn)在在谷歌內(nèi)部,在進(jìn)行機(jī)器訓(xùn)練和學(xué)習(xí)的時(shí)候,也會(huì)同時(shí)采用GPU和CPU,在同一設(shè)備上也是如此,這樣能夠更好的保證平衡。但是對于新一代的TPU芯片,目前來說,訓(xùn)練和學(xué)習(xí)時(shí)候的功率還不能夠準(zhǔn)確的估計(jì),但是值得肯定的是,功能肯定是低于Volta GPU。由于系統(tǒng)在功能上能夠滿足高性能計(jì)算和64位高性能計(jì)算,這就使得工作負(fù)載的計(jì)算異常復(fù)雜。英偉達(dá)的GPU在使用過程中也會(huì)遇到類似的問題。未來,想要更好的解決這一問題,需要我們跟工程師繼續(xù)努力。
在這一點(diǎn)上,Dean也承認(rèn):“與第一代TPU芯片整數(shù)計(jì)算的方式不同,第二代芯片能夠進(jìn)行浮點(diǎn)運(yùn)算。所以在芯片進(jìn)行學(xué)習(xí)訓(xùn)練的過程中,只需要采用固定的模型即可,不需要變動(dòng)算法。工程師可以采用相同的浮點(diǎn)運(yùn)算方式,這在很大程度上降低了工作量?!?/p>
除了英偉達(dá)和英特爾之外,谷歌將其定制的硬件產(chǎn)品推向市場,對于企業(yè)來說未嘗不是一件好事。因?yàn)門PU來說對于市場來說還是相當(dāng)邊緣化的技術(shù)。當(dāng)?shù)诙鶷PU產(chǎn)品應(yīng)用到谷歌云平臺(tái)之后,谷歌將會(huì)向大量的用戶推送培訓(xùn),這將會(huì)更好的推動(dòng)這一技術(shù)的發(fā)展。
對于哪些對于谷歌為什么不將芯片進(jìn)行商業(yè)化的人來說,以上的內(nèi)容大概能夠給出一個(gè)回答。隨著人工智能和神經(jīng)學(xué)習(xí)技術(shù)的不斷發(fā)展,TPU將能夠在谷歌云上大展拳腳,成為推動(dòng)技術(shù)進(jìn)步的一大力量。
TPU對谷歌意味著什么?
谷歌專門開發(fā)的應(yīng)用于深度神經(jīng)網(wǎng)絡(luò)的軟件引擎。谷歌表示,按照摩爾定律的增長速度,現(xiàn)在的TPU的計(jì)算能力相當(dāng)于未來七年才能達(dá)到的計(jì)算水平,每瓦能為機(jī)器學(xué)習(xí)提供更高的量級(jí)指令,這意味它可以用更少的晶體進(jìn)行每一個(gè)操作,也就是在一秒內(nèi)進(jìn)行更多的操作。并且谷歌將其與Deep learning系統(tǒng)平臺(tái)TensorFlow進(jìn)行了深度綁定,可以獲得更好的支持,做更強(qiáng)的生態(tài),包括搜索、無人駕駛汽車、智能語音等100多個(gè)需要使用機(jī)器學(xué)習(xí)技術(shù)的項(xiàng)目。
TPU 是深度學(xué)習(xí)的未來嗎?
深度學(xué)習(xí)計(jì)算中的芯片部署都不是零和博弈?,F(xiàn)實(shí)世界的深度學(xué)習(xí)網(wǎng)絡(luò)需要系統(tǒng)的 GPU 與其他 GPU 或諸如 Google TPU 之類的 ASIC 通信。GPU 是理想的工作環(huán)境,具有深度學(xué)習(xí)所需的靈活性。但是,當(dāng)完全專用于某個(gè)軟件庫或平臺(tái)時(shí),則 ASIC 是最理想的。
谷歌的 TPU 顯然符合這樣的要求。TPU 的卓越性能使得 TensorFlow 和 TPU 很可能是一起升級(jí)的。雖然谷歌官方已經(jīng)多次明確表示,他們不會(huì)對外銷售 TPU。不過,利用 Google 云服務(wù)做機(jī)器學(xué)習(xí)解決方案的第三方可以得益于 TPU 卓越性能的優(yōu)勢。
智能芯片市場格局一變再變,谷歌 TPU 的出現(xiàn)讓面向神經(jīng)網(wǎng)絡(luò)/深度學(xué)習(xí)特定領(lǐng)域加速的芯片趨勢更加明顯。高端 AI 應(yīng)用需要強(qiáng)大的芯片做支撐。軟硬件缺了哪一塊中國的智能生態(tài)也發(fā)展不起來。中國處理器學(xué)術(shù)和工程都在不斷提高,我們期待中國芯早日出現(xiàn)在世界舞臺(tái)與國際同行競技。
聯(lián)系客服