HyperPod risoluzione dei problemi di inferenza - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

HyperPod risoluzione dei problemi di inferenza

Questa guida alla risoluzione dei problemi più comuni che possono verificarsi durante la distribuzione e il funzionamento di Amazon SageMaker HyperPod Inference. Questi problemi riguardano in genere la configurazione della rete VPC, le autorizzazioni IAM, la gestione delle risorse Kubernetes e i problemi di connettività degli operatori che possono impedire la corretta implementazione del modello o causare il fallimento delle implementazioni o il mantenimento di stati in sospeso.

Questa guida alla risoluzione dei problemi utilizza la seguente terminologia: le procedure di risoluzione dei problemi sono procedure diagnostiche per identificare e analizzare i problemi, Resolution fornisce le azioni specifiche per risolvere i problemi identificati e Verification conferma che la soluzione ha funzionato correttamente.

Riferimento rapido: trova il tuo problema

Utilizza le seguenti categorie per individuare rapidamente la sezione di risoluzione dei problemi relativa al tuo problema:

L'installazione del componente aggiuntivo Inference non è riuscita a causa della mancanza di driver CSI

Problema: la creazione del componente aggiuntivo dell'operatore di inferenza non riesce perché le dipendenze dei driver CSI richieste non sono installate nel cluster EKS.

Sintomi e diagnosi

Messaggi di errore:

I seguenti errori vengono visualizzati nei registri di creazione dei componenti aggiuntivi o nei registri degli operatori di inferenza:

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.

Fasi diagnostiche:

  1. Controlla se i driver CSI sono installati:

    # 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
  2. Controlla lo stato del componente aggiuntivo EKS:

    # 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"
  3. Controlla lo stato del componente aggiuntivo dell'operatore di inferenza:

    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

Risoluzione

Passaggio 1: installa il driver S3 CSI mancante

  1. Crea il ruolo IAM per il driver S3 CSI (se non è già stato creato):

    # 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"
  2. Installa il componente aggiuntivo del driver S3 CSI:

    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
  3. Verifica l'installazione del driver S3 CSI:

    # 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

Fase 2: Installare il driver CSI mancante FSx

  1. Crea il ruolo IAM per il driver FSx CSI (se non è già stato creato):

    # 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"
  2. Installa il FSx componente aggiuntivo del driver CSI:

    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

Verifica tutte le dipendenze

Dopo aver installato le dipendenze mancanti, verifica che funzionino correttamente prima di riprovare l'installazione dell'operatore di inferenza:

# 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

Mancano le definizioni di risorse personalizzate di inferenza durante la distribuzione del modello

Problema: le definizioni di risorse personalizzate (CRDs) mancano quando si tenta di creare distribuzioni di modelli. Questo problema si verifica quando in precedenza hai installato ed eliminato il componente aggiuntivo di inferenza senza ripulire le distribuzioni di modelli che dispongono di finalizzatori.

Sintomi e diagnosi

Causa principale:

Se si elimina il componente aggiuntivo di inferenza senza prima rimuovere tutte le distribuzioni del modello, le risorse personalizzate con i finalizzatori rimangono nel cluster. Questi finalizzatori devono essere completati prima di poter eliminare il. CRDs Il processo di eliminazione dei componenti aggiuntivi non attende il completamento dell'eliminazione del CRD, il che fa sì che il componente CRDs rimanga in uno stato terminale e impedisca nuove installazioni.

Per diagnosticare questo problema

  1. Controlla se CRDs esistono.

    kubectl get crd | grep inference.sagemaker.aws.amazon.com
  2. Verifica la presenza di risorse personalizzate bloccate.

    # Check for JumpStartModel resources kubectl get jumpstartmodels -A # Check for InferenceEndpointConfig resources kubectl get inferenceendpointconfigs -A
  3. Ispeziona i finalizzatori sulle risorse bloccate.

    # 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}'

Risoluzione

Rimuovi manualmente i finalizzatori da tutte le implementazioni del modello che non sono state eliminate quando hai rimosso il componente aggiuntivo di inferenza. Completa i seguenti passaggi per ogni risorsa personalizzata bloccata.

