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