View a markdown version of this page

Problemi di implementazione di Disaggregated Prefill and Decode (DPD) - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Problemi di implementazione di Disaggregated Prefill and Decode (DPD)

Panoramica: problemi comuni che possono verificarsi durante l'implementazione di endpoint di inferenza con Disaggregated Prefill and Decode (DPD). Questi problemi riguardano in genere l'avvio del pod, il trasferimento della cache KV, il comportamento di routing o l'allocazione delle risorse.

Problemi di avvio del pod

Problema: i pod DPD non si avviano o rimangono in uno stato non pronto.

Sintomi e risoluzione:

  • Le capsule rimangono bloccate ContainerCreating per più di 10 minuti. Corri kubectl describe pod <pod-name> e cerca Failed to pull image oMountVolume.SetUp failed. Verifica che l'immagine del worker esista e che il bucket Amazon S3 sia accessibile dal cluster.

  • I pod sono bloccati su Ready. 2/3 L'operatore VLLm sta ancora caricando il modello. Llama 3.3 70B richiede 5-10 minuti da un recupero a freddo di Amazon S3. Verifica lo stato di avanzamento:

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

    Attendi il messaggio di registro che indica che il motore è pronto.

  • I pod si riavviano con EngineDeadError oTimeoutError. Ciò indica una versione dell'operatore precedente alla v3.2. Aggiorna l'operatore di inferenza prima di continuare.

  • Tutte le richieste HTTP restituiscono 503 subito dopo la distribuzione. I pod stanno ancora caricando il modello. Attendi che lo InferenceEndpointConfig stato DeploymentComplete raggiunga:

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

Problemi di trasferimento della cache KV

Problema: il trasferimento della cache KV tra i pod di precompilazione e decodifica non riesce o funziona male.

Sintomi e risoluzione:

  • Vengono visualizzati i registri del decoder. Retrieved 0 out of N required tokens Il trasferimento KV non è avvenuto e il decoder è tornato alla ricalcolo locale. Verificate che pd_role sia corretto (deve esserlo il prefillersender, deve esserlo il decoderreceiver), entrambi i pod utilizzino la stessa immagine di lavoro e che sia impostato su entrambi i pod. PYTHONHASHSEED "0"

  • I registri del decoder mostrano che il buffer PD Failed to allocate memory object, retrying... del decoder è pieno in caso di elevata concorrenza. O aumenta PD_BUFFER_SIZE (prova "17179869184" per 16 GiB o "34359738368" 32 GiB) o scala. decodingSpec.replicas

  • Throughput di trasferimento KV inferiore a 1. GB/s EFA non viene utilizzato e i trasferimenti ricadono sulla CPU. Verifica che entrambi i pod siano pianificati sui EFA-capable nodi della stessa zona di disponibilità, che i nodi abbiano risorse EFA disponibili (kubectl describe node <node-name> | grep efa) e che l'immagine di lavoro includa il provider EFA libfabric.

Problemi di routing

Problema: le richieste non vengono instradate correttamente tra i pod di precompilazione e decodifica.

Sintomi e risoluzione:

  • Tutte le richieste ignorano il prefiller (anche i prompt lunghi). Controlla i log del router per le decisioni di routing:

    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"

    Verifica che il estimated_tokens valore superi il tuo. routingThreshold Se la stima del token è inferiore al previsto, il tokenizer del router potrebbe contare in modo diverso: prova a ridurre. routingThreshold

  • Distribuzione irregolare del carico tra i prefiller. Se disponete di più repliche di precompilazione e osservate che una è sovraccarica mentre le altre sono inattive, cambiate la strategia di routing in modo da garantire una distribuzione uniforme. roundrobin In alternativa, kvaware utilizzatela per una distribuzione con riconoscimento della cache che tenga conto dello stato effettivo di ogni prefiller.