Per rimuovere i finalizzatori dalle risorse JumpStartModel

  1. Elenca tutte le JumpStartModel risorse in tutti i namespace.

    kubectl get jumpstartmodels -A
  2. Per ogni JumpStartModel risorsa, rimuovi i finalizzatori applicando una patch alla risorsa per impostare metadata.finalizers su un array vuoto.

    kubectl patch jumpstartmodels <model-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge

    L'esempio seguente mostra come applicare una patch a una risorsa denominata kv-l1-only.

    kubectl patch jumpstartmodels kv-l1-only -n default -p '{"metadata":{"finalizers":[]}}' --type=merge
  3. Verificate che l'istanza del modello sia eliminata.

    kubectl get jumpstartmodels -A

    Quando tutte le risorse vengono ripulite, dovresti vedere il seguente output.

    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)
  4. Verificate che il JumpStartModel CRD sia stato rimosso.

    kubectl get crd | grep jumpstartmodels.inference.sagemaker.aws.amazon.com

    Se il CRD viene rimosso con successo, questo comando non restituisce alcun output.

Per rimuovere i finalizzatori dalle risorse InferenceEndpointConfig

  1. Elenca tutte le InferenceEndpointConfig risorse in tutti i namespace.

    kubectl get inferenceendpointconfigs -A
  2. Per ogni InferenceEndpointConfig risorsa, rimuovi i finalizzatori.

    kubectl patch inferenceendpointconfigs <config-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge

    L'esempio seguente mostra come applicare una patch a una risorsa denominata. my-inference-config

    kubectl patch inferenceendpointconfigs my-inference-config -n default -p '{"metadata":{"finalizers":[]}}' --type=merge
  3. Verifica che l'istanza di configurazione sia eliminata.

    kubectl get inferenceendpointconfigs -A

    Quando tutte le risorse vengono ripulite, dovresti vedere il seguente output.

    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)
  4. Verificate che il InferenceEndpointConfig CRD sia stato rimosso.

    kubectl get crd | grep inferenceendpointconfigs.inference.sagemaker.aws.amazon.com

    Se il CRD viene rimosso con successo, questo comando non restituisce alcun output.

Per reinstallare il componente aggiuntivo di inferenza

Dopo aver ripulito tutte le risorse bloccate e verificato che siano CRDs state rimosse, reinstallate il componente aggiuntivo di inferenza. Per ulteriori informazioni, consulta Installazione del componente aggiuntivo Inference Operator with EKS.

Verifica

  1. Verificate che il componente aggiuntivo di inferenza sia installato correttamente.

    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

    Lo Status deve essere ATTIVO e l'Health deve essere SANO.

  2. Verifica che CRDs siano installati correttamente.

    kubectl get crd | grep inference.sagemaker.aws.amazon.com

    Dovresti vedere i dati relativi all'inferenza CRDs elencati nell'output.

  3. Prova a creare un nuovo modello di distribuzione per confermare che il problema è stato risolto.

    # Create a test deployment using your preferred method kubectl apply -f <your-model-deployment.yaml>

Prevenzione

Per evitare questo problema, completa i seguenti passaggi prima di disinstallare il componente aggiuntivo di inferenza.

  1. Eliminare tutte le distribuzioni dei modelli.

    # 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
  2. Verifica che tutte le risorse personalizzate vengano eliminate.

  3. Dopo aver confermato che tutte le risorse sono state ripulite, elimina il componente aggiuntivo di inferenza.

L'installazione del componente aggiuntivo Inference non è riuscita a causa della mancanza di cert-manager

Problema: la creazione del componente aggiuntivo per l'operatore di inferenza non riesce perché il componente aggiuntivo EKS cert-manager non è installato, pertanto mancano le Custom Resource Definitions (). CRDs

Sintomi e diagnosi

Messaggi di errore:

I seguenti errori vengono visualizzati nei registri di creazione dei componenti aggiuntivi o nei registri degli operatori di inferenza:

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.

Fasi diagnostiche:

  1. Controlla se cert-manager è installato:

    # 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"
  2. Controlla lo stato del componente aggiuntivo dell'operatore di inferenza:

    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

Risoluzione

Passaggio 1: installa il componente aggiuntivo cert-manager

  1. Installa il componente aggiuntivo cert-manager EKS:

    aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name cert-manager \ --addon-version v1.18.2-eksbuild.2 \ --region $REGION
  2. Verifica l'installazione di 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

Fase 2: Riprovare l'installazione dell'operatore di inferenza

  1. Dopo aver installato cert-manager, riprova a installare l'operatore di inferenza:

    # 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
  2. Monitora l'installazione:

    # 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

L'installazione del componente aggiuntivo Inference non è riuscita a causa della mancanza del controller ALB

Problema: la creazione del componente aggiuntivo dell'operatore di inferenza non riesce perché il Load AWS Balancer Controller non è installato o non è configurato correttamente per il componente aggiuntivo di inferenza.

