發表時間:二〇二四年九月二十三日?
摘要
大型基礎模型,包括大語言模型(LLMs)、視覺Transformer(ViTs)、擴散模型以及基于大語言模型的多模態模型,正在革新整個機器學習的生命周期,從訓練到部署都受到影響。然而,這些模型在通用性和性能方面的顯著提升,是以大量的硬件資源為代價的。為了以一種可擴展且環境可持續的方式支持這些大型模型的發展,開發資源高效的策略成為了研究重點。本綜述深入探討了此類研究的關鍵重要性,從算法和系統兩個方面進行研究。它綜合分析了現有文獻中的相關內容,并從中獲取了有價值的見解,涵蓋了從前沿模型架構、訓練/服務算法到實際系統設計與實現等廣泛主題。本綜述的目的是全面闡述當前方法如何應對大型基礎模型帶來的資源挑戰,并為該領域未來的突破提供潛在的啟發。
?關鍵詞
基礎模型;大語言模型;視覺Transformer;擴散模型;多模態大語言模型;模型壓縮;機器學習系統;服務系統;預訓練;微調;邊緣智能
?1 引言
在快速發展的人工智能(AI)領域,一場范式轉變正在發生。我們見證著從專門的、碎片化的深度學習模型,向通用的、“一刀切”的基礎模型的轉變。這些先進的人工智能系統能夠在開放世界環境中運行,與開放詞匯表和圖像像素進行交互,以完成未見的人工智能任務,即具備零樣本學習能力。它們的代表包括:(1)像GPT系列[41]這樣的大語言模型,幾乎可以將每一個自然語言處理任務以提示的形式進行處理;(2)像掩碼自編碼器[141]這樣的視覺Transformer模型,能夠處理各種下游視覺任務;(3)像穩定擴散模型[336]這樣的潛在擴散模型,可根據任意基于文本的提示生成高質量圖像;(4)像CLIP[321]和ImageBind[123]這樣的多模態模型,將不同模態的數據映射到相同的潛在空間,廣泛用作圖像檢索/搜索和視覺問答等跨模態任務的骨干網絡。這種靈活性和通用性,標志著與早期人工智能時代的重大區別,為人工智能與世界的交互設定了新的標準。
這些基礎模型的成功,深深植根于它們的可擴展性:與之前的模型不同,這些模型的準確性和泛化能力,能夠隨著更多的數據或參數不斷提升,而無需改變底層的簡單算法和架構。一個令人印象深刻的證據是縮放定律[177]:它描述了基于Transformer的模型性能,如何隨著模型規模和數據量的增加而可預測地提高;直到今天,縮放定律仍然成立。這種可擴展性不僅體現在模型規模上,還延伸到它們處理日益復雜任務的能力上,使其成為邁向通用人工智能(AGI)征程中的基石。然而,可擴展性是以巨大的資源需求為代價的。基礎模型本質上在訓練和部署過程中都非常消耗資源。這些資源不僅包括像GPU和TPU這樣的計算處理器,還包括內存、能源和網絡帶寬。例如,訓練LLaMa-2 70B模型需要170萬個GPU小時,消耗 \(2.5×10^{12}\)焦耳的能量,估計總排放量為291噸二氧化碳當量。根據Meta AI的研究[416],除了訓練之外,數據處理、實驗和推理階段消耗的電量與之相當,甚至更多。最近的一項分析[81]顯示,為了滿足當前人工智能能力和應用的發展趨勢,到2027年,英偉達每年需要交付150萬臺人工智能服務器。這些服務器在滿載運行時,每年至少消耗85.4太瓦時的電力 —— 這比許多國家(如新西蘭和奧地利)一年的用電量還要多,如圖1所示。由于基礎模型在規模和復雜性上不斷增長,它們的資源需求往往呈指數級上升,這對其開發和部署構成了重大挑戰。
圖1:各國與AI的電力消耗對比。數據來源:[81]
大型基礎模型巨大的資源占用,也阻礙了其民主化進程。截至2023年底,只有少數主要參與者有能力訓練和部署最先進的基礎模型,他們因此對公眾擁有強大的控制權,并有可能以自己偏好的方式操縱這些模型。與許多輕量級深度神經網絡(DNN)不同,這些模型在云端提供服務,而不是在設備上運行[434, 476];這使得數據隱私保護幾乎變得不可能。盡管最近智能手機廠商一直在吹噓在本地運行大型基礎模型,并且為設備端大語言模型開發了一些開創性的引擎[121, 11, 10],但展示的模型規模相對較小(例如,小于100億參數)[266],并且尚未在實際中部署。
因此,大量研究致力于提高這些基礎模型的效率。這些努力涵蓋了廣泛的方法,從優化算法到系統級創新,專注于在不影響性能的前提下減少這些模型的資源占用。本綜述旨在深入研究這些研究工作,探索使基礎模型更具資源效率的各種策略。我們將研究算法效率的提升、系統優化、數據管理技術,以及資源消耗較低的新型架構的開發。該綜述還涵蓋了從云端到邊緣設備的應用場景,在這些場景中,大型基礎模型也備受關注。通過這次探索,我們旨在全面了解基礎模型領域中資源高效算法和系統的現狀及未來發展方向。
本綜述的范圍主要由以下幾個方面定義。(i)我們僅綜述算法和系統創新;我們排除了大量在硬件設計方面的工作,雖然硬件設計同樣重要,但已有很好的綜述[192, 185]。(ii)本綜述中資源的定義主要限于物理資源,包括計算、內存、存儲、帶寬等;我們排除了訓練數據(標簽)和隱私,盡管它們也可被視為資源。(iii)我們主要綜述發表在頂級計算機科學會議上的論文,即CSRankings中收錄的論文。我們還手動從arXiv上挑選了相關且可能具有高影響力的論文。(iv)我們主要綜述2020年以后發表的論文,因為人工智能領域創新迅速,舊的知識和方法經常被推翻。
?組織結構
圖2展示了本綜述的組織結構。
- 基礎模型概述(第 2 章)
- 語言基礎模型(2.1 節)
- 視覺基礎模型(2.2 節)
- 多模態基礎模型(2.3 節)
- 高效架構(第 3 章)
- 高效注意力機制(3.1 節)
- 稀疏注意力
- 近似注意力
- 無注意力方法
- 動態神經網絡(3.2 節)
- 專家混合
- 早退機制
- 擴散模型特定優化(3.3 節)
- 高效采樣
- 潛在空間擴散
- 擴散架構變體
- 視覺 Transformer(ViT)特定優化(3.4 節)
- 高效注意力機制(3.1 節)
- 高效算法(第 4 章)
- 預訓練算法(4.1 節)
- 訓練數據縮減
- 神經架構搜索
- 漸進學習
- 混合精度訓練
- 微調算法(4.2 節)
- 加法微調
- 選擇性微調
- 重參數化微調
- 推理算法(4.3 節)
- 機會解碼
- 輸入過濾和壓縮
- 鍵值緩存
- 長上下文優化
- 模型壓縮(4.4 節)
- 剪枝
- 知識蒸餾
- 量化
- 低秩分解
- 預訓練算法(4.1 節)
- 高效系統(第 5 章)
- 分布式訓練(5.1 節)
- 彈性
- 并行性
- 通信
- 存儲
- 異構 GPU
- 專家混合(MoE)
- 聯邦學習(5.2 節)
- 框架和基準
- 基于參數高效微調(PEFT)的方法
- 模型分解
- 無反向傳播方法
- 云端服務(5.3 節)
- 推理加速
- 內存節省
- 新興平臺
- 邊緣服務(5.4 節)
- 邊緣 - 云協作
- 僅邊緣
- 分布式訓練(5.1 節)
?完全開源
本綜述的所有材料均可在以下網址免費獲取:https://github.com/UbiquitousLearning/Efficient_Foundation_Model_Survey
?2 基礎模型概述
?2.1 語言基礎模型
本節討論基于文本和基于語音的語言模型,重點介紹它們的關鍵架構和具有里程碑意義的模型。
?2.1.1 模型架構
Transformer流水線。Vaswani等人[388]提出了基于注意力機制的Transformer架構,這是大多數大型基礎模型發展的基礎元素。如圖3所示,該過程首先通過嵌入層將輸入單詞轉換為高維向量。在處理過程中,注意力機制為這些輸入向量的不同部分分配不同的權重。注意力計算之后,對輸出應用層歸一化,以確保激活值的穩定和標準化。隨后,每個位置向量通過前饋網絡進行變換,引入非線性,使模型能夠捕捉復雜的數據模式。通過包含這些組件的多個層,Transformer學習輸入數據的層次表示。在最后階段,最后一個Transformer層的輸出被輸入到線性層,最終得到預測結果。我們簡要概述大型基礎模型的關鍵組件如下:
圖3:基礎模型的進化軌跡
嵌入
最初,輸入單詞由分詞器轉換為一系列標記。常用的分詞器,如wordpiece和字節對編碼,在這個過程中經常被使用[380]。分詞之后,通過學習得到的嵌入層將這些標記轉換為向量序列。在這樣的序列中,單詞的順序對于語義至關重要。為了解決這個問題,位置編碼被融入到嵌入向量中,為其注入位置信息。這種添加對于捕捉輸入的順序性至關重要,確保模型能夠準確解釋單詞順序和上下文。
注意力
注意力機制在捕捉序列中單詞之間的關系方面起著至關重要的作用。注意力的計算可以表示為: \[A(Q, K, V)=\text{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}}\right) V (1)\] 其中,\((Q)\)、\((K)\)和\((V)\)分別表示查詢、鍵和值,它們分別通過將輸入向量與不同的權重矩陣相乘得到,\((d_{k})\)表示這些向量的維度。自注意力是注意力的一種特殊形式,其中查詢、鍵和值都來自同一輸入序列,它使模型能夠在每個位置關注輸入的不同部分。相比之下,多頭注意力是自注意力的一種變體,它允許在不同位置同時關注來自不同表示子空間的信息。其他變體,如稀疏注意力[36]和多查詢注意力[346],是為了提高效率或適應各種下游任務而設計的。這些變體將在§3.1、§4.3.3和§4.3.4中進一步詳細介紹。
編碼器 - 解碼器架構
標準的Transformer架構由兩個主要組件組成:編碼器和解碼器。編碼器通過自注意力機制處理輸入序列,使模型能夠根據輸入序列不同部分的相對重要性為其分配不同的權重。這一特性對于識別輸入數據中的復雜模式和依賴關系至關重要。相比之下,解碼器負責生成輸出序列。解碼器利用自注意力機制來理解到目前為止生成的輸出之間的關系。此外,解碼器還結合了交叉注意力機制,關注輸入序列,為輸出序列中的每個標記提取相關信息。這部分架構是自回歸的,即逐個生成標記。每個標記的生成取決于之前生成的標記,這與編碼器的并行處理方式不同。
自回歸解碼和鍵值緩存
在自回歸解碼中,解碼器函數 \(F_{Decoder }\) 根據輸入標記序列 \(X={x_{1}, x_{2}, ..., x_{i}}\) 推斷出一個新的標記 \(x_{i+1}\) 。隨后, \(x_{i+1}\) 被添加到 \(X\) 中,用于下一個推理步驟,這就是自回歸解碼的過程。鍵值(KV)緩存[76]通過在每個步驟存儲注意力機制的中間狀態來提高效率。這種方法避免了對先前步驟中已處理標記的重新計算。雖然鍵值緩存減少了重新計算,但它會引入額外的存儲或內存開銷,這將在§2.1.3中詳細介紹。
?2.1.2 代表性模型和下游任務
僅編碼器的基礎模型
BERT[88]是一種僅編碼器的Transformer模型,在預訓練期間采用雙向掩碼語言建模方法。在這種方法中,句子中的隨機單詞被掩碼,模型通過考慮上下文線索來學習預測這些被掩碼的單詞。對BERT進行微調以適應各種下游任務,在判別任務(如情感分析和文本分類)中取得了最優性能。DistilBERT[340]是BERT的蒸餾版本,模型大小比BERT小40%,速度快60%,但仍保留了BERT 97%的語言理解能力。RoBERTa[256]通過強大的優化技術提高了BERT的效率,包括延長訓練時間、增加批次大小和使用更大的數據集。Sentence-BERT[332]對BERT進行了修改,以生成語義有意義的句子嵌入。它采用連體和三元組網絡結構,這些嵌入可以使用余弦相似度直接進行比較。該模型已經發展成為廣泛使用的句子 - 轉換器工具,專門用于句子嵌入。
編碼器 - 解碼器基礎模型
T5[325]采用編碼器 - 解碼器架構,是一種自監督模型,在C4數據集上進行預訓練。該模型引入了一個統一的框架,將各種基于文本的語言問題轉換為文本到文本的格式,使其適用于總結、問答等任務。BART[210]在預訓練階段充當去噪自編碼器,通過任意噪聲函數對文本引入干擾,主要目標是學習重建原始文本。
僅解碼器的基礎模型
GPT系列[323, 324, 41]采用僅解碼器的架構進行無監督訓練。GPT-1[323]是該系列的首個模型,具有1.17億個參數,展示了在各種互聯網文本上進行預訓練的有效性。GPT - 2[324]是GPT - 1的擴展版本,在包含數百萬網頁的WebText數據集上進行無監督訓練。GPT - 3[41]的模型規模大幅增長,達到1750億參數,凸顯了模型規模擴大的優勢,它展現出卓越的零樣本學習性能。指令調優[300]通過利用人類反饋進一步提升了模型準確遵循指令的能力,推動了包括LLaMA[383]在內的多個開源基礎模型的創建。GLM[95]通過添加2D位置編碼并允許以任意順序預測跨度來改進填空式預訓練,在自然語言理解任務上的性能優于BERT和T5。PaLM[70]使用Pathways在6144個TPU v4芯片上進行訓練,以進一步探究模型規模對少樣本學習的影響。此外,還有許多閉源的生成式大型基礎模型,包括GPT - 4 、Claude2和PaLM 2 等。
|模型名稱|架構|參數數量|訓練方式|訓練數據集|典型任務|
表1:具有里程碑意義的語言基礎模型及其典型任務
語音基礎模型。語音大型基礎模型[322, 28, 148]旨在從原始音頻信號中提取有意義的表示。Wav2vec 2.0[28]首次展示了從未標記數據中獲取強大的語音表示,可以顯著提高后續語音相關任務的性能。這些模型通常采用卷積神經網絡來提取序列特征,并使用Transformer來捕捉上下文信息。這種方法對各種下游任務有效,包括語音識別和口語理解。例如,HuBERT[148]利用基于Transformer的架構進行語音表示的自監督學習,在960小時的LibriSpeech音頻數據集[305]上進行訓練。Whisper[322]代表了一種最先進的開源自動語音識別系統,在從網絡獲取的680,000小時多語言和多任務監督數據的龐大語料庫上進行訓練。
?2.1.3 成本分析
如圖4所示,我們分析了大型基礎模型主要組件的計算和存儲成本 。嵌入組件在存儲成本中占很大比例,約為總成本的25%。然而,在推理過程中,嵌入層就像一個查找表,計算成本極低。前饋網絡(FFN)層是計算量最大的組件,主要是因為每個FFN塊中存在兩個全連接層。lm head表示模型的輸出層,其形式因任務而異。對于像BERT這樣的判別任務,它是一個帶有softmax激活函數的分類層,而對于像GPT/T5這樣的生成任務,它表現為一個線性層。該組件的大小與詞匯表大小直接相關。
圖4:不同語言基礎模型的權重存儲和FLOPs成本(輸入序列長度為128)(floating - point operations,即浮點運算數 ,常被用來衡量模型的計算量)
圖5:不同token長度下GPT - 2的推理FLOPs
不同token長度下的成本分析
大型基礎模型中的注意力機制面臨顯著的計算瓶頸,主要是由于其與序列長度的二次復雜度。這種復雜度源于對輸入序列中每個位置對計算注意力分數,這在處理長序列時帶來挑戰,并影響訓練和推理效率。此外,除了注意力機制,FFN的計算復雜度隨輸入長度線性增長,但隨模型維度呈二次增長。如圖5所示,輸入序列長度的增加會導致計算需求大幅上升,這歸因于注意力機制的二次特性。從定量角度來看,注意力的計算復雜度為\(O(T^{2}D)\),而FFN的計算復雜度為\(O(TD^{2})\),其中\(T\)表示序列長度,\(D\)表示模型的隱藏狀態維度[244]。解碼器的注意力機制與編碼器類似,也隨token長度呈二次縮放。這在自回歸解碼任務中尤為重要,因為每個token的生成依賴于前面的token,加劇了計算需求。在解碼器中實現鍵值緩存可以通過跨不同位置重用鍵和值向量來大幅降低計算成本。然而,這是以增加內存需求為代價的[199]。假設\(B\)表示批次大小,\(S\)表示序列長度,\(D\)表示隱藏維度大小,\(L\)表示Transformer解碼器中的層數,以單精度格式存儲鍵值緩存所需的內存可以計算為\((B\times S\times D\times L\times 2\times 4)\)字節。這個公式考慮了批次、序列和隱藏層的維度,以及解碼器中的層數,其中因子2表示緩存中的鍵和值,因子4表示單精度浮點表示的字節大小。
語音特定考慮因素
在語音處理應用中,CNN編碼器塊在計算復雜度中起著重要作用。CNN塊的初始層需要大量的計算能力,通常比單個Transformer層高出一個數量級。這種增加的需求歸因于CNN塊固有的卷積運算,其中必須為每個輸入token執行大量計算。例如,盡管Transformer的參數數量是wav2vec 2.0模型[28]中CNN塊的19倍,但wav2vec 2.0模型的計算負載僅比CNN塊高1.8倍[117]。
?2.2 視覺基礎模型
?2.2.1 模型架構
Transformer的發展推動了計算機視覺領域基礎模型的出現。視覺Transformer流水線。視覺Transformer(ViT)是最經典的基于Transformer的視覺模型。它受到像BERT這樣的自監督預訓練自然語言處理模型日益增長的趨勢啟發,BERT是僅編碼器模型。對于輸入圖像,ViT首先通過卷積嵌入層將圖像分割成固定大小的補丁(即token)。例如,一個標準尺寸的RGB圖像輸入(即3×224×224)將被分割成14×14個大小為16×16像素的補丁。與后續計算密集型的Transformer編碼器相比,這種嵌入開銷幾乎可以忽略不計(例如,小于5%)。此外,為了進行分類,會向token序列中添加一個額外的可學習分類token([CLS])。之后,將位置嵌入添加到每個token中,然后將token輸入到標準的Transformer編碼器中,圖3和§2.1中對此進行了描述。根據具體的下游任務,Transformer編碼器生成的隱藏狀態最終會被輸入到不同的頭部,如分類、檢測、分割等頭部。
?2.2.2 代表性模型和下游任務
僅編碼器模型
大多數視覺基礎模型采用僅編碼器架構。ViT[92]是第一項成功在ImageNet上訓練Transformer編碼器的工作,在參數數量上與BERT相當。它在大規模ImageNet - 21k數據集上進行監督式和自監督式預訓練。盡管它展示出具有競爭力的準確性和可擴展性,但與傳統的卷積神經網絡(CNNs)相比,其對訓練數據的需求仍然是一個障礙。為此,DeiT[382]的提出產生了很大影響。DeiT采用蒸餾增強的預訓練方法,提高了ViT訓練的數據效率。
另一個研究方向是推動自監督ViT預訓練的邊界。BEiT[33]將預訓練目標轉變為基于損壞的圖像補丁恢復原始視覺token。作者稱BEiT是“計算機視覺領域的BERT時刻”。MAE[141]在編碼器訓練中引入了一個輕量級解碼器,用于重建被掩碼的補丁。MAE可以有效地掩碼掉大部分補丁(甚至高達80%)。因此,編碼器的訓練可以非常高效,為大型預訓練視覺模型的發展鋪平了道路。
YOLOS[102]是一個基于ViT構建的目標檢測模型(但是是小模型?)。它展示了在中等規模的ImageNet - 1k上預訓練的普通ViT,在更具挑戰性的COCO目標檢測基準測試中的可遷移性。ViTDet[228]使一個普通的、非分層的ViT能夠作為目標檢測的骨干網絡。ViTDet允許對原始ViT架構進行微調以用于目標檢測,而無需為MAE風格的預訓練重新設計分層骨干網絡。Swin Transformer[260]是優化注意力機制的代表性工作。該模型是一個分層ViT,其表示是通過移位窗口計算得到的。DINOv2[297]對一個具有10億參數的ViT模型進行訓練,然后將其蒸餾成一組較小的模型,這些小模型在大多數圖像和像素級別的基準測試中,性能優于領先的通用特征,如OpenCLIP。
編碼器 - 解碼器模型
DETR[49]是早期利用Transformer構建端到端檢測管道的嘗試。DETR的架構是級聯的:它由一個CNN骨干網絡和一個編碼器 - 解碼器Transformer組成。DETR通過監督訓練支持目標檢測、實例分割和全景分割。DETR的參數數量與Faster - RCNN[334]相當,約為4000萬。SegFormer[427]是一個語義分割模型,它將Transformer與輕量級多層感知器(MLP)解碼器相結合。LVM[30]通過圖像序列建模,采用純粹的視覺方法實現了對視覺信息的有效學習,無需任何語言數據.
?2.2.3 成本分析
由于ViT的架構與BERT對齊,其資源消耗也相似。然而,與像BERT這樣的語言模型不同,視覺模型通常具有固定長度的輸入。對于標準圖像輸入,如14×14或16×16的補丁,計算瓶頸在于FFN中的全連接層和注意力層。更多細節請參考§2.1。
?2.3 多模態基礎模型
多模態目前是基礎模型研究中的一個熱門研究方向。一個大型基礎模型通常在跨模態理解、轉換和生成方面表現出強大的能力。一般來說,多模態基礎模型的研究有兩條主線:一是將不同模態的數據編碼到相同的潛在空間,大多采用Transformer編碼器;二是生成不同模態的數據,通常使用Transformer解碼器。具體而言,多模態生成主要圍繞基于文本的圖像生成展開,這是一個具有挑戰性且現實的機器學習任務,近年來取得了顯著進展。這兩條研究主線存在融合,例如多模態到多模態(甚至任意到任意)的生成。
?2.3.1 關鍵架構
為了攝取和對齊多模態輸入數據,現有模型架構通常由多個編碼器組成,每個模態都有自己的一組Transformer編碼器。值得注意的是,這些編碼器通常是從頭開始訓練的,利用具有對齊模態和當前模態的配對數據。在接收到來自不同模態的輸入后,它們首先將這些數據編碼為歸一化的、固定維度的嵌入。通過將這些嵌入映射到高維空間并設計損失函數,研究人員旨在最小化不同模態在聯合語義空間中的距離。這種方法對齊了不同模態,并增強了它們表示的一致性。
在多模態數據對齊后,現有研究要么(i)重用在純文本語料庫上訓練的大語言模型來生成文本;(ii)要么使用擴散模型來生成高質量的圖像像素。在第一種情況下,大語言模型模塊被設計為基于與文本模態對齊的輸入數據進行理解、推理和生成輸出。該模塊通常采用僅解碼器架構。由于在眾多大規模語料庫數據集上進行了廣泛的預訓練,大語言模型被賦予了豐富的語義知識。這使得它們能夠有效地理解嵌入在文本模態中的數據,并在執行特定任務時以自回歸方式生成基于文本的輸出。在第二種情況下,擴散模塊旨在通過消除輸入圖像中存在的冗余噪聲來生成高質量圖像。在訓練階段,模型向圖像中引入噪聲,將其轉換為隨機狀態。相反,在推理階段,這個過程被反轉,逐漸去除噪聲。這種去噪過程對于提高圖像清晰度至關重要,能夠生成具有高分辨率和細節清晰度的圖像。穩定擴散模型在這項技術上取得了顯著進展,展示了在生成符合特定文本和圖像描述的高質量圖像方面的獨特能力。除了多模態嵌入輸入外,擴散模塊主要由兩個組件組成:圖像編碼器/解碼器和去噪網絡。
圖像編碼器/解碼器
擴散模型是文本到圖像生成的最先進方法。編碼器將輸入圖像壓縮為低維潛在表示。這種壓縮對于降低計算負載和提高模型效率至關重要。解碼器則相反,它將潛在表示重構回高分辨率圖像。這個過程對于模型生成詳細視覺內容的能力至關重要。變分自編碼器(VAE)[189]是一種生成模型,用于學習圖像的潛在空間。VAE由編碼器和解碼器組成:編碼器負責將圖像映射到潛在空間,而解碼器負責將潛在空間映射回圖像空間。編碼器和解碼器網絡通常由卷積神經層構建。VAE通過最小化重建損失和KL散度損失進行訓練。重建損失確保解碼器生成的圖像與原始圖像相似,而KL散度損失確保潛在空間與標準正態分布相似。VAE被用于擴散模型中學習圖像的潛在空間。另一種常用于擴散任務的VAE模型變體是VQ - VAE [387],它通過向量量化層學習圖像的潛在空間。向量量化層應用向量量化技術,將圖像的每個像素量化為最接近的碼本向量。通過這種方式,VQ - VAE模型可以更高效地對圖像進行編碼和解碼。
去噪網絡
去噪網絡通過預測噪聲分布并使用采樣算法(如DDPM [144]和DDIM [356])逐步去除編碼圖像中的噪聲。最初,在訓練階段,模型向圖像中添加噪聲,逐漸將它們推向純隨機狀態。然后,去噪網絡在推理階段學習反向這個噪聲添加過程,一步一步地進行。這種漸進式去噪對于提高最終圖像輸出的清晰度和質量至關重要。U - Net [337]通常被用作擴散模型中的噪聲預測網絡,它是一個卷積神經網絡模型,由收縮路徑和擴展路徑組成。收縮路徑負責通過將圖像映射到高維空間來捕獲圖像中的上下文信息,而擴展路徑通過上采樣促進精確的定位。為了保留收縮路徑上的信息,擴展路徑通過跳躍連接與收縮路徑相連。U - Net模型是圖像分割任務的常用選擇,也被用于擴散模型中預測圖像中的噪聲。
融合解碼器(FD)
此外,FD模塊旨在基于圖像本身和相關圖像提示增強對圖像的理解,并根據任務要求生成輸出。該模塊通常涉及設計一個融合解碼器,并在圖像和文本數據集上進行預訓練,使其能夠聯合處理圖像和文本表示。該模塊通常包括設計一個融合解碼器,并在圖像和文本數據集上進行預訓練,使其能夠共同處理圖像和文本表示。
|年份|模型名稱|模型架構|面向任務|參數數量|預訓練方法|預訓練數據集|測試數據集|
表3:具有里程碑意義的多模態基礎模型及其典型任務
?2.3.2 代表性模型和下游任務
多編碼器基礎模型:CLIP [321]、ALBEF [216]和ALIGN [164]是最早提出跨模態對齊的一些工作,旨在通過建立圖像和文本之間的聯系,從文本中學習更豐富的圖像表示。雖然這些模型最初展示了多模態的潛力,但它們的性能受到圖像和文本編碼器的能力以及圖像 - 文本對數據的數量和質量的限制。隨后的工作,如ImageBind [123]和LanguageBind [492]進一步擴展了模態對齊。這些模型采用各種中間模態作為對齊模態,有效地將來自不同來源的表示映射到中間模態的特征空間中,從而便于在聯合向量空間中進行跨模態轉換。然而,在將多模態表示與中間模態對齊時出現了重大挑戰,這主要歸因于編碼器能力的限制。這些限制反過來又影響了模型的整體性能。
編碼器 - 解碼器基礎模型利用嵌入模塊進行模態轉換,使轉換后的模態與生成器兼容。
(1)編碼器 - 大型基礎模型:PandaGPT [361]利用多個單模態編碼器將輸入對齊到中間模態。PandaGPT將中間模態輸入到大型基礎模型中進行生成,然后由目標模態的解碼器進一步轉換。此外,BLIP - 2 [215]和MiniGPT - 4 [494]專注于文本和圖像的跨模態生成,通過設計圖像模態編碼器并使用Q - Former將這些圖像模態與文本模態融合,然后輸入到多模態大型基礎模型中進行跨模態生成。同時,mPLUG [453]和LLaVA [248]專注于提高模態轉換的能力,以增強生成結果的可用性和可靠性。MobileVLM V2 [71]是為資源受限設備設計的高效視覺語言模型,它利用基于CLIP的編碼器和基于MobileLLaMA的解碼器,在保持快速推理速度的同時實現卓越的性能。此外,Flamingo [19]和LLaMA - Adapter [478]探索了如何以更低的成本調整多模態大型基礎模型,從而生成更高質量的多模態輸出。PaLM - E [93]和HuggingGPT [349]專注于具身智能,通過使用大型基礎模型作為核心組件,將具身數據納入多模態輸入中。這些模型進一步設計智能體來分解任務,并利用生成能力完成復雜任務。
(2)編碼器 - 擴散基礎模型:穩定擴散 [336]能夠通過學習的過程逐漸消除圖像中的噪聲,生成高質量的圖像,從而產生清晰和詳細的視覺輸出。該模型應用于各種下游任務,如從文本描述生成詳細圖像(文本到圖像生成)、恢復或完成圖像的部分內容(圖像修復)、修改現有圖像的特定方面(圖像編輯)以及提高圖像的分辨率(圖像超分辨率)。穩定擴散在這些領域的適應性使其成為圖像處理和生成領域的寶貴工具。一致性模型 [358]的開發是為了提高擴散模型在生成高質量圖像、音頻和視頻方面的效率。這些模型有助于快速的單步生成,克服了傳統擴散模型采樣速度慢的問題。它們展示了執行零樣本數據編輯任務的能力,如圖像修復、著色和超分辨率,而無需針對這些任務進行特定的訓練。DALL - E [327]主要用于圖像生成,展示了根據文本描述創建多樣和復雜圖像的能力。該模型集成了自然語言理解和計算機視覺的元素,使其能夠生成忠實代表廣泛文本提示的圖像,從簡單描述到復雜場景。
除了穩定擴散,還有對“任意到任意”生成模型的顯著關注,這些模型旨在將各種類型的輸入轉換為廣泛的輸出。CoDi [372]被設計為從不同的輸入組合中生成各種輸出模態,如語言、圖像、視頻或音頻。它的獨特之處在于能夠同時生成多種模態,而不受特定輸入類型的限制。CoDi在輸入和輸出空間中對齊模態,從而便于生成訓練數據中不存在的組合。NExT - GPT [419]展示了感知輸入并在各種模態(包括文本、圖像、視頻和音頻)中生成輸出的能力。NExT - GPT將大型基礎模型與多模態適配器和擴散模型集成。該系統通過最小的參數變化進行微調,便于經濟高效的訓練和簡單的模態擴展。通過采用模態切換指令調整并利用專門策劃的數據集,NExT - GPT增強了跨模態內容生成和理解,目標是對通用模態進行建模。同樣,M4 [462]引入了一種可擴展的移動人工智能基礎模型,通過采用多模態嵌入和基于Transformer的骨干網絡,統一了各種人工智能任務,用于理解和推理文本、圖像、音頻和運動數據等輸入,提高了移動人工智能的效率和可擴展性。
(3)編碼器 - FD基礎模型:UNITER [64]是最早提出在多模態設置中通用融合圖像和文本的工作之一。它旨在通過Transformer組合圖像和文本特征以獲得聯合特征。在此基礎上,隨后的工作,如FLAVA [354]、CoCa [459]和GLIP [219]更深入地研究了如何使用解碼器更好地融合和對齊圖像和文本表示,從而增強多模態推理。
此外,SAM [190]和SAM 2 [331]更進一步,利用解碼器融合與圖像對應的提示嵌入,實現了僅基于文本提示的圖像/視頻零樣本自動分割。
?2.3.3 成本分析
多編碼器模塊:多編碼器模塊是為模態對齊而設計的專用編碼器模塊。該模塊適應各種模態輸入,使用不同的編碼器架構有效地將這些輸入對齊到統一的語義空間。具體而言,主要的編碼器模塊包括圖像編碼器、文本編碼器、音頻編碼器和IMU編碼器。如圖6(a)所示,編碼器模塊平均有0.27B個參數,平均占用1.1G內存,處理一個樣本的總GFLOPs為65.9。值得注意的是,圖像編碼器是最消耗資源的組件,有0.63B個參數,占用2.4G內存,處理單個樣本時執行167.59 GFLOPs。
解碼器模塊:在多模態模型中,除了多編碼器模塊外,還有一個由大型基礎模型、擴散模塊和FD模塊組成的解碼器模塊。
(1)大型基礎模型模塊:該模塊接收來自不同模態對齊的輸入,實現自回歸生成。該模塊的成本主要取決于大型基礎模型參數的大小。如圖6(b)所示,以集成的Vicuna - 7B為例,該模型由70億個參數組成,占用14G內存,處理一個樣本的總GFLOPs為312,大大超過了編碼器模塊的資源需求。
圖6? The cost of different modules in multimodal FMs.
(2)擴散模塊:該模塊接收可選的條件輸入并生成高質量圖像。由于擴散模型中這些模塊的大小各不相同,我們以Stable Diffusion 2.1為代表進行討論。Stable Diffusion 2.1采用U - Net進行去噪、VAE進行圖像編碼和解碼,并使用CLIP模型作為文本編碼器。圖7(a)和(e)展示了Stable Diffusion 2.1模型中的FLOPs(floating - point operations,即浮點運算數 ,常被用來衡量模型的計算量)和參數數量百分比。我們以由10個token組成的文本提示為例進行說明。圖7(b)和(f)展示了VAE模型中的FLOPs和參數數量百分比。圖7(c)和(g)展示了U - Net模型中的FLOPs和參數數量百分比。
圖7(d)和(h)展示了CLIP模型中的FLOPs和參數數量百分比。Stable Diffusion 2.1的U - Net以形狀為4×96×96的圖像潛在表示作為輸入,并預測潛在空間中的噪聲。該模型在LAION - 5B數據集[344]上進行訓練。U - Net有8.65億個參數,處理一個樣本的總FLOPs為759G。Stable Diffusion 2.1集成的VAE將圖像編碼到潛在空間并進行解碼。VAE以分辨率為3×768×768的圖像作為輸入,并將其編碼為4×96×96。VAE與U - Net在相同的數據集上共同訓練。VAE有830萬個參數,處理一個樣本的總FLOPs為4T。Stable Diffusion 2.1使用CLIP [321]模型進行文本編碼。CLIP在各種(圖像,文本)對數據集上進行訓練,如LAION數據集和DataComp數據集[114]。CLIP以句子作為輸入,并將每個token編碼為大小為1024的隱藏向量。該模型有2.89億個參數,處理單個token的總FLOPs為2.89億。
(3)FD模塊:由于FD和ViT的結構相似,它們的資源消耗和計算瓶頸也相似。更多詳細信息,請參考§2.2。
圖7?Parameters and FLOPs of different modules in Stable Diffusion 2.1
?3 資源高效架構
模型架構是實現資源高效的大型基礎模型的核心,包括注意力機制、解碼器及其替代方案。其主要目標是降低計算和內存開銷。圖8根據大型基礎模型的標準核心模塊和傳統分類方法,直觀展示了資源高效架構的分類。資源高效架構包括高效注意力機制、動態神經網絡、擴散特定優化和ViT特定優化。
圖8:資源高效架構概述
?3.1 高效注意力
注意力架構與序列長度相關的二次時間復雜度,在訓練和推理過程中帶來了重大挑戰。以往的研究[107, 244, 185, 90, 390]探索了將這種復雜度降低到線性的方法,或尋找可行的替代方案。圖9直觀總結了實現高效注意力的多種方法。
圖9:高效注意力架構示意圖
?3.1.1 稀疏注意力
受稀疏化的啟發,稀疏注意力[36, 18, 464, 153, 96, 206, 217]旨在構建一個稀疏注意力矩陣。這種方法旨在保留完全二次自注意力方案的經驗優勢,同時減少內積的數量。例如,Longformer [107]、ETC [244]和BIGBIRD [464]將傳統注意力分解為局部窗口注意力和特定任務的全局注意力,有效地將自注意力復雜度降低到線性。
HEPOS [153]引入了按頭的位置步長。這一創新使得每個注意力頭能夠專注于輸入序列的特定子集,便于編碼器 - 解碼器的處理。MATE [96]將注意力轉換為多視圖格式,有效地處理表格中的行或列。TDANet [217]模仿人類大腦的自上而下的注意力機制,有選擇地關注最相關的信息,從而提高語音分離效率。ALBERT [202]通過跨層共享參數,與傳統的BERT相比,在保證準確率的同時,參數數量減少了89%。
?3.1.2 近似注意力
許多研究[191, 179, 397, 69, 271, 272, 174, 55, 423]探索的近似注意力,涉及對自注意力矩陣的低秩近似和對自注意力機制的創新重構。這些方法避免直接計算N×N矩陣,旨在降低計算復雜度,提高效率,特別是在長序列場景中。Linformer [397]證明了將注意力矩陣有效分解為低秩矩陣的方法。該技術涉及將鍵和值的長度維度投影到較低維空間,從而顯著降低內存復雜度。Reformer [191]利用局部敏感哈希來代替傳統的點積注意力。
Katharopoulos等人[179]引入了一種基于核的自注意力方法,利用矩陣乘法的結合性來計算自注意力權重。Polysketchforme [174]采用多項式函數和草圖技術來近似softmax注意力輸出,為注意力機制的近似提供了新的視角。Mega [272]具有單頭門控注意力機制,并結合了指數移動平均。這一添加有效地將與位置感知局部依賴相關的歸納偏差,融入到原本位置無關的注意力機制中。
可變形注意力[423]提出了一種數據感知的、可變形的注意力機制,在ViT架構中有助于提高性能。與傳統的密集注意力方法相比,這種方法尤其有益。CrossViT [55]引入了線性交叉注意力,使ViT架構能夠有效地處理可變大小的輸入token,同時降低計算成本。
?3.1.3 無注意力方法
盡管基于注意力的Transformer架構在大型基礎模型中占據主導地位,但一些研究[467, 161, 313, 43, 42, 128, 77, 298, 309, 366]提出了創新架構,有望取代傳統的Transformer模型。例如,Hyena [313]引入了一種架構,將隱式參數化的長卷積與數據控制的門控交錯排列。這種設計為大規模語言模型中的注意力提供了一種次二次的替代方案,從而提高了處理長序列的效率。另一個值得注意的趨勢是用狀態空間模型(SSMs)替代注意力機制,如[128, 77, 298]中所探索的。
Mamba [127]將選擇性的SSMs無縫集成到一個簡化的神經網絡架構中,消除了注意力和MLP塊。該模型比傳統Transformer實現了顯著的5倍速度提升,并且與序列長度呈線性縮放。Gu等人[119]還對SSM文獻進行了全面的重組,使其更具信息性和連貫性。
循環風格的Transformer(RMT)[43, 42]采用基于循環神經網絡的架構,用RNN替代注意力以實現線性復雜度。RWKV [309]將Transformer的高效可并行訓練與RNN的有效推理能力相結合。RetNet [366]引入了一種架構,用多尺度保留機制替代多頭注意力。該架構捕獲并保留先前序列步驟的信息,通過不同頭使用不同的gamma值來調節保留強度。RetNet不僅在推理時無論序列長度如何都保持恒定的成本,而且在效率上優于帶有鍵值緩存的Transformer模型。此外,在訓練過程中,RetNet與標準Transformer相比,展示出25 - 50%的內存節省和7倍的加速。
?3.2 動態神經網絡
?3.2.1 專家混合
?Figure 10: Traditional and typical dynamic transformers.圖10:傳統和典型的動態Transformer
三種不同類型的Transformer架構,分別是傳統Transformer、典型的專家混合(MoE)版本Transformer和典型的早退(Early-Exiting)Transformer:
傳統Transformer(圖a):輸入數據(input)進入模型后,首先經過自注意力機制(Self-Attention)模塊處理,接著依次通過“Add + Normalize”(殘差連接和歸一化)模塊和密集前饋網絡(Dense FFN)模塊,如此重復N個模塊塊(xN blocks)后,最終輸出(output)結果。這是經典的Transformer結構,常用于自然語言處理等多種任務。
?典型的MoE版本Transformer(圖b):其整體結構與傳統Transformer類似,但在密集前饋網絡(Dense FFN)部分有所不同。這里的Dense FFN被替換為一個專家混合的結構。具體來說,有一個路由器(Router)根據輸入數據,從多個專家(Expert,圖中顯示為多個FFN,即前饋網絡)中選擇合適的專家進行處理,之后再經過后續的“Add + Normalize”模塊,重復N個模塊塊后輸出結果。這種結構可以根據不同的輸入動態地選擇專家,提高模型的靈活性和效率。
典型的早退Transformer(圖c):在傳統Transformer結構的基礎上,添加了早退分支(Early Exit Branching)。輸入數據經過自注意力機制、“Add + Normalize”模塊和密集前饋網絡模塊,每經過一組模塊塊,就有一個早退分支。這意味著模型在處理過程中可以根據一定條件提前輸出結果,而不需要完整地經過所有模塊塊,有助于在保證一定準確率的情況下,減少計算量和推理時間。
專家混合(MoE),如圖10(b)所示,是一種高效且稀疏的方法,用于訓練和部署具有大量參數集的大型基礎模型。該模型在推理時使用路由稀疏參數。Switch Transformer [104]引入了一種開關路由算法,使模型效率得到提高,計算和通信成本降低。Switch Transformer通過管理多達一萬億個參數(甚至有2048個專家),展示了MoE框架的可擴展性和有效性。GLaM [94]是一個僅解碼器的語言模型家族,利用稀疏激活的MoE設計。這種創新方法在大幅降低訓練成本的同時,與密集模型相比增加了模型容量。V - MoE [335]提出了ViT的稀疏適應版本,擴展到150億個參數,在性能上與密集模型相匹配,同時所需的訓練時間更少。LIMoE [286]是第一個集成稀疏MoE的多模態模型,在各種任務中顯著優于CLIP。Mistral AI推出了Mistral ,這是一個由8個專家組成的MoE模型,每個專家有70億個參數。該模型的性能優于LLaMA2 - 70B模型[383]。MoEfication [481]將模型轉換為具有等效參數的MoE變體。這種技術有條件地利用前饋網絡參數的一部分,保持與原始密集模型相當的性能水平。稀疏上采樣[193]從密集檢查點初始化稀疏激活的MoE。
稀疏上采樣使T5 Base、Large、XL和Vision Transformer Base和Large等模型,在SuperGLUE和ImageNet等基準測試中,顯著優于它們的密集對應模型,同時僅使用約50%的原始密集預訓練成本。FFF [35]將前饋層劃分為單獨的葉子節點,而不是將整個前饋層復制為一個專家。FFF是前饋網絡的對數時間替代方案,比原始前饋層快220倍,比MoE快64倍,精度損失約5%。§5.1將詳細介紹應用于MoE模型的系統優化。
?3.2.2 早期退出
如圖10(c)所示,早期退出優化是一種策略,當模型對預測有高置信度或遇到資源約束時,允許模型提前終止計算過程。He等人[138]研究了對標準Transformer塊的修改,旨在在不犧牲性能的情況下獲得更簡單但高效的架構。該模型涉及去除諸如殘差連接、層歸一化以及投影和值中的特定參數,同時序列化MLP子塊。M4 [461]引入了一個多路徑任務執行框架,實現了對基礎模型塊的彈性微調,以適應不同的訓練和推理任務。FREE [27]提出了一個淺 - 深模塊,將當前token的解碼與先前處理的早期退出token同步。FREE使用自適應閾值估計器來確定合適的早期退出置信度水平。
SkipDecode [83]專為批量推理和鍵值緩存而設計,通過為批處理中的每個token在每個序列位置建立唯一的退出點,克服了先前的限制。PABEE [491]通過在每一層集成內部分類器,提高了預訓練語言模型的效率。當預測在一定步數內穩定時,推理過程停止,有助于在減少層使用的情況下更快地進行預測。DeeBERT [428]通過引入早期退出點提高了BERT的推理效率。DeeBERT允許實例根據置信度水平在中間層終止,有效地降低了計算需求并加速了推理。Bakhtiarnia等人[31]提出了7種不同的早期退出分支架構設計,適用于ViT骨干網絡的動態推理。LGViT [431]提出了一個針對通用ViT的早期退出框架,具有多種退出頭,如局部感知和全局聚合頭,以平衡效率和準確性。這種方法實現了具有競爭力的性能,速度提高了約1.8倍。
?3.3 擴散特定優化
通過擴散模型生成圖像通常涉及具有多個去噪步驟的迭代過程。最近的研究集中在加速去噪過程并減少圖像生成過程中的資源需求,主要分為三類:(1)高效采樣;(2)潛在空間擴散;(3)擴散架構變體。
?3.3.1 高效采樣
為了在保持或提高樣本質量的同時增強擴散模型的去噪過程,許多研究[290, 269, 356, 475, 252, 178, 265, 339, 474, 359, 406, 16, 471]致力于改進采樣過程。這些研究在架構中強調資源和時間效率。Nichol等人[290]在提高傳統DDPM的資源效率方面取得了進展。他們改進的模型不僅在對數似然方面具有競爭力,而且提高了樣本質量。這種效率是通過學習反向擴散過程的方差并采用混合訓練目標實現的。這種方法導致了更高效的采樣,需要更少的前向傳遞,并在模型容量和計算能力方面展示出更好的可擴展性。DDIM [356]代表了擴散模型在延遲效率方面的重大改進。通過引入一種非馬爾可夫、確定性的采樣方法,DDIM加速了生成過程,允許在不犧牲樣本質量的情況下更快地采樣。這種DDPM [144]的常微分方程(ODE)變體在生成過程中有效地在不同噪聲水平之間導航,使其成為比傳統DDPM更具延遲效率的選擇。PNDM [252]提高了DDPM生成高質量樣本的效率。該方法將擴散過程視為在流形上求解微分方程,極大地加速了推理過程。這種注重延遲效率的方法,在需要高速采樣的場景中,優于現有的加速技術(如DDIMs),同時保持樣本保真度。DPM - Solver [265]專注于提高擴散模型的采樣效率。該方法使用高階求解器,利用擴散ODE的半線性結構,實現快速且高質量的樣本生成。值得注意的是,DPM - Solver僅用10 - 20個去噪步驟就實現了這一點,突出了樣本生成中的延遲效率。ReDi [471]通過檢索和重用預計算的擴散軌跡來加速采樣。Nirvana [16]引入了一種近似緩存技術,通過重用中間噪聲狀態,降低文本到圖像擴散模型的計算成本和延遲。這在不影響圖像質量的情況下,實現了顯著的GPU和時間節省。
?3.3.2 潛在空間擴散
在傳統擴散模型中,操作通常在圖像的像素空間內進行。然而,對于高分辨率圖像,這種方法由于計算需求大且內存要求高而效率低下。為應對這些挑戰,研究人員提出通過變分自編碼器(VAEs)[336, 196, 404, 312, 343, 369, 34, 273]將擴散過程轉移到潛在空間進行。這種范式在內存效率方面取得了顯著進展,使得在減少計算資源的情況下能夠生成高分辨率圖像。LDM(Latent Diffusion Model,潛在擴散模型)[336],也就是穩定擴散模型,是內存高效圖像生成的一個顯著例子。通過在由像素數據經VAE得到的潛在空間中執行擴散過程,LDM有效地解決了早期擴散模型中存在的可擴展性問題。這種方法能夠高效地合成高分辨率圖像,并且通過融入與文本編碼器輸入交互的交叉注意力層,有助于創建詳細的、由文本引導的視覺效果。LD - ZNet [312]利用LDM的內存高效特性進行圖像分割任務。通過在LDM的潛在空間中訓練分割模型,LD - ZNet顯著提高了分割精度,特別是對于人工智能生成的圖像。這種方法利用了LDM內部特征中固有的深度語義理解,在真實圖像和人工智能生成的圖像之間提供了一個細致的橋梁。SALAD [196]引入了一種用于3D形狀生成和操作的內存高效方法。它采用基于部分級隱式表示的級聯擴散模型,在高維空間中通過兩階段擴散過程進行操作。這種內存高效的設計有助于在無需額外條件訓練的情況下,有效地生成和進行3D形狀的部分級編輯。Takagi等人[369]提出了一種使用LDM從功能性磁共振成像(fMRI)腦活動重建高分辨率圖像的新方法。該方法利用簡單的線性映射將fMRI數據投影到LDM的潛在空間中。這種方法不僅實現了從腦活動的高保真圖像重建,還從神經科學的角度對LDM的內部機制有了更深入的理解。這些工作都突出了在擴散模型中利用潛在空間的優勢,特別是在內存效率方面,與傳統的像素空間方法形成了鮮明對比。
?3.3.3 擴散架構變體
另一種增強擴散模型的方法是采用更高效的模型架構[231, 106, 32, 143, 267]。這種策略側重于改進擴散模型的結構框架,以優化其性能。通過實施先進的架構設計,這些模型可以實現更有效的處理能力,同時有可能降低計算復雜度和資源消耗。SnapFusion [231]為移動設備引入了一種優化的文本到圖像擴散模型,具有資源高效的網絡架構。該模型通過重新設計的網絡架構和改進的步驟蒸餾,克服了現有模型的計算和延遲限制。通過在不到2秒的時間內生成高質量的512×512圖像,SnapFusion在FID(Frechet Inception Distance)和CLIP分數上超過了穩定擴散模型。值得注意的是,這一成果是在更少的去噪步驟下實現的。ScaleCrafter [143]通過創新且資源高效的網絡設計,解決了使用預訓練擴散模型生成超高分辨率圖像的問題。ScaleCrafter結合了“重新擴張”、“分散卷積”和“噪聲阻尼無分類器引導”等技術,在推理過程中動態調整卷積感知場。該模型能夠在無需額外訓練或優化的情況下生成超高分辨率圖像。ERNIE - ViLG [106]引入了一種新穎的文本到圖像擴散模型,將細粒度的文本和視覺知識集成到一個高效的網絡架構中。通過混合去噪專家機制并擴展到240億參數,ERNIE - ViLG在MS - COCO上以卓越的零樣本FID - 30k分數6.75超越了現有模型。該模型顯著提高了圖像保真度和文本相關性,巧妙地解決了復雜文本提示中的屬性混淆問題。這些貢獻都突出了資源高效網絡架構在推進擴散模型、擴展其能力以及拓寬其在不同場景中的適用性方面的重要性。
?3.4 ViT特定優化
作為Transformer的一種變體,ViT受益于上述的通用優化方法;然而,也存在針對ViT的特定架構優化。LeViT [126]是一種混合神經網絡,專為推理時的高效圖像分類而設計。LeViT使用更多的卷積層進行嵌入,增強了其處理像素信息的能力。其主要骨干網絡采用金字塔架構,在逐步降低特征維度的同時增加注意力頭的數量。值得注意的是,該模型引入了一種可學習的、每個頭的平移不變注意力偏差,取代了ViT中的位置嵌入。LeViT在ImageNet上實現了令人印象深刻的80%的top - 1準確率,并且在CPU上執行時,與EfficientNet相比,速度提高了5倍[370]。PoolFormer [460]通過強調ViT的成功源于其整體架構設計(稱為MetaFormer),提供了有價值的見解。PoolFormer采用了卷積神經網絡(CNNs)中常見的簡單池化層,并在ImageNet - 1K數據集上實現了82.1%的top - 1準確率。
MobileViT [277]遵循利用CNNs構建更輕量級Transformer架構的理念。通過設計類似卷積的MobileViT塊,該模型實現了輕量級和低延遲的實現,特別適合實際的硬件平臺。MobileViT的優化不僅考慮了FLOPs(浮點運算次數),還包括對內存訪問、并行性和平臺特定特性的考量。MobileViT在ImageNet - 1k數據集上以約600萬個參數達到了78.4%的top - 1準確率。EfficientFormer [232]設計了一種輕量級的CNN - Transformer混合架構,實現了更高效的設備端推理。其中最快的模型EfficientFormer - L1在ImageNet - 1K上達到了79.2%的top - 1準確率,在iPhone 12(使用CoreML編譯)上的推理延遲僅為1.6毫秒。這一性能與MobileNetV2×1.4相當(1.6毫秒,74.7%的top - 1準確率)。EfficientViT [45]引入了一種線性注意力機制,以減輕與非線性注意力中softmax高開銷相關的計算成本。在超分辨率領域,EfficientViT與Restormer [465]相比,速度提升高達6.4倍。
圖11:資源高效的ViT變體總結
?4 資源高效算法
本節重點關注算法層面的資源高效大型基礎模型技術。與傳統的深度神經網絡(DNNs)相比,大型基礎模型具有參數規模巨大和自回歸推理等新特點。這種差異導致了眾多資源高效算法的出現,根據基礎模型的生命周期,這些算法可分為預訓練、微調、服務算法和模型壓縮。
圖12:資源高效算法概述
?4.1 預訓練算法
大型基礎模型的預訓練依賴大量的計算資源。例如,GPT - 3 - 175B [41]消耗\(3.14\times10^{23}\)次浮點運算,LLaMa - 70B [383]需要\(1.7\times10^{6}\)個GPU小時。因此,優化計算資源的利用對于基礎模型的高效預訓練至關重要。資源高效的算法可分為訓練數據縮減、神經架構搜索、漸進式學習和混合精度訓練。
?4.1.1 訓練數據縮減
大型基礎模型的預訓練需要數萬億規模的數據集,例如GPT - 3 - 175B需要3000億個token [41],LLaMa - 2 - 70B需要2萬億個token [383]。更多的數據意味著更多的資源消耗。因此,先前的文獻通過兩個方面來降低在大量訓練數據上的資源成本:文本數據集去重和圖像補丁去除。
文本數據集去重[205]表明,訓練數據中存在由于近重復示例和長重復子串導致的冗余。減少重復可以在不影響性能的情況下減少訓練步驟。圖像補丁去除是通過減少輸入到模型的補丁數量,或基于修改后的模型架構重新組織圖像token來實現的。例如,TRIPS [167]采用補丁選擇層來減少圖像補丁。該層通過文本引導計算注意力圖像token,與之前的預訓練視覺語言模型相比,計算資源減少了40%。掩碼自編碼器(MAE)[141]作為ViT的一種預訓練方法被廣泛使用。MAE在預訓練階段對圖像補丁進行掩碼,但高掩碼比例會帶來顯著的計算資源浪費。MixMAE [249]引入了一種在補丁級別混合多個圖像的方法,從而避免了引入[MASK]符號的需要。使用可見圖像補丁代替[MASK]符號有助于減少訓練數據集的大小。COPA [168]引入了一個名為補丁 - 文本對齊的輔助預訓練任務。這種補丁級別的對齊策略旨在減少圖像補丁中的冗余,補丁序列的減少有助于節省計算資源。PatchDropout [257]引入了補丁丟棄的概念,以提高計算和內存效率。該方法涉及對原始圖像補丁的隨機采樣,有效地縮短了token序列的長度。TPS [408]采用了一種更激進的壓縮技術。TPS根據token的重要性將其分類為修剪集和保留集,然后將每個修剪后的token分配給其相關的保留token,而不是丟棄修剪集。
?4.1.2 神經架構搜索
神經架構搜索(NAS)是一種自動模型設計算法,用于在無需人工干預的情況下實現最優的模型效率和性能。零樣本NAS [14]引入了一種概念,即模型可以在無需實際訓練的情況下預測神經網絡架構的性能。通過利用先驗知識和代理模型進行架構評估,該技術顯著降低了計算成本和時間,有助于在最小資源消耗的情況下高效探索復雜的架構空間。ZICO [212]引入了一種零樣本NAS代理,在性能上優于傳統的NAS代理,包括一次性和多次性NAS方法。值得注意的是,它通過在搜索階段無需訓練模型,減少了計算資源的消耗。PASHA [39]為初始化分配有限的資源,并根據需要增加資源分配。通過動態資源分配,PASHA加快了NAS的速度并有效地管理了計算資源。RankNAS [149]將NAS問題表述為一個排序問題,并進一步將這個排序問題簡化為一個二分類問題。此外,該方法使用特征來評估有前景的架構。PreNAS [391]采用了一種無搜索的NAS方法。該方法通過零樣本NAS代理確定優選的架構,然后僅對優選的架構進行一次訓練。ElasticViT [371]有一種NAS方法,可自動設計計算量少于1×10^{9}FLOPs的輕量級ViT模型。該方法引入了兩種子網采樣技術來解決梯度沖突問題,從而實現了高準確率和低推理延遲。
?4.1.3 漸進式學習
漸進式學習是一種訓練策略,它從訓練一個小模型開始,然后逐漸增加模型的大小,并繼續訓練過程。這種方法通過重用前一階段的計算來優化計算資源的使用。受不同深度模型之間可以共享知識這一觀點的啟發,stackingBERT [124]引入了一種漸進式堆疊算法。該算法通過依次堆疊較小模型的注意力層來訓練大型模型。stackingBERT表明,這種漸進式堆疊方法可以在減少計算資源消耗的情況下,達到與從頭開始訓練大型模型相似的性能。CompoundGrow [129]認識到漸進式訓練算法與NAS之間的相似性。CompoundGrow為BERT引入了一種漸進式訓練算法,有助于模型在多個維度上的增長,包括深度、寬度和輸入長度。該方法通過使用復合增長算子來減少計算資源的消耗。階段訓練[348]采用一種策略,即首先預訓練一個小模型,隨后增加模型的深度和寬度,并繼續訓練過程。使用增長算子將整個訓練狀態,包括模型參數、優化器狀態、學習率調度等,轉移到下一個階段。這種方法重用了前一階段的計算,有效地減少了訓練時間和計算資源需求。知識繼承[319]建議使用現有的預訓練語言模型作為教師模型,在更大模型的訓練過程中提供指導。教師模型提供的補充輔助監督可以有效地提高更大模型的訓練速度。LiGO [395]通過一個可訓練的參數線性映射,引入小模型參數來初始化大模型。LiGO通過將增長變換分解為寬度和深度維度上的線性算子組合來實現這一點。
?4.1.4 混合精度訓練
混合精度訓練通常使用半精度浮點數據表示,而不是單精度。這種方法顯著降低了內存需求,大約將權重、激活值和梯度所需的存儲空間減少了一半(以半精度計算)。Mesa [303]提出將激活壓縮訓練[50]與混合精度訓練相結合,進一步減少激活值使用的內存。該方法根據多頭自注意力層的分布對激活值進行量化,以最小化近似誤差。GACT [255]引入了一種基于每個梯度重要性的動態調整壓縮比。這一創新使得在各種模型架構中,包括卷積神經網絡、圖神經網絡和基于Transformer的模型,都能減少計算資源和內存消耗。
?4.2 微調算法
高效的微調算法旨在減少使預訓練基礎模型適應下游任務的工作量。這些技術可分為三類:加法調優、選擇性調優和重新參數化調優。
Figure 13: A summary of various fine-tuning algorithms??
?4.2.1 加法調優
大型基礎模型可以通過添加額外參數并針對新任務進行微調,以低成本實現高性能。具體而言,大型基礎模型中的這種加法調優過程可分為三個主要類別:適配器調優、提示調優和前綴調優。
適配器調優
適配器調優旨在通過在預訓練大型基礎模型的特定層(或所有層)引入適配器模塊來降低訓練成本。在調優過程中,預訓練模型的骨干保持凍結狀態,適配器模塊用于獲取特定任務的知識。一些研究[98, 376, 302]專注于為多任務或多模態擴展設計適配器。ADA [98]和MetaTroll [376]致力于逐步擴展預訓練Transformer在多個任務上的能力。這種方法有助于減輕學習過程中的災難性遺忘,同時減少計算開銷。ST - Adapter [302]引入了內置的時空推理能力,使預訓練模型在跨模態任務中顯著減少需要更新的參數數量。其他研究[240, 402, 379, 241]旨在進一步降低微調成本。HiWi [240]表明,涉及添加新參數的PEFT(Parameter - Efficient Fine - Tuning,參數高效微調)方法通常會引入額外的推理延遲。PEFT通過將適配器應用于預訓練參數而不是隱藏表示來提高推理速度。AdaMix [402]設計了一種組合機制,將不同適配器的權重合并為每個Transformer層的單個適配器。這一創新顯著減少了多個適配器引入的額外存儲成本。MEFT [241]通過將LLM修改為其可逆變體來設計一種插入適配器的方法,減少了激活內存,從而提高了微調的內存效率。Residual Adapters [379]解決了非標準語音導致的自動語音識別性能下降問題。該方法涉及設計個性化的殘差適配器,有助于減少更新的參數數量。此外,其他研究,如PEMA [182],專注于在模型微調過程中確保數據保密性。這些方法涉及設計提供上下文提示的適配器,使預訓練模型能夠生成相應的上下文表示。此外,使用漸進展開方法進行調優。
提示調優
提示調優涉及為每個任務設計特定任務的提示,旨在取代傳統的對預訓練大型基礎模型參數的微調。通過調整輸入提示,這種方法顯著減少了微調所需的資源和時間。一些研究[23, 208, 384]專注于提高多任務設置中提示的高效可擴展性。例如,PromptTuning [208]、ATTEMPT [23]和BioInstruct [384]研究了如何利用混合軟提示在不同任務之間高效地轉移知識。這些方法通過重用凍結的預訓練大模型來降低參數更新成本。此外,一些工作[448, 57]專注于最小化特定任務的提示微調成本。例如,DualPL [448]設計了兩個提示,并分別捕獲兩個任務的相關知識。這種方法解決了對話狀態跟蹤系統中收集槽位和值的狀態標簽成本高昂的問題。在機器閱讀理解任務中,MPrompt [57]引入了任務特定的多層次提示微調,以增強在不同粒度上對輸入語義的理解,同時減少參數更新的數量。此外,DPT [426]解決了由于使用相同初始化導致的提示微調效率低下的問題。該方法探索了初始化提示的分解,在確保提示有效性的同時進一步減少了可訓練參數。
前綴調優
前綴調優在大型基礎模型的每一層引入一個可訓練的、特定任務的前綴部分。這種技術旨在通過限制對該前綴中參數的更新來降低調優成本。一些工作[400, 247, 486, 287, 389]專注于提高特定領域前綴調優的性能。例如,UAPT [400]和Prefix-diffusion [247]解決了圖像字幕生成中多樣性有限的問題。這些方法從大型基礎模型中提取圖像特征,并設計前綴以提高性能,同時減少額外的開銷。DOP [486]和DAPA [287]專注于抽象摘要中的領域泛化問題。這些方法為每個源領域設計前綴,以提高模型的泛化能力。PIP [389]專注于釋義生成中的句法控制,并通過設計解析指示前綴來降低訓練成本。此外,其他工作如Prefix Propagation [213]和APT [469]進一步優化前綴調優,以提高其效率和有效性。
?4.2.2 選擇性調優
選擇性調優旨在通過凍結大型基礎模型中的大部分參數,并僅選擇性地更新一小部分參數,在新任務上保持高性能的同時降低訓練成本。一些工作專注于優化選擇性調優的性能。例如,SAM [113]探索了可調參數的選擇如何影響調優。通過提出二階近似方法,它調整較少的參數以實現更好的模型性能。SmartFRZ [221]專注于通過引入基于不同網絡結構的自適應層凍結技術來提高層凍結的效率。這一創新提高了系統的準確性和訓練速度。FiSH-DiP [79]通過引入樣本感知的動態稀疏調優策略,探索了在有限數據下進行調優的有效性。這種方法利用樣本反饋選擇性地調整部分參數,以增強模型在資源受限情況下的泛化能力。此外,一些工作繼續專注于特定領域。例如,Token Mixing [259]和VL-PET [151]專注于視覺語言任務,通過調整和選擇可訓練參數的子集來提高微調效率。SPT [140]強調通過設計敏感性感知參數預算來高效調整視覺參數,實現特定任務的選擇性調優。從可持續人工智能計算的角度來看,GreenTrainer [152]通過自適應選擇最合適的張量集,以其重要性和反向傳播成本為指導,最小化大語言模型微調的FLOPs。與全量微調相比,它取得了顯著的成果,實現了高達64%的微調FLOPs減少。
Figure 14: LoRA and its optimization methods.?
?4.2.3 重新參數化調優
重新參數化調優通過針對比原始廣闊訓練空間小得多的子空間來適配大型基礎模型。這種方法涉及微調低秩矩陣參數,這一技術有效地降低了整體訓練成本。現有的大多數研究都圍繞通過低秩適配器設計來實現重新參數化調優。例如,EfficientDM [142]、QLoRA [86]、PEQA [183]、QALoRA [441]和LoftQ [233]結合量化技術,在LoRA的基礎上進行改進,以提高內存效率。這一共同努力旨在在保持模型性能的同時提高訓練效率。GLoRA [51]增強了LoRA的通用性,通過減少參數數量和計算開銷,提高了模型的可遷移性、少樣本能力和領域泛化能力。PELA [134]從LoRA中獲得靈感,設計了一種低秩近似壓縮方法。這一創新通過僅更新低秩模型,同時凍結所有骨干參數,提高了微調效率。LongLoRA [66]通過結合移位短注意力來擴展LoRA的能力,實現上下文擴展。這種實現方式在保持模型性能的同時節省了計算成本。此外,LOMO [268]和MeZO [276]優化梯度計算過程,以減少微調過程中梯度張量的內存需求。對于ViT的線性層,LBP-WHT [447]通過基于沃爾什 - 哈達瑪變換的低秩反向傳播,降低了矩陣乘法的計算成本。這種方法有助于同時提高模型性能。此外,DSEE [62]研究了在預訓練模型權重上應用稀疏感知低秩更新的應用。這種方法在確保模型性能提升的同時,大幅減少了推理FLOPs。Dynamic-Pooling [289]機制旨在通過自回歸預測來預測推理邊界。這種設計引導模型在調優過程中更快地進行重新參數化。
LoRA在微調低秩矩陣A和B時凍結預訓練權重矩陣,其秩可低至2。這種方法顯著減少了可訓練參數的數量,從而減少了訓練期間存儲梯度值所需的數量。然而,與全量微調相比,LoRA仍然存在性能差距。為了解決這一問題,人們開發了各種方法來提高LoRA的性能,如圖14所示,主要分為三種策略:添加可訓練參數、改進初始化和優化學習過程。Delta-LoRA [497]旨在通過低秩矩陣A和B的乘積更新預訓練權重,從而在不增加額外內存開銷的情況下添加可訓練參數,以彌合性能差距。另一方面,PiSSA [278]發現LoRA用高斯隨機值和零初始化低秩矩陣,導致初始梯度值非常小,收斂速度慢。PiSSA建議對預訓練權重矩陣進行奇異值分解(SVD),將具有較小奇異值的矩陣凍結為殘差矩陣,并使用最大奇異值初始化可訓練的低秩矩陣A和B。這種優化的初始化方法實現了更快的收斂和更好的性能。最后,DoRA [254]和LoRA+ [137]專注于增強學習過程本身,以進一步提高效率和有效性。DoRA觀察到LoRA和全量微調具有不同的更新模式。因此,它將預訓練權重分解為幅度和方向分量,并微調方向矩陣。這使得更新模式更接近全量微調,從而帶來更好的訓練結果。LoRA+表明,對矩陣A和B使用相同的學習率對訓練并不最優。通過將B的學習率設置得高于A,可以加速收斂并提高微調性能。
?4.3 推理算法
?4.3.1 機會主義解碼
自回歸的本質嚴重阻礙了大型基礎模型的推理效率。因此,有大量方法旨在用機會主義非自回歸解碼替代自回歸解碼。
推測解碼
推測解碼涉及使用成本較低的小模型以自回歸方式生成序列,然后使用較大模型并行驗證每個token。典型的推測解碼過程如下。給定一個小模型\(M_{q}\)和一個大模型\(M_{p}\),用\(M_{p}\)以自回歸方式解碼\(\gamma\)個token。將\(\gamma\)添加到前綴\(\sigma\)中,然后執行\(M_{p}\)的前向傳遞。比較\(M_{q}\)和\(M_{p}\)在相應token位置的logits,并根據特定標準接受或拒絕這些token。值得注意的是,這個過程確保了完全的準確性,最終的解碼結果與僅使用\(M_{p}\)獲得的結果相同。Yaniv等人[209]在T5X模型上使用推測解碼實現了2 - 3倍的性能提升。同時期的一項工作[54]在700億參數的Chinchilla模型上也展示了類似的加速效果。SpecTr [368]提出了一種新穎的推測解碼策略,通過擴展候選token的數量和改進草稿選擇方法來提高算法性能。該方法在實際運行時間上實現了2.13倍的提升,在標準基準測試中比推測解碼進一步提高了1.37倍。ProphetNet [443]引入了一種序列建模架構,用于預測未來token,在一定程度上減少了自回歸。在草稿階段,Draft & Verify [470]選擇性地跳過某些中間層,而無需依賴額外的小模型,使其更易于插拔使用。在Llama - 2上的測試表明,這種方法實現了1.73倍的加速。Medusa [47]是另一種為非自回歸解碼設計的解碼架構,不需要額外的輔助模型。它通過預訓練多個頭來預測不同的時間步,同時預測多個token,然后同時驗證這些token。Look-ahead decoding [112]在不需要草稿模型或數據存儲的情況下加速大型基礎模型的推理。這種方法相對于每個解碼步驟使用的log(FLOPs)線性減少解碼步驟的數量。此外,還有基于推測解碼構建的推理系統,包括SpecInfer [280],它在云端使用多個草稿模型,以及部署在邊緣的LLMCad [429]。
查找解碼
另一種方法是在解碼過程中在文本語料庫中搜索模式,以替代自回歸生成。例如,推測當前解碼的內容可能對應于文本語料庫中的一個序列,然后并行進行驗證。通過在推理服務器上預計算并存儲頻繁出現的文本段的注意力狀態,Prompt Cache [122]可以在這些段出現在用戶提示中時高效地重用它們。這種方法在不修改模型參數的情況下,在保持輸出準確性的同時,實現了基于GPU的推理8倍的性能提升和基于CPU的推理60倍的性能提升。在推理階段,LLMA [445]利用外部文本驗證潛在的推理結果,并集成了一個觸發機制來確定何時進行解碼以及何時進行引用。增加的計算并行性使LLMA在大型基礎模型上實現了超過2倍的加速,在許多實際場景中(如搜索引擎和多輪對話),生成結果與貪婪解碼相同,這些場景的特點是上下文引用與輸出之間有大量重疊。此外,還有研究致力于為大型基礎模型提供可并行化的解碼提示,從而減輕自回歸解碼的影響。例如,受人類思維和寫作認知過程的啟發,Skeleton-of-Thoughts [292]首先引導大型基礎模型生成答案的框架。隨后,該方法使用并行API調用或批量解碼來同時為生成的框架中的每個點填充細節。
?4.3.2 輸入過濾和壓縮
提示壓縮
通過壓縮輸入到模型的提示可以有效地減少計算量。LLMLingua [169]從粗到細的角度引入了一種提示壓縮方法。該方法結合了預算控制器以在高壓縮率下保持語義完整性,一種基于token級的迭代壓縮算法以改進對壓縮內容之間相互依賴關系的建模,以及一種基于指令調整的方法來對齊語言模型之間的分布。LLMLingua可以實現高達20倍的壓縮,同時性能損失最小。Jiang等人[413]研究了在保持語義的同時壓縮大型基礎模型自然語言的可行性、適用性和潛力。EntropyRank [385]提出了一種無監督方法,用于從文本數據中提取關鍵詞和關鍵短語。該方法利用預訓練的大型語言模型,并結合香農信息最大化。
LLMZip [386]使用LLaMA - 7B來壓縮自然語言。實驗結果表明,LLMZip優于包括BSC、ZPAQ和paq8h在內的前沿文本壓縮方法。AutoCompressors [68]利用大型基礎模型將自然語言壓縮為緊湊的摘要向量。這些向量隨后可以作為軟提示供大型基礎模型使用。ICAE [119]利用大型基礎模型的能力將廣泛的上下文壓縮為簡潔的內存槽。這些內存槽可直接被大型基礎模型用于各種目的。Nugget 2D [317]引入了一種專門用于處理長上下文的提示壓縮方法。CoT-Max [154]是一種上下文修剪器,旨在增強大型基礎模型的思維鏈(Chain-of-Thought)能力。
token修剪
研究還探索了對Transformer輸入序列的修剪,通常涉及在推理過程中逐步刪除不太重要的token。PoWER-BERT [125]提出直接學習token修剪配置。Length-Adaptive Transformer [181]擴展了這一想法,引入了LengthDrop技術,即使用各種token修剪配置訓練模型,然后進行進化搜索。TR-BERT [452]將token修剪表述為一個多步token選擇問題,并通過強化學習來解決它。
對于ViT,也有一些動態token修剪方法。DynamicViT [328]根據重要性分數對冗余token進行分層修剪。AdaViT [279]和A-Vit [455]采用自適應token減少機制,并為不同的圖像選擇不同的token。AdaViT根據輸入動態確定補丁、自注意力頭和Transformer塊的使用。A-Vit在推理時丟棄視覺Transformer中的token,根據輸入圖像的復雜度調整token保留。
SPViT [195]設計了一種自適應實例級token選擇器,并引入了一種軟修剪技術。PuMer [48]在大型視覺語言模型的推理過程中合并相似的文本和視覺token。Mini-Gemini [230]使用雙編碼器處理高分辨率圖像和低分辨率圖像嵌入,而不增加視覺token的數量。LLaVA-UHD [439]也能夠處理任意寬高比的高分辨率圖像:它利用模塊化視覺編碼將原始分辨率圖像劃分為較小的可變大小切片。這些圖像token將通過壓縮模塊進一步壓縮,并帶有一個空間模式來告知大語言模型切片的位置。
?4.3.3 鍵值緩存
優化基于自回歸解碼器模型推理過程中的鍵值緩存內存是一個關鍵方面。將鍵值緩存量化為激活值。一種策略是將鍵值緩存視為激活值,并應用量化技術進行低精度壓縮。主要挑戰來自于鍵值緩存中大量極端異常值引入的量化誤差。
在圖12中,我們展示了鍵值緩存量化的關鍵方法。這些方法的詳細介紹將在§4.4作為權重 - 激活聯合量化的一部分給出。內存高效的稀疏注意力。另一種方法是利用稀疏注意力。然而,值得注意的是,大多數主要針對降低計算復雜度設計的稀疏注意力[36, 464],不一定會導致鍵值緩存內存消耗的減少。這是因為要實現鍵值緩存的內存減少,需要更嚴格的稀疏模式。具體來說,被稀疏化的token在后續步驟中不應被動態訪問。為了解決這個問題,H2O [482]引入了一種為優化內存效率而設計的鍵值緩存逐出策略。該策略使用注意力分數來識別和選擇當前狀態下最不重要的鍵值緩存token進行逐出。與強大的基線相比,H2O展示了高達1.9倍的延遲減少和29倍的吞吐量增加。Dynamic Context Pruning [22]在預訓練階段學習一種內存高效的鍵值緩存逐出策略。這種方法已證明能夠實現高達2倍的推理吞吐量增加,甚至更多的內存節省。Scissorhands [263]提出了一種用于大型基礎模型推理的高效算法,該算法使用緊湊的鍵值緩存。這種創新方法顯著減少了鍵值緩存推理內存的使用,在保持模型質量的同時實現了高達5倍的減少。通過使用地標token來劃分token塊,Landmark Attention [285]優化了鍵值緩存存儲。這種方法允許將大部分鍵值緩存存儲在較慢但容量更大的內存中,從而在不影響性能的情況下減少了內存需求。DeepSeek-V2 [82]提出了一種多頭潛在注意力(MLA)方法,將分組查詢注意力(GQA)改進為具有更強能力的潛在表示。它通過一個在推理時可被吸收到\(W_{k}\)和\(W_{V}\)的矩陣,將GQA的K和V重新投影到高維形式。FastGen [118]識別各種頭的注意力稀疏模式,并通過輕量級注意力分析為每個頭確定最合適的模式。
塊級鍵值緩存管理
vLLM [199]采用了操作系統中分頁內存的概念,將容易出現內存碎片化的鍵值緩存作為塊進行管理。這種基于塊的注意力機制的計算結果與標準注意力機制相同。我們將在§5.3中詳細闡述其細節。雖然vLLM通過運行時重新分配顯著減少了鍵值緩存內存消耗,但實踐者必須重寫注意力內核或重用vLLM的內核,這兩種方式都會導致性能下降。為了解決這個問題,vAttention [315]直接依賴操作系統/ CUDA在物理內存上進行重新分配。與vLLM相比,它進一步將端到端服務吞吐量提高了1.29倍。在移動設備上,LMS [456]提出了一種細粒度的鍵值緩存管理方法,該方法機會性地壓縮鍵值緩存塊,并協調交換和重新計算以管理它們。它確保了LMS提出的設備端大語言模型即服務(LLMaaS)愿景中的快速上下文切換。
其他方法
Mooncake [318]提出了一種預填充 - 解碼分離系統。其核心是通過緩存和重用相似內容來優化請求的繁重鍵值緩存。CacheGen [258]將鍵值緩存視為數據流,并通過標記增量值和算術編碼對該流進行編碼。InfiniGen [207]通過奇異值分解(SVD)壓縮鍵值緩存,并預取關鍵的鍵值對。CachedAttention [116]使用HBM交換來緩存多輪對話的鍵值緩存。
?4.3.4 長上下文
為了有效地處理長序列,Transformer需要調整其位置編碼,以增強捕獲長距離信息的能力。解決這一挑戰的重要工作包括[316, 367, 56, 61, 38, 310, 220, 493]。這些工作是使Transformer能夠處理長上下文和高分辨率輸入的前提條件。由于注意力機制的二次計算成本,人們提出了各種資源高效的優化方法來處理長輸入。這些優化方法包括循環結構和注意力優化。
循環結構
Transformer-XL [74]引入了段級循環機制,可保持時間連貫性而不會中斷。這一創新使得評估速度比普通Transformer快1800多倍。RMT [43]在遵循Transformer-XL概念的基礎上,通過在輸入或輸出序列中引入特殊的記憶令牌,將記憶機制集成到Transformer模型中,且無需進行修改。塊循環Transformer [157]采用循環單元,在訓練期間處理令牌塊而非單個令牌,這種方法利用了塊內的并行計算,有效利用了加速器硬件。Memformer [418]在保持線性計算復雜度和恒定內存空間復雜度的同時,實現了理論上無限的時間范圍記憶。
注意力優化
LM-Infinite [135]引入了Λ形注意力機制,以高效處理長上下文。該機制具有O(n)的時間和空間復雜度,在ArXiv和OpenWebText2數據集上,對于長達128k令牌的序列,LM-Infinite在文本生成中始終保持流暢性和高質量。StreamingLLM [425]使在有限長度注意力窗口上訓練的大型基礎模型能夠推廣到無限流解碼,且無需任何微調。PCW [330]將長上下文分割成塊或“窗口”,限制注意力機制僅在每個窗口內操作,并在窗口之間重用位置嵌入。LongNet [89]引入了擴張注意力機制,隨著距離的增加,指數級地擴大注意力范圍。這一創新使LongNet能夠有效地擴展Transformer,使其能夠處理長達10億令牌的序列。SLED(SLiding-Encoder and Decoder的縮寫)[160]重新利用并充分利用經過充分驗證的短文本預訓練語言模型。盡管SLED與比其大50倍的專業模型競爭時表現出色,但它不需要專門且昂貴的預訓練步驟。
?4.4 模型壓縮
模型壓縮是指旨在在不顯著降低性能的情況下減小模型大小的一系列技術。本綜述研究了大型基礎模型的四種主要模型壓縮類別:剪枝、知識蒸餾、量化和低秩分解,如圖15所示。
圖15:大語言模型的模型壓縮技術
?4.4.1 剪枝
剪枝技術是從神經網絡中刪除冗余或非必要的連接、神經元或層。其主要目標是減小模型大小,從而降低計算和存儲成本,同時保持模型的準確性。結構化剪枝和非結構化剪枝旨在在推理過程中減少權重,而不修改稀疏性。相比之下,上下文剪枝在推理期間根據模型的稀疏性動態選擇激活的神經元或層。
結構化剪枝
結構化剪枝通過消除整個結構組件(如連續參數組或層次結構)來壓縮大型基礎模型。這些結構組件的示例包括模型權重的通道或塊。結構化剪枝通常與微調相結合,以減輕準確性損失。LLM-Pruner [270]是一種與任務無關的結構化剪枝算法,它使用少量數據評估耦合結構權重的重要性。該方法根據梯度信息選擇性地刪除非必要的模型結構。LLM-Pruner結合LoRA在剪枝后恢復模型的準確性。LoRAPrune [472]是另一種基于LoRA的結構化剪枝方法,利用LoRA的權重和梯度進行重要性估計。該方法迭代地消除多余的通道和注意力頭,與LLM-Pruner相比取得了更好的結果。Lagunas等人[200]通過合并可變大小的塊改進了結構化剪枝技術。這種集成在微調期間應用于移動剪枝框架內,導致刪除整個模型組件,如注意力頭。結果是,剪枝后的模型比原始BERT模型速度提高2.4倍,大小減小74%。
結構化剪枝也應用于大型基礎模型的訓練中。Sheared LLaMA [422]采用端到端的方法刪除通道,涵蓋層、注意力頭、中間層和隱藏層。這個過程動態加載批次,并根據不同領域的損失為每個訓練批次改變模型結構。Sheared LLaMA展示了將LLaMA2-7B模型剪枝到13億參數的能力。AdaPrune [156]使用可轉置掩碼加速神經網絡訓練,在推理和訓練期間的矩陣乘法中實現2倍的加速,且準確性損失最小,并且AdaPrune允許在不同的結構約束之間無縫轉換。GUM [342]考慮神經元特異性,通過基于網絡組件的全局移動性和局部唯一性分數進行剪枝。這種方法旨在同時最大化敏感性和唯一性,有效地減少大型基礎模型權重中的冗余參數。PLATON [473]通過采用重要性估計的上置信界來處理模型剪枝過程中重要性分數的不確定性。這種方法確保了訓練的穩定性,并提高了泛化能力。
結構化剪枝通常與量化技術結合用于模型壓縮。DJPQ [403]將神經網絡壓縮視為一個統一的基于梯度的優化問題。DJPQ將基于變分信息瓶頸的結構化剪枝和混合位精度量化集成到一個可微損失函數中。SpAtten [392]代表了一種用于自然語言處理中高效注意力計算的算法 - 架構協同設計方法。該方法利用令牌和頭的稀疏性以及量化技術。通過采用新穎的級聯令牌和頭剪枝以及漸進式量化,SpAtten實現了DRAM訪問的顯著減少,從而在各種加速器和GPU上實現了令人矚目的加速和節能效果。
也有大量專門針對結構化剪枝的研究。Block-Skim [131]通過使用自注意力權重選擇性地處理重要上下文,優化提取式問答Transformer,通過在較低層早期剪枝不必要的位置來實現。類似地,DepGraph [101]引入了一種用于各種架構的全自動通用結構剪枝方法。該方法解決了結構耦合的挑戰,并使用基于范數的準則在各種模型上持續實現性能改進。
非結構化剪枝
與結構化剪枝不同,非結構化剪枝不考慮模型的固有結構。通常,它會刪除權重低于閾值的神經元,從而降低計算負載以壓縮模型。在部署非結構化剪枝時,需要專門的技術來實現模型存儲壓縮。SparseGPT [109]是一種一次性剪枝算法,無需重新訓練。SparseGPT將剪枝框架視為一個廣義的稀疏回歸問題,并使用近似稀疏回歸求解器來解決它。SparseGPT在像1750億參數的大型GPT模型上實現了60%的非結構化剪枝。Wanda [363]利用在大型基礎模型中出現的大幅值特征的觀察結果。Wanda通過按輸出修剪具有最小幅值乘以相應輸入激活的權重來引入稀疏性。UPop [352]是一個通用的視覺語言Transformer壓縮框架,它包含兩個關鍵組件:(1)在連續優化空間中從原始模型統一搜索多模態子網,這使得能夠在可壓縮模態和結構之間自動分配剪枝比率;(2)逐步搜索和重新訓練子網,保持搜索和重新訓練之間的收斂以實現更高的壓縮比。SSI是一種在圖像編輯期間優化深度生成模型的技術,通過選擇性地計算編輯區域來實現。利用原始圖像的緩存特征圖,SSI最小化冗余計算,從而為各種生成模型(如條件GAN和擴散模型)帶來顯著的加速。SIGE [352]旨在將計算減少轉化為標準硬件上的延遲減少,在對模型進行極少修改的情況下,為像DDPM、穩定擴散和GauGAN這樣的模型實現顯著的加速。
上下文剪枝
與結構化剪枝和非結構化剪枝不同,上下文剪枝動態選擇每一層的稀疏狀態,使其對硬件優化友好。Deja Vu [264]使用前一層的激活動態預測下一層的稀疏性。它確定MLP塊的哪些神經元和注意力塊的哪些頭需要保留。為了減輕這種預測器的開銷,Deja Vu異步預測下一層。PowerInfer [360]利用激活的稀疏性動態預測下一層的熱激活神經元,并在GPU上計算它們,而其他冷激活神經元在CPU上計算。與llama.cpp [121]相比,PowerInfer實現了高達11倍的加速,使400億參數的模型能夠在個人計算機上每秒輸出10個令牌。PowerInfer-2 [442]通過使用多態神經元引擎將PowerInfer擴展到智能手機上。它根據神經元激活和神經元集群級流水線技術動態調整計算,通過將激活的神經元分組為集群有效地優化稀疏計算,從而顯著減少開銷。Song等人[357]在小語言模型中使用基于梯度的歸因分數并對層間依賴進行校正,實現了精確的稀疏激活。
?4.4.2 知識蒸餾
知識蒸餾(KD)是將知識從復雜的、大型的模型(即教師模型)轉移到相應的簡單模型(即學生模型)以進行模型壓縮的方法。一般來說,根據是否考慮教師模型的內部結構,將KD應用于大型基礎模型有兩種方式:黑盒知識蒸餾和白盒知識蒸餾。
黑盒知識蒸餾
假設教師的大型基礎模型的內部結構不可見,這種方法使用大型基礎模型的API生成的提示 - 響應對來微調學生模型。其目標是使學生模型具備教師模型的能力。對于大型基礎模型,由于參數數量的增加而獲得的洞察力有助于實現強大的泛化能力。因此,可以利用上下文學習(ICL)[91]、思維鏈(CoT)[407]和指令跟隨(IF)[300]等技術,使學生模型全面學習大型基礎模型的能力。
ICL蒸餾通過將上下文學習目標與傳統語言建模目標相結合,將少樣本學習和語言模型能力從教師模型轉移到學生模型。在Meta-ICL [284]和Metal-ICL [63]中,語言模型在各種任務上使用上下文學習目標進行元訓練。這個過程使它們能夠通過上下文學習對未見任務進行微調。多任務ICT [155]引入了上下文學習蒸餾的概念,使用ICL目標和來自目標任務的示例對模型進行微調。該方法使用上下文學習對這些任務進行預測。雖然多任務ICT在性能上優于Meta-ICT,但它需要更多的多任務學習以及大型基礎模型生成的解釋。
IF可以增強模型的零樣本能力,其中任務描述作為模型微調的指令。Lion [173]是一種對抗性蒸餾架構,它促使大型基礎模型識別具有挑戰性的指令,并為學生模型創建新的復雜指令,從而增強學生模型的能力。LaMini-LM [417]是為資源密集型語言模型設計的,它開發了一個廣泛的指令集,包括現有的和新生成的指令,用于微調學生模型。
CoT在提示中引入中間推理步驟,引導語言模型逐步解決復雜的推理任務。黑盒知識蒸餾可以利用這種方法將知識從大型基礎模型轉移到較小的學生模型。Fu等人[111]通過用從大語言模型教師那里蒸餾出的CoT指導較小的模型,增強了它們的數學推理能力。Distilling Step-by-Step [147]在多任務框架中使用CoT從大型基礎模型中提取推理依據,為在多任務環境中訓練較小的模型提供額外指導。Fine-tune-CoT [145]使用零樣本CoT提示技術,通過隨機采樣從大型基礎模型生成多個推理解決方案,以指導學生模型的訓練。SOCRATIC CoT [353]訓練一個問題分解器和一個子問題求解器作為蒸餾模型。分解器將原始問題分解為一系列由求解器解決的子問題。DISCO [67]使用大型基礎模型生成擾動,由專門的教師模型過濾這些擾動,將高質量的反事實數據蒸餾到學生模型中。SCOTT [394]從一個大得多的教師模型中學習一個小的、自洽的CoT模型。SCOTT使用教師生成的推理依據,以反事實推理目標訓練學生語言模型,防止學生忽略這些推理依據。SCoTD [218]引入了一種稱為符號CoT蒸餾的方法,涉及使用未標記的數據實例從大語言模型中提取CoT推理依據。然后訓練一個較小的模型來預測采樣的推理依據和相關標簽。CoT Prompting [274]通過知識蒸餾探索這種推理能力向較小模型的可轉移性,在模型和數據集大小之間的推理能力上找到平衡。PaD [495]通過蒸餾大型基礎模型獲得推理任務的專用小模型。PaD使用程序輔助推理強化專用模型,并通過自動錯誤檢查幫助它們克服錯誤的推理步驟。
白盒知識蒸餾
與黑盒知識蒸餾相比,白盒知識蒸餾不僅可以訪問教師模型的輸出結果,還可以訪問其結構和中間結果。因此,白盒知識蒸餾可以更好地利用教師模型的結構,使較小的學生模型能夠復制和學習較大教師模型的能力。
Timiryasov等人[378]在包含1000萬個單詞的具有發展合理性的BabyLM數據集上,訓練了一個由GPT-2和小型LLaMA模型組成的集成模型。隨后,他們將其蒸餾成一個具有5800萬個參數的小型LLaMA模型,該模型在性能上超過了其教師模型以及一個未經過蒸餾訓練的類似模型。MiniLLM [130]從生成性較大語言模型中蒸餾出較小的語言模型。這種方法用反向Kullback-Leibler散度(KLD)目標替換了標準KD方法中的前向KLD目標,反向KLD更適合于生成性語言模型的KD,以防止學生模型高估教師分布的低概率區域。MiniLLM隨后推導出一種有效的優化方法來學習這個目標。GKD [15]不是僅依賴于一組固定的輸出序列,而是使用自我生成的輸出序列訓練學生模型。這是通過利用教師對這些自我生成序列的反饋來實現的。與監督式KD方法不同,GKD還提供了在學生和教師模型之間使用替代損失函數的靈活性。這種靈活性在學生模型缺乏模仿教師分布的表達能力的情況下非常有價值。KPTD [301]包括兩個階段:轉移集生成和在轉移集上的蒸餾。在第一階段,KPTD通過提示語言模型從實體定義生成延續來生成轉移集。隨后,KPTD更新模型參數,使學生的分布與基于轉移集的教師分布對齊。TED [237]使用任務感知過濾器在每一層對齊學生和教師的隱藏表示。這些過濾器旨在從隱藏表示中選擇與任務相關的知識。通過將重點縮小到特定任務的信息,TED旨在縮小兩個模型之間的知識差距,提高學生在目標任務上的性能。MixKD [238]是一個與數據無關的蒸餾框架,它結合了mixup,這是一種簡單而有效的數據增強技術。在MixKD中,鼓勵學生模型不僅從原始訓練示例中學習,還模仿教師在示例對的線性插值上的行為。這種額外的訓練策略旨在增強所得模型的泛化能力。DIME-FM [365]是一種用于將知識從大型視覺基礎模型轉移到較小的定制基礎模型的方法。這是通過使用相對少量的廉價、未配對的圖像和句子來實現的,值得注意的是,它不依賴于公共或較小規模的數據集。該方法在配對數據可能有限或不可用的場景中提供了一種有效的知識轉移方式。Li等人[227]從視覺和語言模態的角度提出了兩個原則,以增強學生的分布外泛化能力:通過更好地模仿教師的視覺表示空間,并仔細促進與教師在視覺 - 語言對齊方面的更好一致性;通過用信息豐富且細粒度的語義屬性豐富教師的語言表示,以有效區分不同標簽。
?4.4.3 量化
量化是一種成熟的模型壓縮方法,用于減輕存儲和計算需求。這種方法涉及將最初以傳統高精度浮點格式表示的權重和激活值,轉換為低比特高精度或整數表示。
公式(2)展示了將32位浮點張量\(X^{FP 32}\)轉換為N位整數張量\(X^{Int N}\)的典型過程。公式(3)展示了反量化過程。符號\(FP32\)表示縮放因子。
\[\begin{aligned} X^{Int N} & = quantize \left(N, X^{FP 32}\right) \\ & =Round\left(\frac{2^{N}}{absmax\left(X^{FP 32}\right)} × X^{FP 32}\right) \\ & =Round\left(c^{FP 32} × X^{FP 32}\right) \end{aligned}\]
\[X^{FP 32}= dequantize \left(c^{FP 32}, X^{Int N}\right)=\frac{X^{Int N}}{c^{FP 32}} (3)\]
在實際應用中,反量化過程并不普遍。深度神經網絡(DNN)引擎經常利用加速器的整數計算能力,直接對量化后的權重和激活值執行矩陣乘法,從而加速計算。例如,ggml [120]和英特爾的Transformer擴展[347, 159]利用CPU的單指令多數據(SIMD)指令集來執行整數矩陣乘法。類似地,bitsandbytes [85, 84]和QNN [1]已經為GPU和NPU實現了相應的整數矩陣乘法。
根據量化過程的時間,量化可以分為訓練后量化(PTQ)和量化感知訓練(QAT)。
量化感知訓練
QAT是指以一種使模型參數適應量化引入的低精度的方式來訓練量化模型。這個過程的主要目標是減輕由于量化而導致的精度損失。LLM-QAT通過利用預訓練模型通過無數據蒸餾生成樣本來解決大語言模型訓練數據獲取的問題。同時,它對權重、激活值和鍵值緩存進行量化,從而提高訓練吞吐量。LLM-QAT展示了生成具有4位精度的精確量化大語言模型的能力。QuantGPT [373]通過在自回歸預訓練期間納入來自全精度教師模型的對比蒸餾,并將logit信息蒸餾到量化的學生模型中實現了這一點。BitNet [393]開創了1位語言模型的QAT,使用1位權重和激活值訓練語言模型。EfficientQAT [60]是一種用于壓縮大語言模型的新穎量化技術。它由兩個連續階段組成:所有參數的塊級訓練(Block-AP),該階段通過塊級重建對每個Transformer塊中的所有參數順序進行量化感知訓練,以在不訓練整個大語言模型的情況下保持效率;第二階段,量化參數的端到端訓練(E2E-QP),使用量化模型進行初始化,然后僅對量化參數(步長)進行端到端訓練,通過固定量化骨干網絡和減少可訓練參數數量來提高效率。
由于大型模型中的參數數量通常達到數十億甚至數百億,QAT的訓練成本仍然相當可觀。一方面,大型基礎模型的QAT通常與知識蒸餾相結合以降低訓練成本,如LLM-QAT和QuantGPT等方法所示。另一方面,量化經常用于大型模型的微調過程中,如PEQA [420]、LoftQ [233]和QLoRA [86]中詳細描述的那樣,具體內容見§4.2.3。
訓練后量化
PTQ將訓練好的全精度模型轉換為低精度模型,而無需重新訓練。PTQ的優點是在不改變模型結構或無需重新訓練的情況下壓縮模型,從而降低模型的存儲和計算成本。由于其部署成本低,PTQ也是模型壓縮中最易于部署和廣泛應用的技術。然而,與QAT和蒸餾不同,PTQ缺乏通過訓練調整精度的反饋回路。與PTQ相關的研究通常側重于在壓縮模型時有效地保留權重/激活值中的相關信息。
PTQ可以分為兩類:僅權重量化和權重-激活聯合量化。
僅權重量化僅對大型基礎模型的權重進行量化。在大型基礎模型的權重量化中,有兩種主要方法來減輕量化誤差。
第一類方法涉及識別對準確性有顯著貢獻的權重中的異常值和重要權重,并對這些異常值進行特殊處理。例如,SpQR [87]識別異常值權重并以高精度保留它們,同時對其余權重進行量化。LLM.int8() [85]采用矢量化量化和混合精度分解來處理異常值,以實現高效推理。LLM.int8()在矩陣乘法中使用8位量化,有效地減少了推理期間的GPU內存使用。AWQ [243]通過保護模型中前1%的重要權重并利用每通道縮放來確定最佳縮放因子,從而減少量化誤差。OWQ [203]的分析表明,異常激活會放大量化誤差,它采用混合精度量化方案,對受激活異常值影響較大的權重應用更高精度的量化。SqueezeLLM [184]觀察到某些權重決定了最終模型的量化性能,并提出了一種非均勻量化方法來最小化這些敏感權重的量化誤差。SqueezeLLM通過利用損失的二階海森信息來識別量化敏感權重,并將量化點放置在這些敏感權重附近來實現這一點。
第二類量化減少方法基于更新權重的二階信息。GPTQ [110]采用層wise量化與OBQ [108]相結合,利用逆海森信息來更新權重。GPTQ將每個權重的比特寬度降低到3或4位,允許對具有1750億參數的GPT模型進行量化,同時最小化精度損失。QuIP [53]使用自適應舍入過程,最小化用于量化的二階代理目標。QuIP使用隨機正交矩陣對權重和海森矩陣進行有效的預處理和后處理,以確保權重和海森矩陣不相關,從而實現大型基礎模型的2位量化。
同時,某些量化方法在壓縮模型的同時可以實現計算加速。例如,llama.cpp [121]采用K-quant方法。K-quant量化使用大小為16×8的塊進行量化,每個塊總共包含16行。與QLoRA [86]的二次量化類似,為了進一步減少資源消耗,還有一個額外的FP16二次量化參數用于量化16個主要量化參數。llama.cpp表明,使用K-quant量化進行模型推理比使用原始FP16模型的推理速度大約快3 - 4倍。
權重-激活聯合量化對大型基礎模型的權重和激活值都進行量化。與權重量化類似,識別和處理權重和激活值中的異常值也有助于減少量化誤差。SmoothQuant [424]利用不同token的通道激活之間的相似性,并使用每通道縮放變換對權重和激活值進行量化。RPTQ [463]認識到不同通道之間存在顯著的范圍差異,對通道進行重新排序以進行量化,并將其集成到層歸一化和線性層權重中。OliVe [132]采用異常值-受害者對(OVP)量化并對異常值進行局部處理。Outlier Suppression+ [409]在Outlier Suppression [410]的基礎上進行改進,發現有害的異常值主要集中在特定通道中呈現不對稱分布。考慮到異常值的不對稱性和來自下一層權重的量化誤差,該方法進行通道級的平移和縮放操作。QLLM [250]通過自適應通道重組方法解決激活異常值的問題,并利用校準數據減輕量化引起的信息損失。LLM-FP4 [449]將權重量化為4位浮點數,提出每通道激活量化,并重新參數化額外的縮放因子作為權重的指數偏差。LLM-FP4成功地將LLaMA-13B中的權重和激活值都量化為僅4位,并且與全精度模型相比,精度損失僅為8.4%。ZeroQuant [451]結合層wise知識蒸餾和優化的量化支持來實現8位量化。ZeroQuant-V2 [450]引入低秩補償(LoRC)進行進一步優化。ZeroQuant-FP [421]支持FP4/FP8量化,與相應比特精度的整數量化相比,實現了卓越的性能。FlexRound [204]通過最小化量化值與全精度值之間的誤差來更新權重和激活值的量化尺度。ATOM [488]通過使用低比特運算符顯著提高服務吞吐量,并通過低比特量化大幅減少內存消耗。ATOM在4位權重-激活量化下,與FP16相比,端到端吞吐量提高了高達7.73倍,與INT8量化相比提高了2.53倍,同時保持相同的延遲目標。I-LLM [150]是一種用于大語言模型的新穎的僅整數完全量化PTQ框架。它開發了完全平滑塊重建(FSBR)來平滑激活值和權重的通道間變化。它還引入了動態僅整數矩陣乘法(DI-MatMul)來減輕由于token間變化引起的性能下降,并實現了完全整數矩陣乘法的動態量化。此外,它設計了DI-ClippedSoftmax、DI-Exp和DI-Normalization,通過位移動高效執行非線性操作,同時保持準確性。
基于旋轉的方法
為了有效地量化異常值,最近的研究采用了一種不同的方法,并揭示了一個有趣的特性:將權重矩陣乘以隨機旋轉矩陣可以有效地減少異常值并提高量化能力。直觀地說,由于隨機旋轉的統計特性,這種變換導致權重或激活值項的分布沒有異常值。由于旋轉矩陣可以從單位映射成對構建,并且可以集成到附近的權重中而不改變整體網絡輸出(這一特性稱為旋轉不變性),變換后的權重或激活值可以以較低的重建誤差進行量化,而不會產生額外的推理開銷。SpinQuant [262]通過使用Cayley SGD [214](一種用于優化正交矩陣的有效技術)來優化旋轉矩陣,以最小化量化網絡的最終損失,同時固定權重參數。這種優化不會改變全精度網絡的輸出,但會改進中間激活值和權重,使其更易于量化。QuaRot [24]有兩個階段。第一階段操作模型權重(全精度),并在模型的前向傳遞中插入兩個額外的Hadamard操作。第二階段默認使用GPTQ對權重進行量化,并使用簡單的舍入到最近值的方案對激活值進行實時量化。
在基礎模型(如ViT和BERT)的骨干網絡方面也有廣泛的量化研究。例如,BinaryBERT [294]和I-BERT [29]在低精度量化下為BERT實現了更高的準確性。Wang等人[401]利用操作符融合[293]、PTQ技術和結構化剪枝[200]來降低內存成本。他們還減少了DeiT-Tiny [381]的計算操作數量。Q-ViT [229]、I-ViT [236]和OFQ [253]在低精度量化下也為ViT實現了高準確性。Q-Diffusion [226]壓縮噪聲估計網絡以加快擴散模型的生成過程。
?4.4.4 低秩分解
低秩分解(LoRD)通過將給定的權重矩陣分解為兩個或更多較小的矩陣來近似大型基礎模型中的權重矩陣。對于一個\(m\times n\)的權重矩陣\(W\),分解表示為\(W = UV\),其中\(U\)是一個\(m\times k\)的矩陣,\(V\)是一個\(k\times n\)的矩陣,\(k\)遠小于\(m\)和\(n\)。\(U\)和\(V\)的乘積近似原始權重矩陣,顯著減少了參數數量和計算開銷。
如§4.2.3所述,低秩分解已廣泛應用于大型基礎模型的微調方法中,如LoRA。LoRD在實現顯著壓縮能力的同時對性能影響最小,突出了其在大型基礎模型壓縮中的潛力[180]。為了降低支撐大型基礎模型的高維token嵌入的維度,TensorGPT [438]提出了一種基于張量列車分解(TTD)的方法,其中每個token嵌入被視為一個矩陣乘積態(MPS),可以以分布式方式高效計算。通過TensorGPT,嵌入層的壓縮率可高達38.40倍。LoSparse [234]采用低秩近似來壓縮相干且有表現力的元素。該方法使用迭代訓練來評估列神經元在剪枝過程中的重要性得分,展示了優于傳統迭代剪枝技術的性能。Saha等人[338]通過隨機低秩和低精度分解來壓縮矩陣,實現了高達每矩陣坐標一位的激進壓縮比,同時超過或保持了傳統壓縮技術的性能。ViTALiTy [80]是一個算法 - 硬件協同設計的框架,用于提高ViT的推理效率。它使用一階泰勒注意力來近似點積softmax操作,利用行均值中心化作為低秩組件來線性化注意力塊的成本。
?5 資源高效系統
訓練和服務系統是實際應用中大型基礎模型的關鍵。本節從四個方面研究支持資源高效的大型基礎模型的系統研究:(1)分布式訓練;(2)聯邦學習;(3)云端服務;(4)邊緣服務。圖16概述了資源高效系統的分類,表5總結了該領域廣泛使用的開源框架。
值得注意的是,由于大語言模型的成功及其巨大的參數規模,本節介紹的大多數系統和技術都是專門為大語言模型設計的。

