View a markdown version of this page

Probleme bei der Bereitstellung von Disaggregated Prefill and Decode (DPD) - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Probleme bei der Bereitstellung von Disaggregated Prefill and Decode (DPD)

Überblick: Häufige Probleme, die bei der Bereitstellung von Inferenzendpunkten mit Disaggregated Prefill and Decode (DPD) auftreten können. Diese Probleme betreffen in der Regel den Pod-Start, die KV-Cache-Übertragung, das Routing-Verhalten oder die Ressourcenzuweisung.

Probleme beim Pod-Start

Problem: DPD-Pods lassen sich nicht starten oder befinden sich in einem Zustand, in dem sie nicht bereit sind.

Symptome und Lösung:

  • Die Schoten blieben ContainerCreating länger als 10 Minuten drin. Lauf kubectl describe pod <pod-name> und suche nach Failed to pull image oderMountVolume.SetUp failed. Stellen Sie sicher, dass das Worker-Image vorhanden ist und der Amazon S3-Bucket vom Cluster aus zugänglich ist.

  • Die Pods hängen bei 2/3 Ready fest. Der vLLM-Worker lädt das Modell immer noch. Bei einem kalten Amazon S3-Abruf dauert Llama 3.3 70B 5—10 Minuten. Überprüfen Sie den Fortschritt:

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

    Warten Sie auf die Protokollmeldung, die besagt, dass der Motor bereit ist.

  • Die Pods werden mit EngineDeadError oder neu gestartetTimeoutError. Dies weist auf eine Operatorversion hin, die älter als v3.2 ist. Aktualisieren Sie den Inferenzoperator, bevor Sie fortfahren.

  • Alle HTTP-Anfragen geben unmittelbar nach der Bereitstellung 503 zurück. Pods laden das Modell immer noch. Warte, bis der InferenceEndpointConfig Status erreicht istDeploymentComplete:

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

Probleme bei der Übertragung des KV-Cache

Problem: Die KV-Cache-Übertragung zwischen Prefill- und Decode-Pods schlägt fehl oder funktioniert schlecht.

Symptome und Lösung:

  • Decoder-Protokolle werden angezeigtRetrieved 0 out of N required tokens. Die KV-Übertragung fand nicht statt und der Decoder fiel auf die lokale Neuberechnung zurück. Stellen Sie sicher, dass das korrekt pd_role ist (Prefiller muss aktiviert seinsender, Decoder muss aktiviert seinreceiver), dass beide Pods dasselbe Worker-Image verwenden und auf beiden Pods auf gesetzt PYTHONHASHSEED ist. "0"

  • Die Decoder-Protokolle zeigen, dass Failed to allocate memory object, retrying... der Decoder-PD-Puffer bei hoher Parallelität voll ist. Erhöhen Sie entweder PD_BUFFER_SIZE (versuchen Sie es "17179869184" mit 16 GiB oder "34359738368" mit 32 GiB) oder skalieren Sie. decodingSpec.replicas

  • KV-Übertragungsdurchsatz unter GB/s 1. EFA wird nicht verwendet und die Übertragungen fallen auf die CPU zurück. Stellen Sie sicher, dass beide Pods auf EFA-capable Knoten in derselben Availability Zone geplant sind, dass auf den Knoten EFA-Ressourcen verfügbar sind (kubectl describe node <node-name> | grep efa) und dass das Worker-Image den EFA-Libfabric-Provider enthält.

Routing-Probleme

Problem: Anfragen werden nicht korrekt zwischen Prefill- und Decode-Pods weitergeleitet.

Symptome und Lösung:

  • Alle Anfragen umgehen den Prefiller (auch lange Eingabeaufforderungen). Überprüfen Sie die Router-Protokolle auf Routing-Entscheidungen:

    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"

    Stellen Sie sicher, dass der estimated_tokens Wert Ihren überschreitetroutingThreshold. Wenn die Token-Schätzung niedriger als erwartet ist, zählt der Tokenizer des Routers möglicherweise anders — versuchen Sie es mit einer Senkung. routingThreshold

  • Ungleichmäßige Lastverteilung zwischen den Prefillern. Wenn Sie über mehrere Prefiller-Replikate verfügen und feststellen, dass eines überlastet ist, während andere inaktiv sind, stellen Sie die Routing-Strategie auf roundrobin für eine gleichmäßige Verteilung um. Verwenden Sie diese Option auch kvaware für eine Cache-fähige Verteilung, bei der der aktuelle Status jedes Prefillers berücksichtigt wird.