行動端大型語言模型性能瓶頸:理解稀疏激活與存儲限制

智能手機存儲挑戰

現代智能手機在運行大型語言模型時面臨一個根本限制:DRAM容量不足以存放完整的模型權重。這一限制迫使系統將模型參數分散存放在外部存儲解決方案中,例如 Snapdragon 8gen3 處理器中的 UFS 4.0。理解移動存儲的性能特性對於優化邊緣設備上的 AI 推理至關重要。

存儲 I/O 性能分析

塊大小與讀取帶寬

移動存儲的性能表現與讀取塊大小密切相關,呈現出反直覺的模式。當以順序或隨機方式存取數據時,較大的讀取塊能提供更高的帶寬效率。以 512KB 的塊大小為例,順序讀取的最大性能可達 4 GB/s,隨機讀取則為 3.5 GB/s。然而,將塊大小縮小到 4KB,性能會大幅下降——隨機讀取帶寬僅剩 450 MB/s。這對於稀疏表實現和權重提取策略來說,是一個關鍵的設計考量。

隨機存取範圍的影響

有趣的是,隨機讀取操作的範圍大小顯著影響吞吐量。較小的讀取範圍始終優於較大的範圍。在進行 4KB 的隨機讀時,128MB 範圍的帶寬約為 1 GB/s,而擴大到 512MB 時,帶寬則降低到 850 MB/s 以下。隨著塊大小增大,這一性能差距變得不那麼明顯,表明稀疏表的存取模式必須在讀取範圍優化上進行謹慎平衡。

CPU 核心依賴性

執行 I/O 命令的處理核心直接影響存儲性能。較高頻率的 CPU 核心能實現更佳的 I/O 吞吐量。以 3.3GHz 運行的“大核”在 4KB 隨機讀取中可達 1 GB/s,而 2.2GHz 的“小核”僅能達到 760 MB/s。這一差異源於 UFS 驅動程序需要處理中斷和隊列管理操作——較高的時脈速度能加快 I/O 相關任務的處理。

單隊列架構的限制

與 NVMe 解決方案不同,移動 UFS 存儲採用單命令隊列,缺乏固有的並行能力。使用多核進行 I/O 操作反而會因命令隊列競爭而使性能下降最多 40%。這一根本的架構限制意味著在移動設備上並行 I/O 方法並無優勢。

LLM 推理架構與雙階段處理

語言模型的推理分為兩個截然不同的計算階段,每個階段具有不同的性能特性,需採取相應的優化策略。

預填充階段:提示處理

預填充階段在單次迭代中處理整個用戶提示,以生成第一個標記。這一集中式工作負載對計算資源要求較高,使得“首字元時間”(TTFT)成為關鍵性能指標。整個提示作為密集輸入,經由模型的 transformer 層集體處理。

解碼階段:序列生成

預填充完成後,解碼階段以自回歸方式逐步生成輸出標記。每個新生成的標記作為下一次迭代的輸入,直到序列完成或生成 EOS 標記。由於每次迭代只處理一個標記,計算負載較輕,但吞吐量受“標記間時間”(TBT)限制。這一階段反映用戶對響應速度的體驗。

稀疏激活:效率提升的契機

為何稀疏性重要

像 GPT-4 和 Llama-2 這樣的現代 transformer 使用只解碼器架構,具有重複的模塊:注意力機制和前饋網路 (FFN)。近期的變體利用群組查詢注意力,將計算重心轉向 FFN 模塊,這些模塊約佔模型參數的 80%。

FFN 模塊採用 ReLU 家族的激活函數,形成自然的稀疏性模式:大多數神經元 (以矩陣中的行和列表示),產生的輸出貢獻很小。這些非活躍神經元可以被跳過,對最終結果影響不大。建立一個預測神經元激活的稀疏表,能大幅降低計算量。

預測驅動的優化

神經元的激活狀態可以在 FFN 計算前被準確預測。包括 PowerInfer 和 DejaVu 在內的先前研究證明,輕量級的 MLP 網絡能在每個 FFN 模塊前預測神經元激活,並達到高準確率。這種預測方法將稀疏激活從一個固有特性轉變為可利用的優化機會,減少必要的計算,加快推理速度。

整合挑戰

真正的複雜性在於將稀疏激活利用與移動存儲限制相結合。預測性稀疏表結構必須與存儲 I/O 模式相匹配——利用 128MB 窗口內的小範圍讀取,以維持 1 GB/s 的帶寬閾值,同時最小化對單隊列 UFS 架構的競爭。

對於在設備上的 AI 的實際影響

高效的移動端大型語言模型系統必須同時解決兩個優化維度:利用預測機制捕捉稀疏神經元模式,同時尊重移動存儲的獨特 I/O 特性。稀疏計算模式與存取模式的相互作用決定了實際性能——兩者若孤立優化,將損害整體系統效率。


研究團隊: 薛振亮 和 宋一心 (共同第一作者),以及 上海交通大學平行與分佈式系統研究所 (IPADS) 的 米澤宇、陳樂、夏宇彬、陳海波

查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 留言
  • 轉發
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate App
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)