<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 業(yè)界動(dòng)態(tài) > 2017圖靈獎(jiǎng)得主:通用芯片每年僅提升3%,神經(jīng)專用架構(gòu)才是未來(lái)

          2017圖靈獎(jiǎng)得主:通用芯片每年僅提升3%,神經(jīng)專用架構(gòu)才是未來(lái)

          作者: 時(shí)間:2018-09-03 來(lái)源:機(jī)器之心 收藏

            摩爾定律的終結(jié)將使特定領(lǐng)域的架構(gòu)成為計(jì)算的未來(lái)。一個(gè)開(kāi)創(chuàng)性的例子就是谷歌 2015 年推出的張量處理單元(TPU),目前已經(jīng)在為超過(guò)十億人提供服務(wù)。TPU 使深度神經(jīng)網(wǎng)絡(luò)(DNN)的計(jì)算速度提高了 15-30 倍,能耗效率比現(xiàn)有類似技術(shù)的 CPU 和 GPU 提高了 30-80 倍。

          本文引用地址:http://www.ex-cimer.com/article/201809/391456.htm

            本文要點(diǎn)

            雖然 TPU 是一種專用集成電路,但它適用于神經(jīng)網(wǎng)絡(luò)框架 TensorFlow 下的大量程序,驅(qū)動(dòng)了谷歌數(shù)據(jù)中心的許多重要應(yīng)用,包括圖像識(shí)別、翻譯、搜索和游戲。通過(guò)專門(mén)為神經(jīng)網(wǎng)絡(luò)重新分配芯片計(jì)算資源,TPU 在真實(shí)數(shù)據(jù)中心負(fù)載環(huán)境下效率要比通用類型的計(jì)算機(jī)高 30-80 倍,目前已為全球 10 億人服務(wù)。神經(jīng)網(wǎng)絡(luò)的推理階段通常遵循嚴(yán)格的響應(yīng)時(shí)間限制,這降低了通用計(jì)算機(jī)所使用技術(shù)的效率,該通用計(jì)算機(jī)通常運(yùn)行得較快,但某些情況下也會(huì)較慢。1965 年英特爾創(chuàng)始人之一戈登·摩爾預(yù)測(cè)芯片中的晶體管數(shù)量每?jī)赡陼?huì)增加一倍。盡管 2017 年 1 月的 ACM Communications 封面呼吁道:「說(shuō)我要終結(jié)還為時(shí)過(guò)早了」,摩爾定律確實(shí)壽終正寢。2014 年推出的 DRAM 芯片包含了 80 億個(gè)晶體管,而在人們的預(yù)測(cè)中即使到了 2019 年,帶有 160 億個(gè)晶體管的 DRAM 芯片也不會(huì)大規(guī)模生產(chǎn)——如果看摩爾定律的話,四年里晶體管數(shù)量應(yīng)該變成四倍多。2010 年款的英特爾至強(qiáng) E5 處理器擁有 23 億個(gè)晶體管,而 2016 年的至強(qiáng) E5 也只有 72 億個(gè)晶體管,或者說(shuō)比摩爾定律預(yù)計(jì)的數(shù)值低 1.5 倍。毫無(wú)疑問(wèn),半導(dǎo)體行業(yè)還在不斷進(jìn)步,但其步伐已經(jīng)放緩。

            Dennard Scaling 是一個(gè)鮮為人知,但同樣重要的觀察結(jié)果,Robert Dennard 在 1974 年認(rèn)為,晶體管不斷變小,但芯片的功率密度不變。如果晶體管尺寸線性縮小了二分之一,那么同樣面積上芯片中晶體管的數(shù)量就會(huì)變?yōu)?4 倍。同時(shí),如果電流和電壓都降低了二分之一,它所使用的功率將下降 4 倍,在相同的頻率下提供相同的功率。Dennard Scaling 在被發(fā)現(xiàn)的 30 年后結(jié)束,其原因并不是因?yàn)榫w管的尺寸不再縮小,而是因?yàn)殡娏骱碗妷翰荒茉诶^續(xù)下降的同時(shí)保持可靠性了。

            計(jì)算架構(gòu)師們一直信奉摩爾定律和 Dennard Scaling,并通過(guò)復(fù)雜的處理器設(shè)計(jì)和內(nèi)存層次結(jié)構(gòu),將資源轉(zhuǎn)化為性能,而在這其中并沒(méi)有顧及到程序員知識(shí)中各指令之間的并行性。不幸地是,架構(gòu)師們最終耗盡了可以有效利用的指令的并行性。2004 年 Dennard Scaling 的結(jié)束,以及缺乏更有效指令級(jí)并行性方法的狀況,迫使業(yè)界選擇從單核高耗能處理器轉(zhuǎn)換到多核高效率處理器。

            今天我們遵守吉恩·阿姆達(dá)爾(IBM 著名工程師,阿姆達(dá)爾定律的提出者)在 1967 年提出的定律,該定律認(rèn)為不斷增加處理器數(shù)量會(huì)導(dǎo)致性能提升的遞減。阿姆達(dá)爾定律說(shuō),并行計(jì)算的理論加速受到任務(wù)順序部分的限制;如果任務(wù)的 1/8 是串行的,則最大加速比原始性能高 8 倍——即使任務(wù)的其余部分很容易并行,并且架構(gòu)師增加了 100 個(gè)處理器也是如此。

            下圖顯示了過(guò)去四十年以來(lái),上述三大定律對(duì)處理器性能的影響。按照目前的速度,標(biāo)準(zhǔn)處理器的性能在 2038 年以前不會(huì)翻倍。


            圖 1. 依照 Hennessy 和 Patterson 的理論,我們繪制了過(guò)去 40 年中,32 位和 64 位處理器內(nèi)核每年最高的 SPECCPUint 性能;面向吞吐量的 SPECCPUint_rate 反映了類似的情況,即使其平穩(wěn)期延遲了幾年。

            晶體管看來(lái)不會(huì)再有很大提升了(這反映了摩爾定律的結(jié)束),而每平方毫米芯片面積的功耗正在增加(Dennard Scaling 也結(jié)束了),但人們對(duì)于芯片功率的預(yù)算卻并沒(méi)有增加(因?yàn)殡娮右苿?dòng)、機(jī)械和發(fā)熱限制),芯片設(shè)計(jì)師們已經(jīng)在充分發(fā)揮多核心的能力了(但這也受到阿姆達(dá)爾定律的限制),架構(gòu)師們現(xiàn)在普遍認(rèn)為,在性能效率上進(jìn)行重大改進(jìn)的唯一途徑是特定領(lǐng)域的架構(gòu)——它們只適用于處理特定的任務(wù),但效率非常高。

            在云端的大型數(shù)據(jù)集和大量計(jì)算機(jī)之間的協(xié)作使得機(jī)器學(xué)習(xí)近年來(lái)有了很大的發(fā)展,特別是在深度神經(jīng)網(wǎng)絡(luò)(DNN)方面。與一些其他領(lǐng)域不同,DNN 應(yīng)用方面很廣泛。DNN 的突破包括將語(yǔ)音識(shí)別的錯(cuò)詞率降低了 30%(近 20 年來(lái)的最大進(jìn)步);自 2011 年以來(lái),將圖像識(shí)別的錯(cuò)誤率從 26% 降低至 3.5;在圍棋上擊敗了人類世界冠軍;提升了搜索排名等等。單個(gè) DNN 架構(gòu)或許應(yīng)用范圍很窄,但這種方法仍然催生出了大量應(yīng)用。

            神經(jīng)網(wǎng)絡(luò)一定程度上模擬了人類大腦中神經(jīng)的功能,基于簡(jiǎn)單的人工神經(jīng)元 - 輸入的加權(quán)和的非線性函數(shù)(例如 max(0,value))。這些人工神經(jīng)元被集中到一層,一層的輸出是下一層的輸入。深度神經(jīng)網(wǎng)絡(luò)中的「深度」代表有多個(gè)層,由于云中的大數(shù)據(jù)集,我們可以使用更大、更多的層來(lái)讓神經(jīng)網(wǎng)絡(luò)獲取更抽象、更準(zhǔn)確的概念,而 GPU 會(huì)幫助我們快速進(jìn)行計(jì)算。

            DNN 運(yùn)行的兩個(gè)階段被稱為訓(xùn)練(或?qū)W習(xí))和推理(或預(yù)測(cè)),分別指代發(fā)展與生產(chǎn)。訓(xùn)練一個(gè) DNN 可能需要數(shù)天,但訓(xùn)練好的 DNN 進(jìn)行推理只需要幾毫秒。針對(duì)不同的應(yīng)用,開(kāi)發(fā)者需要選擇神經(jīng)網(wǎng)絡(luò)的類型和層數(shù),并訓(xùn)練出合適的權(quán)重。幾乎所有的訓(xùn)練都是浮點(diǎn)運(yùn)算,這就是 GPU 在深度學(xué)習(xí)時(shí)代如此受歡迎的原因之一。

            被稱為「量化」的轉(zhuǎn)換將浮點(diǎn)數(shù)轉(zhuǎn)為整數(shù)——通常只有 8 位——這種程度通常足以滿足推斷要求了。與 IEEE 754 16 位浮點(diǎn)乘法相比,8 位整數(shù)乘法只需要 1/6 的能耗,占用 1/6 的空間,而整數(shù)加法也能帶來(lái) 13 倍能耗和 38 倍空間的提升。

            下表展示了兩個(gè)例子,共六種 DNN 的運(yùn)行效率——這代表了谷歌數(shù)據(jù)中心 2016 年 95% 的深度神經(jīng)網(wǎng)絡(luò)工作負(fù)載。它們?cè)?TensorFlow 中的代碼都非常短,只有 100-1500 行。這些示例代表在主機(jī)服務(wù)器上運(yùn)行較大應(yīng)用程序的小組件,可以是數(shù)千到數(shù)百萬(wàn)行 C ++代碼。應(yīng)用程序通常面向用戶,這會(huì)導(dǎo)致嚴(yán)格的響應(yīng)時(shí)間限制。


            表 1. 2016 年 7 月,谷歌 TPU 上的 DNN 工作負(fù)載。共六種 DNN 應(yīng)用(三種 DNN 類型),代表 95% 的 TPU 工作負(fù)載。

            如表 1 所示,每個(gè)模型需要 500 萬(wàn)至 1 億個(gè)權(quán)重,這可能需要花費(fèi)大量時(shí)間和能耗來(lái)訪問(wèn)。為了壓縮訪問(wèn)成本,在一批獨(dú)立示例中重復(fù)使用相同的權(quán)重可以提高性能。

            TPU 起源、架構(gòu)及實(shí)現(xiàn)

            早在 2006 年,谷歌就開(kāi)始考慮在其數(shù)據(jù)中心部署 GPU——現(xiàn)場(chǎng)可編程門(mén)陣列(field programmable gate array,F(xiàn)PGA)或?qū)S眉呻娐?ASIC)。結(jié)論是,只有為數(shù)不多的能在特殊硬件上運(yùn)行的應(yīng)用可以免費(fèi)使用谷歌大型數(shù)據(jù)中心的過(guò)剩容量,而且很難自由改進(jìn)。情況在 2013 年出現(xiàn)了轉(zhuǎn)機(jī),當(dāng)時(shí)谷歌用戶每天使用語(yǔ)音識(shí)別 DNN 語(yǔ)音搜索三分鐘,使得谷歌數(shù)據(jù)中心的計(jì)算需求增加了一倍,而如果使用傳統(tǒng)的 CPU 將非常昂貴。因此,谷歌啟動(dòng)了一項(xiàng)優(yōu)先級(jí)別非常高的項(xiàng)目,快速生產(chǎn)一款定制芯片用于推理,并購(gòu)買(mǎi)現(xiàn)成的 GPU 進(jìn)行訓(xùn)練。谷歌的目標(biāo)是將性價(jià)比提高 10 倍。為了完成這項(xiàng)任務(wù),谷歌在其數(shù)據(jù)中心設(shè)計(jì)、驗(yàn)證、構(gòu)建并部署了 GPU,而這一過(guò)程僅僅用了 15 個(gè)月。

            為了降低部署延遲的風(fēng)險(xiǎn),谷歌工程師將 TPU 設(shè)計(jì)成 I/O 總線上的協(xié)處理器,并允許它像 GPU 一樣插入現(xiàn)有服務(wù)器,而不是使 TPU 與 CPU 緊密集成。此外,為了簡(jiǎn)化硬件設(shè)計(jì)和調(diào)試,主機(jī)服務(wù)器將指令發(fā)送給 TPU 令其執(zhí)行,而不是讓 TPU 去自行獲取。因此,TPU 在理念上更接近浮點(diǎn)單元(FPU)協(xié)處理器,而不是 GPU。

            谷歌工程師將 TPU 看做一個(gè)系統(tǒng)進(jìn)行優(yōu)化。為了減少與主機(jī) CPU 的交互,TPU 運(yùn)行整個(gè)推理模型,但提供了與 2015 年及以后的 DNN 相匹配的靈活性,而不局限于 2013 年的 DNN。

            圖 2:TPU 的框圖。TPU 指令通過(guò)外圍組件互連高速(PCIe)Gen3x16 總線從主機(jī)被發(fā)送到指令緩沖器中。內(nèi)框通常通過(guò) 256 字節(jié)寬度的路徑連接在一起。從右上角開(kāi)始,矩陣乘法單元為 TPU 的核心,256×256 MAC 可以對(duì)有符號(hào)或無(wú)符號(hào)的整數(shù)執(zhí)行 8 位乘法和加法運(yùn)算。這個(gè) 16 位的產(chǎn)品聚集在矩陣單元下方的 32 位累加器的 4MB 中。這四個(gè) MiB 代表含有 4,096, 256 個(gè)元素的 32 位累加器。矩陣單元每周期產(chǎn)生一個(gè) 256 元素的部分和。


            圖 2. TPU 框圖及平面圖

            矩陣單元的權(quán)重通過(guò)片內(nèi)「權(quán)重 FIFO」來(lái)分級(jí),該 FIFO 從我們稱之為「權(quán)重存儲(chǔ)器」的片外 8GB DRAM 中讀取;為了推理,權(quán)重僅作讀取;8GB 支持很多同時(shí)激活的模型。權(quán)重 FIFO 有四層深。中間結(jié)果保存在 24MiB 的片上「統(tǒng)一緩沖器」中,可以作為矩陣單元的輸入。可編程 DMA 控制器將數(shù)據(jù)傳送到 CPU 主機(jī)存儲(chǔ)器和統(tǒng)一緩沖器或從二者中傳送數(shù)據(jù)。為了能在谷歌的規(guī)模上可靠地部署,內(nèi)存儲(chǔ)器和外存儲(chǔ)器包含內(nèi)置錯(cuò)誤檢查與糾正硬件。

            TPU 微架構(gòu)的原理是保持矩陣單元繁忙。為了實(shí)現(xiàn)這一目標(biāo),讀取權(quán)重的指令遵循解耦訪問(wèn)/執(zhí)行原理,因?yàn)樗梢栽诎l(fā)送地址之后、從權(quán)重存儲(chǔ)器中取出權(quán)重之前完成。如果輸入激活或權(quán)重?cái)?shù)據(jù)沒(méi)有準(zhǔn)備好,矩陣單元將停止。

            由于讀取大型靜態(tài)隨機(jī)存取存儲(chǔ)器(Static Random-Access Memory,SRAM)消耗的算力比算法多得多,矩陣單元使用「脈動(dòng)執(zhí)行」通過(guò)減少統(tǒng)一緩沖器的讀寫(xiě)來(lái)節(jié)約能量。它依賴于來(lái)自不同方向的數(shù)據(jù),這些數(shù)據(jù)以規(guī)則的間隔到達(dá)陣列中的單元,這些方向在間隔中組合到一起。給定的含有 65,536 個(gè)元素的向量-矩陣乘法運(yùn)算作為對(duì)角波前在矩陣中移動(dòng)。這些權(quán)重被預(yù)加載,并隨著新數(shù)據(jù)塊的第一個(gè)數(shù)據(jù)一起隨著前進(jìn)波生效。控制和數(shù)據(jù)被流水線化,給程序員一種錯(cuò)覺(jué),即 256 個(gè)輸入被一次讀取,并立即更新 256 個(gè)累加器中每個(gè)累加器的一個(gè)位置。從正確性的角度來(lái)看,軟件不了解矩陣單元的脈動(dòng)特性,但為了提高性能,必須考慮單元的延遲。

            TPU 軟件棧必須與為 CPU 和 GPU 開(kāi)發(fā)的軟件棧兼容,這樣應(yīng)用可以快速移植到 TPU。在 TPU 上運(yùn)行的應(yīng)用部分通常用 TensorFlow 編寫(xiě),并編譯成可以在 GPU 或 TPU 上運(yùn)行的 API。

            CPU、GPU、TPU 平臺(tái)

            多數(shù)體系架構(gòu)研究的論文基于運(yùn)行小型、易于移植的基準(zhǔn)測(cè)試模擬,這些基準(zhǔn)測(cè)試可以預(yù)測(cè)潛在的性能(如果實(shí)施的話)。本文與上述論文不同,而是對(duì) 2015 年以來(lái)數(shù)據(jù)中心運(yùn)行真實(shí)、大型生產(chǎn)工作負(fù)載的機(jī)器進(jìn)行回顧性評(píng)估,其中一些機(jī)器的日常用戶超過(guò) 10 億。表 1 中列出的六種應(yīng)用代表了 2016 年 TPU 數(shù)據(jù)中心 95% 的使用。

            由于正在測(cè)量生產(chǎn)工作負(fù)載,要比較的基準(zhǔn)平臺(tái)也必須可以在 Google 數(shù)據(jù)中心部署,因?yàn)檫@是生產(chǎn)工作負(fù)載運(yùn)行的唯一處所。谷歌數(shù)據(jù)中心的很多服務(wù)器和谷歌規(guī)模對(duì)應(yīng)用程序可靠性的要求意味著機(jī)器必須至少檢查內(nèi)存錯(cuò)誤。由于英偉達(dá) Maxwell GPU 和最近的 Pascal P40 GPU 不檢查內(nèi)存中的錯(cuò)誤,在谷歌的規(guī)模中部署這些處理器并滿足谷歌應(yīng)用程序的嚴(yán)格可靠性要求是不可行的。

            表 2 顯示了部署在谷歌數(shù)據(jù)中心的服務(wù)器,可以將其與 TPU 進(jìn)行比較。傳統(tǒng)的 CPU 服務(wù)器以英特爾的 18 核雙插槽 Haswell 處理器為代表,該平臺(tái)也是 GPU 或 TPU 的主機(jī)服務(wù)器。谷歌工程師在服務(wù)器中使用四個(gè) TPU 芯片。


            表 2. 基準(zhǔn)測(cè)試的服務(wù)使用 Haswell CPU、K80 GPU 及 TPU。

            很多計(jì)算機(jī)架構(gòu)師沒(méi)有考慮到從產(chǎn)品發(fā)布到芯片、主板、軟件可以服務(wù)于數(shù)據(jù)中心的用戶之間的時(shí)間差。表 3 指出,2014 年至 2017 年,商業(yè)云公司的 GPU 時(shí)間差為 5 至 25 個(gè)月。因此,可以媲美 2015 年 TPU 的 GPU 顯然是英偉達(dá) K80,后者處于相同的半導(dǎo)體工藝中,在 TPU 部署前六個(gè)月發(fā)布。


            表 3. 2015 年到 2017 年,英偉達(dá) GPU 從發(fā)布到云端部署的時(shí)間差距,這 4 代 GPU 分別為 Kepler、Maxwell、Pascal 和 Volta 架構(gòu)。

            每個(gè) K80 卡包含兩個(gè)裸片,并提供內(nèi)部存儲(chǔ)器和 DRAM 的錯(cuò)誤檢測(cè)和糾正機(jī)制。這種服務(wù)器中最多可安裝 8 個(gè) K80 裸片,這也是我們基準(zhǔn)測(cè)試的配置。CPU 和 GPU 都使用大型芯片:大約 600 mm2,或者是英特爾 Core i7 的三倍。

            性能:Roofline、響應(yīng)時(shí)間、吞吐量

            為了說(shuō)明這六個(gè) app 在三個(gè)處理器上的性能,我們使用了高性能計(jì)算機(jī)群(HPC)的 Roofline 性能模型。這一簡(jiǎn)單的視覺(jué)模型雖然不完美,但揭示了性能瓶頸出現(xiàn)的原因。該模型背后的假設(shè)是 app 無(wú)法適應(yīng)片上緩存,因此它們要么計(jì)算受限,要么內(nèi)存帶寬受限。對(duì)于 HPC,y 軸表示每秒浮點(diǎn)運(yùn)算性能(單位是 FLOPS),因此峰值計(jì)算率形成了 roofline 的「平緩」區(qū)(flat part)。x 軸表示運(yùn)算密度(operational intensity),單位是 FLOPS/byte。內(nèi)存帶寬表示每秒多少比特,形成了 roofline 的「傾斜」部分(slanted part),因?yàn)?(FLOPS/sec)/ (FLOPS/Byte) = Bytes/sec。沒(méi)有充足的運(yùn)算密度時(shí),程序受限于內(nèi)存帶寬,性能只能在 roofline 的「傾斜」部分之下。

            一個(gè)應(yīng)用的每秒實(shí)際計(jì)算量與其天花板計(jì)算量之間的距離代表了保持運(yùn)算密度不變時(shí)性能提升的潛力;提升運(yùn)算密度的優(yōu)化(如緩存塊)可能帶來(lái)更大的性能提升。

            為了在 TPU 上使用 Roofline 模型,當(dāng) DNN 應(yīng)用被量化時(shí),我們首先將浮點(diǎn)運(yùn)算替換成整數(shù)運(yùn)算。由于權(quán)重步伐無(wú)法正常適應(yīng) DNN 應(yīng)用的片上內(nèi)存,因此第二個(gè)改變就是將運(yùn)算密度重新定義為每權(quán)重比特的整數(shù)乘積累加運(yùn)算(integer multiply-accumulate operations per byte of weights),如表 1 所示。

            圖 3 展示了單個(gè) TPU、CPU 和 GPU 在 log-log scale 上的 Roofline 模型。TPU 的 Roofline 模型「傾斜」部分較長(zhǎng),其運(yùn)算密度意味著性能更多地受限于內(nèi)存帶寬,而不是計(jì)算峰值。六個(gè)應(yīng)用中有五個(gè)都接近天花板,MLP 和 LSTM 受限于內(nèi)存,CNN 受限于計(jì)算。


            圖 3:TPU、CPU 和 GPU 在 log-log 圖上的 roofline 模型。五角星表示 TPU,三角形表示英偉達(dá) Tesla K80 GPU,圓表示英特爾酷睿處理器(Haswell);所有 TPU 五角星都與其他兩種芯片的 roofline 模型持平或在后者之上。

            如圖 3 所示,這六個(gè) DNN 應(yīng)用與 Haswell 和 K80 roofline 天花板的距離大于與 TPU roofline 天花板的距離。響應(yīng)時(shí)間是原因所在。這些應(yīng)用中的很多個(gè)是面向終端用戶服務(wù)的一部分。研究表明,即使響應(yīng)時(shí)間的些微增加都會(huì)導(dǎo)致用戶使用該服務(wù)的頻率降低。訓(xùn)練可能沒(méi)有苛刻的響應(yīng)時(shí)間 deadline,但推斷通常有,或者說(shuō)相比于吞吐量,推斷更偏好 latency。

            例如,按照應(yīng)用開(kāi)發(fā)者的要求,MLP0 的 99th 百分位響應(yīng)時(shí)間通常為 7ms。(每秒推斷和 7ms 的延遲包括服務(wù)器主機(jī)時(shí)間和加速器時(shí)間。)如果對(duì)響應(yīng)時(shí)間的限制不嚴(yán)格,Haswell 和 K80 分別以 MLP0 最高吞吐量的 42% 和 37% 運(yùn)行。這些限制也會(huì)影響到 TPU,它會(huì)以 80% 的吞吐量來(lái)運(yùn)行,更加接近 TPU 的 MLP0 最大吞吐量。與 CPU 和 GPU 相比,單線程 TPU 沒(méi)有復(fù)雜的微架構(gòu)特征,即消耗晶體管和功率來(lái)提高平均性能,而非 99th 百分位的情況,即 TPU 沒(méi)有緩存、分支預(yù)測(cè)、亂序執(zhí)行、多處理、推測(cè)預(yù)取(speculative prefetching)、地址合并(address coalescing)、多線程、上下文切換(context switching)等。極簡(jiǎn)是領(lǐng)域?qū)S锰幚砥鞯膬?yōu)勢(shì)。

            表 4 顯示了每個(gè)芯片的相對(duì)推斷性能底線,包括兩個(gè)加速器 vs. CPU 的主機(jī)服務(wù)器開(kāi)銷,展示了這六個(gè) DNN 應(yīng)用相對(duì)性能的加權(quán)平均值,表明 K80 芯片速度是 Haswell 的 1.9 倍,TPU 芯片速度是 Haswell 的 29.2 倍,TPU 芯片速度是 GPU 的 15.3 倍。


            表 4:在 DNN 工作負(fù)載下 K80 GPU 芯片和 TPU 芯片與 CPU 的性能比。加權(quán)平均值使用了表 1 中六個(gè) app 的實(shí)際混合。

            性價(jià)比、總體擁有成本(TCO)、性能/功耗(Performance/Watt)

            大批量購(gòu)買(mǎi)計(jì)算機(jī)時(shí)會(huì)更多地考慮性價(jià)比而非性能。數(shù)據(jù)中心最好的成本指標(biāo)是總體擁有成本(TCO)。組織(如谷歌)購(gòu)買(mǎi)數(shù)千張芯片時(shí)所支付的實(shí)際價(jià)格取決于與相關(guān)企業(yè)的談判溝通。由于涉及商業(yè)機(jī)密,我們無(wú)法公開(kāi)此類價(jià)格信息或數(shù)據(jù)。但是,功率與 TCO 相關(guān),我們可以公開(kāi)每臺(tái)服務(wù)器的功耗數(shù),因此這里我們使用性能/功耗比代替性能/TCO 比。這部分我們對(duì)比了整個(gè)服務(wù)器而不是單個(gè)芯片。圖 4 顯示了 K80 GPU 和 TPU 相對(duì)于 Haswell CPU 的平均性能/功耗比。我們給出了兩種不同的性能/功耗比計(jì)算。我們展示了兩種不同的性能/功耗計(jì)算方法。第一種「total」包括計(jì)算 GPU 和 TPU 的性能/功耗時(shí)主機(jī) CPU 服務(wù)器所消耗的功率;第二種「incremental」從 GPU 和 TPU 中減去了主機(jī) CPU 服務(wù)器所消耗的功率。


            圖 4:GPU 服務(wù)器與 CPU 服務(wù)器的性能/功耗對(duì)比(藍(lán)色條)、TPU 服務(wù)器與 CPU 服務(wù)器的功耗對(duì)比(紅色條)、TPU 服務(wù)器與 GPU 服務(wù)器的功耗對(duì)比(橙色條)。TPU' 是使用 K80 的 GDDR5 內(nèi)存將 TPU 進(jìn)行改進(jìn)后的芯片。

            對(duì)替代性 TPU 設(shè)計(jì)的評(píng)估

            和 FPU 類似,TPU 協(xié)同處理器比較容易評(píng)估,因此我們?yōu)榱鶄€(gè)應(yīng)用創(chuàng)建了一個(gè)性能模型。模型結(jié)果和硬件性能的平均差距小于 10%。

            我們使用性能模型來(lái)評(píng)估一款假設(shè)的 TPU 芯片 TPU'(使用同樣的技術(shù)再用 15 個(gè)月我們也能設(shè)計(jì)出這款芯片)。更具攻擊性的邏輯合成和模塊設(shè)計(jì)仍然可以把時(shí)鐘頻率提高 50%。為 GDDR5 內(nèi)存設(shè)計(jì)接口電路(就像 K80 那樣)可以將權(quán)重內(nèi)存帶寬(weight memory bandwidth)提高四倍,將 roofline 脊點(diǎn)從 1350 降到 250。

            將時(shí)鐘頻率提高到 1,050 MHz 而不幫助內(nèi)存并沒(méi)有什么作用。如果我們使時(shí)鐘頻率為 700MHz,但使用 GDDR5 作為權(quán)重內(nèi)存,則加權(quán)平均值飛躍至 3.9。同時(shí)實(shí)行這兩種措施無(wú)法改變平均值,因此假設(shè)的 TPU' 具備更快的內(nèi)存。

            將 DDR3 權(quán)重內(nèi)存替換成等價(jià)的 K80 GDDR5 內(nèi)存需要將內(nèi)存通道的數(shù)量翻一倍,即 4 個(gè)通道。這一改進(jìn)可以將芯片大小擴(kuò)大約 10%。GDDR5 還能夠?qū)?TPU 系統(tǒng)的功率預(yù)算從 861W 提高到 900W 左右,因?yàn)槊颗_(tái)服務(wù)器都有四個(gè) TPU。

            圖 4 顯示,TPU'的總體性能/功耗/芯片是 Haswell 的 86 倍,K80 的 41 倍。其 incremental 指標(biāo)是 Haswell 的 196 倍,K80 的 68 倍。

            討論

            這部分按照 Hennessy 和 Patterson 的謬誤-陷阱-反駁格式來(lái)展開(kāi):

            謬誤。數(shù)據(jù)中心的 DNN 推斷應(yīng)用將吞吐量和響應(yīng)時(shí)間置于同等重要的地位。我們驚訝于谷歌 TPU 開(kāi)發(fā)者對(duì)響應(yīng)時(shí)間有這么高的要求,2014 年就有人透露:對(duì)于 TPU 來(lái)說(shuō),批尺寸應(yīng)該足夠大,以到達(dá)性能峰值或者對(duì)延遲的要求不用那么苛刻。一個(gè)強(qiáng)大的應(yīng)用是離線圖像處理,谷歌開(kāi)發(fā)者的直覺(jué)是,如果交互式服務(wù)也需要 TPU,則大部分服務(wù)需要累積足夠大的批量。即使 2014 年谷歌關(guān)注響應(yīng)時(shí)間(LSTM1)的應(yīng)用開(kāi)發(fā)者稱,2014 年的限制是 10ms,而真正向 TPU 移植時(shí) 10ms 將被減少至 7ms。很多此類服務(wù)對(duì) TPU 的意料之外的要求,以及它們對(duì)快速響應(yīng)時(shí)間的影響和偏好,改變了這個(gè)等式。應(yīng)用編寫(xiě)者通常會(huì)選擇降低延遲,而不是累積更大的批量。幸運(yùn)的是,TPU 具備一個(gè)簡(jiǎn)單、可重復(fù)的執(zhí)行模型,來(lái)滿足交互式服務(wù)的響應(yīng)時(shí)間要求,此類高峰值吞吐量、小批量大小導(dǎo)致 TPU 具備比當(dāng)前 CPU 和 GPU 更好的性能。

            謬誤。K80 GPU 架構(gòu)很適合進(jìn)行 DNN 推斷。我們發(fā)現(xiàn) TPU 在性能、能耗和成本方面優(yōu)于 K80 GPU 有五個(gè)方面的原因。一,TPU 只有一個(gè)處理器,而 K80 有 13 個(gè),單線程當(dāng)然更容易滿足嚴(yán)格的延遲目標(biāo)。二,TPU 具備一個(gè)非常大的二維乘法單元,GPU 有 13 個(gè)小的一維乘法單元。DNN 的矩陣相乘密度適合二維陣列中的算術(shù)邏輯運(yùn)算單元。三,二維陣列還能通過(guò)避免訪問(wèn)寄存器來(lái)促成脈動(dòng)實(shí)現(xiàn),節(jié)約能源。四,TPU 的量化應(yīng)用使用 K80 并不支持的 8 比特整數(shù)而不是 GPU 的 32 比特浮點(diǎn)數(shù)。數(shù)據(jù)小幅度改善的不僅是計(jì)算能耗,還能四倍化權(quán)重 FIFO 的有效容量和權(quán)重內(nèi)存的有效帶寬。(盡管使用的是 8 比特整數(shù),但這些應(yīng)用被訓(xùn)練來(lái)實(shí)現(xiàn)與浮點(diǎn)數(shù)相同的準(zhǔn)確率。)五,TPU 忽略 GPU 需要而 DNN 不需要的特征,從而縮小 TPU 芯片、節(jié)約能耗、為其他更新留下空間。TPU 芯片的大小幾乎是 K80 的一半,通常運(yùn)行所需能量是后者的三分之一,而它的內(nèi)存卻是后者的 3.5 倍。這五個(gè)因素導(dǎo)致 TPU 在能耗和性能方面優(yōu)于 K80 GPU 30 倍。

            陷阱。在設(shè)計(jì)領(lǐng)域?qū)S眉軜?gòu)時(shí)不顧架構(gòu)歷史。不適用通用計(jì)算的想法可能適合領(lǐng)域?qū)S眉軜?gòu)。對(duì)于 TPU 而言,三個(gè)重要的架構(gòu)特征可以追溯到 1980 年代早期:脈動(dòng)陣列(systolic array)、解耦訪問(wèn)/執(zhí)行(decoupled access/execute)和復(fù)雜的指令集。第一個(gè)特征減少了大型矩陣相乘單元的面積和能耗;第二個(gè)特征在矩陣相乘單元運(yùn)算期間并行獲取權(quán)重;第三個(gè)特征更好地利用 PCIe bus 的有限帶寬來(lái)發(fā)送指令。因此,了解架構(gòu)歷史的領(lǐng)域?qū)S眉軜?gòu)具備競(jìng)爭(zhēng)優(yōu)勢(shì)。

            謬誤。如果谷歌對(duì) CPU 使用更加高效,它得到的結(jié)果將可以媲美 TPU。由于有效使用高級(jí)向量擴(kuò)展(AVX2)整數(shù)支持需要大量工作,最初在 CPU 上只有一個(gè) DNN 有 8 位結(jié)果,其收益大約是 3.5 倍。用浮點(diǎn)而不是 roofline 來(lái)顯示所有 CPU 結(jié)果,會(huì)更加明確(也不需要太多空間)。如果所有 DNN 都有類似的加速,性能/功耗比將分別從 41 倍和 83 倍降為 12 倍和 24 倍。

            謬誤。如果谷歌使用合適的新版本,GPU 結(jié)果將與 TPU 相匹配。表 3 報(bào)告了發(fā)布 GPU 和客戶何時(shí)可以在云中使用 GPU 的區(qū)別。與較新的 GPU 進(jìn)行公平比較將包括新的 TPU,而對(duì)于另外的 10W,我們只需使用 K80 的 GDDR5 內(nèi)存就可以將 28 納米、0.7GHz、40W TPU 的性能提高三倍。把 TPU 移動(dòng)到 16 納米工藝將進(jìn)一步提高其性能/功耗。16 納米英偉達(dá) Pascal P40 GPU 的峰值性能是原 TPU 的一半,但在 250 瓦時(shí),能耗卻是原來(lái)的很多倍。如前所述,缺乏誤差檢測(cè)意味著 Google 無(wú)法再去數(shù)據(jù)中心部署 P40,因此無(wú)法在它們身上運(yùn)行生產(chǎn)工作負(fù)載來(lái)確定其實(shí)際相對(duì)性能。

            相關(guān)研究

            兩篇介紹 DNN ASIC 的研究文章至少可以追溯到 20 世紀(jì) 90 年代初。如 2016 年的《Communications》中所述,DianNao 家族有四種 DNN 架構(gòu),通過(guò)對(duì) DNN 應(yīng)用程序中的內(nèi)存訪問(wèn)模式提供有效的架構(gòu)支持,可以最大限度地減少片上和外部 DRAM 的內(nèi)存訪問(wèn)。最初的 DianNao 使用 64 個(gè) 16 位整數(shù)乘法累加單元的數(shù)組。


            谷歌 TPU 3.0 于今年 5 月推出,其功能是 2.0 的八倍,性能高達(dá) 100petaflops。

            DNN 的特定領(lǐng)域架構(gòu)仍然是計(jì)算機(jī)架構(gòu)師的熱門(mén)話題,主要聚焦于稀疏矩陣架構(gòu),這是在 2015 年 TPU 首次部署之后提出的。高效推理機(jī)基于第一次傳遞,通過(guò)過(guò)濾出非常小的值,將權(quán)重?cái)?shù)量減少 9 倍左右,然后使用哈夫曼編碼進(jìn)一步縮小數(shù)據(jù)以提高推理機(jī)的性能。Cnvlutin 避免了激活輸入為零時(shí)的乘法運(yùn)算,這種幾率可以達(dá)到 44%,部分原因可能是線性整流函數(shù)(ReLU),非線性函數(shù)將負(fù)值轉(zhuǎn)換為零,使平均性能提高了 1.4 倍。Eyeriss 是一種新穎的低功耗數(shù)據(jù)流架構(gòu),通過(guò)游程編碼數(shù)據(jù)利用零來(lái)減少內(nèi)存占用,并通過(guò)避免輸入為零時(shí)的計(jì)算來(lái)節(jié)省功率。Minerva 是一種跨算法、結(jié)構(gòu)和電路學(xué)科的協(xié)同設(shè)計(jì)系統(tǒng),通過(guò)用量化數(shù)據(jù)和小值修剪激活函數(shù)的方式把功耗降低到原來(lái)的 1/8。2017 年的相關(guān)研究是 SCNN——一種稀疏和壓縮卷積神經(jīng)網(wǎng)絡(luò)的加速器。權(quán)重和激活函數(shù)都被壓縮在 DRAM 和內(nèi)部緩沖器中,從而減少了數(shù)據(jù)傳輸所需的時(shí)間和能量,并允許芯片存儲(chǔ)更大的模型。

            2016 年以來(lái)的另一個(gè)趨勢(shì)是用于訓(xùn)練的特定領(lǐng)域架構(gòu)。例如,ScaleDeep 用來(lái)對(duì)專為 DNN 訓(xùn)練和推理而設(shè)計(jì)的高性能服務(wù)器進(jìn)行評(píng)估,該服務(wù)器包含數(shù)千個(gè)處理器。每塊芯片包含計(jì)算量大和存儲(chǔ)量大的塊,比例為 3:1,性能優(yōu)于 GPU 6~28 倍。它用 16 位或 32 位浮點(diǎn)運(yùn)算來(lái)計(jì)算。芯片通過(guò)與 DNN 通信模式匹配的高性能互連拓?fù)溥B接。和 SCNN 一樣,這種拓?fù)渲辉?CNN 上評(píng)估。2016 年,CNN 僅占谷歌數(shù)據(jù)中心 TPU 工作量的 5%。計(jì)算機(jī)架構(gòu)師期待對(duì)其它類型的 DNN 和硬件實(shí)現(xiàn)進(jìn)行 ScaleDeep 評(píng)估。

            DNN 似乎是 FPGA 作為數(shù)據(jù)中心計(jì)算平臺(tái)的一個(gè)良好用例。部署的一個(gè)例子是 Catapult。盡管 Catapult 是在 2014 年公開(kāi)發(fā)布的,但它與 TPU 是同一個(gè)時(shí)代的,因?yàn)?2015 年它與 TPU 同時(shí)在微軟數(shù)據(jù)中心部署了 28 納米 Stratix V FPGA。Catapult 運(yùn)行 CNN 比普通服務(wù)器快 2.3 倍。也許 Catapult 和 TPU 最顯著的區(qū)別在于,為了獲得最佳性能,用戶必須使用低級(jí)硬件設(shè)計(jì)語(yǔ)言 Verilog 編寫(xiě)長(zhǎng)程序,而不是使用高級(jí) TensorFlow 框架編寫(xiě)短程序;也就是說(shuō),「可再編程性」(re-programmability)來(lái)自于 TPU 的軟件,而不是最快 FPGA 的固件。

            總結(jié)

            盡管 TPU 在 I/O 總線上,并且內(nèi)存帶寬相對(duì)有限,限制了其使用(六個(gè) DNN 應(yīng)用程序中有四個(gè)內(nèi)存受限),但每個(gè)周期 65536 次乘法累加的一小部分仍然數(shù)目不小,如 roofline 性能模型所示。這個(gè)結(jié)果表明,Amdahl 定律的「cornucopia 推論」——大量廉價(jià)資源的低效利用仍然可以提供頗具性價(jià)比的高性能。

            我們了解到,推理應(yīng)用具有嚴(yán)格的響應(yīng)時(shí)間限制,因?yàn)樗鼈兺ǔJ敲嫦蛴脩舻膽?yīng)用;因此,當(dāng)面對(duì) 99% 的延遲期限時(shí),DNN 架構(gòu)需要表現(xiàn)良好。

            TPU 芯片利用其在 MAC 和片上內(nèi)存的優(yōu)勢(shì)運(yùn)行使用特定領(lǐng)域 TensorFlow 框架編寫(xiě)的短程序,該 TensorFlow 框架比 K80 GPU 芯片快 15 倍,因此能獲得 29 倍的性能/功耗優(yōu)勢(shì),這與性能/總擁有成本相關(guān)。與 Haswell CPU 芯片相比,對(duì)應(yīng)的比率分別為 29 和 83 倍。

            有五個(gè)架構(gòu)因素可以解釋這種性能差距:

            處理器。TPU 只有一個(gè)處理器,而 K80 有 13 個(gè),CPU 有 18 個(gè);單線程使系統(tǒng)更容易保持在固定的延遲限制內(nèi)。大型二維乘法單元。TPU 有一個(gè)非常大的二維乘法單元,而 CPU 和 GPU 分別只有 18 個(gè)和 13 個(gè)較小的一維乘法單元;矩陣乘法受益于二維硬件。脈動(dòng)陣列。二維組織支持脈動(dòng)陣列,減少寄存器訪問(wèn)和能量消耗。8 位整數(shù)。TPU 的應(yīng)用使用 8 位整數(shù)而不是 32 位浮點(diǎn)運(yùn)算來(lái)提高計(jì)算和內(nèi)存效率。棄掉的特征。TPU 放棄了 CPU 和 GPU 所需要但是 DNN 用不到的功能,這使得 TPU 更便宜,同時(shí)可以節(jié)約資源,并允許晶體管被重新用于特定領(lǐng)域的板載內(nèi)存。雖然未來(lái)的 CPU 和 GPU 在運(yùn)行推理時(shí)速度更快,但是使用 circa-2015 GPU 內(nèi)存重新設(shè)計(jì)的 TPU 將比原來(lái)快三倍,并使其性能/功耗優(yōu)勢(shì)分別為 K80 和 Haswell 的 70 倍和 200 倍。

            至少在過(guò)去十年中,計(jì)算機(jī)架構(gòu)研究人員一直在發(fā)布基于模擬的創(chuàng)新成果,這些成果使用了有限的基準(zhǔn),并聲稱通用處理器的改進(jìn)為 10% 或更少,而我們現(xiàn)在報(bào)告的收益是原來(lái)的十倍不止,這是應(yīng)用于真實(shí)生產(chǎn)應(yīng)用的真實(shí)硬件中部署的特定領(lǐng)域架構(gòu)的收益。

            商業(yè)產(chǎn)品之間的數(shù)量級(jí)差異在計(jì)算機(jī)架構(gòu)中很少見(jiàn),而這甚至可能導(dǎo)致 TPU 成為該領(lǐng)域未來(lái)工作的典型。我們預(yù)計(jì),其它人將會(huì)迎頭趕上,將門(mén)檻提得更高。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();