• <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • 生成式人工智能/大語言模型

    動態內存壓縮技術

    盡管大語言模型(LLMs)作為通用 AI 工具取得了成功,但其對計算資源的高需求使其在許多真實場景中的部署具有挑戰性。模型的大小和對話狀態受到可用高帶寬內存的限制,限制了可服務的用戶數量和最大對話長度。

    目前,兩種最熱門的 LLM 架構是 Transformers 和選擇性狀態空間模型 (SSMs),它們位于頻譜的另一端:

    • Transformer:對話狀態由序列中每個元素的不同表示組成,其大小會迅速爆炸。
    • SSMs:將整個序列壓縮為單個表示形式,由于容量有限,可能會忘記過去的信息。對話狀態的壓縮可釋放內存,對于在相同內存限制下運行更大的模型、一次處理更多的 tokens 或降低延遲至關重要。

    為此,NVIDIA 的研究人員開發了一項稱為動態內存壓縮(Dynamic Memory Compression,DMC)的新技術,該技術可以大幅提高 LLMs 部署的效率,并在不會耗盡內存的情況下將其視野擴展到更長的序列。

    DMC 開啟了第三種方式,即訓練 Transformer 模型以自適應壓縮對話狀態并實現所需的壓縮率。這樣可以在不替換熟悉的 Transformer 架構的情況下顯著減少對話狀態大小。DMC 不需要從頭開始訓練,因為可以通過少量額外訓練來改裝現有模型,這比容易出錯的無訓練方法更可靠。

    哪些因素會影響 LLM 推理性能?

    LLM 推理包含兩個階段:

    • 預填充:用戶查詢被輸入。
    • 自動回歸生成:響應一次生成一個 token。

    在生成過程中,為執行自注意力操作,Transformers 會為緩存中的每個 token 附加一對表示 (鍵值對或 KVP)。系統會為每個層和注意力頭存儲不同的 KVP。

    因此,KVP 緩存會隨序列長度按比例增長。由于 KVP 緩存必須與 LLM 權重一起裝入 GPU 內存,因此 KVP 緩存可能會占用顯存的大部分空間,甚至耗盡顯存。

     A graph describing the rising memory usage the longer the sequence gets.
    圖 1、在批量大小為 32 的 bfloat16 精度下,Llama-2-7B 推理期間的 GPU 內存使用情況

    此外,KVP 緩存越大,執行單個推理步驟所需的時間越長。這是因為計算注意力分數是受內存限制的運算。每個查詢都有自己要加載的 KVP 緩存。

    注意力層或 FFN 層的線性投影的情況則不同,如果 GPU 同時并行處理許多查詢,則所有查詢都必須將 每個權重矩陣從 HBM 加載到 SRAM 中一次

    過去的研究試圖通過 量化 KVP 緩存的表征、 共享 注意力頭或從其中 移除令牌 來減小 KVP 緩存的大小。但是,這些方法會降低原始性能,因為它們會從內存中刪除信息,而不會改變原始 LLM 的行為。

    動態顯存壓縮?

    動態內存壓縮 (DMC) 是一種在推理期間壓縮 KV 緩存的簡單方法,不會導致性能下降。模型使用以下公式分別決定每個 token、層和頭,以及是否應將新的鍵值對附加到 KV 緩存中 (就像在普通 Transformer 中一樣),還是累加到最后一個:

    k_i = \alpha k_{i-1} + k_{new_i}

    這個方程是 DMC 的核心,可將密鑰的子序列轉換為特定的前綴和,這讓人聯想到 xLSTM 或 RWKV 等熱門 SSM。

    在推理過程中,alpha 的值嚴格是二進制的。當 \alpha=1?時,令牌會在不擴展 KVP 緩存的情況下直接求和,實現壓縮行為。平均決策頻率決定了 DMC 的壓縮率。

    A gif showing the difference between a vanilla transformer and a Dynamic Memory Compression model that decides if the cache should be extended or merged with the previous cache.
    圖 2. 在推理期間在普通 Transformer (左) 和支持 DMC 的模型 (右) 中擴展 KVP 緩存

    在普通模型中,緩存一次擴展一個 KVP。借助 DMC,決策變量可確定是否應擴展緩存,還是應將新的緩存對與 KVP 緩存中的最后一個緩存對合并。

    DMC 的一個關鍵組成部分是 改造 過程,該過程教會了 LLM 這種行為:

    • 使用 2 – 8%的原始訓練數據混合訓練預先存在的 LLM (例如 Llama 系列的 LLM)。
    • 初始化決策模塊,以便始終將 KVP 附加到 KVP 緩存中
    • 通過對新配對與追蹤配對的平均值施加壓力,逐漸過渡到 DMC。在改裝過程中,目標壓縮率從 1x 提升到所需水平。
    • 達到目標壓縮率后,進行修復,以完成改裝和整合的最后步驟。

    決定是否附加或合并是獨立的。要使用梯度下降訓練 LLMs,您可以通過 Gumbel-Sigmoid 分布持續松此決策,從而在訓練期間生成部分附加和部分合并的內存元素。

    為了模擬 token 無法進入中間合并階段的推理時間 DMC (圖 2),您可以增強 Transformers 的因果關系掩碼,以越來越多地阻止對這些狀態的訪問。

    Two images: the left one showing an additive attention mask used in DMC, the right one showing why the mask is necessary.
    圖 3、用于部分令牌遮罩的加法注意力遮罩 (左),以及需要在訓練期間遮罩部分累加令牌的推理時場景 (右)

    總體而言,此過程可讓您在繼續預訓練期間避免出現困惑峰值。事實上,我們發現 像通用查詢注意力(general query-attention) 這樣的方法在繼續預訓練之前會顯著改變模型架構,很難恢復原始性能。

    成果?

    對于我們進行基準測試的所有下游應用,包括 真實性 (MMLU) 常識問答和編碼 (HumanEval),DMC 的性能可與普通模型相比。

    至關重要的是,DMC 可以與量化和 GQA 等其他 KVP 緩存縮減方法結合使用。

    ? DMC 壓縮率 MMLU (真實性) 常識問答 HumanEval (編碼)
    Llama-2 -7B 1 倍 44.6 70.5 14.0
    Llama-2 -7B 4 倍 44.2 70.2 16.5
    Llama-2 -7B 8 倍 41.8 70.1 16.5
    Llama-2 -13B 1 倍 54.5 73.5% 17.5
    Llama-2 -13B 4 倍 54.2 73.2 22.0
    Llama-2 -13B 8 倍 52.1 73.3% 21.3%
    Llama-2 -70B+GQA 8 倍 68.8 78.0 29.6
    Llama-2 -70B
    *GQA
    16 倍 68.8 77.9 29.9%
    表 1. 原始模型(1 倍壓縮率)和啟用 DMC 的模型推理期間的下游任務準確性
    ? Llama-2 -7B+DMC 4x Llama-2-7B + DMC 4x (8 位量化) Llama-2 -7B+DMC 8x Llama-2-7B + DMC 8x (8 位量化)
    (8-bit quantization)
    MMLU (真實性) 44.2 44.6 41.8 41.7
    表 2、支持 DMC 的模型的 MMLU 分數,并將 FP8 量化應用于權重、激活函數和 KVP 緩存

    在某些情況下,性能甚至會得到提升。我們推測這是由于緩解壓縮的現象,例如 中間丟失 的 tokens,不過還需要更多證據來證實這一點。

    對話狀態的壓縮釋放了內存,而內存可用于容納更大的批量大小。由于模型受內存限制,這通常幾乎直接轉化為同等的吞吐量增加。

    例如,選擇適合內存的最大批量大小 (在 NVIDIA H100 GPU 上壓縮 8 倍) 意味著每秒生成的令牌比 Vanilla 模型多 700%。

    在達到一定的壓縮率后,計算注意力分數會受到計算限制,因此延遲可能會增加,同時提供更多的查詢。

    Two graphs comparing inference throughput on both the A100 and H100.
    圖 4、4K 令牌序列的最后 1K 令牌生成時的推理吞吐量平均值

    在圖 4 中,x 軸顯示了適用于 Vanilla LLM 以及 DMC 2x、4x、6x 和 8x 模型的單個 GPU (7B 和 13B) 或兩個具有張量并行度 (70B) 的 GPU 上顯存的最大批量大小。

    如果批量大小保持不變,延遲會降低。在實踐中,調整批量大小有助于優化延遲吞吐量權衡。

    A graph describing the latency change as throughput increases. The larger the throughput, the greater the latency change.
    圖 5. 推理吞吐量 – 延遲 Pareto 前端,通過使用 DMC 8x 改變批量大小來繪制圖表

    在圖 5 中,在特定批量大小下,模型受內存限制,可以相同延遲處理其他示例。除此之外,模型的計算能力也越來越受限。我們在 NVIDIA H100 GPU 上對 4K 令牌序列的最后 1K 令牌的生成進行了測量。

    由于能夠以不同的速率靈活地壓縮不同的注意力頭和層,DMC 還揭示了有關 LLMs 內部功能的新見解。例如,頂層受到的壓縮最多,因為其 KVP 是最冗余的。

    A gif showing the compression ratios for each layer and head during training.
    圖 6、訓練期間頭部 (x 軸) 和各層 (y 軸) 的平均壓縮比熱圖

    在圖 6 中,頭部按最高壓縮級別到最低自上而下級別排列。

    結束語?

    DMC 有望進一步推動 LLM 的發展。

    它提供了一種自適應顯存機制,該機制介于 Transformer 中 的線性顯存和 SSM 的常量顯存之間,并能更好地在容量和空間之間進行權衡。這在不犧牲質量的情況下提高了 Transformer LLM 的吞吐量,并且能夠在相同的硬件限制條件下適應更長的上下文。這對于通過思維鏈實現推理時擴展至關重要,因為這需要生成長序列的 token。

    DMC 還開辟了新的途徑,通過重新利用現有架構,以經濟實惠的方式創建原型和生產級 LLM。 使用現成的代碼 改造您自己的 Transformer LLM,或者閱讀 論文 以深入了解 Dynamic Memory Compression。

    有關更多信息,請參閱以下資源:

    致謝?

    在此,我們要感謝 Mostofa Patwary 和 Szymon Migacz 所提供的幫助,并感謝 Przemys?aw Strzelczyk、Daniel Korzekwa 和 Bryan Catanzaro 在發表此論文時提供的有益討論和支持。這項工作得到了 UKRI Centre for Doctoral Training in Natural Language Processing 的部分支持,該中心由 UKRI (grant EP/S022481/1) 和愛丁堡大學信息學學院以及哲學、心理和語言科學學院提供資金。

    ?

    +2

    標簽

    人人超碰97caoporen国产