Can Machines Think?
這是阿蘭 · 圖靈在 1950 年論文《計算機器和智能》中的經典提問,圍繞着圖靈的目标,軟件和硬件開啟了分頭行動。
軟件,以算法為核心,衍生出了神經網絡,并在深度學習的加持下,讓人工智能浪潮實現全面洶湧。
硬件,以芯片為載體,從 CPU、GPU 到各類 AI 芯片,從執行人的計算程序,到像人一樣計算。芯片和 AI,硬件和軟件,一個源頭流出的兩條大河,終于在此刻合流交彙。
但背後的驅動力也越來越明顯:
一個時代有一個時代的架構。
現在,面向 AI 時代的計算架構,呼之欲出。
讓機器執行人的思考和計算:從 CPU 到 GPU
要想知道未來到哪去,必先知道自己從哪兒來。
今天,一切智能機器無論大小,都少不了一塊 CPU。正是這個好比 " 大腦 " 的東西,讓大大小小的硬件可以執行人寫好的規則,實現各式各樣的功能。
世界首塊 CPU 誕生于 1971 年,但它的概念可以追溯到世界上第一台具有現代意義的通用計算機—— EDVAC 身上。
EDVAC 是 ENIAC(世界第一台電子計算機)的小老弟,由馮 · 諾伊曼設計。EDVAC 最大的改變之一,就是将計算機劃由運算器、控制器、存儲器、輸入和輸出這五個部分組成。
這就是著名的馮 · 諾伊曼架構。從這個架構裡,我們就可以看到 CPU 的雛形。
——從彼時至今,無論 CPU 的具體實現怎麼變、晶體管數量翻多少番,它的構成始終由運算器、控制器和寄存器這三大部分組成。
其中,運算器也叫算術邏輯單元(ALU),負責算術運算和邏輯運算。寄存器細分為指令寄存器和數據寄存器等,負責暫存指令、ALU 所需的操作數、ALU 算出的結果等。
控制器則負責整體調度工作,包括對要執行的指令進行譯碼、從内存中調取數據給寄存器、向運算器和寄存器發出具體操作指令等。
從上面這個分工我們也能看出 CPU 的大概工作流程,簡單來說就是這四步:
1、從内存提取指令;2、解碼;3、執行;4、寫回。
其中寫回到寄存器的結果,可供後續指令快速訪問。
看起來,整個流程沒有什麼 bug。
但仔細回看一下 CPU 三大組成的各自分工,可以發現控制器和寄存器是這裡面要負責的東西最多、要存的東西最多的兩部分。
從下面這張 CPU 的簡略架構圖也能看出,運算器 " 偏居一隅 ",幾乎 80% 的空間都被控制單元和存儲單元占據。
這樣的設計就造成CPU 最擅長的是邏輯控制,而非計算。
同時,依照馮 · 諾依曼架構 " 順序執行 " 的原則," 古闆 " 的 CPU 隻能執行完一條指令再來下一條,計算能力進一步受限。
當然,你說 CPU 靈活性高、通用性強,我們可以将它進行同構并行。
但别忘了,單個 CPU 的性能上限就那麼高、能容納的核數也有限,這種方法能挖掘的潛能實在有限。
所以,要是讓 CPU 來完成計算量動辄上億的 AI 任務,實在是 " 愛莫能助 "。就比如在自動駕駛領域,系統需要同時查看人行道、紅綠燈等路況,如果交給 CPU 來計算,總不能車都撞上了還沒算出來結果吧。
所以,針對 CPU" 拉垮 " 的計算能力,GPU 站在了浪潮之巅。
正如其全稱 " 圖形計算單元 ",GPU 的初衷主要是為了接替 CPU 進行圖形渲染的工作。
因為圖像上的每一個像素點都需要處理,這項任務計算量相當大。尤其遇上一個複雜的三維場景,就需要在一秒内處理幾千萬個三角形頂點和光栅化幾十億的像素。
不過,由于每個像素點處理的過程和方式相差無幾,這項艱巨的任務可以靠并行計算來化解。
而這恰好就是 GPU 最得天獨厚的優勢,尤其以處理這種邏輯簡單、類型統一的瑣碎計算任務為甚。
GPU 之所以擅長并行計算,從其架構裡就決定了。
GPU 幾乎主要由計算單元 ALU 組成,僅有少量的控制單元和存儲單元。
這也就意味着,GPU 可以擁有數百、數千甚至上萬核心來同時處理計算任務,使計算的并行度得到成千上萬倍的提升——相比現在普通電腦最多 8 核 CPU 同時工作,這是一個多麼恐怖的數字。
再舉一個最簡單的例子來直觀感受一下。
比如現在我們來計算一下 5000 個數相加之後的總和。
如果我們用 CPU 來算,即使派上 8 核 CPU,每個核也需要計算 625 個數;假設每計算一個數需要 1s,即使 8 核并行計算,總共也需要 625s。(這裡暫時不考慮支持向量指令的 CPU)而 GPU,核心數成千上萬,計算 5000 個數字隻需每核算 1 個數,1s 就能搞定。
625sVS1s,這是何等的差距。
除了并行計算能力,GPU 的内存帶寬也是 CPU 的幾十倍 ,決定了它将數據從内存移動到計算核心的速度更快,整體計算性能更加讓 CPU 望塵莫及。
由于 GPU 的設計并沒有專門跟圖形綁定的邏輯,屬于一種通用的并行計算架構,所以除了圖像處理,它其實也非常适用于科學計算,乃至複雜的 AI 任務。
所以在 2012 年,當 Hinton 及其弟子 Alex Krizhevsky 将其作為深度學習模型AlexNet的計算芯片,一舉赢得 Image Net 圖像識别大賽之後,GPU 在 AI 領域的名聲就一炮打響。
而早就基于自家 GPU 推出了 CUDA 系統的英偉達,又憑借着三年時間裡将 GPU 性能提升 65 倍,并提供後端模型訓練和前端推理應用的全套深度學習解決方案,奠定了自己在該領域的王者地位。
直到今天,GPU 也還是 AI 時代算力的核心、人工智能硬件領域的霸主。
然而,GPU 屬于通用計算芯片和架構,并非專門為 AI 打造,無法實現性能和功耗的統一。它的計算能力越強代表核心越多,功耗也就越大。
比如 RTX 4090,450W;比如今年 9 月剛上市的 H100,直接史無前例,700W。這種情況還大有逐年攀升之勢。
還是拿自動駕駛舉例,在電車基本成為主流的當下,如此高的功耗勢必對續航裡程造成困擾。更别提越來越多的終端也開始具備 AI 能力(比如手機、智能音箱),它們不僅要求計算能力,對功耗的要求也更加嚴格,再強的 GPU 在這裡也顯得很弱勢。
另外,一些更複雜的 AI 場景(如雲端推理、模型訓練等),常常動辄就需要上百塊 GPU 一起運算,這讓整個計算平台的功耗控制也是相當棘手。很多機構不得不考慮能源和環保問題。
這不,今年 7 月誕生的目前最大的多語言開源模型 BLOOM,就動用了 384 塊 A100 煉成,釋放的熱量最終都用來給學校供暖了。
所以,綜上來看,CPU 和 GPU 的出現,雖然幫助機器擁有了執行人的思考和計算的能力,尤其後者讓 AI 計算任務得到了相當大的加速,但一些缺點還是讓它們無法大展身手。
因此要想讓機器像人一樣思考和計算,通用計算芯片的架構決定了不會是最佳方案。
讓機器像人一樣思考和計算:AI 芯片大爆發
數據驅動的方式方法,讓機器像人一樣思考和計算展現了可能。
但背後的計算需求,也讓過去的計算架構越顯強弩之末。
據統計,光是在 2012 年到 2018 年的六年時間裡,人們對于算力的需求增長了就超過 30 萬倍。也就說,每 3.5 個月 AI 算力就大約翻一倍。如今這個數字還在繼續攀升。
所謂 " 通不如精 ",以 CPU 和 GPU 為代表的通用計算芯片架構,已經無法很好地匹配和滿足這一需求,所以在各類新 AI 技術層出不窮的同時,新計算、新架構、新芯片在過去幾年也迎來了前所未有的大爆炸。
因此這幾年,我們看到了很多除了 CPU 和 GPU 以外的各種"xPU",諸如谷歌 TPU、Graphcore IPU、特斯拉 NPU、英偉達 DPU ……
盡管它們的分類不同,有的屬于半定制化的 FPGA,有的屬于全定制化的 ASIC,有的應用于終端,有的應用于雲端……但作為專門為 AI 任務和需求而生的新芯片,它們都有着比 CPU/GPU 功耗低、計算性能高、成本更低等優勢,落地到哪裡就給哪裡帶去了翻天覆地的變化,比如最近幾年的智能手機、自動駕駛、機器人、VR 等領域。
按照能力和用途,這些 AI 芯片們在這個過程中上演了這樣兩個階段:
首先是僅作為加速器,輔助 CPU 完成 HPC、模型訓練 / 推理等 AI 任務。
(AI 芯片幾乎都不具有圖靈完備,所以必須要和 CPU 一起搭配使用,這也是所謂的 " 異構融合 " 大趨勢。)
它們的結構類似串聯,可以用"CPU+xPU"這樣的公式來表達。
這一組合最經典的其實就是 CPU+GPU,它倆到現在其實也還在流行。
隻不過如前面所說,GPU 不算專門為 AI 設計的芯片,無法在這一領域發揮出極緻的性能,所以這裡的 xPU 更多的指 TPU、IPU、DPU 等 AI 加速芯片。
(當然,GPU 還是自有它的用處,所以它有時也會加入進來,形成 "CPU+GPU+xPU" 的結構。)
這一模式最大的特點就是,CPU 隻負責少量的計算,一般為那些情況比較複雜、計算難度不确定、靈活性要求高的部分;大部分 " 髒活累活 " 都由計算能力超強、能耗又沒那麼高的 xPU 來完成。
就如下圖所示,在實際情況中,它們的分工很可能遵守 " 二八定律 " —— xPU 負責整個系統 80% 的計算任務,剩下的 20% 由 CPU+GPU 分擔,其中 GPU 的比例又高達 16%,留給 CPU 的隻剩下 4%。
如果進行軟硬件融合的進一步優化,三者之間的比例還可能變動為 90%、9% 和 1%。
這樣各司其職、各揮所長的安排可以保證最極緻的性能和性價比,做到從前 CPU 和 GPU 單上無法企及的高度。
其次,AI 芯片作為專用芯片,針對專門的領域推出,負責某一特定 AI 任務的計算。
(說通俗點,就是某一塊專用芯片能在自動駕駛領域使用,換了機器人領域就不行)。
在這種模式下,各 xPU 已成為各系統的主角,決定該系統的整體性能和效果。
這就導緻一些自動駕駛公司,在宣傳它們的技術時,隻把 xPU 拉出來大肆宣傳,基本不提 CPU 和 GPU 的事兒了。
那麼 CPU 在幹嘛?當然是利用自己擅長的邏輯控制來把控整個流程。
因此此時,CPU 和 AI 芯片的關系更像一種并聯結構,我們就可以用"CPU、xPU"的公式來表達(當然,GPU 也仍然可能參與其中)。
如前面所說,由于 CPU 基本不決定計算性能,我們也就不用再寄希望于 CPU 的戰鬥力有多強。
進一步地,我們可以認為,這種模式其實是将通用計算芯片的核心地位削減了—— CPU 的地位又變了。
那麼,成為 " 中流砥柱 " 的 AI 芯片們究竟有多大威力?我們來看3 個案例。
首先是雲端。
在這個領域,互聯網巨頭們有着 " 本土作戰 " 的優勢,因此大多可以不依賴英偉達等傳統巨頭。
如谷歌 2015 年就推出了自己的雲端加速 AI 芯片 TPU。
它的中文名叫張量處理器,屬于 ASIC 芯片的一種,專為加速深度學習框架 TensorFlow 而設計。
得益于用量化技術進行 8 位整數運算、脈動陣列、基于複雜指令集(CISC)等設計,它與同期的 CPU 和 GPU 相比(英特爾至強 E5-2699 v3 與 Tesla K80 GPU),可以提供大約 15-30 倍的性能提升。
如下圖所示,當将延遲全部控制在 7 毫秒之内時,TPU 每秒可運行的 MLP0 預測可達 22.5 萬次。同等情況下,CPU 隻有 5000 多,GPU 也僅為 1.3 萬 +。
效率方面(性能 / 瓦特)的提升也高達 30-80 倍:
(谷歌第一代 TPU 功耗約為 40W,性能最強的第四代也隻有 175W,而同時期的 A100 已達 400W。 )
這樣的成績意味着它既可以大規模運行于最先進的神經網絡,也可以同時把成本控制在可接受的程度上。
△ TPU 在以上 6 種神經網絡中的 CNN1 上表現最好,性能是 GPU 的 26 倍
它的出現,不僅打破了深度學習硬件執行的瓶頸,也在一定程度上撼動了英偉達等傳統巨頭的地位。
谷歌也對它重用有加,搜索、街景、照片、翻譯等服務以及 AlphaGo 背後的神經網絡計算,都交由它來完成。TPU 的出現,成為了 AI 時代雲端計算需求的代表性解決方案。
終端方面,最具代表性的場景是 AI 司機變革下的汽車領域,即自動駕駛。
目前,自動駕駛芯片有兩條主要技術路線:
一是英偉達 Orin 靠 " 魔改 "GPU 所走的通用架構路線;另一個是特斯拉、高通、Mobileye 等青睐的專用芯片技術路線,也就是 CPU+(GPU)+xPU 的形式。
比如特斯拉 FSD 芯片就是主要由 CPU、GPU 和 NPU 組成。
△ 圖源 wikichip,特斯拉 FSD 芯片 die shot 圖
其中,NPU 是裡面占比最大的處理器,是整個架構的重點。
它是由特斯拉硬件團隊自研的一種 ASIC 芯片,主要用來對視覺算法中的卷積運算和矩陣乘法運算進行有效加速。
具體來看,每塊 NPU 的運行頻率為 2GHz,峰值性能可達每秒 36.86 萬億次運算(TOPs),總功耗卻僅為7.5W。
所以,正是從特斯拉開始,專為自動駕駛所需的神經網絡打造的 NPU 開始成為汽車芯片的主要組成部分,傳統的通用芯片 CPU、GPU 開始退居輔助位置。
國内方面,唯一實現車載智能芯片大規模前裝量産的地平線,其代表芯片征程系列,也是采用 "CPU+ASIC" 的技術路線,ASIC 部分用的是自研的BPU。
它的使用使最新的征程 5 芯片算力達到了 128TOPS,功耗也隻有 30W。
由此,征程 5 靠 4.3TOPS/W 能耗比,一舉超過了特斯拉 FSD(2TOPS/W)、也超過了 2022 年高端智能電動車标配的英偉達 Orin(3.9TOPS/W)。
這種性能和功耗展現出的對比,甚至是标志性的。背後是芯片架構在 AI 時代正在發生的變化趨勢:
CPU 在其中的作用和地位一直在變化,而這其實反映的是 AI 時代計算架構客觀需求的進化——
一開始是完全規則驅動,隻有 CPUGPU 等通用計算芯片進行發力,但由于架構的規則都是被寫死的,無法适應越來越快的算力需求;
于是開始了半規則驅動,CPUGPU 等通用計算芯片的核心能力繼續發力,但已開始有專用芯片的介入,讓 AI 計算架構不再依賴于完全寫死的規則,相對靈活地發揮出價值;
再到後來,便開啟了自定義規則驅動的階段,此時專用型 AI 芯片占據核心地位,CPU/GPU 僅僅作輔助之用,AI 計算架構獲得最大的自由度。
而我們的機器也終于能夠從執行人的思考和計算,越來越接近像人一樣思考和計算。
但這還不是終點。
終極計算架構:Neural Computing
終點是什麼?不同視角會有不同的答案。
最近正在被更多人認同的是:Neural Computing,神經網絡架構,或者說神經網絡統一架構。
即一個大一統的神經網絡計算架構,一套架構驅動所有場景、領域或任務,比如圖像處理、視頻編解碼、圖像的生成、渲染,隻需要很少的一點點改動或者一點點算法的調優,就能解決各式各樣的問題。
其特點,就是用技術驅動的方式去集成少量的規則,讓硬件因軟件而打造,軟件為實現算法而生,這樣更符合 AI 算法模型和任務的特點,也才能真正讓模型躍遷驅動性能躍遷。而不再是傳統的用硬件叠代解決問題。
而且這種方法論,不隻是單純的展望,因為正在被實踐。
比如智能車載芯片,不僅用神經網絡做了分割、檢測和識别等語義級信息,而且能夠清晰地看到一個趨勢,包括 ISP(Image Signal Processing)這樣的圖像處理任務,也都能夠用神經網絡實現了。
而業内,視頻編解碼相關的方法,神經網絡也比傳統方式實現得更好,信噪比更優異。
這兩年火爆的 NeRF,涉及到過去非常考驗硬件能力的圖像渲染,需要基于光線追蹤等等圖形學理論建立複雜規則的算法,也都被證明神經網絡可以做得更好。
甚至用的還是很簡單的神經網絡計算方法,通過學習再推理的方式重構整個過程,把過去花費大力氣求解的 3D 點雲恢複重建等問題,更直接高效解決,實力和潛力,都不言自明了。
更重要的是,這種實踐被放到了一個更具時代變革的趨勢上:計算架構領域到了一個分久必合的時候,到了一個傳統馮諾依曼架構亟待突破的時候。
這是兩個時代的劃分,背後是人與機器關系的兩種範式。
1.0 時代,依賴于經驗和規則,把人類理性分析轉換成計算機可具體執行的規則代碼,不僅定義目标,也定義整個執行的過程。
這個時代裡有很多經典的算法排序,會告訴機器每一步做什麼,以及怎麼做。CPU 和 GPU 都是這個時代裡的集大成者。
2.0 時代,依靠的是神經網絡學習和叠代,人類提目标、要求,有時目标甚至會是一個大緻的方向和框架,但機器會在神經網絡驅動下,搞清楚如何去執行,如何圍繞目标求解最優解——機器有了自主性。于是就得從算法、架構到芯片确保機器的這種自主性。
1.0 時代可以很多精細的規則、後處理、後融合,把所有人類對于具體場景任務的 know-how 變成計算機可嚴格執行的代碼,再與 " 摩爾定律 " 和硬件革新配合,做到極緻的高效。
然而 AI 模型範式下對數據的需求,以及先進制程的瀕臨極限,摩爾定律失效已然是再明顯不過的事實。
所以計算架構和範式,一定會進入 2.0 時代,人類架構的是神經網絡模型,模型自己去求解目标和結果,整個過程不再依賴人寫死的規則和經驗。這會是軟件、硬件到認知方法方方面面的根本性改變——傳統的計算架構不再适用。
這種對自主機器到來的判斷,實際也能理解很多新現象。
比如馬斯克為什麼把特斯拉的下一步,定在機器人形态上。
百度創始人李彥宏,把自動駕駛、智能車,放在了 " 汽車機器人 " 的維度上思考和談論。
以及當前以智能車載芯片知名的地平線,全名裡為啥是" 機器人技術 "。
因為一旦沿着 AI 落地展開思考和推演,最後能作為獨立品類、物種展現 AI 核心變革力的,有且隻有機器人,或者說就是自主機器人。
它可以是家裡掃地的那種,可以是提供自動駕駛出行的那種,也可以是仿照人類形體而生的那種——從感知到控制都有自主權,會是邊緣的而非雲端的,會是去中心化的而非中心化的。
而既然自主機器人是 AI 最終的歸屬,那更本質的要打造的産品,就是驅動這個自主機器人的大腦,就是處理器,或者更本質地說是計算架構。
這個本質問題的搞清楚,也能理解整個芯片半導體、信息計算産業的興衰規律。
按照經濟學的觀點說,需求決定了供應,經濟基礎決定了上層建築。
這也是為什麼一個時代會有一個時代的芯片,因為一個時代會有一個時代的計算架構。
既然神經網絡已經開啟了 " 機器像人一樣思考和計算 " 的變革,那固化執行人類思考和計算過程的架構,注定讓出中心地位,通用計算芯片也會逐漸失去主導權。
One more thing
這種無情的曆史變遷,也讓另一個知名類比更具現實骨感。
在 AI 浪潮洶湧的熱潮中,CPU 一而再被質疑,一而再被挑戰,後來英特爾的高管給出了極具中國色彩的比喻——
"CPU 是所有 XPU 平台的中央神經系統,這就有點像中國人的主食米飯,别的 XPU 都是菜,不同地方的人喜歡不同的菜,但他們都需要和大米來搭配。"
這個類比,彼時彼刻,不得不承認既形象又巧妙。
隻是比喻後來也跟此時此刻一樣精準:追求低碳水的新時代裡,誰也沒想到,米飯竟然不再必要了。
— 完 —
點這裡關注我,記得标星哦~
一鍵三連「分享」、「點贊」和「在看」
科技前沿進展日日相見 ~