手機流暢運行470億大模型:上交大提出PowerInfer-2引領智能手機大模型推理新紀元 精華
引言:智能手機上的大型語言模型推理的挑戰與機遇
隨著大型語言模型(LLM)在理解和生成類似人類的文本方面的卓越能力,它們已經從根本上改善了我們的日常生活并轉變了我們的工作環境。如今最先進的LLM,例如GPT-4和Claude-3,都部署在配備了最先進GPU的數據中心中。這些GPU提供了廣泛的高帶寬內存,并提供達到數千teraflops的計算能力。與此同時,將LLM部署在普遍的智能手機上的趨勢也在興起,這一轉變旨在充分利用豐富的個人數據,同時通過避免將私人數據傳輸到云服務來維護隱私。
然而,智能手機盡管使用廣泛,但由于其處理能力有限和內存大小受限,難以滿足LLM推理的復雜需求。為了解決這些問題,研究人員探索了兩種有前途的方法來在資源受限的條件下提供LLM推理服務。一種策略是部署縮小版的LLM,例如Google的Gemini Nano 3.25B,它使用不到2GB的內存,通過減少智能能力來適應內存限制。另一些技術旨在降低推理期間LLM權重的計算和存儲需求。例如,PowerInfer項目通過將活躍神經元分配給GPU,而非活躍神經元分配給CPU,實現了在個人電腦上推理速度的11倍提升。然而,這些解決方案在智能手機上遇到了挑戰,因為智能手機的硬件和存儲設備較弱,帶寬較低,且由于單一命令隊列不支持并發訪問,使得I/O活動成為智能手機上LLM推理的常見瓶頸。
本文介紹了PowerInfer-2,這是第一個在智能手機上執行高速LLM推理的框架,能夠適應超過設備內存容量的高達47億參數的模型。PowerInfer-2是PowerInfer項目的后續工作,專門為智能手機設計。與其前身一樣,PowerInfer-2利用了LLM推理中固有的動態稀疏激活:每次推理迭代只需要一部分神經元,而不是整個模型權重。這種方法在推理過程中大大降低了計算需求,因為PowerInfer-2每次迭代只需要處理選定的一組神經元。固有的稀疏性還增強了局部性,使PowerInfer-2能夠構建一個有效的內存緩存,保持最常用的神經元在內存中,從而減輕了讀取權重相關的I/O開銷。
論文標題:PowerInfer-2: Fast Large Language Model Inference on a Smartphone
機構:Institute of Parallel and Distributed Systems (IPADS), Shanghai Jiao Tong University
論文鏈接:https://arxiv.org/pdf/2406.06282.pdf
PowerInfer-2框架概述
PowerInfer-2是一種專為智能手機設計的高速大型語言模型(LLM)推理框架。它能夠處理高達470億參數的模型,即使這些模型的大小超過了設備的內存容量。PowerInfer-2是PowerInfer項目的后續工作,它利用LLM推理中固有的動態稀疏激活:每次推理迭代只需要一部分神經元,而不是整個模型權重。這種方法顯著降低了推理過程中的計算需求,因為PowerInfer-2只需要處理每次迭代中選擇的一組神經元。此外,固有的稀疏性還增強了局部性,使PowerInfer-2能夠構建一個高效的內存緩存,保持最常用的神經元在內存中,從而減輕了讀取權重的I/O開銷。
與PowerInfer不同,PowerInfer-2面臨的關鍵挑戰在于能夠利用現代智能手機中高度異構的XPUs,如不對稱的big.LITTLE CPU核心、GPU和NPU。如果沒有充分利用硬件特性,推理過程就會導致生成速度不佳。此外,緩存未命中不可避免地會引起I/O開銷。盡管PowerInfer-2利用稀疏激活來減少推理過程中所需的權重量,但它仍然會產生大量的I/O讀取操作,這可能會對推理性能產生不利影響。
神經元集群和架構
3.1 神經元集群和架構
PowerInfer-2提出了一種稱為神經元集群的計算抽象,專為LLM在異構計算場景中的推理設計。PowerInfer-2在神經元集群的粒度上執行計算和I/O操作,這些神經元集群可以在計算過程中動態組成多個激活神經元,其數量由計算單元的計算能力決定。例如,在解碼階段,當計算由CPU核心執行時,分配給每個CPU核心的神經元集群的大小比在預填充階段NPU計算時的要小。通過使用這種抽象,PowerInfer-2可以充分利用具有不同計算能力的XPUs,有效地隱藏I/O開銷。
圖2展示了PowerInfer-2的整體架構,該架構分為在線部分(右側)和離線部分(左側)。在線部分服務于神經元集群粒度的推理,并包括四個協作組件:多態神經元引擎(§4.1)、內存中神經元緩存(§4.2)、靈活的神經元加載(§4.3)和神經元集群級I/O管道(§4.4)。
多態神經元引擎為預填充和解碼階段使用完全不同的計算模式。在預填充階段,神經元集群包含來自權重矩陣的所有神經元,并主要依賴NPU處理大規模矩陣計算。在解碼階段,由于顯示出顯著的稀疏性,只有少部分神經元(大約10%)在權重矩陣中被激活并參與計算,因此PowerInfer-2專門利用CPU核心進行神經元集群計算。
多態神經元引擎
PowerInfer-2引入了一種多態神經元引擎,該引擎能夠動態地將神經元組合成神經元簇,以利用LLM推理階段和異構XPUs的不同計算特性。
4.1.1 NPU-Centric Prefill
在預填充階段,所有提示令牌都同時被處理。盡管每個令牌顯示出高度的稀疏性并激活不同的神經元,但由于這些激活的聚合,總體稀疏性顯著降低。因此,PowerInfer-2在預填充階段不通過預測器計算激活的神經元,而是選擇直接將所有神經元合并成一個大的神經元簇。鑒于NPU在處理大規模矩陣運算方面的優勢,這一策略能夠最大化NPU的計算能力。
4.1.2 CPU-Centric Decoding
與預填充階段不同,解碼階段集中處理每次迭代中的單個令牌,顯示出顯著的稀疏性,因為僅有少部分神經元(大約10%)在權重矩陣中被激活并參與計算。因此,從預填充階段過渡到解碼階段時,多態神經元引擎將權重矩陣計算分解為小的神經元簇,這些小簇的元素由預測器識別為活躍的。我們觀察到,當批處理大小為一時,CPU核心上的矩陣-向量計算的延遲低于NPU。此外,由于稀疏性導致激活的神經元數量減少,CPU核心非常適合這些較輕和稀疏的計算任務。
高效的緩存設計與I/O優化策略
PowerInfer-2通過引入分段緩存和細粒度的神經元簇級流水線技術,優化了I/O讀取吞吐量并最小化了I/O操作,從而提高了整體的推理性能。
4.4 Neuron-Cluster-Level Pipeline
盡管引入了有效存儲活躍神經元的神經元緩存,推理過程仍然不可避免地會引發對未緩存神經元的I/O操作。為了優化I/O讀取吞吐量并最小化I/O操作,PowerInfer-2還捆綁了相關神經元。盡管在移除熱神經元后,單個FFN權重矩陣內的共激活變得不頻繁,但不同矩陣中對應位置的神經元通常會一起激活。例如,第i個神經元在Gate、Up和Down矩陣中的共激活概率高達80%。
PowerInfer-2還設計了隱藏I/O開銷的策略,通過重疊計算與I/O活動來實現。一個直接的方法是矩陣級重疊,它在從存儲中檢索矩陣神經元的同時進行計算。隨著存儲中的神經元被加載,它們會立即被處理。盡管這種矩陣級重疊方法可以在一定程度上隱藏計算過程中的I/O成本,但系統仍需等待所有神經元的處理完成才能繼續進行下一步。為了消除I/O操作的等待時間,PowerInfer-2引入了神經元簇級流水線機制。這種機制基于一個見解:通過關注神經元簇的粒度,可以在多個矩陣的神經元簇計算中重疊I/O操作。具體來說,PowerInfer-2打破了矩陣計算的障礙;一旦一個神經元簇完成計算,它立即開始計算下一個矩陣中已在內存中的神經元簇。這種機制有效地減少了等待泡沫,如圖4-b所示。
執行計劃的生成與優化
在PowerInfer-2系統中,執行計劃的生成是一個關鍵步驟,它涉及到對硬件、模型和用戶需求的深入分析,以制定出最優的運行配置。執行計劃的生成過程包括以下幾個關鍵環節:
1. 硬件和模型特性分析
執行計劃首先需要對硬件的計算能力、I/O吞吐量和內存帶寬進行評估。此外,還需要分析模型的大小、稀疏性和緩存特性。這一步驟是通過離線分析器完成的,它通過一系列的微基準測試來評估各個組件的性能。
2. 成本模型的構建和求解
在獲取了硬件和模型的具體參數后,執行計劃使用成本模型來生成最優配置。這個模型的目標是在滿足用戶設定的約束條件下,最大化生成速度。成本模型考慮了計算時間和I/O傳輸時間,這些時間的計算基于硬件性能和模型激活率的函數。求解成本模型通常使用成熟的SMT求解器,如Z3。
3. 執行計劃的輸出
最終的執行計劃將詳細描述在在線推理過程中各個組件的配置,包括CPU和NPU的使用比例、緩存大小和I/O操作的配置。這些配置確保了系統在實際運行中達到預定的性能目標。
通過這一系列的步驟,PowerInfer-2能夠為不同的智能手機和模型大小提供定制化的執行計劃,從而在保證性能的同時,最大限度地利用設備的計算和存儲資源。
實驗設置與性能評估
為了驗證PowerInfer-2系統的性能,我們在不同的智能手機上進行了一系列的實驗。實驗的設置和性能評估包括以下幾個方面:
1. 實驗硬件
實驗使用了兩款OnePlus智能手機,分別代表高端和中端的硬件配置。這兩款手機不僅具備不同的處理器和內存大小,而且都允許root權限,這為我們解鎖更多計算能力提供了可能。
2. 模型選擇
實驗中選用了不同架構和大小的語言模型,包括TurboSparse-Mistral和TurboSparse-Mixtral系列。這些模型的選擇旨在展示PowerInfer-2在處理不同類型和大小模型時的性能表現。
3. 基準系統比較
為了全面評估PowerInfer-2的性能,我們將其與當前最先進的LLM推理框架進行了比較,包括llama.cpp和LLM in a Flash。這些比較幫助我們準確地定位PowerInfer-2在市場中的性能優勢。
4. 性能指標
我們主要關注的性能指標是端到端的生成速度,包括預填充速度和解碼速度。這些指標直接反映了系統在實際應用中的響應速度。
通過這些詳細的實驗設置和性能評估,我們能夠全面地理解PowerInfer-2在不同條件下的性能表現,并且驗證了其在智能手機上運行大型語言模型的能力。
討論與未來展望
隨著智能手機硬件的日益強大和多樣化,未來的大型語言模型(LLM)推理框架需要更加靈活和高效地利用這些資源。PowerInfer-2的出現標志著在這一領域的一個重要進步,它不僅顯著提高了在資源受限的智能手機上進行LLM推理的速度,而且還優化了內存和I/O資源的使用。然而,盡管取得了顯著的進步,但在將來的發展中,仍有許多挑戰和機遇。
1. 硬件利用的優化
盡管PowerInfer-2已經在利用異構硬件方面取得了顯著成效,但未來的工作可以進一步探索如何更有效地協調CPU、GPU、NPU等不同硬件的工作,以最大化計算資源的使用效率。例如,通過更智能的調度算法,動態地根據當前的工作負載和硬件狀態調整資源分配。
2. 模型和存儲優化
隨著模型規模的不斷擴大,如何在有限的存儲和內存中高效地管理和調度模型權重將成為一個重要問題。PowerInfer-2中已經采用了分段緩存和精細的I/O策略,未來可以進一步探索更高效的數據壓縮技術和智能預取策略,以減少I/O操作的需要并加速推理過程。
3. 能源效率
智能手機的能源限制也是未來研究的一個重要方向。開發更加節能的算法和框架,不僅可以延長設備的電池壽命,還可以減少環境影響。例如,通過優化算法的能效比(即每瓦特計算速度),使得在保證性能的同時,盡可能減少能耗。
4. 用戶體驗與隱私保護
提升用戶體驗和保護用戶隱私將是LLM應用普及的關鍵。未來的推理框架需要在保證響應速度和準確性的同時,更好地處理用戶數據,確保數據的安全和隱私。例如,通過在本地設備上進行更多的數據處理來減少對云服務的依賴,從而保護用戶的隱私。
5. 跨平臺兼容性
隨著各種類型設備的普及,跨平臺的LLM推理框架將具有更廣泛的應用前景。PowerInfer-2雖然主要針對Android系統,但其設計理念和技術可以擴展到其他操作系統如iOS。未來的研究可以探索如何使這些技術更容易地遷移到不同的平臺和設備上。
通過持續的研究和創新,未來的LLM推理技術有望在智能手機及其他移動設備上提供更加智能、高效和安全的服務,極大地豐富用戶的數字體驗。
本文轉載自 ??AI論文解讀??,作者:柏企
