為什麼 TPU 運算速度比普通的 GPU、CPU 組合快 15-30 倍?
我們找到了一些資料,希望能夠解答為什麼 TPU 運算速度比普通的 GPU、CPU 組合快 15-30 倍。同時,我們認為 Google 在 TPU 研發上的這些創新極有可能將成為 Inter、AMD 跟進同類硬體開發的標杆,並最終成為一種趨勢。
一、針對深度學習的定製化研發
TPU 是谷歌專門為加速深層神經網路運算能力而研發的一款晶元,其實也是一款 ASIC。
ASIC,指依照產品需求不同而定製化的特殊規格集成電路,由特定使用者要求和特定電子系統的需要而設計、製造。一般來說,ASIC 在特定功能上進行了專項強化,可以根據需要進行複雜的設計,但相對來說,實現更高處理速度和更低能耗。相對應的,ASIC 的生產成本也非常高。
一般公司很難承擔為深度學習開發專門處理器 ASIC 晶元的成本和風險。首先為了性能必須使用最好的半導體製造工藝,而現在用最新的工藝製造晶元一次性成本就要幾百萬美元,非常貴。就算有錢,還需要拉一支隊伍從頭開始設計,設計時間往往要到一年以上,time to market 時間太長,風險很大。如果無法實現規模化的應用,就算開發成功也缺少實際使用價值。所以,企業一般傾向於採用通用性的晶元(如 CPU、GPU),或者半定製化晶元(FPGA)。
谷歌之所以敢自己做定製化研發,一方面自然是有錢任性,另一方面也由於谷歌提供的很多服務,包括谷歌圖像搜索(Google ImageSearch)、谷歌照片(Google Photo)、谷歌雲視覺 API(Google Cloud Vision API)、谷歌翻譯等產品和服務都需要用到深度神經網路。基於谷歌自身龐大的體量,開發一種專門的晶元開始具備規模化應用(大量分攤研發成本)的可能。
假如存在這樣一個場景,其中人們在 1 天中使用谷歌語音進行 3 分鐘搜索,並且我們要在正使用的處理器中為語音識別系統運行深度神經網路,那麼我們就不得不翻倍谷歌數據中心的數量。
我們的負載是用高級的 TensorFlow 框架編寫的,並是用了生產級的神經網路應用(多層感知器、卷積神經網路和 LSTM),這些應用佔到了我們的數據中心的神經網路推理計算需求的 95%。
表 1:6 種神經網路應用(每種神經網路類型各 2 種)佔據了 TPU 負載的 95%。表中的列依次是各種神經網路、代碼的行數、神經網路中層的類型和數量(FC 是全連接層、Conv 是卷積層,Vector 是向量層,Pool 是池化層)以及 TPU 在 2016 年 7 月的應用普及程度。
相對於 CPU 和 GPU 的隨時間變化的優化方法(高速緩存、無序執行、多線程、多處理、預取……),這種 TPU 的確定性的執行模型(deterministic execution model)能更好地匹配我們的神經網路應用的 99% 的響應時間需求,因為 CPU 和 GPU 更多的是幫助對吞吐量(throughout)進行平均,而非確保延遲性能。這些特性的缺失有助於解釋為什麼儘管 TPU 有極大的 MAC 和大內存,但卻相對小和低功耗。
TPU 各模塊的框圖。主要計算部分是右上方的黃色矩陣乘法單元。其輸入是藍色的「權重 FIFO」和藍色的統一緩存(Unified Buffer(UB));輸出是藍色的累加器(Accumulators(Acc))。黃色的激活(Activation)單元在 Acc 中執行流向 UB 的非線性函數。
二、大規模片上內存
TPU 在晶元上使用了高達 24MB 的局部內存,6MB 的累加器內存以及用於與主控處理器進行對接的內存,總共占晶元面積的 37%(圖中藍色部分)。
這表示 Google 充分意識到片外內存訪問是 GPU 能效比低的罪魁禍首,因此不惜成本在晶元上放了巨大的內存。相比之下,Nvidia 同時期的 K80 只有 8MB 的片上內存,因此需要不斷地去訪問片外 DRAM。
TPU 晶元布局圖。藍色的數據緩存占晶元的 37%。黃色的計算是 30%。綠色的 I/O 是 10%。紅色的控制只有 2%。CPU 或 GPU 中的控制部分則要大很多(並且非常難以設計)。
三、低精度 (8-bit) 計算
TPU 的高性能還來源於對於低運算精度的容忍。
研究結果表明低精度運算帶來的演算法準確率損失很小,但是在硬體實現上卻可以帶來巨大的便利,包括功耗更低速度更快占晶元面積更小的運算單元,更小的內存帶寬需求等。
這次公布的信息顯示,TPU 採用了 8-bit 的低精度運算。也就是說每一步操作 TPU 將會需要更少的晶體管。在晶體管總容量不變的情況下,每單位時間可以在這些晶體管上運行更多的操作,這樣就能夠以更快的速度通過使用更加複雜與強大的機器學習演算法得到更加智能的結果。
在 Google 的測試中,使用 64 位浮點數學運算器的 18 核心運行在 2.3 GHz 的 Haswell XeonE5-2699 v3 處理器能夠處理每秒 1.3 TOPS 的運算,並提供 51GB / 秒的內存帶寬;Haswell 晶元功耗為 145 瓦,其系統(擁有 256 GB 內存)滿載時消耗 455 瓦特。相比之下,TPU 使用 8 位整數數學運算器,擁有 256GB 的主機內存以及 32GB 的內存,能夠實現 34GB / 秒的內存帶寬,處理速度高達 92 TOPS ,這比 Haswell 提升了 71 倍,此外,TPU 伺服器的熱功率只有 384 瓦。
四、脈動式數據流
對於 GPU,從存儲器中取指令與數據將耗費大量的時間。TPU 甚至沒有取命令的動作,而是主處理器提供給它當前的指令,而 TPU 根據目前的指令做相應操作,這使得 TPU 能夠實現更高的計算效率。
在矩陣乘法和卷積運算中,許多數據是可以復用的,同一個數據需要和許多不同的權重相乘並累加以獲得最後結果。因此,在不同的時刻,數據輸入中往往只有一兩個新數據需要從外面取,其他的數據只是上一個時刻數據的移位。
在這種情況下,把片上內存的數據全部 Flush 再去取新的數據無疑是非常低效的。根據這個計算特性,TPU 加入了脈動式數據流的支持,每個時鐘周期數據移位,並取回一個新數據。這樣做可以最大化數據復用,並減小內存訪問次數,在降低內存帶寬壓力的同時也減小了內存訪問的能量消耗。
五、散熱功能強化
對於性能來說,限制處理器速度的最大兩個因素是發熱與邏輯門的延遲,其中發熱是限制速度最主要的因素。現在的處理器大部分使用的是 CMOS 技術,每一個時鐘周期都會產生能量耗散,所以速度越快,熱量就越大。下面是一張 CPU 時鐘頻率與能量消耗的關係,可以看到,晶元能耗隨運算速度變化呈現指數級增長。
TPU 在降低功耗的同時,對於散熱能力也做了進一步的優化。從 TPU 的外觀圖可以看出,其中間突出一塊很大的金屬片,這便是為了可以很好地對 TPU 高速運算是產生大量的熱進行耗散。
六、硬體、軟體持續優化
谷歌認為現在的 TPU 仍在硬體和軟體方面存在很大的優化空間,比如假定用上了 NVIDIA K80 GPU 中的 GDDR5 內存,那麼 TPU 就可以發揮出更好的性能。
此外,谷歌工程師還為 TPU 開發了名為 CNN1 的軟體,其可以讓 TPU 的運行速度比普通 CPU 高出 70 多倍!
版權申明:本文由智慧思特大數據編輯整理,雷鋒網獲得授權轉載。
※受美日政府重壓 東芝要放棄鴻海270億美元的買賣?
※IDC:網路升級是公共雲部署的重點
※IBM人工智慧技術商業化落地現狀:目前已滲透到60多個職業領域
※深度:ofo,被資本裹挾著進擊的少年派
TAG:雷鋒網 |
※Imagination發布專為自主運算時代的安全關鍵系統所設計的 CPU IP ─ MIPS I6500-F
※聯發科 Helio P70 將內建 AI 運算單元,2018 年以台積電 12 納米生產
※Google公布可180萬億次浮點運算的Cloud TPU,還要用AI幫你畫貓貓
※聯發科Helio P70將內建AI運算單元 2018年以台積電12納米生產
※「Movidius發布最新一代VPU」集成DNN加速器,每秒超過1萬億次運算
※NVIDIA 推出全球首台車載 AI 計算平台,每秒可進行 320 萬億次運算
※Movidius發布最新一代VPU,集成DNN加速器,每秒超過1萬億次運算
※英特爾推出Cyclone10 FPGA,滿足物聯網運算需求!
※從TeslaAP2.0/2.5運算單元看未來無人駕駛域控制器的設計趨勢
※Akka(10): 分布式運算:集群-Cluster
※PyTorch 最新版發布:API 變動,增加新特徵,多項運算和載入速度提升
※設計專屬邏輯運算,英特爾為VR研發Core CPU
※ARM推出DynamlQ技術 可提升50倍人工智慧運算性能
※谷歌推專為AI運算服務第二代TPU處理器 比傳統CPU快
※0046 JavaScript實現四則運算器程序
※Excel-VBA批量將表達式轉換為運算結果
※NASA舉辦挑戰賽 加快標誌性CFD軟體運算速度
※科技典範進入平行運算時代,NVIDIA 笑、Intel 哭
※Akka(8): 分布式運算:Remoting-遠程查找式