[轉] CPU GPU TPU

Google I/O是由Google舉行的網絡開發者年會,討論的焦點是用Google和開放網絡技術開發網絡應用。這個年會自2008年開始舉辦,到今年已是舉辦的第9屆了。html

在今年的年會上,Google主要發佈瞭如下8種產品:智能助手Google Assistant,與Amazon Echo競爭的無線揚聲器和語音命令設備Google Home,消息應用Allo,視頻呼叫應用Duo,VR平臺Daydream,獨立應用程序的支持Android Wear 2.0,容許不安裝而使用應用的Android Instant Apps,以及容許在Chromebook上使用Android應用Google Play on Chrome OS。算法

而這8中產品主要都集中在了軟件領域。編程

在Google I/O 2016的主題演講進入尾聲時,Google的CEO皮採提到了一項他們這段時間在AI和機器學習上取得的成果,一款叫作Tensor Processing Unit(張量處理單元)的處理器,簡稱TPU。在大會上皮採只是介紹了這款TPU的一些性能指標,並在隨後的博客中公佈了一些使用場景,並無對這款處理器的架構以及內部的運做機制進行詳細闡述,因此咱們也許須要從一些常見的處理器的結構出發,試圖猜想與探究下這款用於機器學習的專屬芯片到底有着怎樣的一個面孔。緩存

首先咱們先來看看咱們最熟悉的中央處理器(Central Processing Unit),簡稱CPU。它是一種超大規模的集成芯片,並且是一種通用芯片,也就是說,它能夠用它來作不少種類的事情。咱們平常使用的電腦使用的處理器基本上都是CPU,看個電影、聽個音樂、跑個代碼,都沒啥問題。服務器

咱們來看看CPU的結構

CPU主要包括運算器(ALU,Arithmetic and Logic Unit)和控制器(CU,Control Unit)兩大部件。此外,還包括若干個寄存器和高速緩衝存儲器及實現它們之間聯繫的數據、控制及狀態的總線。從上面的敘述咱們能夠看出,CPU主要包含運算邏輯器件、寄存器部件以及控制部件等。網絡

從字面上咱們也很好理解,運算邏輯器件主要執行算術運算、移位等操做,以及地址運算和轉換;寄存器件主要用於保存運算中產生的數據以及指令等;控制器件則是負責對指令譯碼,而且發出爲完成每條指令所要執行的各個操做的控制信號。架構

咱們能夠運用下面這張圖來講明一條指令在CPU中執行的大體過程:框架

CPU從程序計數器取到指令,經過指令總線將指令送至譯碼器,將轉譯後的指令交給時序發生器與操做控制器,而後運算器對數據進行計算,經過數據總線將數據存至數據緩存寄存器。iphone

咱們從CPU的結構以及執行過程能夠看出,CPU遵循的是馮諾依曼架構,馮諾依曼的核心就是:存儲程序,順序執行。機器學習

從上面的描述咱們能夠看出,CPU就像一個有條不紊的管家,咱們吩咐的事情老是一步一步來作。可是隨着摩爾定律的推動以及人們對更大規模與更快處理速度的需求的增長,CPU好像執行起任務來就不那麼使人滿意了。因而人們就想,咱們可不能夠把好多個處理器放在同一塊芯片上,讓他們一塊兒來作事,這樣效率是否是就會高不少,這是GPU就誕生了。

 

GPU誕生了

GPU全稱爲Graphics Processing Unit,中文爲圖形處理器,就如它的名字同樣,GPU最初是用在我的電腦、工做站、遊戲機和一些移動設備(如平板電腦、智能手機等)上運行繪圖運算工做的微處理器。由於對於處理圖像數據來講,圖像上的每個像素點都有被處理的須要,這是一個至關大的數據,因此對於運算加速的需求圖像處理領域最爲強烈,GPU也就應運而生。

