蘋果最近舉行了發布會,推出iPhone X和iPhone 8,同時蘋果還推出A11 Bionic芯片,這是一個6核CPU,它是蘋果的定制GPU,蘋果管它叫作“Neural Engine”(神經引擎)。對于這個新硬件,蘋果沒有談太多,只是說:
“新A11 Bionic神經引擎采用多核設計,實時處理速度最高每秒可以達到6000億次。A11 Bionic神經引擎主要是面向特定機器學習算法、Face ID、Animoji及其它一些功能設計的。”
上面所說的話基本都是宣傳資料。所謂的每秒運算6000億次對你來說沒有任何意義。當然,這個數字應該是真實的,但是它并不能告訴我們底層架構是怎樣的、真實性能又是怎樣的,因為我們不知道蘋果所謂的“運行”到底是什么意思。當我們談論GPU性能,會用TFLOPs評估,例如,廠商會提供GPU在理想環境下執行浮點運算的速度。一般來說,執行特定任務時,GPU的表現與理論數據有差距,就蘋果芯片來說應該也是一樣的。
到底蘋果硬件的具體規格如何?我們無法確切知道,盡管如此,我們還是可以推斷一下。
什么是機器學習
機器學習是AI技術的分支,它的目標是創建算法,讓算法通過數據自動學習。機器學習的種類很多,其中有兩種尤其引人關注,一種是監督式學習,一種是無監督學習。
如果是監督式學習,處理的數據已經貼上標簽,分了類。例如,如果你擁有某個城市的數據庫,它會告訴你公寓的租賃情況,還有每個公寓占地面積是多少。如果你將這些數據放進算法,用于監督式學習,它會在占地面積與租賃情況之間構建圖表,將二者聯系起來,你給它一個面積,它可以預測相對應的租賃情況,不需要再寫一個特定程序執行相同的任務。你可能會向模型下命令,讓它預測1000平方英尺的公寓租金是多少,然后查看1000平方英尺的公寓實際租金是多少,用查到的數據對預測進行檢查。輸入模型的數據越多,模型越出色,預測的結果越精準。
如果是無監督學習,輸給算法訓練的數據沒有貼標簽。在監督式學習中,你知道自己想在面積與月租金之間建立聯系。如果是非監督式學習,你不知道每個數值與什么有關。此時算法會在數據內尋找關系。
讓我們舉一個例子。假設你有一個更大的數據庫,不只包含平方面積和公寓租賃數據,還有其它數據。比如本地房產的估價數據、犯罪率數據、人口統計數據、學校質量數據、月租金數據、信用評估數據。所有這些因素都會影響公寓的租賃價格,不過各因素的影響到底有多大呢?很難確定。此時,你可能想開發一套算法,將各因素的關系勾勒出來,將相似的結果歸成一類,讓關系突顯出來。這就是所謂的“clustering”(分類歸并),它是無監督學習算法的一種基本類型。
上圖告訴我們同一數據集分類歸并之前和之后的形態。Clustering只是一種類型的無監督學習算法,沒有任何一種算法是完美的,各有優缺點,有時算法找到的關系只是“背景噪音”,沒有價值。Netflix、亞馬遜用推薦引擎推薦產品和服務,它用的就是這種類型的算法。
例如,如果你正在觀看《星際迷航》,Netflix怎么知道你喜歡《神盾局特工》呢?因為Netflix拿到了觀眾的數據,知道它們有關系。如果你知道《星際迷航》影迷有90%看了漫威劇集,你就知道自己應該向他們推薦更多漫威影片。如果處理的數據點只有一個或者兩個,要找到這種聯系似乎很簡單。如果有成百上千個數據點呢?那就麻煩了,此時機器學習能發揮作用。
面部識別是深度學習、機器學習、AI的主要研究領域之一。正因如此,蘋果才會說它的神經引擎用在Face ID上,或者說它是它是專門用來執行特定算法的。Animojis到底有什么作用?現在還不太清楚,讓我們先放在一邊不去理會。
蘋果曾說過,Face ID不只使用了傳統攝像頭。按照蘋果的描述,新技術用3萬個紅外光點給面部繪圖,這些圖像存儲起來,當你解鎖設備,系統會將存儲的圖像與它看到的臉部圖像對比。整個過程有大量數據需要處理,而且還不能消耗太多的電能。
為什么開發特殊硬件
有許多公司也在研究如何將AI、深度學習、機器學習技術應用于硬件。谷歌開發了Tensorflow、英特爾開發了MIC、Nvidia開發Volta、富士通也在搭建自己的解決方案,甚至連AMD都想將深度學習技術放進Radeon Instinct產品。這些硬件解決方案到底有何區別,我沒法一一介紹。深度學習的推斷方式、訓練深度學習的模型是不同的,這些平臺的能力也不一樣,它們無法裝進相同的硬件,解決相同的問題。
并不是說它們沒有相似的地方。大體來說,這些技術瞄準的都是硬件的特定功能,目標是縮短計算時間,降低計算能耗。與Nvidia Volta和AMD Radeon Instinct對比,蘋果A11 Bionic的TDP(熱設計功耗)肯定不同,降低每次運行的能耗至關重要。下面的圖表告訴我們執行特定運算需要消耗多少電能。AMD與Nvidia積極倡導16位運算,為什么?看看下圖就知道了,左邊“Operation”一欄指的是執行的運算,“Energy”指的是能耗,“Relative Energy Cost”說的是執行運算需要的能耗;“Area”代表面積,“Relative Area Cost”指出執行相應運算硬件需要多少面積。
要提高機器學習的運算性能與效率,將數據存放在本地也很關鍵。總線中傳輸的數據越少,能耗越低。為了構建一個“低能耗網絡”,企業們花了很多精力研究。蘋果之所以想為設備引進AI與機器學習技術也是出于這個原因,因為電能有限,提高效率至關重要,它還可以為AI、HPC留下發展空間。如果能夠構建低能耗網絡,未來可以輕松將CPU放進更大的設備,或者提高CPU的運行速度,但是不會產生更多的熱量。
要提高機器學習的運算性能與效率,將數據存放在本地也很關鍵。總線中傳輸的數據越少,能耗越低。目前我們看到的架構全都是高度并行的架構,它們同步計算大型數據集,目標不是提高頻率、減少線程。
為什么現在推出?
在過去幾年里,許多企業開始研究深度學習、機器學習、AI。當中一些用來執行特殊任務,比如讓無人駕駛汽車行駛。為什么會出現這樣的熱潮呢?之前硅芯片的性能提升很快,2004年之后形勢變了,之后很長一段時間增長變慢。從2004年到2011年,企業增加CPU內核、改進架構,進步的速度還算可以。但是到了2011年之后,高端CPU的單線程速度止步不前,前進速度像烏龜一樣。AMD Ryzen做得不錯,它在消費市場恢復了一點生機,但在純粹的單線程性能上AMD還沒有打敗英特爾。
如何讓芯片繼續前進呢?有三種趨勢越來越明顯。
首先,要提高計算性能,只能開發新的軟件模型,用新的特殊內核運行軟件模型。曾幾何時通用CPU飛速進步,如果這種進步無法重現,也許特殊、執行特定任務的內核可以讓性能快速提升。
其次,晶體管密度繼續提高,能耗繼續降低,芯片可以收集更多數據,以更快的速度處理數據,之前我們做不到,因為受到能耗的制約,也沒有可以處理的硬件。
再次,消費PC相當于處理“中心”,但是云數據中心對數據集中處理,正因如此,微軟、谷歌等企業才會想著開發特殊硬件,執行特定處理任務。英特爾不會開發一款特殊CPU,為搜索引擎的后端處理做優化,制造這樣的芯片沒有市場。微軟不同,早在2015年,它就用FPGAs技術提高必應的性能。
蘋果所走的道路與數據中心所走的路沒有什么不同,不過走這條路的不只有蘋果。高通之前也曾說過,驍龍835是一個平臺,里面有許多計算功能開發者可以拿去用。未來蘋果會如何強化該技術,我們拭目以待。雖然蘋果已經遠離外設業務,不代表它未來某一天不會回來,它可能會推出高頻版A11 Bionic,裝進附件,手機對TDP有要求,對外形有要求,附件不會有這樣的要求。