View a markdown version of this page

分解預填充和解碼 (DPD) 部署問題 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

分解預填充和解碼 (DPD) 部署問題

概觀:使用分解預先填充和解碼 (DPD) 部署推論端點時可能發生的常見問題。這些問題通常涉及 Pod 啟動、KV 快取傳輸、路由行為或資源配置。

Pod 啟動問題

問題:DPD Pod 無法啟動或保持未就緒狀態。

徵狀和解決方案:

  • Pod 卡在 中ContainerCreating超過 10 分鐘。執行 kubectl describe pod <pod-name>並尋找 Failed to pull imageMountVolume.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 tokensKV 傳輸未發生,解碼器下降回本機重新計算。確認 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針對考量每個預填充物實際狀態的快取感知分佈使用 。