Mettre automatiquement à l'échelle un point de terminaison asynchrone - Amazon SageMaker

Mettre automatiquement à l'échelle un point de terminaison asynchrone

Amazon SageMaker prend en charge la scalabilité automatique de votre point de terminaison asynchrone. La mise à l'échelle automatique ajuste dynamiquement le nombre d'instances allouées pour un modèle en réponse aux modifications de la charge de travail. Contrairement aux autres modèles hébergés pris en charge par Amazon SageMaker, avec l'inférence asynchrone, vous pouvez également réduire vos instances de points de terminaison asynchrones à zéro. Les requêtes reçues lorsqu'il n'y a aucune instance sont mises en file d'attente pour traitement une fois que le point de terminaison augmente.

Pour mettre à l'échelle automatiquement votre point de terminaison asynchrone, vous devez au minimum :

  • Enregistrer un modèle déployé (variante de production).

  • Définir une politique de mise à l'échelle.

  • Appliquer la politique de scalabilité automatique.

Avant de pouvoir utiliser la scalabilité automatique, vous devez avoir créé un déploiement de modèle SageMaker. Les modèles déployés sont appelés variante de production. Veuillez consulter Déployer le modèle sur les services d'hébergement SageMaker pour en savoir plus sur le déploiement d'un point de terminaison de modèle. Pour spécifier les métriques et les valeurs cibles d'une stratégie de dimensionnement, vous configurez une stratégie de dimensionnement avec suivi de cible. Pour savoir comment définir une politique de mise à l'échelle, veuillez consulter Définition d'une stratégie de mise à l'échelle. Après avoir enregistré votre modèle et défini une stratégie de mise à l'échelle, appliquez cette stratégie au modèle enregistré. Pour savoir comment appliquer la politique de mise à l'échelle, veuillez consulter Application d'une stratégie de mise à l'échelle.

Pour plus d'informations sur les autres prérequis et les composants utilisés avec la scalabilité automatique, veuillez consulter la section sur les prérequis de la documentation sur la scalabilité automatique de SageMaker.

Définir une politique de mise à l'échelle

Pour spécifier les métriques et les valeurs cibles d'une stratégie de dimensionnement, vous configurez une stratégie de dimensionnement avec suivi de cible. Définissez la politique de mise à l'échelle sous forme de bloc JSON dans un fichier texte. Utilisez ce fichier texte pour appeler la AWS CLI ou l'API Application Auto Scaling. Pour plus d'informations sur la syntaxe de la configuration d'une politique, veuillez consulter TargetTrackingScalingPolicyConfiguration dans la Référence de l'API Application Auto Scaling.

Pour les terminaux asynchrones, SageMaker recommande fortement de créer une configuration de politique pour la mise à l'échelle du suivi de cible d'une variante. Dans cet exemple de configuration, nous utilisons une métrique personnalisée, CustomizedMetricSpecification, appelée ApproximateBacklogSizePerInstance.

TargetTrackingScalingPolicyConfiguration={ 'TargetValue': 5.0, # The target value for the metric. Here the metric is: SageMakerVariantInvocationsPerInstance 'CustomizedMetricSpecification': { 'MetricName': 'ApproximateBacklogSizePerInstance', 'Namespace': 'AWS/SageMaker', 'Dimensions': [ {'Name': 'EndpointName', 'Value': <endpoint_name> } ], 'Statistic': 'Average', } }

Définir une politique de mise à l'échelle qui met à l'échelle jusqu'à 0

La section suivante vous montre comment définir et enregistrer votre variante de point de terminaison avec la scalabilité automatique des applications à l'aide du kit AWS SDK for Python (Boto3). Après avoir défini un objet client de bas niveau représentant la scalabilité automatique des applications avec Boto3, nous utilisons la méthode RegisterScalableTarget pour enregistrer la variante de production. Nous défini MinCapacity sur 0 car l'inférence asynchrone vous permet d'effectuer une mise à l'échelle automatique à 0 lorsqu'il n'y a aucune requête à traiter.

# Common class representing application autoscaling for SageMaker client = boto3.client('application-autoscaling') # This is the format in which application autoscaling references the endpoint resource_id='endpoint/' + <endpoint_name> + '/variant/' + <'variant1'> # Define and register your endpoint variant response = client.register_scalable_target( ServiceNamespace='sagemaker', ResourceId=resource_id, ScalableDimension='sagemaker:variant:DesiredInstanceCount', # The number of EC2 instances for your Amazon SageMaker model endpoint variant. MinCapacity=0, MaxCapacity=5 )

Pour obtenir une description détaillée de l'API Application Autoscaling, veuillez consulter la documentation sur Application Scaling de Boto3.