技術指南

分類預填和解碼服務

服務架構,將大型語言模型推理分為兩個獨立的階段——預先填充和解碼——並在不同的 GPU 池上運行它們。

概述

服務架構,將大型語言模型推理分為兩個獨立的階段——預先填充和解碼——並在不同的 GPU 池上運行它們。這很重要,因為這兩個階段具有相反的硬體需求,將它們強製到同一台機器上會浪費容量並損害延遲。

分解預填充和解碼服務是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。

深入探討

當法學碩士回答時,它分兩個階段進行。 Prefill 一次讀取整個提示並建立鍵值(KV)快取;這是一個巨大的、平行的、受運算限制的突發,使 GPU 的數學單元飽和。然後,解碼一次產生一個令牌,每一步都會讀取整個 KV 快取——記憶體頻寬受限、運算量較輕的細流。一起運行時,長預填充會拖延每個人的解碼(隊頭阻塞),並且對兩者進行批次處理會產生幹擾。分解將預先填充放在一個 GPU 池上,並在另一個 GPU 池上進行解碼,透過 NVLink 或 InfiniBand 等快速互連在它們之間傳輸 KV 快取。每個池都經過獨立調整和擴展,提高了吞吐量,平滑了尾部延遲,並讓操作員同時達到了嚴格的第一個令牌時間和每個輸出令牌時間目標。

技術洞察

這兩個階段的瓶頸不同。 Prefill 並行處理所有提示標記,因此它的 FLOP 會隨著提示長度而縮放,並且會最大化張量核心。解碼是自回歸的:每個新令牌都需要一次前向傳遞,從 HBM 重新讀取完整的 KV 緩存,因此吞吐量由記憶體頻寬而不是計算來控制。分解透過調整大小、批次甚至為每個池選擇不同的並行性來利用這一點,然後將 KV 快取從預填充工作線程傳送到解碼工作線程。

掌握分類預填和解碼服務

服務架構,將大型語言模型推理分為兩個獨立的階段——預先填充和解碼——並在不同的 GPU 池上運行它們。這很重要,因為這兩個階段具有相反的硬體需求,將它們強製到同一台機器上會浪費容量並損害延遲。分解預填充和解碼服務是一個技術構建塊,會大規模影響模型品質、基礎設施成本、延遲和可靠性。為了建立深入的理解,請將分類預填和解碼服務視為一種操作模型,而不是單一功能:定義所需的結果,澄清假設,並將系統可以可靠地執行的操作與仍需要專家判斷的操作分開。

在實踐中,使用分解預填充和解碼服務的強大團隊可以根據可靠性和成本來優化架構、資料和基礎設施選擇。他們記錄明確的成功標準,根據實際數據和工作流程進行測試,並根據觀察到的失敗模式而不是一次性基準測試勝利進行迭代。這就是理論理解轉變為跨產品、政策和營運的持久能力的地方。

多年來,架構決策決定著效能和營運成本。同時,優化一個基準測試可以隱藏更廣泛的系統弱點。最具彈性的方法是將實驗速度與治理規則結合:運行試點、捕獲證據、發布決策日誌,並隨著模型行為、使用者期望和監管要求的發展不斷更新保障措施。

戰略影響

多年來,架構決策決定著效能和營運成本。

多年來,架構決策決定著效能和營運成本。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

更好的工程選擇可以減少生產中的可靠性事故。

更好的工程選擇可以減少生產中的可靠性事故。在高品質部署中,這會轉化為可衡量的操作規則、所有權邊界和定期審查儀式,以便團隊可以增強信心,而不是擴大模糊性。

分類預填和解碼服務的未來

預計分解將成為生產堆疊中的預設設定。 DistServe、Splitwise 和 Mooncake 等系統使其普及,而 vLLM 和 NVIDIA Dynamo 現在提供分類模式。研究正在推動 KV 快取傳輸最佳化、跨請求的快取池和重用、流量變化下預填充/解碼比率的動態重新平衡,以及與前綴快取和分塊預填充的更緊密整合。隨著上下文視窗成長到數百萬個令牌,分離這些階段對於經濟高效、低延遲的服務變得越來越重要。

現實世界的實施

聊天助理將長文件提示路由到計算量大的預填充集群,然後從內存優化的解碼集群流式傳輸回复,以保持打字延遲平穩。

NVIDIA Dynamo 和 vLLM 允許操作員部署單獨的預填和解碼工作群組,因此突發的長提示不會凍結後續的生成。

Mooncake(由 Moonshot AI 的 Kimi 使用)分解了預填充和解碼,並添加了分散式 KV 快取池以大規模減少冗餘的即時重新計算。

程式碼完成服務專用於短提示的小型預填充池和大型解碼池,因為大部分成本來自串流許多輸出代幣。

實施模式

實踐中的分類預填和解碼服務

聊天助理將長文件提示路由到計算量大的預填充集群,然後從內存優化的解碼集群流式傳輸回复,以保持打字延遲平穩。

聊天助理將長文件提示路由到計算量大的預填充集群,然後從內存優化的解碼集群流式傳輸回复,以保持打字延遲平穩。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會得到更好的結果。

實踐中的分類預填和解碼服務

NVIDIA Dynamo 和 vLLM 允許操作員部署單獨的預填和解碼工作群組,因此突發的長提示不會凍結後續的生成。

NVIDIA Dynamo 和 vLLM 允許操作員部署單獨的預填和解碼工作群組,這樣一連串的長提示就不會凍結後續世代。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

實踐中的分類預填和解碼服務

Mooncake(由 Moonshot AI 的 Kimi 使用)分解了預填充和解碼,並添加了分散式 KV 快取池以大規模減少冗餘的即時重新計算。

Mooncake(由 Moonshot AI 的 Kimi 使用)分解了預填充和解碼,並添加了分散式 KV 快取池,以大規模地減少冗餘的即時重新計算。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

實踐中的分類預填和解碼服務

程式碼完成服務專用於短提示的小型預填充池和大型解碼池,因為大部分成本來自串流許多輸出代幣。

程式碼完成服務專用於短提示的小型預填充池和大型解碼池,因為大部分成本來自串流許多輸出代幣。當團隊預先定義品質閾值、為邊緣情況保留人工升級路徑並隨著時間的推移追蹤生產力增益和錯誤成本時,通常會獲得更好的結果。

風險與防護欄

!

優化一項基準測試可以隱藏更廣泛的系統弱點。

!

基礎設施和維護成本常常被低估。

!

隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。

實施路線圖

1

在實施之前定義延遲、品質和成本目標。

在實施之前定義延遲、品質和成本目標。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

2

在實際負載和資料條件下進行基準測試。

在實際負載和資料條件下進行基準測試。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

3

儀器監控錯誤、漂移和使用者影響。

儀器監控錯誤、漂移和使用者影響。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

4

在擴展之前準備回滾和事件回應路徑。

在擴展之前準備回滾和事件回應路徑。將每個步驟視為證據門:如果不符合標準,則暫停推出,縮小差距,然後再擴大使用。

不斷探索