相較傳統CPU,Google的這款AI晶片能帶來什麼?
文章推薦指數: 80 %
這幾天被Google I/O開發者大會刷屏,尤其是會上Google的現任CEO桑德爾·皮查伊(Sundar Pichai)公布了在AlphaGo戰勝李世石的「秘密武器」就是一塊晶片「TPU」(張量處理單元,Tensor Processing Unit,),它使得機器學習類深度神經網絡模型在每瓦特性能性能支撐上優於傳統硬體。
其實早在去年年底,Google就已開源深度學習系統TensorFlow。
關於深度學習開源軟體
簡單回顧下TensorFlow——一個開源軟體庫使用數據流圖進行數值計。
上圖中的節點代表數學運算,而圖形邊緣表示多維數據數組(張量)之間的溝通,靈活的架構允許你計算部署到一個或多個CPU或GPU,雖然一開始谷歌大腦開發團隊是主要進行機器學習的目的,和深層神經網絡的研究,但總體系統足以適用於各種各樣的其他領域。
這就已經使得第一代系統DistBelief大幅度被簡化。
因為在深度學習算法CNN流行之前,機器學習的特徵學習主要是通過人類根據自身擁有的領域知識或經驗來提取合適的特徵,而特徵的好壞直接決定了機器學習運用的成敗。
但是對於圖像或者語音而言,人類提取特徵的標準也較難形容,譬如我們識別一朵紅玫瑰,我們會覺得紅玫瑰有刺、有顏色、有葉子、有花瓣和莖,而且這幾個部件之間有一定組織關聯以及空間約束,譬如刺在莖上的分布有一定的距離、花瓣在開放之後與尚未開放之前有一定的緊密度差距等,但是我們該用怎樣的語言來描述人類「眼睛」呢?如果認真想一想就會發現挺難的。
但是人類本質上是小樣本監督學習,或者無監督學習,現有的深度學習還無法做到這一點,這也是深度學習領域的研究著重需要突破的點。
因為我們只要給幾張開放程度不同的紅玫瑰的照片給人看,他就可以學習到都些是什麼樣的紅玫瑰。
人似乎可以自動「學習」出特徵,或者說你給了他看幾張紅玫瑰的照片,然後問紅玫瑰有什麼特徵,他也會就可以隱約告訴你紅玫瑰有什麼特徵,甚至是不同開放程度特有的特徵,這些特徵是百合花、水仙花或者其他的花沒有的。
而深度學習就是人工神經網絡ANN (Artificial Neural
Network),是在借鑑一些人腦運行的機制基礎上模擬神經元的連接設計的。
因為深度學習算法相較於傳統的機器學習在一些重要的任務上取得了大幅度的提升,以至於引發一場熱潮甚至形容為革命也不為過,但是深度學習需要海量已標記的數據進行長時間的訓練,其對計算能力的要求非常高。
深度學習是計算密集型的算法,在近幾年,隨著計算能力的增強,深度神經網絡對比許多傳統機器學習數據集優勢體現出來之後,逐漸用到圖像、語言,它不再需要人工提取特徵,自動學出特徵後效果提升更明顯。
最初使用傳統的CPU(中央處理器,Central Processing Unit)計算時,為了保證算法的實時性,會需要使用大量的CPU來進行並行計算,就像Google Brain項目用了16000個CPU Core的並行計算平台訓練來保證算法的運行速度。
深度學習是計算密集型的算法,所以在GPU (圖形處理器,Graphic Processing Unit)、FPGA(現場可編程門陣列,Field-Programmable Gate Array)和TPU等超速處理硬體發展起來後,CPU 在機器學習上進行的計算量大大減少,但是CPU並不會完全被取代,因為CPU較為靈活,且擅長於單一而有深度的運算,還可以做其他事情。
比如當使用GPU做深度學習計算時,CPU還是需要在代碼中寫入並讀取變量、執行指令、啟動在GPU上的函數調用、創建小批量的數據等,但是不再需要取指、解碼等,所以Google在I/O大會上也強調了其並沒完全拋棄CPU,TPU 只是在一些輔助使用在特定的應用中。
TPU對谷歌意味著什麼?
谷歌專門開發的應用於深度神經網絡的軟體引擎。
谷歌表示,按照摩爾定律的增長速度,現在的TPU的計算能力相當於未來七年才能達到的計算水平,每瓦能為機器學習提供更高的量級指令,這意味它可以用更少的晶體進行每一個操作,也就是在一秒內進行更多的操作。
並且谷歌將其與Deep
learning系統平台TensorFlow進行了深度綁定,可以獲得更好的支持,做更強的生態,包括搜索、無人駕駛汽車、智能語音等100多個需要使用機器學習技術的項目。
> TPU是什麼?
TPU就是 custom ASIC specifically for machine learning ,專門為機器學習設計的專用集成電路。
在Google2016 I/O上首次提及,但是並沒有公布技術細節,只是在其官方博客里有披露一些信息。
ASIC並不是新鮮的東西,只不過Google利用它來做來一個定製版的ASIC,但是具體技術細節是沒有披露的,而且以後會不會披露,會不會對消費者開放,這都是有待觀察的,現在披露的消息是說會用在Google的雲計算平台上。
遺憾的是目前並沒有太多的故事可分享,唯一一個值得注意的就是Google已經使用此晶片運行了一年多的時間,而且已經用在了其大量的產品上,說明TPU已經是一個較為成熟的設計了。
到底會不會取代GPU或CPU呢?谷歌資深副總裁Urs Holzle透露,當前谷歌TPU、GPU並用,這種情況仍會維持一段時間,但也語帶玄機表示,GPU過於通用,谷歌偏好專為機器學習設計的晶片。
GPU可執行繪畫的運算工作,用途多元,TPU屬於ASIC,也就是專為特定用途設計的特殊規格邏輯IC,由於只執行單一工作,速度更快,但缺點是成本較高。
> TPU並非萬能
TPU的高效能的來源正是其非萬能的設計邏輯(極度單一的設計原則),正如上文所說的CPU是通用計算,而GPU相對來說雖然比CPU更不通用,但是因為GPU本身是作為顯卡的處理器產生的,所以GPU也是相對通用的。
而TPU為專用的邏輯電路,單一工作,速度快,但由於其是ASIC,所以成本高。
另外一點有可能是TPU的暫時的缺點就是TPU現在為Google專用,還不是消費類產品,而要走向流行的消費類產品,還需要現在市場的軟硬體進行配合,這也是需要一定的時間的,而且會不會得到市場最終認可也是存在疑問的。
所以TPU非常不萬能。
只是TPU的發布,有一點很重要的意義:現在的深度學習生態環境已經非常重視這些硬體的升級了,這些定製硬體的春天就要到來,最終這個市場鹿死誰手真是無法預料,而國內在這方面並不落後,如寒武紀,地平線這樣公司也正在這方面摩拳擦掌。
雖然TPU帶來了突破性進步,但這並不代表會完全淘汰CPU和GPU,目前主要會用來解決集成電路存在的成本高、耐用性差的問題。
值得期待的事,Google是網際網路性質的企業,在硬體製作上能否超越傳統的硬體產商(如Nvidia,Intel等), 我們可以靜觀其變。
目前的深度學習硬體設備還有哪些?與傳統CPU有何差異?
那麼目前深度學習的主要硬體設備與傳統CPU的差異有哪些呢?
> FPGA
FPGA最初是從專用集成電路發展起來的半定製化的可編程電路,它無法像CPU一樣靈活處理沒有被編程過的指令,但是可以根據一個固定的模式來處理輸入的數據然後輸出,也就是說不同的編程數據在同一片FPGA可以產生不同的電路功能,靈活性及適應性很強,因此它可以作為一種用以實現特殊任務的可再編程晶片應用與機器學習中。
譬如百度的機器學習硬體系統就是用FPGA打造了AI專有晶片,製成了AI專有晶片版百度大腦——FPGA版百度大腦,而後逐步應用在百度產品的大規模部署中,包括語音識別、廣告點擊率預估模型等。
在百度的深度學習應用中,FPGA相比相同性能水平的硬體系統消耗能率更低,將其安裝在刀片式伺服器上,可以完全由主板上的PCI
Express總線供電,並且使用FPGA可以將一個計算得到的結果直接反饋到下一個,不需要臨時保存在主存儲器,所以存儲帶寬要求也在相應降低。
> GPU
GPU是相對於CPU的一個概念,是一個專門的圖形的核心處理器,計算機中的GPU是顯卡的「心臟」,也就是相當於CPU在電腦中的作用。
但是因為GPU在浮點運算、並行計算等部分的計算方面能夠提供數十倍至上百倍的CPU性能,所以開始利用GPU來運行機器學習模型,以便於在雲端進行分類和檢測,同樣的大訓練集,相對於CPU耗費的時間大幅度縮短,占用的數據中心的基礎設施也少很多,所以GPU在耗費功率更低、占用基礎設施更少的情況下能夠支持遠比單純使用CPU時10-100倍的應用吞吐量。
譬如圖像識別領域的圖普科技,則是基於大規模GPU集群搭建了AI超算平台,能夠支持億萬級別圖像的全面實時處理,並且利用深度學習算法設計的智能程序能通過快速疊代擁有強大的學習能力,實現高精度的智能識別結果。
而語音識別領域的科大訊飛,目前在深度學習訓練方面,幾乎所有的運算包括CNN、RNN等都是放在GPU加速卡上的,並且其還計劃在語音識別業務中啟用FPGA平台,通過重新設計硬體架構在未來建造一個上萬規模的FPGA語音識別系統。
所以可以說,要實現讓機器能像人類一樣思考,企業不僅需要在算法模型的精確度上下功夫,同時高性能計算能力的硬體系統也是非常需要關注的,這些異構加速技術協助處理器運算速度的快速提升,讓機器學習應用領域的硬體層面難度降低。
但是現在這些只是一個開始,更多的軟硬體創新肯定還在進行中,不知道是否有一天,這些創新是否也會幫助AI超越人類呢?