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 istruzioni seguenti contengono celle di codice e comandi progettati per essere eseguiti in un terminale. Assicurati di aver configurato il tuo ambiente con le AWS credenziali prima di eseguire questi comandi.

Prerequisiti

Prima di iniziare, verifica di aver:

Installazione e configurazione

  1. Scegli la tua Regione.

    export REGION=<region>
  2. Visualizza tutti i modelli e HyperPod i 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 di ottenere le autorizzazioni per questo ruolo o utente. Puoi eseguire !aws sts get-caller-identity --query "Arn" per verificare quale ruolo o utente stai utilizzando nel 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. Rivolgiti all’amministratore del cluster per sapere quale namespace utilizzare. L’amministratore dovrebbe aver creato un account di servizio hyperpod-inference 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 del modello deepseek-llm-r1-distill-qwen-1-5b da JumpStart. Crea un file yaml di implementazione simile, basato sul modello selezionato nella fase precedente.

    Nota

    Se il cluster utilizza il partizionamento GPU con MIG, è possibile richiedere profili MIG specifici aggiungendo il campo alle specifiche del acceleratorPartitionType server. Per ulteriori informazioni, consulta Invio di attività con MIG.

    cat << EOF > jumpstart_model.yaml --- apiVersion: inference.sagemaker.aws.amazon.com/v1 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 # Optional: Specify GPU partition profile for MIG-enabled instances # acceleratorPartitionType: "1g.10gb" 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

Aggiornamento della configurazione Kubernetes e implementazione del 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
Monitoraggio dello stato di implementazione del modello
  1. Verifica che il modello sia stato implementato 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. Puoi recuperare in modo programmatico i 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

Gestione dell’implementazione

Elimina la distribuzione JumpStart del modello una volta che non è più necessaria.

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

Utilizza questi comandi di debug se l’implementazione non funziona come previsto.

  1. Controlla lo stato dell’implementazione Kubernetes. Questo comando ispeziona l’oggetto di implementazione 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 JumpStart modello. Questo comando esamina la risorsa JumpStartModel personalizzata che gestisce la configurazione generale del modello e il ciclo di vita dell’implementazione. Usalo per risolvere problemi specifici del modello come errori di configurazione o problemi di creazione di endpoint SageMaker AI.

    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 correlate a Kubernetes nel tuo namespace. Usalo per un rapido controllo dell’integrità per conoscere lo stato generale dei pod, dei servizi, delle implementazioni e delle risorse personalizzate associati all’implementazione del modello.

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