核心概念
本文提出了一種基於上下文并行技術的推論方法,可以有效地擴展百萬級別 Token 的大型語言模型推論,並在多節點 GPU 環境下實現近乎線性的延遲縮減。
摘要
基於上下文并行技術實現百萬級別 Token 推論的擴展性研究
論文概述
本論文探討了如何利用上下文并行技術來提升大型語言模型在處理百萬級別 Token 時的推論效率。作者們針對多輪對話式推論場景中常見的完整預填充、部分預填充和解碼三個階段,提出了一系列優化策略,包括負載均衡分片、環狀傳遞 Key-Value 嵌入和查詢嵌入的算法,以及動態選擇算法的啟發式方法。實驗結果表明,該方法能夠有效降低延遲、提升 Key-Value 緩存利用率,並在多節點 GPU 環境下實現良好的可擴展性。
主要貢獻
- 多輪預填充和解碼的支持: 針對多輪對話場景,提出了負載均衡分片策略和并行算法,以有效管理持久化的 Key-Value 緩存,並在多輪預填充和解碼過程中充分利用緩存數據。
- 延遲優化: 開發了環狀傳遞 Key-Value 嵌入和查詢嵌入的兩種無損算法,並設計了啟發式方法,根據上下文長度和 Key-Value 緩存命中率動態選擇最優算法,以最小化延遲。
- 計算和内存負載均衡: 提出了針對輸入 Token 和 Key-Value 緩存條目的負載均衡分片算法,確保在處理不同輸入長度的批次請求時,計算和 Key-Value 緩存内存能够在各個并行處理單元之間均勻分配。
系統設計
模型并行化
論文采用了上下文并行技術,將輸入 Token 沿序列長度維度分佈到多個 GPU 上,並結合張量并行和流水線并行技術,實現模型在多 GPU 環境下的高效并行化。
推論預填充和解碼
針對多輪對話式推論場景,論文將推論過程分為完整預填充、部分預填充和解碼三個階段,並針對每個階段的性能特點進行了分析和優化。
環狀傳遞算法
論文實現了環狀傳遞 Key-Value 嵌入和查詢嵌入的兩種算法,並設計了啟發式方法,根據上下文長度和 Key-Value 緩存命中率動態選擇最優算法,以最小化通信成本和延遲。
實驗結果
論文在 Grand Teton 平台上進行了實驗,結果表明,該方法能夠有效降低延遲、提升 Key-Value 緩存利用率,並在多節點 GPU 環境下實現良好的可擴展性。
總結
本論文提出了一種基於上下文并行技術的推論方法,可以有效地擴展百萬級別 Token 的大型語言模型推論,並在多節點 GPU 環境下實現近乎線性的延遲縮減。該方法為提升大型語言模型在實際應用中的性能和可擴展性提供了新的思路和解決方案。
統計資料
Llama3 405B 模型,具有 126 個 Transformer 層、16384 模型維度、128 個查詢頭和 8 個鍵值頭。
在 16 個節點的 GTT 平台上,使用 FP8 精度的 Llama3 405B 模型,可以實現 77 秒內完成 100 萬個 Token 的預填充。
在 16 個節點的 GTT 平台上,使用 FP8 精度的 Llama3 405B 模型,可以實現 3.8 秒內完成 12.8 萬個 Token 的預填充。
在 16 個節點的 GTT 平台上,使用 FP8 精度的 Llama3 405B 模型,實現了 93% 的并行效率和 63% 的 FLOPS 利用率。