Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Problèmes de déploiement du préremplissage et du décodage désagrégés (DPR)
Vue d'ensemble : problèmes courants pouvant survenir lors du déploiement de points de terminaison d'inférence à l'aide du préremplissage et du décodage désagrégés (DDP). Ces problèmes concernent généralement le démarrage du pod, le transfert de cache KV, le comportement de routage ou l'allocation de ressources.
Problèmes de démarrage du pod
Problème : les pods DDP ne démarrent pas ou restent dans un état non prêt.
Symptômes et résolution :
-
Les gousses sont restées en
ContainerCreatingplace pendant plus de 10 minutes. Courezkubectl describe pod <pod-name>et cherchezFailed to pull imageouMountVolume.SetUp failed. Vérifiez que l'image du worker existe et que le compartiment Amazon S3 est accessible depuis le cluster. -
Des capsules sont bloquées à 2/3 Ready. Le worker vLLM est toujours en train de charger le modèle. Llama 3.3 70B prend 5 à 10 minutes à partir d'une extraction à froid sur Amazon S3. Vérifiez la progression :
kubectl logs <pod-name> -c <prefill|decode>-<endpoint-name> | grep -i "engine\|loading"Attendez le message du journal indiquant que le moteur est prêt.
-
Les pods redémarrent avec
EngineDeadErrorouTimeoutError. Cela indique une version de l'opérateur antérieure à la v3.2. Améliorez l'opérateur d'inférence avant de continuer. -
Toutes les requêtes HTTP renvoient 503 immédiatement après le déploiement. Les pods sont toujours en train de charger le modèle. Attendez que le
InferenceEndpointConfigstatut soit atteintDeploymentComplete:kubectl get inferenceendpointconfig <endpoint-name> -n <namespace> -w
Problèmes de transfert de cache KV
Problème : le transfert de cache KV entre les modules de préremplissage et de décodage échoue ou fonctionne mal.
Symptômes et résolution :
-
Les journaux du décodeur s'affichent
Retrieved 0 out of N required tokens. Le transfert KV n'a pas eu lieu et le décodeur est revenu au recalcul local. Vérifiez que le paramètrepd_roleest correct (le préremplisseur doit l'êtresender, le décodeur doit l'êtrereceiver), que les deux pods utilisent la même image de travail etPYTHONHASHSEEDqu'il est défini"0"sur les deux pods. -
Les journaux du décodeur indiquent
Failed to allocate memory object, retrying...que la mémoire tampon du décodeur est pleine lorsque la simultanéité est élevée. AugmentezPD_BUFFER_SIZE(essayez"17179869184"pour 16 GiB ou"34359738368"32 GiB) ou augmentez.decodingSpec.replicas -
Débit de transfert KV inférieur à 1 GB/s. L'EFA n'est pas utilisé et les transferts sont transférés vers le processeur. Vérifiez que les deux pods sont planifiés sur EFA-capable des nœuds de la même zone de disponibilité, que les nœuds disposent de ressources EFA (
kubectl describe node <node-name> | grep efa) et que l'image de travail inclut le fournisseur EFA libfabric.
Problèmes de routage
Problème : les requêtes ne sont pas acheminées correctement entre les modules de préremplissage et de décodage.
Symptômes et résolution :
-
Toutes les demandes contournent le préremplisseur (même les longues invites). Consultez les journaux du routeur pour connaître les décisions de routage :
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"Vérifiez que la
estimated_tokensvaleur est supérieure à votreroutingThreshold. Si l'estimation du jeton est inférieure à celle attendue, le tokenizer du routeur compte peut-être différemment. Essayez de le baisser.routingThreshold -
Répartition inégale de la charge entre les préremplisseurs. Si vous avez plusieurs répliques de préremplisseur et que vous constatez que l'une est surchargée alors que les autres sont inactives, passez à la stratégie de routage
roundrobinpour une distribution uniforme. Vous pouvez également utiliserkvawareune distribution tenant compte du cache qui tient compte de l'état réel de chaque préremplisseur.