Sintomi e diagnosi

Messaggi di errore:

I seguenti errori vengono visualizzati nei registri di creazione dei componenti aggiuntivi o nei registri degli operatori di inferenza:

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.

Fasi diagnostiche:

  1. Controlla se ALB Controller è installato:

    # 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"
  2. Controlla la configurazione del componente aggiuntivo dell'operatore di inferenza:

    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

Risoluzione

Scegliete una delle seguenti opzioni in base alla vostra configurazione:

Opzione 1: consenti al componente aggiuntivo di inferenza di installare ALB Controller (consigliato)

  • Assicurati che il ruolo ALB sia creato e configurato correttamente nella configurazione del componente aggiuntivo:

    # 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

Opzione 2: utilizzare l'installazione esistente del controller ALB

  • Se hai già installato ALB Controller, configura il componente aggiuntivo per utilizzare l'installazione esistente:

    # 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

Fase 3: Riprovare l'installazione dell'operatore di inferenza

  1. Reinstalla il componente aggiuntivo dell'operatore di inferenza con la configurazione aggiornata:

    # 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
  2. Verifica che il controller ALB funzioni:

    # 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

L'installazione del componente aggiuntivo Inference non è riuscita a causa della mancanza dell'operatore KEDA

Problema: la creazione del componente aggiuntivo dell'operatore di inferenza non riesce perché l'operatore KEDA (Kubernetes Event Driven Autoscaler) non è installato o non è configurato correttamente per il componente aggiuntivo di inferenza.

Sintomi e diagnosi

Messaggi di errore:

I seguenti errori vengono visualizzati nei registri di creazione dei componenti aggiuntivi o nei registri degli operatori di inferenza:

KEDA operator not installed (missing keda-operator pods). KEDA can be installed separately in any namespace or via the Inference addon.

Fasi diagnostiche:

  1. Controlla se l'operatore KEDA è installato:

    # 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"
  2. Controlla la configurazione del componente aggiuntivo dell'operatore di inferenza:

    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

Risoluzione

Scegliete una delle seguenti opzioni in base alla vostra configurazione:

Opzione 1: consenti al componente aggiuntivo di inferenza di installare KEDA (consigliato)

  • Assicurati che il ruolo KEDA sia creato e configurato correttamente nella configurazione del componente aggiuntivo:

    # 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

Opzione 2: utilizza l'installazione KEDA esistente

  • Se hai già installato KEDA, configura il componente aggiuntivo per utilizzare l'installazione esistente:

    # 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

Fase 3: Riprovare l'installazione dell'operatore di inferenza

  1. Reinstalla il componente aggiuntivo dell'operatore di inferenza con la configurazione aggiornata:

    # 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
  2. Verifica che KEDA funzioni:

    # 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 per il download del certificato

Quando si implementa un endpoint SageMaker AI, il processo di creazione fallisce a causa dell'impossibilità di scaricare il certificato dell'autorità di certificazione (CA) in un ambiente VPC. Per i passaggi di configurazione dettagliati, consulta la guida per l'amministratore.

Messaggio di errore:

Nei CloudWatch log degli endpoint SageMaker AI viene visualizzato il seguente errore:

Error downloading CA certificate: Connect timeout on endpoint URL: "https://****.s3.<REGION>.amazonaws.com/****/***.pem"

Causa principale:

  • Questo problema si verifica quando l'operatore di inferenza non può accedere al certificato autofirmato in Amazon S3 all'interno del tuo VPC

  • La corretta configurazione dell'endpoint VPC Amazon S3 è essenziale per l'accesso ai certificati.

Risoluzione:

  1. Se non disponi di un endpoint VPC Amazon S3:

  2. Se disponi già di un endpoint VPC Amazon S3:

    • Assicurati che la tabella di routing della sottorete sia configurata per puntare all'endpoint VPC (se si utilizza un endpoint gateway) o che il DNS privato sia abilitato per l'endpoint di interfaccia.

    • L'endpoint VPC di Amazon S3 dovrebbe essere simile alla configurazione menzionata nella sezione 5.3 (fase di creazione dell'endpoint)

Distribuzione del modello bloccata in sospeso

Quando si distribuisce un modello, la distribuzione rimane nello stato «In sospeso» per un periodo prolungato. Ciò indica che l'operatore di inferenza non è in grado di avviare la distribuzione del modello nel cluster. HyperPod

Componenti interessati:

