Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Escalado automático de un punto de conexión asíncrono
Amazon SageMaker AI admite el escalado automático de su punto de conexión asíncrono. El escalado automático ajusta dinámicamente el número de instancias aprovisionadas para un modelo en respuesta a los cambios en su carga de trabajo. A diferencia de otros modelos alojados compatibles con Amazon SageMaker AI, con la inferencia asíncrona también puede reducir verticalmente sus instancias de puntos de conexión asíncronos a cero. Las solicitudes que se reciben cuando no hay ninguna instancia se ponen en cola para su procesamiento cuando el punto de conexión escale verticalmente.
Para escalar automáticamente su punto de conexión asíncrono, debe hacer, como mínimo, lo siguiente:
Registrar un modelo implementado (variante de producción).
Definir una política de escalado.
Aplicar la política de escalado automático.
Para poder utilizar el escalado automático, debe haber implementado ya un modelo en un punto de conexión de SageMaker AI. Los modelos implementados se denominan variante de producción. Consulte Implemente el modelo para SageMaker Servicios de alojamiento para obtener más información sobre la implementación de un modelo en un punto de conexión. Para especificar las métricas y los valores de destino para una política de escalado, debe configurar una política de escalado. Para obtener información sobre cómo definir una política de escalado, consulte Define a scaling policy. Una vez registrado su modelo y definido una política de escalado, aplique la política de escalado al modelo registrado. Para obtener información sobre cómo aplicar una política de escalado, consulte Apply a scaling policy.
Para obtener más información sobre cómo definir una política de escalado adicional opcional que amplíe su punto de conexión al recibir una solicitud después de que este se haya reducido verticalmente hasta cero, consulte Definir una política de escalado que escale verticalmente desde cero para las nuevas solicitudes (opcional). Si no especifica esta política opcional, el punto de conexión solo iniciará el escalado vertical desde cero cuando el número de solicitudes pendientes supere el valor de seguimiento objetivo.
Para obtener más información sobre otros requisitos previos y componentes que se utilizan con el escalado automático, consulte la sección Prerequisites en la documentación de escalado automático de SageMaker AI.
nota
Si asocia varias políticas de escalado al mismo grupo de escalado automático, es posible que surjan conflictos de escalado. Cuando hay un conflicto, Amazon EC2 Auto Scaling elige la política que proporciona la mayor capacidad, tanto para el escalado como para la reducción horizontal. Para obtener más información sobre este comportamiento, consulte Multiple dynamic scaling policies en la documentación de Amazon EC2 Auto Scaling.
Definir una política de escalado
Para especificar las métricas y los valores de destino para una política de escalado, debe configurar una política de escalado de seguimiento de destino. Defina la política de escalado como un bloque JSON en un archivo de texto. Puede utilizarr ese archivo de texto al invocar AWS CLI o la API de Application Auto Scaling. Para obtener más información acerca de la sintaxis de configuración de la política, consulte TargetTrackingScalingPolicyConfiguration en la referencia de la API de Auto Scaling de aplicaciones.
Para los puntos de conexión asíncronos, SageMaker AI recomienda encarecidamente que cree una configuración de política para el escalado del seguimiento del destino para una variante. En este ejemplo de configuración, utilizamos una métrica personalizada (CustomizedMetricSpecification) llamada 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', } }
Definir una política de escalado que escale a cero
A continuación, se muestra cómo definir y registrar una variante de punto de conexión con el escalado automático de la aplicación mediante AWS SDK para Python (Boto3). Tras definir un objeto cliente de bajo nivel que represente el escalado automático de la aplicación con Boto3, utilizamos el método RegisterScalableTargetMinCapacity en 0 porque la inferencia asíncrona permite escalar automáticamente a 0 cuando no hay solicitudes por procesar.
# 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 )
Para obtener una descripción detallada de la API de escalado automático de aplicaciones, consulte la documentación Application Scaling Boto3
Definir una política de escalado que escale verticalmente desde cero para las nuevas solicitudes (opcional)
Quizá haya algún caso de uso en el que tenga solicitudes esporádicas o períodos con un número reducido de solicitudes. Si el punto de conexión se ha reducido verticalmente a cero instancias durante estos períodos, no volverá a escalar hasta que el número de solicitudes en la cola supere el objetivo especificado en la política de escalado. Esto puede provocar largos tiempos de espera para las solicitudes en cola. En la siguiente sección, se muestra cómo crear una política de escalado adicional que aumente su punto de conexión desde cero instancias después de recibir cualquier nueva solicitud en la cola. El punto de conexión podrá responder a las nuevas solicitudes con mayor rapidez, en lugar de esperar a que el tamaño de la cola supere el objetivo.
Para crear una política de escalado para su punto de conexión que escale verticalmente desde cero instancias, haga lo siguiente:
-
Cree una política de escalado que defina el comportamiento deseado; es decir, que escale verticalmente el punto de conexión con cero instancias, pero que haya solicitudes en la cola. A continuación, se muestra cómo definir una política de escalado denominada
HasBacklogWithoutCapacity-ScalingPolicyusando AWS SDK para Python (Boto3). Cuando la cola es superior a cero y el número de instancias actual del punto de conexión también es cero, la política escala verticalmente el punto de conexión. En el resto de los casos, la política no afecta al escalado del punto de conexión.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 } ] }, ) -
Cree una alarma de CloudWatch con la métrica personalizada
HasBacklogWithoutCapacity. Cuando se activa, la alarma inicia la política de escalado previamente definida. Para obtener más información acerca de la métricaHasBacklogWithoutCapacity, consulte Métricas de puntos de conexión de inferencia asíncrona.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] )
Ahora, debería tener una política de escalado y una alarma de CloudWatch que escale verticalmente el punto de conexión desde cero instancias cuando haya solicitudes pendientes en la cola.