對替代性 TPU 設計的評估
和 FPU 類似,TPU 協(xié)同處理器比較容易評估,因此我們?yōu)榱鶄€應用創(chuàng)建了一個性能模型。模型模擬的結果和硬件實際性能的平均差距小于 10%。
我們使用性能模型評估了另一款假想的 TPU 芯片,記為 TPU'(使用同樣的半導體技術再多花 15 個月我們就能設計出這款芯片)。更激進的邏輯合成和模塊設計可以把時鐘頻率再提高 50%;為 GDDR5 內存設計接口電路(就像 K80 那樣)可以將權重讀取的內存帶寬提高四倍,將 roofline 從斜到平的拐點從 1350 降到 250。
單獨將時鐘頻率提高到 1,050 MHz 而不改善內存的話,性能提升非常有限。如果我們把時鐘頻率保持在 700MHz,但改用 GDDR5 作為內存,則加權平均值飛躍至 3.9倍。同時做這兩種措施其實并不會改變性能,因此假設的 TPU' 只具備更快的內存就夠了。
將 DDR3 權重內存替換成與 K80 相同 GDDR5 內存需要將內存通道的數量翻一倍,即 4 個通道。這一改進會需要將芯片面積擴大約 10%。GDDR5 還需要將 TPU 系統(tǒng)的功率預算從 861W 提高到 900W 左右,因為每臺服務器都有四個 TPU。
從圖4可看出,TPU'的總體每硅片性能/功耗是 Haswell 的 86 倍,K80 的 41 倍。其 incremental 指標是 Haswell 的 196 倍,K80 的 68 倍。
討論
這部分按照 Hennessy 和 Patterson 的謬誤-陷阱-反駁格式來展開:
謬誤:數據中心的 DNN 推斷應用將吞吐量和響應時間處于同等重要的地位。我們驚訝于谷歌 TPU 開發(fā)者對響應時間有這么高的要求,2014 年有人透露說的是:對于 TPU 來說,批量大小應該足夠大,以到達 TPU 的計算性能峰值,對延遲的要求不用那么苛刻。一個起到推動作用的應用是離線圖像處理,谷歌開發(fā)者的直覺是,如果交互式服務也需要 TPU,則大部分服務需要累積足夠大的批量然后才交給 TPU 計算。即使 2014 年谷歌關注響應時間(LSTM1)的應用開發(fā)者稱,2014 年的限制是 10ms,而真正向 TPU 移植時 10ms 將被減少至 7ms。很多此類服務對 TPU 的意料之外的要求,以及它們對快速響應時間的影響和偏好,改變了這個等式。應用編寫者通常會選擇降低延遲,而不是累積更大的批量。幸運的是,TPU 具備一個簡單、可重復的執(zhí)行模型,來滿足交互式服務的低響應時間以及高峰值吞吐量要求,即便是計算相對較小的批量時也比當前 CPU 和 GPU 具備更好的性能。
謬誤:K80 GPU 架構很適合進行 DNN 推理。我們發(fā)現(xiàn) TPU 在性能、能耗和成本方面優(yōu)于 K80 GPU 有五個方面的原因。1、TPU 只有一個處理器,而 K80 有 13 個,單線程當然更容易滿足嚴格的延遲目標。2、TPU 具備一個非常大的二維乘法單元,GPU 有 13 個小的一維乘法單元。DNN 的矩陣相乘密度適合二維陣列中的算術邏輯運算單元。3、二維陣列還能通過避免訪問寄存器來促成脈動式的芯片實現(xiàn),節(jié)約能源。4、TPU 的量化應用使用 8 位整型,而不是 GPU 的 32 位浮點;?K80 并不支持 8 位整型。使用更小的數據,改善的不僅是計算能耗,還能四倍化權重 FIFO 的有效容量和權重內存的有效帶寬。(盡管推理時使用的是 8 位整型,但訓練這些應用時會保證和使用浮點一樣的準確率)5、TPU 忽略 GPU 需要而 DNN 不需要的特征,從而縮小 TPU 芯片、節(jié)約能耗、為其他改進留下空間。TPU 芯片的大小幾乎是 K80 的一半,通常運行所需能量是后者的三分之一,而它的內存卻是后者的 3.5 倍。這五個因素導致 TPU 在能耗和性能方面優(yōu)于 K80 GPU 30 倍。
陷阱:在設計領域專用架構時不顧架構歷史。不適用通用計算的想法可能適合領域專用架構。對于 TPU 而言,三個重要的架構特征可以追溯到 1980 年代早期:脈動陣列(systolic array)、解耦訪問/執(zhí)行(decoupled access/execute)和復雜的指令集。第一個特征減少了大型矩陣相乘單元的面積和能耗;第二個特征在矩陣相乘單元運算期間并行獲取權重;第三個特征更好地利用 PCIe bus 的有限帶寬來發(fā)送指令。因此,對計算機架構歷史比較了解的領域專用架構設計師具備競爭優(yōu)勢。
謬誤:如果谷歌對 CPU 的使用更加高效,它得到的結果將可以媲美 TPU。由于有效使用 CPU 的高級向量擴展(AVX2)對整型計算做高效的支持需要大量工作,最初在 CPU 上只有一個 DNN 有 8 位整型的性能測試結果,它的性能提升大約是 3.5 倍。所有的 CPU 性能評估都基于浮點的計算性能來展示會更明確(也不會占太多圖表空間),也就沒有給這個整型計算結果繪制單獨的 Roofline 圖。如果所有 DNN 都能夠得到類似的加速,TPU 帶來的性能/功耗比提升將分別從 41 倍和 83 倍降為 12 倍和 24 倍。
謬誤:如果谷歌使用合適的新版本,GPU 結果將與 TPU 差不多。表 3 報告了發(fā)布 GPU 和客戶何時可以在云中使用 GPU 的區(qū)別。與較新的 GPU 進行公平比較將包括新的 TPU,而對于額外增加的 10W 功耗,我們只需使用 K80 的 GDDR5 內存就可以將 28 納米、0.7GHz、40W TPU 的性能提高三倍。把 TPU 移動到 16 納米工藝將進一步提高其性能/功耗。16 納米英偉達 Pascal P40 GPU 的峰值性能是第一代TPU 的一半,但它 250 瓦的能耗卻是原來的很多倍。如前所述,缺乏錯誤檢測意味著 Google 無法再去數據中心部署 P40,因此無法在它們身上運行生產工作負載來確定其實際相對性能。
相關研究
兩篇介紹 DNN ASIC 的研究文章至少可以追溯到 20 世紀 90 年代初。如 2016 年的 ACM 通訊中所述,DianNao 家族有四種 DNN 架構,通過對 DNN 應用程序中的內存訪問模式提供有效的架構支持,可以最大限度地減少片上和外部 DRAM 的內存訪問。最初的 DianNao 使用 64 個 16 位整數乘法累加單元的陣列。
?
谷歌 TPU 3.0 于今年 5 月推出,其功能是 TPU 2.0 的八倍,性能高達 100petaflops,芯片使用液體冷卻
為 DNN 設計特定領域架構仍然是計算機架構師的熱門話題,其中一個焦點是稀疏矩陣的計算架構,這是在 2015 年 TPU 首次部署之后提出的。Efficient Inference Engine(高效推理機)中有一步單獨的初始掃描,它會過濾去掉非常小的值,將權重數量減少到 1/10 左右,然后使用哈夫曼編碼進一步縮小數據以提高推理的性能。Cnvlutin 略去了激活輸入為零時的乘法運算,這種計算出現(xiàn)的幾率可以達到 44%,部分原因是非線性變換函數 ReLU 會把輸入的負值轉換為零;這種略去計算的做法使平均性能提高了 1.4 倍。Eyeriss 是一種新穎的低功耗數據流架構,通過游程編碼利用數據中的零來減少內存占用,并通過避免輸入為零時的計算來節(jié)省能耗。Minerva 是一種跨算法、結構和電路學科的協(xié)同設計系統(tǒng),通過量化數據以及對較小的激活函數剪枝的方式把功耗降低到原來的 1/8。這種系統(tǒng)在 2017 年展出的成果是 SCNN——一種稀疏和壓縮卷積神經網絡的加速器。權重和激活函數都被壓縮在 DRAM 和內部緩沖器中,從而減少了數據傳輸所需的時間和能量,并允許芯片存儲更大的模型。
2016 年以來的另一個趨勢,是用于訓練的特定領域架構。例如,ScaleDeep 就是為 DNN 訓練和推理設計的高性能服務器的一次嘗試,它包含數千個處理器。其中的每塊芯片都以 3:1 的比例包含計算專用模塊和存儲專用模塊,性能優(yōu)于 GPU 6-28 倍。它支持 16 位或 32 位浮點計算。芯片通過與 DNN 通信模式匹配的高性能互連拓撲連接。和 SCNN 一樣,這種拓撲只在 CNN 上評估。2016 年,CNN 僅占谷歌數據中心 TPU 工作量的 5%。計算機架構師期待對其它類型的 DNN 和硬件實現(xiàn)進行 ScaleDeep 評估。
DNN 似乎是 FPGA 作為數據中心計算平臺的一個良好用例。實際部署的一個例子是 Catapult。盡管 Catapult 是在 2014 年公開發(fā)布的,但它與 TPU 是同一個時代的,因為 2015 年在微軟數據中心部署了 28 納米 Stratix V FPGA,與谷歌部署 TPU 差不多在同一時間。Catapult 運行 CNN 比普通服務器快 2.3 倍。也許 Catapult 和 TPU 最顯著的區(qū)別在于,為了獲得最佳性能,用戶必須使用低級硬件設計語言 Verilog 為 FPGA 編寫長程序,而不是使用高級 TensorFlow 框架編寫短程序;也就是說,“可再編程性”(re-programmability)來自于 TPU 的軟件,而不是最快 FPGA 的固件。
總結
盡管 TPU 在 I/O 總線上,并且內存帶寬相對有限限制了它發(fā)揮全部效能(六個 DNN 應用程序中有四個受限于內存),但一個很大的數即便拆到很細,拆到每個周期 65536 次乘法累加計算,仍然是一個相對較大的數字,如 roofline 性能模型所示。這個結果表明,Amdahl 定律的其實有一個非常有價值的推論——大量廉價資源的低效利用仍然可以提供頗具性價比的高性能。
我們了解到,推理應用具有嚴格的響應時間限制,因為它們通常是面向用戶的應用;因此,為 DNN 設計計算芯片的設計師們需要保證滿足 99% 情況下的時間限制要求。
TPU 芯片利用其在 MAC 和片上內存的優(yōu)勢運行使用特定領域 TensorFlow 框架編寫的短程序,該 TensorFlow 框架比 K80 GPU 芯片快 15 倍,因此能獲得 29 倍的性能/功耗優(yōu)勢,這與性能/總擁有成本相關。與 Haswell CPU 芯片相比,對應的比率分別為 29 和 83 倍。
有五個架構因素可以解釋這種性能差距:
處理器。TPU只有一個處理器,而K80有13個,CPU有18個;單線程使系統(tǒng)更容易保持在固定的延遲限制內。大型二維乘法單元。TPU有一個非常大的二維乘法單元,而CPU和GPU分別只有18個和13個較小的一維乘法單元;二維硬件在矩陣乘法中有很好的性能。脈動陣列。二維組織支持脈動陣列,減少寄存器訪問和能量消耗。8位整型。TPU的應用使用 8 位整型而不是 32 位浮點運算來提高計算和內存效率。棄掉的特征。TPU放棄了 CPU 和 GPU 需要但是 DNN 用不到的功能,這使得 TPU 更便宜,同時可以節(jié)約資源,并允許晶體管被重新用于特定領域的板載內存。
雖然未來的 CPU 和 GPU 在運行推理時速度更快,但是使用 circa-2015 型 GPU 內存重新設計的 TPU 將比原來快三倍,并使其性能/功耗優(yōu)勢分別為 K80 和 Haswell 的 70 倍和 200 倍。
至少在過去十年中,計算機架構研究人員發(fā)布的創(chuàng)新成果都是來自模擬計算的,這些成果使用了有限的基準,對于通用處理器的改進也只有 10% 或更少,而我們現(xiàn)在報告的性能提升是原來的十倍不止,這是應用于真實生產應用的真實硬件中部署的特定領域架構的收益。
商業(yè)產品之間的數量級差異在計算機架構中很少見,而這甚至可能導致 TPU 成為該領域未來工作的典范。我們預計,其他人也會跟進這個方向,并將門檻提得更高。





