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 distribuzione di Disaggregated Prefill and Decode (DPD)
Panoramica: problemi comuni che possono verificarsi quando si implementano 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 sono rimaste bloccate
ContainerCreatingper più di 10 minuti. Corrikubectl describe pod <pod-name>e cercaFailed to pull imageoMountVolume.SetUp failed. Verifica che l'immagine di lavoro esista e che il bucket Amazon S3 sia accessibile dal cluster. -
Pod bloccati su Ready. 2/3 Il worker vLLM sta ancora caricando il modello. Llama 3.3 70B richiede 5-10 minuti da un recupero a freddo di Amazon S3. Controlla i progressi:
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
EngineDeadErroroTimeoutError. 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
InferenceEndpointConfigstatoDeploymentCompleteraggiunga:kubectl get inferenceendpointconfig <endpoint-name> -n <namespace> -w
Problemi con il 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
Retrieved 0 out of N required tokensi registri del decodificatore. Il trasferimento KV non è avvenuto e il decoder è tornato al ricalcolo locale. Verifica chepd_rolesia corretto (il precompilatore deve esseresender, il decoder deve esserereceiver), entrambi i pod utilizzano la stessa immagine di lavoro e che sia impostato su entrambi i pod.PYTHONHASHSEED"0" -
I registri del decodificatore mostrano che il buffer PD
Failed to allocate memory object, retrying...del decodificatore è pieno in condizioni di elevata concorrenza. O aumentaPD_BUFFER_SIZE(prova"17179869184"per 16 GiB o"34359738368"per 32 GiB) o ridimensiona.decodingSpec.replicas -
Velocità di trasferimento KV inferiore a 1. GB/s L'EFA non viene utilizzato e i trasferimenti ricadono sulla CPU. Verifica che entrambi i pod siano pianificati su EFA-capable nodi nella 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 indirizzate correttamente tra i pod di precompilazione e decodifica.
Sintomi e risoluzione:
-
Tutte le richieste ignorano il precompilatore (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_tokensvalore superi il tuo.routingThresholdSe la stima del token è inferiore al previsto, il tokenizer del router potrebbe contare in modo diverso: prova a diminuire.routingThreshold -
Distribuzione non uniforme del carico tra i prefiller. Se disponi di più repliche precompilate e osservi che una è sovraccaricata mentre altre sono inattive, passa alla strategia di routing per una distribuzione uniforme.
roundrobinIn alternativa, utilizzate una distribuzione conkvawarericonoscimento della cache che tiene conto dello stato effettivo di ogni precompilatore.