Distribuisci modelli utilizzando JumpStart kubectl - 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à.

Distribuisci modelli utilizzando JumpStart kubectl

I passaggi seguenti mostrano come distribuire un JumpStart modello in un cluster usando kubectl. HyperPod

Le seguenti istruzioni contengono celle di codice e comandi progettati per essere eseguiti in un terminale. Assicurati di aver configurato l'ambiente con AWS le credenziali prima di eseguire questi comandi.

Prerequisiti

Prima di iniziare, verifica di aver:

Installazione e configurazione

  1. Seleziona la tua regione.

    export REGION=<region>
  2. Visualizza tutti i modelli e i HyperPod cluster di hub SageMaker pubblici.

  3. Seleziona un JumpstartModel da JumpstartPublic Hub. JumpstartPublic hub dispone di un gran numero di modelli, che puoi utilizzare NextToken per elencare in modo iterativo tutti i modelli disponibili nell'hub pubblico.

    aws sagemaker list-hub-contents --hub-name SageMakerPublicHub --hub-content-type Model --query '{Models: HubContentSummaries[].{ModelId:HubContentName,Version:HubContentVersion}, NextToken: NextToken}' --output json
    export MODEL_ID="deepseek-llm-r1-distill-qwen-1-5b" export MODEL_VERSION="2.0.4"
  4. Configura l'ID del modello e il nome del cluster che hai selezionato nelle variabili seguenti.

    Nota

    Rivolgiti all'amministratore del cluster per assicurarti che vengano concesse le autorizzazioni per questo ruolo o utente. Puoi eseguire !aws sts get-caller-identity --query "Arn" l'operazione per verificare quale ruolo o utente stai utilizzando nel tuo terminale.

    aws sagemaker list-clusters --output table # Select the cluster name where you want to deploy the model. export HYPERPOD_CLUSTER_NAME="<insert cluster name here>" # Select the instance that is relevant for your model deployment and exists within the selected cluster. # List availble instances in your HyperPod cluster aws sagemaker describe-cluster --cluster-name=$HYPERPOD_CLUSTER_NAME --query "InstanceGroups[].{InstanceType:InstanceType,Count:CurrentCount}" --output table # List supported instance types for the selected model aws sagemaker describe-hub-content --hub-name SageMakerPublicHub --hub-content-type Model --hub-content-name "$MODEL_ID" --output json | jq -r '.HubContentDocument | fromjson | {Default: .DefaultInferenceInstanceType, Supported: .SupportedInferenceInstanceTypes}' # Select and instance type from the cluster that is compatible with the model. # Make sure that the selected instance is either default or supported instance type for the jumpstart model export INSTANCE_TYPE="<Instance_type_In_cluster"
  5. Conferma con l'amministratore del cluster quale namespace puoi usare. L'amministratore dovrebbe aver creato un account di hyperpod-inference servizio nel tuo namespace.

    export CLUSTER_NAMESPACE="default"
  6. Imposta un nome per l'endpoint e l'oggetto personalizzato da creare.

    export SAGEMAKER_ENDPOINT_NAME="deepsek-qwen-1-5b-test"
  7. Di seguito è riportato un esempio di implementazione di un deepseek-llm-r1-distill-qwen-1-5b modello da Jumpstart. Crea un file yaml di distribuzione simile in base al modello selezionato nel passaggio precedente.

    cat << EOF > jumpstart_model.yaml --- apiVersion: inference.sagemaker.aws.amazon.com/v1alpha1 kind: JumpStartModel metadata: name: $SAGEMAKER_ENDPOINT_NAME namespace: $CLUSTER_NAMESPACE spec: sageMakerEndpoint: name: $SAGEMAKER_ENDPOINT_NAME model: modelHubName: SageMakerPublicHub modelId: $MODEL_ID modelVersion: $MODEL_VERSION server: instanceType: $INSTANCE_TYPE metrics: enabled: true environmentVariables: - name: SAMPLE_ENV_VAR value: "sample_value" maxDeployTimeInSeconds: 1800 autoScalingSpec: cloudWatchTrigger: name: "SageMaker-Invocations" namespace: "AWS/SageMaker" useCachedMetrics: false metricName: "Invocations" targetValue: 10 minValue: 0.0 metricCollectionPeriod: 30 metricStat: "Sum" metricType: "Average" dimensions: - name: "EndpointName" value: "$SAGEMAKER_ENDPOINT_NAME" - name: "VariantName" value: "AllTraffic" EOF

Distribuzione del modello

Aggiorna la configurazione di Kubernetes e distribuisci il tuo modello
  1. Configura kubectl per la connessione al HyperPod cluster orchestrato da Amazon EKS.

    export EKS_CLUSTER_NAME=$(aws --region $REGION sagemaker describe-cluster --cluster-name $HYPERPOD_CLUSTER_NAME \ --query 'Orchestrator.Eks.ClusterArn' --output text | \ cut -d'/' -f2) aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region $REGION
  2. JumpStart Implementa il tuo modello.

    kubectl apply -f jumpstart_model.yaml
Monitora lo stato dell'implementazione del modello
  1. Verifica che il modello sia stato distribuito correttamente.

    kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  2. Verifica che l'endpoint sia stato creato correttamente.

    aws sagemaker describe-endpoint --endpoint-name=$SAGEMAKER_ENDPOINT_NAME --output table
  3. Invoca l'endpoint del modello. È possibile recuperare a livello di codice payload di esempio dall'oggetto. JumpStartModel

    aws sagemaker-runtime invoke-endpoint \ --endpoint-name $SAGEMAKER_ENDPOINT_NAME \ --content-type "application/json" \ --body '{"inputs": "What is AWS SageMaker?"}' \ --region $REGION \ --cli-binary-format raw-in-base64-out \ /dev/stdout

Gestisci la tua implementazione

Elimina la distribuzione JumpStart del modello quando non è più necessaria.

kubectl delete JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
Risoluzione dei problemi

Usa questi comandi di debug se la distribuzione non funziona come previsto.

  1. Controlla lo stato della distribuzione di Kubernetes. Questo comando ispeziona l'oggetto di distribuzione Kubernetes sottostante che gestisce i pod che eseguono il modello. Usalo per risolvere i problemi di pianificazione dei pod, allocazione delle risorse e avvio dei container.

    kubectl describe deployment $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  2. Controlla lo stato della risorsa del tuo modello. JumpStart Questo comando esamina la JumpStartModel risorsa personalizzata che gestisce la configurazione del modello di alto livello e il ciclo di vita della distribuzione. Usalo per risolvere problemi specifici del modello come errori di configurazione o problemi di creazione di endpoint AI. SageMaker

    kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  3. Controlla lo stato di tutti gli oggetti Kubernetes. Questo comando fornisce una panoramica completa di tutte le risorse Kubernetes correlate nel tuo spazio dei nomi. Usalo per un rapido controllo dello stato di salute e per visualizzare lo stato generale dei pod, dei servizi, delle distribuzioni e delle risorse personalizzate associati alla distribuzione del modello.

    kubectl get pods,svc,deployment,JumpStartModel,sagemakerendpointregistration -n $CLUSTER_NAMESPACE