
許多研究工作致力於設計最佳化大語言模型推理開銷的技術,最佳化模型的推理延遲、吞吐、功耗和儲存等指標,成為許多研究的重要目標。
此外,該工作還對造成大語言模型推理不高效的根本原因進行分析,並基於對當前已有工作的綜述,深入探討高效推理領域未來應關注的場景、挑戰和路線,為研究者提供可行的未來研究方向。

論文標題:
A Survey on Efficient Inference for Large Language Models
https://arxiv.org/abs/2404.14294

▲圖注:《A Survey on Efficient Inference for Large Language Models》(LLM Eff-Inference)

大模型推理效率瓶頸分析
為了解決該問題,KV 快取技術被提出,該技術透過儲存和複用前序詞塊在計算注意力機制時產生的 Key 和 Value 向量,減少大量計算上的冗餘,用一定的儲存開銷換取了顯著的加速效果。基於 KV 快取技術,通常可以將大語言模型的推理過程劃分為兩個階段(分別如下圖中 (a) 和 (b) 所示):
-
預填充(Prefilling)階段:大語言模型計算並存儲輸入序列中詞塊的 Key 和 Value 向量,並生成第一個輸出詞塊。
-
解碼(Decoding)階段:大語言模型利用 KV 快取技術逐個生成輸出詞塊,並在每步生成後儲存新詞塊的 Key 和 Value 向量。

大語言模型在實際部署應用中,我們通常關注其延時、吞吐、功耗和儲存,而在大語言模型推理過程中,有三個重要因素會直接影響上述效率指標,分別是計算開銷(Computational Cost)、訪存開銷(Memory Access Cost)和儲存開銷(Memory Cost)。進一步地,本綜述深入分析探究,並總結歸納除出影響上述指標和因素三點根本因素,分別為:
-
模型規模:主流大語言模型龐大的模型規模會導致巨大的計算量、訪存量和儲存量;
-
注意力運算元:作為大語言模型的核心運算元,注意力運算元具有與輸入長度呈平方關係增長的計算和儲存複雜度;
-
解碼方式:主流的自迴歸解碼方式導致極低的計算-訪存比和硬體利用率,同時動態增長的KV快取會導致碎片化的記憶體使用,對訪存開銷和儲存開銷帶來增長。


大模型高校推理技術領域縱覽
本綜述將大語言模型高效推理領域的技術劃分為三個層次,分別為:
-
資料層最佳化技術:指透過最佳化輸入提示詞或規劃模型輸出內容最佳化推理效率。這類最佳化技術通常不需要修改模型本身,因此避免了大量的模型訓練或微調開銷;
-
模型層最佳化技術:指透過設計高效的模型結構或模型壓縮技術最佳化推理效率。這類技術通常需要對模型進行預訓練或微調來恢復任務精度,同時通常對輸出結果是有損的;
-
系統層最佳化技術:指透過最佳化推理引擎或服務系統最佳化推理效率。這類技術通常不需要額外的模型訓練開銷,同時可以保證對輸出結果是無損的。

在實際利用大語言模型做回答時,通常會在輸入提示詞中加入一些輔助內容來增強模型的回答質量,例如,上下文學習技術(In-Context Learning,ICL)提出在輸入中加入多個相關的問答例子來教模型如何作答。然而,這些技術不可避免地會增長輸入詞提示的長度,導致模型推理的開銷增大。為了解決該問題,輸入壓縮技術透過直接減小輸入的長度來最佳化模型的推理效率。
-
提示詞剪枝(Prompt Pruning):通常根據設計好的重要度評估指標刪除輸入提示詞中不重要的詞塊、句子或文段,對被壓縮的輸入提示詞執行線上壓縮。 -
提示詞總結(Prompt Summary):透過對輸入提示詞做文字總結任務,在保證其語義資訊相同地情況下縮短輸入的長度。該壓縮過程通常也是線上執行的。 -
基於軟提示詞的壓縮(Soft Prompt-based Compression):透過微調訓練的方式得到一個長度較短的軟提示詞,代替原先的輸入提示詞(線上執行)或其中固定的一部分內容(離線執行)。其中,軟提示詞指連續的、可學習的詞塊序列,可以透過訓練的方式學習得到。 -
檢索增強生成 (Retrieval-Augmented Generation):透過檢索和輸入相關的輔助內容,並只將這些相關的內容加入到輸入提示詞中,來降低原本的輸入長度(相比於加入所有輔助內容)。

