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
ContainerCreatingper più di 10 minuti. Corrikubectl describe pod <pod-name>e cercaFailed to pull imageoMountVolume.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
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 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 tokensIl trasferimento KV non è avvenuto e il decoder è tornato alla ricalcolo locale. Verificate chepd_rolesia 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 aumentaPD_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_tokensvalore superi il tuo.routingThresholdSe 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.
roundrobinIn alternativa,kvawareutilizzatela per una distribuzione con riconoscimento della cache che tenga conto dello stato effettivo di ogni prefiller.