谷歌前些天發(fā)布了專為其深度學(xué)習(xí)算法Tensor Flow設(shè)計(jì)的專用集成芯片,,命名為張量處理單元(Tensor Processing Unit:TPU),,我們都知道,,相對(duì)于谷歌的軟件產(chǎn)品來說,它自行設(shè)計(jì)的硬件產(chǎn)品的登場往往沒有那么高調(diào),,偶爾會(huì)以雷聲大雨點(diǎn)小的結(jié)局收尾。但這次的新 硬件涉及的領(lǐng)域是谷歌極為擅長和領(lǐng)先的深度學(xué)習(xí),。結(jié)合近期谷歌和各大科技巨頭在AI方面的動(dòng)向,,不難猜到這塊芯片對(duì)于谷歌和AI開發(fā)者來說意義重大,,并且會(huì)對(duì)產(chǎn)業(yè)起到深遠(yuǎn)的影響。但谷歌為什么要在通用硬件性能已經(jīng)十分強(qiáng)大的現(xiàn)在仍然會(huì)為了深度學(xué)習(xí)算法專門開發(fā)一款硬件,,而這塊芯片對(duì)其他巨頭來說又意味著什 么,,解釋起來就不是一件那么容易的事了。
深度學(xué)習(xí)的運(yùn)算流程
對(duì)于任何運(yùn)算來說,, 更換新硬件無非是為了兩個(gè)目的:更快的速度和更低的能耗,。而深度學(xué)習(xí)這個(gè)看起來玄乎的詞語,究其本質(zhì)也不過是大量的運(yùn)算,。我們都知道那句老話:萬能工具的 效率永遠(yuǎn)比不上專用工具,。無論是CPU、GPU還是FPGA,,其屬性都算是一種通用工具,。因?yàn)樗鼈兌伎梢詰?yīng)付許多不同的任務(wù)。而專用的TPU自然從道理上 來說就應(yīng)該會(huì)比前面幾種硬件的效率都要高,。這里的效率高,,既是指速度更快,也是指能耗會(huì)更低,。
但我們不能光講道理,,也要擺出一些數(shù)據(jù)。 實(shí)際上,,Xilinx曾經(jīng)表示在特定的FPGA開發(fā)環(huán)境下深度學(xué)習(xí)的能效比會(huì)達(dá)到CPU/GPU架構(gòu)的25倍,,不是一倍兩倍, 是25倍,!同學(xué)們可以拿出紙和筆了,,讓我們舉一個(gè)實(shí)際的例子來講講這種效率提升的原因:以在深度神經(jīng)網(wǎng)絡(luò)(DNN)上進(jìn)行的圖像識(shí)別為例子,網(wǎng)絡(luò)的整個(gè)結(jié) 構(gòu)大致是這樣的:
圖片來源:gitbooks.io
其中除輸入層是用來將圖像的特征提取為函數(shù),、輸出層用來輸出結(jié)果外,,其他的隱層都是用來識(shí)別、分析圖像的特征的,。當(dāng)一幅圖被輸入時(shí),,第一層隱層會(huì)首先對(duì) 其進(jìn)行逐像素的分析。此時(shí)的分析會(huì)首先提取出圖像的一些大致特征,,如一些粗略的線條,、色塊等。如果輸入的是一張人臉的圖像,,則首先獲得的會(huì)是一些傾斜的顏 色變換,。
第一層的節(jié)點(diǎn)會(huì)根據(jù)自己對(duì)所得信號(hào)的分析結(jié)果決定是否要向下一層輸出信號(hào)。而所謂的分析過程,,從數(shù)學(xué)上來看就是每個(gè)隱層中的節(jié) 點(diǎn)通過特定的函數(shù)來處理相鄰節(jié)點(diǎn)傳來的帶權(quán)重值的數(shù)據(jù),。并決定是否向下一層輸出結(jié)果,,通常每一層分析完成后便有些節(jié)點(diǎn)不會(huì)再向下一層輸出數(shù)據(jù),而當(dāng)下一層 接收到上一層的數(shù)據(jù)的時(shí)候,,便能在此基礎(chǔ)上識(shí)別出一些更復(fù)雜的特征,,如眼睛、嘴巴和鼻子等,,
逐次增加辨識(shí)度之后,,在最高一層,算法會(huì)完成對(duì)面部所有特征的識(shí)別,,并在輸出層給出一個(gè)結(jié)果判斷,。基于不同的應(yīng)用,,這個(gè)結(jié)果可能有不同的表現(xiàn),。比如分辨出這是誰的臉。
圖片來源:機(jī)器之心
不難想象,,由于每一層分析的時(shí)候都要對(duì)極大量的數(shù)據(jù)進(jìn)行運(yùn)算,,因此對(duì)處理器的計(jì)算性能要求極高。這時(shí)CPU的短板就明顯的體現(xiàn)出來了,,在多年的演化 中,,CPU依據(jù)其定位需要不斷強(qiáng)化了進(jìn)行邏輯運(yùn)算(If else之類)的能力。相對(duì)的卻沒有提高多少純粹的計(jì)算能力,。因此CPU在面對(duì)如此大量的計(jì)算的時(shí)候難免會(huì)感到吃力,。很自然的,人們就想到用GPU和 FPGA去計(jì)算了,。
FPGA和GPU
實(shí)際的計(jì)算能力除了和硬件的計(jì)算速度有關(guān),,也同硬件能支持的指令有關(guān)。我們知道將某些較高階的運(yùn)算分解成低階運(yùn)算時(shí)會(huì)導(dǎo)致計(jì)算的效率下降,。但如果硬件本身就支持這種高階運(yùn)算,,就無需再將其分解了,??梢怨?jié)省很多時(shí)間和資源。
FPGA和GPU內(nèi)都有大量的計(jì)算單元,,因此它們的計(jì)算能力都很強(qiáng),。在進(jìn)行神經(jīng)網(wǎng)絡(luò)運(yùn)算的時(shí)候速度會(huì)比CPU快很多,但兩者之間仍存在一些差別,。GPU 出廠后由于架構(gòu)固定硬件原生支持的指令其實(shí)就固定了,。如果神經(jīng)網(wǎng)絡(luò)運(yùn)算中有GPU不支持的指令,比如,,如果一個(gè)GPU只支持加減乘除,,而我們的算法需要其 進(jìn)行矩陣向量乘法或者卷積這樣的運(yùn)算,,GPU就無法直接實(shí)現(xiàn),就只能通過軟件模擬的方法如用加法和乘法運(yùn)算的循環(huán)來實(shí)現(xiàn),,速度會(huì)比編程后的FPGA慢一 些,。而對(duì)于一塊FPGA來說,如果FPGA沒有標(biāo)準(zhǔn)的“卷積”指令,,開發(fā)者可以在FPGA的硬件電路里“現(xiàn)場編程”出來,。相當(dāng)于通過改變FPGA的硬件結(jié) 構(gòu)讓FPGA可以原生支持卷積運(yùn)算,因此效率會(huì)比GPU更高,。
其實(shí)講到這里,,我們已經(jīng)比較接近谷歌開發(fā)TPU的原因了。TPU是一種 ASIC,,這是一種與FPGA類似,,但不存在可定制性的專用芯片,如同谷歌描述的一樣,,是專為它的深度學(xué)習(xí)語言Tensor Flow開發(fā)的一種芯片,。因?yàn)槭菍門ensor Flow所準(zhǔn)備,因此谷歌也不需要它擁有任何可定制性了,,只要能完美支持Tensor Flow需要的所有指令即可,。而同時(shí),TPU運(yùn)行Tensor Flow的效率無疑會(huì)是所有設(shè)備中最高的,。這就是谷歌開發(fā)TPU的最顯而易見的目的:追求極致的效率,。
對(duì)其他廠商有何影響?
目前有許多廠商已經(jīng)在AI領(lǐng)域投入了大量的精力并且顯示出一些野心,,在 TPU發(fā)布之前,,這個(gè)領(lǐng)域內(nèi)的大多數(shù)廠商都在同時(shí)利用FPGA和GPU來改進(jìn)訓(xùn)練自己的神經(jīng)網(wǎng)絡(luò)算法。NVIDIA則是其中比較特殊的一家:它是世界最大 的GPU制造商之一,,一直在不遺余力的推廣自己的產(chǎn)品在深度學(xué)習(xí)領(lǐng)域的應(yīng)用,。但其實(shí)GPU的設(shè)計(jì)初衷主要并不是進(jìn)行神經(jīng)網(wǎng)絡(luò)運(yùn)算,而是圖像處理,。更多是由 于其特殊的構(gòu)造碰巧也比較適用于神經(jīng)網(wǎng)絡(luò)運(yùn)算罷了,,盡管NVIDIA也在推出一些自有的深度學(xué)習(xí)算法,但由于GPU自身的特性一直還是被FPGA壓著一 頭,。而此次的TPU會(huì)讓這個(gè)市場上憑空再多一個(gè)競爭對(duì)手,,因此如果讓我投票,我認(rèn)為這款TPU對(duì)NVIDIA的影響是最大的,。雖然谷歌表示不會(huì)將這款芯片 賣給別的公司,,意味著它不會(huì)和其他公司產(chǎn)生直接的競爭。但谷歌的芯片如果性能更優(yōu)秀,開發(fā)者們和服務(wù)商將越來越多的轉(zhuǎn)向谷歌提供的服務(wù),,而不再使用其他廠 商的服務(wù)和硬件,,這也會(huì)間接對(duì)其他廠商,尤其是NVIDIA的業(yè)務(wù)造成影響,。
其次是以英特爾為代表的“中間層面”的廠商,,英特爾去年年 底收購了全球知名的FPGA大廠Altera,顯然不會(huì)忽略其在深度學(xué)習(xí)方面的潛力,。但截至目前英特爾并沒有明確的表現(xiàn)出自己要進(jìn)軍人工智能領(lǐng)域的決心,, 也沒有表示自己會(huì)推出什么人工智能產(chǎn)品,而只是表達(dá)出了一些將相關(guān)特性應(yīng)用到自己已有產(chǎn)品內(nèi)的意愿,。其實(shí)對(duì)于這樣的廠商來說,,除非他們自己其實(shí)已經(jīng)秘密的 進(jìn)行了很久的人工智能產(chǎn)品開發(fā)。不然其實(shí)市場的競爭更多只是為他們帶去了更好的工具,,不會(huì)對(duì)他們的利益造成什么沖擊,。當(dāng)然,如果谷歌未來還打算自己設(shè)計(jì) CPU就另當(dāng)別論,。但是目前谷歌表示自己并沒有這種意愿,,而且,那也是另外一個(gè)故事了,。
另一些在人工智能領(lǐng)域已經(jīng)與谷歌有著相似程度的 成就的公司則預(yù)計(jì)不會(huì)受到太多影響,,如微軟和蘋果。微軟一直在探索FPGA對(duì)人工智能相關(guān)運(yùn)算的加速,,并且有自己開發(fā)的算法,。經(jīng)過長時(shí)間的調(diào)試,基于 FPGA的這些算法也未必會(huì)在最終表現(xiàn)上輸給谷歌多少,。如果微軟愿意,,其實(shí)它也可以隨時(shí)開始開發(fā)一款自己的人工智能芯片,畢竟微軟也是自己開發(fā)過很多專屬 硬件的了,。
NVIDIA的困境
NVIDIA大力推廣自己的GPU對(duì)深度學(xué)習(xí)算法 起到的加速效果,,但在宣傳的文章中絕口不提FPGA,無疑也是因?yàn)槊靼鬃约旱漠a(chǎn)品相對(duì)于FPGA不僅沒有明顯的優(yōu)勢(shì)反而有些不足,。而TPU殺入戰(zhàn)場無疑會(huì) 更加加劇NVIDIA的壓力,。GPU的特性短時(shí)間內(nèi)可能沒法有翻天覆地的改變,NVIDIA在人工智能領(lǐng)域短期內(nèi)最應(yīng)該做的,,可能就是尋找到適合GPU發(fā) 揮的特殊場景然后發(fā)揚(yáng)光大了,。至于同F(xiàn)PGA和TPU的正面競爭,,或許還得再等幾代,。