陽萌或許是我接觸過的最懂技術(shù)的CEO:他是北大計算機本科,碩博連讀機器學(xué)習(xí)專業(yè),但博士讀了一半就跑了;他是百億營收大廠安克創(chuàng)新的創(chuàng)始人,也曾在谷歌做搜索算法的研發(fā);他的公司主要做的是充電寶、掃地機器人這些消費類電子產(chǎn)品,但我們聊的是人工智能、芯片等等硬科技。
我梳理了和他對談的全部內(nèi)容,我們聊了接近兩個小時,本文是第一篇,他幫我梳理了人工智能的過去、現(xiàn)在、以及未來的發(fā)展方向,我深受啟發(fā)。內(nèi)容有點長,但相信肯定會對你有所幫助。我們對談的視頻版本可以看視頻號,或者點擊文末「閱讀原文」跳轉(zhuǎn)B站觀看。
Transformer只是中間態(tài)?
我本科就很喜歡做機器學(xué)習(xí),因為覺得計算機能夠做決策是很酷的一件事情。后來03年博士也讀這個,然后,非常痛苦。
我發(fā)現(xiàn),行業(yè)里每5-10年就會有個大牛出來,開天辟地地推出一個全新的范式。譬如最早的時候大家做專家系統(tǒng),后來做決策樹,再做Support Vector Machine (SVM)。這有點像大牛發(fā)現(xiàn)了一片礦脈,很多人去挖礦,那幾年大家都很開心,博士們都非常有成果。到2017年出現(xiàn)Transformer,這又是一個新的范式,大家又挖挖挖,又很感覺很有成果。這幾年我覺得還是一個比較井噴的狀態(tài),這個礦脈的大龍的部分還在被挖出來,但是總是會挖完的。
我覺得,Transformer只是一個中間狀態(tài)。比如10年、20年之后,大概率我們就不再用Transformer了。這是一個非常大膽的一個假設(shè),但我們可以把話放到這,20年以后我們再回來看。就像同樣20年以前,大家說的最多的就是SVM,但我們看今天還有多少人用SVM?
它真的就是長江后浪推前浪,每一浪都會有一個新的范式的出現(xiàn),然后都會把之前的范式拍死在沙灘上。
分治法:AI的經(jīng)典范式?
如果將所有的范式按照背后解決問題的思路進行分類,主要有兩種:一種是基于數(shù)理邏輯和分治法,其目標是將問題分解成人類可以理解、公式可以推導(dǎo)的形式,然后再進行組合;另一種則是利用大量數(shù)據(jù)訓(xùn)練一個端到端的模型,類似于黑盒,即使我們能看到其中的參數(shù),但卻無法理解其內(nèi)在邏輯,這種模型是不可解釋的。
這兩種范式代表了兩種不同的派別:一派通過分析問題,使用邏輯和數(shù)學(xué)公式來解決問題;另一派則直接利用大數(shù)據(jù)訓(xùn)練出網(wǎng)絡(luò)模型來解決問題,而無需理解其內(nèi)部機制。
中國有句古話“知其然,知其所以然”,分治法可以被視為最通用的“知其所以然”的方式。當(dāng)人類使用自己能理解的方式解決問題時,這似乎是其唯一的方法。
以計算機科學(xué)為例,如自然語言處理領(lǐng)域,搜索一個詞的第一步通常是進行分詞,因為整段文本無法進行檢索。分詞后,我們會對詞匯進行特征提取,例如詞頻的高低,然后基于這些分詞和特征進行搜索、翻譯等更高級的操作。
另一個例子是自動駕駛技術(shù)。自動駕駛本質(zhì)上是一種機器人技術(shù),第一步是感知,也就是識別周圍環(huán)境中的各種元素。第二步是規(guī)劃,也就是確定要執(zhí)行的任務(wù)以及如何與周圍環(huán)境協(xié)同或在其中移動。第三步是控制,比如實際操作車輛怎么去加速、轉(zhuǎn)向等。
在深度學(xué)習(xí)或端到端算法出現(xiàn)之前,除了分治法,我們幾乎沒有其他方法來解決這些問題。
因此,我們發(fā)現(xiàn),如果沒有分治法,人類似乎無法解決問題。也就是說,分治法是人類理性解決問題的必經(jīng)之路。
大模型時代到來,為何端到端逐漸成為主流?
我在2003年攻讀博士學(xué)位時研究決策樹(Decision Tree),發(fā)現(xiàn)這是一個典型的分治法應(yīng)用。決策樹可以在一個數(shù)據(jù)集上輕易達到70%至80%的準確率,但它的天花板就在那了。雖然可以通過各種各樣的技巧,比如增加擾動、使用多個決策樹等方法來提高一些性能,但是再往上就上不去了。
這是因為分治法的剛性的本質(zhì),打破了很多問題本身的一些柔性聯(lián)系。
當(dāng)我們在兩個步驟之間設(shè)定了一個非常明確和精確的邊界時,這些柔性的聯(lián)系就被切斷了。我這個感受后來在工作里很多地方都被印證出來,比如做搜索時,用的就是典型的分治法。當(dāng)時谷歌內(nèi)部有一套完整的評價體系,用百分制來評價一個搜索詞最后的效果。大約在2007年,谷歌的搜索效果可以達到64到65分,高出雅虎接近8分。但即使到了2024年,谷歌的分數(shù)可能也還在70分左右。
換句話說就是,分治法可以迅速達到70%到80%的水平,但之后就會遇到瓶頸,再也上不去了。
在應(yīng)用分治法的過程里,我也發(fā)現(xiàn)很多有意思的事情。第一,分治法是一個非?!俺?a class="article-link" target="_blank" href="/tag/%E5%B7%A5%E7%A8%8B%E5%B8%88/">工程師”的方法。因為任何一個大問題,每向下細分一層,就意味著需要更多的團隊和工程師來研究更細分的問題。所以,我當(dāng)年在谷歌時,知道很多冷知識,例如日語的某些詞如何分詞、阿拉伯語的一些特殊情況應(yīng)該怎么處理等。今天你會發(fā)現(xiàn),換到自動駕駛領(lǐng)域里邊也是一樣的。
使用分治法的時候,問題被細分后就變成了一個小眾領(lǐng)域,很容易進入牛角尖,然后在牛角尖里面再往里面鉆,其實花了可能很多博士的很多時間,研究了很多數(shù)據(jù),去寫一篇論文。但是,今天隨著端到端算法的出現(xiàn),這些博士們當(dāng)時的很多工作可能就失去了意義,變得不再重要。就像今天,我那些冷門的、怎么把詞分好的知識已經(jīng)沒有人會感興趣去購買了。
再來看自然語言處理,這是一個龐大的領(lǐng)域,過去至少培養(yǎng)了3萬個以上的博士(按每年1000個算,30年3萬個)。但這些博士都是在分治法的框架下,解決了很多具體問題,可能也掌握了許多冷門知識。但是,隨著端到端的大模型的出現(xiàn),這些冷門知識不再被需要了。這3萬個博士投入了幾年、十幾年不等的人生,可能就再也沒有價值了。
所以我也很慶幸,當(dāng)時博士讀了一半就跑了。
英偉達和GPU的遇到的困難?
前幾次算法的迭代并沒有摧毀一個行業(yè),比如在深度學(xué)習(xí)時代,自然語言處理仍然存在。只是這一輪基于Transformer的大語言模型出來,才真正把自然語言處理這個行業(yè)給“摧毀”了。所以,我們發(fā)現(xiàn)最近這一輪算法范式的迭代實際上跟芯片和硬件息息相關(guān)。
或者應(yīng)該這么說,就這一輪“毀天滅地”的算法迭代,是跟GPU這樣的硬件互為因果的。
因為沒有GPU,就不可能產(chǎn)生Transformer。換句話說,只有在GPU上,Transformer這樣的算法才能在大規(guī)模數(shù)據(jù)上得到實現(xiàn)。
之前黃仁勛請了Transformer 的所有的發(fā)明人,他們在一起同臺相互惺惺相惜了一下,有點像是兩組人一起開創(chuàng)歷史,然后在今天這個歷史時刻大家在一起擁抱一下那種感覺。
如果你打開英偉達的 GPU ,會發(fā)現(xiàn)現(xiàn)在GPU中間貼著一小塊運算核心,主要負責(zé)計算矩陣乘法;外面貼著4塊或8塊高帶寬內(nèi)存HBM。這個架構(gòu)就是把幾十億、幾百億個模型參數(shù)存在兩端的內(nèi)存里。
當(dāng)任務(wù)進來的時候,這些參數(shù)被搬到中間的計算核心去做矩陣乘法計算,計算完之后然后再寫回去。所以,每一次計算都是要經(jīng)歷把所有的參數(shù)從內(nèi)存里搬到計算中心,算完然后再拿出來的過程。
馮諾依曼架構(gòu)在大模型時代的困境?
馮諾依曼架構(gòu)和分治法就是一對最佳搭檔。我們通過分治法解決問題,然后把它表達成為程序,編寫出來的就是一行行的代碼,分成一個個的函數(shù),它們會相互調(diào)用。但在分治法中,一段時間內(nèi)實際上只運行一段代碼,也就是說,一段時間內(nèi)我們只在解決某一個子問題。所以,當(dāng)年馮諾依曼發(fā)明了這樣的架構(gòu),就是把數(shù)據(jù)和程序都寫在內(nèi)存里,然后分治法每運行到哪一步,就把對應(yīng)的程序和數(shù)據(jù)加載到CPU里中。
所以,馮諾依曼架構(gòu)的核心,就是區(qū)分了計算器和存儲器。代碼存儲在存儲器中,分治法運行到哪一步,就把那一步的代碼加載到計算器里去運行,運算完成后再取出來。
這么多年過去,我們的計算機越來越先進,但它的L1 Cache 始終維持在幾百KB,因為沒有必要再增加,任何一段程序也不會超過這個大小。每次加載到處理器中的程序,幾十KB、100KB就足夠了。
但你會發(fā)現(xiàn),今天的Transformer大模型是截然相反的。因為Transformer是基于分治法的反面,也就是黑盒的端到端解法。它表現(xiàn)出來的不是一段一段去解決問題,而是表現(xiàn)出了整體800億個參數(shù);也不是每次都從800億個參數(shù)里面加載一小部分去運算,而是每次都需要將800億個參數(shù)完整地加載進去,然后算完再出來。
所以,這個過程實際上不應(yīng)該再使用之前的馮諾依曼架構(gòu)了,否則就會遇到英偉達今天面臨的困難和挑戰(zhàn)。英偉達現(xiàn)在90%以上的時間都在做數(shù)據(jù)搬運,只有不到10%的時間真正用于矩陣乘法計算。
前段時間還聽到一個有趣的段子,說英偉達推出了算力經(jīng)過嚴重“閹割”的顯卡,但如果你把足夠多的顯卡并聯(lián)起來去做訓(xùn)練,它的整體算力是不會下降的。因為盡管單卡的算力降低了,但當(dāng)很多卡連接在一起時,大部分功夫都花在了數(shù)據(jù)搬運上,因此即使算力降低,性能也不會受到影響。因為瓶頸在數(shù)據(jù)搬運而不在計算上。
Scaling Law能否延續(xù)?
當(dāng)前GPU技術(shù)正向更先進的制程走,從5納米到3納米,再到1納米,還能提高多少是需要打一個問號的。我對這條路線整體比較悲觀,并不是說性能提升已達極限,而是覺得目前處理問題的方法在本質(zhì)上存在誤區(qū)。
對大型模型來說,尤其是在推理端,還要再沿用馮諾依曼架構(gòu)把數(shù)據(jù)和處理分開嗎?我們可以類比人腦:人腦同樣擁有約800億個神經(jīng)元,但運作起來功耗只有不到20瓦,而在英偉達的芯片上運行具有800億參數(shù)的模型,耗電量至少在兩三千瓦以上。這中間的核心差異在于,人腦不需要搬移數(shù)據(jù)的。
假設(shè)人腦采用馮諾依曼架構(gòu),所有知識和記憶存在左腦,所有的處理活動發(fā)生在右腦,每次你看見、聽到的東西在右腦進來,然后把數(shù)據(jù)從左腦搬到右腦去處理,再將處理結(jié)果寫回去,覺得這樣的腦子會燒掉嗎?所以我想說,馮諾依曼架構(gòu)最適合解決我們說的分制法的算法問題,但它不適合解決端到端的問題。
人類過去用分治法解決問題,在計算機里表現(xiàn)出來就是程序。而馮諾伊曼架構(gòu)把所有的程序存在存儲器里邊,然后每次執(zhí)行到一步就加載一部分到計算器里邊去運行,這樣的架構(gòu)非常適合去運行分治法產(chǎn)生的程序。
如果我們分三層,最底下一層是解題思路分治法,往上一層是對應(yīng)的表現(xiàn)形式,也就是程序,最上面硬件,過去 70 年里就是馮諾依曼架構(gòu)的CPU。所以,分治法、程序和馮諾依曼架構(gòu)的CPU,共同構(gòu)成了一個時代。
從這個視角看的話,英偉達和Transformer模型開創(chuàng)了一個新時代。它的底層不再是分治法了,而是端到端的算法。中間的表現(xiàn)層是大模型,再往上一層運行這些模型的芯片已經(jīng)不再是傳統(tǒng)的馮諾依曼架構(gòu)了,而是把內(nèi)存與計算單元緊密結(jié)合的近存計算架構(gòu),也就是我們今天所說的GPU。
為什么我們說中間這樣的時代也大概率會被被拍死在沙灘上呢?其實大模型和幾百億個參數(shù)的端到端模型,是否應(yīng)該被運行在一個存和算分離的芯片上,這仍存在疑問。它最理想的運行方式一定是像我們的大腦一樣,在同一個神經(jīng)元里邊存著知識和做計算,也就是存算一體。所以,我們相信,在未來幾年內(nèi),一定會出現(xiàn)存和算一體的芯片。
什么是存算一體?
人腦的一個神經(jīng)元其實是存著一些信息的,每一次計算的話,電信號又會通過它進行計算。也就是說,存儲信息和進行計算在同一個神經(jīng)元里發(fā)生。
所以如果在現(xiàn)在計算機的存儲單元上,能再加上計算的邏輯,也就是同一個單元既存儲又計算,那我想這樣結(jié)構(gòu)的芯片其實是非常適合運行大模型算法的。
我相信運行一個幾百億參數(shù)的大模型,最好的架構(gòu)一定是存算一體的架構(gòu),因為它避免了所有的數(shù)據(jù)的搬運。過去為什么我們沒有做出存算一體的架構(gòu)?其實也是因為過去都是分治法。它其實不太需要在存儲單元里邊進行計算。但當(dāng)你去認真地研究怎么在存儲單元里做計算的時候,這件事情我相信幾年下來就會有很大的突破。
我其實是很相信仿生的。無論從大模型、還是像存算一體的芯片算法和硬件的發(fā)展,其實都是在朝一個仿生的方向在走。那觀察人腦的時候不難發(fā)現(xiàn),其實腦子不只是在存儲知識,不只是在推理,腦子還在每一次推理的過程中間訓(xùn)練自己,所以它本質(zhì)上是一個存算訓(xùn)一體的東西。
但今天的芯片在不停搬運數(shù)據(jù)的時候,其實我們是沒有功夫再去修改這個模型的參數(shù)的,因為我們所有的功夫已經(jīng)花在把那800億個參數(shù)搬來搬去上面了。所以我們沒有功夫再去操心說怎么調(diào)整一下參數(shù),讓它變得更好。但一旦出現(xiàn)存算一體的芯片,也就是那些參數(shù)再也不搬了,然后每次推理就是走一遍的時候,我們是不是空出的腦子就可以利用積累的知識來更新一下模型的參數(shù)。
所以,我相信在存算一體的芯片上,一定會誕生新一代的、不再是Transformer的全新算法,而這一代全新的算法可能會超越存算的界限,可能會一邊運行一邊進化自己,但這也是個非??植赖氖虑椤?/p>
下一篇,我們會討論AI的落地、應(yīng)用、以及為何陽萌和安克會對AI有這么深入的思考。關(guān)注我,下篇見。
(注:本文不代表老石任職單位的觀點。)