Durante la normale implementazione, l'operatore di inferenza deve:

  • Implementare un pod modello

  • Creazione di un sistema di bilanciamento del carico

  • Crea un SageMaker endpoint AI

Fasi di risoluzione dei problemi:

  1. Controlla lo stato del pod dell'operatore di inferenza:

    kubectl get pods -n hyperpod-inference-system

    Esempio di output previsto:

    NAME READY STATUS RESTARTS AGE hyperpod-inference-operator-controller-manager-65c49967f5-894fg 1/1 Running 0 6d13h
  2. Esamina i registri degli operatori di inferenza ed esamina i registri degli operatori per verificare la presenza di messaggi di errore:

    kubectl logs hyperpod-inference-operator-controller-manager-5b5cdd7757-txq8f -n hyperpod-inference-operator-system

Cosa cercare:

  • Messaggi di errore nei registri degli operatori

  • Stato del pod dell'operatore

  • Eventuali avvisi o guasti relativi all'implementazione

Nota

Una distribuzione efficace dovrebbe superare lo stato «In sospeso» entro un periodo di tempo ragionevole. Se i problemi persistono, esamina i registri degli operatori di inferenza per individuare messaggi di errore specifici per determinare la causa principale.

Risoluzione dei problemi relativi allo stato di distribuzione del modello

Quando l'implementazione di un modello entra in uno stato «Non riuscito», l'errore può verificarsi in uno dei tre componenti:

  • Implementazione del modello pod

  • Creazione di sistemi di bilanciamento del carico

  • SageMaker Creazione di endpoint AI

Fasi di risoluzione dei problemi:

  1. Controlla lo stato dell'operatore di inferenza:

    kubectl get pods -n hyperpod-inference-system

    Output previsto:

    NAME READY STATUS RESTARTS AGE hyperpod-inference-operator-controller-manager-65c49967f5-894fg 1/1 Running 0 6d13h
  2. Esamina i registri dell'operatore:

    kubectl logs hyperpod-inference-operator-controller-manager-5b5cdd7757-txq8f -n hyperpod-inference-operator-system

Cosa cercare:

I registri dell'operatore indicheranno quale componente è guasto:

  • Errori di distribuzione del pod del modello

  • Problemi di creazione del sistema di bilanciamento del carico

  • SageMaker Errori degli endpoint AI

Verifica dell'avanzamento dell'implementazione del modello

Per monitorare l'avanzamento della distribuzione del modello e identificare potenziali problemi, è possibile utilizzare i comandi kubectl per controllare lo stato dei vari componenti. Questo aiuta a determinare se l'implementazione sta procedendo normalmente o se ha riscontrato problemi durante la creazione del pod modello, la configurazione del load balancer o SageMaker le fasi di configurazione degli endpoint AI.

Metodo 1: verifica dello stato del modello JumpStart

kubectl describe jumpstartmodel.inference.sagemaker.aws.amazon.com/<model-name> -n <namespace>

Principali indicatori di stato da monitorare:

  1. Stato dell'implementazione

    • CercaStatus.State: Dovrebbe mostrare DeploymentComplete

    • Controlla Status.Deployment Status.Available Replicas

    • Monitora Status.Conditions l'avanzamento dell'implementazione

  2. SageMaker Stato dell'endpoint AI

    • VerificaStatus.Endpoints.Sagemaker.State: dovrebbe apparire CreationCompleted

    • Verifica Status.Endpoints.Sagemaker.Endpoint Arn

  3. Stato del certificato TLS

    • Visualizza i dettagli Status.Tls Certificate

    • Verifica la scadenza del certificato in Last Cert Expiry Time

Metodo 2: verifica la configurazione dell'endpoint di inferenza

kubectl describe inferenceendpointconfig.inference.sagemaker.aws.amazon.com/<deployment_name> -n <namespace>

Stati di stato comuni:

  • DeploymentInProgress: Fase iniziale di implementazione

  • DeploymentComplete: Implementazione riuscita

  • Failed: Implementazione non riuscita

Nota

Monitora la sezione Eventi per eventuali avvisi o errori. Verifica che il numero di repliche corrisponda alla configurazione prevista. Verifica tutte le condizioni indicate Status: True per una distribuzione corretta.

Rilascio dell'autorizzazione VPC ENI

SageMaker La creazione di endpoint AI non riesce a causa delle autorizzazioni insufficienti per la creazione di interfacce di rete in VPC.

Messaggio di errore:

