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.
HyperPod Fehlerbehebung bei Inferenzen
In diesem Leitfaden zur Fehlerbehebung werden häufig auftretende Probleme behandelt, die bei der Bereitstellung und dem Betrieb von Amazon SageMaker HyperPod Inference auftreten können. Zu diesen Problemen gehören in der Regel VPC-Netzwerkkonfiguration, IAM-Berechtigungen, Kubernetes-Ressourcenmanagement und Probleme mit der Betreiberkonnektivität, die eine erfolgreiche Modellbereitstellung verhindern oder dazu führen können, dass Bereitstellungen fehlschlagen oder im Status „Ausstehend“ verbleiben.
In diesem Leitfaden zur Fehlerbehebung wird die folgende Terminologie verwendet: Schritte zur Fehlerbehebung sind Diagnoseverfahren zur Identifizierung und Untersuchung von Problemen, Lösung enthält die spezifischen Maßnahmen zur Behebung identifizierter Probleme und Verifizierung bestätigt, dass die Lösung ordnungsgemäß funktioniert hat.
Kurzreferenz: Finden Sie Ihr Problem
Verwenden Sie die folgenden Kategorien, um schnell den Abschnitt zur Fehlerbehebung zu finden, der für Ihr Problem relevant ist:
-
Probleme bei der Installation von Add-ons — siehe Die Installation des Inference Add-ons ist aufgrund fehlender CSI-Treiber fehlgeschlagenBenutzerdefinierte Inferenzressourcendefinitionen fehlen während der Modellbereitstellung,Die Installation des Inference-Add-Ons ist aufgrund des fehlenden Cert-Managers fehlgeschlagen,,Die Installation des Inference-Add-ons ist aufgrund des fehlenden ALB-Controllers fehlgeschlagen, Die Installation des Inference Add-ons ist aufgrund eines fehlenden KEDA-Operators fehlgeschlagen
-
Probleme mit Berechtigungen und IAM — sieheProblem mit der VPC-ENI-Berechtigung, Problem mit der IAM-Vertrauensbeziehung Der Inferenzoperator kann nicht gestartet werden
-
Bereitstellungs- und Ressourcenprobleme — sieheDie Modellbereitstellung blieb im Status „Ausstehend“ hängen, Die Modellbereitstellung ist fehlgeschlagen, Status „Fehlerbehebung“ Fehler beim fehlenden NVIDIA-GPU-Plugin
-
Zertifikat- und Netzwerkprobleme — sieheTimeout beim Herunterladen von Zertifikaten, Die Installation des Inference-Add-Ons ist aufgrund des fehlenden Cert-Managers fehlgeschlagen
Die Installation des Inference Add-ons ist aufgrund fehlender CSI-Treiber fehlgeschlagen
Problem: Die Erstellung des Inferenzoperator-Add-ons schlägt fehl, da die erforderlichen CSI-Treiberabhängigkeiten nicht auf dem EKS-Cluster installiert sind.
Symptome und Diagnose
Fehlermeldungen:
Die folgenden Fehler treten in den Protokollen zur Erstellung von Add-ons oder in den Protokollen der Inferenzoperatoren auf:
S3 CSI driver not installed (missing CSIDriver s3.csi.aws.com). Please install the required CSI driver and see the troubleshooting guide for more information. FSx CSI driver not installed (missing CSIDriver fsx.csi.aws.com). Please install the required CSI driver and see the troubleshooting guide for more information.
Schritte zur Diagnose:
-
Prüfen Sie, ob CSI-Treiber installiert sind:
# Check for S3 CSI driver kubectl get csidriver s3.csi.aws.com kubectl get pods -n kube-system | grep mountpoint # Check for FSx CSI driver kubectl get csidriver fsx.csi.aws.com kubectl get pods -n kube-system | grep fsx -
Überprüfen Sie den Status des EKS-Add-ons:
# List all add-ons aws eks list-addons --cluster-name $EKS_CLUSTER_NAME --region $REGION # Check specific CSI driver add-ons aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION 2>/dev/null || echo "S3 CSI driver not installed" aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION 2>/dev/null || echo "FSx CSI driver not installed" -
Überprüfen Sie den Status des Add-ons für den Inferenzoperator:
aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,Issues:issues}" \ --output json
Auflösung
Schritt 1: Installieren Sie den fehlenden S3-CSI-Treiber
-
Erstellen Sie die IAM-Rolle für den S3-CSI-Treiber (falls nicht bereits erstellt):
# Set up service account role ARN (from installation steps) export S3_CSI_ROLE_ARN=$(aws iam get-role --role-name $S3_CSI_ROLE_NAME --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "S3 CSI Role ARN: $S3_CSI_ROLE_ARN" -
Installieren Sie das S3 CSI-Treiber-Add-On:
aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name aws-mountpoint-s3-csi-driver \ --addon-version v1.14.1-eksbuild.1 \ --service-account-role-arn $S3_CSI_ROLE_ARN \ --region $REGION -
Überprüfen Sie die Installation des S3 CSI-Treibers:
# Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION # Verify CSI driver is available kubectl get csidriver s3.csi.aws.com kubectl get pods -n kube-system | grep mountpoint
Schritt 2: Fehlenden FSx CSI-Treiber installieren
-
Erstellen Sie die IAM-Rolle für FSx den CSI-Treiber (falls nicht bereits erstellt):
# Set up service account role ARN (from installation steps) export FSX_CSI_ROLE_ARN=$(aws iam get-role --role-name $FSX_CSI_ROLE_NAME --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "FSx CSI Role ARN: $FSX_CSI_ROLE_ARN" -
Installieren Sie das FSx CSI-Treiber-Addon:
aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name aws-fsx-csi-driver \ --addon-version v1.6.0-eksbuild.1 \ --service-account-role-arn $FSX_CSI_ROLE_ARN \ --region $REGION # Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION # Verify FSx CSI driver is running kubectl get pods -n kube-system | grep fsx
Überprüfen Sie alle Abhängigkeiten
Stellen Sie nach der Installation der fehlenden Abhängigkeiten sicher, dass sie ordnungsgemäß ausgeführt werden, bevor Sie erneut versuchen, den Inferenzoperator zu installieren:
# Check all required add-ons are active aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name metrics-server --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION # Verify all pods are running kubectl get pods -n kube-system | grep -E "(mountpoint|fsx|metrics-server)" kubectl get pods -n cert-manager
Benutzerdefinierte Inferenzressourcendefinitionen fehlen während der Modellbereitstellung
Problem: Benutzerdefinierte Ressourcendefinitionen (CRDs) fehlen, wenn Sie versuchen, Modellbereitstellungen zu erstellen. Dieses Problem tritt auf, wenn Sie das Inferenz-Add-on zuvor installiert und gelöscht haben, ohne Modellbereitstellungen mit Finalizern zu bereinigen.
Symptome und Diagnose
Grundursache:
Wenn Sie das Inferenz-Add-on löschen, ohne zuerst alle Modellbereitstellungen zu entfernen, verbleiben benutzerdefinierte Ressourcen mit Finalizern im Cluster. Diese Finalizer müssen abgeschlossen sein, bevor Sie sie löschen können. CRDs Beim Löschen von Add-Ons wird nicht darauf gewartet, dass das Löschen der CRD abgeschlossen ist. Dadurch verbleibt das CRDs Add-On im Endzustand und Neuinstallationen werden verhindert.
Um dieses Problem zu diagnostizieren
-
Prüfen Sie, ob CRDs vorhanden.
kubectl get crd | grep inference.sagemaker.aws.amazon.com -
Suchen Sie nach festgefahrenen benutzerdefinierten Ressourcen.
# Check for JumpStartModel resources kubectl get jumpstartmodels -A # Check for InferenceEndpointConfig resources kubectl get inferenceendpointconfigs -A -
Untersuchen Sie die Finalizer für festgefahrene Ressourcen.
# Example for a specific JumpStartModel kubectl get jumpstartmodels <model-name> -n <namespace> -o jsonpath='{.metadata.finalizers}' # Example for a specific InferenceEndpointConfig kubectl get inferenceendpointconfigs <config-name> -n <namespace> -o jsonpath='{.metadata.finalizers}'
Auflösung
Entfernen Sie die Finalizer manuell aus allen Modellbereitstellungen, die nicht gelöscht wurden, als Sie das Inferenz-Add-on entfernt haben. Führen Sie die folgenden Schritte für jede festgefahrene benutzerdefinierte Ressource aus.
Um Finalizer aus Ressourcen zu entfernen JumpStartModel
-
Listet alle JumpStartModel Ressourcen in allen Namespaces auf.
kubectl get jumpstartmodels -A -
Entfernen Sie für jede JumpStartModel Ressource die Finalizer, indem Sie die Ressource so patchen, dass metadata.finalizers auf ein leeres Array gesetzt wird.
kubectl patch jumpstartmodels <model-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=mergeDas folgende Beispiel zeigt, wie eine Ressource mit dem Namen kv-l1-only gepatcht wird.
kubectl patch jumpstartmodels kv-l1-only -n default -p '{"metadata":{"finalizers":[]}}' --type=merge -
Stellen Sie sicher, dass die Modellinstanz gelöscht wurde.
kubectl get jumpstartmodels -AWenn alle Ressourcen bereinigt sind, sollte die folgende Ausgabe angezeigt werden.
Error from server (NotFound): Unable to list "inference.sagemaker.aws.amazon.com/v1, Resource=jumpstartmodels": the server could not find the requested resource (get jumpstartmodels.inference.sagemaker.aws.amazon.com) -
Stellen Sie sicher, dass die JumpStartModel CRD entfernt wurde.
kubectl get crd | grep jumpstartmodels---inference---sagemaker---aws.amazon.com.rproxy.govskope.caWenn die CRD erfolgreich entfernt wurde, gibt dieser Befehl keine Ausgabe zurück.
Um Finalizer aus Ressourcen zu entfernen InferenceEndpointConfig
-
Listet alle InferenceEndpointConfig Ressourcen in allen Namespaces auf.
kubectl get inferenceendpointconfigs -A -
Entfernen Sie für jede InferenceEndpointConfig Ressource die Finalizer.
kubectl patch inferenceendpointconfigs <config-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=mergeDas folgende Beispiel zeigt, wie eine Ressource mit dem Namen gepatcht wird. my-inference-config
kubectl patch inferenceendpointconfigs my-inference-config -n default -p '{"metadata":{"finalizers":[]}}' --type=merge -
Stellen Sie sicher, dass die Konfigurationsinstanz gelöscht wurde.
kubectl get inferenceendpointconfigs -AWenn alle Ressourcen bereinigt sind, sollte die folgende Ausgabe angezeigt werden.
Error from server (NotFound): Unable to list "inference.sagemaker.aws.amazon.com/v1, Resource=inferenceendpointconfigs": the server could not find the requested resource (get inferenceendpointconfigs.inference.sagemaker.aws.amazon.com) -
Stellen Sie sicher, dass die InferenceEndpointConfig CRD entfernt wurde.
kubectl get crd | grep inferenceendpointconfigs---inference---sagemaker---aws.amazon.com.rproxy.govskope.caWenn die CRD erfolgreich entfernt wurde, gibt dieser Befehl keine Ausgabe zurück.
Um das Inferenz-Add-on neu zu installieren
Nachdem Sie alle festgefahrenen Ressourcen bereinigt und sichergestellt haben, dass sie entfernt wurden, installieren CRDs Sie das Inferenz-Add-on erneut. Weitere Informationen finden Sie unter Installation des Inference Operators mit dem EKS-Add-on.
Verifizierung
-
Stellen Sie sicher, dass das Inferenz-Add-on erfolgreich installiert wurde.
aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health}" \ --output tableDer Status sollte AKTIV sein und die Health sollte GESUND sein.
-
Stellen Sie sicher, dass sie ordnungsgemäß installiert CRDs sind.
kubectl get crd | grep inference---sagemaker---aws.amazon.com.rproxy.govskope.caIn der Ausgabe sollten die Inferenzinformationen CRDs aufgeführt sein.
-
Testen Sie die Erstellung einer neuen Modellbereitstellung, um sicherzustellen, dass das Problem behoben ist.
# Create a test deployment using your preferred method kubectl apply -f <your-model-deployment.yaml>
Prävention
Um dieses Problem zu vermeiden, führen Sie die folgenden Schritte aus, bevor Sie das Inferenz-Add-on deinstallieren.
-
Löschen Sie alle Modellbereitstellungen.
# Delete all JumpStartModel resources kubectl delete jumpstartmodels --all -A # Delete all InferenceEndpointConfig resources kubectl delete inferenceendpointconfigs --all -A # Wait for all resources to be fully deleted kubectl get jumpstartmodels -A kubectl get inferenceendpointconfigs -A -
Stellen Sie sicher, dass alle benutzerdefinierten Ressourcen gelöscht wurden.
-
Nachdem Sie bestätigt haben, dass alle Ressourcen bereinigt wurden, löschen Sie das Inferenz-Add-on.
Die Installation des Inference-Add-Ons ist aufgrund des fehlenden Cert-Managers fehlgeschlagen
Problem: Die Erstellung des Add-Ons für den Inferenzoperator schlägt fehl, weil das EKS-Add-On für Cert-Manager nicht installiert ist, was dazu führt, dass benutzerdefinierte Ressourcendefinitionen () fehlen. CRDs
Symptome und Diagnose
Fehlermeldungen:
Die folgenden Fehler treten in den Protokollen zur Erstellung von Add-ons oder in den Protokollen der Inferenzoperatoren auf:
Missing required CRD: certificaterequests.cert-manager.io. The cert-manager add-on is not installed. Please install cert-manager and see the troubleshooting guide for more information.
Schritte zur Diagnose:
-
Prüfen Sie, ob cert-manager installiert ist:
# Check for cert-manager CRDs kubectl get crd | grep cert-manager kubectl get pods -n cert-manager # Check EKS add-on status aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION 2>/dev/null || echo "Cert-manager not installed" -
Überprüfen Sie den Status des Add-ons für den Inferenzoperator:
aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,Issues:issues}" \ --output json
Auflösung
Schritt 1: Installieren Sie das Cert-Manager-Add-On
-
Installieren Sie das cert-manager EKS-Add-on:
aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name cert-manager \ --addon-version v1.18.2-eksbuild.2 \ --region $REGION -
Überprüfen Sie die Installation von cert-manager:
# Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION # Verify cert-manager pods are running kubectl get pods -n cert-manager # Verify CRDs are installed kubectl get crd | grep cert-manager | wc -l # Expected: Should show multiple cert-manager CRDs
Schritt 2: Versuchen Sie erneut, den Inference Operator zu installieren
-
Versuchen Sie nach der Installation des Cert-Managers erneut, den Inferenzoperator zu installieren:
# Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall the inference operator add-on aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION -
Überwachen Sie die Installation:
# Check installation status aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health}" \ --output table # Verify inference operator pods are running kubectl get pods -n hyperpod-inference-system
Die Installation des Inference-Add-ons ist aufgrund des fehlenden ALB-Controllers fehlgeschlagen
Problem: Die Erstellung des Inferenzoperator-Add-ons schlägt fehl, weil der Load AWS Balancer Controller für das Inferenz-Add-on nicht installiert oder nicht richtig konfiguriert ist.
Symptome und Diagnose
Fehlermeldungen:
Die folgenden Fehler treten in den Protokollen zur Erstellung von Add-ons oder in den Protokollen der Inferenzoperatoren auf:
ALB Controller not installed (missing aws-load-balancer-controller pods). Please install the Application Load Balancer Controller and see the troubleshooting guide for more information.
Schritte zur Diagnose:
-
Prüfen Sie, ob ALB Controller installiert ist:
# Check for ALB Controller pods kubectl get pods -n kube-system | grep aws-load-balancer-controller kubectl get pods -n hyperpod-inference-system | grep aws-load-balancer-controller # Check ALB Controller service account kubectl get serviceaccount aws-load-balancer-controller -n kube-system 2>/dev/null || echo "ALB Controller service account not found" kubectl get serviceaccount aws-load-balancer-controller -n hyperpod-inference-system 2>/dev/null || echo "ALB Controller service account not found in inference namespace" -
Überprüfen Sie die Konfiguration des Zusatzmoduls für den Inferenzoperator:
aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,ConfigurationValues:configurationValues}" \ --output json
Auflösung
Wählen Sie je nach Konfiguration eine der folgenden Optionen:
Option 1: Lassen Sie das Inferenz-Add-on den ALB Controller installieren (empfohlen)
-
Stellen Sie sicher, dass die ALB-Rolle in Ihrer Add-On-Konfiguration erstellt und ordnungsgemäß konfiguriert ist:
# Verify ALB role exists export ALB_ROLE_ARN=$(aws iam get-role --role-name alb-role --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "ALB Role ARN: $ALB_ROLE_ARN" # Update your addon-config.json to enable ALB cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "enabled": true, "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF
Option 2: Verwenden Sie die vorhandene ALB Controller-Installation
-
Wenn Sie ALB Controller bereits installiert haben, konfigurieren Sie das Add-On so, dass es die bestehende Installation verwendet:
# Update your addon-config.json to disable ALB installation cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "enabled": false }, "keda": { "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF
Schritt 3: Versuchen Sie erneut, den Inference Operator zu installieren
-
Installieren Sie das Inferenzoperator-Add-on mit der aktualisierten Konfiguration erneut:
# Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall with updated configuration aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION -
Stellen Sie sicher, dass der ALB Controller funktioniert:
# Check ALB Controller pods kubectl get pods -n hyperpod-inference-system | grep aws-load-balancer-controller kubectl get pods -n kube-system | grep aws-load-balancer-controller # Check service account annotations kubectl describe serviceaccount aws-load-balancer-controller -n hyperpod-inference-system 2>/dev/null kubectl describe serviceaccount aws-load-balancer-controller -n kube-system 2>/dev/null
Die Installation des Inference Add-ons ist aufgrund eines fehlenden KEDA-Operators fehlgeschlagen
Problem: Die Erstellung des Inferenzoperator-Add-ons schlägt fehl, weil der KEDA-Operator (Kubernetes Event Driven Autoscaler) nicht installiert oder für das Inferenz-Add-on nicht richtig konfiguriert ist.
Symptome und Diagnose
Fehlermeldungen:
Die folgenden Fehler treten in den Protokollen zur Erstellung von Add-ons oder in den Protokollen der Inferenzoperatoren auf:
KEDA operator not installed (missing keda-operator pods). KEDA can be installed separately in any namespace or via the Inference addon.
Schritte zur Diagnose:
-
Prüfen Sie, ob der KEDA-Operator installiert ist:
# Check for KEDA operator pods in common namespaces kubectl get pods -n keda-system | grep keda-operator 2>/dev/null || echo "KEDA not found in keda-system namespace" kubectl get pods -n kube-system | grep keda-operator 2>/dev/null || echo "KEDA not found in kube-system namespace" kubectl get pods -n hyperpod-inference-system | grep keda-operator 2>/dev/null || echo "KEDA not found in inference namespace" # Check for KEDA CRDs kubectl get crd | grep keda 2>/dev/null || echo "KEDA CRDs not found" # Check KEDA service account kubectl get serviceaccount keda-operator -A 2>/dev/null || echo "KEDA service account not found" -
Überprüfen Sie die Konfiguration des Zusatzmoduls für den Inferenzoperator:
aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,ConfigurationValues:configurationValues}" \ --output json
Auflösung
Wählen Sie je nach Konfiguration eine der folgenden Optionen:
Option 1: Lassen Sie das Inferenz-Add-on KEDA installieren (empfohlen)
-
Stellen Sie sicher, dass die KEDA-Rolle in Ihrer Add-On-Konfiguration erstellt und ordnungsgemäß konfiguriert ist:
# Verify KEDA role exists export KEDA_ROLE_ARN=$(aws iam get-role --role-name keda-operator-role --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "KEDA Role ARN: $KEDA_ROLE_ARN" # Update your addon-config.json to enable KEDA cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "enabled": true, "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF
Option 2: Verwenden Sie die vorhandene KEDA-Installation
-
Wenn Sie KEDA bereits installiert haben, konfigurieren Sie das Add-on so, dass es die bestehende Installation verwendet:
# Update your addon-config.json to disable KEDA installation cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "enabled": false } } EOF
Schritt 3: Versuchen Sie erneut, den Inference Operator zu installieren
-
Installieren Sie das Inferenzoperator-Add-on mit der aktualisierten Konfiguration erneut:
# Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall with updated configuration aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION -
Stellen Sie sicher, dass KEDA funktioniert:
# Check KEDA pods kubectl get pods -n hyperpod-inference-system | grep keda kubectl get pods -n kube-system | grep keda kubectl get pods -n keda-system | grep keda 2>/dev/null # Check KEDA CRDs kubectl get crd | grep scaledobjects kubectl get crd | grep scaledjobs # Check KEDA service account annotations kubectl describe serviceaccount keda-operator -n hyperpod-inference-system 2>/dev/null kubectl describe serviceaccount keda-operator -n kube-system 2>/dev/null kubectl describe serviceaccount keda-operator -n keda-system 2>/dev/null
Timeout beim Herunterladen von Zertifikaten
Bei der Bereitstellung eines SageMaker KI-Endpunkts schlägt der Erstellungsprozess fehl, da das Zertifikat der Zertifizierungsstelle (CA) in einer VPC-Umgebung nicht heruntergeladen werden kann. Ausführliche Konfigurationsschritte finden Sie im Administratorhandbuch
Fehlermeldung:
Der folgende Fehler wird in den SageMaker CloudWatch AI-Endpunktprotokollen angezeigt:
Error downloading CA certificate: Connect timeout on endpoint URL: "https://****.s3.<REGION>.amazonaws.com/****/***.pem"
Grundursache:
-
Dieses Problem tritt auf, wenn der Inferenzoperator nicht auf das selbstsignierte Zertifikat in Amazon S3 in Ihrer VPC zugreifen kann
-
Die richtige Konfiguration des Amazon S3 S3-VPC-Endpunkts ist für den Zertifikatszugriff unerlässlich
Auflösung
-
Wenn Sie keinen Amazon S3 S3-VPC-Endpunkt haben:
-
Erstellen Sie einen Amazon S3 S3-VPC-Endpunkt gemäß der Konfiguration in Abschnitt 5.3 des Administratorhandbuchs
.
-
-
Wenn Sie bereits einen Amazon S3 S3-VPC-Endpunkt haben:
-
Stellen Sie sicher, dass die Subnetz-Routentabelle so konfiguriert ist, dass sie auf den VPC-Endpunkt verweist (wenn Sie den Gateway-Endpunkt verwenden) oder dass privates DNS für den Schnittstellenendpunkt aktiviert ist.
-
Der Amazon S3 S3-VPC-Endpunkt sollte der Konfiguration ähneln, die in Abschnitt 5.3 Schritt zur Endpunkterstellung erwähnt wurde
-
Die Modellbereitstellung blieb im Status „Ausstehend“ hängen
Bei der Bereitstellung eines Modells verbleibt die Bereitstellung über einen längeren Zeitraum im Status „Ausstehend“. Dies weist darauf hin, dass der Inferenzoperator die Modellbereitstellung in Ihrem HyperPod Cluster nicht initiieren kann.
Betroffene Komponenten:
Während der normalen Bereitstellung sollte der Inferenzoperator:
-
Model Pod bereitstellen
-
Einen Load Balancer erstellen
-
SageMaker KI-Endpunkt erstellen
Schritte zur Fehlerbehebung:
-
Überprüfen Sie den Pod-Status des Inferenz-Operators:
kubectl get pods -n hyperpod-inference-systemBeispiel für eine erwartete Ausgabe:
NAME READY STATUS RESTARTS AGE hyperpod-inference-operator-controller-manager-65c49967f5-894fg 1/1 Running 0 6d13h -
Überprüfen Sie die Protokolle der Inferenzoperatoren und überprüfen Sie die Operatorprotokolle auf Fehlermeldungen:
kubectl logs hyperpod-inference-operator-controller-manager-5b5cdd7757-txq8f -n hyperpod-inference-operator-system
Worauf Sie achten sollten:
-
Fehlermeldungen in den Bedienerprotokollen
-
Status des Bediener-Pods
-
Alle Warnungen oder Fehler im Zusammenhang mit der Bereitstellung
Anmerkung
Bei einer fehlerfreien Bereitstellung sollte der Status „Ausstehend“ innerhalb eines angemessenen Zeitraums überschritten werden. Falls die Probleme weiterhin bestehen, überprüfen Sie die Protokolle der Inferenzoperatoren auf spezifische Fehlermeldungen, um die Ursache zu ermitteln.
Die Modellbereitstellung ist fehlgeschlagen, Status „Fehlerbehebung“
Wenn eine Modellbereitstellung in den Status „Fehlgeschlagen“ übergeht, kann der Fehler in einer von drei Komponenten auftreten:
-
Bereitstellung eines Modell-Pods
-
Erstellung eines Load Balancers
-
SageMaker Erstellung von KI-Endpunkten
Schritte zur Fehlerbehebung:
-
Überprüfen Sie den Status des Inferenzoperators:
kubectl get pods -n hyperpod-inference-systemErwartete Ausgabe:
NAME READY STATUS RESTARTS AGE hyperpod-inference-operator-controller-manager-65c49967f5-894fg 1/1 Running 0 6d13h -
Überprüfen Sie die Operatorprotokolle:
kubectl logs hyperpod-inference-operator-controller-manager-5b5cdd7757-txq8f -n hyperpod-inference-operator-system
Worauf Sie achten sollten:
In den Benutzerprotokollen wird angegeben, welche Komponente ausgefallen ist:
-
Fehler bei der Bereitstellung des Modell-Pods
-
Probleme bei der Erstellung des Load Balancers
-
SageMaker Fehler an KI-Endpunkten
Überprüfung des Fortschritts der Modellbereitstellung
Um den Fortschritt Ihrer Modellbereitstellung zu überwachen und potenzielle Probleme zu identifizieren, können Sie kubectl-Befehle verwenden, um den Status verschiedener Komponenten zu überprüfen. Auf diese Weise können Sie feststellen, ob die Bereitstellung normal verläuft oder ob bei der Erstellung des Modell-Pods, beim Load Balancer-Setup oder bei der Konfiguration der SageMaker KI-Endgeräte Probleme aufgetreten sind.
Methode 1: Überprüfen Sie den Modellstatus JumpStart
kubectl describe jumpstartmodel.inference.sagemaker.aws.amazon.com/<model-name> -n <namespace>
Wichtige zu überwachende Statusindikatoren:
-
Bereitstellungsstatus
-
Suchen Sie nach
Status.State: Sollte angezeigt werdenDeploymentComplete -
Prüfen
Status.Deployment Status.Available Replicas -
Überwachen Sie
Status.Conditionsden Fortschritt der Bereitstellung
-
-
SageMaker Status des KI-Endpunkts
-
Prüfen
Status.Endpoints.Sagemaker.State: Sollte angezeigt werdenCreationCompleted -
Verifizieren
Status.Endpoints.Sagemaker.Endpoint Arn
-
-
Status des TLS-Zertifikats
-
Status.Tls CertificateEinzelheiten anzeigen -
Überprüfen Sie den Ablauf des Zertifikats in
Last Cert Expiry Time
-
Methode 2: Überprüfen Sie die Konfiguration des Inferenzendpunkts
kubectl describe inferenceendpointconfig.inference.sagemaker.aws.amazon.com/<deployment_name> -n <namespace>
Allgemeine Statuszustände:
-
DeploymentInProgress: Erste Bereitstellungsphase -
DeploymentComplete: Erfolgreicher Einsatz -
Failed: Die Bereitstellung ist fehlgeschlagen
Anmerkung
Überwachen Sie den Abschnitt Ereignisse auf Warnungen oder Fehler. Prüfen Sie, ob die Anzahl der Replikate der erwarteten Konfiguration entspricht. Stellen Sie sicher, dass alle Bedingungen Status:
True für eine fehlerfreie Bereitstellung vorliegen.
Problem mit der VPC-ENI-Berechtigung
SageMaker Die Erstellung von KI-Endpunkten schlägt fehl, da die Berechtigungen zum Erstellen von Netzwerkschnittstellen in VPC nicht ausreichen.
Fehlermeldung:
Please ensure that the execution role for variant AllTraffic has sufficient permissions for creating an endpoint variant within a VPC
Grundursache:
Der Ausführungsrolle des Inferenzoperators fehlt die erforderliche Amazon EC2 EC2-Berechtigung zum Erstellen von Netzwerkschnittstellen (ENI) in VPC.
Auflösung
Fügen Sie der Ausführungsrolle des Inferenzoperators die folgende IAM-Berechtigung hinzu:
{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterfacePermission" ], "Resource": "*" }
Überprüfung:
Nach dem Hinzufügen der Erlaubnis:
-
Löschen Sie den ausgefallenen Endpunkt (falls vorhanden)
-
Versuchen Sie erneut, den Endpunkt zu erstellen
-
Überwachen Sie den Bereitstellungsstatus, um den erfolgreichen Abschluss sicherzustellen
Anmerkung
Diese Berechtigung ist für SageMaker KI-Endpunkte, die im VPC-Modus ausgeführt werden, unerlässlich. Stellen Sie sicher, dass die Ausführungsrolle auch über alle anderen erforderlichen VPC-bezogenen Berechtigungen verfügt.
Problem mit der IAM-Vertrauensbeziehung
HyperPod Der Inferenzoperator startet nicht mit einem AssumeRoleWithWebIdentity STS-Fehler, was auf ein Problem mit der Konfiguration der IAM-Vertrauensbeziehung hinweist.
Fehlermeldung:
failed to enable inference watcher for HyperPod cluster *****: operation error SageMaker: UpdateClusterInference, get identity: get credentials: failed to refresh cached credentials, failed to retrieve credentials, operation error STS: AssumeRoleWithWebIdentity, https response error StatusCode: 403, RequestID: ****, api error AccessDenied: Not authorized to perform sts:AssumeRoleWithWebIdentity
Auflösung
Aktualisieren Sie die Vertrauensstellung der IAM-Ausführungsrolle des Inferenzoperators mit der folgenden Konfiguration.
Ersetzen die folgenden Platzhalter:
-
<ACCOUNT_ID>: Ihre Konto-ID AWS -
<REGION>: Deine AWS Region -
<OIDC_ID>: Die OIDC-Anbieter-ID Ihres Amazon EKS-Clusters
Überprüfung:
Nach der Aktualisierung der Vertrauensbeziehung:
-
Überprüfen Sie die Rollenkonfiguration in der IAM-Konsole
-
Starten Sie den Inferenzoperator bei Bedarf neu
-
Überwachen Sie die Operatorprotokolle für einen erfolgreichen Start
Fehler beim fehlenden NVIDIA-GPU-Plugin
Die Modellbereitstellung schlägt mit einem GPU-Insuffizienzfehler fehl, obwohl GPU-Knoten verfügbar sind. Dies tritt auf, wenn das NVIDIA-Geräte-Plug-In nicht im HyperPod Cluster installiert ist.
Fehlermeldung:
0/15 nodes are available: 10 node(s) didn't match Pod's node affinity/selector, 5 Insufficient nvidia.com/gpu. preemption: 0/15 nodes are available: 10 Preemption is not helpful for scheduling, 5 No preemption victims found for incoming pod.
Grundursache:
-
Kubernetes kann ohne das NVIDIA-Geräte-Plugin keine GPU-Ressourcen erkennen
-
Führt zu Planungsfehlern für GPU-Workloads
Auflösung
Installieren Sie das NVIDIA-GPU-Plugin, indem Sie Folgendes ausführen:
kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/refs/tags/v0.17.1/deployments/static/nvidia-device-plugin.yml
Schritte zur Überprüfung:
-
Überprüfen Sie den Status der Plugin-Bereitstellung:
kubectl get pods -n kube-system | grep nvidia-device-plugin -
Stellen Sie sicher, dass die GPU-Ressourcen jetzt sichtbar sind:
kubectl get nodes -o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\\.com/gpu -
Versuchen Sie erneut, das Modell bereitzustellen
Anmerkung
Stellen Sie sicher, dass NVIDIA-Treiber auf GPU-Knoten installiert sind. Die Plugin-Installation ist ein einmaliges Setup pro Cluster. Für die Installation sind möglicherweise Cluster-Administratorrechte erforderlich.
Der Inferenzoperator kann nicht gestartet werden
Der Inferenzoperator-Pod konnte nicht gestartet werden und verursacht die folgende Fehlermeldung. Dieser Fehler ist darauf zurückzuführen, dass die Berechtigungsrichtlinie für die Operator-Ausführungsrolle nicht autorisiert ist. sts:AssumeRoleWithWebIdentity Aus diesem Grund wird der Operatorteil, der auf der Steuerungsebene ausgeführt wird, nicht gestartet.
Fehlermeldung:
Warning Unhealthy 5m46s (x22 over 49m) kubelet Startup probe failed: Get "http://10.1.100.59:8081/healthz": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
Grundursache:
-
Die Berechtigungsrichtlinie der Ausführungsrolle des Inferenzoperators ist nicht auf den Zugriff auf das Autorisierungstoken für Ressourcen festgelegt.
Auflösung
Legen Sie die folgende Richtlinie für die Ausführungsrolle EXECUTION_ROLE_ARN für den HyperPod Inferenzoperator fest:
HyperpodInferenceAccessPolicy-ml-cluster to include all resources
Schritte zur Überprüfung:
-
Ändern der Richtlinie
-
Beenden Sie den HyperPod Inferenzoperator-Pod.
-
Der Pod wird neu gestartet, ohne dass Ausnahmen ausgelöst werden.