Definieren einer Skalierungsrichtlinie - Amazon SageMaker KI

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Definieren einer Skalierungsrichtlinie

Bevor Sie eine Skalierungsrichtlinie zu Ihrem Modell hinzufügen, speichern Sie Ihre Richtlinienkonfiguration als JSON-Block in einer Textdatei. Sie verwenden diese Textdatei, wenn Sie die AWS Command Line Interface (AWS CLI) oder die Application Auto Scaling Scaling-API aufrufen. Sie können die Skalierung optimieren, indem Sie eine geeignete CloudWatch Metrik auswählen. Bevor Sie jedoch eine benutzerdefinierte Metrik in einer Produktionsumgebung verwenden, müssen Sie Auto Scaling mit Ihrer benutzerdefinierten Metrik testen.

In diesem Abschnitt finden Sie beispielhafte Richtlinienkonfigurationen für Skalierungsrichtlinien zur Zielverfolgung.

Geben Sie eine vordefinierte Metrik an (CloudWatch Metrik: InvocationsPerInstance)

Nachfolgend finden Sie ein Beispiel für eine Richtlinienkonfiguration zur Zielverfolgung für eine Variante, welche die durchschnittlichen Aufrufe pro Instance bei 70 hält. Speichern Sie diese Konfiguration in einer Datei mit dem Namen config.json.

{ "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance" } }

Weitere Informationen finden Sie TargetTrackingScalingPolicyConfigurationin der API-Referenz für Application Auto Scaling.

Geben Sie eine vordefinierte Metrik mit hoher Auflösung an (CloudWatch Metriken: ConcurrentRequestsPerModel und ConcurrentRequestsPerCopy)

Mit den folgenden hochauflösenden CloudWatch Metriken können Sie Skalierungsrichtlinien für das Volumen der gleichzeitigen Anfragen festlegen, die Ihre Modelle erhalten:

ConcurrentRequestsPerModel

Legt die Anzahl der gleichzeitigen Anforderungen fest, die von einem Modellcontainer empfangen werden.

ConcurrentRequestsPerCopy

Legt die Anzahl der gleichzeitigen Anforderungen fest, die von einer Inferenzkomponente empfangen werden.

Diese Metriken verfolgen die Anzahl der gleichzeitigen Anforderungen, die Ihre Modellcontainer verarbeiten, einschließlich der Anforderungen, die sich in den Containern in der Warteschlange befinden. Bei Modellen, die ihre Inferenzantwort als Token-Stream senden, verfolgen diese Metriken jede Anforderung, bis das Modell das letzte Token für die Anforderung sendet.

Als hochauflösende Metriken geben sie Daten häufiger aus als Standardmetriken. CloudWatch Standardmetriken, wie die InvocationsPerInstance-Metrik, geben einmal pro Minute Daten aus. Diese hochauflösenden Metriken geben hingegen alle 10 Sekunden Daten aus. Bei einer Zunahme des gleichzeitigen Datenverkehrs zu Ihren Modellen reagiert Ihre Richtlinie mit einer deutlich schnelleren Aufskalierung als es bei Standardmetriken der Fall wäre. Wenn der Datenverkehr zu Ihren Modellen jedoch abnimmt, erfolgt die Abskalierung durch die Richtlinie genauso schnell wie bei Standardmetriken.

Im Folgenden finden Sie ein Beispiel für eine Richtlinienkonfiguration zur Zielverfolgung, die Instances hinzufügt, wenn die Anzahl gleichzeitiger Anforderungen pro Modell auf über 5 steigt. Speichern Sie diese Konfiguration in einer Datei mit dem Namen config.json.

