由機器之心報告。
編輯:張倩、賈琦
通過去掉權重矩陣中的一些行和列,LLAMA-2 70b中的引數數量減少了25%,模型可以保持99%的零樣本任務效能,同時計算效率大大提高。 這就是 Microsoft slicegpt 的強大之處。大型語言模型 (LLM) 通常有數十億個引數和數萬億個用於訓練的資料令牌,訓練和部署成本非常高。 因此,通常使用各種模型壓縮技術來降低其計算要求。
一般來說,這些模型壓縮技術可以分為四類:蒸餾、張量分解(包括低秩分解)、剪枝和量化。 其中,修剪方法已經存在了一段時間,但許多方法需要在修剪後進行恢復微調 (RFT) 以保持效能,這使得整個過程成本高昂且難以擴充套件。
為了解決這個問題,蘇黎世聯邦理工學院和Microsoft的研究人員提出了一種名為slicegpt的方法。 slicegpt 的核心思想是通過從權重矩陣中刪除行和列來減少網路的嵌入維度,同時保持模型效能。
研究人員表示,借助 Slicegpt,他們可以在短短幾個小時內使用單個 GPU 壓縮大型模型,即使在沒有 RFT 的情況下,也能在生成和下游任務中保持有競爭力的效能。 目前,該**已被ICLR 2024接受。
*標題:Slicegpt:通過刪除行和列來壓縮大型語言模型
*鏈結:修剪方法的工作原理是將 LLM 中權重矩陣的某些元素設定為零,並(有選擇地)更新矩陣的周圍元素以進行補償。 結果是乙個稀疏模式,這意味著在神經網路前向交付所需的矩陣乘法中可以跳過一些浮點運算。
計算速度的相對提公升取決於稀疏程度和稀疏模態:結構更合理的稀疏模態會帶來更多的計算增益。 與其他修剪方法不同,slicegpt 會切割(切斷! 權重矩陣的整行或整列。 在切割之前,它們會對網路進行轉換,使結果保持不變,但對切割過程有輕微影響。
結果是更小的權重矩陣和在神經網路塊之間傳遞的更小的訊號:它們減少了神經網路的嵌入維度。
下面的圖 1 將 slicegpt 方法與現有的稀疏性方法進行了比較。
通過大量實驗,作者發現,對於LLAMA-2 70B、OPT 66B和PHI-2模型,slicegpt可以去除高達25%的模型引數(包括嵌入),同時分別保持密集模型%和90%的零樣本任務效能。
切片處理的模型可以在更少的 GPU 上執行,並且執行得更快,而無需任何額外的優化:在 24GB 消費級 GPU 上,作者將 LLAMA-2 70B 的總推理計算量減少到密集模型的 64%; 在 40GB A100 GPU 上,他們將其降低到 66%。
此外,他們還提出了乙個新概念,即 Transformer 網路中的計算不變性,這使得切片成為可能。
Slicegpt 解釋
slicegpt 方法依賴於 Transformer 架構中固有的計算不變性。 這意味著,只要在下乙個元件中撤消正交變換,就可以將正交變換應用於乙個元件的輸出。 作者觀察到,在網路塊之間執行的 rmsnorm 操作不會影響轉換:這些操作是可交換的。
在系列中,作者首先描述了如何在與 RMSNORM 連線的 Transformer 網路中實現不變性,然後解釋了如何將使用 LayerNorm 連線訓練的網路轉換為 RMSNORM。 接下來,他們引入了一種使用主成分分析(PCA)計算每層變換的方法,將塊之間的訊號投射到其主成分上。 最後,他們描述了次要主成分的移除如何與被切斷的網路的行或列相對應。
Transformer 網路的計算不變性
正交矩陣用 q 表示:
請注意,將向量 x 乘以 q 不會改變向量的範數,因為在這項工作中,q 的維數始終與變換器 d 的嵌入維數匹配。
假設 x 是變壓器的乙個塊的輸出,由 rmsnorm 處理,並以 rmsnorm (x) 的形式輸入到下乙個塊。 如果在 rmsnorm 之前插入具有正交矩陣 q 的線性層,在 rmsnorm 之後插入 q,則網路將保持不變,因為訊號矩陣的每一行都乘以 q、歸一化並乘以 q。 這裡是:
現在,由於網路中的每個注意力或 ffn 塊在輸入和輸出上都是線性化的,因此額外的 q 可以被吸收到模組的線性層中。 由於網路包含殘差連線,因此 Q 還必須應用於所有先前層(一直到嵌入)和所有後續層(一直到 LM 頭)的輸出。
不變函式是輸入轉換不會導致輸出變化的函式。 在本文的示例中,任何正交變換 q 都可以應用於變壓器的權重,而無需更改結果,因此可以在任何變換狀態下執行計算。 作者將其稱為計算不變性,並在下面的定理中對其進行了定義。
定理1:設sum為連線到rmsnorm的變壓器網路線性層的權重矩陣,並作為對應的偏置(如果有的話),w embd和w head為嵌入矩陣和head矩陣。 設 q 為維數為 d 的正交矩陣,則以下網路等價於原始變壓器網路:
複製輸入偏置和磁頭偏置:
演算法 1 可用於證明轉換後的網路計算的結果與原始網路相同。
LayerNorm 變壓器可以轉換為 RMSNORM
Transformer 網路的計算不變性僅適用於 RMSNORM 所連線的網路。 在處理使用 LayerNorm 的網路之前,作者通過將 LayerNorm 的線性塊吸收到相鄰塊中,將網路轉換為 RMSNORM。
圖 3 顯示了 Transformer 網路的這種轉換(見圖 2)。 在每個塊中,作者將輸出矩陣 W 乘以均值減法矩陣 m,這考慮了後續層規範中的平均減法。 輸入矩陣 w in 預先乘以前一層規範塊的刻度。 必須從均值中減去嵌入矩陣 w embd,並且必須按與最後一層範數成比例重新縮放 w 頭。 這是操作順序的簡單更改,不會影響網路輸出。
每個塊的轉換
現在,Transformer 中的每個 LayerNorm 都已轉換為 RMSNORM,您可以選擇任何 Q 來修改模型。 作者最初的計畫是從模型中收集訊號,使用它們來構建正交矩陣,然後刪除部分網路。 他們很快發現網路中不同塊的訊號不對齊,因此他們需要對每個塊應用不同的正交矩陣 q。
如果每個塊使用的正交矩陣不同,則模型不會改變,證明方法與定理 1 相同,但演算法 1 第 5 行除外。 正如您在這裡看到的,殘餘連線和塊的輸出必須具有相同的旋轉。 為了解決這個問題,作者通過對殘差進行線性變換來修改殘差連線。
圖 4 顯示了如何通過對殘差連線進行額外的線性操作來以不同的方式旋轉不同的塊。 與權重矩陣的修改不同,這些附加操作無法預先計算,並且會給模型增加少量 (d d) 開銷。 儘管如此,刪除模型還是需要這些操作,您可以看到整體速度確實越來越快。
為了計算矩陣q,作者使用了PCA。 他們從訓練集中選擇乙個校準資料集,在模型中執行它(在將 layernorm 操作轉換為 rmsnorm 之後),並提取該層的正交矩陣。 更準確地說,如果他們使用變換後的網路的輸出來計算下一層的正交矩陣。 更準確地說,如果是校準資料集中第 i 個序列的第 i 個 rmsnorm 模組的輸出,則計算:
並將 q 設定為 C 的特徵向量,按遞減特徵值排序。
切除
主成分分析的目標通常是獲得資料矩陣 x 並計算低維表示 z 和近似重建:
其中 q 是 的特徵向量,d 是 d d 小缺失矩陣(包含 d d 同位素矩陣的 d 小列),用於刪除矩陣左側的一些列。 從某種意義上說,qd 是具有最小化的線性對映,因此重建是 l2 最優的。
當將 PCA 應用於塊之間的訊號矩陣 x 時,作者從未將 n d 訊號矩陣具體化,而是將刪除的矩陣 d 應用於構建矩陣之前和之後的操作。 在上面的運算中,矩陣已乘以 q。 作者刪除了 w in 的行以及 w out 和 w embd 的列。 他們還移除了插入殘餘連線的矩陣的行和列(見圖4)。
實驗結果
生成任務
作者評估了 wikitext-2 資料集中由 slicegpt 和 sparsegpt 修剪的一系列不同大小的 opt 和 llama-2 模型的效能。 表 1 說明了不同修整級別後模型的複雜性。 與LLAMA-2模型相比,slicegpt在應用於OPT模型時表現出優異的效能,這與作者基於模型頻譜分析的假設一致。
slicegpt 的效能將隨著模型大小的增加而增加。 在所有 LLAMA-2 系列型號的 25% 修剪下,SparseGPT 2:4 模式不如 Slicegpt。 對於 opt,它可以在 2 的除法中找到在除 7b 模型外的所有模型中,30% 切除比例模型的稀疏性優於 2:4 的稀疏性。
零樣本任務
作者使用 Piqa、Winogrande、Hellaswag、ARC-E 和 ARCC 五個任務來評估 SlicegPT 在零樣本任務上的效能,並使用 LM 評估工具作為評估中的預設引數。
圖 5 顯示了裁剪模型在這些任務中取得的平均分數。 圖的上行顯示了 wikitext-2 中 slicegpt 的平均準確率,下行顯示了羊駝中 slicegpt 的平均準確率。 從結果中,我們可以觀察到與生成任務相似的結論:OPT模型比LLAMA-2模型更適應壓縮,並且模型越大,削波後精度下降越不明顯。
作者在像 phi-2 這樣的小模型中測試了 slicegpt 的效果。 裁剪後的 Phi-2 模型與裁剪後的 LLAMA-2 7B 模型相當。 最大的 OPT 和 LLAMA-2 模型可以被有效壓縮,當 30% 從 OPT 模型中去除 66b 時,slicegpt 可以管理僅損失幾個百分點。
作者還進行了恢復微調(RFT)實驗。 使用 LoRa 對剪裁的 LLAMA-2 和 PHI-2 模型進行了少量 RFT。
實驗結果如圖6所示。 可以發現,Wikitext-2和Alpaca資料集之間的RFT結果存在顯著差異,並且該模型在Alpaca資料集中表現出更好的效能。 作者認為,造成差異的原因是羊駝資料集中的任務更接近基線任務。
對於最大的 LLAMA-2 70B 模型,羊駝資料集中的平均準確率為 743%,原始密集模型的精度為766%。裁剪後的型號 LLAMA-2 70B 保留了大約 51 個6b 引數,吞吐量顯著增加。
作者還發現,PHI-2無法從Wikitext-2資料集中的剪裁模型中恢復原始精度,但它可以在Alpaca資料集中恢復幾個百分點的精度。 Phi-2 已被修剪到 25% 並經過了 RFT,在 Alpaca 資料集中的平均準確率為 652%,原始密集模型的精度為722%。裁剪後的模型保留 2 個2b 引數,28b 90 模型的精度3%。這表明即使是小型語言模型也可以被有效地修剪。
基線吞吐量
與傳統的剪枝方法不同,slicegpt 在矩陣 x 中引入了(結構化的)稀疏性:整個列 x 被切掉,從而降低了嵌入維度。 該方法不僅提高了切片壓縮模型的計算複雜度(浮點運算次數),而且提高了資料傳輸效率。
在 80GB H100 GPU 上,將序列長度設定為 128,並將序列長度批量加倍,以找到最大吞吐量,直到 GPU 記憶體耗盡或吞吐量下降。 作者將裁剪後的 25% 和 50% 模型的吞吐量與原始密集模型的 80GB H100 GPU 上的吞吐量進行了比較。 修剪了 25% 的模型最多達到 1吞吐量提高 55 倍。
使用 GPU 時,最大模型的吞吐量為 50%,最大模型的吞吐量為 313x 和 1大幅增長了 87 倍。 這意味著,在固定數量的 GPU 下,裁剪模型的吞吐量將達到 626 次和 375倍。
經過 50% 的修剪後,雖然 slicegpt 在 wikitext2 中保留的複雜度低於 sparsegpt 2:4,但吞吐量遠遠超過了 sparsegpt 的方法。 對於 13B 型號,較小型號的吞吐量也可能在記憶體較少的消費級 GPU 上得到改善。
推理時間
作者還研究了使用 slicegpt 壓縮的模型的端到端執行時。 表 2 比較了 OPT 66B 和 LLAMA-2 70B 型號在 Quadro RTX6000 和 A100 GPU 上生成單個令牌所需的時間。 在RTX6000 GPU 上,模型的 25% 削波會導致推理速度提高 16-17%; 在 A100 GPU 上,速度提高了 11-13%。 對於 LLAMA-2 70B,RTX6000 GPU 所需的計算量比原始密集模型少 64%。 作者將這種改進歸因於這樣乙個事實,即 slicegpt 採用了更小的權重矩陣,用緻密的核心代替了原來的權重矩陣,這在其他修剪方案中是不可能的。
作者指出,在撰寫本文時,他們的基線 sparsegpt 2:4 沒有提供端到端的效能提公升。 取而代之的是,他們通過比較 transformer 層中每個操作的相對時間,將 slicegpt 與 sparsegpt 2:4 進行了比較。 他們發現,對於大型模型,slicegpt (25%) 在速度增益和混淆方面與 sparsegpt (2:4) 具有競爭力。
計算成本
所有 LLAMA-2、OPT 和 PHI-2 型號都可以在單個 GPU 上在 1 到 3 小時內進行切片。 如表 3 所示,通過恢復微調,可以在 1 到 5 小時內壓縮所有 lms。
更多資訊請參考原文**。