這幾天被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超越人類呢?
評論