{ "TargetValue": 5.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantConcurrentRequestsPerModelHighResolution" } }

Wenn Sie Inferenzkomponenten verwenden, um mehrere Modelle auf demselben Endpunkt bereitzustellen, können Sie eine entsprechende Richtlinie erstellen. Stellen Sie in diesem Fall PredefinedMetricType auf SageMakerInferenceComponentConcurrentRequestsPerCopyHighResolution ein.

Weitere Informationen finden Sie TargetTrackingScalingPolicyConfigurationin der API-Referenz für Application Auto Scaling.

Definieren Sie eine benutzerdefinierte Metrik (CloudWatchMetrik: CPUUtilization)

Um eine Skalierungsrichtlinie zur Zielverfolgung mit einer benutzerdefinierten Metrik zu erstellen, geben Sie den Namen, den Namespace, die Einheit, die Statistik und null oder mehr Dimensionen für die Metrik an. Dimensionen bestehen aus einem Dimensionsnamen und einem Dimensionswert. Sie können eine beliebige Variantenmetrik verwenden, die sich proportional zur Kapazität ändert.

Die folgende Beispielkonfiguration zeigt eine Skalierungsrichtlinie für die Zielnachverfolgung mit einer benutzerdefinierten Metrik. Die Richtlinie skaliert die Variante basierend auf einer durchschnittlichen CPU-Auslastung von 50 % über alle Instances hinweg. Speichern Sie diese Konfiguration in einer Datei mit dem Namen 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" } }

Weitere Informationen finden Sie CustomizedMetricSpecificationin der API-Referenz für Application Auto Scaling.

Definieren Sie eine benutzerdefinierte Metrik (CloudWatch Metrik: ExplanationsPerInstance)

Wenn für den Endpunkt die Online-Erklärbarkeit aktiviert ist, wird eine ExplanationsPerInstance-Metrik ausgegeben, die die durchschnittliche Anzahl erklärter Datensätze pro Minute und Instance für eine Variante ausgibt. Die Ressourcennutzung bei der Erklärung von Datensätzen kann sich stärker von der der Vorhersage von Datensätzen unterscheiden. Wir empfehlen dringend, diese Metrik für die Skalierung der Zielnachverfolgung von Endpunkten zu verwenden, wenn die Online-Erklärbarkeit aktiviert ist.

Sie können mehrere Zielverfolgungsrichtlinien für ein skalierbares Ziel erstellen. Erwägen Sie, die InvocationsPerInstance-Richtlinie aus dem Abschnitt Geben Sie eine vordefinierte Metrik an (CloudWatch Metrik: InvocationsPerInstance) hinzuzufügen (zusätzlich zur ExplanationsPerInstance-Richtlinie). Wenn die meisten Aufrufe aufgrund des im EnableExplanations-Parameter festgelegten Schwellenwerts keine Erklärung zurückgeben, kann der Endpunkt die Richtlinie InvocationsPerInstance auswählen. Wenn eine große Anzahl von Erklärungen vorliegt, kann der Endpunkt die Richtlinie ExplanationsPerInstance verwenden.

Die folgende Beispielkonfiguration zeigt eine Skalierungsrichtlinie für die Zielnachverfolgung mit einer benutzerdefinierten Metrik. Die Richtlinienskala dient zur Einstellung der Anzahl der Varianten-Instances, damit für jede Instance ExplanationsPerInstance-Metrik auf 20 festgelegt ist. Speichern Sie diese Konfiguration in einer Datei mit dem Namen config.json.

{ "TargetValue": 20.0, "CustomizedMetricSpecification": { "MetricName": "ExplanationsPerInstance", "Namespace": "AWS/SageMaker", "Dimensions": [ {"Name": "EndpointName", "Value": "my-endpoint" }, {"Name": "VariantName","Value": "my-variant"} ], "Statistic": "Sum" } }

Weitere Informationen finden Sie CustomizedMetricSpecificationin der API-Referenz für Application Auto Scaling.

Angabe von Ruhephasen

In Ihrer Skalierungsrichtlinie für die Zielverfolgung können Sie optional Ruhephasen definieren, indem Sie die Parameter ScaleOutCooldown und ScaleInCooldown festlegen.

Nachfolgend finden Sie ein Beispiel für eine Richtlinienkonfiguration zur Zielverfolgung für eine Variante, welche die durchschnittlichen Aufrufe pro Instance bei 70 hält. Die Richtlinienkonfiguration sieht eine Ruhephase von 10 Minuten (600 Sekunden) zum Abskalieren und eine Ruhephase von 5 Minuten (300 Sekunden) zum Aufskalieren vor. Speichern Sie diese Konfiguration in einer Datei mit dem Namen config.json.

{ "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance" }, "ScaleInCooldown": 600, "ScaleOutCooldown": 300 }

Weitere Informationen finden Sie TargetTrackingScalingPolicyConfigurationin der API-Referenz für Application Auto Scaling.