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 Starten des Pods

Problem: DPD-Pods können nicht gestartet werden oder befinden sich in einem Zustand, in dem sie nicht bereit sind.

Symptome und Lösung:

  • Die Kapseln 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 S3-Bucket vom Cluster aus zugänglich ist.

  • Die Pods bleiben bei 2/3 Bereit hängen. Der vLLM-Worker lädt das Modell immer noch. Llama 3.3 70B benötigt nach einem kalten Amazon S3 S3-Abruf 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 angibt, dass der Motor bereit ist.

  • Pods werden mit EngineDeadError oder neu gestartetTimeoutError. Dies weist auf eine ältere Version des Operators als Version 3.2 hin. Aktualisieren Sie den Inferenzoperator, bevor Sie fortfahren.

  • Alle HTTP-Anfragen geben unmittelbar nach der Bereitstellung 503 zurück. Pods laden das Modell immer noch. Warten Sie, bis der InferenceEndpointConfig Status den folgenden Wert erreicht hatDeploymentComplete:

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

Probleme mit der KV-Cache-Übertragung

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 hat auf eine lokale Neuberechnung zurückgegriffen. Stellen Sie sicher, dass das korrekt pd_role ist (Prefiller muss seinsender, Decoder muss es seinreceiver), beide Pods dasselbe Worker-Image verwenden und auf beiden Pods auf auf eingestellt PYTHONHASHSEED ist. "0"

  • In den Decoderprotokollen wird angezeigt, dass Failed to allocate memory object, retrying... der Decoder-PD-Puffer bei hoher Parallelität voll ist. Entweder erhöhen PD_BUFFER_SIZE (versuchen Sie es "17179869184" mit 16 GiB oder "34359738368" mit 32 GiB) oder skalieren SiedecodingSpec.replicas.

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

Routing-Probleme

Problem: Anfragen werden nicht korrekt zwischen Pods zum Vorfüllen und Entschlüsseln weitergeleitet.

Symptome und Lösung:

  • Alle Anfragen umgehen den Prefiller (auch lange Eingabeaufforderungen). Suchen Sie in den Router-Protokollen nach 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 übersteigtroutingThreshold. Wenn die Token-Schätzung niedriger als erwartet ist, zählt der Tokenizer des Routers möglicherweise anders. Versuchen Sie, sie zu senken. routingThreshold

  • Ungleichmäßige Lastverteilung zwischen den Vorfüllern. Wenn Sie über mehrere Prefiller-Replikate verfügen und feststellen, dass eines davon überlastet ist, während andere inaktiv sind, stellen Sie die Routing-Strategie auf eine gleichmäßige Verteilung um. roundrobin Sie können es auch kvaware für eine Verteilung mit Cache-Unterstützung verwenden, bei der der tatsächliche Status der einzelnen Prefiller berücksichtigt wird.