🔹高效FFN設計(Efficient FFN):該領域的主流方法為混合 專家(Mixture-of-Experts,MoE)技術,其核心是為不同的輸入詞塊分配不同數量的FFN(稱為專家),減少推理過程中被啟用的 FFN 權重數量。基於 MoE 的 Transformer 模型除了包含若干個專家 FFN 外,還包含一個負責分配專家的路由(Router)模型。該領域的研究工作主要關注三個方向:
-
更高效地獲取專家 FFN 的權重或構建更輕量化的專家 FFN;
-
最佳化路由模型使其分配更加平衡,避免因分配不平衡導致的精度和效率下降;
-
最佳化 MoE 模型的訓練方式,使得訓練更加穩定。
-
多詢問(Multi-Query)注意力技術,即在不同的注意力頭之間共享部分Key和Value來降低訪存開銷和記憶體佔用; -
低複雜度(Low-Complexity)注意力技術,主要包括基於核函式(Kernel-based)的注意力運算元和低秩注意力(Low-Rank)運算元。
🔹Transformer 替代架構(Transformer Alternates):最新的研究工作逐漸關注於設計新的模型架構來取代 Transformer 架構,這些新模型架構大多具有線性或近似線性的複雜度,在處理文字長度較長時有顯著的效能優勢。本綜述將這類工作總結為兩大類:
-
狀態空間模型(State Space Models,SSMs)。這類模型的核心思想是將歷史資訊壓縮到一個隱狀態(state)中,透過狀態間的轉移建模新的資訊。聚焦於狀態空間模型的研究可以分為兩個方向,一方面研究狀態轉移矩陣初始化和引數化的方式,另一方面研究與其他模型結構(如 Transformer、門控單元等)的融合架構。
-
非狀態空間模型。這類工作主要包含兩個分支,分別是採用長卷積做序列建模,以及採用基於注意力機制做改進的線性建模運算元。下表列舉了典型的 Transformer 替代架構的複雜度,可以總結出該類架構的研究趨勢:🔸在訓練方面,新架構傾向於採用卷積或類注意力運算元的形式來保持訓練的並行性;🔸在推理方面,新架構傾向於在預填充階段保證和輸入長度呈線性的計算複雜度,在解碼階段保證與文字長度無關的計算複雜度。

在預填充階段,推理效率主要受限於較高的計算量,因此通常採用權重啟用量化(Weight-Activation Quantization)的方式;在解碼階段,推理效率主要受限於較高的訪存量,因此通常採用僅權重量化(Weight-only Quantization)的方式。從量化流程來看,模型量化可以劃分為:
-
訓練後量化(Post-Training Quantization,PTQ):指對預訓練後的模型直接做量化,不需要重新訓練量化後的模型。這類方法對量化後模型的精度損失較大,但因其不需要額外的模型訓練開銷,因此在大語言模型領域應用最為廣泛。 下表總結了典型的訓練後量化方法在各個維度的比較。此外,在實際應用中,開發者通常還需要關注量化對大語言模型各種能力的損失,無問芯穹於 2024 年 1 月釋出的工作 QLLM-Eval[204](已被 ICML 2024 錄用)從不同量化模型、量化引數和量化維度全面研究了量化對模型能力的影響,並給出了針對量化技術的使用指南。

-
訓練感知量化(Quantization-Aware Training,QAT):指在模型的訓練中加入模型量化過程,並透過訓練減小量化帶來的精度損失。相比於訓練後量化,訓練感知量化方法通常具有更高的精度,但其需要大量的資料和計算量來做模型訓練。因此,目前該子領域的研究主要關注於如何在資料層面和計算量層面降低模型訓練帶來的開銷。
🔹模型稀疏(Model Sparsification)。模型稀疏分為權重稀疏(即權重剪枝)和注意力稀疏(即稀疏注意力):
-
權重剪枝(Weight Pruning):指透過將模型中不重要的權重和對應結構移除,降低模型的計算和儲存開銷。權重剪枝可以分為非結構化剪枝(Unstructural Pruning)和結構化剪枝(Structural Pruning)兩大類,兩者區別主要在於剪枝粒度不同,如下圖所示。其中,在非結構化剪枝領域,目前的研究工作主要關注於如何加速對大模型的剪枝過程,以及如何設計更有效的重要度分析指標和剪枝率分配策略。而在結構化剪枝領域,目前的研究工作大多關注於如何設計規整的剪枝結構來支援結構化的剪枝。

-
稀疏注意力(Sparse Attention):指透過減少冗餘的注意力計算,來降低預填充階段的計算開銷和解碼階段中 KV cache 帶來儲存和訪存開銷。該領域的研究工作主要關注於設計更有效的稀疏模式(Sparse Pattern),包括靜態稀疏(下圖中 (a) 和 (b) 所示)以及動態稀疏(下圖中 (c) 和 (d) 所示)。無問芯穹於 2023 年 9 月釋出的工作 SemSA[204],透過對每個注意力頭自動選擇注意力掩膜和掩膜擴充套件方式,在平均稀疏度相同的情況下,大幅提升稀疏注意力大語言模型的有效上下文長達 3.9 倍。

