文章來(lái)源: GenAI新世界
作者:苗正
編輯:王兆洋
圖片來(lái)源:由無(wú)界 AI生成
2017年,來(lái)自谷歌的幾個(gè)研究員寫(xiě)下《Attention is All you need》的題目,給世界帶來(lái)了Transformer模型架構(gòu),它成為了今天“大模型”繁榮背后無(wú)可爭(zhēng)議的根基,OpenAI的GPT,Meta的Llama以及一眾最主流大語(yǔ)言模型都是在Transformer的基礎(chǔ)上生長(zhǎng)起來(lái),今天還有一批又一批聰明的研究者在不停嘗試提出比Transformer更強(qiáng)的模型架構(gòu)。
某種程度上,今天所有AI模型層面的研究都在圍繞對(duì)Transformer的掌控與超越展開(kāi)。但這樣一個(gè)劃時(shí)代的研究在當(dāng)時(shí)并未立刻引起所有人的重視,而這種“嗅覺(jué)”的差異也很大程度決定了今天的AI格局——OpenAI在這篇論文出現(xiàn)第二天就立刻徹底轉(zhuǎn)向了Transformer架構(gòu),然后2020年5月OpenAI基于Transformer架構(gòu)的GPT-3論文發(fā)表,2年后ChatGPT出現(xiàn),一切都不再相同。
「變壓器」這個(gè)欄目名來(lái)自對(duì)Transformer的直譯,我們會(huì)拆解和介紹關(guān)于A(yíng)I及相關(guān)技術(shù)的最新論文和最前沿研究,希望像OpenAI當(dāng)年看到Transformer一樣,幫助更多人遇到自己的「變壓器」時(shí)刻,比一部分人更早進(jìn)入生成式AI的世代。大模型領(lǐng)域最新的一個(gè)熱門(mén)趨勢(shì)是把模型塞到手機(jī)里。而最應(yīng)該做這個(gè)研究的公司終于帶著它的論文現(xiàn)身,那就是蘋(píng)果。
這家公司的研究團(tuán)隊(duì)最近發(fā)布了一篇論文《LLM in a flash: Efficient Large Language Model Inference with Limited Memory》,簡(jiǎn)單說(shuō),它嘗試?yán)瞄W存來(lái)解決大模型在塞進(jìn)手機(jī)時(shí)遇到的內(nèi)存不足的問(wèn)題。
這是一個(gè)對(duì)于端側(cè)部署模型十分關(guān)鍵的問(wèn)題。
計(jì)算機(jī)的記憶體(Memory)簡(jiǎn)單分為內(nèi)存(Ram)和閃存(Flash)兩種。內(nèi)存用于臨時(shí)存儲(chǔ)那些需要隨時(shí)訪(fǎng)問(wèn)的數(shù)據(jù)和指令,它提供高速的讀寫(xiě),有較高的存儲(chǔ)密度。而閃存正相反,它讀寫(xiě)較慢,適用于長(zhǎng)期數(shù)據(jù)的存儲(chǔ)。
因此從特性上看,內(nèi)存更適合需要頻繁讀寫(xiě)的大模型。然而這帶來(lái)一個(gè)問(wèn)題,它成了一個(gè)限制死了的搭配,比如一個(gè)70億參數(shù)的模型就必須需要超過(guò)14GB的內(nèi)存才能以半精度浮點(diǎn)格式加載參數(shù),但這超出了大多數(shù)邊緣設(shè)備的能力。
如這篇論文的標(biāo)題所示,蘋(píng)果想要通過(guò)閃存來(lái)解決這個(gè)問(wèn)題。
蘋(píng)果版的曹沖稱(chēng)象
論文為了將大模型搬到閃存上,一共做了三步。
第一步:先讓閃存能參與進(jìn)模型運(yùn)行中來(lái)。論文提到一個(gè)概念,大語(yǔ)言模型在前饋網(wǎng)絡(luò)(FFN)層展現(xiàn)出高度的稀疏性(超過(guò)90%)。FFN是一種基本的神經(jīng)網(wǎng)絡(luò)架構(gòu),其中信息單向流動(dòng),從輸入層流向輸出層,中間可能經(jīng)過(guò)多個(gè)隱藏層。在這種網(wǎng)絡(luò)中,每一層的輸出僅作為下一層的輸入,而沒(méi)有任何反饋或循環(huán)連接。于是論文把FFN當(dāng)成是一個(gè)篩子,僅迭代傳輸閃存中必要的、非稀疏數(shù)據(jù)到DRAM進(jìn)行處理。
使用修正線(xiàn)性單元(ReLU)前后輸出幅度對(duì)比,ReLU用來(lái)實(shí)現(xiàn)稀疏性
接下來(lái)是第二步:論文提出了一種名為“滑動(dòng)窗口技術(shù)”的神經(jīng)元數(shù)據(jù)管理方法。把那些在預(yù)測(cè)模型中產(chǎn)生正輸出的神經(jīng)元定義為活躍神經(jīng)元,在內(nèi)存中保留最近一部分輸入標(biāo)記的神經(jīng)元數(shù)據(jù),僅加載當(dāng)前輸入標(biāo)記與其直接前驅(qū)不同的神經(jīng)元數(shù)據(jù)。這樣做能有效利用內(nèi)存,釋放掉之前分配給已不在滑動(dòng)窗口內(nèi)的舊標(biāo)記神經(jīng)元數(shù)據(jù)的內(nèi)存。
滑動(dòng)窗口技術(shù)
第三步:論文還提出了一種增加數(shù)據(jù)塊大小的策略。論文用OPT和Falcon模型做實(shí)驗(yàn),把向上投影的第i列和向下投影的第i行捆綁存儲(chǔ)。當(dāng)激活第i個(gè)中間神經(jīng)元時(shí),這兩部分?jǐn)?shù)據(jù)會(huì)同時(shí)被使用。通過(guò)在閃存中將這些對(duì)應(yīng)的列和行一起存儲(chǔ),可以將數(shù)據(jù)整合成更大的塊進(jìn)行讀取。
內(nèi)存管理策略,首先將最后的元素復(fù)制到要?jiǎng)h除的神經(jīng)元中,以保持連續(xù)的內(nèi)存塊,然后將需要的元素堆疊到最后
這些術(shù)語(yǔ)看起來(lái)依然晦澀?沒(méi)關(guān)系我們可以做個(gè)類(lèi)比,事實(shí)上它的思路與曹沖稱(chēng)象非常像。
首先論文要解決的問(wèn)題就是,大模型是大象,沒(méi)辦法直接上秤測(cè)量(設(shè)備內(nèi)存有限,放不了大模型)。
于是用了三個(gè)步驟來(lái)在特定環(huán)節(jié)減少對(duì)大模型的訪(fǎng)問(wèn)延遲。
首先找到一個(gè)等價(jià)方法,讓大象上船,測(cè)量水位線(xiàn),再用石頭壘在船上,船達(dá)到同樣的水位線(xiàn),最后稱(chēng)這些石頭的重量(也就是上面說(shuō)的第一步,可以理解為減少數(shù)據(jù)加載)。
然后,其中體積一樣大的石頭不需要稱(chēng)第二次(也就是第二步,優(yōu)化數(shù)據(jù)塊大小以提高閃存吞吐量)。
此外,搬運(yùn)石頭的時(shí)候使用更大的框,一次可以裝很多塊石頭(就是最后一步的,高效管理加載到內(nèi)存中的數(shù)據(jù))。
而這個(gè)過(guò)程的重點(diǎn),是優(yōu)化閃存交互和內(nèi)存管理,以實(shí)現(xiàn)內(nèi)存受限設(shè)備上的高效推理。使用這個(gè)方法來(lái)預(yù)測(cè)FFN的稀疏性并避免加載零化的參數(shù),優(yōu)化成本模型和按需選擇性加載參數(shù),實(shí)現(xiàn)了可以運(yùn)行比設(shè)備DRAM容量大兩倍的模型,并在CPU和GPU上分別比傳統(tǒng)方法提速4-5倍和20-25倍。
當(dāng)然,論文提供的方法只針對(duì)60到70億左右參數(shù)的模型,如果是幾百億參數(shù)的模型,這樣的辦法會(huì)造成死鎖或者內(nèi)存溢出。不過(guò)他仍然給了便攜使用大模型這事一種可能性,這是非常難得的。
為了證明論文提出方法的實(shí)際價(jià)值,論文引用了Facebook的OPT 6.7B模型和TII的Falcon 7B模型。下圖在模型的一半內(nèi)存可用時(shí),1個(gè)token的推理延遲。在M1 Max上,每個(gè)token從閃存加載需要125毫秒的延遲,內(nèi)存管理需要65毫秒。因此,每個(gè)token的總的與內(nèi)存相關(guān)的延遲小于190毫秒(兩者總和)。相比之下,傳統(tǒng)方法需要以6.1GB/s的速度加載13.4GB的數(shù)據(jù),導(dǎo)致每個(gè)token的延遲大約為2330毫秒。因此,這個(gè)方法相對(duì)于基準(zhǔn)方法表示了重大改進(jìn)。Falcon 7B也是類(lèi)似,使用論文的方法延遲僅為250毫秒,而傳統(tǒng)方法的延遲為2330毫秒。延遲肯定是越低越好,越低代表從閃存中加載大模型的速度越快。
各模型1個(gè)token的推理延遲
在A(yíng)I上落后了?蘋(píng)果已經(jīng)悄悄地做了一堆工作
在今年AI的瘋狂里,蘋(píng)果曾被詬病動(dòng)作很慢,但這篇論文、此前蘋(píng)果提出的MLX框架、自動(dòng)語(yǔ)音識(shí)別(ASR)以及它自己的模型Ferret等研究其實(shí)說(shuō)明,蘋(píng)果已經(jīng)目標(biāo)明確的在做很具體的研究了??纯催@幾個(gè)重要的但并沒(méi)有引起很多重視的研究,也可以感受到蘋(píng)果AI上的方向。
MLX框架是蘋(píng)果在2023年推出的一個(gè)專(zhuān)門(mén)運(yùn)行在蘋(píng)果芯片上的機(jī)器學(xué)習(xí)數(shù)組框架。MLX支持可組合的函數(shù)變換,用于自動(dòng)微分、自動(dòng)向量化和計(jì)算圖優(yōu)化,但重點(diǎn)是MLX中的計(jì)算只有在需要時(shí),數(shù)組才會(huì)被實(shí)際計(jì)算出來(lái)。同時(shí)MLX中的計(jì)算圖是動(dòng)態(tài)構(gòu)建的,改變函數(shù)參數(shù)的形狀不會(huì)觸發(fā)緩慢的編譯過(guò)程。而且MLX中的數(shù)組存在于共享內(nèi)存中,可以在任何支持的設(shè)備類(lèi)型上執(zhí)行MLX數(shù)組的操作,而不需要數(shù)據(jù)傳輸。
也就是說(shuō),MLX突出一個(gè)節(jié)省資源且“海陸空”三棲作戰(zhàn)(可以同時(shí)調(diào)用內(nèi)存、顯存,可以在手機(jī)和電腦運(yùn)行)。這說(shuō)明蘋(píng)果非常注重模型的可實(shí)現(xiàn)性,即便是手機(jī)這樣內(nèi)存有限的設(shè)備也能跑大模型。當(dāng)有了這樣的框架后,蘋(píng)果就可以將Ferret模型塞進(jìn)便攜設(shè)備里了。
Ferret模型是蘋(píng)果在2023年10月推出的新型多模態(tài)大型語(yǔ)言模型(MLLM),它能夠理解圖像內(nèi)任意形狀或粒度的空間指代,并準(zhǔn)確地對(duì)開(kāi)放詞匯的描述進(jìn)行定位。Ferret采用了一種新穎而強(qiáng)大的混合區(qū)域表示方法,將離散坐標(biāo)和連續(xù)特征結(jié)合起來(lái)表示圖像中的一個(gè)區(qū)域。為了提取多樣化區(qū)域的連續(xù)特征,論文提出了一種空間感知的視覺(jué)采樣器,能夠處理不同形狀之間的稀疏性差異。模型這種理解能力,意味著Ferret可以接受各種輸入,比如點(diǎn)、邊界框和自由形狀,像是DALL·E也好,Midjourney也好,都不能完全理解這種提示詞的輸入。
蘋(píng)果將要推出的AR設(shè)備Vision Pro,對(duì)外宣稱(chēng)是首款采用空間計(jì)算的產(chǎn)品??臻g計(jì)算本質(zhì)是傳感器的一門(mén)學(xué)問(wèn),通過(guò)傳感器來(lái)獲取關(guān)于物理空間的數(shù)據(jù),并通過(guò)計(jì)算和分析這些數(shù)據(jù)來(lái)理解和處理環(huán)境信息。傳統(tǒng)電子設(shè)備屏幕都只是平面二維,但是空間計(jì)算作用的是現(xiàn)實(shí)中三維空間的物理概念,在Ferret的加持下,空間的邊界感、長(zhǎng)寬高三種向量的立體感就會(huì)更加明顯。
Ferret模型不一定能按要求畫(huà)出最美的畫(huà)面,但它一定能符合擁有藝術(shù)設(shè)計(jì)能力創(chuàng)作者的需求。尤其是在視覺(jué)識(shí)別、配色方案、排版、網(wǎng)格等設(shè)計(jì)專(zhuān)業(yè)領(lǐng)域,F(xiàn)erret模型的效果將會(huì)最為明顯。設(shè)計(jì)從業(yè)者是蘋(píng)果最為廣泛的受眾之一,蘋(píng)果就像是個(gè)狙擊手,專(zhuān)門(mén)瞄準(zhǔn)用戶(hù)最需要它的地方。
此外蘋(píng)果也一直在對(duì)與Siri相關(guān)的AI技術(shù)做研究,比如大語(yǔ)言模型在SLU任務(wù)上的準(zhǔn)確性受限于A(yíng)SR系統(tǒng)對(duì)給定語(yǔ)音輸入的準(zhǔn)確性。那為了解決這一問(wèn)題,蘋(píng)果找到了一種方法:使用ASR的n-best假設(shè)列表來(lái)提示大語(yǔ)言模型,而非僅依賴(lài)錯(cuò)誤率較高的1-best假設(shè)。意味著Siri在接入大語(yǔ)言模型后,性能會(huì)得到提高。
至此,從硬件的芯片層,到調(diào)用系統(tǒng)側(cè),到與空間計(jì)算概念相聯(lián)系的自研多模態(tài)模型,再到目前看起來(lái)最被期待的蘋(píng)果的AI能力的入口Siri,蘋(píng)果已經(jīng)有體系有目的有節(jié)奏的完成了諸多技術(shù)積累。2024年,在討論AI時(shí)沒(méi)人能忽視蘋(píng)果了。