為什麼 TPU 運算速度比普通的 GPU、CPU 組合快 15-30 倍?

2021-01-19 雷鋒網

我們找到了一些資料,希望能夠解答為什麼 TPU 運算速度比普通的 GPU、CPU 組合快 15-30 倍。同時,我們認為 Google 在 TPU 研發上的這些創新極有可能將成為 Intel、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 多倍!

版權申明:本文由智慧思特大數據編輯整理,雷鋒網(公眾號:雷鋒網)獲得授權轉載。

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • APU、GPU、CPU之區別是什麼?APU未來會取代CPU嗎?
    一、apu、cpu、gpu之區別apu可以理解成cpu加gpu嗎?可以這樣理解。但是還包含以下硬體:內存控制器、I/O控制器、專用視頻解碼器、顯示輸出和總線接口等等。APU是加速處理器的英文縮寫,是AMD率先推出的整合了x86、x64CPU處理核心和GPU處理核心的新型融聚處理器。
  • 聯想昭陽k29改造最佳cpu-i7 3540M圖文教程
    考慮到之前剛升級的i5 3210m的運算能力已經足夠,因此沒有選用四核的最佳選擇3632qm。本文引用地址:http://www.eepw.com.cn/article/246444.htm本人使用感受:這個cpu算是k29升級用最佳cpu之一:1、cpu足夠使用;雙核睿頻輕易到3.5G。最高睿頻可到3.7G。但在低負荷下同樣具有1.2G的低頻低熱。
  • AI大型模擬計算比超算快200倍 可執行複雜的模擬和機器...
    AI大型模擬計算比超算快200倍 可執行複雜的模擬和機器學習任務  Evelyn Zhang • 2020-11-30 09:55:40 來源:前瞻網
  • CPU、GPU、TPU、NPU等到底是什麼?
    並行計算(Parallel Computing)是指同時使用多種計算資源解決計算問題的過程,是提高計算機系統計算速度和處理能力的一種有效手段。它的基本思想是用多個處理器來共同求解同一問題,即將被求解的問題分解成若干個部分,各部分均由一個獨立的處理機來並行計算。並行計算可分為時間上的並行和空間上的並行。
  • GPU上的隨機森林:比Apache Spark快2000倍
    樹可以在集群中跨進程和機器並行訓練,結果比使用單個進程的訓練時間快得多。在本文中,我們探索了使用Apache Spark在CPU機器集群上實現分布式隨機森林訓練,並將其與使用NVIDIA RAPIDS和Dask的GPU機器集群上的訓練性能進行了比較。
  • GPU利用率上不去?快來看看別人家的tricks吧~
    所以伸手黨們也可以X掉了╮( ̄▽ ̄」」)╭緣起很早很早之前,在小夕剛接觸tensorflow和使用GPU加速計算的時候,就產生過一個疑惑。為什麼顯卡的顯存都快滿了,GPU利用率還顯示這麼低呢?好浪費呀,但是又無可奈何。當時GPU利用率100%的情況基本是僅存於一塊顯卡塞4、5個不費顯存的小任務的情況。
  • RP Fiber Power 新增數字工具箱 ,速度快得飛起
    對於大多數用戶來說,RP Fiber Power的標準版本所具有的運算速度是完全足夠的。大多數提供的演示腳本可以在一個普通的PC上執行,最多在幾秒鐘內就可以完成。在許多實際應用中,即使是速度不是特別快的計算機,計算速度也不是問題。
  • 評測| 雲CPU上的TensorFlow基準測試:優於雲GPU的深度學習
    具有64個vCPU和57.6GBRAM的可搶佔的n1-highcpu-64實例加上使用SkylakeCPU的附加款的總價是 0.509美元/小時,花費大約是GPU實例的2/3。如果在64vCPU上的模型訓練速度與GPU版本差不多(或者就略慢那麼一點),那麼用CPU來代替GPU就是划算的。
  • 日本Fugaku成世界上運算速度最快超級計算機,是此前榜首的2.8倍
    日本的超級計算機Fugaku(富嶽)剛剛超越了IBM的超級計算機Summit,成為了世界超級計算機500強排行榜中運算速度最快的超級計算機,這也是日本的超級計算機九年來首次登頂。Fugaku的HPL的成績是415.5petaflops,而此前Summit的成績是148.8petaflops,也就是說,富嶽的運輸速度達到了Summit的2.8倍。
  • CPU配置|cpuinfo參數
    如果想了解系統中CPU的提供商和相關配置信息,則可以通過/proc/cpuinfo文件得到。CPU二級緩存大小;physical id : 物理CPU的標號;siblings : 單個CPU邏輯物理核數;core id : 當前物理核在其所處CPU中的編號;cpu cores : 該邏輯核所處CPU的物理核數;apicid : 區分不同邏輯核的編號;initial apicid : 初始的apicid數值fpu : 是否具有浮點運算單元;fpu_exception : 是否支持浮點運算異常
  • 元兇竟然是CPU的散熱方式
    說到電腦的cpu,大家都知道,cpu之於電腦,猶如人的大腦,是起到運算和處理所有信息的作用,所以一臺電腦的性能高低,可以說直接取決於cpu,其次是內存和硬碟等硬體。這裡順便提一句,電腦的工作原理就是,cpu負責運算和處理所有數據,然後將數據存儲到硬碟裡,但是因為cpu速度超級快,而硬碟速度超級慢,於是出現了內存這樣的中間橋梁,cpu先將數據暫存到內存裡,內存再過渡存儲到硬碟裡,這樣就緩解了超快的cpu和超慢的硬碟之間的矛盾。
  • 雙核CPU和四核CPU小科普,那些你不知道的CPU小秘密!
    就像是本來一件事由一個人做,現在有兩個人做了,速度就要比一個人做要快得多。大家可以把它想像成人的心臟,單核的人只有一個心臟,雙核的人是有兩個心臟。既然會有兩個雙核處理同一件任務,那麼四核處理器的運算速度是雙核處理器的2倍。但是如果你認為任何時候四核CPU都比雙核CPU運算速度快,甚至是雙核CPU的兩倍那你就錯了。這取決於雙核CPU和四核CPU雙方是否都達到滿載階段,當雙方CPU都沒有達到滿載階段時,雙方的運算速度是差不多的。
  • 比TensorFlow Lite 快 15.6 倍!業界首個移動 GPU BNN 加速引擎...
    項目地址:https://code.ihub.org.cn/projects/915填補移動GPU二值神經網絡推理計算優化空白二值神經網絡(Binary Neural Networks)是一種特殊的神經網絡,它將網絡的權重和中間特徵壓縮為 1 個比特位,通過使用位運算替代傳統的浮點運算來實現模型的壓縮與加速。
  • 《精靈寶可夢》圖鑑376:大腦的運算速度堪比計算機——巨金怪
    因為Mega巨金怪的表現力實在是太好了,導致如今環境下的普通巨金怪在對戰上相對比較少見(特別是實機環境下),目前普通巨金怪本身有著打擊面比較劣勢方面的軟肋,不過常規下依然是走四攻輸出比較多見,畢竟本身高達135的物攻該是非常充足的,不過速度只有70,所以也有著諸如用高移來彌補速度不足的打法,另外它還有著隱形巖,所以也可以撒撒釘子。大腦運算速度比計算機還快的寶可夢。
  • GPU和CPU到底有什麼區別
    步入DX10時代,shader(流處理器)單元數量成為衡量顯卡級別的重要參數之一 G80中擁有128個單獨的ALU,因此非常適合併行計算,而且數值計算的速度遠遠優於CPU。 GPU運算能力越來越快,甚至超越CPU 早期的3D遊戲,顯卡只是為屏幕上顯示像素提供一個緩存,所有的圖形處理都是由CPU單獨完成。圖形渲染適合併行處理,擅長於執行串行工作的CPU實際上難以勝任這項任務。
  • 6月份cpu天梯榜,告訴你麒麟990 5G晶片為何比驍龍855+排名更高
    這也是為什麼手機屏幕越來越大的原因,屏幕夠大才更好操作。而在遊戲娛樂上,對手機的性能也要求越來越高。因此決定手機性能的cpu,就越來越重要。對各家的cpu,我們可以通過cpu天梯榜排名來判斷其性能,以方便我們選擇合適的手機。我們可以看到在cpu天梯榜上,麒麟990 5G晶片排名是要高於驍龍855plus的。但是有很多用戶對這個排名,感到懷疑。
  • 「九章」比最快的超算還快一百萬億倍 量子計算「魔力」在哪
    而「九章」在處理高斯玻色採樣問題上,比「懸鈴木」快了一百萬億倍。那麼,到底什麼是量子計算機?它為什麼能比經典計算機更強大?世界上第一臺計算機在1946年美國的賓夕法尼亞大學誕生,它是個佔地170平方米,重30噸的龐然大物,有18000個電子管,每秒鐘可以運算5000次。
  • 選手機看cpu,最新手機cpu性能天梯圖,讓你不再買錯手機
    一款手機的性能是否強大,主要還是看它使用的cpu處理器,cpu性能強,自然手機的性能就會強。因此,選擇手機的時候,先要看它使用的是哪一款cpu。一款手機cpu的性能,主要由裡面的cpu和gpu的性能決定。其實,一款手機cpu處理器的跑分,主要是這兩個部分的成績。
  • 基於RTX2060構建TensorFlow-gpu(keras)學習平臺
    一、conda命令1. onda env list 或 conda info -e 查看當前存在哪些虛擬環境2. conda create --name tf36gpu python=3.6 anaconda3. conda remove -n your_env_name(虛擬環境名稱) --all 刪除虛擬環境4.
  • CPU如何計算1+1?如何進行四則運算的?
    例如,在運行時產生的熱量太多,可靠性較差,運算速度不快,價格昂貴,體積龐大,這些都使計算機發展受到限制。於是,電晶體開始被用來作計算機的元件。 電晶體利用電訊號來控制自身的開合,而且開關速度可以非常快,實驗室中的切換速度可達100GHz以上。