View a markdown version of this page

Problemas de implantação de pré-preenchimento e decodificação desagregados (DPD) - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Problemas de implantação de pré-preenchimento e decodificação desagregados (DPD)

Visão geral: problemas comuns que podem ocorrer ao implantar endpoints de inferência com pré-preenchimento e decodificação desagregados (DPD). Esses problemas geralmente envolvem inicialização do pod, transferência de cache KV, comportamento de roteamento ou alocação de recursos.

Problemas de inicialização do pod

Problema: os pods do DPD falham ao iniciar ou permanecem em um estado não pronto.

Sintomas e resolução:

  • Os pods ficaram presos ContainerCreating por mais de 10 minutos. Corra kubectl describe pod <pod-name> e procure Failed to pull image ouMountVolume.SetUp failed. Verifique se a imagem do trabalhador existe e se o bucket do Amazon S3 está acessível a partir do cluster.

  • Os pods estão presos em 2/3 Ready. O funcionário do vLLM ainda está carregando o modelo. O Llama 3.3 70B leva de 5 a 10 minutos a partir de uma busca fria do Amazon S3. Verifique o progresso:

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

    Aguarde a mensagem de registro indicando que o motor está pronto.

  • Os pods reiniciam com EngineDeadError ouTimeoutError. Isso indica uma versão do operador anterior à v3.2. Atualize o operador de inferência antes de continuar.

  • Todas as solicitações HTTP retornam 503 imediatamente após a implantação. Os pods ainda estão carregando o modelo. Aguarde até que o InferenceEndpointConfig status chegue aDeploymentComplete:

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

Problemas de transferência de cache KV

Problema: a transferência de cache KV entre os pods de pré-preenchimento e decodificação falha ou tem um desempenho insatisfatório.

Sintomas e resolução:

  • Os registros do decodificador são exibidosRetrieved 0 out of N required tokens. A transferência de KV não ocorreu e o decodificador voltou ao recálculo local. Verifique se pd_role está correto (o pré-preenchedor deve estarsender, o decodificador deve estarreceiver), se os dois pods usam a mesma imagem de trabalho e PYTHONHASHSEED se estão definidos como nos dois pods. "0"

  • Os registros do decodificador mostram Failed to allocate memory object, retrying... que o buffer PD do decodificador está cheio em alta simultaneidade. Aumente PD_BUFFER_SIZE ("17179869184"experimente 16 GiB ou "34359738368" 32 GiB) ou escale. decodingSpec.replicas

  • Taxa de transferência de KV abaixo de 1. GB/s O EFA não está sendo usado e as transferências estão voltando para a CPU. Verifique se os dois pods estão programados em EFA-capable nós na mesma zona de disponibilidade, se os nós têm recursos de EFA disponíveis (kubectl describe node <node-name> | grep efa) e se a imagem de trabalho inclui o provedor libfabric do EFA.

Problemas de roteamento

Problema: as solicitações não estão sendo roteadas corretamente entre os pods de pré-preenchimento e decodificação.

Sintomas e resolução:

  • Todas as solicitações ignoram o pré-preenchedor (mesmo solicitações longas). Verifique os registros do roteador para decisões de roteamento:

    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"

    Verifique se o estimated_tokens valor excede o seuroutingThreshold. Se a estimativa do token for menor do que a esperada, o tokenizador do roteador pode estar contando de forma diferente — tente diminuir. routingThreshold

  • Distribuição desigual da carga entre os pré-enchedores. Se você tiver várias réplicas de pré-preenchimento e observar que uma está sobrecarregada enquanto outras estão ociosas, mude a estratégia de roteamento para uma distribuição uniforme. roundrobin Como alternativa, use kvaware para distribuição com reconhecimento de cache que contabilize o estado real de cada pré-preenchedor.