微軟的這項研究讓開發者可以在單卡機器上以 10 倍的速度處理超過 1M 的輸入文字。
大型語言模型 (LLM) 已進入長上下文處理時代,其支援的上下文視窗從先前的 128K 猛增到 10M token 層級。 然而,由於注意力機制的二次複雜度,模型處理輸入提示(即預填充階段)並開始產生第一個 token 可能需要幾分鐘時間。導致首個 token 生成的時間過長,從而嚴重影響了用戶體驗,這也大大限制了長上下文 LLM 的廣泛應用。 舉例來說(如圖2a 所示),在單台裝有A100 的機器上為LLaMA-3-8B 提供服務時,如果提示有30 萬個token,模型需要6 分鐘才能完成預填滿( pre-filling)階段,如果提示增加到100 萬個token,這個數字將增加到30 分鐘。 自註意力計算的開銷佔到了總預填充延遲的 90% 以上,這使其成為 LLM 處理長上下文時的主要瓶頸。現有的加速預填方法在應用於長上下文 LLM 時通常無法保持可接受的準確性或效率。 為了解決上述問題,來自微軟、薩里大學的研究者提出了一種旨在加速長序列處理預填充的稀疏計算方法:MInference( Milliontokens Inference )。
- 論文地址:https://arxiv.org/pdf/2407.02490
- 論文主頁:https://hqjiang.com/minfer
- 論文主頁:https://hqjiang.com/minferfer.html.com Pre-filling for Long-Context LLMs via Dynamic Sparse Attention
MInference 可以直接應用於現有LLM,無需對預訓練設定進行修改或額外的微調。
透過對各種下游任務(包括InfiniteBench、RULER、PG-19 和Needle In A Haystack)以及模型(包括LLaMA-3-1M、Yi-200K、GLM-4-1M、Phi-3- 128K 和Qwen2-128K)進行評估,實驗證明MInference 可有效將A100 上的預填充推理延遲降低多達10 倍,同時保持準確度。
使用 MInference 1.0 ,長上下文中 LLM(如 LLaMA準確度更高。 作者提出了 MInference,這個名字反映了他們希望在一台 A100 機器上實現百萬(million)。 MInference 是一種無需訓練的高效方法,用於基於動態稀疏注意力的長上下文 LLM 的預填充階段。 研究者認為注意力,特別是在長上下文中,是稀疏和動態的,即在不同的輸入中,稀疏模式有很大的不同。這種動態稀疏性呈現出三種適用於所有輸入的獨特空間聚合模式:A 形(A-shape)、垂直 - 斜線(Vertical-Slash)和塊狀 - 稀疏(Block-Sparse)。 MInference 首先使用內核感知稀疏模式搜尋演算法為每個頭部離線確定最佳動態稀疏模式,如演算法 1 所示。在推理過程中,它會根據頭部的模式動態逼近動態稀疏指數,如演算法 2、3 所示。最後,作者使用最佳化的 GPU 核心執行高效的動態稀疏注意力計算,大大減少了長上下文 LLM 的預填階段延遲。 例如,對於「垂直 - 斜線」模式,作者首先利用最後一個 Q 和 K 之間的注意力計算來估計垂直線和斜線的最佳指數。然後,他們利用動態稀疏編譯器 PIT 和 Triton 來建立垂直 - 斜線 FlashAttention 內核,加速注意力計算。對於 A 形、垂直 - 斜線和塊狀 - 稀疏模式,作者首先在註意力計算中使用 Q 和 K 的均值池。利用均值池和 MatMul 的交換屬性,可以估算出塊狀 - 稀疏指數。然後,他們使用 Triton 構建塊稀疏 FlashAttention 內核,加速注意力計算。有關內核的詳細實現,請參閱附錄 C.4 和程式碼。 作者在一系列場景中測試了MInference,包括QA、編碼、基於檢索的任務、multihop 、QA 。 RULER 基準包括幾個複雜的 multi-hop 或 multi-needle 任務,有效地反映了 LLM 的實際上下文視窗大小。如表 1 所示,MInference 有效地保留了 LLM 的實際上下文視窗處理能力,甚至將實際上下文視窗大小略微擴展到 32K。 作者也使用平均 token 長度為 214K 的 InfiniteBench 在更廣泛的任務中測試了 MInference,如表 2 所示。與 SoTA 基準相比,MInference 在所有任務中都始終保持了良好的效能。值得注意的是,在更具挑戰性的檢索任務(如 KV 檢索任務)中,所有基準都無法做出準確預測,準確率低於 1.2%。但是,MInference 成功地保留了處理動態 KV 對檢索的能力。 為了進一步評估不同上下文長度和關鍵資訊在提示中不同位置時的性能,作者使用「大海撈針」任務測試了各種模型和方法。如圖 1 所示,MInference 在不同的模型、上下文視窗和提示資訊位置下都表現良好,與原始模型相比,其效能保持不變甚至略有提高。在 LLaMA-3-8B 和 GLM-4-9B-1M 的情況下,MInference 在高達 1M 的上下文視窗中實現了完全綠色的效能。相較之下,即使在 70K 上下文視窗中,StreamingLLM 和 InfLLM 在提示的中間段效能也會下降到 20% 以下。 作者也使用 PG-19 在語言模型任務中測試了 MInference,其中包括多達 100k 的 token。As shown in Figure 2, MInference effectively maintains the perplexity of LLaMA-3-8B and Yi-9B-200K, while all baselines experience varying degrees of perplexity degradation. Furthermore, StreamingLLM using dilation and stride configurations better maintains perplexity performance compared to standard StreamingLLM. Latency and Sparse Mode in the Kernel Figure 3 shows the three attention modes proposed in this article and the micro-benchmark results of FlashAttention. It can be seen that Vertical-Slash is the slowest of the three modes, but under a 1M context window, it still achieves a 13x acceleration compared to FlashAttention. Figure 4 shows the sparse index in the Vertical-Slash header kernel. Vertical lines are calculated using 1x64 blocks via PIT FlashAttention, while diagonal lines are calculated using 64x64 blocks via block-level FlashAttention. Reference link: https://hqjiang.com/minference.html
以上是單卡A100實現百萬token推理,速度快10倍,這是微軟官方的大模型推理加速的詳細內容。更多資訊請關注PHP中文網其他相關文章!