🔹結構最佳化(Structure Optimization):結構最佳化技術指透過修改模型的架構或結構來達到更好的精度-效率之間的權衡。在該領域有兩類代表性的技術:
-
神經網路架構搜尋(Neural Architecture Search):指自動化地搜尋出最優的模型架構。然而,這類方法目前只在中等規模的語言模型上得到應用,在大語言模型上還未獲得實際的最佳化效果,原因是該技術通常需要在搜尋過程中對取樣到的架構進行訓練評估,對大模型來說需要花費巨大的訓練開銷。
-
低秩分解(Low Rank Factorization):指將一個大的權重矩陣近似分解成兩個低質小矩陣的乘積,透過該技術,可以降低大語言模型權重的儲存開銷和訪存開銷。該領域的研究工作主要聚焦於設計分解方式,以及將該技術與其他模型壓縮技術(例如量化、剪枝等)結合獲得更高的效率最佳化效果。
(Knowledge Distillation):知識蒸餾指用一個大模型(教師模型)來輔助訓練一個小模型(學生模型),從而將大模型的知識傳遞給小模型,透過小模型更小的開銷達到相似的精度效果。


在高效結構設計領域,Transformer 的替代架構受到了許多研究者們的關注,諸如 Mamba[73]、RWKV[60] 以及它們的變體架構都在各類任務上驗證了它們高效的推理能力。然而,這些新架構相比 Transformer 架構在某些方面是否仍然存在缺陷還並未被探究清楚。此外,本文認為將新架構和傳統的 Transformer 架構做融合,可以達到效率和精度之間更好的權衡,是一個有潛力的研究方向。
在模型壓縮領域:
-
模型量化是目前最常用也是最推薦使用的模型壓縮技術,一方面,該技術可以很方便快捷地壓縮大語言模型,另一方面,該技術能在有效提升模型效率的同時,儘可能地保證模型的精度損失最小。然而,模型量化技術仍然不可避免地會對模型的能力造成負面影響,因此需要根據任務和應用場景謹慎選取最合適的模型量化演算法。
-
模型稀疏方面,目前有許多研究工作關注稀疏注意力技術,並將其應用在處理長文字的場景中,然而這類技術通常會損失部分資訊,導致任務精度的下降,因此如何在保留有效資訊的同時還能高效處理長文字是一個值得探索的問題。而在權重剪枝領域,有研究工作[217]指出目前的剪枝方法在不顯著影響任務精度的前提下,僅能達到較低的剪枝率水平,因此設計更有效的模型剪枝演算法是一個值得研究的方向。
-
結構最佳化方面,神經網路架構搜尋技術受限於其高昂的評估成本,難以被應用在大語言模型的壓縮上,然而這種自動化壓縮的思想仍然值得進一步的探索。另一方面,低秩分解技術受限於其難以同時保證任務精度和壓縮比例。 -
此外,還有一些工作探究將不同的模型層技術結合,例如將混合專家技術和低秩分解結合、將模型量化和權重稀疏結合、將模型量化和低秩分解結合、將權重剪枝和低秩分解結合。這些方法展示了整合多種壓縮技術以實現大型語言模型更佳最佳化的潛力。
大語言模型推理的系統層最佳化主要集中在最佳化模型的前向推理過程。在大語言模型的前向推理計算圖中,注意力運算元和線性運算元佔據了大部分執行時間。系統層最佳化技術包含對這兩種運算元的最佳化,同時還會考慮設計更高效的大語言模型解碼方式。

猜測解碼(Speculative Decoding)是一類透過並行解碼來加速大模型解碼過程的技術,其核心思想是使用一個小模型來預測未來的若干個詞塊,再用大模型並行地驗證這些詞塊是否準確。具體來說,猜測解碼可以大致分為兩個階段:猜測階段和驗證階段。
猜測階段,對於當前的輸入文字,猜測解碼方法首先利用一個“便宜”的草稿模型(Draft Model)生成連續的若干個草稿詞塊(Draft Token),值得注意的是,該草稿模型往往具有相比於大語言模型小得多的引數量和計算量,因此這一過程帶來的開銷非常小。




未來研究展望
無問芯穹正在尋找運算元最佳化、推理框架、自然語言處理(NLP)演算法、異構研發、分散式訓練方向的專業人才!我們渴望有才華、有熱情的您加入我們,共同推動技術的創新和應用的發展!
歡迎掃描下方的二維碼,檢視崗位資訊!我們期待您的加入,連結上下游,共建AGI時代大模型基礎設施,加速AGI落地千行百業!


參考文獻
