本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
KV 快取和智慧型路由
Amazon SageMaker HyperPod Inference 提供受管分層金鑰值 (KV) 快取和智慧型路由,以最佳化大型語言模型 (LLM) 工作負載的推論效能。KV 快取會在處理先前的權杖後儲存預先計算的鍵/值向量,消除多餘的重新計算。透過雙層快取架構,您可以設定使用 CPU 記憶體進行低延遲本機重複使用的 L1 快取,以及利用 Redis 或受管分層儲存來啟用可擴展節點層級快取共用的 L2 快取。
智慧型路由會分析傳入的請求,並將其導向至最有可能具有相關快取金鑰/值對的推論執行個體。系統會檢查請求,並根據下列其中一個路由策略進行路由:
-
prefixaware— 具有相同提示字首的後續請求會路由至相同的執行個體。 -
kvaware— 傳入的請求會路由至 KV 快取命中率最高的執行個體。 -
session— 來自相同使用者工作階段的請求會路由至相同的執行個體。 -
roundrobin— 平均分佈請求,而不考慮 KV 快取的狀態。
智慧路由適用於所有 Amazon SageMaker HyperPod 推論部署方法,包括 Amazon SageMaker JumpStart 部署 (主控台和 kubectl)、NVMe 本機儲存部署,以及來自 Amazon S3、Amazon FSx 或 Hugging Face Hub 的部署。無論您使用哪種部署方法為模型提供服務,都可以啟用快取和路由。
注意
KV 快取和智慧型路由目前僅支援 vLLM 型推論容器。
設定 KV 快取和智慧型路由
-
透過將
enableL1Cache和 設定為enableL2Cache來啟用 KV 快取true。然後,l2CacheSpec將 設定為redis或l2CacheBackend來設定tieredstorage。如果您選擇redis,l2CacheLocalUrl請使用 Redis 叢集 URL 更新 。kvCacheSpec: enableL1Cache: true enableL2Cache: true l2CacheSpec: l2CacheBackend: <redis | tieredstorage> l2CacheLocalUrl: <Redis cluster URL if l2CacheBackend is redis >注意
如果 Redis 叢集不在與 HyperPod 叢集相同的 Amazon VPC 內,則不保證傳輸中資料的加密。
注意
如果
tieredstorage已選取l2CacheLocalUrl,則不需要。 -
透過將
enabled設定為true下的 來啟用智慧型路由intelligentRoutingSpec。您可以在 下指定要使用的路由策略routingStrategy。如果未指定路由策略,則預設為prefixaware。intelligentRoutingSpec: enabled: true routingStrategy: <routing strategy to use> -
在
true下將enabled設定為 ,以啟用路由器指標和快取指標metrics。該port值必須與 下containerPort的值相同modelInvocationPort。metrics: enabled: true modelMetrics: port: <port value> ... modelInvocationPort: containerPort: <port value>
KV 感知路由相容性
本節中的相容性矩陣和版本限制僅適用於kvaware路由策略。此kvaware策略會將傳入請求導向 KV 快取命中率最高的推論執行個體,目前僅支援以 /completions API 做為調用端點的 vLLM 型映像。
注意
如果您使用kvaware路由,則必須/completions在部署資訊清單中invocationEndpoint將 設定為 。kvaware 路由不支援/v1/chat/completions端點。其他路由策略 (prefixaware、session、roundrobin) 可與任何調用端點搭配使用。
支援的影像:
-
vLLM 影像:https://hub.docker.com/r/vllm/vllm-openai
-
LMCache 映像:https://hub.docker.com/r/lmcache/vllm-openai
| 推論運算子版本 | Amazon EKS 附加元件版本 | LMCache 映像版本 | vLLM 映像版本 |
|---|---|---|---|
| >= v3.1.3 | >= v1.2.1-eksbuild.1 | >= 0.4.3 版 | >= v0.19.1 |
| < 3.1.3 版 | < 1.2.1-eksbuild.1 版 | v0.3.9post2 | v0.11.1 |
注意
我們建議將推論運算子版本 v3.1.3 或更新版本與支援矩陣中顯示的對應 LMCache 和 vLLM 版本搭配使用。較新的 LMCache 版本支援張量平行處理、改善故障處理和快取工作者註冊,為 KV 感知路由提供更佳的穩定性。
驗證 KV 快取感知路由
在啟用 KV 感知路由的情況下部署模型之後,請使用下列步驟來驗證路由是否正常運作。
檢查工作者註冊
檢查路由器日誌,確認工作者已向路由器註冊:
kubectl logs -n hyperpod-inference-system <router-pod> | grep -i "register"
運作狀態良好的註冊會顯示:
INFO: Worker registered: lmcacheengineconfig_<hash>
檢查路由器日誌中的快取命中
確認路由器正在使用 KV 感知路由來引導請求:
kubectl logs -n hyperpod-inference-system <router-pod> | grep -i "kvaware\|Matched instance\|Lookup"
當 KV 感知路由正常運作時:
INFO: Routing request to lmcacheengineconfig_<hash> found by kvaware router
當 KV 感知路由無法運作時 (落回循環配置):
DEBUG: Matched instance url None
在工作者日誌中檢查 LMCache 初始化
確認 LMCache 在工作者 Pod 上初始化成功:
kubectl logs -n <namespace> <worker-pod> | grep -i "LMCache"
運作狀態良好的初始化會顯示:
LMCache INFO: LMCacheManager initialized successfully
如果 LMCache 無法初始化,您會看到:
LMCache ERROR: Failed to initialize LMCacheManager components: . System will operate in degraded mode (recompute).
使用 Grafana 指標驗證
啟用指標時 (metrics.enabled: true),來自 vLLM 工作者/metrics端點的下列指標會確認快取命中。當 KV 感知路由正常運作時,這些指標應該會顯示高值:
| 指標 | 說明 |
|---|---|
vllm:prefix_cache_hits_total / vllm:prefix_cache_queries_total |
GPU 字首快取命中率 (以比率計算) |
lmcache:num_vllm_hit_tokens_total |
從 LMCache 提供的字符數量 |
lmcache:num_lookup_hits_total / lmcache:num_lookup_tokens_total |
LMCache 查詢命中率 (以比率計算) |
lmcache:request_cache_hit_rate |
每個請求快取命中率 (長條圖) |