本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
分解預填充和解碼 (DPD) 部署問題
概觀:使用分解預先填充和解碼 (DPD) 部署推論端點時可能發生的常見問題。這些問題通常涉及 Pod 啟動、KV 快取傳輸、路由行為或資源配置。
Pod 啟動問題
問題:DPD Pod 無法啟動或保持未就緒狀態。
徵狀和解決方案:
-
Pod 卡在 中
ContainerCreating超過 10 分鐘。執行kubectl describe pod <pod-name>並尋找Failed to pull image或MountVolume.SetUp failed。確認工作者映像存在,而且可從叢集存取 Amazon S3 儲存貯體。 -
Pod 停滯在 2/3 就緒。vLLM 工作者仍在載入模型。Llama 3.3 70B 從冷 Amazon S3 擷取需要 5-10 分鐘。檢查進度:
kubectl logs <pod-name> -c <prefill|decode>-<endpoint-name> | grep -i "engine\|loading"等待指示引擎已就緒的日誌訊息。
-
Pod 使用
EngineDeadError或 重新啟動TimeoutError。這表示早於 v3.2 的運算子版本。升級推論運算子再繼續。 -
所有 HTTP 請求都會在部署後立即傳回 503。Pod 仍在載入模型。等待
InferenceEndpointConfig狀態達到DeploymentComplete:kubectl get inferenceendpointconfig <endpoint-name> -n <namespace> -w
KV 快取傳輸問題
問題:預先填充和解碼 Pod 之間的 KV 快取傳輸失敗或效能不佳。
徵狀和解決方案:
-
解碼器日誌會顯示
Retrieved 0 out of N required tokens。KV 傳輸未發生,解碼器下降回本機重新計算。確認pd_role是正確的 (預填充物必須是sender,解碼器必須是receiver),兩個 Pod 都使用相同的工作者映像,並在兩個 Pod"0"上PYTHONHASHSEED設定為 。 -
解碼器日誌顯示
Failed to allocate memory object, retrying...解碼器 PD 緩衝區在高並行下已滿。增加PD_BUFFER_SIZE("17179869184"嘗試 16 GiB 或"34359738368"32 GiB) 或擴展decodingSpec.replicas。 -
KV 傳輸輸送量低於 1 GB/s。未使用 EFA,傳輸正在回復到 CPU。確認兩個 Pod 都排程在相同可用區域中具備 EFA 功能的節點上、節點有可用的 EFA 資源 (
kubectl describe node <node-name> | grep efa),以及工作者映像包含 EFA libfabric 供應商。
路由問題
問題:預先填充和解碼 Pod 之間的請求未正確路由。
徵狀和解決方案:
-
所有請求都會略過預填充 (甚至是長提示)。檢查路由器日誌是否有路由決策:
ROUTER_POD=$(kubectl get pods -n hyperpod-inference-system -o name | grep router | head -1) kubectl logs $ROUTER_POD -n hyperpod-inference-system -c router-container --tail=50 \ | grep "Conditional routing"驗證該
estimated_tokens值超過您的routingThreshold。如果字符估算低於預期,路由器的字符器計數可能不同,請嘗試降低routingThreshold。 -
預填充物之間的負載分佈不均。如果您有多個預填充複本,並發現其中一個複本過載,而其他複本處於閒置狀態,請將路由策略切換為
roundrobin,以取得平均分佈。或者,kvaware針對考量每個預填充物實際狀態的快取感知分佈使用 。