Définition d’une stratégie de mise à l’échelle
Avant d’ajouter une stratégie de mise à l’échelle à votre modèle, enregistrez votre configuration de stratégie sous forme de bloc JSON dans un fichier texte. Utilisez ce fichier texte pour invoquer l’AWS Command Line Interface (AWS CLI) ou l’API Application Auto Scaling. Vous pouvez optimiser la mise à l’échelle en choisissant une métrique CloudWatch appropriée. Toutefois, avant d’utiliser une métrique personnalisée en production, vous devez tester l’autoscaling avec votre métrique personnalisée.
Rubriques
Cette section présente des exemples de configurations de stratégie pour les stratégies de mise à l’échelle du suivi des cibles.
Spécifiez une métrique prédéfinie (métrique CloudWatch : InvocationsPerInstance)
Voici un exemple de configuration de stratégie de suivi des cibles pour une variante qui conserve la moyenne des invocations par instance à 70. Enregistrez cette configuration dans un fichier nommé config.json.
{ "TargetValue":70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance" } }
Pour plus d’informations, consultez TargetTrackingScalingPolicyConfiguration dans la Référence des API Application Auto Scaling.
Spécifiez une métrique prédéfinie haute résolution (métriques CloudWatch : ConcurrentRequestsPerModel et ConcurrentRequestsPerCopy)
Avec les métriques CloudWatch haute résolution suivantes, vous pouvez définir des politiques de mise à l’échelle en fonction du volume de demandes simultanées que reçoivent vos modèles :
- ConcurrentRequestsPerModel
-
Nombre de demandes simultanées reçues par un conteneur de modèle.
- ConcurrentRequestsPerCopy
-
Nombre de demandes simultanées reçues par un composant d’inférence.
Ces métriques permettent de suivre le nombre de demandes simultanées traitées par vos conteneurs de modèles, y compris les demandes placées en file d’attente à l’intérieur des conteneurs. Pour les modèles qui envoient leur réponse d’inférence sous forme de flux de jetons, ces métriques suivent chaque demande jusqu’à ce que le modèle envoie le dernier jeton correspondant à la demande.
En tant que métriques haute résolution, elles émettent des données plus fréquemment que les métriques CloudWatch standard. Les métriques standard, telles que la métrique InvocationsPerInstance, émettent des données une fois par minute. Cependant, ces mesures à haute résolution émettent des données toutes les 10 secondes. Par conséquent, à mesure que le trafic simultané vers vos modèles augmente, votre stratégie réagit en augmentant horizontalement beaucoup plus rapidement qu’elle ne le ferait pour les métriques standard. Toutefois, à mesure que le trafic vers vos modèles diminue, votre stratégie réduit horizontalement à la même vitesse que pour les métriques standard.
Voici un exemple de configuration de stratégie de suivi des cibles qui ajoute des instances si le nombre de demandes simultanées par modèle est supérieur à 5. Enregistrez cette configuration dans un fichier nommé config.json.
{ "TargetValue": 5.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantConcurrentRequestsPerModelHighResolution" } }
Si vous utilisez des composants d’inférence pour déployer plusieurs modèles sur le même point de terminaison, vous pouvez créer une stratégie équivalente. Dans ce cas, définissez PredefinedMetricType sur SageMakerInferenceComponentConcurrentRequestsPerCopyHighResolution.
Pour plus d’informations, consultez TargetTrackingScalingPolicyConfiguration dans la Référence des API Application Auto Scaling.
Définition d’une métrique personnalisée (métrique CloudWatch : CPUUtilization)
Pour créer une stratégie de mise à l’échelle du suivi des cibles avec une métrique personnalisée, spécifiez son nom, son espace de noms, son unité, sa statistique et zéro ou plusieurs dimensions. Une dimension se compose d’un nom de dimension et d’une valeur de dimension. Vous pouvez utiliser n’importe quelle métrique de variante de production qui évolue proportionnellement à la capacité.
L’exemple de configuration suivant illustre une stratégie de mise à l’échelle du suivi des cibles avec une métrique personnalisée. La stratégie met à l’échelle la variante en fonction d’une utilisation moyenne de l’UC de 50 % sur toutes les instances. Enregistrez cette configuration dans un fichier nommé config.json.
{ "TargetValue":50.0, "CustomizedMetricSpecification": { "MetricName": "CPUUtilization", "Namespace": "/aws/sagemaker/Endpoints", "Dimensions":[ {"Name": "EndpointName", "Value": "my-endpoint" }, {"Name": "VariantName","Value": "my-variant"} ], "Statistic": "Average", "Unit": "Percent" } }
Pour plus d’informations, consultez CustomizedMetricSpecification dans la Référence des API Application Auto Scaling.
Définition d’une métrique personnalisée (métrique CloudWatch : ExplanationsPerInstance)
Lorsque l’explicabilité en ligne est activée sur un point de terminaison, une métrique ExplanationsPerInstance est émise et affiche le nombre moyen d’enregistrements expliqués par minute, par instance, pour une variante. L’utilisation des ressources des enregistrements d’explicabilité peut être différente de celle des enregistrements de prédiction. Nous vous recommandons vivement d’utiliser cette métrique pour la mise à l’échelle du suivi des cibles des points de terminaison avec l’explicabilité en ligne activée.
Vous pouvez créer plusieurs stratégies de suivi des cibles pour une cible évolutive. Envisagez d’ajouter la stratégie InvocationsPerInstance à partir de la section Spécifiez une métrique prédéfinie (métrique CloudWatch : InvocationsPerInstance) (en plus de la stratégie ExplanationsPerInstance). Si la plupart des invocations ne renvoient pas d’explication en raison de la valeur de seuil définie dans le paramètre EnableExplanations, le point de terminaison peut choisir la stratégie InvocationsPerInstance. S’il existe un grand nombre d’explications, le point de terminaison peut utiliser la politique ExplanationsPerInstance.
L’exemple de configuration suivant illustre une stratégie de mise à l’échelle du suivi des cibles avec une métrique personnalisée. La mise à l’échelle de la stratégie ajuste le nombre d’instances de variantes afin que chaque instance possède une métrique ExplanationsPerInstance de 20. Enregistrez cette configuration dans un fichier nommé config.json.
{ "TargetValue":20.0, "CustomizedMetricSpecification": { "MetricName": "ExplanationsPerInstance", "Namespace": "AWS/SageMaker", "Dimensions":[ {"Name": "EndpointName", "Value": "my-endpoint" }, {"Name": "VariantName","Value": "my-variant"} ],"Statistic": "Sum" } }
Pour plus d’informations, consultez CustomizedMetricSpecification dans la Référence des API Application Auto Scaling.
Spécification des temps de stabilisation
Vous pouvez éventuellement définir des temps de stabilisation dans votre stratégie de mise à l’échelle du suivi des cibles en spécifiant les paramètres ScaleOutCooldown et ScaleInCooldown.
Voici un exemple de configuration de stratégie de suivi des cibles pour une variante qui conserve la moyenne des invocations par instance à 70. La configuration de la stratégie indique un temps de stabilisation de réduction horizontale de 10 minutes (600 secondes) et un temps de stabilisation d’augmentation horizontale de 5 minutes (300 secondes). Enregistrez cette configuration dans un fichier nommé config.json.
{ "TargetValue":70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance" }, "ScaleInCooldown":600, "ScaleOutCooldown":300}
Pour plus d’informations, consultez TargetTrackingScalingPolicyConfiguration dans la Référence des API Application Auto Scaling.