

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 분해된 사전 채우기 및 디코딩(DPD) 배포 문제
<a name="sagemaker-hyperpod-model-deployment-ts-dpd"></a>

**개요:** DPD(Disaggregated Prefill and Decode)를 사용하여 추론 엔드포인트를 배포할 때 발생할 수 있는 일반적인 문제입니다. 이러한 문제에는 일반적으로 포드 시작, KV 캐시 전송, 라우팅 동작 또는 리소스 할당이 포함됩니다.

## 포드 시작 문제
<a name="sagemaker-hyperpod-model-deployment-ts-dpd-pod-startup"></a>

**문제:** DPD 포드가 시작되지 않거나 준비되지 않은 상태로 유지됩니다.

**증상 및 해결 방법:**
+ **포드`ContainerCreating`가 10분 이상 멈췄습니다.** 를 실행`kubectl describe pod <pod-name>`하고 `Failed to pull image` 또는를 찾습니다`MountVolume.SetUp failed`. 작업자 이미지가 존재하고 클러스터에서 Amazon S3 버킷에 액세스할 수 있는지 확인합니다.
+ **포드가 2/3 준비 상태로 멈췄습니다.** 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 캐시 전송 문제
<a name="sagemaker-hyperpod-model-deployment-ts-dpd-kv-transfer"></a>

**문제:** 프리필 포드와 디코딩 포드 간의 KV 캐시 전송이 실패하거나 제대로 수행되지 않습니다.

**증상 및 해결 방법:**
+ **디코더 로그에는가 표시됩니다`Retrieved 0 out of N required tokens`.** KV 전송이 발생하지 않았고 디코더가 로컬 다시 계산으로 떨어졌습니다. `pd_role`가 올바른지 확인하고(프리필러는 , `sender`디코더는 `receiver`), 두 포드 모두 동일한 작업자 이미지를 사용하며, 두 포드 `"0"` 모두에서 `PYTHONHASHSEED`가 로 설정되어 있는지 확인합니다.
+ **디코더 로그에 디코더 PD 버퍼가 높은 동시성으로 가득 차 있음이 표시됩니다`Failed to allocate memory object, retrying...`**. `"17179869184"`를 늘리거나`PD_BUFFER_SIZE`(16GiB 또는 32GiB`"34359738368"`의 경우 시도)를 조정합니다`decodingSpec.replicas`.
+ **1GB/s 미만의 KV 전송 처리량.** EFA가 사용되지 않고 전송이 CPU로 다시 폴백됩니다. 두 포드가 동일한 가용 영역의 EFA 지원 노드에 예약되어 있고, 노드에 사용 가능한 EFA 리소스(`kubectl describe node <node-name> | grep efa`)가 있으며, 작업자 이미지에 EFA libfabric 공급자가 포함되어 있는지 확인합니다.

## 라우팅 문제
<a name="sagemaker-hyperpod-model-deployment-ts-dpd-routing"></a>

**문제:** 사전 채우기 포드와 디코딩 포드 간에 요청이 올바르게 라우팅되지 않습니다.

**증상 및 해결 방법:**
+ **모든 요청은 프리필러를 우회합니다(긴 프롬프트 포함).** 라우터 로그에서 라우팅 결정을 확인합니다.

  ```
  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`를 사용합니다.