經過CPU與GPU結構上的對比咱們能夠看出,CPU功能模塊不少,能適應複雜運算環境;GPU構成則相對簡單,大部分晶體管主要用於構建控制電路(好比分支預測等)和Cache,只有少部分的晶體管來完成實際的運算工做。而GPU的控制相對簡單,且對Cache的需求小,因此大部分晶體管能夠組成各種專用電路、多條流水線,使得GPU的計算速度有了突破性的飛躍,擁有了更強大的處理浮點運算的能力。當前最頂級的CPU只有4核或者6核,模擬出8個或者12個處理線程來進行運算,可是普通級別的GPU就包含了成百上千個處理單元,高端的甚至更多,這對於多媒體計算中大量的重複處理過程有着天生的優點。

這就比如在畫一幅畫的時候CPU是用一支筆一筆一筆的來畫,而GPU則是多支筆對不一樣的位置同時進行描繪,那天然效率就是日新月異的。

雖然GPU是爲了圖像處理而生的,可是咱們經過前面的介紹能夠發現,它在結構上並無專門爲圖像服務的部件,只是對CPU的結構進行了優化與調整,因此如今GPU不只能夠在圖像處理領域大顯身手,它還被用來科學計算、密碼破解、數值分析,海量數據處理(排序,Map-Reduce等),金融分析等須要大規模並行計算的領域。因此GPU也能夠認爲是一種較通用的芯片

 

FPGA應運而生

隨着人們的計算需求愈來愈專業化,人們但願有芯片能夠更加符合咱們的專業需求,可是考慮到硬件產品一旦成型便不可再更改這個特色,人們便開始想,咱們可不能夠生產一種芯片,讓它硬件可編程。也就是說——

這一刻咱們須要一個比較適合對圖像進行處理的硬件系統,下一刻咱們須要一個對科學計算比較適合的硬件系統,可是咱們又不但願焊兩塊板子,這個時候FPGA便應運而生。

FPGA是Field Programmable Gate Array的簡稱,中文全稱爲場效可編程邏輯閘陣列,它是做爲專用集成電路領域中的一種半定製電路而出現的,既解決了全定製電路的不足,又克服了原有可編程邏輯器件門電路數有限的缺點。

FPGA運用硬件描述語言(Verilog或VHDL)描述邏輯電路,能夠利用邏輯綜合和佈局、佈線工具軟件,快速地燒錄至FPGA上進行測試。人們能夠根據須要,經過可編輯的鏈接,把FPGA內部的邏輯塊鏈接起來。這就好像一個電路試驗板被放在了一個芯片裏。一個出廠後的成品FPGA的邏輯塊和鏈接能夠按照設計者的須要而改變,因此FPGA能夠完成所須要的邏輯功能。

FPGA這種硬件可編程的特色使得其一經推出就受到了很大的歡迎,許多ASIC(專用集成電路)就被FPGA所取代。這裏須要說明一下ASIC是什麼。ASIC是指依產品需求不一樣而定製化的特殊規格集成電路,由特定使用者要求和特定電子系統的須要而設計、製造。這裏之因此特殊說明是由於咱們下面介紹的TPU也算是一種ASIC。

FPGA與ASIC芯片各有缺點,FPGA通常來講比ASIC的速度要慢,並且沒法完成更復雜的設計,而且會消耗更多的電能;而ASIC的生產成本很高,若是出貨量較小,則採用ASIC在經濟上不太實惠。可是若是某一種需求開始增大以後, ASIC的出貨量開始增長,那麼某一種專用集成電路的誕生也就是一種歷史趨勢了,我認爲這也是Google生產Tensor processing unit的一個重要出發點。至此,TPU便登上歷史舞臺。

隨着機器學習算法愈來愈多的應用在各個領域並表現出優越的性能,例如街景、郵件智能回覆、聲音搜索等,對於機器學習算法硬件上的支持也愈來愈成爲一種須要。目前不少的機器學習以及圖像處理算法大部分都跑在GPU與FPGA上面,可是經過上面的講述咱們能夠知道,這兩種芯片都仍是一種通用性芯片,因此在效能與功耗上仍是不能更緊密的適配機器學習算法,並且Google一直堅信偉大的軟件將在偉大的硬件的幫助下更加大放異彩,因此Google便在想,咱們可不能夠作出一款專用機機器學習算法的專用芯片,TPU便誕生了。

 

 

