View a markdown version of this page

Problèmes de déploiement du préremplissage et du décodage désagrégés (DPR) - Amazon SageMaker AI

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 ContainerCreating place pendant plus de 10 minutes. Courez kubectl describe pod <pod-name> et cherchez Failed to pull image ouMountVolume.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 EngineDeadError ouTimeoutError. 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 InferenceEndpointConfig statut soit atteint DeploymentComplete :

    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'affichentRetrieved 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ètre pd_role est correct (le préremplisseur doit l'êtresender, le décodeur doit l'êtrereceiver), que les deux pods utilisent la même image de travail et PYTHONHASHSEED qu'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. Augmentez PD_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_tokens valeur 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 roundrobin pour une distribution uniforme. Vous pouvez également utiliser kvaware une distribution tenant compte du cache qui tient compte de l'état réel de chaque préremplisseur.