Mise à l’échelle d’un point de terminaison à zéro instance - Amazon SageMaker AI

Mise à l’échelle d’un point de terminaison à zéro instance

Lorsque vous configurez l’autoscaling pour un point de terminaison, vous pouvez autoriser le processus de réduction horizontale à réduire le nombre d’instances en service à zéro. Ce faisant, vous réduisez les coûts pendant les périodes où votre point de terminaison ne traite pas les demandes d’inférence et ne nécessite donc aucune instance active.

Cependant, après la réduction horizontale à zéro instance, votre point de terminaison ne peut répondre à aucune demande d’inférence entrante tant qu’il n’a pas provisionné au moins une instance. Pour automatiser le processus de provisionnement, vous créez une stratégie de mise à l’échelle par étapes avec Application Auto Scaling. Vous attribuez ensuite la stratégie à une alarme Amazon CloudWatch.

Une fois que vous avez configuré la stratégie de mise à l’échelle par étapes et l’alarme, votre point de terminaison provisionne automatiquement une instance peu après avoir reçu une demande d’inférence à laquelle il ne peut pas répondre. Sachez que le processus de provisionnement prend généralement plusieurs minutes. Pendant ce temps, toute tentative d’invoquer le point de terminaison produira une erreur.

Les procédures suivantes expliquent comment configurer l’autoscaling pour un point de terminaison afin qu’il puisse réduire horizontalement vers et augmenter horizontalement à partir de zéro instance. Les procédures utilisent des commandes avec l’AWS CLI.

Avant de commencer

Avant que votre point de terminaison puisse réduire horizontalement vers et augmenter horizontalement à partir de zéro instance, il doit répondre aux exigences suivantes :

  • Il est en service.

  • Il héberge un ou plusieurs composants d’inférence. Un point de terminaison peut être mis à l’échelle vers ou à partir de zéro instance uniquement s’il héberge des composants d’inférence.

    Pour plus d’informations sur l’hébergement de composants d’inférence sur les points de terminaison SageMaker AI, consultez Déploiement de modèles pour l’inférence en temps réel.

  • Dans la configuration du point de terminaison, pour l’objet ManagedInstanceScaling de variante de production, vous avez défini le paramètre MinInstanceCount sur 0.

    Pour obtenir des informations de référence sur ce paramètre, consultez ProductionVariantManagedInstanceScaling.

Pour permettre à un point de terminaison de réduire horizontalement vers zéro instance (AWS CLI)

Pour chaque composant d’inférence hébergé par le point de terminaison, procédez comme suit :

  1. Inscription du composant d’inférence en tant que cible évolutive. Lorsque vous l’enregistrez, définissez la capacité minimale sur 0, comme indiqué dans la commande suivante :

    aws application-autoscaling register-scalable-target \ --service-namespace sagemaker \ --resource-id inference-component/inference-component-name \ --scalable-dimension sagemaker:inference-component:DesiredCopyCount \ --min-capacity 0 \ --max-capacity n

    Dans cet exemple, remplacez inference-component-name par le nom de votre composant d’inférence. Remplacez n par le nombre maximum de copies de composants d’inférence à provisionner lors de l’augmentation horizontale.

    Pour plus d’informations sur cette commande et chacun de ses paramètres, consultez register-scalable-target dans la Référence des commandes AWS CLI.

  2. Appliquez une stratégie du suivi des cibles au composant d’inférence, comme illustré par la commande suivante :

    aws application-autoscaling put-scaling-policy \ --policy-name my-scaling-policy \ --policy-type TargetTrackingScaling \ --resource-id inference-component/inference-component-name \ --service-namespace sagemaker \ --scalable-dimension sagemaker:inference-component:DesiredCopyCount \ --target-tracking-scaling-policy-configuration file://config.json

    Dans cet exemple, remplacez inference-component-name par le nom de votre composant d’inférence.

    Dans l’exemple, le fichier config.json contient une configuration de stratégie du suivi des cibles, telle que la suivante :

    { "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerInferenceComponentInvocationsPerCopy" }, "TargetValue": 1, "ScaleInCooldown": 300, "ScaleOutCooldown": 300 }

    Pour plus d’exemples de configurations de stratégie de suivi, consultez Définition d’une stratégie de mise à l’échelle.

    Pour plus d’informations sur cette commande et chacun de ses paramètres, consultez put-scaling-policy dans la Référence des commandes AWS CLI.

Pour permettre à un point de terminaison d’augmenter horizontalement à partir de zéro instance (AWS CLI)

Pour chaque composant d’inférence hébergé par le point de terminaison, procédez comme suit :

  1. Appliquez une stratégie de mise à l’échelle par étapes au composant d’inférence, comme illustré par la commande suivante :

    aws application-autoscaling put-scaling-policy \ --policy-name my-scaling-policy \ --policy-type StepScaling \ --resource-id inference-component/inference-component-name \ --service-namespace sagemaker \ --scalable-dimension sagemaker:inference-component:DesiredCopyCount \ --step-scaling-policy-configuration file://config.json

    Dans cet exemple, remplacez my-scaling-policy par un nom unique pour votre stratégie. Remplacez inference-component-name par le nom de votre composant d’inférence.

    Dans l’exemple, le fichier config.json contient une configuration de stratégie de mise à l’échelle par étapes, telle que la suivante :

    { "AdjustmentType": "ChangeInCapacity", "MetricAggregationType": "Maximum", "Cooldown": 60, "StepAdjustments": [ { "MetricIntervalLowerBound": 0, "ScalingAdjustment": 1 } ] }

    Lorsque la stratégie de mise à l’échelle par étapes est déclenchée, SageMaker AI fournit les instances nécessaires pour prendre en charge les copies des composants d’inférence.

    Après avoir créé la stratégie de mise à l’échelle par étapes, notez son Amazon Resource Name (ARN). Vous avez besoin de l’ARN de l’alarme CloudWatch à la prochaine étape.

    Pour plus d’informations sur les stratégies de mise à l’échelle par étapes, consultez Stratégies de mise à l’échelle par étapes dans le Guide de l’utilisateur Application Auto Scaling.

  2. Créez une alarme CloudWatch et attribuez-lui la stratégie de mise à l’échelle par étapes, comme illustré dans l’exemple suivant :

    aws cloudwatch put-metric-alarm \ --alarm-actions step-scaling-policy-arn \ --alarm-description "Alarm when SM IC endpoint invoked that has 0 instances." \ --alarm-name ic-step-scaling-alarm \ --comparison-operator GreaterThanThreshold \ --datapoints-to-alarm 1 \ --dimensions "Name=InferenceComponentName,Value=inference-component-name" \ --evaluation-periods 1 \ --metric-name NoCapacityInvocationFailures \ --namespace AWS/SageMaker \ --period 60 \ --statistic Sum \ --threshold 1

    Dans cet exemple, remplacez step-scaling-policy-arn par l’ARN de votre stratégie de mise à l’échelle par étapes. Remplacez ic-step-scaling-alarm par le nom de votre choix. Remplacez inference-component-name par le nom de votre composant d’inférence.

    Cet exemple définit le paramètre --metric-name sur NoCapacityInvocationFailures. SageMaker AI émet cette métrique lorsqu’un point de terminaison reçoit une demande d’inférence, mais que le point de terminaison ne dispose d’aucune instance active pour répondre à cette demande. Lorsque cet événement se produit, l’alarme déclenche la stratégie de mise à l’échelle par étapes de l’étape précédente.

    Pour plus d’informations sur cette commande et chacun de ses paramètres, consultez put-metric-alarm dans la Référence des commandes AWS CLI.