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