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
ContainerCreatinglänger als 10 Minuten drin. Laufkubectl describe pod <pod-name>und suche nachFailed to pull imageoderMountVolume.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
EngineDeadErroroder 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
InferenceEndpointConfigStatus 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 angezeigt
Retrieved 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 korrektpd_roleist (Prefiller muss aktiviert seinsender, Decoder muss aktiviert seinreceiver), dass beide Pods dasselbe Worker-Image verwenden und auf beiden Pods auf gesetztPYTHONHASHSEEDist."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 entwederPD_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_tokensWert 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
roundrobinfür eine gleichmäßige Verteilung um. Verwenden Sie diese Option auchkvawarefür eine Cache-fähige Verteilung, bei der der aktuelle Status jedes Prefillers berücksichtigt wird.