Please ensure that the execution role for variant AllTraffic has sufficient permissions for creating an endpoint variant within a VPC

Causa principale:

Il ruolo di esecuzione dell'operatore di inferenza non dispone dell'autorizzazione Amazon EC2 richiesta per creare interfacce di rete (ENI) in VPC.

Risoluzione:

Aggiungi la seguente autorizzazione IAM al ruolo di esecuzione dell'operatore di inferenza:

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterfacePermission" ], "Resource": "*" }

Verifica:

Dopo aver aggiunto l'autorizzazione:

  1. Elimina l'endpoint fallito (se esiste)

  2. Riprova a creare l'endpoint

  3. Monitora lo stato della distribuzione per garantirne il corretto completamento

Nota

Questa autorizzazione è essenziale per gli endpoint SageMaker AI in esecuzione in modalità VPC. Assicurati che il ruolo di esecuzione disponga anche di tutte le altre autorizzazioni necessarie relative al VPC.

Problema di relazione fiduciaria IAM

HyperPod l'operatore di inferenza non riesce a iniziare con un AssumeRoleWithWebIdentity errore STS, il che indica un problema di configurazione della relazione di fiducia IAM.

Messaggio di errore:

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

Risoluzione:

Aggiorna la relazione di trust del ruolo di esecuzione IAM dell'operatore di inferenza con la seguente configurazione.

Sostituire i seguenti segnaposto:

  • <ACCOUNT_ID>: L'ID del tuo AWS account

  • <REGION>: La tua AWS regione

  • <OIDC_ID>: ID provider OIDC del tuo cluster Amazon EKS

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.us-east-2.amazonaws.com/id/<OIDC_ID>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "oidc.eks.us-east-2.amazonaws.com/id/<OIDC_ID>:sub": "system:serviceaccount:<namespace>:<service-account-name>", "oidc.eks.us-east-2.amazonaws.com/id/<OIDC_ID>:aud": "sts.amazonaws.com" } } }, { "Effect": "Allow", "Principal": { "Service": [ "sagemaker.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Verifica:

Dopo aver aggiornato la relazione di fiducia:

  1. Verifica la configurazione del ruolo nella console IAM

  2. Se necessario, riavvia l'operatore di inferenza

  3. Monitora i registri degli operatori per un avvio corretto

Errore mancante del plug-in GPU NVIDIA

L'implementazione del modello non riesce a causa di un errore di insufficienza della GPU nonostante siano disponibili nodi GPU. Ciò si verifica quando il plug-in del dispositivo NVIDIA non è installato nel cluster. HyperPod

Messaggio di errore:

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.

Causa principale:

  • Kubernetes non è in grado di rilevare le risorse della GPU senza il plug-in del dispositivo NVIDIA

  • Comporta errori di pianificazione per i carichi di lavoro della GPU

Risoluzione:

Installa il plug-in GPU NVIDIA eseguendo:

kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/refs/tags/v0.17.1/deployments/static/nvidia-device-plugin.yml

Passaggi di verifica:

  1. Controlla lo stato di distribuzione del plugin:

    kubectl get pods -n kube-system | grep nvidia-device-plugin
  2. Verifica che le risorse della GPU siano ora visibili:

    kubectl get nodes -o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\\.com/gpu
  3. Riprova la distribuzione del modello

Nota

Assicurati che i driver NVIDIA siano installati sui nodi GPU. L'installazione del plugin è una configurazione unica per cluster. Potrebbe richiedere i privilegi di amministratore del cluster per l'installazione.

L'operatore di inferenza non si avvia

Il pod dell'operatore di inferenza non è stato avviato e causa il seguente messaggio di errore. Questo errore è dovuto alla politica di autorizzazione relativa al ruolo di esecuzione dell'operatore che non è autorizzato a svolgerests:AssumeRoleWithWebIdentity. Per questo motivo, la parte dell'operatore che gira sul piano di controllo non viene avviata.

Messaggio di errore:

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)

Causa principale:

  • La politica di autorizzazione del ruolo di esecuzione dell'operatore di inferenza non è impostata per accedere al token di autorizzazione per le risorse.

Risoluzione:

Imposta la seguente politica del ruolo di esecuzione di EXECUTION_ROLE_ARN per l'operatore di HyperPod inferenza:

HyperpodInferenceAccessPolicy-ml-cluster to include all resources
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }

Fasi di verifica:

  1. Modifica la politica.

  2. Termina il pod dell'operatore di HyperPod inferenza.

  3. Il pod verrà riavviato senza generare eccezioni.