View a markdown version of this page

Disaggregated Prefill and Decode (DPD) デプロイの問題 - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Disaggregated Prefill and Decode (DPD) デプロイの問題

概要: Disaggregated Prefill and Decode (DPD) を使用して推論エンドポイントをデプロイするときに発生する可能性がある一般的な問題。これらの問題には通常、ポッドの起動、KV キャッシュ転送、ルーティング動作、またはリソース割り当てが含まれます。

ポッドの起動に関する問題

問題: DPD ポッドの起動に失敗するか、準備ができていない状態のままです。

症状と解決策:

  • ポッドが 10 ContainerCreating 分以上止まっている。を実行してkubectl describe pod <pod-name>Failed to pull imageまたは を探しますMountVolume.SetUp failed。ワーカーイメージが存在し、クラスターから Amazon S3 バケットにアクセスできることを確認します。

  • ポッドが 2/3 Ready でスタックしました。vLLM ワーカーはまだモデルをロードしています。Llama 3.3 70B は、コールド Amazon S3 フェッチから 5~10 分かかります。進行状況を確認する:

    kubectl logs <pod-name> -c <prefill|decode>-<endpoint-name> | grep -i "engine\|loading"

    エンジンの準備が完了したことを示すログメッセージを待ちます。

  • ポッドは EngineDeadErrorまたは で再起動しますTimeoutErrorこれは、v3.2 より前のオペレータバージョンを示します。続行する前に推論演算子をアップグレードします。

  • すべての HTTP リクエストは、デプロイ直後に 503 を返します。ポッドはまだモデルをロードしています。InferenceEndpointConfig ステータスが になるまで待ちますDeploymentComplete

    kubectl get inferenceendpointconfig <endpoint-name> -n <namespace> -w

KV キャッシュ転送の問題

問題: 事前入力ポッドとデコードポッド間の KV キャッシュ転送が失敗するか、パフォーマンスが低下します。

症状と解決策:

  • デコーダーログには が表示されますRetrieved 0 out of N required tokensKV 転送は行われず、デコーダーはローカル再計算にフォールバックしました。pd_role が正しい (プリフィラーは sender、デコーダーPYTHONHASHSEEDは ) こと、receiver両方のポッドが同じワーカーイメージを使用し、両方のポッド"0"で が に設定されていることを確認します。

  • デコーダーログは、デコーダー PD バッファが高同時実行で満杯であることを示していますFailed to allocate memory object, retrying...。を増やす PD_BUFFER_SIZE (16 GiB "17179869184" または 32 GiB "34359738368"を試す) か、 をスケールしますdecodingSpec.replicas

  • KV 転送スループットが 1 GB/秒未満。EFA が使用されておらず、転送が CPU にフォールバックしています。両方のポッドが同じアベイラビリティーゾーンの EFA 対応ノードでスケジュールされていること、ノードに EFA リソースが利用可能であること (kubectl describe node <node-name> | grep efa)、ワーカーイメージに EFA libfabric プロバイダーが含まれていることを確認します。

ルーティング問題

問題: リクエストが事前入力ポッドとデコードポッドの間で正しくルーティングされていません。

症状と解決策:

  • すべてのリクエストは (長いプロンプトでも) プリフィラーをバイパスします。ルーターログでルーティングの決定を確認します。

    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に を使用します。