Déploiement de modèles depuis JumpStart à l’aide de kubectl - Amazon SageMaker AI

Déploiement de modèles depuis JumpStart à l’aide de kubectl

Les étapes suivantes vous montrent comment déployer un modèle JumpStart sur un cluster HyperPod à l’aide de kubectl.

Les instructions suivantes contiennent des cellules de code et des commandes conçues pour être exécutées dans un terminal. Assurez-vous d’avoir configuré votre environnement avec des informations d’identification AWS avant d’exécuter ces commandes.

Prérequis

Avant de commencer, vérifiez les points suivants :

Installation et configuration

  1. Sélectionnez votre région.

    export REGION=<region>
  2. Découvrez tous les modèles de hub public et de clusters HyperPod de SageMaker.

  3. Sélectionnez un JumpstartModel dans le hub JumpstartPublic. Le hub JumpstartPublic propose un grand nombre de modèles pour que vous puissiez utiliser NextToken pour répertorier de manière itérative tous les modèles disponibles dans le hub public.

    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. Configurez l’ID du modèle et le nom du cluster que vous avez sélectionnés dans les variables ci-dessous.

    Note

    Vérifiez auprès de l’administrateur de votre cluster que les autorisations sont accordées pour ce rôle ou cet utilisateur. Vous pouvez exécuter !aws sts get-caller-identity --query "Arn" pour vérifier le rôle ou l’utilisateur que vous utilisez sur votre terminal.

    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. Vérifiez auprès de l’administrateur du cluster quel espace de noms vous êtes autorisé à utiliser. L’administrateur doit avoir créé un compte de service hyperpod-inference dans votre espace de noms.

    export CLUSTER_NAMESPACE="default"
  6. Définissez un nom pour le point de terminaison et l’objet personnalisé à créer.

    export SAGEMAKER_ENDPOINT_NAME="deepsek-qwen-1-5b-test"
  7. Voici un exemple de déploiement de modèle deepseek-llm-r1-distill-qwen-1-5b à partir de Jumpstart. Créez un fichier yaml de déploiement similaire basé sur le modèle sélectionné à l’étape ci-dessus.

    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

Déployer votre modèle

Mise à jour de votre configuration Kubernetes et déploiement de votre modèle
  1. Configurez kubectl pour vous connecter au cluster HyperPod orchestré par 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. Déployez votre modèle JumpStart.

    kubectl apply -f jumpstart_model.yaml
Surveillance du statut du déploiement de votre modèle
  1. Vérifiez que le modèle a été déployé avec succès.

    kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  2. Vérifiez que le point de terminaison est correctement créé.

    aws sagemaker describe-endpoint --endpoint-name=$SAGEMAKER_ENDPOINT_NAME --output table
  3. Invoquez le point de terminaison de votre modèle. Vous pouvez extraire par programmation des exemples de données utiles à partir de l’objet 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

Gestion de votre déploiement

Supprimez le déploiement de votre modèle JumpStart une fois que vous n’en avez plus besoin.

kubectl delete JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
Résolution des problèmes

Utilisez ces commandes de débogage si votre déploiement ne fonctionne pas comme prévu.

  1. Vérifiez le statut du déploiement Kubernetes. Cette commande inspecte l’objet de déploiement Kubernetes sous-jacent qui gère les pods exécutant votre modèle. Utilisez-le pour résoudre les problèmes de planification des pods, d’allocation des ressources et de démarrage des conteneurs.

    kubectl describe deployment $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  2. Vérifiez le statut de votre ressource de modèle JumpStart. Cette commande examine la ressource JumpStartModel personnalisée qui gère la configuration de haut niveau du modèle et le cycle de vie de déploiement. Utilisez-la pour résoudre les problèmes spécifiques aux modèles, tels que les erreurs de configuration ou les problèmes de création de points de terminaison SageMaker AI.

    kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  3. Vérifiez le statut de tous les objets Kubernetes. Cette commande fournit une vue d’ensemble complète de toutes les ressources Kubernetes associées dans votre espace de noms. Utilisez-la pour une surveillance rapide de l’état général des pods, des services, des déploiements et des ressources personnalisées associés au déploiement de votre modèle.

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