你正在參加 OpenAI 的研究科學家面試。 面試官問: 「你會如何將 LLM 的上下文長度從 2K 擴展到 128K 令牌?」 你:"我會在具有 128K 上下文的更長文檔上微調模型。" 面試結束。 這是你錯過的:
擴展上下文窗口不僅僅是關於更大的矩陣。 在傳統的變壓器中,將標記擴展8倍會因為注意力的平方複雜性而使內存需求增加64倍。請參考下面的圖片! 那麼,我們該如何管理呢? 繼續...👇
1) 稀疏注意力 它通過以下方式限制注意力計算到一部分標記: - 使用局部注意力(標記僅關注其鄰近標記)。 - 讓模型學習應該關注哪些標記。 但這在計算複雜性和性能之間存在權衡。
在 ModernBERT 中使用了類似的想法。 → 每第三層進行全局注意力 → 否則進行局部注意力(128 個標記) 結果: - 序列長度增長 16 倍 - 性能大幅提升 - 最具記憶體效率的編碼器 簡單卻強大。
這裡有一個來自論文的直觀解釋: 想像一下你在讀一本書。對於你所讀的每一句話,你是否需要完全了解整個情節才能理解大部分內容(全局注意)? 還是說,對當前章節的了解就足夠了(局部注意),只要你偶爾回想一下它對主要情節的重要性(全局注意)? 在絕大多數情況下,答案是後者。
2) 快速注意力 這是一種快速且節省記憶體的方法,保留了傳統注意力機制的精確性,即它使用全局注意力,但效率更高。 整個想法圍繞著優化GPU記憶體內的數據移動。 讓我們來了解一下!
一些背景細節: - 線程是最小的執行單位。 - 幾個線程形成一個區塊。 另外: - 區塊中的線程共享一種稱為 SRAM 的快速(但稀缺)記憶體。 - 所有區塊共享一種稱為 HBM 的全局記憶體(豐富但緩慢)。 查看這個 👇
注意將大型矩陣在 SRAM 和 HBM 之間移動: 計算 QK: - 將矩陣分配給線程 - 計算,然後 - 將產品發送到 HBM 計算 softmax: - 將產品分配給線程 - 計算,然後 - 將輸出發送到 HBM 對所有層重複此操作。 查看這個 👇
閃電注意力涉及硬體級的優化,利用 SRAM 來快取中間結果。 這樣可以減少冗餘的移動,提供高達 7.6 倍於標準注意力方法的速度提升。 查看這個 👇
3) DeepSeek 稀疏注意力 (DSA) DeepSeek 的新 V3.2 模型引入了 DeepSeek 稀疏注意力 (DSA),將複雜度從 O(L²) 降低到 O(Lk),其中 k 是固定的。 它是如何運作的: 一個輕量級的 Lightning Indexer 為每個查詢評分哪些標記實際上是重要的。 少量的頭,運行在 FP8,計算成本低。 然後一個選擇機制僅檢索前 k 個鍵值條目。 關鍵的見解是,每個查詢僅選擇 2048 個標記,無論上下文長度如何。 因此,昂貴的注意力計算僅在這個小子集上進行,而不是整個 128K 序列。
在128K上下文中,預填充成本從每百萬個標記約$0.65降至約$0.35。而解碼成本從約$2.4降至約$0.8。 而性能保持不變。在一些長上下文基準測試中,V3.2的實際得分更高。 稀疏注意力並不新鮮。但在不損失質量的情況下使其運作是困難的。 還有哪些其他技術可以增加LLM的上下文長度?
152.61K