Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Déployez des modèles personnalisés et affinés depuis Amazon S3 et Amazon à FSx l'aide de kubectl
Les étapes suivantes vous montrent comment déployer des modèles stockés sur Amazon S3 ou Amazon sur un SageMaker HyperPod cluster Amazon FSx à 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 AWS informations d'identification avant d'exécuter ces commandes.
Conditions préalables
Avant de commencer, vérifiez les points suivants :
-
Configurez des fonctionnalités d'inférence sur vos SageMaker HyperPod clusters Amazon. Pour de plus amples informations, veuillez consulter Configuration de vos HyperPod clusters pour le déploiement de modèles.
-
Vous avez installé l’utilitaire kubectl
et configuré jq dans votre terminal.
Installation et configuration
Remplacez toutes les valeurs d’espace réservé par vos identifiants de ressources réels.
-
Sélectionnez votre région dans votre environnement.
export REGION=<region> -
Initialisez le nom de votre cluster. Cela permet d'identifier le HyperPod cluster dans lequel votre modèle sera déployé.
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.# Specify your hyperpod cluster name here HYPERPOD_CLUSTER_NAME="<Hyperpod_cluster_name>" # NOTE: For sample deployment, we use g5.8xlarge for deepseek-r1 1.5b model which has sufficient memory and GPU instance_type="ml.g5.8xlarge" -
Initialisez l’espace de noms de votre cluster. L’administrateur de votre cluster doit déjà avoir créé un compte de service d’inférence Hyperpod dans votre espace de noms.
cluster_namespace="<namespace>" -
Créez un CRD en utilisant l’une des options suivantes :
Configurer la mise en cache KV et le routage intelligent pour améliorer les performances
-
Activez la mise en cache KV en définissant
enableL1Cacheet enenableL2Cachesélectionnanttrue.Ensuite, définissezrediset mettezl2CacheSpecà jourl2CacheLocalUrlavec l'URL du cluster Redis.kvCacheSpec: enableL1Cache: true enableL2Cache: true l2CacheSpec: l2CacheBackend: <redis | tieredstorage> l2CacheLocalUrl: <redis cluster URL if l2CacheBackend is redis >Note
Si le cluster Redis ne fait pas partie du même Amazon VPC que HyperPod le cluster, le chiffrement des données en transit n'est pas garanti.
Note
Vous n'avez pas besoin de l2 CacheLocalUrl si le stockage hiérarchisé est sélectionné.
-
Activez le routage intelligent en
enabledréglant surtruemoinsintelligentRoutingSpec. Vous pouvez spécifier la stratégie de routage à utiliser dans le cadre de cette sectionroutingStrategy. Si aucune stratégie de routage n'est spécifiée, la valeur par défaut est.prefixawareintelligentRoutingSpec: enabled: true routingStrategy: <routing strategy to use> -
Activez les métriques du routeur et les métriques de mise en cache en les réglant
enabledsurtruemoinsmetrics. Laportvaleur doit être identique à lacontainerPortvaleur inférieuremodelInvocationPort.metrics: enabled: true modelMetrics: port: <port value> ... modelInvocationPort: containerPort: <port value>
Déployez votre modèle depuis Amazon S3 ou Amazon FSx
-
Obtenez le nom du cluster Amazon EKS à partir de l'ARN du HyperPod cluster pour l'authentification kubectl.
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 InferenceEndpointConfig modèle avec l'une des options suivantes :
Vérification du statut de votre déploiement
-
Vérifiez si le modèle a été correctement déployé.
kubectl describe InferenceEndpointConfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE -
Vérifiez que le point de terminaison est correctement créé.
kubectl describe SageMakerEndpointRegistration $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE -
Testez le point de terminaison déployé pour vérifier qu’il fonctionne correctement. Cette étape confirme que votre modèle est correctement déployé et qu’il peut traiter les demandes d’inférence.
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
Lorsque vous n’avez plus besoin de tester votre déploiement, utilisez les commandes suivantes pour nettoyer vos ressources.
Note
Vérifiez que vous n’avez plus besoin du modèle déployé ou des données stockées avant de continuer.
Nettoyage de vos ressources
-
Supprimez le déploiement d’inférence et les ressources Kubernetes associées. Cela arrête les conteneurs de modèles en cours d'exécution et supprime le SageMaker point de terminaison.
kubectl delete inferenceendpointconfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE -
Vérifiez que le nettoyage a été effectué avec succès.
# # Check that Kubernetes resources are removed kubectl get pods,svc,deployment,InferenceEndpointConfig,sagemakerendpointregistration -n $CLUSTER_NAMESPACE# Verify SageMaker endpoint is deleted (should return error or empty) aws sagemaker describe-endpoint --endpoint-name $SAGEMAKER_ENDPOINT_NAME --region $REGION
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 de Kubernetes.
kubectl describe deployment $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE -
Vérifiez le InferenceEndpointConfig statut pour connaître l'état de déploiement de haut niveau et les éventuels problèmes de configuration.
kubectl describe InferenceEndpointConfig $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE -
Vérifiez le statut de tous les objets Kubernetes. Bénéficiez d’une vue complète de toutes les ressources Kubernetes associées dans votre espace de noms. Cela vous donne un aperçu rapide de ce qui est en cours d’exécution et de ce qui pourrait manquer.
kubectl get pods,svc,deployment,InferenceEndpointConfig,sagemakerendpointregistration -n $CLUSTER_NAMESPACE