Google想作一款專用機機器學習算法的專用芯片——TPU

 

從名字上咱們能夠看出,TPU的靈感來源於Google開源深度學習框架TensorFlow,因此目前TPU仍是隻在Google內部使用的一種芯片。

Google其實已經在它內部的數據中心跑TPU跑了一年多了,性能指標槓槓的,大概將硬件性能提高了7年的發展時間,約爲摩爾定律的3代。對於性能來講,限制處理器速度的最大兩個因素是發熱與邏輯門的延遲,其中發熱是限制速度最主要的因素。如今的處理器大部分使用的是CMOS技術,每個時鐘週期都會產生能量耗散,因此速度越快,熱量就越大。下面是一張CPU時鐘頻率與能量消耗的關係,咱們能夠看到,增加是指數性的。

從TPU的外觀圖咱們能夠看出,其中間突出一塊很大的金屬片,這即是爲了能夠很好地對TPU高速運算是產生大量的熱進行耗散。

TPU的高性能還來源於對於低運算精度的容忍,也就是說每一步操做TPU將會須要更少的晶體管。在晶體管總容量不變的狀況下,咱們就能夠單位時間在這些晶體管上運行更多的操做,這樣咱們就能夠以更快的速度經過使用更加複雜與強大的機器學習算法獲得更加智能的結果。咱們在TPU的板子上看到了插條,因此目前Google使用TPU的方式是將載有TPU的板子插在數據中心機櫃的硬盤驅動器插槽裏來使用。

並且我以爲TPU的高性能還來源於它數據的本地化。對於GPU,從存儲器中取指令與數據將耗費大量的時間,可是機器學習大部分時間並不須要從全局緩存中取數據,因此在結構上設計的更加本地化也加速了TPU的運行速度。

AlphaGo對戰李世乭比賽使用的載有TPU的服務器機架,不知道爲何側面貼的圍棋圖有種萌感。via:googleblog.com

在Google數據中心的這一年來,TPU其實已經幹了不少事情了,例如機器學習人工智能系統RankBrain,它是用來幫助Google處理搜索結果併爲用戶提供更加相關搜索結果的;還有街景Street View,用來提升地圖與導航的準確性的;固然還有下圍棋的計算機程序AlphaGo,其實這一點上也有個頗有趣的地方,咱們在描述AlphaGo的那篇Nature文章中看到,AlphaGo只是跑在CPU+GPUs上,文章中說AlphaGo的完整版本使用了40個搜索線程,跑在48塊CPU和8塊GPU上,AlphaGo的分佈式版本則利用了更多的機器,40個搜索線程跑在1202個CPU和176塊GPU上。這個配置是和樊麾比賽時使用的,因此當時李世乭看到AlphaGo與樊麾的對弈過程後對人機大戰頗有信心。可是就在短短的幾個月時間,Google就把運行AlphaGo的硬件平臺換成了TPU,而後對戰的局勢就艱難了起來。

那麼除了TPU能夠更好更快地運行機器學習算法,Google發佈它還有什麼其餘目的。我以爲說的玄幻一些,Google也許在下一盤大棋。

Google說他們的目標是在工業界的機器學習方面起到先鋒帶頭做用,並使得這種創新的力量惠及每一位用戶,而且讓用戶更好地使用TensorFlow 和 Cloud Machine Learning。其實就像微軟爲它的HoloLens加強現實頭顯配備了全息處理單元(holographic processing unit,HPU),像TPU這樣的專業硬件只是它遠大征程的一小步,不只僅是想讓本身在公共雲領域超過市場老大Amazon Web Services (AWS)。隨着時間的推移,Google會放出更多的機器學習API,如今Google已經推出了雲機器學習平臺服務和視覺API,咱們能夠相信,作機器學習技術與市場的leader纔是Google更大的目標。

Refer to: https://www.leiphone.com/news/201605/xAiOZEWgoTn7MxEx.html

相關文章
相關標籤/搜索