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 :
-
Configurez les fonctionnalités d’inférence sur vos clusters Amazon SageMaker HyperPod. Pour plus d’informations, consultez Configuration de vos clusters HyperPod pour le déploiement de modèles.
-
Vous avez installé l’utilitaire kubectl
et configuré jq dans votre terminal.
Installation et configuration
-
Sélectionnez votre région.
export REGION=<region> -
Découvrez tous les modèles de hub public et de clusters HyperPod de SageMaker.
-
Sélectionnez un
JumpstartModeldans le hub JumpstartPublic. Le hub JumpstartPublic propose un grand nombre de modèles pour que vous puissiez utiliserNextTokenpour 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 jsonexport MODEL_ID="deepseek-llm-r1-distill-qwen-1-5b" export MODEL_VERSION="2.0.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" -
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-inferencedans votre espace de noms.export CLUSTER_NAMESPACE="default" -
Définissez un nom pour le point de terminaison et l’objet personnalisé à créer.
export SAGEMAKER_ENDPOINT_NAME="deepsek-qwen-1-5b-test" -
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
-
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 -
Déployez votre modèle JumpStart.
kubectl apply -f jumpstart_model.yaml
Surveillance du statut du déploiement de votre modèle
-
Vérifiez que le modèle a été déployé avec succès.
kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE -
Vérifiez que le point de terminaison est correctement créé.
aws sagemaker describe-endpoint --endpoint-name=$SAGEMAKER_ENDPOINT_NAME --output table -
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.
-
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 -
Vérifiez le statut de votre ressource de modèle JumpStart. Cette commande examine la ressource
JumpStartModelpersonnalisé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 -
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