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.
Automatisches Skalieren eines asynchronen Endpunkts
Amazon SageMaker unterstützt die automatische Skalierung (Auto Scaling) Ihres asynchronen Endpunkts. Autoscaling passt die Anzahl der Instances, die für ein Modell als Reaktion auf Änderungen Ihres Workloads bereitgestellt wurden, dynamisch an. Im Gegensatz zu anderen von Amazon SageMaker unterstützten gehosteten Modellen können Sie mit Asynchronous Inference auch Ihre Instances für asynchrone Endpunkte auf Null herunterskalieren. Anfragen, die eingehen, wenn keine Instances vorhanden sind, werden zur Verarbeitung in die Warteschlange gestellt, sobald der Endpunkt hochskaliert wird.
Um Ihren asynchronen Endpunkt automatisch zu skalieren, müssen Sie mindestens:
Registrieren Sie ein bereitgestelltes Modell (Produktionsvariante).
Definieren einer Skalierungsrichtlinie.
Wenden Sie die Autoscaling-Richtlinie an.
Bevor Sie Auto Scaling verwenden können, müssen Sie bereits ein Modell auf einem SageMaker Endpunkt bereitgestellt haben. Bereitgestellte Modelle werden als Produktionsvariante bezeichnet. Weitere Informationen zum Bereitstellen eines Modells auf einem Endpunkt finden Sie unter Bereitstellen des Modells auf SageMaker Hosting-Services. Um die Metriken und Zielwerte für eine Skalierungsrichtlinie festzulegen, konfigurieren Sie eine Skalierungsrichtlinie. Informationen zur Definition einer Skalierungsrichtlinie finden Sie unter Definieren einer Skalierungsrichtlinie. Registrieren Sie Ihr Modell und legen Sie eine Skalierungsrichtlinie fest, um die Skalierungsrichtlinie auf das registrierte Modell anzuwenden. Informationen zur Anwendung der Skalierungsrichtlinie finden Sie unter Anwenden einer Skalierungsrichtlinie.
Weitere Informationen zur Definition einer optionalen zusätzlichen Skalierungsrichtlinie, die Ihren Endpunkt hochskaliert, sobald Sie eine Anfrage erhalten, nachdem Ihr Endpunkt auf Null herunterskaliert wurde, finden Sie unterOptional: Definieren Sie eine -Skalierungsrichtline, die für neue Anfragen von Null skaliert. Wenn Sie diese optionale Richtlinie nicht angeben, leitet Ihr Endpunkt die Skalierung von Null aus erst ein, wenn die Anzahl der Backlog-Anfragen den Zielwert für die Nachverfolgung überschreitet.
Einzelheiten zu anderen Voraussetzungen und Komponenten, die mit Auto Scaling verwendet werden, finden Sie im Abschnitt Voraussetzungen in der SageMaker Auto Scaling-Dokumentation.
Anmerkung
Wenn Sie derselben Autoscaling-Gruppe mehrere Skalierungsrichtlinien zuordnen, kann es zu Skalierungskonflikten kommen. Wenn ein Konflikt auftritt, wählt Amazon EC2 Auto Scaling die Richtlinie aus, die die größte Kapazität sowohl für Scale-out als auch Scale-in bereitstellt. Weitere Informationen zu diesem Verhalten finden Sie unter Multiple Dynamic Scaling Policies in der Amazon EC2 Auto Scaling-Dokumentation.
Definieren einer Skalierungsrichtlinie
Um die Kennzahlen und Zielwerte für eine Skalierungsrichtlinie festzulegen, konfigurieren Sie eine Skalierungsrichtlinie für die Ziel-Nachverfolgung. Definieren Sie die -Skalierungsrichtline als JSON-Block in einer Textdatei. Sie verwenden diese Textdatei, wenn Sie die AWS CLI oder die Application Auto Scaling API aufrufen. Weitere Informationen zur Syntax der Richtlinienkonfiguration finden Sie unter TargetTrackingScalingPolicyConfiguration
in der Application Auto Scaling API Reference.
Für asynchrone Endpunkte empfiehlt SageMaker dringend, eine Richtlinienkonfiguration für die Skalierung der Zielverfolgung für eine Variante zu erstellen. In diesem Konfigurationsbeispiel verwenden wir eine benutzerdefinierte Metrik, CustomizedMetricSpecification
, genannt ApproximateBacklogSizePerInstance
.
TargetTrackingScalingPolicyConfiguration={ 'TargetValue': 5.0, # The target value for the metric. Here the metric is: ApproximateBacklogSizePerInstance 'CustomizedMetricSpecification': { 'MetricName': 'ApproximateBacklogSizePerInstance', 'Namespace': 'AWS/SageMaker', 'Dimensions': [ {'Name': 'EndpointName', 'Value':
<endpoint_name>
} ], 'Statistic': 'Average', } }
Definieren Sie eine Skalierungsrichtlinie, die auf Null skaliert
Im Folgenden wird gezeigt, wie Sie Ihre Endpunktvariante mit der automatischen Anwendungsskalierung unter Verwendung von AWS SDK for Python (Boto3) definieren und registrieren können. Nach der Definition eines Low-Level-Client-Objekts, das die automatische Skalierung der Anwendung mit Boto3 darstellt, verwenden wir die RegisterScalableTarget
MinCapacity
auf 0, weil Asynchrone Inferenz es Ihnen ermöglicht, automatisch auf 0 zu skalieren, wenn keine Anfragen zur Verarbeitung vorliegen.
# 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 )
Eine ausführliche Beschreibung der Application Autoscaling API finden Sie in der Application Scaling Boto3
Optional: Definieren Sie eine -Skalierungsrichtline, die für neue Anfragen von Null skaliert
Möglicherweise haben Sie einen Anwendungsfall, in dem Sie sporadische Anfragen oder Zeiträume mit einer geringen Anzahl von Anfragen haben. Wenn Ihr Endpunkt in diesen Zeiträumen auf null Instanzen herunterskaliert wurde, wird Ihr Endpunkt erst wieder hochskaliert, wenn die Anzahl der Anfragen in der Warteschlange das in Ihrer Skalierungsrichtlinie angegebene Ziel überschreitet. Dies kann zu langen Wartezeiten für Anfragen in der Warteschlange führen. Im folgenden Abschnitt erfahren Sie, wie Sie eine zusätzliche Skalierungsrichtlinie erstellen, die Ihren Endpunkt nach Erhalt einer neuen Anfrage in der Warteschlange von Null auf Instances hochskaliert. Ihr Endpunkt wird in der Lage sein, schneller auf neue Anfragen zu antworten, anstatt darauf zu warten, dass die Warteschlangengröße das Ziel überschreitet.
Gehen Sie wie folgt vor, um eine Skalierungsrichtlinie für Ihren Endpunkt zu erstellen, die von null Instances aus hochskaliert werden kann:
-
Erstellen Sie eine Skalierungsrichtlinie, die das gewünschte Verhalten definiert, d. h. Ihren Endpunkt hochskalieren, wenn er keine Instanzen mehr hat, aber Anfragen in der Warteschlange hat. Im Folgenden wird gezeigt, wie Sie eine Skalierungsrichtlinie namens
HasBacklogWithoutCapacity-ScalingPolicy
mit Hilfe von AWS SDK for Python (Boto3) definieren. Wenn die Warteschlange größer als Null ist und die aktuelle Anzahl der Instanzen für Ihren Endpunkt ebenfalls Null ist, skaliert die Richtlinie Ihren Endpunkt nach oben. In allen anderen Fällen wirkt sich die Richtlinie nicht auf die Skalierung für Ihren Endpunkt aus.response = client.put_scaling_policy( PolicyName="HasBacklogWithoutCapacity-ScalingPolicy", ServiceNamespace="sagemaker", # The namespace of the service that provides the resource. ResourceId=resource_id, # Endpoint name ScalableDimension="sagemaker:variant:DesiredInstanceCount", # SageMaker supports only Instance Count PolicyType="StepScaling", # 'StepScaling' or 'TargetTrackingScaling' StepScalingPolicyConfiguration={ "AdjustmentType": "ChangeInCapacity", # Specifies whether the ScalingAdjustment value in the StepAdjustment property is an absolute number or a percentage of the current capacity. "MetricAggregationType": "Average", # The aggregation type for the CloudWatch metrics. "Cooldown": 300, # The amount of time, in seconds, to wait for a previous scaling activity to take effect. "StepAdjustments": # A set of adjustments that enable you to scale based on the size of the alarm breach. [ { "MetricIntervalLowerBound": 0, "ScalingAdjustment": 1 } ] }, )
-
Erstellen Sie einen CloudWatch Alarm mit der benutzerdefinierten Metrik
HasBacklogWithoutCapacity
. Wenn der Alarm ausgelöst wird, initiiert er die zuvor definierte Skalierungsrichtlinie. Für weitere Informationen über dieHasBacklogWithoutCapacity
-Metrik siehe Asynchrone Inferenz-Endpunkt-Metriken.response = cw_client.put_metric_alarm( AlarmName=step_scaling_policy_alarm_name, MetricName='HasBacklogWithoutCapacity', Namespace='AWS/SageMaker', Statistic='Average', EvaluationPeriods= 2, DatapointsToAlarm= 2, Threshold= 1, ComparisonOperator='GreaterThanOrEqualToThreshold', TreatMissingData='missing', Dimensions=[ { 'Name':'EndpointName', 'Value':endpoint_name }, ], Period= 60, AlarmActions=[step_scaling_policy_arn] )
Sie sollten jetzt über eine Skalierungsrichtlinie und einen CloudWatch Alarm verfügen, die Ihren Endpunkt von null Instances aus skalieren, wenn Ihre Warteschlange ausstehende Anfragen hat.