正如20年前多媒體應用及3D游戲蓬勃發展倒逼顯卡硬件升級一樣,互聯網大數據的興起對超算芯片提出了新的需求。
事實上,AI界的泰斗,加拿大多倫多大學的Hiton教授早在2006年就提出了深度學習的概念,淺層學習算法更是早在上世紀80年代就為學術界所廣泛認可。之所以最近幾年該領域應用才逐漸升溫,是因為AI的發展離不開兩方面的支持,大數據和計算資源。
一、從“深藍”到“AlphaGO”,人工智能走過二十年
距離1996年“深藍”大戰卡斯帕羅夫整整20年后,“AlphaGO”再次通過人機對戰的形式為人工智能的發展歷史添上了濃重一筆。站在今天,我們可以笑言那曾經令人瞠目結舌的“深藍”實際上只是一個運行于超級計算機上的一個很棒的國際象棋程序,而為了支撐這個程序,IBM團隊打造了一臺重1.2噸、配備480顆國際象棋專用芯片的龐然大物。
不同于“深藍”依靠超強運算能力所采取的遍歷搜索策略,“AlphaGO”的設計中融入了近年來取得顯著進展的深度學習算法。深度學習之所以被稱為“深度”,是相對前向誤差反饋神經網絡、支持向量機等淺層學習算法而言。后者的局限性在于有限樣本和計算單元情況下,對復雜函數的表示能力有限,且需要依靠人工經驗抽取樣本特征。深度學習算法則通過構建一種深層非線性網絡結構來實現復雜函數逼近及自動特征提取,具有強大的從少數樣本集中挖掘數據統計規律的能力。
在基于深度學習方法的人臉識別領域,2014年,Facebook公司的DeepFace項目以及香港中文大學的DeepID項目在戶外人臉識別數據庫上的識別正確率分別達到97.45%和97.35%,幾乎可以比肩人類97.5%的識別率。此外,在圖像分類、自然語音識別等領域,深度學習也已證明了其無可比擬的優勢,特別是在現存最復雜的完全信息博弈之一的圍棋上的成功,說明該算法還大有潛力可挖。
關于AlphaGO還有個不為人知的小插曲。在對戰李世石之前,AlphaGO曾于2016年1月以5:0的懸殊比分完勝歐洲圍棋冠軍樊麾二段。旁觀的李世石在比賽結束后表示有信心捍衛人類在棋類運動上最后的榮譽。然而短短的一個月時間內,Google將AlphaGO的核心運算單元從CPUGPU換成了專門的深度學習芯片。于是,我們看到了“石佛”尷尬的笑容和發抖的手指。
二、脫離硬件支持,深度學習只能是“屠龍之技”
事實上,AI界的泰斗,加拿大多倫多大學的Hiton教授早在2006年就提出了深度學習的概念,淺層學習算法更是早在上世紀80年代就為學術界所廣泛認可。之所以最近幾年該領域應用才逐漸升溫,是因為AI的發展離不開兩方面的支持,大數據和計算資源。
深度學習模型需要通過大量的數據訓練才能獲得理想的效果。以語音識別問題為例,僅在其聲學建模部分,算法就面臨著十億到千億級別的訓練樣本。在這種情況下,只有表達能力強的數學模型才能夠充分發掘海量數據中蘊藏的豐富信息。相應地,海量數據的運算處理也必須有強大的計算資源作為支撐。
舉個毫不夸張的例子,今天的計算機一個中小型網絡的訓練需要一天時間,可能使用20年前的計算機需要近20年才能完成。因此,即便深度學習算法早20年誕生,沒有硬件匹配也只能是屠龍之技。而即便是今天,AI相關硬件的發展仍遠落后于軟件算法。一方面,AI界的算法大牛實在太多,甩開摩爾定律數十年來筆耕不輟地升級著軟件;另一方面,當前執行深度學習算法的主流方式是采用GPU芯片,為深度學習算法專門定制的芯片還遠沒有形成規模。雖然從架構上看,GPU相比CPU更有效率,但是離最優還相距甚遠。而且GPU功耗驚人,很難委身于移動終端,更遑論物聯網應用。
三、云端“高吞吐”,本地“小快靈”
目前的AI應用主要分為用于服務器端和用于移動終端兩大類。服務器端的負責AI算法的芯片一方面要支持盡可能多的網絡結構以保證算法的正確率和泛化能力;另一方面必須支持高精度浮點數運算,峰值性能至少要達到Tflops(每秒執行10^12次浮點數運算)級別,所以功耗非常大(>200W);而且為了能夠提升性能必須支持陣列式結構(即可以把多塊芯片組成一個計算陣列以加速運算)。由于服務器端的AI芯片必須兼顧通用性,因此性能優化無法做到量體裁衣,只能做一些宏觀的優化。
現有的主流服務器端的硬件加速器以圖形處理器和現場可編程邏輯門陣列為主。GPU具有強大的浮點運算能力,因此除圖像處理的本職工作外,被廣泛應用于科學計算、密碼破解、數值分析,海量數據處理等需要大規模并行計算的領域。與GPU相比,FPGA器件雖然在計算運行速度上與ASIC芯片有所差距,產品更新換代的速度也要慢于GPU芯片;但是功耗僅僅是GPU的1/10,并且還可以通過重配置對目標應用進行最大限度的優化。除了FPGA和GPU之外,也有不少公司在做服務器端的深度學習加速芯片,例如Google的TPU、Intel的 Nervana System以及Wave Computing等等。
移動端的AI芯片和服務器端的AI芯片在設計思路上有著本質的區別。首先,移動端的AI芯片必須滿足低延遲要求。這里的延遲是指移動終端與云端或服務器端的通信延遲。以大家熟悉的siri應用為例,移動終端把語音數據上傳至云端,云端執行算法并把結果送回移動端,這當然要求網絡延遲盡可能小以提升用戶體驗。而在駕駛輔助、安防監控等對實時性要求極為嚴苛的應用場景下,低延遲的重要性更是無需贅言;其次,移動端AI芯片必須保證功耗控制在一定范圍內,換言之,必須保證很高的計算能效;最后,移動端AI應用對算法的性能要求不如服務器端苛刻,允許一些計算精度損失,因此可以使用一些定點數運算以及網絡壓縮的辦法來加速運算。而如果從另一個角度看,把所有數據傳回云端一方面有可能造成網絡的擁堵,另一方面存在數據安全問題,一旦數據在傳輸過程中被惡意劫持,后果將無法想象。因此,一個必然的趨勢是在移動端本地分擔部分快速反應的AI算法,從而盡量避免上述問題。
四、AI專用芯片,業界巨頭們的藍海
正如20年前多媒體應用及3D游戲蓬勃發展倒逼顯卡硬件升級一樣,互聯網大數據的興起對超算芯片提出了新的需求。如前所述,GPU和FPGA是目前軟件企業采取的主流方案。百度的機器學習硬件系統就是用FPGA搭建了一款AI專用芯片,并已大規模部署在語音識別、廣告點擊率預估模型等應用中;而語音識別領域的科大訊飛,則將幾乎所有深度學習訓練方面的運算都放在GPU加速卡上運行。不過業界也有消息,科大訊飛計劃在語音識別業務中啟用FPGA平臺。
作為GPU和FPGA領域的巨頭,Nvidia和Intel已相繼公布了開發AI專用芯片的計劃。2016年上半年,NVIDIA為深度神經網絡推出了TeslaP100GPU,并基于此開發了深度學習超級計算機NVIDIADGX-1。與此同時,IBM已與NVIDIA推出了幾款專門針對人工智能領域的服務器產品。而收購了FPGA巨頭Altera公司的Intel也不甘落后,結合FPGA在大數據運算處理方面的優勢,全力打造新的專注大數據高性能運算以及AI應用的至強融合系列處理器。
此外,Intel還于2016年8月宣布收購深度學習芯片初創公司Nervana,以增強Intel在AI方面的業務能力。目前,芯片層面最大的變數來自于Google的TPU芯片。這款芯片是Google專門為其深度神經網絡的軟件驅動引擎TensorFlow量身打造的。谷歌表示,按照摩爾定律的發展軌跡,現在的TPU的計算能力相當于未來七年才能達到的計算水平。目前,TPU已經服務于Google的AI系統Rank Brain、街景Street View、Alpha GO等應用服務。
TPU的高效能來自于Google專門為AI應用做出的針對性優化。在效能與功耗上TPU能夠更緊密地適配機器學習算法,這一點要遠勝于GPU及FPGA等通用芯片。從性能角度而言,目前針對某個算法優化的專用AI芯片能比GPU在性能上提升多少還未有定論,這也要結合具體算法來看。如果GPU剛好卡到某個瓶頸,那么AI芯片在運算速度上提升幾十倍也是有可能的。AI算法始終保持著快速演進的趨勢,因此專用AI芯片的發展一定與軟件是并行互補的。
從成本角度來看,任何芯片一旦量產,成本都會迅速下降。就服務器端的AI芯片而言,首先量肯定不如移動市場大;其次由于強調運算性能,導致其技術壁壘較高,新的競爭者難以快速切入。目前來看AI芯片基本沒有創業機會。流片在千萬美元級別,全世界的玩家屈指可數。而所有巨頭又都盯著AI這塊巨大的蛋糕,因此在該領域基本不可能有攪局者的出現。AI雖然是藍海,但只是大公司的藍海。