?
如今,有一個(gè)詞聽到耳根生繭卻有些觸不可及,這個(gè)詞就是“人工智能”,曾經(jīng)它活在科幻小說(shuō)中,如今它活在新聞標(biāo)題中,然而降臨在我們身邊,還是一個(gè)未知的時(shí)間、未知的地點(diǎn)、未知的場(chǎng)景。
自 2016 年 3 月 AlphaGo 戰(zhàn)勝李世石,全世界掀起了一場(chǎng)對(duì)人工智能的熱戀,一個(gè)仍在實(shí)驗(yàn)室里的襁褓瞬間就成了國(guó)民對(duì)象。一場(chǎng) AI 軍備競(jìng)賽也逐漸浮出水面,無(wú)論是科技大佬還是初創(chuàng)公司,誰(shuí)都不愿錯(cuò)過(guò)這場(chǎng)即將爆發(fā)的 AI 風(fēng)暴。
前幾天,谷歌又掀起一場(chǎng) AI 風(fēng)波,TPU 來(lái)襲、劍指 GPU,本來(lái)就難分勝負(fù)的 AI 芯片之戰(zhàn),更撲朔迷離。
那么本期《趣科技》我們就來(lái)講講誰(shuí)是 AI 時(shí)代真正的“硬”角色。
最近我們總聽到一種論調(diào)“中國(guó)人工智能直追美國(guó)”,而麥肯錫最新研究報(bào)告顯示,盡管中國(guó)在人工智能的論文數(shù)量方面超過(guò)美國(guó),但是中國(guó) AI 研究的影響力尚不及美國(guó)或者英國(guó)。這究竟是為什么?為何一個(gè)很鼓舞人心的消息后面總有一個(gè)殘酷的現(xiàn)實(shí)。
在人工智能的賽道上,有三大軍團(tuán),即算法、計(jì)算能力、芯片,而核心陣地顯然是在硬件方面。我國(guó)與美國(guó)的差距也主要是在此方面。
?
目前,在 AI 芯片領(lǐng)域,有幾大競(jìng)爭(zhēng)主力:
- GPU,視覺處理器,只有英偉達(dá)、AMD 兩大玩家;
- FPGA,現(xiàn)場(chǎng)可編程門陣列,玩家有賽靈思、Altera(已被英特爾收購(gòu))、Lattice、Microsemi;
- ASIC,專用集成電路,美國(guó)英特爾、高通、微軟,英國(guó) Graphcore,中國(guó)中科院計(jì)算所、地平線機(jī)器人等均有布局;
- 類腦芯片,美國(guó) IBM、高通,中國(guó)中科院計(jì)算所、北京大學(xué)、中星微等已有不俗的成績(jī)。
?
顯然,在 GPU 和 FPGA 上我國(guó)缺席,在 ASIC 與類腦芯片上也只是一個(gè)追隨者,這就是與美國(guó)的差距所在。而說(shuō)我們緊追美國(guó)也不為過(guò),在 AI 應(yīng)用層面,在語(yǔ)音識(shí)別和定向廣告等方面,百度已經(jīng)走在全球前列。
隨著人工智能的大量涌現(xiàn),AI 芯片市場(chǎng)群雄爭(zhēng)霸,廠商紛紛推出新的產(chǎn)品,都想領(lǐng)跑智能時(shí)代——但問(wèn)題是,誰(shuí)會(huì)擔(dān)當(dāng)這個(gè)角色呢?
目前來(lái)看,GPU 是厚積薄發(fā)正當(dāng)時(shí),在深度學(xué)習(xí)領(lǐng)域發(fā)揮著巨大作用;FPGA 被視為 AI 時(shí)代的萬(wàn)能芯片,架構(gòu)靈活獨(dú)具特色;ASIC 這個(gè)后起之秀,被企業(yè)視作引發(fā)一輪全面的顛覆的杰作。其推動(dòng)代表之一就是谷歌,2016 年宣布將獨(dú)立開發(fā)一種名為 TPU 的全新的處理系統(tǒng),而在前幾日,這個(gè)神秘的 TPU 現(xiàn)真容。谷歌表示 TPU 已經(jīng)在谷歌數(shù)據(jù)中心內(nèi)部使用大約兩年,并且 TPU 在推理方面的性能要遠(yuǎn)超過(guò) GPU。
TPU,為深度學(xué)習(xí)而生的 ASIC
TPU 是谷歌專門為加速深層神經(jīng)網(wǎng)絡(luò)運(yùn)算能力而研發(fā)的一款芯片,可用來(lái)加速神經(jīng)網(wǎng)絡(luò)(NN)的推理階段,其實(shí)是一款 ASIC。
我們先來(lái)看一下什么是 ASIC,ASIC 指依照產(chǎn)品需求不同而定制化的特殊規(guī)格集成電路,由特定使用者要求和特定電子系統(tǒng)的需要而設(shè)計(jì)、制造。一般來(lái)說(shuō),ASIC 在特定功能上進(jìn)行了專項(xiàng)強(qiáng)化,可以根據(jù)需要進(jìn)行復(fù)雜的設(shè)計(jì),但相對(duì)來(lái)說(shuō),實(shí)現(xiàn)更高處理速度和更低能耗。相對(duì)應(yīng)的,ASIC 的生產(chǎn)成本也非常高。
谷歌為什么要做 TPU 呢?一方面是有錢任性,畢竟一般公司很難承擔(dān)為深度學(xué)習(xí)開發(fā)專門處理器 ASIC 芯片的成本和風(fēng)險(xiǎn);另一方面是自身需求大,龐大的體量比如谷歌圖像搜索、谷歌照片、谷歌云視覺 API、谷歌翻譯等產(chǎn)品和服務(wù)都需要用到深度神經(jīng)網(wǎng)絡(luò),開發(fā)一款 ASIC 可得到廣泛的應(yīng)用。
早在 2011 年谷歌就意識(shí)到他們遇到的問(wèn)題,開始思考使用深度學(xué)習(xí)網(wǎng)絡(luò)了,這些網(wǎng)絡(luò)運(yùn)算需求高,令他們的計(jì)算資源變得緊張。
CPU 能夠非常高效地處理各種計(jì)算任務(wù),但 CPU 的局限是一次只能處理相對(duì)來(lái)說(shuō)很少量的任務(wù);GPU 在執(zhí)行單個(gè)任務(wù)時(shí)效率較低,而且所能處理的任務(wù)范圍更小,GPU 是理想的深度學(xué)習(xí)芯片,但是能耗的問(wèn)題又非常嚴(yán)重。于是 TPU 應(yīng)用而生。
?
下面我們就來(lái)看看谷歌是如何夸自家 TPU 的:
- 在神經(jīng)網(wǎng)絡(luò)層面的操作上,處理速度比當(dāng)下 GPU 和 CPU 快 15 到 30 倍;
- 在能效比方面,速度 / 功率比(TOPS/Watt)比 GPU 和 CPU 高 30 到 80 倍,如果在 TPU 中使用 GPU 的 GDDR5 內(nèi)存,速度(TOPS)將會(huì)翻三倍,速度 / 功率比(TOPS/Watt)能達(dá)到 GPU 的 70 倍以及 CPU 的 200 倍;
- 在代碼上也更加簡(jiǎn)單,100 到 1500 行代碼即可以驅(qū)動(dòng)神經(jīng)網(wǎng)絡(luò)。
“TPU 的中心是一個(gè) 65536 的 8 位 MAC 矩陣乘法單元,可提供 92 萬(wàn)億次運(yùn)算 / 秒(TOPS)的速度和一個(gè)大的(28 MiB)的可用軟件管理的片上內(nèi)存。相對(duì)于 CPU 和 GPU 的隨時(shí)間變化的優(yōu)化方法(高速緩存、無(wú)序執(zhí)行、多線程、多處理、預(yù)取……),這種 TPU 的確定性的執(zhí)行模型能更好地匹配我們的神經(jīng)網(wǎng)絡(luò)應(yīng)用的 99% 的響應(yīng)時(shí)間需求,因?yàn)?CPU 和 GPU 更多的是幫助對(duì)吞吐量進(jìn)行平均,而非確保延遲性能。這些特性的缺失有助于解釋為什么盡管 TPU 有極大的 MAC 和大內(nèi)存,但卻相對(duì)小和低功耗。我們將 TPU 和服務(wù)器級(jí)的英特爾 Haswell CPU 與現(xiàn)在同樣也會(huì)在數(shù)據(jù)中心使用的英偉達(dá) K80 GPU 進(jìn)行了比較。我們的負(fù)載是用高級(jí)的 TensorFlow 框架編寫的,并是用了生產(chǎn)級(jí)的神經(jīng)網(wǎng)絡(luò)應(yīng)用(多層感知器、卷積神經(jīng)網(wǎng)絡(luò)和 LSTM),這些應(yīng)用占到了我們的數(shù)據(jù)中心的神經(jīng)網(wǎng)絡(luò)推理計(jì)算需求的 95%。”
關(guān)于谷歌 TPU,也許如下幾張圖給出的說(shuō)明更清晰:
?
6 種神經(jīng)網(wǎng)絡(luò)應(yīng)用(每種神經(jīng)網(wǎng)絡(luò)類型各 2 種)占據(jù)了 TPU 負(fù)載的 95%。表中的列依次是各種神經(jīng)網(wǎng)絡(luò)、代碼的行數(shù)、神經(jīng)網(wǎng)絡(luò)中層的類型和數(shù)量(FC 是全連接層、Conv 是卷積層,Vector 是向量層,Pool 是池化層)以及 TPU 在 2016 年 7 月的應(yīng)用普及程度。RankBrain 使用了 DNN,谷歌神經(jīng)機(jī)器翻譯中用到了 LSTM,Inception 用到了 CNN,DeepMind AlphaGo 也用到了 CNN。
?
TPU 各模塊的框圖,主要計(jì)算部分是右上方的黃色矩陣乘法單元。其輸入是藍(lán)色的「權(quán)重 FIFO」和藍(lán)色的統(tǒng)一緩存(Unified Buffer(UB));輸出是藍(lán)色的累加器(Accumulators(Acc))。黃色的激活(Activation)單元在 Acc 中執(zhí)行流向 UB 的非線性函數(shù)。
TPU 芯片布局圖,藍(lán)色的數(shù)據(jù)緩存占芯片的 37%。黃色的計(jì)算是 30%。綠色的 I/O 是 10%。紅色的控制只有 2%。CPU 或 GPU 中的控制部分則要大很多(并且非常難以設(shè)計(jì))。
矩陣乘法單元的 systolic 數(shù)據(jù)流,軟件具有每次讀取 256B 輸入的錯(cuò)覺,同時(shí)它們會(huì)立即更新 256 個(gè)累加器 RAM 中其中每一個(gè)的某個(gè)位置。
與 GPU 相比,TPU 的優(yōu)勢(shì)還體現(xiàn)在:
TPU 使用了大規(guī)模片上內(nèi)存
谷歌可能意識(shí)到片外內(nèi)存訪問(wèn)是 GPU 能效比低的罪魁禍?zhǔn)?,因此?TPU 上放了巨大的內(nèi)存,高達(dá) 24MB 的局部?jī)?nèi)存、6MB 的累加器內(nèi)存以及用于與主控處理器進(jìn)行對(duì)接的內(nèi)存,總共占芯片面積的 37%。這樣下成本,可見谷歌是充分做了權(quán)衡的。。相比之下,英偉達(dá) K80 只有 8MB 的片上內(nèi)存,因此需要不斷地去訪問(wèn)片外 DRAM。
TPU 采用脈動(dòng)式數(shù)據(jù)流
對(duì)于 GPU,從存儲(chǔ)器中取指令與數(shù)據(jù)將耗費(fèi)大量的時(shí)間。
TPU 卻不同,TPU 甚至沒(méi)有取命令的動(dòng)作,而是主處理器提供給它當(dāng)前的指令,并根據(jù)目前的指令做相應(yīng)操作,這使得 TPU 能夠?qū)崿F(xiàn)更高的計(jì)算效率。TPU 加入了脈動(dòng)式數(shù)據(jù)流的支持,每個(gè)時(shí)鐘周期數(shù)據(jù)移位,并取回一個(gè)新數(shù)據(jù)。這樣做可以最大化數(shù)據(jù)復(fù)用,并減小內(nèi)存訪問(wèn)次數(shù),在降低內(nèi)存帶寬壓力的同時(shí)也減小了內(nèi)存訪問(wèn)的能量消耗。
TPU 叫板者說(shuō)了啥?
說(shuō)的了這么多,TPU 真的如谷歌描述的那樣,能成為顛覆 AI 的那個(gè)芯片?
早在 2016 年英偉達(dá)的 CEO 黃仁勛就表示,兩年前谷歌就意識(shí)到 GPU 更適合訓(xùn)練,而不善于做訓(xùn)練后的分析決策。由此可知,谷歌打造 TPU 的動(dòng)機(jī)只是想要一款更適合做分析決策的芯片。這一點(diǎn)在谷歌的官方聲明里也可得到印證,Google 資深副總裁 Urs Holzle 表示,當(dāng)前 Google TPU、GPU 并用,這種情況仍會(huì)維持一段時(shí)間,GPU 可執(zhí)行繪圖運(yùn)算工作,用途多元;TPU 屬于 ASIC,也就是專為特定用途設(shè)計(jì)的特殊規(guī)格邏輯 IC,由于只執(zhí)行單一工作,速度更快,但缺點(diǎn)是成本較高。
?
總而言之,TPU 只在特定應(yīng)用中作為輔助使用,谷歌將繼續(xù)使用 CPU 和 GPU。
谷歌 TPU 挑釁 GPU,隨后英偉達(dá)黃仁勛親自撰文將將 TPU 和英偉達(dá)最新品 P40 做比較,針尖對(duì)麥芒,要“還原”一個(gè)真相。我們看看黃仁勛都說(shuō)了什么:
“英偉達(dá) Tesla P40 在 GoogleNet 推斷任務(wù)中的性能是 Google TPU 的 2 倍。不僅如此,P40 的帶寬也是 TPU 的十倍還多?!?/p>
不過(guò)這個(gè)結(jié)果也是被廣大明眼的網(wǎng)友無(wú)情吐槽:相同情況下,TPU 的能耗是 75W,而 P40 的能耗是 250W;谷歌論文里的是第一代 TPU(2015 年部署在谷歌數(shù)據(jù)中心),現(xiàn)在肯定已經(jīng)升級(jí)好幾代了——黃仁勛用最新 GPU 與第一代 TPU 對(duì)比,GPU 性能更優(yōu)也無(wú)疑是必然的結(jié)果;還有一個(gè)很現(xiàn)實(shí)的問(wèn)題擺在面前,這就是價(jià)格,P40 24GB 版本售價(jià) 5 千多美元,TPU 成本估計(jì)在幾百美元,拿一“貴族”和一個(gè)“平民”比品味,這個(gè)也有點(diǎn)不合適吧。
不過(guò),黃仁勛在文章里指出的以下幾點(diǎn)值得注意:
“雖然 Google 和 NVIDIA 選擇了不同的開發(fā)道路,但我們的方法中還是有一些共同點(diǎn)。特別是:
- 人工智能需要加速計(jì)算。在摩爾定律放緩的時(shí)代,加速器提供了深度學(xué)習(xí)重要的數(shù)據(jù)處理需求;
- 張量處理是深度學(xué)習(xí)訓(xùn)練和推理性能的核心;
- 張量處理是企業(yè)在構(gòu)建現(xiàn)代數(shù)據(jù)中心時(shí)必須重點(diǎn)考慮的新工作量;
- 加速?gòu)埩刻幚砜梢源蟠蠼档托藿ìF(xiàn)代數(shù)據(jù)中心的成本。
除了黃仁勛,國(guó)內(nèi)也有 TPU 叫板的聲音,指出:谷歌所謂 TPU 其實(shí)是新瓶裝舊酒——這款芯片仍然沿用了傳統(tǒng)的脈動(dòng)陣列機(jī)架構(gòu),也是當(dāng)今許多面向深度學(xué)習(xí)的 DSP 所采用的的架構(gòu)。 TPU 在架構(gòu)方面并沒(méi)有太多新意。在其架構(gòu)公開之前,在學(xué)術(shù)界和工業(yè)界其實(shí)已經(jīng)有大量類似的工作(將脈動(dòng)陣列機(jī)用于處理深度學(xué)習(xí))。脈動(dòng)陣列架構(gòu)本身是個(gè)傳統(tǒng)技術(shù),早在 1980 年代初,中科院計(jì)算所的夏培肅院士和李國(guó)杰院士就曾將脈動(dòng)陣列架構(gòu)用于石油勘探——計(jì)算所曾經(jīng)研發(fā)過(guò)的石油勘探專用機(jī)就是采用了脈動(dòng)陣列架構(gòu)。將脈動(dòng)陣列架構(gòu)用于深度學(xué)習(xí),其實(shí)是近年來(lái) DSP 和硬件加速領(lǐng)域的舊瓶裝新酒。
同時(shí),這里要強(qiáng)調(diào)一點(diǎn),中科院計(jì)算所的人工智能專用芯片寒武紀(jì)團(tuán)隊(duì)成員與 Olivier Temam 教授、Paolo Ienne 教授共同發(fā)表于 ISCA2015 的 ShiDianNao 學(xué)術(shù)論文就已經(jīng)討論過(guò)脈動(dòng)陣列架構(gòu),而 Olivier Temam 教授現(xiàn)在恰恰供職于谷歌。
AI 芯片之爭(zhēng)果真讓人看不清,TPU 能否攪局成功也一時(shí)無(wú)法下結(jié)論,但是 TPU 的出現(xiàn)讓面向神經(jīng)網(wǎng)絡(luò) / 深度學(xué)習(xí)特定領(lǐng)域加速的芯片趨勢(shì)更加明顯。同時(shí), 谷歌 并沒(méi)有表現(xiàn)出要在數(shù)據(jù)中心以外領(lǐng)域使用 TPU 的打算。也許谷歌 TPU 象征意義要大于實(shí)際意義,畢竟對(duì)于一個(gè)沒(méi)有任何芯片制造歷史的公司提出并實(shí)現(xiàn)了一個(gè)比英偉達(dá) GPU 更快的方案,這是一種超越,更表明英偉達(dá)的護(hù)城河被攻破。未來(lái)是不是有一批公司追隨谷歌腳步開發(fā)自己的 ASIC 呢,這是一個(gè)未知的問(wèn)題,但是谷歌 TPU 帶來(lái)一種趨勢(shì)。
如果你對(duì)本系列感興趣,歡迎點(diǎn)擊《趣科技》繼續(xù)閱讀!
?
與非網(wǎng)原創(chuàng)文章,未經(jīng)許可,不得轉(zhuǎn)載!