圖16:資源高效系統概述
|框架|描述|云|邊緣|訓練|推理|

?5.1 分布式訓練
分布式訓練系統是訓練大型基礎模型的基礎,涵蓋預訓練和微調階段。預訓練相較于其他大型基礎模型訓練過程,計算和通信需求更為密集,需要大量資源。微調則廣泛用于將通用模型轉化為特定用例的專用模型。鑒于大型基礎模型的大規模和新的執行模式,為其設計資源高效的系統已成為研究熱點。我們將優化分布式訓練系統的技術進行分類,涵蓋彈性、并行性、通信、存儲和異構GPU等方面。此外,專家混合(MoE)已成為訓練超大型模型的一種趨勢,針對此也有多種專門的方法,這些將在本小節末尾詳細介紹。
?5.1.1 彈性
大型基礎模型訓練規模和時長的增加導致失敗率上升,凸顯了彈性訓練的重要性[412]。大型基礎模型的容錯方法主要有四種形式。第一,Varuna和Gemini [25, 405]通過實施檢查點來重啟訓練,從而實現彈性訓練。Varuna [25]專為在低帶寬網絡、頻繁搶占的商用集群中訓練而設計,具有用戶友好的特性。而Gemini [405]通過內存中的檢查點加快了故障恢復速度。第二,Bamboo [375]利用冗余計算,即一個節點為自身和鄰居節點執行計算。Bamboo避免了恢復過程中的開銷,但在訓練期間引入了額外的計算開銷。第三,激活檢查點技術[480, 197],該技術避免存儲激活值,在需要時重新計算,處于檢查點和冗余計算兩種方法之間。第四種方法是部分層恢復,如Oobleck [162]所示。在發生故障時,受影響的流水線可以使用其他副本的部分層進行恢復,與使用整個檢查點相比,這種方法的開銷更小。
?5.1.2 并行性
并行性在分布式訓練中起著關鍵作用,尤其對于大型基礎模型。訓練大型基礎模型通常采用三種并行方式。數據并行(DP)是將數據分布到不同的工作節點,以擴展分布式訓練。DeepSpeed ZeRO [326]通過分割模型狀態來優化內存使用。模型并行(MP)則是在層內(張量并行 [288])或層間(流水線并行 [201, 299])對模型進行分區。張量并行(TP)可以提高訓練速度,但會帶來更多的通信開銷。流水線并行(PP)通過填充空閑時間來提高GPU利用率。廣度優先流水線并行 [201]設計了循環放置和廣度優先調度,以實現高GPU利用率和低成本。PipeFisher [299]為空閑時間分配額外工作,以進一步提升效率。Mobius [105]專為微調設計,采用新穎的PP方案和異構內存管理。序列并行(SP)[223, 197]是針對長序列訓練的趨勢而設計的,當訓練一個句子超出單個工作節點的內存容量時,SP將長序列劃分為多個塊,并分配到不同的工作節點上。在實際應用中,這些并行方式通常結合使用。Galvatron [282]可以自動確定最有效的混合并行策略。
?5.1.3 通信
大型基礎模型的大規模和復雜并行性導致了顯著的通信開銷。我們將通信優化分為兩類:直接減少通信時間和隱藏通信。一些研究探索了并行感知的通信壓縮 [355]和異構感知的流量減少 [480]。現有工作通常通過統一計算和通信的抽象 [163]、分解原始通信集合 [396]或設計新穎的流水線調度 [496],將通信與計算重疊進行。
?5.1.4 存儲
大型基礎模型需要大量的存儲資源,例如用于存儲模型狀態的GPU內存、用于模型分析的主機內存以及用于數據集和檢查點的磁盤空間。為了提高效率,人們提出了各種方法來緩解存儲限制。卸載是減少GPU內存壓力的常用方法。ZeRO-Offload [333]將數據和計算卸載到CPU,以便在單個GPU上訓練大型模型。而FlashNeuron [26]則將選擇性數據卸載到固態硬盤(SSD),以提高吞吐量。此外,Behemoth [187]用高容量、低性能的NAND閃存取代低容量、高性能的高帶寬內存(HBM),以實現大型基礎模型的數據并行訓練。
?5.1.5 異構GPU
對于大多數人和企業來說,在專用的高性能GPU集群上進行訓練是不可行的。而且,即使在專用的GPU集群中,異構GPU也普遍存在。因此,一些研究嘗試在異構GPU上訓練大型基礎模型。Hetpipe [307]利用低性能GPU和波同步并行技術來加速訓練,并在異構GPU之間同步參數。Whale [165]引入了一種硬件感知的負載均衡算法,以加快訓練速度。
?5.1.6 MoE
MoE是擴展深度神經網絡模型的一種有效方法。優化MoE訓練系統的目標主要是提高效率和可擴展性。現有工作主要針對MoE訓練中的動態相關機制、并行性和通信進行優化。MegaBlocks [115]利用稀疏原語來處理動態路由和負載不均衡的計算。Brainstorm [72]是一個通過抽象動態性和基于配置文件的優化來處理動態深度神經網絡的框架。FlexMoE [291]專注于動態專家管理和設備放置問題。此外,Tutel [158]設計了動態自適應并行和流水線策略。SmartMoE [466]通過結合離線和在線機制,優化并行策略以實現高效的MoE訓練。Janus [251]將通信從以專家為中心的范式轉變為以數據為中心的范式,以加快MoE訓練中的通信速度。
?5.2 聯邦學習
數據是大型基礎模型的基礎。聯邦學習(FL)已成為使用來自多個源的數據訓練基礎模型的主要方法,同時確保數據隱私 [136, 446, 175]。鑒于此,人們投入了大量精力開發專門針對基礎模型的高效聯邦學習系統 [176, 224]。最近的一些研究聲稱,大語言模型預訓練的未來在于聯邦學習 [341, 171]。如圖16所示,我們將現有的聯邦大語言模型系統分為四個主要類別:框架與基準、基于參數高效微調(PEFT)的方法、模型分解和零階優化。
?5.2.1 框架與基準
在基礎模型的聯邦學習框架和基準開發方面已經取得了顯著進展。這些開源的聯邦學習框架通常與基礎模型集成,提供一套API,以促進各種高效的聯邦學習算法。例如,Flower [3, 37]支持在樹莓派5上對OpenAI的Whisper進行聯邦微調。FedML [139, 242]推出了FedLLM版本,與DeepSpeed [329]等流行的機器學習平臺兼容。FATE [100]旨在通過參數高效微調方法提高FedLLM的訓練效率。
Federatedscope-llm [198]提供了一個用于在聯邦環境中微調大型基礎模型的綜合包,涵蓋了廣泛的PEFT算法和各種加速/資源高效的操作符。FedIT [469]通過指令調優開發了一個聯邦GPT,簡化了新算法的集成,以利用邊緣設備上的各種指令。Gao等人 [117]研究了將自監督學習與聯邦學習相結合,重點是使用wav2vec 2.0 [28]進行語音表示。Woisetschl?ger等人 [414]評估了現有邊緣計算系統在聯邦學習中對大型基礎模型的支持能力和潛力,并概述了提高邊緣計算效率的步驟。Zhao等人 [485]提出將隱私保護技術(包括聯邦學習、差分隱私和基于模擬器的調優)與參數高效微調(PEFT)技術結合使用,以在不損害數據隱私的情況下優化大型基礎模型。
?5.2.2 基于PEFT的方法
參數高效微調(PEFT)是一種為特定下游任務定制大型基礎模型的策略。該過程包括凍結大型基礎模型的骨干,并僅更新一小部分額外參數。PEFT旨在減少訓練時間和通信成本,這是聯邦學習中的一個關鍵挑戰。FedAdapter [45]提出逐步修改適配器配置,以有效地確定最有效的設置。FeS [44]將僅偏差提示學習與偽標記相結合,采用結構化課程,在最小的數據標記情況下實現了較高的準確率。FP-FL [170]引入了軟標簽增強的聯邦調優,結合LoRA調優,以減少計算和通信開銷。FedPrompt [484]探索了提示學習的額外優勢,特別是其允許更大的差分隱私預算的潛力。FedPepTAO [52]提出了一種有效的部分提示調優方法,并進行自適應優化,在非獨立同分布(non-IID)數據分布的情況下提高了性能和效率。Malaviya等人 [275]分析了不同非IID場景和不同客戶端比例下各種PEFT方法的有效性。Petals [40]促進了大型模型的協作微調,使多個用戶能夠通過互聯網整合資源并應用參數高效調優方法,如適配器或提示微調。
?5.2.3 模型分解
將大型基礎模型分解為幾個子模型是實現實際聯邦學習的一種簡單而有效的方法。FedBFPT [399]采用一種策略,即僅在客戶端訓練BERT的部分層,參與訓練的層數逐漸增加。FedOBD [65]采取了一種創新方法,將大規模模型分解為語義塊,使聯邦學習參與者能夠選擇性地上傳量化塊到聯邦學習服務器進行聚合。FedBERT [377]引入了一種聯邦分割學習方法。在這個框架中,服務器為所有客戶端更新Transformer層,而客戶端在本地訓練嵌入層和頭部層。FedPerfix [362]探索了ViT模型中部分個性化的具體情況。他們進行實證評估,以衡量每種層類型對數據分布的敏感性。基于自注意力層和分類頭是ViT中最敏感組件的見解,FedPerfix使用插件來促進從聚合模型到單個客戶端的信息傳遞,以實現個性化。SplitLoRA [245]為基于分割學習的大語言模型參數高效微調提供了一個開源基準,為推進聯邦大語言模型微調的研究工作奠定了基礎。
?5.2.4 無反向傳播方法
雖然反向傳播(BP)仍然是大型基礎模型的標準訓練范式,但它在聯邦學習中的應用具有挑戰性,主要是因為在邊緣設備上計算成本高且內存開銷大。零階優化是一種替代優化方法,它僅基于函數值進行操作,不需要顯式訪問基于BP的梯度信息。本質上,它在不依賴反向傳播的情況下優化大型基礎模型。FwdLLM [433]是一項開創性的工作,將零階優化集成到聯邦學習中。該方法使用前向梯度作為無偏梯度估計。然而,為每個參數獲得精確的梯度估計需要大量的擾動。為了解決這個問題,FwdLLM結合了PEFT方法,僅更新基礎模型的內在維度。FwdLLM使得在標準移動設備上進行十億規模大語言模型(如LLaMA)的聯邦訓練成為可能。FedKSeed [320]引入了一種新穎的策略,通過使用梯度累加器來避免前向梯度傳輸。該方法分階段存儲標量梯度信息,并根據初始模型參數在本地計算最新的梯度。Fed-BBPT [246]采用黑盒調優方法,在本地生成高質量的指令,而無需存儲整個預訓練模型。BBTv2 [364]雖然不是專門為聯邦學習設計的,但它提出了一種無梯度的分治算法,將基礎模型分解為低維子空間。
?5.3 云端服務
大型基礎模型已廣泛應用于許多實際場景,如搜索引擎、聊天機器人和編程工具。由于這些應用吸引了大量用戶并產生了大量請求,基礎模型的服務系統需要高效運行以滿足用戶需求。為此,人們提出了許多基礎模型服務系統,以在不犧牲模型準確性的情況下提高服務效率。在本節中,基礎模型主要指大語言模型。
與基礎模型訓練過程不同,基礎模型服務過程呈現出自回歸模式。具體來說,在處理請求時,大語言模型會逐個生成token,直到生成一個特殊的EOS(序列結束)token。每個token生成迭代都將所有先前的token(包括輸入token和先前生成的輸出token)作為輸入。
為了減少迭代之間的冗余計算,LightSeq [398]提出了鍵值緩存(KV cache)來緩存基礎模型的中間狀態,以減少冗余計算。具體來說,LightSeq緩存大語言模型中注意力層的鍵值對。因此,大語言模型的生成過程分為兩個階段:預填充階段和解碼階段。預填充階段處理請求的所有輸入token,并將中間狀態存儲在KV緩存中。隨后的解碼階段僅需要處理與新生成的token相關的計算,并相應地更新KV緩存。我們將現有的基礎模型服務系統優化分為三類:計算優化、內存優化和在新興部署平臺上的基礎模型服務。
?5.3.1 推理加速
為了在單個加速器上加速計算,內核優化是一種常見的方法。為基礎模型訓練設計的FlashAttention [76]和FlashAttention-2 [75]可以簡單地用于加速預填充階段。然而,由于解碼階段的獨特特性,Flash-Decoding [78]提出了一種特定的NVIDIA CUDA內核來加速解碼階段。FlashDecoding++ [146]通過優化解碼階段的softmax操作和平坦通用矩陣乘法(flat GEMM)操作,進一步提高了Flash-Decoding的性能,并提供了對AMD GPU的支持。DeepSpeed-Inference [21]、ByteTransformer [468]和谷歌的PaLM服務系統 [314]也針對小批量場景優化了GPU/TPU,這種場景在基礎模型服務中很常見,但在基礎模型訓練中很少見。當將基礎模型推理擴展到大量GPU時,許多工作 [21, 314]利用各種并行策略的組合,如數據并行、流水線并行、張量并行和專家并行。這些工作在多個現代加速器(如GPU/TPU)上高效地提供基礎模型推理服務。
請求批處理和調度是另一組提高請求處理計算效率的方法。鑒于基礎模型的自回歸性質,各種請求可能具有不同長度的輸入token和輸出token。僅僅通過填充將不同長度的請求批處理在一起,會導致基礎模型服務系統在填充的token上消耗計算資源。為了解決這個問題,Orca [458]提出了選擇性批處理和迭代級調度,以迭代為粒度對不同長度的請求進行批處理,以增加最大批大小。通過這些技術,提前完成的請求可以在不等待后期完成請求的情況下返回給用戶,新到達的請求可以在一次迭代完成后立即執行。許多工作也改進了請求批處理的調度。Punica [58]進一步提出了一種分組通用矩陣乘法(GEMM)內核,以對針對不同LoRA模型的請求進行批處理。FlexGen [351]提出了一種請求調度算法,以減輕卸載對單GPU上對延遲不敏感的基礎模型服務性能的影響。FastServe [415]提出了迭代級搶占式調度和主動KV緩存交換,以減輕隊頭阻塞對分布式基礎模型服務性能的影響。SARATHI [17]和DeepSpeed-FastGen [2]將預填充階段的計算拆分為小塊,并將這些小塊與解碼階段進行調度,以減輕預填充階段對大型基礎模型服務性能的影響。Splitwise [308]根據預填充階段和解碼階段不同的計算和內存需求,將它們拆分到不同的機器上。
?5.3.2 內存節省
大語言模型在服務過程中消耗大量內存。為了減少大語言模型服務的內存消耗,許多工作提出了各種內存管理技術。對于大語言模型的參數和激活值,當GPU內存不足時,DeepSpeed-Inference [21]和FlexGen [351]將激活值或模型參數卸載到動態隨機存取存儲器(DRAM)或非易失性內存(NVMe)中。
KV緩存是大語言模型服務中的另一個重要內存組件。為了減少KV緩存的內存消耗,vLLM [199]采用了塊級按需內存分配機制,僅在需要時為中間狀態分配內存。vLLM還提出了一種新的操作符Paged Attention,以支持在使用這種內存分配機制時的注意力操作。S-LoRA [350]將這一想法擴展到統一分頁,以同時管理多個LoRA適配器。SGLang [490]進一步向用戶公開提示編程原語,借助RadixAttention在所有請求之間實現更復雜的KV緩存管理。
?5.3.3 新興平臺
典型的基礎模型服務系統通常部署在配備大量同質高性能服務器的數據中心。由于這些高性能服務器的稀缺性和成本,也有一些基礎模型服務系統專門為其他部署平臺設計。SpotServe [281]嘗試在搶占式實例(spot instances)上提供基礎模型服務,這些實例是低成本但不可靠的云實例。SpotServe動態調整其并行策略,以適應搶占式實例搶占的影響。對于在異構GPU上的基礎模型服務,HexGen [172]使用進化算法在異構GPU上搜索高性能的基礎模型放置和并行策略。
?5.4 邊緣服務
隨著數據隱私問題日益受到關注,以及對響應延遲的嚴格要求,在移動設備上本地運行大型基礎模型(即設備端推理)最近引起了學術界和工業界的關注。因此,許多設備端推理優化技術應運而生。
?5.4.1 邊緣 - 云協作
解決移動設備資源稀缺問題的一種常見策略是通過強大的邊緣/云服務器協作來加速密集型推理。例如,EdgeFM [444]查詢大型基礎模型,并根據特定的邊緣模型定制知識和架構進行適配,使動態邊緣模型能夠確保低延遲,同時與原始大型基礎模型的準確性接近。
?5.4.2 僅邊緣
另一個主要研究方向是直接優化設備端推理。近期有一項針對設備端語言模型的研究[432] 。我們將主要技術總結如下:
設備端MoE模型
提出在推理時僅執行路由稀疏參數的設備端MoE模型,這可以減少計算量(詳見§3.2)。EdgeMoe [454]發現推理過程中專家需動態加載到內存的問題。為解決該問題,此方法提出按專家調整比特寬度,在可接受的精度損失下減小專家參數大小,節省參數加載時間。專家管理功能可預測未來將激活的專家,以便EdgeMoe進行預加載,減少I/O開銷。PC-MoE [194]基于專家激活具有時間局部性這一關鍵觀察,提出參數委員會機制,智能維護使用中的關鍵專家子集,以降低資源消耗。
內存優化
由于大型基礎模型通常依賴大量參數,而設備端內存資源稀缺(例如8GB),在設備上進行大型基礎模型推理面臨 “內存墻” 挑戰。為解決此問題,LLMCad [429]利用推測解碼[209],可將大部分工作負載卸載到較小的內存駐留草稿模型。LLMCad進一步提出令牌樹生成和驗證、自適應回退策略以及推測生成流水線,以減少驗證次數,并在驗證過程中利用空閑處理器提高生成速度。PowerInfer [360]依賴大型基礎模型的運行時稀疏性,即只有熱神經元在不同輸入中持續激活。為此,PowerInfer將熱激活神經元預加載到GPU以實現快速訪問,而冷激活神經元在CPU上計算,從而顯著降低GPU內存需求和CPU - GPU數據傳輸量。PowerInfer-2 [442]專注于智能手機上的大型基礎模型。它利用基于神經元集群的計算和分段神經元緩存,將熱神經元預加載到內存以實現快速訪問,冷神經元按需加載,從而減少內存使用并最小化I/O瓶頸.
I/O優化
由于參數大小的增長速度快于邊緣設備內存的增長速度,從磁盤動態加載參數到內存不可避免。STI [133]發現加載參數的時間遠長于計算時間。為解決此問題,STI提出在加載過程中根據參數重要性動態調整權重比特寬度,在最大推理精度下最小化加載開銷。Large FMs in a flash [20]通過對閃存存儲進行細粒度管理,減少從閃存傳輸到內存的數據量,并以更大、更連續的塊讀取數據,解決了這一問題。
?內核優化
計算資源在設備上同樣至關重要且有限。先前的研究[483]實現了首個基于32位整數的視覺Transformer邊緣內核,并采用訓練后僅整數量化技術加速推理過程。該方法還為Transformer中的激活和歸一化操作引入范圍約束量化技術,以在數據范圍和推理精度之間進行權衡。mllmNPU [430]利用移動NPU實現快速的大語言模型預填充。它解決了大語言模型推理與NPU設計之間的一些固有語義差距。
大語言模型作為系統服務
近期出現了將單個強大的大語言模型(或基礎模型)部署到移動設備操作系統中的趨勢,即大語言模型即服務(LLMaaS)。由于大語言模型具有世界知識和上下文學習能力,這種范式完全可行。由于內存中僅需一個大語言模型權重實例,可防止設備內存被特定應用模型耗盡。通過統一的模型架構和操作符集,大語言模型服務可以更好地利用系統級調度增強功能(如批處理或優先級隊列)和硬件加速器(如GPU、DSP或NPU)。行業示例包括谷歌的Android AICore,這是集成在Android操作系統中的設備端大語言模型服務,被GBoard智能回復和Pixel語音記錄器等應用使用。蘋果和英特爾的產品中也可觀察到類似的范式。LMS [456]在移動設備上提供了這樣的大語言模型即服務,并給出了具體的系統設計,如應用級API和有狀態調用方法。ELMS [457]進一步指出了這種范式中的一個關鍵挑戰,即如何彈性化單個大語言模型以滿足第三方應用所需的各種服務水平目標(SLOs)。
?6 結論與未來方向
本綜述全面、系統地概述了近期關于資源高效的大型基礎模型的文獻。我們首先介紹了流行基礎模型(包括大型、視覺和多模態模型)的初步背景和成本分析。然后深入探討了模型架構、算法和系統設計,以實現更具資源效率的大型基礎模型生命周期。未來,該領域的研究將繼續(甚至更加)至關重要,因為縮放定律保證了隨著模型越來越大,人工智能將更強大,前景廣闊。這類研究也是高度跨學科的,涉及多個計算機科學領域,如機器學習、自然語言處理/計算機視覺/語音、網絡、云計算、邊緣計算等。
資源高效的大型基礎模型的研究機會非常多,特別是在以下方面:
(1) 云邊混合部署:為了實現無處不在、保護隱私且高可用的通用智能,許多基礎模型最終將下沉到靠近用戶的設備上[437, 434, 435, 477]。已經有初步嘗試將LLaMA - 7B部署到智能手機和個人電腦上。殺手級應用包括個人助理/智能體[235, 411]、多模態信息檢索[211]等。未來,基礎模型能夠在設備上運行的規模和速度將成為硬件供應商商業模式中的關鍵競爭力。
(2) 利用模型稀疏性:隨著模型規模增大,對于給定任務,模型的激活比例會變小。最近的文獻[264]發現,即使是密集訓練的非MoE模型在運行時也表現出激活稀疏性,可利用這一特性減少推理時間和內存占用。我們認為,利用模型和激活稀疏性將是實現可持續模型規模擴展的有前途的方向。可能會出現比MoE更高效的稀疏架構。
(3) 大型基礎模型即服務:在云和設備上,大型基礎模型正在統一深度神經網絡生態系統[461]。最終,它將成為一種通用服務,就像如今的網絡和數據庫一樣被調用。一方面,這為硬件 - 算法協同設計和優化提供了機會;另一方面,它在系統和基礎設施設計中對調度、負載平衡以及安全與隔離提出了新的挑戰。
(4) 將智能體作為整體系統進行優化:未來,基礎模型(尤其是大語言模型)將作為構建智能體的關鍵組件[235, 411]。其效率不應僅在單個大語言模型服務中考慮;相反,算法和系統設計需要適應特定的智能體工作流程。例如,一個智能體系統可能需要多個基礎模型協同工作,它們之間存在內在的邏輯依賴。在這個過程中,為每個任務選擇合適的基礎模型,并在給定的硬件資源上進行調度以最大化智能體性能,其設計空間巨大。
(5) 實用的隱私保護基礎模型:隨著上傳到云端用于基礎模型處理的用戶數據量不斷增加,隱私問題的嚴重性也相應升級。現有方法包括聯邦學習、同態加密和分離學習。雖然這些方法在理論上可行,但仍然面臨顯著的性能挑戰,阻礙了它們在實際中的大規模部署。一個有前途的方向是開發專門為大型基礎模型設計的創新隱私保護技術,或改進現有方法,以有效地平衡隱私和性能。
(6) 理解縮放定律:縮放定律推動了大型基礎模型的成功,但它似乎也是輕量級基礎模型的一個基本限制——小規模模型不太可能比大規模模型具有更高的智能水平。理解縮放定律背后的機制和理論將有助于解釋(并有望突破)這一限制。同時,設計具有更好甚至最優縮放性能的新型模型架構將是一個值得深入研究的方向。